You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by pb...@apache.org on 2012/10/11 16:31:46 UTC
svn commit: r1397081 - in /subversion/branches/auto-props-sdc: ./
subversion/include/ subversion/libsvn_client/ subversion/libsvn_fs_fs/
subversion/libsvn_ra_serf/ subversion/libsvn_subr/ subversion/libsvn_wc/
subversion/svn/ subversion/tests/cmdline/ ...
Author: pburba
Date: Thu Oct 11 14:31:45 2012
New Revision: 1397081
URL: http://svn.apache.org/viewvc?rev=1397081&view=rev
Log:
On the auto-props-sdc branch: Sync with ^/subversion/trunk through r1397076.
Added:
subversion/branches/auto-props-sdc/tools/hook-scripts/persist-ephemeral-txnprops.py
- copied unchanged from r1397076, subversion/trunk/tools/hook-scripts/persist-ephemeral-txnprops.py
Modified:
subversion/branches/auto-props-sdc/ (props changed)
subversion/branches/auto-props-sdc/subversion/include/svn_props.h
subversion/branches/auto-props-sdc/subversion/libsvn_client/cleanup.c
subversion/branches/auto-props-sdc/subversion/libsvn_client/merge.c
subversion/branches/auto-props-sdc/subversion/libsvn_fs_fs/tree.c
subversion/branches/auto-props-sdc/subversion/libsvn_ra_serf/ra_serf.h
subversion/branches/auto-props-sdc/subversion/libsvn_ra_serf/serf.c
subversion/branches/auto-props-sdc/subversion/libsvn_ra_serf/util.c
subversion/branches/auto-props-sdc/subversion/libsvn_subr/gpg_agent.c
subversion/branches/auto-props-sdc/subversion/libsvn_subr/path.c
subversion/branches/auto-props-sdc/subversion/libsvn_subr/sysinfo.c
subversion/branches/auto-props-sdc/subversion/libsvn_subr/win32_crypto.c
subversion/branches/auto-props-sdc/subversion/libsvn_wc/conflicts.c
subversion/branches/auto-props-sdc/subversion/libsvn_wc/copy.c
subversion/branches/auto-props-sdc/subversion/libsvn_wc/entries.c
subversion/branches/auto-props-sdc/subversion/libsvn_wc/info.c
subversion/branches/auto-props-sdc/subversion/libsvn_wc/tree_conflicts.c
subversion/branches/auto-props-sdc/subversion/libsvn_wc/upgrade.c
subversion/branches/auto-props-sdc/subversion/libsvn_wc/wc-metadata.sql
subversion/branches/auto-props-sdc/subversion/libsvn_wc/wc-queries.sql
subversion/branches/auto-props-sdc/subversion/libsvn_wc/wc.h
subversion/branches/auto-props-sdc/subversion/svn/file-merge.c
subversion/branches/auto-props-sdc/subversion/svn/propedit-cmd.c
subversion/branches/auto-props-sdc/subversion/tests/cmdline/svnlook_tests.py
subversion/branches/auto-props-sdc/subversion/tests/libsvn_wc/wc-queries-test.c
Propchange: subversion/branches/auto-props-sdc/
------------------------------------------------------------------------------
Merged /subversion/trunk:r1396139-1397076
Modified: subversion/branches/auto-props-sdc/subversion/include/svn_props.h
URL: http://svn.apache.org/viewvc/subversion/branches/auto-props-sdc/subversion/include/svn_props.h?rev=1397081&r1=1397080&r2=1397081&view=diff
==============================================================================
--- subversion/branches/auto-props-sdc/subversion/include/svn_props.h (original)
+++ subversion/branches/auto-props-sdc/subversion/include/svn_props.h Thu Oct 11 14:31:45 2012
@@ -573,7 +573,7 @@ svn_prop_name_is_valid(const char *prop_
*/
/** The prefix used for all (ephemeral) transaction properties. */
-#define SVN_PROP_TXN_PREFIX SVN_PROP_PREFIX "txn:"
+#define SVN_PROP_TXN_PREFIX SVN_PROP_PREFIX "txn-"
/** Identifies the client version compability level. For clients
* compiled against Subversion libraries, this is @c SVN_VER_NUMBER.
Modified: subversion/branches/auto-props-sdc/subversion/libsvn_client/cleanup.c
URL: http://svn.apache.org/viewvc/subversion/branches/auto-props-sdc/subversion/libsvn_client/cleanup.c?rev=1397081&r1=1397080&r2=1397081&view=diff
==============================================================================
--- subversion/branches/auto-props-sdc/subversion/libsvn_client/cleanup.c (original)
+++ subversion/branches/auto-props-sdc/subversion/libsvn_client/cleanup.c Thu Oct 11 14:31:45 2012
@@ -144,8 +144,9 @@ svn_client_upgrade(const char *path,
upgrade to avoid that errors in the externals causes the wc upgrade to
fail. Thanks to caching the performance penalty of walking the wc a
second time shouldn't be too severe */
- SVN_ERR(svn_client_propget4(&externals, SVN_PROP_EXTERNALS, local_abspath,
- &rev, &rev, NULL, svn_depth_infinity, NULL, ctx,
+ SVN_ERR(svn_client_propget5(&externals, NULL, SVN_PROP_EXTERNALS,
+ local_abspath, &rev, &rev, NULL,
+ svn_depth_infinity, NULL, ctx,
scratch_pool, scratch_pool));
iterpool = svn_pool_create(scratch_pool);
Modified: subversion/branches/auto-props-sdc/subversion/libsvn_client/merge.c
URL: http://svn.apache.org/viewvc/subversion/branches/auto-props-sdc/subversion/libsvn_client/merge.c?rev=1397081&r1=1397080&r2=1397081&view=diff
==============================================================================
--- subversion/branches/auto-props-sdc/subversion/libsvn_client/merge.c (original)
+++ subversion/branches/auto-props-sdc/subversion/libsvn_client/merge.c Thu Oct 11 14:31:45 2012
@@ -1883,7 +1883,7 @@ merge_file_added(svn_wc_notify_state_t *
svn_revnum_t copyfrom_rev;
svn_stream_t *new_contents, *new_base_contents;
apr_hash_t *new_base_props, *new_props;
- const svn_wc_conflict_description2_t *existing_conflict;
+ svn_boolean_t existing_tree_conflict;
svn_error_t *err;
/* If this is a merge from the same repository as our
@@ -1920,10 +1920,9 @@ merge_file_added(svn_wc_notify_state_t *
scratch_pool, scratch_pool));
}
- err = svn_wc__get_tree_conflict(&existing_conflict,
- merge_b->ctx->wc_ctx,
- mine_abspath, merge_b->pool,
- merge_b->pool);
+ err = svn_wc_conflicted_p3(NULL, NULL, &existing_tree_conflict,
+ merge_b->ctx->wc_ctx, mine_abspath,
+ merge_b->pool);
if (err)
{
@@ -1931,10 +1930,10 @@ merge_file_added(svn_wc_notify_state_t *
return svn_error_trace(err);
svn_error_clear(err);
- existing_conflict = FALSE;
+ existing_tree_conflict = FALSE;
}
- if (existing_conflict)
+ if (existing_tree_conflict)
{
svn_boolean_t moved_here;
svn_wc_conflict_reason_t reason;
@@ -5733,10 +5732,10 @@ get_wc_explicit_mergeinfo_catalog(apr_ha
apr_pool_t *iterpool = svn_pool_create(scratch_pool);
apr_hash_index_t *hi;
- SVN_ERR(svn_client_propget4(subtrees_with_mergeinfo, SVN_PROP_MERGEINFO,
- target_abspath, &working_revision,
- &working_revision, NULL, depth, NULL,
- ctx, result_pool, scratch_pool));
+ SVN_ERR(svn_client_propget5(subtrees_with_mergeinfo, NULL,
+ SVN_PROP_MERGEINFO, target_abspath,
+ &working_revision, &working_revision, NULL,
+ depth, NULL, ctx, result_pool, scratch_pool));
/* Convert property values to svn_mergeinfo_t. */
for (hi = apr_hash_first(scratch_pool, *subtrees_with_mergeinfo);
Modified: subversion/branches/auto-props-sdc/subversion/libsvn_fs_fs/tree.c
URL: http://svn.apache.org/viewvc/subversion/branches/auto-props-sdc/subversion/libsvn_fs_fs/tree.c?rev=1397081&r1=1397080&r2=1397081&view=diff
==============================================================================
--- subversion/branches/auto-props-sdc/subversion/libsvn_fs_fs/tree.c (original)
+++ subversion/branches/auto-props-sdc/subversion/libsvn_fs_fs/tree.c Thu Oct 11 14:31:45 2012
@@ -148,7 +148,7 @@ typedef struct cache_entry_t
{
/* hash value derived from PATH, REVISION.
Used to short-circuit failed lookups. */
- apr_uint32_t hash_value;
+ apr_uint64_t hash_value;
/* revision to which the NODE belongs */
svn_revnum_t revision;
@@ -337,7 +337,7 @@ cache_lookup( fs_fs_dag_cache_t *cache
{
apr_size_t i, bucket_index;
apr_size_t path_len = strlen(path);
- apr_uint32_t hash_value = revision;
+ apr_uint64_t hash_value = revision;
/* optimistic lookup: hit the same bucket again? */
cache_entry_t *result = &cache->buckets[cache->last_hit];
Modified: subversion/branches/auto-props-sdc/subversion/libsvn_ra_serf/ra_serf.h
URL: http://svn.apache.org/viewvc/subversion/branches/auto-props-sdc/subversion/libsvn_ra_serf/ra_serf.h?rev=1397081&r1=1397080&r2=1397081&view=diff
==============================================================================
--- subversion/branches/auto-props-sdc/subversion/libsvn_ra_serf/ra_serf.h (original)
+++ subversion/branches/auto-props-sdc/subversion/libsvn_ra_serf/ra_serf.h Thu Oct 11 14:31:45 2012
@@ -979,12 +979,15 @@ svn_ra_serf__add_xml_header_buckets(serf
serf_bucket_alloc_t *bkt_alloc);
/*
- * Add the appropriate serf buckets to AGG_BUCKET representing xml tag open
- * with name TAG.
+ * Add the appropriate serf buckets to AGG_BUCKET representing the XML
+ * open tag with name TAG.
*
* Take the tag's attributes from varargs, a NULL-terminated list of
- * alternating <tt>char *</tt> key and <tt>char *</tt> val. Do xml-escaping
- * on each val. Attribute will be ignored if it's value is NULL.
+ * alternating <tt>char *</tt> key and <tt>char *</tt> val. Attribute
+ * will be ignored if it's value is NULL.
+ *
+ * NOTE: Callers are responsible for XML-escaping attribute values as
+ * necessary.
*
* The bucket will be allocated from BKT_ALLOC.
*/
Modified: subversion/branches/auto-props-sdc/subversion/libsvn_ra_serf/serf.c
URL: http://svn.apache.org/viewvc/subversion/branches/auto-props-sdc/subversion/libsvn_ra_serf/serf.c?rev=1397081&r1=1397080&r2=1397081&view=diff
==============================================================================
--- subversion/branches/auto-props-sdc/subversion/libsvn_ra_serf/serf.c (original)
+++ subversion/branches/auto-props-sdc/subversion/libsvn_ra_serf/serf.c Thu Oct 11 14:31:45 2012
@@ -399,10 +399,9 @@ svn_ra_serf__open(svn_ra_session_t *sess
serf_sess->capabilities = apr_hash_make(serf_sess->pool);
- /* Assume HTTP/1.1 is supported. When the server responds HTTP/1.0, switch
- from chunked encoding to Content-Length, and set Connection:keep-alive
- header to try and keep the pipeline open. */
- serf_sess->http10 = FALSE;
+ /* We have to assume that the server only supports HTTP/1.0. Once it's clear
+ HTTP/1.1 is supported, we can upgrade. */
+ serf_sess->http10 = TRUE;
SVN_ERR(load_config(serf_sess, config, serf_sess->pool));
Modified: subversion/branches/auto-props-sdc/subversion/libsvn_ra_serf/util.c
URL: http://svn.apache.org/viewvc/subversion/branches/auto-props-sdc/subversion/libsvn_ra_serf/util.c?rev=1397081&r1=1397080&r2=1397081&view=diff
==============================================================================
--- subversion/branches/auto-props-sdc/subversion/libsvn_ra_serf/util.c (original)
+++ subversion/branches/auto-props-sdc/subversion/libsvn_ra_serf/util.c Thu Oct 11 14:31:45 2012
@@ -1801,9 +1801,9 @@ handle_response(serf_request_t *request,
handler->sline = sl;
handler->sline.reason = apr_pstrdup(handler->handler_pool, sl.reason);
- /* Fall back to HTTP/1.0 needed? */
- if (sl.version == SERF_HTTP_10)
- handler->session->http10 = TRUE;
+ /* HTTP/1.1? (or later) */
+ if (sl.version != SERF_HTTP_10)
+ handler->session->http10 = FALSE;
}
/* Keep reading from the network until we've read all the headers. */
@@ -1914,17 +1914,6 @@ handle_response(serf_request_t *request,
}
}
- /* These error codes might indicate that the server or proxy does not support
- HTTP/1.1 (completely), so fall back to HTTP/1.0. */
- if (handler->session->http10 == FALSE &&
- (handler->sline.code == 400 /* 400 Bad Request */
- || handler->sline.code == 411 /* 411 Length Required */
- || handler->sline.code == 501)) /* 501 Not Implemented */
- {
- handler->discard_body = TRUE;
- handler->session->http10 = TRUE;
- }
-
/* Stop processing the above, on every packet arrival. */
handler->reading_body = TRUE;
Modified: subversion/branches/auto-props-sdc/subversion/libsvn_subr/gpg_agent.c
URL: http://svn.apache.org/viewvc/subversion/branches/auto-props-sdc/subversion/libsvn_subr/gpg_agent.c?rev=1397081&r1=1397080&r2=1397081&view=diff
==============================================================================
--- subversion/branches/auto-props-sdc/subversion/libsvn_subr/gpg_agent.c (original)
+++ subversion/branches/auto-props-sdc/subversion/libsvn_subr/gpg_agent.c Thu Oct 11 14:31:45 2012
@@ -107,7 +107,7 @@ static svn_boolean_t
receive_from_gpg_agent(int sd, char *buf, size_t n)
{
int i = 0;
- int recvd;
+ size_t recvd;
char c;
/* Clear existing buffer content before reading response. */
@@ -326,7 +326,6 @@ password_get_gpg_agent(svn_boolean_t *do
display = getenv("DISPLAY");
if (display != NULL)
{
- request = apr_psprintf(pool, "OPTION display=%s\n", display);
if (!send_option(sd, buffer, BUFFER_SIZE, "display", display, pool))
{
close(sd);
Modified: subversion/branches/auto-props-sdc/subversion/libsvn_subr/path.c
URL: http://svn.apache.org/viewvc/subversion/branches/auto-props-sdc/subversion/libsvn_subr/path.c?rev=1397081&r1=1397080&r2=1397081&view=diff
==============================================================================
--- subversion/branches/auto-props-sdc/subversion/libsvn_subr/path.c (original)
+++ subversion/branches/auto-props-sdc/subversion/libsvn_subr/path.c Thu Oct 11 14:31:45 2012
@@ -1100,7 +1100,7 @@ svn_path_get_absolute(const char **pabso
}
-
+#if !defined(WIN32) && !defined(DARWIN)
/** Get APR's internal path encoding. */
static svn_error_t *
get_path_encoding(svn_boolean_t *path_is_utf8, apr_pool_t *pool)
@@ -1119,6 +1119,7 @@ get_path_encoding(svn_boolean_t *path_is
*path_is_utf8 = (encoding_style == APR_FILEPATH_ENCODING_UTF8);
return SVN_NO_ERROR;
}
+#endif
svn_error_t *
Modified: subversion/branches/auto-props-sdc/subversion/libsvn_subr/sysinfo.c
URL: http://svn.apache.org/viewvc/subversion/branches/auto-props-sdc/subversion/libsvn_subr/sysinfo.c?rev=1397081&r1=1397080&r2=1397081&view=diff
==============================================================================
--- subversion/branches/auto-props-sdc/subversion/libsvn_subr/sysinfo.c (original)
+++ subversion/branches/auto-props-sdc/subversion/libsvn_subr/sysinfo.c Thu Oct 11 14:31:45 2012
@@ -1049,9 +1049,9 @@ macos_shared_libs(apr_pool_t *pool)
static const char fwk_prefix[] = "/System/Library/Frameworks/";
static const char pfk_prefix[] = "/System/Library/PrivateFrameworks/";
- const int slb_prefix_len = strlen(slb_prefix);
- const int fwk_prefix_len = strlen(fwk_prefix);
- const int pfk_prefix_len = strlen(pfk_prefix);
+ const size_t slb_prefix_len = strlen(slb_prefix);
+ const size_t fwk_prefix_len = strlen(fwk_prefix);
+ const size_t pfk_prefix_len = strlen(pfk_prefix);
apr_array_header_t *result = NULL;
apr_array_header_t *dylibs = NULL;
Modified: subversion/branches/auto-props-sdc/subversion/libsvn_subr/win32_crypto.c
URL: http://svn.apache.org/viewvc/subversion/branches/auto-props-sdc/subversion/libsvn_subr/win32_crypto.c?rev=1397081&r1=1397080&r2=1397081&view=diff
==============================================================================
--- subversion/branches/auto-props-sdc/subversion/libsvn_subr/win32_crypto.c (original)
+++ subversion/branches/auto-props-sdc/subversion/libsvn_subr/win32_crypto.c Thu Oct 11 14:31:45 2012
@@ -145,7 +145,7 @@ windows_password_decrypter(svn_boolean_t
SVN_ERR(svn_auth__simple_password_get(done, &in, creds, realmstring, username,
parameters, non_interactive, pool));
- if (!done)
+ if (!*done)
return SVN_NO_ERROR;
orig = svn_base64_decode_string(svn_string_create(in, pool), pool);
@@ -270,7 +270,7 @@ windows_ssl_client_cert_pw_decrypter(svn
SVN_ERR(svn_auth__ssl_client_cert_pw_get(done, &in, creds, realmstring,
username, parameters,
non_interactive, pool));
- if (!done)
+ if (!*done)
return SVN_NO_ERROR;
orig = svn_base64_decode_string(svn_string_create(in, pool), pool);
Modified: subversion/branches/auto-props-sdc/subversion/libsvn_wc/conflicts.c
URL: http://svn.apache.org/viewvc/subversion/branches/auto-props-sdc/subversion/libsvn_wc/conflicts.c?rev=1397081&r1=1397080&r2=1397081&view=diff
==============================================================================
--- subversion/branches/auto-props-sdc/subversion/libsvn_wc/conflicts.c (original)
+++ subversion/branches/auto-props-sdc/subversion/libsvn_wc/conflicts.c Thu Oct 11 14:31:45 2012
@@ -1912,13 +1912,19 @@ svn_wc__conflict_invoke_resolver(svn_wc_
/* Read all property conflicts contained in CONFLICT_SKEL into
* individual conflict descriptions, and append those descriptions
- * to the CONFLICTS array. Allocate results in RESULT_POOL.
- * SCRATCH_POOL is used for temporary allocations. */
+ * to the CONFLICTS array.
+ *
+ * If NOT create_tempfiles, always create a legacy property conflict
+ * descriptor.
+ *
+ * Allocate results in RESULT_POOL. SCRATCH_POOL is used for temporary
+ * allocations. */
static svn_error_t *
read_prop_conflicts(apr_array_header_t *conflicts,
svn_wc__db_t *db,
const char *local_abspath,
svn_skel_t *conflict_skel,
+ svn_boolean_t create_tempfiles,
apr_pool_t *result_pool,
apr_pool_t *scratch_pool)
{
@@ -1939,7 +1945,7 @@ read_prop_conflicts(apr_array_header_t *
conflict_skel,
scratch_pool, scratch_pool));
- if (apr_hash_count(conflicted_props) == 0)
+ if ((! create_tempfiles) || apr_hash_count(conflicted_props) == 0)
{
/* Legacy prop conflict with only a .reject file. */
svn_wc_conflict_description2_t *desc;
@@ -2061,6 +2067,7 @@ svn_error_t *
svn_wc__read_conflicts(const apr_array_header_t **conflicts,
svn_wc__db_t *db,
const char *local_abspath,
+ svn_boolean_t create_tempfiles,
apr_pool_t *result_pool,
apr_pool_t *scratch_pool)
{
@@ -2093,6 +2100,7 @@ svn_wc__read_conflicts(const apr_array_h
if (prop_conflicted)
SVN_ERR(read_prop_conflicts(cflcts, db, local_abspath, conflict_skel,
+ create_tempfiles,
result_pool, scratch_pool));
if (text_conflicted)
@@ -2575,7 +2583,7 @@ conflict_status_walker(void *baton,
iterpool = svn_pool_create(scratch_pool);
- SVN_ERR(svn_wc__read_conflicts(&conflicts, db, local_abspath,
+ SVN_ERR(svn_wc__read_conflicts(&conflicts, db, local_abspath, TRUE,
scratch_pool, iterpool));
for (i = 0; i < conflicts->nelts; i++)
Modified: subversion/branches/auto-props-sdc/subversion/libsvn_wc/copy.c
URL: http://svn.apache.org/viewvc/subversion/branches/auto-props-sdc/subversion/libsvn_wc/copy.c?rev=1397081&r1=1397080&r2=1397081&view=diff
==============================================================================
--- subversion/branches/auto-props-sdc/subversion/libsvn_wc/copy.c (original)
+++ subversion/branches/auto-props-sdc/subversion/libsvn_wc/copy.c Thu Oct 11 14:31:45 2012
@@ -36,6 +36,7 @@
#include "wc.h"
#include "workqueue.h"
#include "props.h"
+#include "conflicts.h"
#include "svn_private_config.h"
#include "private/svn_wc_private.h"
@@ -206,7 +207,6 @@ copy_versioned_file(svn_wc__db_t *db,
if (!metadata_only)
{
const char *my_src_abspath = NULL;
- int i;
svn_boolean_t handle_as_unversioned = FALSE;
/* By default, take the copy source as given. */
@@ -214,26 +214,27 @@ copy_versioned_file(svn_wc__db_t *db,
if (conflicted)
{
- const apr_array_header_t *conflicts;
- const char *conflict_working = NULL;
+ svn_skel_t *conflict;
+ const char *conflict_working;
+ svn_error_t *err;
/* Is there a text conflict at the source path? */
- SVN_ERR(svn_wc__read_conflicts(&conflicts, db, src_abspath,
+ SVN_ERR(svn_wc__db_read_conflict(&conflict, db, src_abspath,
scratch_pool, scratch_pool));
- for (i = 0; i < conflicts->nelts; i++)
- {
- const svn_wc_conflict_description2_t *desc;
-
- desc = APR_ARRAY_IDX(conflicts, i,
- const svn_wc_conflict_description2_t*);
+ err = svn_wc__conflict_read_text_conflict(&conflict_working, NULL, NULL,
+ db, src_abspath, conflict,
+ scratch_pool,
+ scratch_pool);
- if (desc->kind == svn_wc_conflict_kind_text)
- {
- conflict_working = desc->my_abspath;
- break;
- }
+ if (err && err->apr_err == SVN_ERR_WC_MISSING)
+ {
+ /* not text conflicted */
+ svn_error_clear(err);
+ conflict_working = NULL;
}
+ else
+ SVN_ERR(err);
if (conflict_working)
{
@@ -816,75 +817,40 @@ remove_node_conflict_markers(svn_wc__db_
const char *node_abspath,
apr_pool_t *scratch_pool)
{
- const apr_array_header_t *conflicts;
+ svn_skel_t *conflict;
- SVN_ERR(svn_wc__read_conflicts(&conflicts, db, src_abspath,
+ SVN_ERR(svn_wc__db_read_conflict(&conflict, db, src_abspath,
scratch_pool, scratch_pool));
/* Do we have conflict markers that should be removed? */
- if (conflicts != NULL)
+ if (conflict != NULL)
{
+ const apr_array_header_t *markers;
int i;
const char *src_dir = svn_dirent_dirname(src_abspath, scratch_pool);
const char *dst_dir = svn_dirent_dirname(node_abspath, scratch_pool);
- /* No iterpool: Maximum number of possible conflict markers is 4 */
+ SVN_ERR(svn_wc__conflict_read_markers(&markers, db, src_abspath,
+ conflict,
+ scratch_pool, scratch_pool));
- for (i = 0; i < conflicts->nelts; i++)
+ /* No iterpool: Maximum number of possible conflict markers is 4 */
+ for (i = 0; markers && (i < markers->nelts); i++)
{
- const svn_wc_conflict_description2_t *desc;
+ const char *marker_abspath;
const char *child_relpath;
const char *child_abpath;
- desc = APR_ARRAY_IDX(conflicts, i,
- const svn_wc_conflict_description2_t*);
+ marker_abspath = APR_ARRAY_IDX(markers, i, const char *);
- if (desc->kind != svn_wc_conflict_kind_text
- && desc->kind != svn_wc_conflict_kind_property)
- continue;
+ child_relpath = svn_dirent_is_child(src_dir, marker_abspath, NULL);
- if (desc->base_abspath != NULL)
+ if (child_relpath)
{
- child_relpath = svn_dirent_is_child(src_dir, desc->base_abspath,
- NULL);
+ child_abpath = svn_dirent_join(dst_dir, child_relpath,
+ scratch_pool);
- if (child_relpath)
- {
- child_abpath = svn_dirent_join(dst_dir, child_relpath,
- scratch_pool);
-
- SVN_ERR(svn_io_remove_file2(child_abpath, TRUE,
- scratch_pool));
- }
- }
- if (desc->their_abspath != NULL)
- {
- child_relpath = svn_dirent_is_child(src_dir, desc->their_abspath,
- NULL);
-
- if (child_relpath)
- {
- child_abpath = svn_dirent_join(dst_dir, child_relpath,
- scratch_pool);
-
- SVN_ERR(svn_io_remove_file2(child_abpath, TRUE,
- scratch_pool));
- }
- }
- if (desc->my_abspath != NULL)
- {
- child_relpath = svn_dirent_is_child(src_dir, desc->my_abspath,
- NULL);
-
- if (child_relpath)
- {
- child_abpath = svn_dirent_join(dst_dir, child_relpath,
- scratch_pool);
-
- /* ### Copy child_abspath to node_abspath if it exists? */
- SVN_ERR(svn_io_remove_file2(child_abpath, TRUE,
- scratch_pool));
- }
+ SVN_ERR(svn_io_remove_file2(child_abpath, TRUE, scratch_pool));
}
}
}
Modified: subversion/branches/auto-props-sdc/subversion/libsvn_wc/entries.c
URL: http://svn.apache.org/viewvc/subversion/branches/auto-props-sdc/subversion/libsvn_wc/entries.c?rev=1397081&r1=1397080&r2=1397081&view=diff
==============================================================================
--- subversion/branches/auto-props-sdc/subversion/libsvn_wc/entries.c (original)
+++ subversion/branches/auto-props-sdc/subversion/libsvn_wc/entries.c Thu Oct 11 14:31:45 2012
@@ -455,6 +455,7 @@ read_one_entry(const svn_wc_entry_t **ne
SVN_ERR(svn_wc__read_conflicts(&child_conflicts,
db, child_abspath,
+ FALSE /* create tempfiles */,
scratch_pool, scratch_pool));
for (j = 0; j < child_conflicts->nelts; j++)
@@ -874,37 +875,53 @@ read_one_entry(const svn_wc_entry_t **ne
if (conflicted)
{
- const apr_array_header_t *conflicts;
- int j;
- SVN_ERR(svn_wc__read_conflicts(&conflicts, db, entry_abspath,
- scratch_pool, scratch_pool));
-
- for (j = 0; j < conflicts->nelts; j++)
- {
- const svn_wc_conflict_description2_t *cd;
- cd = APR_ARRAY_IDX(conflicts, j,
- const svn_wc_conflict_description2_t *);
+ svn_skel_t *conflict;
+ svn_boolean_t text_conflicted;
+ svn_boolean_t prop_conflicted;
+ SVN_ERR(svn_wc__db_read_conflict(&conflict, db, entry_abspath,
+ scratch_pool, scratch_pool));
- switch (cd->kind)
- {
- case svn_wc_conflict_kind_text:
- if (cd->base_abspath)
- entry->conflict_old = svn_dirent_basename(cd->base_abspath,
- result_pool);
- if (cd->their_abspath)
- entry->conflict_new = svn_dirent_basename(cd->their_abspath,
- result_pool);
- if (cd->my_abspath)
- entry->conflict_wrk = svn_dirent_basename(cd->my_abspath,
- result_pool);
- break;
- case svn_wc_conflict_kind_property:
- entry->prejfile = svn_dirent_basename(cd->their_abspath,
- result_pool);
- break;
- case svn_wc_conflict_kind_tree:
- break;
- }
+ SVN_ERR(svn_wc__conflict_read_info(NULL, NULL, &text_conflicted,
+ &prop_conflicted, NULL,
+ db, dir_abspath, conflict,
+ scratch_pool, scratch_pool));
+
+ if (text_conflicted)
+ {
+ const char *my_abspath;
+ const char *their_old_abspath;
+ const char *their_abspath;
+ SVN_ERR(svn_wc__conflict_read_text_conflict(&my_abspath,
+ &their_old_abspath,
+ &their_abspath,
+ db, dir_abspath,
+ conflict, scratch_pool,
+ scratch_pool));
+
+ if (my_abspath)
+ entry->conflict_wrk = svn_dirent_basename(my_abspath, result_pool);
+
+ if (their_old_abspath)
+ entry->conflict_old = svn_dirent_basename(their_old_abspath,
+ result_pool);
+
+ if (their_abspath)
+ entry->conflict_new = svn_dirent_basename(their_abspath,
+ result_pool);
+ }
+
+ if (prop_conflicted)
+ {
+ const char *prej_abspath;
+
+ SVN_ERR(svn_wc__conflict_read_prop_conflict(&prej_abspath, NULL,
+ NULL, NULL, NULL,
+ db, dir_abspath,
+ conflict, scratch_pool,
+ scratch_pool));
+
+ if (prej_abspath)
+ entry->prejfile = svn_dirent_basename(prej_abspath, result_pool);
}
}
Modified: subversion/branches/auto-props-sdc/subversion/libsvn_wc/info.c
URL: http://svn.apache.org/viewvc/subversion/branches/auto-props-sdc/subversion/libsvn_wc/info.c?rev=1397081&r1=1397080&r2=1397081&view=diff
==============================================================================
--- subversion/branches/auto-props-sdc/subversion/libsvn_wc/info.c (original)
+++ subversion/branches/auto-props-sdc/subversion/libsvn_wc/info.c Thu Oct 11 14:31:45 2012
@@ -281,6 +281,7 @@ build_info_for_node(svn_wc__info2_t **in
if (conflicted)
SVN_ERR(svn_wc__read_conflicts(&wc_info->conflicts, db,
local_abspath,
+ TRUE /* ### create tempfiles */,
result_pool, scratch_pool));
else
wc_info->conflicts = NULL;
@@ -475,25 +476,25 @@ svn_wc__get_info(svn_wc_context_t *wc_ct
&& fetch_actual_only
&& err && err->apr_err == SVN_ERR_WC_PATH_NOT_FOUND)
{
- const svn_wc_conflict_description2_t *root_tree_conflict;
+ svn_boolean_t tree_conflicted;
svn_error_t *err2;
- err2 = svn_wc__get_tree_conflict(&root_tree_conflict,
- wc_ctx, local_abspath,
- scratch_pool, iterpool);
+ err2 = svn_wc__internal_conflicted_p(NULL, NULL, &tree_conflicted,
+ wc_ctx->db, local_abspath,
+ iterpool);
if ((err2 && err2->apr_err == SVN_ERR_WC_PATH_NOT_FOUND))
{
svn_error_clear(err2);
return svn_error_trace(err);
}
- else if (err2 || !root_tree_conflict)
+ else if (err2 || !tree_conflicted)
return svn_error_compose_create(err, err2);
svn_error_clear(err);
apr_hash_set(fe_baton.tree_conflicts, local_abspath,
- APR_HASH_KEY_STRING, root_tree_conflict);
+ APR_HASH_KEY_STRING, "");
}
else
SVN_ERR(err);
@@ -526,6 +527,7 @@ svn_wc__get_info(svn_wc_context_t *wc_ct
SVN_ERR(svn_wc__read_conflicts(&info->wc_info->conflicts,
wc_ctx->db, this_abspath,
+ TRUE /* ### create tempfiles */,
iterpool, iterpool));
if (! info->wc_info->conflicts || ! info->wc_info->conflicts->nelts)
Modified: subversion/branches/auto-props-sdc/subversion/libsvn_wc/tree_conflicts.c
URL: http://svn.apache.org/viewvc/subversion/branches/auto-props-sdc/subversion/libsvn_wc/tree_conflicts.c?rev=1397081&r1=1397080&r2=1397081&view=diff
==============================================================================
--- subversion/branches/auto-props-sdc/subversion/libsvn_wc/tree_conflicts.c (original)
+++ subversion/branches/auto-props-sdc/subversion/libsvn_wc/tree_conflicts.c Thu Oct 11 14:31:45 2012
@@ -472,7 +472,7 @@ svn_wc__get_tree_conflict(const svn_wc_c
SVN_ERR_ASSERT(svn_dirent_is_absolute(local_abspath));
SVN_ERR(svn_wc__read_conflicts(&conflicts,
- wc_ctx->db, local_abspath,
+ wc_ctx->db, local_abspath, FALSE,
scratch_pool, scratch_pool));
if (!conflicts || conflicts->nelts == 0)
Modified: subversion/branches/auto-props-sdc/subversion/libsvn_wc/upgrade.c
URL: http://svn.apache.org/viewvc/subversion/branches/auto-props-sdc/subversion/libsvn_wc/upgrade.c?rev=1397081&r1=1397080&r2=1397081&view=diff
==============================================================================
--- subversion/branches/auto-props-sdc/subversion/libsvn_wc/upgrade.c (original)
+++ subversion/branches/auto-props-sdc/subversion/libsvn_wc/upgrade.c Thu Oct 11 14:31:45 2012
@@ -1577,7 +1577,7 @@ bump_to_31(void *baton,
switched subtrees in the WC. This allows subsequent updates
to recognize these roots as needing an iprops cache. */
SVN_ERR(svn_sqlite__get_statement(&stmt, sdb,
- STMT_SELECT_WCROOT_NODES));
+ STMT_UPGRADE_31_SELECT_WCROOT_NODES));
SVN_ERR(svn_sqlite__step(&have_row, stmt));
SVN_ERR(svn_sqlite__get_statement(&stmt_mark_switch_roots, sdb,
Modified: subversion/branches/auto-props-sdc/subversion/libsvn_wc/wc-metadata.sql
URL: http://svn.apache.org/viewvc/subversion/branches/auto-props-sdc/subversion/libsvn_wc/wc-metadata.sql?rev=1397081&r1=1397080&r2=1397081&view=diff
==============================================================================
--- subversion/branches/auto-props-sdc/subversion/libsvn_wc/wc-metadata.sql (original)
+++ subversion/branches/auto-props-sdc/subversion/libsvn_wc/wc-metadata.sql Thu Oct 11 14:31:45 2012
@@ -795,12 +795,6 @@ UPDATE nodes SET presence = "server-excl
working copies that were never updated by 1.7.0+ style clients */
UPDATE nodes SET file_external=1 WHERE file_external IS NOT NULL;
-/* Format 31 adds the inherited_props column to the NODES table. */
--- STMT_UPGRADE_TO_31
-ALTER TABLE NODES ADD COLUMN inherited_props BLOB;
-
-PRAGMA user_version = 31;
-
-- STMT_UPGRADE_30_SELECT_CONFLICT_SEPARATE
SELECT wc_id, local_relpath,
conflict_old, conflict_working, conflict_new, prop_reject, tree_conflict_data
@@ -820,6 +814,38 @@ WHERE wc_id = ?1 and local_relpath = ?2
/* ------------------------------------------------------------------------- */
+/* Format 31 adds the inherited_props column to the NODES table. C code then
+ initializes the update/switch roots to make sure future updates fetch the
+ inherited properties */
+-- STMT_UPGRADE_TO_31
+ALTER TABLE NODES ADD COLUMN inherited_props BLOB;
+
+PRAGMA user_version = 31;
+
+-- STMT_UPGRADE_31_SELECT_WCROOT_NODES
+/* Select all base nodes which are the root of a WC, including
+ switched subtrees, but excluding those which map to the root
+ of the repos.
+
+ ### IPROPS: Is this query horribly inefficient? Quite likely,
+ ### but it only runs during an upgrade, so do we care? */
+SELECT l.wc_id, l.local_relpath FROM nodes as l
+LEFT OUTER JOIN nodes as r
+ON l.wc_id = r.wc_id
+ AND l.repos_id = r.repos_id
+ AND r.local_relpath = l.parent_relpath
+WHERE (l.local_relpath = '' AND l.repos_path != '')
+ OR (l.op_depth = 0
+ AND l.local_relpath != ''
+ AND l.repos_path != ltrim(r.repos_path
+ || '/'
+ || ltrim(substr(l.local_relpath,
+ length(l.parent_relpath) + 1),
+ '/'),
+ '/'))
+
+/* ------------------------------------------------------------------------- */
+
/* Format YYY introduces new handling for conflict information. */
-- format: YYY
Modified: subversion/branches/auto-props-sdc/subversion/libsvn_wc/wc-queries.sql
URL: http://svn.apache.org/viewvc/subversion/branches/auto-props-sdc/subversion/libsvn_wc/wc-queries.sql?rev=1397081&r1=1397080&r2=1397081&view=diff
==============================================================================
--- subversion/branches/auto-props-sdc/subversion/libsvn_wc/wc-queries.sql (original)
+++ subversion/branches/auto-props-sdc/subversion/libsvn_wc/wc-queries.sql Thu Oct 11 14:31:45 2012
@@ -245,7 +245,7 @@ WHERE wc_id = ?1
SELECT local_relpath FROM nodes
WHERE wc_id = ?1 AND op_depth = ?3
AND IS_STRICT_DESCENDANT_OF(local_relpath, ?2)
- AND presence == 'not-present'
+ AND presence = 'not-present'
-- STMT_COMMIT_DESCENDANT_TO_BASE
UPDATE NODES SET op_depth = 0, repos_id = ?4, repos_path = ?5, revision = ?6,
@@ -1073,28 +1073,6 @@ WHERE wc_id = ?1 AND local_relpath = ?2
SELECT 1 FROM nodes WHERE op_depth > 0
LIMIT 1
--- STMT_SELECT_WCROOT_NODES
-/* Select all base nodes which are the root of a WC, including
- switched subtrees, but excluding those which map to the root
- of the repos.
-
- ### IPROPS: Is this query horribly inefficient? Quite likely,
- ### but it only runs during an upgrade, so do we care? */
-SELECT l.wc_id, l.local_relpath FROM nodes as l
-LEFT OUTER JOIN nodes as r
-ON l.wc_id = r.wc_id
- AND l.repos_id = r.repos_id
- AND r.local_relpath = l.parent_relpath
-WHERE (l.local_relpath == '' AND l.repos_path != '')
- OR (l.op_depth = 0
- AND l.local_relpath != ''
- AND l.repos_path != ltrim(r.repos_path
- || '/'
- || ltrim(substr(l.local_relpath,
- length(l.parent_relpath) + 1),
- '/'),
- '/'))
-
/* --------------------------------------------------------------------------
* Complex queries for callback walks, caching results in a temporary table.
*
@@ -1443,7 +1421,7 @@ WHERE wc_id = ?1
-- STMT_SELECT_ALL_NODES
SELECT op_depth, local_relpath, parent_relpath, file_external FROM nodes
-WHERE wc_id == ?1
+WHERE wc_id = ?1
/* ------------------------------------------------------------------------- */
Modified: subversion/branches/auto-props-sdc/subversion/libsvn_wc/wc.h
URL: http://svn.apache.org/viewvc/subversion/branches/auto-props-sdc/subversion/libsvn_wc/wc.h?rev=1397081&r1=1397080&r2=1397081&view=diff
==============================================================================
--- subversion/branches/auto-props-sdc/subversion/libsvn_wc/wc.h (original)
+++ subversion/branches/auto-props-sdc/subversion/libsvn_wc/wc.h Thu Oct 11 14:31:45 2012
@@ -708,6 +708,8 @@ svn_wc__write_check(svn_wc__db_t *db,
*
* Victim must be versioned or be part of a tree conflict.
*
+ * If CREATE_TEMPFILES is TRUE, create temporary files for property conflicts.
+ *
* Allocate *CONFLICTS in RESULT_POOL and do temporary allocations in
* SCRATCH_POOL
*/
@@ -715,6 +717,7 @@ svn_error_t *
svn_wc__read_conflicts(const apr_array_header_t **conflicts,
svn_wc__db_t *db,
const char *local_abspath,
+ svn_boolean_t create_tempfiles,
apr_pool_t *result_pool,
apr_pool_t *scratch_pool);
Modified: subversion/branches/auto-props-sdc/subversion/svn/file-merge.c
URL: http://svn.apache.org/viewvc/subversion/branches/auto-props-sdc/subversion/svn/file-merge.c?rev=1397081&r1=1397080&r2=1397081&view=diff
==============================================================================
--- subversion/branches/auto-props-sdc/subversion/svn/file-merge.c (original)
+++ subversion/branches/auto-props-sdc/subversion/svn/file-merge.c Thu Oct 11 14:31:45 2012
@@ -365,7 +365,7 @@ static const char *
prepare_line_for_display(const char *line, apr_pool_t *pool)
{
svn_stringbuf_t *buf = svn_stringbuf_create(line, pool);
- int width;
+ size_t width;
int line_width = LINE_DISPLAY_WIDTH;
apr_pool_t *iterpool;
Modified: subversion/branches/auto-props-sdc/subversion/svn/propedit-cmd.c
URL: http://svn.apache.org/viewvc/subversion/branches/auto-props-sdc/subversion/svn/propedit-cmd.c?rev=1397081&r1=1397080&r2=1397081&view=diff
==============================================================================
--- subversion/branches/auto-props-sdc/subversion/svn/propedit-cmd.c (original)
+++ subversion/branches/auto-props-sdc/subversion/svn/propedit-cmd.c Thu Oct 11 14:31:45 2012
@@ -228,7 +228,7 @@ svn_cl__propedit(apr_getopt_t *os,
peg_revision.kind = svn_opt_revision_unspecified;
/* Fetch the current property. */
- SVN_ERR(svn_client_propget4(&props, pname_utf8, abspath_or_url,
+ SVN_ERR(svn_client_propget5(&props, NULL, pname_utf8, abspath_or_url,
&peg_revision,
&(opt_state->start_revision),
&base_rev, svn_depth_empty,
Modified: subversion/branches/auto-props-sdc/subversion/tests/cmdline/svnlook_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/auto-props-sdc/subversion/tests/cmdline/svnlook_tests.py?rev=1397081&r1=1397080&r2=1397081&view=diff
==============================================================================
--- subversion/branches/auto-props-sdc/subversion/tests/cmdline/svnlook_tests.py (original)
+++ subversion/branches/auto-props-sdc/subversion/tests/cmdline/svnlook_tests.py Thu Oct 11 14:31:45 2012
@@ -701,11 +701,11 @@ fp.close()"""
' svn:check-locks\n', # internal prop, not really expected
' bogus_rev_prop\n',
' svn:date\n',
- ' svn:txn:client-compat-version\n',
+ ' svn:txn-client-compat-version\n',
]
# ra_dav and ra_svn add the user-agent ephemeral property
if svntest.main.is_ra_type_dav() or svntest.main.is_ra_type_svn():
- expected_data.append(' svn:txn:user-agent\n')
+ expected_data.append(' svn:txn-user-agent\n')
verify_logfile(logfilepath, svntest.verify.UnorderedOutput(expected_data))
def property_delete(sbox):
Modified: subversion/branches/auto-props-sdc/subversion/tests/libsvn_wc/wc-queries-test.c
URL: http://svn.apache.org/viewvc/subversion/branches/auto-props-sdc/subversion/tests/libsvn_wc/wc-queries-test.c?rev=1397081&r1=1397080&r2=1397081&view=diff
==============================================================================
--- subversion/branches/auto-props-sdc/subversion/tests/libsvn_wc/wc-queries-test.c (original)
+++ subversion/branches/auto-props-sdc/subversion/tests/libsvn_wc/wc-queries-test.c Thu Oct 11 14:31:45 2012
@@ -97,9 +97,6 @@ static const int slow_statements[] =
/* Designed as slow to avoid penalty on other queries */
STMT_SELECT_UNREFERENCED_PRISTINES,
- /* Only runs once during upgrade. */
- STMT_SELECT_WCROOT_NODES,
-
/* Slow, but just if foreign keys are enabled:
* STMT_DELETE_PRISTINE_IF_UNREFERENCED,
*/