summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJames McCoy <jamessan@debian.org>2018-10-19 21:32:49 -0400
committerJames McCoy <jamessan@debian.org>2018-10-19 21:32:49 -0400
commit146bd7c0f403a77e64bda13e86f68bf9ddc76ec1 (patch)
tree31b263bea0a9662357c55e1ff5f10e3f390b975d
parente20a507113ff1126aeb4a97b806390ea377fe292 (diff)
New upstream version 1.10.3
-rw-r--r--CHANGES31
-rwxr-xr-xbuild/run_tests.py5
-rwxr-xr-xconfigure22
-rw-r--r--subversion/bindings/swig/perl/native/core.c14
-rw-r--r--subversion/bindings/swig/python/core.c14
-rw-r--r--subversion/bindings/swig/ruby/core.c14
-rw-r--r--subversion/include/svn_version.h6
-rw-r--r--subversion/libsvn_client/conflicts.c355
-rw-r--r--subversion/libsvn_client/shelve.c12
-rw-r--r--subversion/libsvn_fs_fs/recovery.c12
-rw-r--r--subversion/libsvn_ra_serf/util.c20
-rw-r--r--subversion/libsvn_subr/io.c7
-rw-r--r--subversion/libsvn_subr/ssl_client_cert_pw_providers.c14
-rw-r--r--subversion/libsvn_wc/wc-checks.h2
-rw-r--r--subversion/libsvn_wc/wc-metadata.h2
-rw-r--r--subversion/mod_dav_svn/repos.c7
-rw-r--r--subversion/po/de.po4
-rw-r--r--subversion/po/subversion.pot934
-rw-r--r--subversion/svnadmin/svnadmin.c7
-rwxr-xr-xsubversion/tests/cmdline/shelve_tests.py42
-rwxr-xr-xsubversion/tests/cmdline/svnadmin_tests.py79
-rw-r--r--subversion/tests/cmdline/svntest/main.py9
-rw-r--r--subversion/tests/cmdline/svntest/wc.py3
-rw-r--r--subversion/tests/libsvn_client/conflicts-test.c420
24 files changed, 1331 insertions, 704 deletions
diff --git a/CHANGES b/CHANGES
index 7c094e0..b46da4c 100644
--- a/CHANGES
+++ b/CHANGES
@@ -1,3 +1,34 @@
+Version 1.10.3
+(?? Oct 2018, from /branches/1.10.x)
+http://svn.apache.org/repos/asf/subversion/tags/1.10.3
+
+ User-visible changes:
+ - Minor new features and improvements:
+ * Store the HTTPS client cert password (r1842578)
+
+ - Client-side bugfixes:
+ * Fix shelving when custom diff command is configured (issue #4758)
+ * Fix conflict resolver crashes (issue #4744, r1842581, r1842582, r1842583)
+ * Fix conflict resolver endless scan in some cases (r1842586)
+ * Fix "Accept incoming deletion" on locally deleted file (issue #4739)
+ * Fix "resolver adds unrelated moves to move target list" (issue #4766)
+
+ - Server-side bugfixes:
+ * Reject bad PUT before CHECKOUT in v1 HTTP protocol (r1841281)
+ * Let 'svnadmin recover' prune the rep-cache even if disabled (r1842585)
+
+ - Client-side and server-side bugfixes:
+ * Allow commands like 'svn ci --file X' to work when X is a FIFO (r1841282)
+
+ - Other tool improvements and bugfixes:
+ * 'svnadmin verify --keep-going --quiet' shows an error summary (r1842584)
+ * Fix error in german translation for 'svn help merge' (r1837038)
+
+ Developer-visible changes:
+ - General:
+ * Python tests use the current python executable (r1842626)
+
+
Version 1.10.2
(20 Jul 2018, from /branches/1.10.x)
http://svn.apache.org/repos/asf/subversion/tags/1.10.2
diff --git a/build/run_tests.py b/build/run_tests.py
index b311d9f..163c984 100755
--- a/build/run_tests.py
+++ b/build/run_tests.py
@@ -327,7 +327,7 @@ class TestHarness:
def _command_line(self, harness):
if self.is_python:
cmdline = list(harness.py_test_cmdline)
- cmdline.insert(0, 'python')
+ cmdline.insert(0, sys.executable)
cmdline.insert(1, self.progabs)
# Run the test apps in "child process" mode,
# i.e. w/o cleaning up global directories etc.
@@ -375,7 +375,7 @@ class TestHarness:
def _count_py_tests(self, progabs, progdir, progbase):
'Run a c test, escaping parameters as required.'
- cmdline = [ 'python', progabs, '--list' ]
+ cmdline = [ sys.executable, progabs, '--list' ]
prog = subprocess.Popen(cmdline, stdout=subprocess.PIPE, cwd=progdir)
lines = prog.stdout.readlines()
@@ -448,6 +448,7 @@ class TestHarness:
job_queue = queue.Queue()
total_count = 0
scrambled = list(jobs)
+ # TODO: What's this line doing, and what's the magic number?
scrambled.sort(key=lambda x: ("1" if x.test_count() < 30 else "0") + str(x.number))
for job in scrambled:
total_count += job.test_count()
diff --git a/configure b/configure
index 284b76f..01236ee 100755
--- a/configure
+++ b/configure
@@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for subversion 1.10.2.
+# Generated by GNU Autoconf 2.69 for subversion 1.10.3.
#
# Report bugs to <http://subversion.apache.org/>.
#
@@ -590,8 +590,8 @@ MAKEFLAGS=
# Identity of this package.
PACKAGE_NAME='subversion'
PACKAGE_TARNAME='subversion'
-PACKAGE_VERSION='1.10.2'
-PACKAGE_STRING='subversion 1.10.2'
+PACKAGE_VERSION='1.10.3'
+PACKAGE_STRING='subversion 1.10.3'
PACKAGE_BUGREPORT='http://subversion.apache.org/'
PACKAGE_URL=''
@@ -1488,7 +1488,7 @@ if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
-\`configure' configures subversion 1.10.2 to adapt to many kinds of systems.
+\`configure' configures subversion 1.10.3 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1554,7 +1554,7 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of subversion 1.10.2:";;
+ short | recursive ) echo "Configuration of subversion 1.10.3:";;
esac
cat <<\_ACEOF
@@ -1790,7 +1790,7 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-subversion configure 1.10.2
+subversion configure 1.10.3
generated by GNU Autoconf 2.69
Copyright (C) 2012 Free Software Foundation, Inc.
@@ -2334,7 +2334,7 @@ cat >config.log <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
-It was created by subversion $as_me 1.10.2, which was
+It was created by subversion $as_me 1.10.3, which was
generated by GNU Autoconf 2.69. Invocation command line was
$ $0 $@
@@ -2714,8 +2714,8 @@ ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: Configuring Subversion 1.10.2" >&5
-$as_echo "$as_me: Configuring Subversion 1.10.2" >&6;}
+{ $as_echo "$as_me:${as_lineno-$LINENO}: Configuring Subversion 1.10.3" >&5
+$as_echo "$as_me: Configuring Subversion 1.10.3" >&6;}
abs_srcdir="`cd $srcdir && pwd`"
@@ -27400,7 +27400,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
-This file was extended by subversion $as_me 1.10.2, which was
+This file was extended by subversion $as_me 1.10.3, which was
generated by GNU Autoconf 2.69. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -27466,7 +27466,7 @@ _ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\
-subversion config.status 1.10.2
+subversion config.status 1.10.3
configured by $0, generated by GNU Autoconf 2.69,
with options \\"\$ac_cs_config\\"
diff --git a/subversion/bindings/swig/perl/native/core.c b/subversion/bindings/swig/perl/native/core.c
index abe64a6..9e2b9d4 100644
--- a/subversion/bindings/swig/perl/native/core.c
+++ b/subversion/bindings/swig/perl/native/core.c
@@ -51778,12 +51778,12 @@ XS(SWIG_init) {
} while(0) /*@SWIG@*/;
/*@SWIG:/opt/svnrm/prefix/share/swig/3.0.12/perl5/perltypemaps.swg,65,%set_constant@*/ do {
SV *sv = get_sv((char*) SWIG_prefix "SVN_VER_PATCH", TRUE | 0x2 | GV_ADDMULTI);
- sv_setsv(sv, SWIG_From_int SWIG_PERL_CALL_ARGS_1((int)(2)));
+ sv_setsv(sv, SWIG_From_int SWIG_PERL_CALL_ARGS_1((int)(3)));
SvREADONLY_on(sv);
} while(0) /*@SWIG@*/;
/*@SWIG:/opt/svnrm/prefix/share/swig/3.0.12/perl5/perltypemaps.swg,65,%set_constant@*/ do {
SV *sv = get_sv((char*) SWIG_prefix "SVN_VER_MICRO", TRUE | 0x2 | GV_ADDMULTI);
- sv_setsv(sv, SWIG_From_int SWIG_PERL_CALL_ARGS_1((int)(2)));
+ sv_setsv(sv, SWIG_From_int SWIG_PERL_CALL_ARGS_1((int)(3)));
SvREADONLY_on(sv);
} while(0) /*@SWIG@*/;
/*@SWIG:/opt/svnrm/prefix/share/swig/3.0.12/perl5/perltypemaps.swg,65,%set_constant@*/ do {
@@ -51793,7 +51793,7 @@ XS(SWIG_init) {
} while(0) /*@SWIG@*/;
/*@SWIG:/opt/svnrm/prefix/share/swig/3.0.12/perl5/perltypemaps.swg,65,%set_constant@*/ do {
SV *sv = get_sv((char*) SWIG_prefix "SVN_VER_TAG", TRUE | 0x2 | GV_ADDMULTI);
- sv_setsv(sv, SWIG_FromCharPtr(" (r1835932)"));
+ sv_setsv(sv, SWIG_FromCharPtr(" (r1842928)"));
SvREADONLY_on(sv);
} while(0) /*@SWIG@*/;
/*@SWIG:/opt/svnrm/prefix/share/swig/3.0.12/perl5/perltypemaps.swg,65,%set_constant@*/ do {
@@ -51803,22 +51803,22 @@ XS(SWIG_init) {
} while(0) /*@SWIG@*/;
/*@SWIG:/opt/svnrm/prefix/share/swig/3.0.12/perl5/perltypemaps.swg,65,%set_constant@*/ do {
SV *sv = get_sv((char*) SWIG_prefix "SVN_VER_REVISION", TRUE | 0x2 | GV_ADDMULTI);
- sv_setsv(sv, SWIG_From_int SWIG_PERL_CALL_ARGS_1((int)(1835932)));
+ sv_setsv(sv, SWIG_From_int SWIG_PERL_CALL_ARGS_1((int)(1842928)));
SvREADONLY_on(sv);
} while(0) /*@SWIG@*/;
/*@SWIG:/opt/svnrm/prefix/share/swig/3.0.12/perl5/perltypemaps.swg,65,%set_constant@*/ do {
SV *sv = get_sv((char*) SWIG_prefix "SVN_VER_NUM", TRUE | 0x2 | GV_ADDMULTI);
- sv_setsv(sv, SWIG_FromCharPtr("1.10.2"));
+ sv_setsv(sv, SWIG_FromCharPtr("1.10.3"));
SvREADONLY_on(sv);
} while(0) /*@SWIG@*/;
/*@SWIG:/opt/svnrm/prefix/share/swig/3.0.12/perl5/perltypemaps.swg,65,%set_constant@*/ do {
SV *sv = get_sv((char*) SWIG_prefix "SVN_VER_NUMBER", TRUE | 0x2 | GV_ADDMULTI);
- sv_setsv(sv, SWIG_FromCharPtr("1.10.2"));
+ sv_setsv(sv, SWIG_FromCharPtr("1.10.3"));
SvREADONLY_on(sv);
} while(0) /*@SWIG@*/;
/*@SWIG:/opt/svnrm/prefix/share/swig/3.0.12/perl5/perltypemaps.swg,65,%set_constant@*/ do {
SV *sv = get_sv((char*) SWIG_prefix "SVN_VERSION", TRUE | 0x2 | GV_ADDMULTI);
- sv_setsv(sv, SWIG_FromCharPtr("1.10.2 (r1835932)"));
+ sv_setsv(sv, SWIG_FromCharPtr("1.10.3 (r1842928)"));
SvREADONLY_on(sv);
} while(0) /*@SWIG@*/;
/*@SWIG:/opt/svnrm/prefix/share/swig/3.0.12/perl5/perltypemaps.swg,65,%set_constant@*/ do {
diff --git a/subversion/bindings/swig/python/core.c b/subversion/bindings/swig/python/core.c
index 48fbf25..986a212 100644
--- a/subversion/bindings/swig/python/core.c
+++ b/subversion/bindings/swig/python/core.c
@@ -37608,15 +37608,15 @@ SWIG_init(void) {
SWIG_Python_SetConstant(d, "SVN_ALLOCATOR_RECOMMENDED_MAX_FREE",SWIG_From_long((long)((4096*1024))));
SWIG_Python_SetConstant(d, "SVN_VER_MAJOR",SWIG_From_long((long)(1)));
SWIG_Python_SetConstant(d, "SVN_VER_MINOR",SWIG_From_long((long)(10)));
- SWIG_Python_SetConstant(d, "SVN_VER_PATCH",SWIG_From_long((long)(2)));
- SWIG_Python_SetConstant(d, "SVN_VER_MICRO",SWIG_From_long((long)(2)));
+ SWIG_Python_SetConstant(d, "SVN_VER_PATCH",SWIG_From_long((long)(3)));
+ SWIG_Python_SetConstant(d, "SVN_VER_MICRO",SWIG_From_long((long)(3)));
SWIG_Python_SetConstant(d, "SVN_VER_LIBRARY",SWIG_From_long((long)(1)));
- SWIG_Python_SetConstant(d, "SVN_VER_TAG",SWIG_FromCharPtr(" (r1835932)"));
+ SWIG_Python_SetConstant(d, "SVN_VER_TAG",SWIG_FromCharPtr(" (r1842928)"));
SWIG_Python_SetConstant(d, "SVN_VER_NUMTAG",SWIG_FromCharPtr(""));
- SWIG_Python_SetConstant(d, "SVN_VER_REVISION",SWIG_From_long((long)(1835932)));
- SWIG_Python_SetConstant(d, "SVN_VER_NUM",SWIG_FromCharPtr("1.10.2"));
- SWIG_Python_SetConstant(d, "SVN_VER_NUMBER",SWIG_FromCharPtr("1.10.2"));
- SWIG_Python_SetConstant(d, "SVN_VERSION",SWIG_FromCharPtr("1.10.2 (r1835932)"));
+ SWIG_Python_SetConstant(d, "SVN_VER_REVISION",SWIG_From_long((long)(1842928)));
+ SWIG_Python_SetConstant(d, "SVN_VER_NUM",SWIG_FromCharPtr("1.10.3"));
+ SWIG_Python_SetConstant(d, "SVN_VER_NUMBER",SWIG_FromCharPtr("1.10.3"));
+ SWIG_Python_SetConstant(d, "SVN_VERSION",SWIG_FromCharPtr("1.10.3 (r1842928)"));
SWIG_Python_SetConstant(d, "svn_prop_entry_kind",SWIG_From_long((long)(svn_prop_entry_kind)));
SWIG_Python_SetConstant(d, "svn_prop_wc_kind",SWIG_From_long((long)(svn_prop_wc_kind)));
SWIG_Python_SetConstant(d, "svn_prop_regular_kind",SWIG_From_long((long)(svn_prop_regular_kind)));
diff --git a/subversion/bindings/swig/ruby/core.c b/subversion/bindings/swig/ruby/core.c
index 8afa65b..b0f916d 100644
--- a/subversion/bindings/swig/ruby/core.c
+++ b/subversion/bindings/swig/ruby/core.c
@@ -45427,15 +45427,15 @@ SWIGEXPORT void Init_core(void) {
rb_define_module_function(mCore, "svn_pool_create_allocator", _wrap_svn_pool_create_allocator, -1);
rb_define_const(mCore, "SVN_VER_MAJOR", SWIG_From_int((int)(1)));
rb_define_const(mCore, "SVN_VER_MINOR", SWIG_From_int((int)(10)));
- rb_define_const(mCore, "SVN_VER_PATCH", SWIG_From_int((int)(2)));
- rb_define_const(mCore, "SVN_VER_MICRO", SWIG_From_int((int)(2)));
+ rb_define_const(mCore, "SVN_VER_PATCH", SWIG_From_int((int)(3)));
+ rb_define_const(mCore, "SVN_VER_MICRO", SWIG_From_int((int)(3)));
rb_define_const(mCore, "SVN_VER_LIBRARY", SWIG_From_int((int)(1)));
- rb_define_const(mCore, "SVN_VER_TAG", SWIG_FromCharPtr(" (r1835932)"));
+ rb_define_const(mCore, "SVN_VER_TAG", SWIG_FromCharPtr(" (r1842928)"));
rb_define_const(mCore, "SVN_VER_NUMTAG", SWIG_FromCharPtr(""));
- rb_define_const(mCore, "SVN_VER_REVISION", SWIG_From_int((int)(1835932)));
- rb_define_const(mCore, "SVN_VER_NUM", SWIG_FromCharPtr("1.10.2"));
- rb_define_const(mCore, "SVN_VER_NUMBER", SWIG_FromCharPtr("1.10.2"));
- rb_define_const(mCore, "SVN_VERSION", SWIG_FromCharPtr("1.10.2 (r1835932)"));
+ rb_define_const(mCore, "SVN_VER_REVISION", SWIG_From_int((int)(1842928)));
+ rb_define_const(mCore, "SVN_VER_NUM", SWIG_FromCharPtr("1.10.3"));
+ rb_define_const(mCore, "SVN_VER_NUMBER", SWIG_FromCharPtr("1.10.3"));
+ rb_define_const(mCore, "SVN_VERSION", SWIG_FromCharPtr("1.10.3 (r1842928)"));
SwigClassSvn_version_t.klass = rb_define_class_under(mCore, "Svn_version_t", rb_cObject);
SWIG_TypeClientData(SWIGTYPE_p_svn_version_t, (void *) &SwigClassSvn_version_t);
diff --git a/subversion/include/svn_version.h b/subversion/include/svn_version.h
index 7d95271..4baabfc 100644
--- a/subversion/include/svn_version.h
+++ b/subversion/include/svn_version.h
@@ -70,7 +70,7 @@ extern "C" {
*
* @since New in 1.1.
*/
-#define SVN_VER_PATCH 2
+#define SVN_VER_PATCH 3
/** @deprecated Provided for backward compatibility with the 1.0 API. */
@@ -93,7 +93,7 @@ extern "C" {
*
* Always change this at the same time as SVN_VER_NUMTAG.
*/
-#define SVN_VER_TAG " (r1835932)"
+#define SVN_VER_TAG " (r1842928)"
/** Number tag: a string describing the version.
@@ -117,7 +117,7 @@ extern "C" {
* file version. Its value remains 0 in the repository except in release
* tags where it is the revision from which the tag was created.
*/
-#define SVN_VER_REVISION 1835932
+#define SVN_VER_REVISION 1842928
/* Version strings composed from the above definitions. */
diff --git a/subversion/libsvn_client/conflicts.c b/subversion/libsvn_client/conflicts.c
index f571f3c..0f899af 100644
--- a/subversion/libsvn_client/conflicts.c
+++ b/subversion/libsvn_client/conflicts.c
@@ -806,18 +806,20 @@ map_deleted_path_to_move(const char *deleted_relpath,
if (closest_move)
{
const char *relpath;
- const char *moved_along_path;
- struct repos_move_info *move;
/* See if we can find an even closer move for this moved-along path. */
relpath = svn_relpath_skip_ancestor(closest_move->moved_to_repos_relpath,
deleted_relpath);
- moved_along_path =
- svn_relpath_join(closest_move->moved_from_repos_relpath, relpath,
- scratch_pool);
- move = map_deleted_path_to_move(moved_along_path, moves, scratch_pool);
- if (move)
- return move;
+ if (relpath && relpath[0] != '\0')
+ {
+ struct repos_move_info *move;
+ const char *moved_along_path =
+ svn_relpath_join(closest_move->moved_from_repos_relpath, relpath,
+ scratch_pool);
+ move = map_deleted_path_to_move(moved_along_path, moves, scratch_pool);
+ if (move)
+ return move;
+ }
}
return closest_move;
@@ -1059,6 +1061,9 @@ find_deleted_rev(void *baton,
{
apr_array_header_t *moves;
+ if (b->moves_table == NULL)
+ return SVN_NO_ERROR;
+
moves = apr_hash_get(b->moves_table, &log_entry->revision,
sizeof(svn_revnum_t));
if (moves)
@@ -2097,33 +2102,6 @@ trace_moved_node_backwards(apr_hash_t *moves_table,
return SVN_NO_ERROR;
}
-static svn_error_t *
-reparent_session_and_fetch_node_kind(svn_node_kind_t *node_kind,
- svn_ra_session_t *ra_session,
- const char *url,
- svn_revnum_t peg_rev,
- apr_pool_t *scratch_pool)
-{
- svn_error_t *err;
-
- err = svn_ra_reparent(ra_session, url, scratch_pool);
- if (err)
- {
- if (err->apr_err == SVN_ERR_RA_ILLEGAL_URL)
- {
- svn_error_clear(err);
- *node_kind = svn_node_unknown;
- return SVN_NO_ERROR;
- }
-
- return svn_error_trace(err);
- }
-
- SVN_ERR(svn_ra_check_path(ra_session, "", peg_rev, node_kind, scratch_pool));
-
- return SVN_NO_ERROR;
-}
-
/* Scan MOVES_TABLE for moves which affect a particular deleted node, and
* build a set of new move information for this node.
* Return heads of all possible move chains in *MOVES.
@@ -2170,22 +2148,29 @@ find_operative_moves(apr_array_header_t **moves,
svn_pool_clear(iterpool);
move = APR_ARRAY_IDX(moves_in_deleted_rev, i, struct repos_move_info *);
- relpath = svn_relpath_skip_ancestor(move->moved_from_repos_relpath,
+ if (strcmp(move->moved_from_repos_relpath, deleted_repos_relpath) == 0)
+ {
+ APR_ARRAY_PUSH(*moves, struct repos_move_info *) = move;
+ continue;
+ }
+
+ /* Test for an operative nested move. */
+ relpath = svn_relpath_skip_ancestor(move->moved_to_repos_relpath,
deleted_repos_relpath);
if (relpath && relpath[0] != '\0')
{
- svn_node_kind_t node_kind;
-
- url = svn_path_url_add_component2(repos_root_url,
- deleted_repos_relpath,
- iterpool);
- SVN_ERR(reparent_session_and_fetch_node_kind(&node_kind,
- ra_session, url,
- rev_below(deleted_rev),
- iterpool));
- move = new_path_adjusted_move(move, relpath, node_kind, result_pool);
+ struct repos_move_info *nested_move;
+ const char *actual_deleted_repos_relpath;
+
+ actual_deleted_repos_relpath =
+ svn_relpath_join(move->moved_from_repos_relpath, relpath,
+ iterpool);
+ nested_move = map_deleted_path_to_move(actual_deleted_repos_relpath,
+ moves_in_deleted_rev,
+ iterpool);
+ if (nested_move)
+ APR_ARRAY_PUSH(*moves, struct repos_move_info *) = nested_move;
}
- APR_ARRAY_PUSH(*moves, struct repos_move_info *) = move;
}
if (url != NULL)
@@ -2223,8 +2208,8 @@ find_operative_moves(apr_array_header_t **moves,
* If the node was replaced rather than deleted, set *REPLACING_NODE_KIND to
* the node kind of the replacing node. Else, set it to svn_node_unknown.
* Only request the log for revisions up to END_REV from the server.
- * If the deleted node was moved, provide heads of move chains in *MOVES.
- * If the node was not moved,set *MOVES to NULL.
+ * If MOVES it not NULL, and the deleted node was moved, provide heads of
+ * move chains in *MOVES, or, if the node was not moved, set *MOVES to NULL.
*/
static svn_error_t *
find_revision_for_suspected_deletion(svn_revnum_t *deleted_rev,
@@ -2261,10 +2246,11 @@ find_revision_for_suspected_deletion(svn_revnum_t *deleted_rev,
scratch_pool));
victim_abspath = svn_client_conflict_get_local_abspath(conflict);
- SVN_ERR(find_moves_in_revision_range(&moves_table, parent_repos_relpath,
- repos_root_url, repos_uuid,
- victim_abspath, start_rev, end_rev,
- ctx, result_pool, scratch_pool));
+ if (moves)
+ SVN_ERR(find_moves_in_revision_range(&moves_table, parent_repos_relpath,
+ repos_root_url, repos_uuid,
+ victim_abspath, start_rev, end_rev,
+ ctx, result_pool, scratch_pool));
url = svn_path_url_add_component2(repos_root_url, parent_repos_relpath,
scratch_pool);
@@ -2289,7 +2275,8 @@ find_revision_for_suspected_deletion(svn_revnum_t *deleted_rev,
b.repos_root_url = repos_root_url;
b.repos_uuid = repos_uuid;
b.ctx = ctx;
- b.moves_table = moves_table;
+ if (moves)
+ b.moves_table = moves_table;
b.result_pool = result_pool;
SVN_ERR(svn_ra__dup_session(&b.extra_ra_session, ra_session, NULL,
scratch_pool, scratch_pool));
@@ -2319,7 +2306,7 @@ find_revision_for_suspected_deletion(svn_revnum_t *deleted_rev,
{
struct repos_move_info *move = b.move;
- if (move)
+ if (moves && move)
{
*deleted_rev = move->rev;
*deleted_rev_author = move->rev_author;
@@ -2337,7 +2324,8 @@ find_revision_for_suspected_deletion(svn_revnum_t *deleted_rev,
*deleted_rev = SVN_INVALID_REVNUM;
*deleted_rev_author = NULL;
*replacing_node_kind = svn_node_unknown;
- *moves = NULL;
+ if (moves)
+ *moves = NULL;
}
return SVN_NO_ERROR;
}
@@ -2346,10 +2334,11 @@ find_revision_for_suspected_deletion(svn_revnum_t *deleted_rev,
*deleted_rev = b.deleted_rev;
*deleted_rev_author = b.deleted_rev_author;
*replacing_node_kind = b.replacing_node_kind;
- SVN_ERR(find_operative_moves(moves, moves_table,
- b.deleted_repos_relpath, b.deleted_rev,
- ra_session, repos_root_url,
- result_pool, scratch_pool));
+ if (moves)
+ SVN_ERR(find_operative_moves(moves, moves_table,
+ b.deleted_repos_relpath, b.deleted_rev,
+ ra_session, repos_root_url,
+ result_pool, scratch_pool));
}
return SVN_NO_ERROR;
@@ -2693,7 +2682,8 @@ conflict_tree_get_details_local_missing(svn_client_conflict_t *conflict,
end_rev = 0; /* ### We might walk through all of history... */
SVN_ERR(find_revision_for_suspected_deletion(
- &deleted_rev, &deleted_rev_author, &replacing_node_kind, &moves,
+ &deleted_rev, &deleted_rev_author, &replacing_node_kind,
+ yca_loc ? &moves : NULL,
conflict, deleted_basename, parent_repos_relpath,
parent_peg_rev, end_rev, related_repos_relpath, related_peg_rev,
ctx, conflict->pool, scratch_pool));
@@ -5069,7 +5059,7 @@ conflict_tree_get_details_incoming_add(svn_client_conflict_t *conflict,
const char *repos_root_url;
svn_revnum_t old_rev;
svn_revnum_t new_rev;
- struct conflict_tree_incoming_add_details *details;
+ struct conflict_tree_incoming_add_details *details = NULL;
svn_wc_operation_t operation;
SVN_ERR(svn_client_conflict_get_incoming_old_repos_location(
@@ -5162,7 +5152,8 @@ conflict_tree_get_details_incoming_add(svn_client_conflict_t *conflict,
}
}
}
- else if (operation == svn_wc_operation_merge)
+ else if (operation == svn_wc_operation_merge &&
+ strcmp(old_repos_relpath, new_repos_relpath) == 0)
{
if (old_rev < new_rev)
{
@@ -5213,7 +5204,7 @@ conflict_tree_get_details_incoming_add(svn_client_conflict_t *conflict,
details->deleted_rev = SVN_INVALID_REVNUM;
details->deleted_rev_author = NULL;
}
- else
+ else if (old_rev > new_rev)
{
/* The merge operation was a reverse-merge.
* This addition is in fact a deletion, applied in reverse,
@@ -5253,10 +5244,6 @@ conflict_tree_get_details_incoming_add(svn_client_conflict_t *conflict,
details->moves = moves;
}
}
- else
- {
- details = NULL;
- }
conflict->tree_conflict_incoming_details = details;
@@ -5719,7 +5706,10 @@ find_modified_rev(void *baton,
if (log_item->copyfrom_path)
b->repos_relpath = apr_pstrdup(b->scratch_pool,
- log_item->copyfrom_path);
+ /* ### remove leading slash */
+ svn_relpath_canonicalize(
+ log_item->copyfrom_path,
+ iterpool));
}
else if (b->node_kind == svn_node_dir &&
svn_relpath_skip_ancestor(b->repos_relpath, path) != NULL)
@@ -8004,6 +7994,112 @@ resolve_merge_incoming_added_dir_replace_and_merge(
scratch_pool));
}
+/* Ensure the conflict victim is a copy of itself from before it was deleted.
+ * Update and switch are supposed to set this up when flagging the conflict. */
+static svn_error_t *
+ensure_local_edit_vs_incoming_deletion_copied_state(
+ struct conflict_tree_incoming_delete_details *details,
+ svn_wc_operation_t operation,
+ const char *wcroot_abspath,
+ svn_client_conflict_t *conflict,
+ svn_client_ctx_t *ctx,
+ apr_pool_t *scratch_pool)
+{
+
+ svn_boolean_t is_copy;
+ svn_revnum_t copyfrom_rev;
+ const char *copyfrom_repos_relpath;
+
+ SVN_ERR_ASSERT(operation == svn_wc_operation_update ||
+ operation == svn_wc_operation_switch);
+
+ SVN_ERR(svn_wc__node_get_origin(&is_copy, &copyfrom_rev,
+ &copyfrom_repos_relpath,
+ NULL, NULL, NULL, NULL,
+ ctx->wc_ctx, conflict->local_abspath,
+ FALSE, scratch_pool, scratch_pool));
+ if (!is_copy)
+ return svn_error_createf(SVN_ERR_WC_CONFLICT_RESOLVER_FAILURE, NULL,
+ _("Cannot resolve tree conflict on '%s' "
+ "(expected a copied item, but the item "
+ "is not a copy)"),
+ svn_dirent_local_style(
+ svn_dirent_skip_ancestor(
+ wcroot_abspath,
+ conflict->local_abspath),
+ scratch_pool));
+ else if (details->deleted_rev != SVN_INVALID_REVNUM &&
+ copyfrom_rev >= details->deleted_rev)
+ return svn_error_createf(SVN_ERR_WC_CONFLICT_RESOLVER_FAILURE, NULL,
+ _("Cannot resolve tree conflict on '%s' "
+ "(expected an item copied from a revision "
+ "smaller than r%ld, but the item was "
+ "copied from r%ld)"),
+ svn_dirent_local_style(
+ svn_dirent_skip_ancestor(
+ wcroot_abspath, conflict->local_abspath),
+ scratch_pool),
+ details->deleted_rev, copyfrom_rev);
+ else if (details->added_rev != SVN_INVALID_REVNUM &&
+ copyfrom_rev < details->added_rev)
+ return svn_error_createf(SVN_ERR_WC_CONFLICT_RESOLVER_FAILURE, NULL,
+ _("Cannot resolve tree conflict on '%s' "
+ "(expected an item copied from a revision "
+ "larger than r%ld, but the item was "
+ "copied from r%ld)"),
+ svn_dirent_local_style(
+ svn_dirent_skip_ancestor(
+ wcroot_abspath, conflict->local_abspath),
+ scratch_pool),
+ details->added_rev, copyfrom_rev);
+ else if (operation == svn_wc_operation_update)
+ {
+ const char *old_repos_relpath;
+
+ SVN_ERR(svn_client_conflict_get_incoming_old_repos_location(
+ &old_repos_relpath, NULL, NULL, conflict,
+ scratch_pool, scratch_pool));
+ if (strcmp(copyfrom_repos_relpath, details->repos_relpath) != 0 &&
+ strcmp(copyfrom_repos_relpath, old_repos_relpath) != 0)
+ return svn_error_createf(SVN_ERR_WC_CONFLICT_RESOLVER_FAILURE, NULL,
+ _("Cannot resolve tree conflict on '%s' "
+ "(expected an item copied from '^/%s' "
+ "or from '^/%s' but the item was "
+ "copied from '^/%s@%ld')"),
+ svn_dirent_local_style(
+ svn_dirent_skip_ancestor(
+ wcroot_abspath, conflict->local_abspath),
+ scratch_pool),
+ details->repos_relpath,
+ old_repos_relpath,
+ copyfrom_repos_relpath, copyfrom_rev);
+ }
+ else if (operation == svn_wc_operation_switch)
+ {
+ const char *old_repos_relpath;
+
+ SVN_ERR(svn_client_conflict_get_incoming_old_repos_location(
+ &old_repos_relpath, NULL, NULL, conflict,
+ scratch_pool, scratch_pool));
+
+ if (strcmp(copyfrom_repos_relpath, old_repos_relpath) != 0)
+ return svn_error_createf(SVN_ERR_WC_CONFLICT_RESOLVER_FAILURE, NULL,
+ _("Cannot resolve tree conflict on '%s' "
+ "(expected an item copied from '^/%s', "
+ "but the item was copied from "
+ "'^/%s@%ld')"),
+ svn_dirent_local_style(
+ svn_dirent_skip_ancestor(
+ wcroot_abspath,
+ conflict->local_abspath),
+ scratch_pool),
+ old_repos_relpath,
+ copyfrom_repos_relpath, copyfrom_rev);
+ }
+
+ return SVN_NO_ERROR;
+}
+
/* Verify the local working copy state matches what we expect when an
* incoming deletion tree conflict exists.
* We assume update/merge/switch operations leave the working copy in a
@@ -8014,26 +8110,25 @@ resolve_merge_incoming_added_dir_replace_and_merge(
static svn_error_t *
verify_local_state_for_incoming_delete(svn_client_conflict_t *conflict,
svn_client_conflict_option_t *option,
- svn_client_ctx_t *ctx,
+ svn_client_ctx_t *ctx,
apr_pool_t *scratch_pool)
{
const char *local_abspath;
const char *wcroot_abspath;
svn_wc_operation_t operation;
+ svn_wc_conflict_reason_t local_change;
local_abspath = svn_client_conflict_get_local_abspath(conflict);
SVN_ERR(svn_wc__get_wcroot(&wcroot_abspath, ctx->wc_ctx,
local_abspath, scratch_pool,
scratch_pool));
operation = svn_client_conflict_get_operation(conflict);
+ local_change = svn_client_conflict_get_local_change(conflict);
if (operation == svn_wc_operation_update ||
operation == svn_wc_operation_switch)
{
struct conflict_tree_incoming_delete_details *details;
- svn_boolean_t is_copy;
- svn_revnum_t copyfrom_rev;
- const char *copyfrom_repos_relpath;
details = conflict->tree_conflict_incoming_details;
if (details == NULL)
@@ -8045,26 +8140,8 @@ verify_local_state_for_incoming_delete(svn_client_conflict_t *conflict,
svn_dirent_local_style(local_abspath,
scratch_pool));
- /* Ensure that the item is a copy of itself from before it was deleted.
- * Update and switch are supposed to set this up when flagging the
- * conflict. */
- SVN_ERR(svn_wc__node_get_origin(&is_copy, &copyfrom_rev,
- &copyfrom_repos_relpath,
- NULL, NULL, NULL, NULL,
- ctx->wc_ctx, local_abspath, FALSE,
- scratch_pool, scratch_pool));
- if (!is_copy)
- return svn_error_createf(SVN_ERR_WC_CONFLICT_RESOLVER_FAILURE, NULL,
- _("Cannot resolve tree conflict on '%s' "
- "(expected a copied item, but the item "
- "is not a copy)"),
- svn_dirent_local_style(
- svn_dirent_skip_ancestor(
- wcroot_abspath,
- conflict->local_abspath),
- scratch_pool));
- else if (details->deleted_rev == SVN_INVALID_REVNUM &&
- details->added_rev == SVN_INVALID_REVNUM)
+ if (details->deleted_rev == SVN_INVALID_REVNUM &&
+ details->added_rev == SVN_INVALID_REVNUM)
return svn_error_createf(SVN_ERR_WC_CONFLICT_RESOLVER_FAILURE, NULL,
_("Could not find the revision in which '%s' "
"was deleted from the repository"),
@@ -8073,75 +8150,11 @@ verify_local_state_for_incoming_delete(svn_client_conflict_t *conflict,
wcroot_abspath,
conflict->local_abspath),
scratch_pool));
- else if (details->deleted_rev != SVN_INVALID_REVNUM &&
- copyfrom_rev >= details->deleted_rev)
- return svn_error_createf(SVN_ERR_WC_CONFLICT_RESOLVER_FAILURE, NULL,
- _("Cannot resolve tree conflict on '%s' "
- "(expected an item copied from a revision "
- "smaller than r%ld, but the item was "
- "copied from r%ld)"),
- svn_dirent_local_style(
- svn_dirent_skip_ancestor(
- wcroot_abspath, conflict->local_abspath),
- scratch_pool),
- details->deleted_rev, copyfrom_rev);
- else if (details->added_rev != SVN_INVALID_REVNUM &&
- copyfrom_rev < details->added_rev)
- return svn_error_createf(SVN_ERR_WC_CONFLICT_RESOLVER_FAILURE, NULL,
- _("Cannot resolve tree conflict on '%s' "
- "(expected an item copied from a revision "
- "larger than r%ld, but the item was "
- "copied from r%ld)"),
- svn_dirent_local_style(
- svn_dirent_skip_ancestor(
- wcroot_abspath, conflict->local_abspath),
- scratch_pool),
- details->added_rev, copyfrom_rev);
- else if (operation == svn_wc_operation_update)
- {
- const char *old_repos_relpath;
-
- SVN_ERR(svn_client_conflict_get_incoming_old_repos_location(
- &old_repos_relpath, NULL, NULL, conflict,
- scratch_pool, scratch_pool));
- if (strcmp(copyfrom_repos_relpath, details->repos_relpath) != 0 &&
- strcmp(copyfrom_repos_relpath, old_repos_relpath) != 0)
- return svn_error_createf(SVN_ERR_WC_CONFLICT_RESOLVER_FAILURE, NULL,
- _("Cannot resolve tree conflict on '%s' "
- "(expected an item copied from '^/%s' "
- "or from '^/%s' but the item was "
- "copied from '^/%s@%ld')"),
- svn_dirent_local_style(
- svn_dirent_skip_ancestor(
- wcroot_abspath, conflict->local_abspath),
- scratch_pool),
- details->repos_relpath,
- old_repos_relpath,
- copyfrom_repos_relpath, copyfrom_rev);
- }
- else if (operation == svn_wc_operation_switch)
- {
- const char *old_repos_relpath;
-
- SVN_ERR(svn_client_conflict_get_incoming_old_repos_location(
- &old_repos_relpath, NULL, NULL, conflict,
- scratch_pool, scratch_pool));
-
- if (strcmp(copyfrom_repos_relpath, old_repos_relpath) != 0)
- return svn_error_createf(SVN_ERR_WC_CONFLICT_RESOLVER_FAILURE, NULL,
- _("Cannot resolve tree conflict on '%s' "
- "(expected an item copied from '^/%s', "
- "but the item was copied from "
- "'^/%s@%ld')"),
- svn_dirent_local_style(
- svn_dirent_skip_ancestor(
- wcroot_abspath,
- conflict->local_abspath),
- scratch_pool),
- old_repos_relpath,
- copyfrom_repos_relpath, copyfrom_rev);
- }
+ if (local_change == svn_wc_conflict_reason_edited)
+ SVN_ERR(ensure_local_edit_vs_incoming_deletion_copied_state(
+ details, operation, wcroot_abspath, conflict, ctx,
+ scratch_pool));
}
else if (operation == svn_wc_operation_merge)
{
@@ -9519,13 +9532,18 @@ configure_option_incoming_added_dir_merge(svn_client_conflict_t *conflict,
conflict->local_abspath, scratch_pool,
scratch_pool));
if (operation == svn_wc_operation_merge)
- description =
- apr_psprintf(scratch_pool, _("merge '^/%s@%ld' into '%s'"),
- incoming_new_repos_relpath, incoming_new_pegrev,
- svn_dirent_local_style(
- svn_dirent_skip_ancestor(wcroot_abspath,
- conflict->local_abspath),
- scratch_pool));
+ {
+ if (conflict->tree_conflict_incoming_details == NULL)
+ return SVN_NO_ERROR;
+
+ description =
+ apr_psprintf(scratch_pool, _("merge '^/%s@%ld' into '%s'"),
+ incoming_new_repos_relpath, incoming_new_pegrev,
+ svn_dirent_local_style(
+ svn_dirent_skip_ancestor(wcroot_abspath,
+ conflict->local_abspath),
+ scratch_pool));
+ }
else
description =
apr_psprintf(scratch_pool, _("merge local '%s' and '^/%s@%ld'"),
@@ -10167,6 +10185,7 @@ svn_client_conflict_option_set_moved_to_repos_relpath(
if (strcmp(move_target_repos_relpath, repos_relpath) == 0)
{
details->move_target_repos_relpath = repos_relpath;
+ details->wc_move_target_idx = 0;
/* Update option description. */
SVN_ERR(describe_incoming_move_merge_conflict_option(
&option->description,
diff --git a/subversion/libsvn_client/shelve.c b/subversion/libsvn_client/shelve.c
index af8dd67..4eeb4dd 100644
--- a/subversion/libsvn_client/shelve.c
+++ b/subversion/libsvn_client/shelve.c
@@ -188,13 +188,18 @@ shelf_write_patch(const char *name,
for (i = 0; i < paths->nelts; i++)
{
const char *path = APR_ARRAY_IDX(paths, i, const char *);
+ apr_hash_t *old_config;
+ svn_error_t *err;
if (svn_path_is_url(path))
return svn_error_createf(SVN_ERR_ILLEGAL_TARGET, NULL,
_("'%s' is not a local path"), path);
SVN_ERR(svn_dirent_get_absolute(&path, path, scratch_pool));
- SVN_ERR(svn_client_diff_peg6(
+ /* Ensure we use internal diff, not any configured external diff-cmd. */
+ old_config = ctx->config;
+ ctx->config = NULL;
+ err = svn_client_diff_peg6(
NULL /*options*/,
path,
&peg_revision,
@@ -214,8 +219,11 @@ shelf_write_patch(const char *name,
outstream,
errstream,
changelists,
- ctx, iterpool));
+ ctx, iterpool);
+ ctx->config = old_config;
+ SVN_ERR(err);
}
+
SVN_ERR(svn_stream_close(outstream));
SVN_ERR(svn_stream_close(errstream));
diff --git a/subversion/libsvn_fs_fs/recovery.c b/subversion/libsvn_fs_fs/recovery.c
index eef06f6..09030f4 100644
--- a/subversion/libsvn_fs_fs/recovery.c
+++ b/subversion/libsvn_fs_fs/recovery.c
@@ -471,9 +471,15 @@ recover_body(void *baton, apr_pool_t *pool)
}
/* Prune younger-than-(newfound-youngest) revisions from the rep
- cache if sharing is enabled taking care not to create the cache
- if it does not exist. */
- if (ffd->rep_sharing_allowed)
+ cache, taking care not to create the cache if it does not exist.
+
+ We do this whenever rep-cache.db exists, whether it's currently enabled
+ or not, to prevent a data loss that could result from having revisions
+ created after this 'recover' operation referring to rep-cache.db rows
+ that were created before the recover and that point to revisions younger-
+ than-(newfound-youngest).
+ */
+ if (ffd->format >= SVN_FS_FS__MIN_REP_SHARING_FORMAT)
{
svn_boolean_t rep_cache_exists;
diff --git a/subversion/libsvn_ra_serf/util.c b/subversion/libsvn_ra_serf/util.c
index 52bf93b..66e06ff 100644
--- a/subversion/libsvn_ra_serf/util.c
+++ b/subversion/libsvn_ra_serf/util.c
@@ -756,6 +756,9 @@ handle_client_cert_pw(void *data,
if (creds)
{
+ /* At this stage we are unable to check whether the password
+ is correct; if it is incorrect serf will fail to establish
+ an SSL connection and will return a generic SSL error. */
svn_auth_cred_ssl_client_cert_pw_t *pw_creds;
pw_creds = creds;
*password = pw_creds->password;
@@ -1445,6 +1448,23 @@ handle_response(serf_request_t *request,
process_body:
+ /* A client cert file password was obtained and worked (any HTTP
+ response means that the SSL connection was established.) */
+ if (handler->conn->ssl_client_pw_auth_state)
+ {
+ SVN_ERR(svn_auth_save_credentials(handler->conn->ssl_client_pw_auth_state,
+ handler->session->pool));
+ handler->conn->ssl_client_pw_auth_state = NULL;
+ }
+ if (handler->conn->ssl_client_auth_state)
+ {
+ /* The cert file provider doesn't have any code to save creds so
+ this is currently a no-op. */
+ SVN_ERR(svn_auth_save_credentials(handler->conn->ssl_client_auth_state,
+ handler->session->pool));
+ handler->conn->ssl_client_auth_state = NULL;
+ }
+
/* We've been instructed to ignore the body. Drain whatever is present. */
if (handler->discard_body)
{
diff --git a/subversion/libsvn_subr/io.c b/subversion/libsvn_subr/io.c
index a1bc29c..c2bd576 100644
--- a/subversion/libsvn_subr/io.c
+++ b/subversion/libsvn_subr/io.c
@@ -2546,9 +2546,10 @@ stringbuf_from_aprfile(svn_stringbuf_t **result,
{
apr_finfo_t finfo = { 0 };
- /* In some cases we get size 0 and no error for non files,
- so we also check for the name. (= cached in apr_file_t) */
- if (! apr_file_info_get(&finfo, APR_FINFO_SIZE, file) && finfo.fname)
+ /* In some cases we get size 0 and no error for non files, so we
+ also check for the name. (= cached in apr_file_t) and for FIFOs */
+ if (! apr_file_info_get(&finfo, APR_FINFO_SIZE | APR_FINFO_TYPE, file)
+ && finfo.fname && finfo.filetype != APR_PIPE)
{
/* we've got the file length. Now, read it in one go. */
svn_boolean_t eof;
diff --git a/subversion/libsvn_subr/ssl_client_cert_pw_providers.c b/subversion/libsvn_subr/ssl_client_cert_pw_providers.c
index 1626750..2fcfc8e 100644
--- a/subversion/libsvn_subr/ssl_client_cert_pw_providers.c
+++ b/subversion/libsvn_subr/ssl_client_cert_pw_providers.c
@@ -36,7 +36,7 @@
#include "svn_private_config.h"
/*-----------------------------------------------------------------------*/
-/* File provider */
+/* File password provider */
/*-----------------------------------------------------------------------*/
/* Baton type for the ssl client cert passphrase provider. */
@@ -51,6 +51,13 @@ typedef struct ssl_client_cert_pw_file_provider_baton_t
apr_hash_t *plaintext_answers;
} ssl_client_cert_pw_file_provider_baton_t;
+/* The client cert password provider only deals with a password and
+ realm (the client cert filename), there is no username. The gnome
+ keyring backend based on libsecret requires a non-NULL username so
+ we have to invent one. An empty string is acceptable and doesn't
+ change the value stored by the kwallet backend. */
+#define DUMMY_USERNAME ""
+
/* This implements the svn_auth__password_get_t interface.
Set **PASSPHRASE to the plaintext passphrase retrieved from CREDS;
ignore other parameters. */
@@ -132,7 +139,8 @@ svn_auth__ssl_client_cert_pw_cache_get(void **credentials_p,
svn_boolean_t done;
SVN_ERR(passphrase_get(&done, &password, creds_hash, realmstring,
- NULL, parameters, non_interactive, pool));
+ DUMMY_USERNAME, parameters, non_interactive,
+ pool));
if (!done)
password = NULL;
}
@@ -293,7 +301,7 @@ svn_auth__ssl_client_cert_pw_cache_set(svn_boolean_t *saved,
if (may_save_passphrase)
{
SVN_ERR(passphrase_set(saved, creds_hash, realmstring,
- NULL, creds->password, parameters,
+ DUMMY_USERNAME, creds->password, parameters,
non_interactive, pool));
if (*saved && passtype)
diff --git a/subversion/libsvn_wc/wc-checks.h b/subversion/libsvn_wc/wc-checks.h
index bb9e549..0620bf6 100644
--- a/subversion/libsvn_wc/wc-checks.h
+++ b/subversion/libsvn_wc/wc-checks.h
@@ -1,4 +1,4 @@
-/* This file is automatically generated from wc-checks.sql and /opt/svnrm/tempdir/subversion-1.10.2/subversion/libsvn_wc/token-map.h.
+/* This file is automatically generated from wc-checks.sql and /opt/svnrm/tempdir/subversion-1.10.3/subversion/libsvn_wc/token-map.h.
* Do not edit this file -- edit the source and rerun gen-make.py */
#define STMT_VERIFICATION_TRIGGERS 0
diff --git a/subversion/libsvn_wc/wc-metadata.h b/subversion/libsvn_wc/wc-metadata.h
index 7c7c78b..c7a3a4a 100644
--- a/subversion/libsvn_wc/wc-metadata.h
+++ b/subversion/libsvn_wc/wc-metadata.h
@@ -1,4 +1,4 @@
-/* This file is automatically generated from wc-metadata.sql and /opt/svnrm/tempdir/subversion-1.10.2/subversion/libsvn_wc/token-map.h.
+/* This file is automatically generated from wc-metadata.sql and /opt/svnrm/tempdir/subversion-1.10.3/subversion/libsvn_wc/token-map.h.
* Do not edit this file -- edit the source and rerun gen-make.py */
#define STMT_CREATE_SCHEMA 0
diff --git a/subversion/mod_dav_svn/repos.c b/subversion/mod_dav_svn/repos.c
index 2cb8805..3d82fb5 100644
--- a/subversion/mod_dav_svn/repos.c
+++ b/subversion/mod_dav_svn/repos.c
@@ -2861,6 +2861,13 @@ open_stream(const dav_resource *resource,
"Resource body changes may only be made to "
"working resources (at this time).");
}
+ if (!resource->info->root.root)
+ {
+ return dav_svn__new_error(resource->pool, HTTP_METHOD_NOT_ALLOWED,
+ 0, 0,
+ "Resource body changes may only be made to "
+ "checked-out resources (at this time).");
+ }
}
/* ### TODO: Can we support range writes someday? */
diff --git a/subversion/po/de.po b/subversion/po/de.po
index 1586fa7..f394531 100644
--- a/subversion/po/de.po
+++ b/subversion/po/de.po
@@ -13142,8 +13142,8 @@ msgstr ""
" Unterschied zwischen der linken und der rechten Seite wird auf »trunk«\n"
" als Ziel angewandt.\n"
"\n"
-" Um die Zusammenführung zur Reintegratoin auszuführen, verwenden Sie\n"
-" eine Arbeitskopie des Entwicklungszweigs »feature« und führen Sie\n"
+" Um die Zusammenführung zur Reintegration auszuführen, verwenden Sie\n"
+" eine Arbeitskopie des Hauptzweigs »trunk« und führen Sie\n"
" dieses Kommando im obersten Verzeichnis aus:\n"
"\n"
" svn merge ^/feature\n"
diff --git a/subversion/po/subversion.pot b/subversion/po/subversion.pot
index 3a917c2..ede1c65 100644
--- a/subversion/po/subversion.pot
+++ b/subversion/po/subversion.pot
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: dev@subversion.apache.org\n"
-"POT-Creation-Date: 2018-07-14 20:30+0000\n"
+"POT-Creation-Date: 2018-10-05 15:37+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -861,7 +861,7 @@ msgstr ""
msgid "Repository has been moved"
msgstr ""
-#: ../include/svn_error_codes.h:1072 ../libsvn_ra_serf/util.c:937
+#: ../include/svn_error_codes.h:1072 ../libsvn_ra_serf/util.c:940
msgid "Connection timed out"
msgstr ""
@@ -1499,7 +1499,7 @@ msgstr ""
#: ../libsvn_client/export.c:1392 ../libsvn_client/import.c:861
#: ../libsvn_client/patch.c:3745 ../libsvn_client/relocate.c:155
#: ../libsvn_client/resolved.c:120 ../libsvn_client/revert.c:149
-#: ../libsvn_client/shelve.c:194 ../libsvn_client/status.c:368
+#: ../libsvn_client/shelve.c:196 ../libsvn_client/status.c:368
#: ../libsvn_client/switch.c:471 ../libsvn_client/update.c:749
#: ../libsvn_client/upgrade.c:111 ../svn/util.c:990 ../svnbench/util.c:76
#, c-format
@@ -1710,48 +1710,48 @@ msgstr ""
msgid "Standard properties can't be set explicitly as revision properties"
msgstr ""
-#: ../libsvn_client/conflicts.c:734 ../libsvn_client/conflicts.c:1095
-#: ../libsvn_client/conflicts.c:1688 ../libsvn_client/conflicts.c:4640
-#: ../libsvn_client/conflicts.c:5139 ../libsvn_client/conflicts.c:5161
-#: ../libsvn_client/conflicts.c:5212 ../libsvn_client/conflicts.c:5689
+#: ../libsvn_client/conflicts.c:734 ../libsvn_client/conflicts.c:1100
+#: ../libsvn_client/conflicts.c:1693 ../libsvn_client/conflicts.c:4630
+#: ../libsvn_client/conflicts.c:5129 ../libsvn_client/conflicts.c:5151
+#: ../libsvn_client/conflicts.c:5203 ../libsvn_client/conflicts.c:5676
msgid "unknown author"
msgstr ""
-#: ../libsvn_client/conflicts.c:1126
+#: ../libsvn_client/conflicts.c:1131
msgid "A file containing uncommitted changes was found in the working copy."
msgstr ""
-#: ../libsvn_client/conflicts.c:1129
+#: ../libsvn_client/conflicts.c:1134
msgid ""
"A file which differs from the corresponding file on the merge source branch "
"was found in the working copy."
msgstr ""
-#: ../libsvn_client/conflicts.c:1134
+#: ../libsvn_client/conflicts.c:1139
msgid "A file which already occupies this path was found in the working copy."
msgstr ""
-#: ../libsvn_client/conflicts.c:1138
+#: ../libsvn_client/conflicts.c:1143
msgid "An unversioned file was found in the working copy."
msgstr ""
-#: ../libsvn_client/conflicts.c:1142
+#: ../libsvn_client/conflicts.c:1147
msgid "A deleted file was found in the working copy."
msgstr ""
-#: ../libsvn_client/conflicts.c:1147
+#: ../libsvn_client/conflicts.c:1152
msgid "No such file was found in the working copy."
msgstr ""
#. ### display deleted revision
-#: ../libsvn_client/conflicts.c:1151
+#: ../libsvn_client/conflicts.c:1156
msgid ""
"No such file was found in the merge target working copy.\n"
"Perhaps the file has been deleted or moved away in the repository's history?"
msgstr ""
#. ### show more details about copies or replacements?
-#: ../libsvn_client/conflicts.c:1161
+#: ../libsvn_client/conflicts.c:1166
msgid ""
"A file scheduled to be added to the repository in the next commit was found "
"in the working copy."
@@ -1762,13 +1762,13 @@ msgstr ""
#. * This case cannot happen until we detect incoming
#. * moves, which we currently don't do.
#. ### find deleted/moved revision?
-#: ../libsvn_client/conflicts.c:1192 ../libsvn_client/conflicts.c:1224
+#: ../libsvn_client/conflicts.c:1197 ../libsvn_client/conflicts.c:1229
msgid ""
"The file in the working copy had been moved away at the time this conflict "
"was recorded."
msgstr ""
-#: ../libsvn_client/conflicts.c:1207 ../libsvn_client/conflicts.c:1240
+#: ../libsvn_client/conflicts.c:1212 ../libsvn_client/conflicts.c:1245
#, c-format
msgid ""
"The file in the working copy was moved away to\n"
@@ -1780,49 +1780,49 @@ msgstr ""
#. * This case cannot happen until we detect incoming
#. * moves, which we currently don't do.
#. ### find deleted/moved revision?
-#: ../libsvn_client/conflicts.c:1266 ../libsvn_client/conflicts.c:1298
+#: ../libsvn_client/conflicts.c:1271 ../libsvn_client/conflicts.c:1303
msgid ""
"A file had been moved here in the working copy at the time this conflict was "
"recorded."
msgstr ""
-#: ../libsvn_client/conflicts.c:1281 ../libsvn_client/conflicts.c:1314
+#: ../libsvn_client/conflicts.c:1286 ../libsvn_client/conflicts.c:1319
#, c-format
msgid ""
"A file was moved here in the working copy from\n"
"'%s'."
msgstr ""
-#: ../libsvn_client/conflicts.c:1350
+#: ../libsvn_client/conflicts.c:1355
msgid ""
"A directory containing uncommitted changes was found in the working copy."
msgstr ""
-#: ../libsvn_client/conflicts.c:1353
+#: ../libsvn_client/conflicts.c:1358
msgid ""
"A directory which differs from the corresponding directory on the merge "
"source branch was found in the working copy."
msgstr ""
-#: ../libsvn_client/conflicts.c:1358
+#: ../libsvn_client/conflicts.c:1363
msgid ""
"A directory which already occupies this path was found in the working copy."
msgstr ""
-#: ../libsvn_client/conflicts.c:1362
+#: ../libsvn_client/conflicts.c:1367
msgid "An unversioned directory was found in the working copy."
msgstr ""
-#: ../libsvn_client/conflicts.c:1366
+#: ../libsvn_client/conflicts.c:1371
msgid "A deleted directory was found in the working copy."
msgstr ""
-#: ../libsvn_client/conflicts.c:1372
+#: ../libsvn_client/conflicts.c:1377
msgid "No such directory was found in the working copy."
msgstr ""
#. ### display deleted revision
-#: ../libsvn_client/conflicts.c:1376
+#: ../libsvn_client/conflicts.c:1381
msgid ""
"No such directory was found in the merge target working copy.\n"
"Perhaps the directory has been deleted or moved away in the repository's "
@@ -1830,20 +1830,20 @@ msgid ""
msgstr ""
#. ### show more details about copies or replacements?
-#: ../libsvn_client/conflicts.c:1386
+#: ../libsvn_client/conflicts.c:1391
msgid ""
"A directory scheduled to be added to the repository in the next commit was "
"found in the working copy."
msgstr ""
#. The move no longer exists.
-#: ../libsvn_client/conflicts.c:1418
+#: ../libsvn_client/conflicts.c:1423
msgid ""
"The directory in the working copy had been moved away at the time this "
"conflict was recorded."
msgstr ""
-#: ../libsvn_client/conflicts.c:1433
+#: ../libsvn_client/conflicts.c:1438
#, c-format
msgid ""
"The directory in the working copy was moved away to\n"
@@ -1854,12 +1854,12 @@ msgstr ""
#. * This case cannot happen until we detect incoming
#. * moves, which we currently don't do.
#. ### find deleted/moved revision?
-#: ../libsvn_client/conflicts.c:1450
+#: ../libsvn_client/conflicts.c:1455
msgid ""
"The directory had been moved away at the time this conflict was recorded."
msgstr ""
-#: ../libsvn_client/conflicts.c:1466
+#: ../libsvn_client/conflicts.c:1471
#, c-format
msgid ""
"The directory was moved away to\n"
@@ -1871,489 +1871,489 @@ msgstr ""
#. * This case cannot happen until we detect incoming
#. * moves, which we currently don't do.
#. ### find deleted/moved revision?
-#: ../libsvn_client/conflicts.c:1492 ../libsvn_client/conflicts.c:1524
+#: ../libsvn_client/conflicts.c:1497 ../libsvn_client/conflicts.c:1529
msgid "A directory had been moved here at the time this conflict was recorded."
msgstr ""
-#: ../libsvn_client/conflicts.c:1507
+#: ../libsvn_client/conflicts.c:1512
#, c-format
msgid ""
"A directory was moved here from\n"
"'%s'."
msgstr ""
-#: ../libsvn_client/conflicts.c:1540
+#: ../libsvn_client/conflicts.c:1545
#, c-format
msgid ""
"A directory was moved here in the working copy from\n"
"'%s'."
msgstr ""
-#: ../libsvn_client/conflicts.c:2774
+#: ../libsvn_client/conflicts.c:2764
msgid "An item containing uncommitted changes was found in the working copy."
msgstr ""
-#: ../libsvn_client/conflicts.c:2778
+#: ../libsvn_client/conflicts.c:2768
msgid "An item which already occupies this path was found in the working copy."
msgstr ""
-#: ../libsvn_client/conflicts.c:2782
+#: ../libsvn_client/conflicts.c:2772
msgid "A deleted item was found in the working copy."
msgstr ""
-#: ../libsvn_client/conflicts.c:2787
+#: ../libsvn_client/conflicts.c:2777
msgid "No such file or directory was found in the working copy."
msgstr ""
#. ### display deleted revision
-#: ../libsvn_client/conflicts.c:2792
+#: ../libsvn_client/conflicts.c:2782
msgid ""
"No such file or directory was found in the merge target working copy.\n"
"The item may have been deleted or moved away in the repository's history."
msgstr ""
-#: ../libsvn_client/conflicts.c:2799
+#: ../libsvn_client/conflicts.c:2789
msgid "An unversioned item was found in the working copy."
msgstr ""
-#: ../libsvn_client/conflicts.c:2804
+#: ../libsvn_client/conflicts.c:2794
msgid ""
"An item scheduled to be added to the repository in the next commit was found "
"in the working copy."
msgstr ""
-#: ../libsvn_client/conflicts.c:2809
+#: ../libsvn_client/conflicts.c:2799
msgid ""
"The item in the working copy had been moved away at the time this conflict "
"was recorded."
msgstr ""
-#: ../libsvn_client/conflicts.c:2813
+#: ../libsvn_client/conflicts.c:2803
msgid ""
"An item had been moved here in the working copy at the time this conflict "
"was recorded."
msgstr ""
-#: ../libsvn_client/conflicts.c:2841
+#: ../libsvn_client/conflicts.c:2831
#, c-format
msgid ""
"%s\n"
"And then moved away to '^/%s' by %s in r%ld."
msgstr ""
-#: ../libsvn_client/conflicts.c:2906
+#: ../libsvn_client/conflicts.c:2896
msgid "No such file or directory was found in the merge target working copy.\n"
msgstr ""
-#: ../libsvn_client/conflicts.c:2915
+#: ../libsvn_client/conflicts.c:2905
#, c-format
msgid "%sThe file was moved to '^/%s' in r%ld by %s."
msgstr ""
-#: ../libsvn_client/conflicts.c:2921
+#: ../libsvn_client/conflicts.c:2911
#, c-format
msgid "%sThe directory was moved to '^/%s' in r%ld by %s."
msgstr ""
-#: ../libsvn_client/conflicts.c:2928
+#: ../libsvn_client/conflicts.c:2918
#, c-format
msgid "%sThe item was moved to '^/%s' in r%ld by %s."
msgstr ""
-#: ../libsvn_client/conflicts.c:2944
+#: ../libsvn_client/conflicts.c:2934
#, c-format
msgid "%sThe file '^/%s' was moved to '^/%s' in r%ld by %s."
msgstr ""
-#: ../libsvn_client/conflicts.c:2952
+#: ../libsvn_client/conflicts.c:2942
#, c-format
msgid "%sThe directory '^/%s' was moved to '^/%s' in r%ld by %s."
msgstr ""
-#: ../libsvn_client/conflicts.c:2960
+#: ../libsvn_client/conflicts.c:2950
#, c-format
msgid "%sThe item '^/%s' was moved to '^/%s' in r%ld by %s."
msgstr ""
-#: ../libsvn_client/conflicts.c:2974
+#: ../libsvn_client/conflicts.c:2964
#, c-format
msgid ""
"No such file or directory was found in the merge target working copy.\n"
"'^/%s' was deleted in r%ld by %s."
msgstr ""
-#: ../libsvn_client/conflicts.c:2998
+#: ../libsvn_client/conflicts.c:2988
msgid "An update operation tried to edit a file."
msgstr ""
-#: ../libsvn_client/conflicts.c:3000
+#: ../libsvn_client/conflicts.c:2990
msgid "An update operation tried to add a file."
msgstr ""
-#: ../libsvn_client/conflicts.c:3002
+#: ../libsvn_client/conflicts.c:2992
msgid "An update operation tried to delete or move a file."
msgstr ""
-#: ../libsvn_client/conflicts.c:3005
+#: ../libsvn_client/conflicts.c:2995
msgid "An update operation tried to replace a file."
msgstr ""
-#: ../libsvn_client/conflicts.c:3013
+#: ../libsvn_client/conflicts.c:3003
msgid "A switch operation tried to edit a file."
msgstr ""
-#: ../libsvn_client/conflicts.c:3015
+#: ../libsvn_client/conflicts.c:3005
msgid "A switch operation tried to add a file."
msgstr ""
-#: ../libsvn_client/conflicts.c:3017
+#: ../libsvn_client/conflicts.c:3007
msgid "A switch operation tried to delete or move a file."
msgstr ""
-#: ../libsvn_client/conflicts.c:3020
+#: ../libsvn_client/conflicts.c:3010
msgid "A switch operation tried to replace a file."
msgstr ""
-#: ../libsvn_client/conflicts.c:3028
+#: ../libsvn_client/conflicts.c:3018
msgid "A merge operation tried to edit a file."
msgstr ""
-#: ../libsvn_client/conflicts.c:3030
+#: ../libsvn_client/conflicts.c:3020
msgid "A merge operation tried to add a file."
msgstr ""
-#: ../libsvn_client/conflicts.c:3032
+#: ../libsvn_client/conflicts.c:3022
msgid "A merge operation tried to delete or move a file."
msgstr ""
-#: ../libsvn_client/conflicts.c:3035
+#: ../libsvn_client/conflicts.c:3025
msgid "A merge operation tried to replace a file."
msgstr ""
-#: ../libsvn_client/conflicts.c:3045
+#: ../libsvn_client/conflicts.c:3035
msgid "An update operation tried to change a directory."
msgstr ""
-#: ../libsvn_client/conflicts.c:3047
+#: ../libsvn_client/conflicts.c:3037
msgid "An update operation tried to add a directory."
msgstr ""
-#: ../libsvn_client/conflicts.c:3049
+#: ../libsvn_client/conflicts.c:3039
msgid "An update operation tried to delete or move a directory."
msgstr ""
-#: ../libsvn_client/conflicts.c:3052
+#: ../libsvn_client/conflicts.c:3042
msgid "An update operation tried to replace a directory."
msgstr ""
-#: ../libsvn_client/conflicts.c:3060
+#: ../libsvn_client/conflicts.c:3050
msgid "A switch operation tried to edit a directory."
msgstr ""
-#: ../libsvn_client/conflicts.c:3062
+#: ../libsvn_client/conflicts.c:3052
msgid "A switch operation tried to add a directory."
msgstr ""
-#: ../libsvn_client/conflicts.c:3064
+#: ../libsvn_client/conflicts.c:3054
msgid "A switch operation tried to delete or move a directory."
msgstr ""
-#: ../libsvn_client/conflicts.c:3067
+#: ../libsvn_client/conflicts.c:3057
msgid "A switch operation tried to replace a directory."
msgstr ""
-#: ../libsvn_client/conflicts.c:3075
+#: ../libsvn_client/conflicts.c:3065
msgid "A merge operation tried to edit a directory."
msgstr ""
-#: ../libsvn_client/conflicts.c:3077
+#: ../libsvn_client/conflicts.c:3067
msgid "A merge operation tried to add a directory."
msgstr ""
-#: ../libsvn_client/conflicts.c:3079
+#: ../libsvn_client/conflicts.c:3069
msgid "A merge operation tried to delete or move a directory."
msgstr ""
-#: ../libsvn_client/conflicts.c:3082
+#: ../libsvn_client/conflicts.c:3072
msgid "A merge operation tried to replace a directory."
msgstr ""
-#: ../libsvn_client/conflicts.c:3093
+#: ../libsvn_client/conflicts.c:3083
msgid "An update operation tried to edit an item."
msgstr ""
-#: ../libsvn_client/conflicts.c:3095
+#: ../libsvn_client/conflicts.c:3085
msgid "An update operation tried to add an item."
msgstr ""
-#: ../libsvn_client/conflicts.c:3097
+#: ../libsvn_client/conflicts.c:3087
msgid "An update operation tried to delete or move an item."
msgstr ""
-#: ../libsvn_client/conflicts.c:3100
+#: ../libsvn_client/conflicts.c:3090
msgid "An update operation tried to replace an item."
msgstr ""
-#: ../libsvn_client/conflicts.c:3108
+#: ../libsvn_client/conflicts.c:3098
msgid "A switch operation tried to edit an item."
msgstr ""
-#: ../libsvn_client/conflicts.c:3110
+#: ../libsvn_client/conflicts.c:3100
msgid "A switch operation tried to add an item."
msgstr ""
-#: ../libsvn_client/conflicts.c:3112
+#: ../libsvn_client/conflicts.c:3102
msgid "A switch operation tried to delete or move an item."
msgstr ""
-#: ../libsvn_client/conflicts.c:3115
+#: ../libsvn_client/conflicts.c:3105
msgid "A switch operation tried to replace an item."
msgstr ""
-#: ../libsvn_client/conflicts.c:3123
+#: ../libsvn_client/conflicts.c:3113
msgid "A merge operation tried to edit an item."
msgstr ""
-#: ../libsvn_client/conflicts.c:3125
+#: ../libsvn_client/conflicts.c:3115
msgid "A merge operation tried to add an item."
msgstr ""
-#: ../libsvn_client/conflicts.c:3127
+#: ../libsvn_client/conflicts.c:3117
msgid "A merge operation tried to delete or move an item."
msgstr ""
-#: ../libsvn_client/conflicts.c:3130
+#: ../libsvn_client/conflicts.c:3120
msgid "A merge operation tried to replace an item."
msgstr ""
-#: ../libsvn_client/conflicts.c:3146 ../svn/cl-conflicts.c:212
+#: ../libsvn_client/conflicts.c:3136 ../svn/cl-conflicts.c:212
msgid "upon update"
msgstr ""
-#: ../libsvn_client/conflicts.c:3147 ../svn/cl-conflicts.c:213
+#: ../libsvn_client/conflicts.c:3137 ../svn/cl-conflicts.c:213
msgid "upon switch"
msgstr ""
-#: ../libsvn_client/conflicts.c:3148 ../svn/cl-conflicts.c:214
+#: ../libsvn_client/conflicts.c:3138 ../svn/cl-conflicts.c:214
msgid "upon merge"
msgstr ""
-#: ../libsvn_client/conflicts.c:3149 ../svn/cl-conflicts.c:215
+#: ../libsvn_client/conflicts.c:3139 ../svn/cl-conflicts.c:215
msgid "upon none"
msgstr ""
-#: ../libsvn_client/conflicts.c:3168 ../svn/cl-conflicts.c:127
+#: ../libsvn_client/conflicts.c:3158 ../svn/cl-conflicts.c:127
#: ../svn/cl-conflicts.c:234
msgid "local edit"
msgstr ""
-#: ../libsvn_client/conflicts.c:3171 ../svn/cl-conflicts.c:140
+#: ../libsvn_client/conflicts.c:3161 ../svn/cl-conflicts.c:140
#: ../svn/cl-conflicts.c:237
msgid "local add"
msgstr ""
-#: ../libsvn_client/conflicts.c:3174 ../svn/cl-conflicts.c:131
+#: ../libsvn_client/conflicts.c:3164 ../svn/cl-conflicts.c:131
#: ../svn/cl-conflicts.c:240
msgid "local delete"
msgstr ""
-#: ../libsvn_client/conflicts.c:3177 ../svn/cl-conflicts.c:129
+#: ../libsvn_client/conflicts.c:3167 ../svn/cl-conflicts.c:129
#: ../svn/cl-conflicts.c:243
msgid "local obstruction"
msgstr ""
-#: ../libsvn_client/conflicts.c:3181 ../svn/cl-conflicts.c:247
+#: ../libsvn_client/conflicts.c:3171 ../svn/cl-conflicts.c:247
#, c-format
msgid "local %s"
msgstr ""
-#: ../libsvn_client/conflicts.c:3190 ../svn/cl-conflicts.c:192
+#: ../libsvn_client/conflicts.c:3180 ../svn/cl-conflicts.c:192
#: ../svn/cl-conflicts.c:256
msgid "incoming edit"
msgstr ""
-#: ../libsvn_client/conflicts.c:3193 ../svn/cl-conflicts.c:194
+#: ../libsvn_client/conflicts.c:3183 ../svn/cl-conflicts.c:194
#: ../svn/cl-conflicts.c:259
msgid "incoming add"
msgstr ""
-#: ../libsvn_client/conflicts.c:3196 ../svn/cl-conflicts.c:262
+#: ../libsvn_client/conflicts.c:3186 ../svn/cl-conflicts.c:262
msgid "incoming delete"
msgstr ""
-#: ../libsvn_client/conflicts.c:3200 ../svn/cl-conflicts.c:266
+#: ../libsvn_client/conflicts.c:3190 ../svn/cl-conflicts.c:266
#, c-format
msgid "incoming %s"
msgstr ""
-#: ../libsvn_client/conflicts.c:3208 ../svn/cl-conflicts.c:273
+#: ../libsvn_client/conflicts.c:3198 ../svn/cl-conflicts.c:273
#: ../svn/cl-conflicts.c:326
#, c-format
msgid "%s, %s %s"
msgstr ""
-#: ../libsvn_client/conflicts.c:3267
+#: ../libsvn_client/conflicts.c:3257
#, c-format
msgid "incoming %s %s"
msgstr ""
-#: ../libsvn_client/conflicts.c:3370
+#: ../libsvn_client/conflicts.c:3360
#, c-format
msgid ""
"Directory updated from r%ld to r%ld was replaced with a file by %s in r%ld."
msgstr ""
-#: ../libsvn_client/conflicts.c:3381 ../libsvn_client/conflicts.c:3461
-#: ../libsvn_client/conflicts.c:3715 ../libsvn_client/conflicts.c:3802
-#: ../libsvn_client/conflicts.c:4102 ../libsvn_client/conflicts.c:4170
+#: ../libsvn_client/conflicts.c:3371 ../libsvn_client/conflicts.c:3451
+#: ../libsvn_client/conflicts.c:3705 ../libsvn_client/conflicts.c:3792
+#: ../libsvn_client/conflicts.c:4092 ../libsvn_client/conflicts.c:4160
#, c-format
msgid ""
"%s\n"
"The replaced directory was moved to '^/%s'."
msgstr ""
-#: ../libsvn_client/conflicts.c:3396
+#: ../libsvn_client/conflicts.c:3386
#, c-format
msgid ""
"File updated from r%ld to r%ld was replaced with a file from another line of "
"history by %s in r%ld."
msgstr ""
-#: ../libsvn_client/conflicts.c:3408 ../libsvn_client/conflicts.c:3487
-#: ../libsvn_client/conflicts.c:3744 ../libsvn_client/conflicts.c:3830
-#: ../libsvn_client/conflicts.c:4131 ../libsvn_client/conflicts.c:4198
+#: ../libsvn_client/conflicts.c:3398 ../libsvn_client/conflicts.c:3477
+#: ../libsvn_client/conflicts.c:3734 ../libsvn_client/conflicts.c:3820
+#: ../libsvn_client/conflicts.c:4121 ../libsvn_client/conflicts.c:4188
#, c-format
msgid ""
"%s\n"
"The replaced file was moved to '^/%s'."
msgstr ""
-#: ../libsvn_client/conflicts.c:3422
+#: ../libsvn_client/conflicts.c:3412
#, c-format
msgid "Item updated from r%ld to r%ld was replaced with a file by %s in r%ld."
msgstr ""
-#: ../libsvn_client/conflicts.c:3432 ../libsvn_client/conflicts.c:3511
-#: ../libsvn_client/conflicts.c:3771 ../libsvn_client/conflicts.c:3857
-#: ../libsvn_client/conflicts.c:4225
+#: ../libsvn_client/conflicts.c:3422 ../libsvn_client/conflicts.c:3501
+#: ../libsvn_client/conflicts.c:3761 ../libsvn_client/conflicts.c:3847
+#: ../libsvn_client/conflicts.c:4215
#, c-format
msgid ""
"%s\n"
"The replaced item was moved to '^/%s'."
msgstr ""
-#: ../libsvn_client/conflicts.c:3449
+#: ../libsvn_client/conflicts.c:3439
#, c-format
msgid ""
"Directory updated from r%ld to r%ld was replaced with a directory from "
"another line of history by %s in r%ld."
msgstr ""
-#: ../libsvn_client/conflicts.c:3476
+#: ../libsvn_client/conflicts.c:3466
#, c-format
msgid ""
"File updated from r%ld to r%ld was replaced with a directory by %s in r%ld."
msgstr ""
-#: ../libsvn_client/conflicts.c:3501
+#: ../libsvn_client/conflicts.c:3491
#, c-format
msgid "Item updated from r%ld to r%ld was replaced by %s in r%ld."
msgstr ""
-#: ../libsvn_client/conflicts.c:3534
+#: ../libsvn_client/conflicts.c:3524
#, c-format
msgid "Directory updated from r%ld to r%ld was moved to '^/%s' by %s in r%ld."
msgstr ""
-#: ../libsvn_client/conflicts.c:3546
+#: ../libsvn_client/conflicts.c:3536
#, c-format
msgid "Directory updated from r%ld to r%ld was deleted by %s in r%ld."
msgstr ""
-#: ../libsvn_client/conflicts.c:3562
+#: ../libsvn_client/conflicts.c:3552
#, c-format
msgid "File updated from r%ld to r%ld was moved to '^/%s' by %s in r%ld."
msgstr ""
-#: ../libsvn_client/conflicts.c:3573
+#: ../libsvn_client/conflicts.c:3563
#, c-format
msgid "File updated from r%ld to r%ld was deleted by %s in r%ld."
msgstr ""
-#: ../libsvn_client/conflicts.c:3587
+#: ../libsvn_client/conflicts.c:3577
#, c-format
msgid "Item updated from r%ld to r%ld was moved to '^/%s' by %s in r%ld."
msgstr ""
-#: ../libsvn_client/conflicts.c:3598
+#: ../libsvn_client/conflicts.c:3588
#, c-format
msgid "Item updated from r%ld to r%ld was deleted by %s in r%ld."
msgstr ""
-#: ../libsvn_client/conflicts.c:3618
+#: ../libsvn_client/conflicts.c:3608
#, c-format
msgid ""
"Directory updated backwards from r%ld to r%ld was a file before the "
"replacement made by %s in r%ld."
msgstr ""
-#: ../libsvn_client/conflicts.c:3625
+#: ../libsvn_client/conflicts.c:3615
#, c-format
msgid ""
"File updated backwards from r%ld to r%ld was a file from another line of "
"history before the replacement made by %s in r%ld."
msgstr ""
-#: ../libsvn_client/conflicts.c:3632
+#: ../libsvn_client/conflicts.c:3622
#, c-format
msgid ""
"Item updated backwards from r%ld to r%ld was replaced with a file by %s in r"
"%ld."
msgstr ""
-#: ../libsvn_client/conflicts.c:3641
+#: ../libsvn_client/conflicts.c:3631
#, c-format
msgid ""
"Directory updated backwards from r%ld to r%ld was a directory from another "
"line of history before the replacement made by %s in r%ld."
msgstr ""
-#: ../libsvn_client/conflicts.c:3649
+#: ../libsvn_client/conflicts.c:3639
#, c-format
msgid ""
"File updated backwards from r%ld to r%ld was a directory before the "
"replacement made by %s in r%ld."
msgstr ""
-#: ../libsvn_client/conflicts.c:3655
+#: ../libsvn_client/conflicts.c:3645
#, c-format
msgid ""
"Item updated backwards from r%ld to r%ld was replaced with a directory by %s "
"in r%ld."
msgstr ""
-#: ../libsvn_client/conflicts.c:3664
+#: ../libsvn_client/conflicts.c:3654
#, c-format
msgid ""
"Directory updated backwards from r%ld to r%ld did not exist before it was "
"added by %s in r%ld."
msgstr ""
-#: ../libsvn_client/conflicts.c:3671
+#: ../libsvn_client/conflicts.c:3661
#, c-format
msgid ""
"File updated backwards from r%ld to r%ld did not exist before it was added "
"by %s in r%ld."
msgstr ""
-#: ../libsvn_client/conflicts.c:3677
+#: ../libsvn_client/conflicts.c:3667
#, c-format
msgid ""
"Item updated backwards from r%ld to r%ld did not exist before it was added "
"by %s in r%ld."
msgstr ""
-#: ../libsvn_client/conflicts.c:3702
+#: ../libsvn_client/conflicts.c:3692
#, c-format
msgid ""
"Directory switched from\n"
@@ -2363,7 +2363,7 @@ msgid ""
"was replaced with a file by %s in r%ld."
msgstr ""
-#: ../libsvn_client/conflicts.c:3730
+#: ../libsvn_client/conflicts.c:3720
#, c-format
msgid ""
"File switched from\n"
@@ -2373,7 +2373,7 @@ msgid ""
"was replaced with a file from another line of history by %s in r%ld."
msgstr ""
-#: ../libsvn_client/conflicts.c:3758 ../libsvn_client/conflicts.c:4001
+#: ../libsvn_client/conflicts.c:3748 ../libsvn_client/conflicts.c:3991
#, c-format
msgid ""
"Item switched from\n"
@@ -2383,7 +2383,7 @@ msgid ""
"was replaced with a file by %s in r%ld."
msgstr ""
-#: ../libsvn_client/conflicts.c:3788
+#: ../libsvn_client/conflicts.c:3778
#, c-format
msgid ""
"Directory switched from\n"
@@ -2393,7 +2393,7 @@ msgid ""
"was replaced with a directory from another line of history by %s in r%ld."
msgstr ""
-#: ../libsvn_client/conflicts.c:3817
+#: ../libsvn_client/conflicts.c:3807
#, c-format
msgid ""
"File switched from\n"
@@ -2403,7 +2403,7 @@ msgid ""
"was replaced with a directory by %s in r%ld."
msgstr ""
-#: ../libsvn_client/conflicts.c:3844 ../libsvn_client/conflicts.c:4031
+#: ../libsvn_client/conflicts.c:3834 ../libsvn_client/conflicts.c:4021
#, c-format
msgid ""
"Item switched from\n"
@@ -2413,7 +2413,7 @@ msgid ""
"was replaced with a directory by %s in r%ld."
msgstr ""
-#: ../libsvn_client/conflicts.c:3880
+#: ../libsvn_client/conflicts.c:3870
#, c-format
msgid ""
"Directory switched from\n"
@@ -2423,7 +2423,7 @@ msgid ""
"was moved to '^/%s' by %s in r%ld."
msgstr ""
-#: ../libsvn_client/conflicts.c:3894
+#: ../libsvn_client/conflicts.c:3884
#, c-format
msgid ""
"Directory switched from\n"
@@ -2433,7 +2433,7 @@ msgid ""
"was deleted by %s in r%ld."
msgstr ""
-#: ../libsvn_client/conflicts.c:3912
+#: ../libsvn_client/conflicts.c:3902
#, c-format
msgid ""
"File switched from\n"
@@ -2443,7 +2443,7 @@ msgid ""
"was moved to '^/%s' by %s in r%ld."
msgstr ""
-#: ../libsvn_client/conflicts.c:3926
+#: ../libsvn_client/conflicts.c:3916
#, c-format
msgid ""
"File switched from\n"
@@ -2453,7 +2453,7 @@ msgid ""
"was deleted by %s in r%ld."
msgstr ""
-#: ../libsvn_client/conflicts.c:3943
+#: ../libsvn_client/conflicts.c:3933
#, c-format
msgid ""
"Item switched from\n"
@@ -2463,7 +2463,7 @@ msgid ""
"was moved to '^/%s' by %s in r%ld."
msgstr ""
-#: ../libsvn_client/conflicts.c:3957
+#: ../libsvn_client/conflicts.c:3947
#, c-format
msgid ""
"Item switched from\n"
@@ -2473,7 +2473,7 @@ msgid ""
"was deleted by %s in r%ld."
msgstr ""
-#: ../libsvn_client/conflicts.c:3982 ../libsvn_client/conflicts.c:4022
+#: ../libsvn_client/conflicts.c:3972 ../libsvn_client/conflicts.c:4012
#, c-format
msgid ""
"Directory switched from\n"
@@ -2483,7 +2483,7 @@ msgid ""
"was a file before the replacement made by %s in r%ld."
msgstr ""
-#: ../libsvn_client/conflicts.c:3992
+#: ../libsvn_client/conflicts.c:3982
#, c-format
msgid ""
"File switched from\n"
@@ -2494,7 +2494,7 @@ msgid ""
"r%ld."
msgstr ""
-#: ../libsvn_client/conflicts.c:4012
+#: ../libsvn_client/conflicts.c:4002
#, c-format
msgid ""
"Directory switched from\n"
@@ -2505,7 +2505,7 @@ msgid ""
"%s in r%ld."
msgstr ""
-#: ../libsvn_client/conflicts.c:4042
+#: ../libsvn_client/conflicts.c:4032
#, c-format
msgid ""
"Directory switched from\n"
@@ -2515,7 +2515,7 @@ msgid ""
"did not exist before it was added by %s in r%ld."
msgstr ""
-#: ../libsvn_client/conflicts.c:4052
+#: ../libsvn_client/conflicts.c:4042
#, c-format
msgid ""
"File switched from\n"
@@ -2525,7 +2525,7 @@ msgid ""
"did not exist before it was added by %s in r%ld."
msgstr ""
-#: ../libsvn_client/conflicts.c:4061
+#: ../libsvn_client/conflicts.c:4051
#, c-format
msgid ""
"Item switched from\n"
@@ -2535,7 +2535,7 @@ msgid ""
"did not exist before it was added by %s in r%ld."
msgstr ""
-#: ../libsvn_client/conflicts.c:4089
+#: ../libsvn_client/conflicts.c:4079
#, c-format
msgid ""
"Directory merged from\n"
@@ -2545,7 +2545,7 @@ msgid ""
"was replaced with a file by %s in r%ld."
msgstr ""
-#: ../libsvn_client/conflicts.c:4117
+#: ../libsvn_client/conflicts.c:4107
#, c-format
msgid ""
"File merged from\n"
@@ -2555,7 +2555,7 @@ msgid ""
"was replaced with a file from another line of history by %s in r%ld."
msgstr ""
-#: ../libsvn_client/conflicts.c:4143
+#: ../libsvn_client/conflicts.c:4133
#, c-format
msgid ""
"Item merged from\n"
@@ -2565,7 +2565,7 @@ msgid ""
"was replaced with a file by %s in r%ld."
msgstr ""
-#: ../libsvn_client/conflicts.c:4156
+#: ../libsvn_client/conflicts.c:4146
#, c-format
msgid ""
"Directory merged from\n"
@@ -2575,7 +2575,7 @@ msgid ""
"was replaced with a directory from another line of history by %s in r%ld."
msgstr ""
-#: ../libsvn_client/conflicts.c:4185
+#: ../libsvn_client/conflicts.c:4175
#, c-format
msgid ""
"File merged from\n"
@@ -2585,7 +2585,7 @@ msgid ""
"was replaced with a directory by %s in r%ld."
msgstr ""
-#: ../libsvn_client/conflicts.c:4212
+#: ../libsvn_client/conflicts.c:4202
#, c-format
msgid ""
"Item merged from\n"
@@ -2595,7 +2595,7 @@ msgid ""
"was replaced with a directory by %s in r%ld."
msgstr ""
-#: ../libsvn_client/conflicts.c:4248
+#: ../libsvn_client/conflicts.c:4238
#, c-format
msgid ""
"Directory merged from\n"
@@ -2605,7 +2605,7 @@ msgid ""
"was moved to '^/%s' by %s in r%ld."
msgstr ""
-#: ../libsvn_client/conflicts.c:4262
+#: ../libsvn_client/conflicts.c:4252
#, c-format
msgid ""
"Directory merged from\n"
@@ -2615,7 +2615,7 @@ msgid ""
"was deleted by %s in r%ld."
msgstr ""
-#: ../libsvn_client/conflicts.c:4280
+#: ../libsvn_client/conflicts.c:4270
#, c-format
msgid ""
"File merged from\n"
@@ -2625,7 +2625,7 @@ msgid ""
"was moved to '^/%s' by %s in r%ld."
msgstr ""
-#: ../libsvn_client/conflicts.c:4294
+#: ../libsvn_client/conflicts.c:4284
#, c-format
msgid ""
"File merged from\n"
@@ -2635,7 +2635,7 @@ msgid ""
"was deleted by %s in r%ld."
msgstr ""
-#: ../libsvn_client/conflicts.c:4311
+#: ../libsvn_client/conflicts.c:4301
#, c-format
msgid ""
"Item merged from\n"
@@ -2645,7 +2645,7 @@ msgid ""
"was moved to '^/%s' by %s in r%ld."
msgstr ""
-#: ../libsvn_client/conflicts.c:4325
+#: ../libsvn_client/conflicts.c:4315
#, c-format
msgid ""
"Item merged from\n"
@@ -2655,7 +2655,7 @@ msgid ""
"was deleted by %s in r%ld."
msgstr ""
-#: ../libsvn_client/conflicts.c:4350 ../libsvn_client/conflicts.c:4389
+#: ../libsvn_client/conflicts.c:4340 ../libsvn_client/conflicts.c:4379
#, c-format
msgid ""
"Directory reverse-merged from\n"
@@ -2663,7 +2663,7 @@ msgid ""
"to ^/%s@%ld was a file before the replacement made by %s in r%ld."
msgstr ""
-#: ../libsvn_client/conflicts.c:4359
+#: ../libsvn_client/conflicts.c:4349
#, c-format
msgid ""
"File reverse-merged from\n"
@@ -2674,7 +2674,7 @@ msgid ""
"r%ld."
msgstr ""
-#: ../libsvn_client/conflicts.c:4368
+#: ../libsvn_client/conflicts.c:4358
#, c-format
msgid ""
"Item reverse-merged from\n"
@@ -2684,7 +2684,7 @@ msgid ""
"was replaced with a file by %s in r%ld."
msgstr ""
-#: ../libsvn_client/conflicts.c:4379
+#: ../libsvn_client/conflicts.c:4369
#, c-format
msgid ""
"Directory reverse-merged from\n"
@@ -2693,7 +2693,7 @@ msgid ""
"replacement made by %s in r%ld."
msgstr ""
-#: ../libsvn_client/conflicts.c:4397
+#: ../libsvn_client/conflicts.c:4387
#, c-format
msgid ""
"Item reverse-merged from\n"
@@ -2703,7 +2703,7 @@ msgid ""
"was replaced with a directory by %s in r%ld."
msgstr ""
-#: ../libsvn_client/conflicts.c:4408
+#: ../libsvn_client/conflicts.c:4398
#, c-format
msgid ""
"Directory reverse-merged from\n"
@@ -2711,7 +2711,7 @@ msgid ""
"to ^/%s@%ld did not exist before it was added by %s in r%ld."
msgstr ""
-#: ../libsvn_client/conflicts.c:4417
+#: ../libsvn_client/conflicts.c:4407
#, c-format
msgid ""
"File reverse-merged from\n"
@@ -2721,7 +2721,7 @@ msgid ""
"did not exist before it was added by %s in r%ld."
msgstr ""
-#: ../libsvn_client/conflicts.c:4426
+#: ../libsvn_client/conflicts.c:4416
#, c-format
msgid ""
"Item reverse-merged from\n"
@@ -2731,62 +2731,62 @@ msgid ""
"did not exist before it was added by %s in r%ld."
msgstr ""
-#: ../libsvn_client/conflicts.c:5278
+#: ../libsvn_client/conflicts.c:5265
#, c-format
msgid ""
"A new directory appeared during update to r%ld; it was added by %s in r%ld "
"and later deleted by %s in r%ld."
msgstr ""
-#: ../libsvn_client/conflicts.c:5285
+#: ../libsvn_client/conflicts.c:5272
#, c-format
msgid ""
"A new directory appeared during update to r%ld; it was added by %s in r%ld."
msgstr ""
-#: ../libsvn_client/conflicts.c:5290
+#: ../libsvn_client/conflicts.c:5277
#, c-format
msgid ""
"A new directory appeared during update to r%ld; it was deleted by %s in r%ld."
msgstr ""
-#: ../libsvn_client/conflicts.c:5300
+#: ../libsvn_client/conflicts.c:5287
#, c-format
msgid ""
"A new file appeared during update to r%ld; it was added by %s in r%ld and "
"later deleted by %s in r%ld."
msgstr ""
-#: ../libsvn_client/conflicts.c:5307
+#: ../libsvn_client/conflicts.c:5294
#, c-format
msgid "A new file appeared during update to r%ld; it was added by %s in r%ld."
msgstr ""
-#: ../libsvn_client/conflicts.c:5312
+#: ../libsvn_client/conflicts.c:5299
#, c-format
msgid ""
"A new file appeared during update to r%ld; it was deleted by %s in r%ld."
msgstr ""
-#: ../libsvn_client/conflicts.c:5321
+#: ../libsvn_client/conflicts.c:5308
#, c-format
msgid ""
"A new item appeared during update to r%ld; it was added by %s in r%ld and "
"later deleted by %s in r%ld."
msgstr ""
-#: ../libsvn_client/conflicts.c:5328
+#: ../libsvn_client/conflicts.c:5315
#, c-format
msgid "A new item appeared during update to r%ld; it was added by %s in r%ld."
msgstr ""
-#: ../libsvn_client/conflicts.c:5333
+#: ../libsvn_client/conflicts.c:5320
#, c-format
msgid ""
"A new item appeared during update to r%ld; it was deleted by %s in r%ld."
msgstr ""
-#: ../libsvn_client/conflicts.c:5352
+#: ../libsvn_client/conflicts.c:5339
#, c-format
msgid ""
"A new directory appeared during switch to\n"
@@ -2794,7 +2794,7 @@ msgid ""
"It was added by %s in r%ld and later deleted by %s in r%ld."
msgstr ""
-#: ../libsvn_client/conflicts.c:5360
+#: ../libsvn_client/conflicts.c:5347
#, c-format
msgid ""
"A new directory appeared during switch to\n"
@@ -2802,7 +2802,7 @@ msgid ""
"It was added by %s in r%ld."
msgstr ""
-#: ../libsvn_client/conflicts.c:5366
+#: ../libsvn_client/conflicts.c:5353
#, c-format
msgid ""
"A new directory appeared during switch to\n"
@@ -2810,7 +2810,7 @@ msgid ""
"It was deleted by %s in r%ld."
msgstr ""
-#: ../libsvn_client/conflicts.c:5377
+#: ../libsvn_client/conflicts.c:5364
#, c-format
msgid ""
"A new file appeared during switch to\n"
@@ -2818,7 +2818,7 @@ msgid ""
"It was added by %s in r%ld and later deleted by %s in r%ld."
msgstr ""
-#: ../libsvn_client/conflicts.c:5385
+#: ../libsvn_client/conflicts.c:5372
#, c-format
msgid ""
"A new file appeared during switch to\n"
@@ -2826,7 +2826,7 @@ msgid ""
"It was added by %s in r%ld."
msgstr ""
-#: ../libsvn_client/conflicts.c:5392
+#: ../libsvn_client/conflicts.c:5379
#, c-format
msgid ""
"A new file appeared during switch to\n"
@@ -2834,7 +2834,7 @@ msgid ""
"It was deleted by %s in r%ld."
msgstr ""
-#: ../libsvn_client/conflicts.c:5403
+#: ../libsvn_client/conflicts.c:5390
#, c-format
msgid ""
"A new item appeared during switch to\n"
@@ -2842,7 +2842,7 @@ msgid ""
"It was added by %s in r%ld and later deleted by %s in r%ld."
msgstr ""
-#: ../libsvn_client/conflicts.c:5411
+#: ../libsvn_client/conflicts.c:5398
#, c-format
msgid ""
"A new item appeared during switch to\n"
@@ -2850,7 +2850,7 @@ msgid ""
"It was added by %s in r%ld."
msgstr ""
-#: ../libsvn_client/conflicts.c:5418
+#: ../libsvn_client/conflicts.c:5405
#, c-format
msgid ""
"A new item appeared during switch to\n"
@@ -2858,7 +2858,7 @@ msgid ""
"It was deleted by %s in r%ld."
msgstr ""
-#: ../libsvn_client/conflicts.c:5439
+#: ../libsvn_client/conflicts.c:5426
#, c-format
msgid ""
"A new directory appeared during merge of\n"
@@ -2866,7 +2866,7 @@ msgid ""
"It was added by %s in r%ld."
msgstr ""
-#: ../libsvn_client/conflicts.c:5445
+#: ../libsvn_client/conflicts.c:5432
#, c-format
msgid ""
"A new directory appeared during merge of\n"
@@ -2874,7 +2874,7 @@ msgid ""
"It was added by %s in r%ld."
msgstr ""
-#: ../libsvn_client/conflicts.c:5455
+#: ../libsvn_client/conflicts.c:5442
#, c-format
msgid ""
"A new file appeared during merge of\n"
@@ -2882,7 +2882,7 @@ msgid ""
"It was added by %s in r%ld."
msgstr ""
-#: ../libsvn_client/conflicts.c:5461
+#: ../libsvn_client/conflicts.c:5448
#, c-format
msgid ""
"A new file appeared during merge of\n"
@@ -2890,7 +2890,7 @@ msgid ""
"It was added by %s in r%ld."
msgstr ""
-#: ../libsvn_client/conflicts.c:5470
+#: ../libsvn_client/conflicts.c:5457
#, c-format
msgid ""
"A new item appeared during merge of\n"
@@ -2898,7 +2898,7 @@ msgid ""
"It was added by %s in r%ld."
msgstr ""
-#: ../libsvn_client/conflicts.c:5476
+#: ../libsvn_client/conflicts.c:5463
#, c-format
msgid ""
"A new item appeared during merge of\n"
@@ -2906,7 +2906,7 @@ msgid ""
"It was added by %s in r%ld."
msgstr ""
-#: ../libsvn_client/conflicts.c:5496
+#: ../libsvn_client/conflicts.c:5483
#, c-format
msgid ""
"A new directory appeared during reverse-merge of\n"
@@ -2914,7 +2914,7 @@ msgid ""
"It was deleted by %s in r%ld."
msgstr ""
-#: ../libsvn_client/conflicts.c:5503
+#: ../libsvn_client/conflicts.c:5490
#, c-format
msgid ""
"A new directory appeared during reverse-merge of\n"
@@ -2922,7 +2922,7 @@ msgid ""
"It was deleted by %s in r%ld."
msgstr ""
-#: ../libsvn_client/conflicts.c:5515
+#: ../libsvn_client/conflicts.c:5502
#, c-format
msgid ""
"A new file appeared during reverse-merge of\n"
@@ -2930,7 +2930,7 @@ msgid ""
"It was deleted by %s in r%ld."
msgstr ""
-#: ../libsvn_client/conflicts.c:5522
+#: ../libsvn_client/conflicts.c:5509
#, c-format
msgid ""
"A new file appeared during reverse-merge of\n"
@@ -2938,7 +2938,7 @@ msgid ""
"It was deleted by %s in r%ld."
msgstr ""
-#: ../libsvn_client/conflicts.c:5532
+#: ../libsvn_client/conflicts.c:5519
#, c-format
msgid ""
"A new item appeared during reverse-merge of\n"
@@ -2946,7 +2946,7 @@ msgid ""
"It was deleted by %s in r%ld."
msgstr ""
-#: ../libsvn_client/conflicts.c:5539
+#: ../libsvn_client/conflicts.c:5526
#, c-format
msgid ""
"A new item appeared during reverse-merge of\n"
@@ -2954,48 +2954,48 @@ msgid ""
"It was deleted by %s in r%ld."
msgstr ""
-#: ../libsvn_client/conflicts.c:5850
+#: ../libsvn_client/conflicts.c:5840
#, c-format
msgid ""
"Changes destined for a directory arrived via the following revisions during "
"update from r%ld to r%ld."
msgstr ""
-#: ../libsvn_client/conflicts.c:5856
+#: ../libsvn_client/conflicts.c:5846
#, c-format
msgid ""
"Changes destined for a file arrived via the following revisions during "
"update from r%ld to r%ld"
msgstr ""
-#: ../libsvn_client/conflicts.c:5861
+#: ../libsvn_client/conflicts.c:5851
#, c-format
msgid ""
"Changes from the following revisions arrived during update from r%ld to r%ld"
msgstr ""
-#: ../libsvn_client/conflicts.c:5869
+#: ../libsvn_client/conflicts.c:5859
#, c-format
msgid ""
"Changes destined for a directory arrived via the following revisions during "
"backwards update from r%ld to r%ld"
msgstr ""
-#: ../libsvn_client/conflicts.c:5876
+#: ../libsvn_client/conflicts.c:5866
#, c-format
msgid ""
"Changes destined for a file arrived via the following revisions during "
"backwards update from r%ld to r%ld"
msgstr ""
-#: ../libsvn_client/conflicts.c:5882
+#: ../libsvn_client/conflicts.c:5872
#, c-format
msgid ""
"Changes from the following revisions arrived during backwards update from r"
"%ld to r%ld"
msgstr ""
-#: ../libsvn_client/conflicts.c:5896 ../libsvn_client/conflicts.c:5903
+#: ../libsvn_client/conflicts.c:5886 ../libsvn_client/conflicts.c:5893
#, c-format
msgid ""
"Changes destined for a directory arrived via the following revisions during "
@@ -3003,48 +3003,48 @@ msgid ""
"'^/%s@r%ld'"
msgstr ""
-#: ../libsvn_client/conflicts.c:5909
+#: ../libsvn_client/conflicts.c:5899
#, c-format
msgid ""
"Changes from the following revisions arrived during switch to\n"
"'^/%s@r%ld'"
msgstr ""
-#: ../libsvn_client/conflicts.c:5952 ../libsvn_client/conflicts.c:5966
-#: ../libsvn_client/conflicts.c:5972
+#: ../libsvn_client/conflicts.c:5942 ../libsvn_client/conflicts.c:5956
+#: ../libsvn_client/conflicts.c:5962
#, c-format
msgid "%s r%ld by %s%s"
msgstr ""
-#: ../libsvn_client/conflicts.c:5962
+#: ../libsvn_client/conflicts.c:5952
#, c-format
msgid ""
"%s\n"
" [%d revisions omitted for brevity],\n"
msgstr ""
-#: ../libsvn_client/conflicts.c:6031
+#: ../libsvn_client/conflicts.c:6021
#, c-format
msgid ""
"Changes destined for a directory arrived during merge of\n"
"'^/%s:%ld'."
msgstr ""
-#: ../libsvn_client/conflicts.c:6038
+#: ../libsvn_client/conflicts.c:6028
#, c-format
msgid ""
"Changes destined for a file arrived during merge of\n"
"'^/%s:%ld'."
msgstr ""
-#: ../libsvn_client/conflicts.c:6044
+#: ../libsvn_client/conflicts.c:6034
#, c-format
msgid ""
"Changes arrived during merge of\n"
"'^/%s:%ld'."
msgstr ""
-#: ../libsvn_client/conflicts.c:6056
+#: ../libsvn_client/conflicts.c:6046
#, c-format
msgid ""
"Changes destined for a directory arrived via the following revisions during "
@@ -3052,7 +3052,7 @@ msgid ""
"'^/%s:%ld-%ld'"
msgstr ""
-#: ../libsvn_client/conflicts.c:6063
+#: ../libsvn_client/conflicts.c:6053
#, c-format
msgid ""
"Changes destined for a file arrived via the following revisions during merge "
@@ -3060,35 +3060,35 @@ msgid ""
"'^/%s:%ld-%ld'"
msgstr ""
-#: ../libsvn_client/conflicts.c:6069
+#: ../libsvn_client/conflicts.c:6059
#, c-format
msgid ""
"Changes from the following revisions arrived during merge of\n"
"'^/%s:%ld-%ld'"
msgstr ""
-#: ../libsvn_client/conflicts.c:6081
+#: ../libsvn_client/conflicts.c:6071
#, c-format
msgid ""
"Changes destined for a directory arrived during reverse-merge of\n"
"'^/%s:%ld'."
msgstr ""
-#: ../libsvn_client/conflicts.c:6088
+#: ../libsvn_client/conflicts.c:6078
#, c-format
msgid ""
"Changes destined for a file arrived during reverse-merge of\n"
"'^/%s:%ld'."
msgstr ""
-#: ../libsvn_client/conflicts.c:6094
+#: ../libsvn_client/conflicts.c:6084
#, c-format
msgid ""
"Changes arrived during reverse-merge of\n"
"'^/%s:%ld'."
msgstr ""
-#: ../libsvn_client/conflicts.c:6106
+#: ../libsvn_client/conflicts.c:6096
#, c-format
msgid ""
"Changes destined for a directory arrived via the following revisions during "
@@ -3096,7 +3096,7 @@ msgid ""
"'^/%s:%ld-%ld'"
msgstr ""
-#: ../libsvn_client/conflicts.c:6114
+#: ../libsvn_client/conflicts.c:6104
#, c-format
msgid ""
"Changes destined for a file arrived via the following revisions during "
@@ -3104,432 +3104,432 @@ msgid ""
"'^/%s:%ld-%ld'"
msgstr ""
-#: ../libsvn_client/conflicts.c:6122
+#: ../libsvn_client/conflicts.c:6112
#, c-format
msgid ""
"Changes from the following revisions arrived during reverse-merge of\n"
"'^/%s:%ld-%ld'"
msgstr ""
-#: ../libsvn_client/conflicts.c:6311
+#: ../libsvn_client/conflicts.c:6301
#, c-format
msgid ""
"Tree conflict on '%s' can only be resolved to the current working copy state"
msgstr ""
-#: ../libsvn_client/conflicts.c:6495 ../libsvn_client/conflicts.c:6501
+#: ../libsvn_client/conflicts.c:6485 ../libsvn_client/conflicts.c:6491
#, c-format
msgid ""
"Cannot resolve tree conflict on '%s' (expected a base node but found none)"
msgstr ""
-#: ../libsvn_client/conflicts.c:6506 ../libsvn_client/conflicts.c:6532
-#: ../libsvn_client/conflicts.c:6559 ../libsvn_client/conflicts.c:6582
+#: ../libsvn_client/conflicts.c:6496 ../libsvn_client/conflicts.c:6522
+#: ../libsvn_client/conflicts.c:6549 ../libsvn_client/conflicts.c:6572
#, c-format
msgid "Unexpected option id '%d'"
msgstr ""
-#: ../libsvn_client/conflicts.c:6515 ../libsvn_client/conflicts.c:6524
+#: ../libsvn_client/conflicts.c:6505 ../libsvn_client/conflicts.c:6514
#, c-format
msgid ""
"Cannot resolve tree conflict on '%s' (expected base node kind '%s', but "
"found '%s')"
msgstr ""
-#: ../libsvn_client/conflicts.c:6540 ../libsvn_client/conflicts.c:6550
+#: ../libsvn_client/conflicts.c:6530 ../libsvn_client/conflicts.c:6540
#, c-format
msgid ""
"Cannot resolve tree conflict on '%s' (expected base node from '^/%s@%ld', "
"but found '^/%s@%ld')"
msgstr ""
-#: ../libsvn_client/conflicts.c:6568 ../libsvn_client/conflicts.c:6576
+#: ../libsvn_client/conflicts.c:6558 ../libsvn_client/conflicts.c:6566
#, c-format
msgid ""
"Cannot resolve tree conflict on '%s' (expected an added item, but the item "
"is not added)"
msgstr ""
-#: ../libsvn_client/conflicts.c:6746 ../libsvn_client/conflicts.c:8561
+#: ../libsvn_client/conflicts.c:6736 ../libsvn_client/conflicts.c:8574
#, c-format
msgid "If needed, a backup copy of '%s' can be found at '%s'"
msgstr ""
-#: ../libsvn_client/conflicts.c:7609
+#: ../libsvn_client/conflicts.c:7599
#, c-format
msgid ""
"Conflict resolution option '%d' requires details for tree conflict at '%s' "
"to be fetched from the repository"
msgstr ""
-#: ../libsvn_client/conflicts.c:7633
+#: ../libsvn_client/conflicts.c:7623
#, c-format
msgid "Could not determine when '%s' was added the repository"
msgstr ""
-#: ../libsvn_client/conflicts.c:7648
+#: ../libsvn_client/conflicts.c:7638
#, c-format
msgid "Could not determine when '%s' was deleted from the repository"
msgstr ""
-#: ../libsvn_client/conflicts.c:7937
+#: ../libsvn_client/conflicts.c:7927
#, c-format
msgid ""
"Could not determine the revision in which '^/%s' was added to the "
"repository.\n"
msgstr ""
-#: ../libsvn_client/conflicts.c:8041
-#, c-format
-msgid ""
-"Conflict resolution option '%d' requires details for tree conflict at '%s' "
-"to be fetched from the repository."
-msgstr ""
-
-#: ../libsvn_client/conflicts.c:8058
+#: ../libsvn_client/conflicts.c:8023
#, c-format
msgid ""
"Cannot resolve tree conflict on '%s' (expected a copied item, but the item "
"is not a copy)"
msgstr ""
-#: ../libsvn_client/conflicts.c:8069
-#, c-format
-msgid ""
-"Could not find the revision in which '%s' was deleted from the repository"
-msgstr ""
-
-#: ../libsvn_client/conflicts.c:8079
+#: ../libsvn_client/conflicts.c:8034
#, c-format
msgid ""
"Cannot resolve tree conflict on '%s' (expected an item copied from a "
"revision smaller than r%ld, but the item was copied from r%ld)"
msgstr ""
-#: ../libsvn_client/conflicts.c:8092
+#: ../libsvn_client/conflicts.c:8046
#, c-format
msgid ""
"Cannot resolve tree conflict on '%s' (expected an item copied from a "
"revision larger than r%ld, but the item was copied from r%ld)"
msgstr ""
-#: ../libsvn_client/conflicts.c:8111
+#: ../libsvn_client/conflicts.c:8065
#, c-format
msgid ""
"Cannot resolve tree conflict on '%s' (expected an item copied from '^/%s' or "
"from '^/%s' but the item was copied from '^/%s@%ld')"
msgstr ""
-#: ../libsvn_client/conflicts.c:8133
+#: ../libsvn_client/conflicts.c:8087
#, c-format
msgid ""
"Cannot resolve tree conflict on '%s' (expected an item copied from '^/%s', "
"but the item was copied from '^/%s@%ld')"
msgstr ""
-#: ../libsvn_client/conflicts.c:8158
+#: ../libsvn_client/conflicts.c:8136
+#, c-format
+msgid ""
+"Conflict resolution option '%d' requires details for tree conflict at '%s' "
+"to be fetched from the repository."
+msgstr ""
+
+#: ../libsvn_client/conflicts.c:8146
+#, c-format
+msgid ""
+"Could not find the revision in which '%s' was deleted from the repository"
+msgstr ""
+
+#: ../libsvn_client/conflicts.c:8171
#, c-format
msgid ""
"Cannot resolve tree conflict on '%s' (expected node kind '%s' but found '%s')"
msgstr ""
-#: ../libsvn_client/conflicts.c:8325 ../libsvn_client/conflicts.c:8608
+#: ../libsvn_client/conflicts.c:8338 ../libsvn_client/conflicts.c:8621
#, c-format
msgid ""
"The specified conflict resolution option requires details for tree conflict "
"at '%s' to be fetched from the repository first."
msgstr ""
-#: ../libsvn_client/conflicts.c:8332
+#: ../libsvn_client/conflicts.c:8345
#, c-format
msgid "Invalid operation code '%d' recorded for conflict at '%s'"
msgstr ""
-#: ../libsvn_client/conflicts.c:8669
+#: ../libsvn_client/conflicts.c:8682
#, c-format
msgid ""
"Cannot resolve tree conflict on '%s' (expected a copied item at '%s', but "
"the item is not a copy)"
msgstr ""
-#: ../libsvn_client/conflicts.c:8682
+#: ../libsvn_client/conflicts.c:8695
#, c-format
msgid ""
"Cannot resolve tree conflict on '%s' (could not determine origin of '%s')"
msgstr ""
-#: ../libsvn_client/conflicts.c:8702
+#: ../libsvn_client/conflicts.c:8715
#, c-format
msgid ""
"Cannot resolve tree conflict on '%s' (could not find common ancestor of '^/"
"%s@%ld' and '^/%s@%ld')"
msgstr ""
-#: ../libsvn_client/conflicts.c:9057 ../libsvn_client/conflicts.c:9140
-#: ../libsvn_client/conflicts.c:10306
+#: ../libsvn_client/conflicts.c:9070 ../libsvn_client/conflicts.c:9153
+#: ../libsvn_client/conflicts.c:10325
msgid "Postpone"
msgstr ""
-#: ../libsvn_client/conflicts.c:9058 ../libsvn_client/conflicts.c:9141
-#: ../libsvn_client/conflicts.c:10307
+#: ../libsvn_client/conflicts.c:9071 ../libsvn_client/conflicts.c:9154
+#: ../libsvn_client/conflicts.c:10326
msgid "skip this conflict and leave it unresolved"
msgstr ""
-#: ../libsvn_client/conflicts.c:9067 ../libsvn_client/conflicts.c:9088
-#: ../libsvn_client/conflicts.c:9146
+#: ../libsvn_client/conflicts.c:9080 ../libsvn_client/conflicts.c:9101
+#: ../libsvn_client/conflicts.c:9159
msgid "Accept base"
msgstr ""
-#: ../libsvn_client/conflicts.c:9068
+#: ../libsvn_client/conflicts.c:9081
msgid "discard local and incoming changes for this binary file"
msgstr ""
-#: ../libsvn_client/conflicts.c:9073 ../libsvn_client/conflicts.c:9094
-#: ../libsvn_client/conflicts.c:9152
+#: ../libsvn_client/conflicts.c:9086 ../libsvn_client/conflicts.c:9107
+#: ../libsvn_client/conflicts.c:9165
msgid "Accept incoming"
msgstr ""
-#: ../libsvn_client/conflicts.c:9074
+#: ../libsvn_client/conflicts.c:9087
msgid "accept incoming version of binary file"
msgstr ""
-#: ../libsvn_client/conflicts.c:9079 ../libsvn_client/conflicts.c:9118
-#: ../libsvn_client/conflicts.c:9158 ../libsvn_client/conflicts.c:9215
+#: ../libsvn_client/conflicts.c:9092 ../libsvn_client/conflicts.c:9131
+#: ../libsvn_client/conflicts.c:9171 ../libsvn_client/conflicts.c:9228
msgid "Mark as resolved"
msgstr ""
-#: ../libsvn_client/conflicts.c:9080
+#: ../libsvn_client/conflicts.c:9093
msgid "accept binary file as it appears in the working copy"
msgstr ""
-#: ../libsvn_client/conflicts.c:9089
+#: ../libsvn_client/conflicts.c:9102
msgid "discard local and incoming changes for this file"
msgstr ""
-#: ../libsvn_client/conflicts.c:9095
+#: ../libsvn_client/conflicts.c:9108
msgid "accept incoming version of entire file"
msgstr ""
-#: ../libsvn_client/conflicts.c:9100
+#: ../libsvn_client/conflicts.c:9113
msgid "Reject incoming"
msgstr ""
-#: ../libsvn_client/conflicts.c:9101
+#: ../libsvn_client/conflicts.c:9114
msgid "reject all incoming changes for this file"
msgstr ""
-#: ../libsvn_client/conflicts.c:9106 ../libsvn_client/conflicts.c:9164
+#: ../libsvn_client/conflicts.c:9119 ../libsvn_client/conflicts.c:9177
msgid "Accept incoming for conflicts"
msgstr ""
-#: ../libsvn_client/conflicts.c:9107
+#: ../libsvn_client/conflicts.c:9120
msgid "accept changes only where they conflict"
msgstr ""
-#: ../libsvn_client/conflicts.c:9112 ../libsvn_client/conflicts.c:9170
+#: ../libsvn_client/conflicts.c:9125 ../libsvn_client/conflicts.c:9183
msgid "Reject conflicts"
msgstr ""
-#: ../libsvn_client/conflicts.c:9113 ../libsvn_client/conflicts.c:9171
+#: ../libsvn_client/conflicts.c:9126 ../libsvn_client/conflicts.c:9184
msgid "reject changes which conflict and accept the rest"
msgstr ""
-#: ../libsvn_client/conflicts.c:9119
+#: ../libsvn_client/conflicts.c:9132
msgid "accept the file as it appears in the working copy"
msgstr ""
-#: ../libsvn_client/conflicts.c:9147
+#: ../libsvn_client/conflicts.c:9160
msgid "discard local and incoming changes for this property"
msgstr ""
-#: ../libsvn_client/conflicts.c:9153
+#: ../libsvn_client/conflicts.c:9166
msgid "accept incoming version of entire property value"
msgstr ""
-#: ../libsvn_client/conflicts.c:9159
+#: ../libsvn_client/conflicts.c:9172
msgid "accept working copy version of entire property value"
msgstr ""
-#: ../libsvn_client/conflicts.c:9165
+#: ../libsvn_client/conflicts.c:9178
msgid "accept incoming changes only where they conflict"
msgstr ""
-#: ../libsvn_client/conflicts.c:9176
+#: ../libsvn_client/conflicts.c:9189
msgid "Accept merged"
msgstr ""
-#: ../libsvn_client/conflicts.c:9177
+#: ../libsvn_client/conflicts.c:9190
msgid "accept merged version of property value"
msgstr ""
-#: ../libsvn_client/conflicts.c:9216
+#: ../libsvn_client/conflicts.c:9229
msgid "accept current working copy state"
msgstr ""
-#: ../libsvn_client/conflicts.c:9243
+#: ../libsvn_client/conflicts.c:9256
msgid "Update move destination"
msgstr ""
-#: ../libsvn_client/conflicts.c:9244
+#: ../libsvn_client/conflicts.c:9257
msgid "apply incoming changes to move destination"
msgstr ""
-#: ../libsvn_client/conflicts.c:9278
+#: ../libsvn_client/conflicts.c:9291
msgid "Update any moved-away children"
msgstr ""
-#: ../libsvn_client/conflicts.c:9279
+#: ../libsvn_client/conflicts.c:9292
msgid "prepare for updating moved-away children, if any"
msgstr ""
-#: ../libsvn_client/conflicts.c:9324
+#: ../libsvn_client/conflicts.c:9337
#, c-format
msgid "ignore and do not add '^/%s@%ld' here"
msgstr ""
-#: ../libsvn_client/conflicts.c:9332
+#: ../libsvn_client/conflicts.c:9345
#, c-format
msgid "replace '^/%s@%ld' with the locally added file"
msgstr ""
-#: ../libsvn_client/conflicts.c:9337
+#: ../libsvn_client/conflicts.c:9350
#, c-format
msgid "replace '^/%s@%ld' with the locally added directory"
msgstr ""
-#: ../libsvn_client/conflicts.c:9343
+#: ../libsvn_client/conflicts.c:9356
#, c-format
msgid "replace '^/%s@%ld' with the locally added item"
msgstr ""
-#: ../libsvn_client/conflicts.c:9348
+#: ../libsvn_client/conflicts.c:9361
#, c-format
msgid "unexpected operation code '%d'"
msgstr ""
-#: ../libsvn_client/conflicts.c:9352
+#: ../libsvn_client/conflicts.c:9365
msgid "Ignore incoming addition"
msgstr ""
-#: ../libsvn_client/conflicts.c:9398 ../libsvn_client/conflicts.c:9523
+#: ../libsvn_client/conflicts.c:9411 ../libsvn_client/conflicts.c:9540
#, c-format
msgid "merge '^/%s@%ld' into '%s'"
msgstr ""
-#: ../libsvn_client/conflicts.c:9406 ../libsvn_client/conflicts.c:9531
+#: ../libsvn_client/conflicts.c:9419 ../libsvn_client/conflicts.c:9549
#, c-format
msgid "merge local '%s' and '^/%s@%ld'"
msgstr ""
-#: ../libsvn_client/conflicts.c:9416
+#: ../libsvn_client/conflicts.c:9429
msgid "Merge the files"
msgstr ""
-#: ../libsvn_client/conflicts.c:9465
+#: ../libsvn_client/conflicts.c:9478
#, c-format
msgid "delete '%s', copy '^/%s@%ld' here, and merge the files"
msgstr ""
-#: ../libsvn_client/conflicts.c:9475 ../libsvn_client/conflicts.c:9653
+#: ../libsvn_client/conflicts.c:9488 ../libsvn_client/conflicts.c:9671
msgid "Replace and merge"
msgstr ""
-#: ../libsvn_client/conflicts.c:9540
+#: ../libsvn_client/conflicts.c:9558
msgid "Merge the directories"
msgstr ""
-#: ../libsvn_client/conflicts.c:9587
+#: ../libsvn_client/conflicts.c:9605
#, c-format
msgid "delete '%s' and copy '^/%s@%ld' here"
msgstr ""
-#: ../libsvn_client/conflicts.c:9596
+#: ../libsvn_client/conflicts.c:9614
msgid "Delete my directory and replace it with incoming directory"
msgstr ""
-#: ../libsvn_client/conflicts.c:9643
+#: ../libsvn_client/conflicts.c:9661
#, c-format
msgid "delete '%s', copy '^/%s@%ld' here, and merge the directories"
msgstr ""
-#: ../libsvn_client/conflicts.c:9723
+#: ../libsvn_client/conflicts.c:9741
#, c-format
msgid "ignore the deletion of '^/%s@%ld'"
msgstr ""
-#: ../libsvn_client/conflicts.c:9728
+#: ../libsvn_client/conflicts.c:9746
msgid "Ignore incoming deletion"
msgstr ""
-#: ../libsvn_client/conflicts.c:9781
+#: ../libsvn_client/conflicts.c:9799
#, c-format
msgid "accept the deletion of '%s'"
msgstr ""
-#: ../libsvn_client/conflicts.c:9788
+#: ../libsvn_client/conflicts.c:9806
msgid "Accept incoming deletion"
msgstr ""
-#: ../libsvn_client/conflicts.c:9827
+#: ../libsvn_client/conflicts.c:9845
#, c-format
msgid "move '%s' to '%s' and merge"
msgstr ""
-#: ../libsvn_client/conflicts.c:9837
+#: ../libsvn_client/conflicts.c:9855
#, c-format
msgid "move and merge local changes from '%s' into '%s'"
msgstr ""
-#: ../libsvn_client/conflicts.c:9898 ../libsvn_client/conflicts.c:9958
+#: ../libsvn_client/conflicts.c:9916 ../libsvn_client/conflicts.c:9976
msgid "Move and merge"
msgstr ""
-#: ../libsvn_client/conflicts.c:10042
+#: ../libsvn_client/conflicts.c:10060
#, c-format
msgid "apply changes to move destination '%s'"
msgstr ""
-#: ../libsvn_client/conflicts.c:10051
+#: ../libsvn_client/conflicts.c:10069
msgid "Apply to move destination"
msgstr ""
-#: ../libsvn_client/conflicts.c:10084 ../libsvn_client/conflicts.c:10212
+#: ../libsvn_client/conflicts.c:10102 ../libsvn_client/conflicts.c:10231
#, c-format
msgid ""
"Getting a list of possible move targets requires details for tree conflict "
"at '%s' to be fetched from the repository first"
msgstr ""
-#: ../libsvn_client/conflicts.c:10137 ../libsvn_client/conflicts.c:10260
+#: ../libsvn_client/conflicts.c:10155 ../libsvn_client/conflicts.c:10279
#, c-format
msgid ""
"Setting a move target requires details for tree conflict at '%s' to be "
"fetched from the repository first"
msgstr ""
-#: ../libsvn_client/conflicts.c:10146 ../libsvn_client/conflicts.c:10273
+#: ../libsvn_client/conflicts.c:10164 ../libsvn_client/conflicts.c:10292
#, c-format
msgid "Index '%d' is out of bounds of the possible move target list for '%s'"
msgstr ""
-#: ../libsvn_client/conflicts.c:10183
+#: ../libsvn_client/conflicts.c:10202
#, c-format
msgid ""
"Repository path '%s' not found in list of possible move targets for '%s'"
msgstr ""
-#: ../libsvn_client/conflicts.c:10490 ../libsvn_client/conflicts.c:10539
-#: ../libsvn_client/conflicts.c:10592
+#: ../libsvn_client/conflicts.c:10509 ../libsvn_client/conflicts.c:10558
+#: ../libsvn_client/conflicts.c:10611
#, c-format
msgid "Inapplicable conflict resolution option given for conflicted path '%s'"
msgstr ""
-#: ../libsvn_client/conflicts.c:10812
+#: ../libsvn_client/conflicts.c:10831
#, c-format
msgid "Property '%s' is not in conflict."
msgstr ""
-#: ../libsvn_client/conflicts.c:11202 ../libsvn_wc/conflicts.c:3292
+#: ../libsvn_client/conflicts.c:11221 ../libsvn_wc/conflicts.c:3292
#, c-format
msgid "Unable to resolve pending conflict on '%s'"
msgstr ""
@@ -3575,7 +3575,7 @@ msgstr ""
#: ../libsvn_client/copy.c:991 ../libsvn_client/copy.c:1715
#: ../libsvn_client/copy.c:2090 ../libsvn_client/copy.c:2732
#: ../libsvn_client/import.c:911 ../libsvn_client/mtcc.c:456
-#: ../libsvn_client/mtcc.c:473 ../libsvn_ra_serf/util.c:1900
+#: ../libsvn_client/mtcc.c:473 ../libsvn_ra_serf/util.c:1920
#, c-format
msgid "Path '%s' already exists"
msgstr ""
@@ -5901,13 +5901,13 @@ msgid "Destination '%s' is not a directory"
msgstr ""
#: ../libsvn_fs_fs/hotcopy.c:226 ../libsvn_fs_x/hotcopy.c:228
-#: ../libsvn_subr/io.c:1172 ../libsvn_subr/io.c:2868
+#: ../libsvn_subr/io.c:1172 ../libsvn_subr/io.c:2869
#, c-format
msgid "Can't read directory '%s'"
msgstr ""
#: ../libsvn_fs_fs/hotcopy.c:231 ../libsvn_fs_x/hotcopy.c:233
-#: ../libsvn_subr/io.c:1177 ../libsvn_subr/io.c:2873 ../libsvn_subr/io.c:4659
+#: ../libsvn_subr/io.c:1177 ../libsvn_subr/io.c:2874 ../libsvn_subr/io.c:4660
#, c-format
msgid "Error closing directory '%s'"
msgstr ""
@@ -6916,7 +6916,7 @@ msgid "URL '%s' is not a child of the session's repository root URL '%s'"
msgstr ""
#: ../libsvn_ra_local/ra_plugin.c:1285 ../libsvn_ra_local/ra_plugin.c:1740
-#: ../libsvn_ra_serf/util.c:1844 ../svnserve/serve.c:3554
+#: ../libsvn_ra_serf/util.c:1864 ../svnserve/serve.c:3554
#, c-format
msgid "'%s' path not found"
msgstr ""
@@ -7078,12 +7078,12 @@ msgstr ""
msgid "Location header not set on redirect response"
msgstr ""
-#: ../libsvn_ra_serf/options.c:586 ../libsvn_ra_serf/util.c:1835
+#: ../libsvn_ra_serf/options.c:586 ../libsvn_ra_serf/util.c:1855
#, c-format
msgid "Repository moved permanently to '%s'"
msgstr ""
-#: ../libsvn_ra_serf/options.c:587 ../libsvn_ra_serf/util.c:1836
+#: ../libsvn_ra_serf/options.c:587 ../libsvn_ra_serf/util.c:1856
#, c-format
msgid "Repository moved temporarily to '%s'"
msgstr ""
@@ -7246,62 +7246,62 @@ msgstr ""
msgid "Invalid config: unable to load certificate file '%s'"
msgstr ""
-#: ../libsvn_ra_serf/util.c:955 ../libsvn_ra_serf/util.c:958
+#: ../libsvn_ra_serf/util.c:958 ../libsvn_ra_serf/util.c:961
msgid "Error running context"
msgstr ""
-#: ../libsvn_ra_serf/util.c:1230
+#: ../libsvn_ra_serf/util.c:1233
msgid ""
"No more credentials or we tried too many times.\n"
"Authentication failed"
msgstr ""
-#: ../libsvn_ra_serf/util.c:1252
+#: ../libsvn_ra_serf/util.c:1255
msgid "Proxy authentication failed"
msgstr ""
-#: ../libsvn_ra_serf/util.c:1307
+#: ../libsvn_ra_serf/util.c:1310
#, c-format
msgid "%s request on '%s' failed"
msgstr ""
-#: ../libsvn_ra_serf/util.c:1383
+#: ../libsvn_ra_serf/util.c:1386
#, c-format
msgid "Premature EOF seen from server (http status=%d)"
msgstr ""
-#: ../libsvn_ra_serf/util.c:1734
+#: ../libsvn_ra_serf/util.c:1754
msgid ""
"The PROPFIND response did not include the requested version-controlled-"
"configuration value"
msgstr ""
-#: ../libsvn_ra_serf/util.c:1840
+#: ../libsvn_ra_serf/util.c:1860
#, c-format
msgid "Access to '%s' forbidden"
msgstr ""
-#: ../libsvn_ra_serf/util.c:1847
+#: ../libsvn_ra_serf/util.c:1867
#, c-format
msgid "HTTP method is not allowed on '%s'"
msgstr ""
-#: ../libsvn_ra_serf/util.c:1851
+#: ../libsvn_ra_serf/util.c:1871
#, c-format
msgid "'%s' conflicts"
msgstr ""
-#: ../libsvn_ra_serf/util.c:1854
+#: ../libsvn_ra_serf/util.c:1874
#, c-format
msgid "Precondition on '%s' failed"
msgstr ""
-#: ../libsvn_ra_serf/util.c:1857
+#: ../libsvn_ra_serf/util.c:1877
#, c-format
msgid "'%s': no lock token available"
msgstr ""
-#: ../libsvn_ra_serf/util.c:1861
+#: ../libsvn_ra_serf/util.c:1881
#, c-format
msgid ""
"DAV request failed: 411 Content length required. The server or an "
@@ -7309,37 +7309,37 @@ msgid ""
"chunked-requests' to 'auto' or 'no' in your client configuration."
msgstr ""
-#: ../libsvn_ra_serf/util.c:1867
+#: ../libsvn_ra_serf/util.c:1887
#, c-format
msgid "Unexpected server error %d '%s' on '%s'"
msgstr ""
-#: ../libsvn_ra_serf/util.c:1871
+#: ../libsvn_ra_serf/util.c:1891
#, c-format
msgid "The requested feature is not supported by '%s'"
msgstr ""
-#: ../libsvn_ra_serf/util.c:1877
+#: ../libsvn_ra_serf/util.c:1897
#, c-format
msgid "Unexpected HTTP status %d '%s' on '%s'"
msgstr ""
-#: ../libsvn_ra_serf/util.c:1896
+#: ../libsvn_ra_serf/util.c:1916
#, c-format
msgid "Path '%s' unexpectedly created"
msgstr ""
-#: ../libsvn_ra_serf/util.c:1905
+#: ../libsvn_ra_serf/util.c:1925
#, c-format
msgid "The HTTP method '%s' is not allowed on '%s'"
msgstr ""
-#: ../libsvn_ra_serf/util.c:1910
+#: ../libsvn_ra_serf/util.c:1930
#, c-format
msgid "Unexpected HTTP status %d '%s' on '%s' request to '%s'"
msgstr ""
-#: ../libsvn_ra_serf/util.c:2013
+#: ../libsvn_ra_serf/util.c:2033
#, c-format
msgid "Illegal URL '%s'"
msgstr ""
@@ -8224,7 +8224,7 @@ msgid ""
"ask the administrator to create a pre-revprop-change hook"
msgstr ""
-#: ../libsvn_repos/list.c:314 ../libsvn_subr/io.c:2977
+#: ../libsvn_repos/list.c:314 ../libsvn_subr/io.c:2978
#, c-format
msgid "Path '%s' not found"
msgstr ""
@@ -9025,7 +9025,7 @@ msgstr ""
msgid "Can't check path '%s'"
msgstr ""
-#: ../libsvn_subr/io.c:604 ../libsvn_subr/io.c:5213
+#: ../libsvn_subr/io.c:604 ../libsvn_subr/io.c:5214
#, c-format
msgid "Can't open '%s'"
msgstr ""
@@ -9061,13 +9061,13 @@ msgid "Can't copy '%s' to '%s'"
msgstr ""
#: ../libsvn_subr/io.c:964 ../libsvn_subr/io.c:986 ../libsvn_subr/io.c:1032
-#: ../libsvn_subr/io.c:5346
+#: ../libsvn_subr/io.c:5347
#, c-format
msgid "Can't set permissions on '%s'"
msgstr ""
#: ../libsvn_subr/io.c:982 ../libsvn_subr/io.c:2322 ../libsvn_subr/io.c:2382
-#: ../libsvn_subr/io.c:2471 ../libsvn_subr/io.c:5251
+#: ../libsvn_subr/io.c:2471 ../libsvn_subr/io.c:5252
#, c-format
msgid "Can't get file name"
msgstr ""
@@ -9107,12 +9107,12 @@ msgstr ""
msgid "Can't set attributes of file '%s'"
msgstr ""
-#: ../libsvn_subr/io.c:2027 ../libsvn_subr/io.c:2688
+#: ../libsvn_subr/io.c:2027 ../libsvn_subr/io.c:2689
#, c-format
msgid "Can't remove file '%s'"
msgstr ""
-#: ../libsvn_subr/io.c:2097 ../libsvn_subr/io.c:4291
+#: ../libsvn_subr/io.c:2097 ../libsvn_subr/io.c:4292
#, c-format
msgid "Can't move '%s' to '%s'"
msgstr ""
@@ -9147,106 +9147,106 @@ msgstr ""
msgid "Can't flush file '%s' to disk"
msgstr ""
-#: ../libsvn_subr/io.c:2602 ../libsvn_subr/prompt.c:197
+#: ../libsvn_subr/io.c:2603 ../libsvn_subr/prompt.c:197
#, c-format
msgid "Can't open stdin"
msgstr ""
-#: ../libsvn_subr/io.c:2622
+#: ../libsvn_subr/io.c:2623
msgid "Reading from stdin is disallowed"
msgstr ""
-#: ../libsvn_subr/io.c:2775
+#: ../libsvn_subr/io.c:2776
#, c-format
msgid "Can't remove '%s'"
msgstr ""
-#: ../libsvn_subr/io.c:2938
+#: ../libsvn_subr/io.c:2939
#, c-format
msgid "Path '%s' not found, case obstructed by '%s'"
msgstr ""
-#: ../libsvn_subr/io.c:3051
+#: ../libsvn_subr/io.c:3052
#, c-format
msgid "Can't create process '%s' attributes"
msgstr ""
-#: ../libsvn_subr/io.c:3058
+#: ../libsvn_subr/io.c:3059
#, c-format
msgid "Can't set process '%s' cmdtype"
msgstr ""
-#: ../libsvn_subr/io.c:3074
+#: ../libsvn_subr/io.c:3075
#, c-format
msgid "Can't set process '%s' directory"
msgstr ""
-#: ../libsvn_subr/io.c:3088
+#: ../libsvn_subr/io.c:3089
#, c-format
msgid "Can't set process '%s' child input"
msgstr ""
-#: ../libsvn_subr/io.c:3096
+#: ../libsvn_subr/io.c:3097
#, c-format
msgid "Can't set process '%s' child outfile"
msgstr ""
-#: ../libsvn_subr/io.c:3104
+#: ../libsvn_subr/io.c:3105
#, c-format
msgid "Can't set process '%s' child errfile"
msgstr ""
-#: ../libsvn_subr/io.c:3118
+#: ../libsvn_subr/io.c:3119
#, c-format
msgid "Can't set process '%s' stdio pipes"
msgstr ""
-#: ../libsvn_subr/io.c:3126
+#: ../libsvn_subr/io.c:3127
#, c-format
msgid "Can't set process '%s' child errfile for error handler"
msgstr ""
-#: ../libsvn_subr/io.c:3133
+#: ../libsvn_subr/io.c:3134
#, c-format
msgid "Can't set process '%s' error handler"
msgstr ""
-#: ../libsvn_subr/io.c:3156
+#: ../libsvn_subr/io.c:3157
#, c-format
msgid "Can't start process '%s'"
msgstr ""
-#: ../libsvn_subr/io.c:3180
+#: ../libsvn_subr/io.c:3181
#, c-format
msgid "Error waiting for process '%s'"
msgstr ""
-#: ../libsvn_subr/io.c:3189
+#: ../libsvn_subr/io.c:3190
#, c-format
msgid "Process '%s' failed (signal %d, core dumped)"
msgstr ""
-#: ../libsvn_subr/io.c:3194
+#: ../libsvn_subr/io.c:3195
#, c-format
msgid "Process '%s' failed (signal %d)"
msgstr ""
-#: ../libsvn_subr/io.c:3200
+#: ../libsvn_subr/io.c:3201
#, c-format
msgid "Process '%s' failed (exitwhy %d, exitcode %d)"
msgstr ""
-#: ../libsvn_subr/io.c:3208
+#: ../libsvn_subr/io.c:3209
#, c-format
msgid "Process '%s' returned error exitcode %d"
msgstr ""
-#: ../libsvn_subr/io.c:3315
+#: ../libsvn_subr/io.c:3316
#, c-format
msgid "'%s' returned %d"
msgstr ""
-#: ../libsvn_subr/io.c:3436
+#: ../libsvn_subr/io.c:3437
#, c-format
msgid ""
"Error running '%s': exitcode was %d, args were:\n"
@@ -9256,188 +9256,188 @@ msgid ""
"%s"
msgstr ""
-#: ../libsvn_subr/io.c:3577
+#: ../libsvn_subr/io.c:3578
#, c-format
msgid "Can't detect MIME type of non-file '%s'"
msgstr ""
-#: ../libsvn_subr/io.c:3672
+#: ../libsvn_subr/io.c:3673
#, c-format
msgid "Can't open file '%s'"
msgstr ""
-#: ../libsvn_subr/io.c:3712
+#: ../libsvn_subr/io.c:3713
#, c-format
msgid "Can't close file '%s'"
msgstr ""
-#: ../libsvn_subr/io.c:3713
+#: ../libsvn_subr/io.c:3714
#, c-format
msgid "Can't close stream"
msgstr ""
-#: ../libsvn_subr/io.c:3722 ../libsvn_subr/io.c:3784 ../libsvn_subr/io.c:3809
-#: ../libsvn_subr/io.c:3899
+#: ../libsvn_subr/io.c:3723 ../libsvn_subr/io.c:3785 ../libsvn_subr/io.c:3810
+#: ../libsvn_subr/io.c:3900
#, c-format
msgid "Can't read file '%s'"
msgstr ""
-#: ../libsvn_subr/io.c:3723 ../libsvn_subr/io.c:3785 ../libsvn_subr/io.c:3810
-#: ../libsvn_subr/io.c:3900
+#: ../libsvn_subr/io.c:3724 ../libsvn_subr/io.c:3786 ../libsvn_subr/io.c:3811
+#: ../libsvn_subr/io.c:3901
#, c-format
msgid "Can't read stream"
msgstr ""
-#: ../libsvn_subr/io.c:3732
+#: ../libsvn_subr/io.c:3733
#, c-format
msgid "Can't write file '%s'"
msgstr ""
-#: ../libsvn_subr/io.c:3733
+#: ../libsvn_subr/io.c:3734
#, c-format
msgid "Can't write stream"
msgstr ""
-#: ../libsvn_subr/io.c:3747
+#: ../libsvn_subr/io.c:3748
#, c-format
msgid "Can't get attribute information from file '%s'"
msgstr ""
-#: ../libsvn_subr/io.c:3748
+#: ../libsvn_subr/io.c:3749
#, c-format
msgid "Can't get attribute information from stream"
msgstr ""
-#: ../libsvn_subr/io.c:3821
+#: ../libsvn_subr/io.c:3822
#, c-format
msgid "Can't set position pointer in file '%s'"
msgstr ""
-#: ../libsvn_subr/io.c:3822
+#: ../libsvn_subr/io.c:3823
#, c-format
msgid "Can't set position pointer in stream"
msgstr ""
-#: ../libsvn_subr/io.c:3909
+#: ../libsvn_subr/io.c:3910
#, c-format
msgid "Can't seek in file '%s'"
msgstr ""
-#: ../libsvn_subr/io.c:3910
+#: ../libsvn_subr/io.c:3911
#, c-format
msgid "Can't seek in stream"
msgstr ""
-#: ../libsvn_subr/io.c:3927 ../libsvn_subr/io.c:3983
+#: ../libsvn_subr/io.c:3928 ../libsvn_subr/io.c:3984
#, c-format
msgid "Can't write to file '%s'"
msgstr ""
-#: ../libsvn_subr/io.c:3928 ../libsvn_subr/io.c:3984
+#: ../libsvn_subr/io.c:3929 ../libsvn_subr/io.c:3985
#, c-format
msgid "Can't write to stream"
msgstr ""
-#: ../libsvn_subr/io.c:3938 ../libsvn_subr/io.c:4095
+#: ../libsvn_subr/io.c:3939 ../libsvn_subr/io.c:4096
#, c-format
msgid "Can't flush file '%s'"
msgstr ""
-#: ../libsvn_subr/io.c:3939 ../libsvn_subr/io.c:4096
+#: ../libsvn_subr/io.c:3940 ../libsvn_subr/io.c:4097
#, c-format
msgid "Can't flush stream"
msgstr ""
-#: ../libsvn_subr/io.c:4060
+#: ../libsvn_subr/io.c:4061
#, c-format
msgid "Can't write '%s' atomically"
msgstr ""
-#: ../libsvn_subr/io.c:4100
+#: ../libsvn_subr/io.c:4101
#, c-format
msgid "Can't truncate file '%s'"
msgstr ""
-#: ../libsvn_subr/io.c:4101
+#: ../libsvn_subr/io.c:4102
#, c-format
msgid "Can't truncate stream"
msgstr ""
-#: ../libsvn_subr/io.c:4181
+#: ../libsvn_subr/io.c:4182
#, c-format
msgid "Can't read length line in file '%s'"
msgstr ""
-#: ../libsvn_subr/io.c:4185
+#: ../libsvn_subr/io.c:4186
msgid "Can't read length line in stream"
msgstr ""
-#: ../libsvn_subr/io.c:4207
+#: ../libsvn_subr/io.c:4208
#, c-format
msgid "Can't stat '%s'"
msgstr ""
-#: ../libsvn_subr/io.c:4385
+#: ../libsvn_subr/io.c:4386
#, c-format
msgid "Can't create directory '%s'"
msgstr ""
-#: ../libsvn_subr/io.c:4397 ../libsvn_subr/io.c:4411
+#: ../libsvn_subr/io.c:4398 ../libsvn_subr/io.c:4412
#, c-format
msgid "Can't hide directory '%s'"
msgstr ""
-#: ../libsvn_subr/io.c:4472 ../libsvn_subr/io.c:4595
+#: ../libsvn_subr/io.c:4473 ../libsvn_subr/io.c:4596
#, c-format
msgid "Can't open directory '%s'"
msgstr ""
-#: ../libsvn_subr/io.c:4507
+#: ../libsvn_subr/io.c:4508
#, c-format
msgid "Can't remove directory '%s'"
msgstr ""
-#: ../libsvn_subr/io.c:4525
+#: ../libsvn_subr/io.c:4526
#, c-format
msgid "Can't read directory"
msgstr ""
-#: ../libsvn_subr/io.c:4545
+#: ../libsvn_subr/io.c:4546
#, c-format
msgid "Error closing directory"
msgstr ""
-#: ../libsvn_subr/io.c:4614
+#: ../libsvn_subr/io.c:4615
#, c-format
msgid "Can't read directory entry in '%s'"
msgstr ""
-#: ../libsvn_subr/io.c:4740
+#: ../libsvn_subr/io.c:4741
#, c-format
msgid "Can't check directory '%s'"
msgstr ""
-#: ../libsvn_subr/io.c:4802
+#: ../libsvn_subr/io.c:4803
#, c-format
msgid "Reading '%s'"
msgstr ""
-#: ../libsvn_subr/io.c:4821
+#: ../libsvn_subr/io.c:4822
#, c-format
msgid "First line of '%s' contains non-digit"
msgstr ""
-#: ../libsvn_subr/io.c:5136
+#: ../libsvn_subr/io.c:5137
#, c-format
msgid "Can't create temporary file from template '%s'"
msgstr ""
-#: ../libsvn_subr/io.c:5223
+#: ../libsvn_subr/io.c:5224
#, c-format
msgid "Can't set aside '%s'"
msgstr ""
-#: ../libsvn_subr/io.c:5235 ../libsvn_subr/stream.c:2231
+#: ../libsvn_subr/io.c:5236 ../libsvn_subr/stream.c:2231
#, c-format
msgid "Unable to make name in '%s'"
msgstr ""
@@ -9769,7 +9769,7 @@ msgid "Password for '%s' GNOME keyring: "
msgstr ""
#: ../libsvn_subr/simple_providers.c:444
-#: ../libsvn_subr/ssl_client_cert_pw_providers.c:286
+#: ../libsvn_subr/ssl_client_cert_pw_providers.c:294
#, c-format
msgid "Config error: invalid value '%s' for option '%s'"
msgstr ""
@@ -12231,8 +12231,8 @@ msgstr ""
msgid "Resource is not under version control."
msgstr ""
-#: ../svn/info-cmd.c:436 ../svnadmin/svnadmin.c:2304
-#: ../svnadmin/svnadmin.c:2540
+#: ../svn/info-cmd.c:436 ../svnadmin/svnadmin.c:2305
+#: ../svnadmin/svnadmin.c:2541
#, c-format
msgid "Path: %s\n"
msgstr ""
@@ -12620,7 +12620,7 @@ msgid "Second revision required"
msgstr ""
#: ../svn/merge-cmd.c:368 ../svn/merge-cmd.c:395 ../svn/mergeinfo-cmd.c:361
-#: ../svnadmin/svnadmin.c:2508 ../svnlook/svnlook.c:2052
+#: ../svnadmin/svnadmin.c:2509 ../svnlook/svnlook.c:2052
#: ../svnlook/svnlook.c:2246 ../svnlook/svnlook.c:2350
#: ../svnlook/svnlook.c:2385
msgid "Too many arguments given"
@@ -13069,7 +13069,7 @@ msgstr ""
msgid "Transmitting file data "
msgstr ""
-#: ../svn/notify.c:968 ../svnadmin/svnadmin.c:2485 ../svnbench/notify.c:749
+#: ../svn/notify.c:968 ../svnadmin/svnadmin.c:2486 ../svnbench/notify.c:749
#, c-format
msgid "'%s' locked by user '%s'.\n"
msgstr ""
@@ -15556,7 +15556,7 @@ msgstr ""
msgid "There is no change 0"
msgstr ""
-#: ../svn/svn.c:2261 ../svnadmin/svnadmin.c:2865 ../svnbench/svnbench.c:570
+#: ../svn/svn.c:2261 ../svnadmin/svnadmin.c:2866 ../svnbench/svnbench.c:570
#: ../svnfsfs/svnfsfs.c:291 ../svnrdump/svnrdump.c:855
#: ../svnsync/svnsync.c:2141
#, c-format
@@ -15620,7 +15620,7 @@ msgstr ""
msgid "Subcommand argument required\n"
msgstr ""
-#: ../svn/svn.c:2731 ../svnadmin/svnadmin.c:3091 ../svnbench/svnbench.c:768
+#: ../svn/svn.c:2731 ../svnadmin/svnadmin.c:3092 ../svnbench/svnbench.c:768
#: ../svndumpfilter/svndumpfilter.c:1442 ../svnfsfs/svnfsfs.c:367
#: ../svnlook/svnlook.c:2677 ../svnrdump/svnrdump.c:978
#, c-format
@@ -16536,13 +16536,13 @@ msgid ""
"using --bypass-prop-validation while loading."
msgstr ""
-#: ../svnadmin/svnadmin.c:1814 ../svnadmin/svnadmin.c:2713
+#: ../svnadmin/svnadmin.c:1814 ../svnadmin/svnadmin.c:2714
msgid ""
"Failed to get exclusive repository access; perhaps another process\n"
"such as httpd, svnserve or svn has it open?"
msgstr ""
-#: ../svnadmin/svnadmin.c:1819 ../svnadmin/svnadmin.c:2718
+#: ../svnadmin/svnadmin.c:1819 ../svnadmin/svnadmin.c:2719
#, c-format
msgid "Waiting on repository lock; perhaps another process has it open?\n"
msgstr ""
@@ -16565,140 +16565,140 @@ msgid "Transaction '%s' removed.\n"
msgstr ""
#: ../svnadmin/svnadmin.c:2028 ../svnadmin/svnadmin.c:2142
-#: ../svnadmin/svnadmin.c:2763
+#: ../svnadmin/svnadmin.c:2764
#, c-format
msgid "--revision (-r) and --transaction (-t) are mutually exclusive"
msgstr ""
-#: ../svnadmin/svnadmin.c:2034 ../svnadmin/svnadmin.c:2769
+#: ../svnadmin/svnadmin.c:2034 ../svnadmin/svnadmin.c:2770
#, c-format
msgid "Calling hooks is incompatible with --transaction (-t)"
msgstr ""
#: ../svnadmin/svnadmin.c:2039 ../svnadmin/svnadmin.c:2084
-#: ../svnadmin/svnadmin.c:2774
+#: ../svnadmin/svnadmin.c:2775
#, c-format
msgid "Missing revision"
msgstr ""
#: ../svnadmin/svnadmin.c:2042 ../svnadmin/svnadmin.c:2087
-#: ../svnadmin/svnadmin.c:2777
+#: ../svnadmin/svnadmin.c:2778
#, c-format
msgid "Only one revision allowed"
msgstr ""
-#: ../svnadmin/svnadmin.c:2205
+#: ../svnadmin/svnadmin.c:2206
msgid ""
"\n"
"-----Summary of corrupt revisions-----\n"
msgstr ""
-#: ../svnadmin/svnadmin.c:2257
+#: ../svnadmin/svnadmin.c:2258
#, c-format
msgid "Failed to verify repository '%s'"
msgstr ""
-#: ../svnadmin/svnadmin.c:2309
+#: ../svnadmin/svnadmin.c:2310
#, c-format
msgid "UUID: %s\n"
msgstr ""
-#: ../svnadmin/svnadmin.c:2312
+#: ../svnadmin/svnadmin.c:2313
#, c-format
msgid "Revisions: %ld\n"
msgstr ""
-#: ../svnadmin/svnadmin.c:2318
+#: ../svnadmin/svnadmin.c:2319
#, c-format
msgid "Repository Format: %d\n"
msgstr ""
-#: ../svnadmin/svnadmin.c:2332
+#: ../svnadmin/svnadmin.c:2333
#, c-format
msgid "Compatible With Version: %d.%d.0\n"
msgstr ""
-#: ../svnadmin/svnadmin.c:2351
+#: ../svnadmin/svnadmin.c:2352
#, c-format
msgid "Repository Capability: %s\n"
msgstr ""
-#: ../svnadmin/svnadmin.c:2360
+#: ../svnadmin/svnadmin.c:2361
#, c-format
msgid "Filesystem Type: %s\n"
msgstr ""
-#: ../svnadmin/svnadmin.c:2362
+#: ../svnadmin/svnadmin.c:2363
#, c-format
msgid "Filesystem Format: %d\n"
msgstr ""
-#: ../svnadmin/svnadmin.c:2369
+#: ../svnadmin/svnadmin.c:2370
#, c-format
msgid "FSFS Sharded: yes\n"
msgstr ""
-#: ../svnadmin/svnadmin.c:2371
+#: ../svnadmin/svnadmin.c:2372
#, c-format
msgid "FSFS Sharded: no\n"
msgstr ""
-#: ../svnadmin/svnadmin.c:2374
+#: ../svnadmin/svnadmin.c:2375
#, c-format
msgid "FSFS Shard Size: %d\n"
msgstr ""
-#: ../svnadmin/svnadmin.c:2383
+#: ../svnadmin/svnadmin.c:2384
#, c-format
msgid "FSFS Shards Packed: %ld/%ld\n"
msgstr ""
-#: ../svnadmin/svnadmin.c:2388
+#: ../svnadmin/svnadmin.c:2389
#, c-format
msgid "FSFS Logical Addressing: yes\n"
msgstr ""
-#: ../svnadmin/svnadmin.c:2390
+#: ../svnadmin/svnadmin.c:2391
#, c-format
msgid "FSFS Logical Addressing: no\n"
msgstr ""
-#: ../svnadmin/svnadmin.c:2400
+#: ../svnadmin/svnadmin.c:2401
#, c-format
msgid "FSX Shard Size: %d\n"
msgstr ""
-#: ../svnadmin/svnadmin.c:2402
+#: ../svnadmin/svnadmin.c:2403
#, c-format
msgid "FSX Shards Packed: %ld/%ld\n"
msgstr ""
-#: ../svnadmin/svnadmin.c:2413
+#: ../svnadmin/svnadmin.c:2414
#, c-format
msgid "Configuration File: %s\n"
msgstr ""
-#: ../svnadmin/svnadmin.c:2541 ../svnlook/svnlook.c:2281
+#: ../svnadmin/svnadmin.c:2542 ../svnlook/svnlook.c:2281
#, c-format
msgid "UUID Token: %s\n"
msgstr ""
-#: ../svnadmin/svnadmin.c:2542 ../svnlook/svnlook.c:2282
+#: ../svnadmin/svnadmin.c:2543 ../svnlook/svnlook.c:2282
#, c-format
msgid "Owner: %s\n"
msgstr ""
-#: ../svnadmin/svnadmin.c:2543 ../svnlook/svnlook.c:2283
+#: ../svnadmin/svnadmin.c:2544 ../svnlook/svnlook.c:2283
#, c-format
msgid "Created: %s\n"
msgstr ""
-#: ../svnadmin/svnadmin.c:2544 ../svnlook/svnlook.c:2284
+#: ../svnadmin/svnadmin.c:2545 ../svnlook/svnlook.c:2284
#, c-format
msgid "Expires: %s\n"
msgstr ""
-#: ../svnadmin/svnadmin.c:2546
+#: ../svnadmin/svnadmin.c:2547
#, c-format
msgid ""
"Comment (%i line):\n"
@@ -16711,82 +16711,82 @@ msgid_plural ""
msgstr[0] ""
msgstr[1] ""
-#: ../svnadmin/svnadmin.c:2594
+#: ../svnadmin/svnadmin.c:2595
msgid "No paths to unlock provided"
msgstr ""
-#: ../svnadmin/svnadmin.c:2612
+#: ../svnadmin/svnadmin.c:2613
#, c-format
msgid "Path '%s' isn't locked.\n"
msgstr ""
-#: ../svnadmin/svnadmin.c:2626
+#: ../svnadmin/svnadmin.c:2627
#, c-format
msgid "Removed lock on '%s'.\n"
msgstr ""
-#: ../svnadmin/svnadmin.c:2680
+#: ../svnadmin/svnadmin.c:2681
#, c-format
msgid "'%s' unlocked by user '%s'.\n"
msgstr ""
-#: ../svnadmin/svnadmin.c:2728
+#: ../svnadmin/svnadmin.c:2729
msgid ""
"Upgrade of this repository's underlying versioned filesystem is not "
"supported; consider dumping and loading the data elsewhere"
msgstr ""
-#: ../svnadmin/svnadmin.c:2735
+#: ../svnadmin/svnadmin.c:2736
msgid ""
"Upgrade of this repository is not supported; consider dumping and loading "
"the data elsewhere"
msgstr ""
-#: ../svnadmin/svnadmin.c:2741
+#: ../svnadmin/svnadmin.c:2742
#, c-format
msgid ""
"\n"
"Upgrade completed.\n"
msgstr ""
-#: ../svnadmin/svnadmin.c:2855 ../svnfsfs/svnfsfs.c:281
+#: ../svnadmin/svnadmin.c:2856 ../svnfsfs/svnfsfs.c:281
#: ../svnrdump/svnrdump.c:843
msgid ""
"Multiple revision arguments encountered; try '-r N:M' instead of '-r N -r M'"
msgstr ""
-#: ../svnadmin/svnadmin.c:2938
+#: ../svnadmin/svnadmin.c:2939
#, c-format
msgid "Cannot create pre-1.0-compatible repositories"
msgstr ""
-#: ../svnadmin/svnadmin.c:2950
+#: ../svnadmin/svnadmin.c:2951
#, c-format
msgid "Cannot guarantee compatibility beyond the current running version (%s)"
msgstr ""
-#: ../svnadmin/svnadmin.c:3074 ../svnfsfs/svnfsfs.c:350
+#: ../svnadmin/svnadmin.c:3075 ../svnfsfs/svnfsfs.c:350
#, c-format
msgid "subcommand argument required\n"
msgstr ""
-#: ../svnadmin/svnadmin.c:3111 ../svnfsfs/svnfsfs.c:385
+#: ../svnadmin/svnadmin.c:3112 ../svnfsfs/svnfsfs.c:385
msgid "Repository argument required"
msgstr ""
-#: ../svnadmin/svnadmin.c:3119 ../svnfsfs/svnfsfs.c:393
+#: ../svnadmin/svnadmin.c:3120 ../svnfsfs/svnfsfs.c:393
#, c-format
msgid "'%s' is a URL when it should be a local path"
msgstr ""
-#: ../svnadmin/svnadmin.c:3149
+#: ../svnadmin/svnadmin.c:3150
#, c-format
msgid ""
"Subcommand '%s' doesn't accept option '%s'\n"
"Type 'svnadmin help %s' for usage.\n"
msgstr ""
-#: ../svnadmin/svnadmin.c:3180
+#: ../svnadmin/svnadmin.c:3181
msgid "Try 'svnadmin help' for more info"
msgstr ""
diff --git a/subversion/svnadmin/svnadmin.c b/subversion/svnadmin/svnadmin.c
index eb26c5a..2fb0613 100644
--- a/subversion/svnadmin/svnadmin.c
+++ b/subversion/svnadmin/svnadmin.c
@@ -2191,15 +2191,16 @@ subcommand_verify(apr_getopt_t *os, void *baton, apr_pool_t *pool)
check_cancel, NULL, pool));
/* Show the --keep-going error summary. */
- if (!opt_state->quiet
- && opt_state->keep_going
- && verify_baton.error_summary->nelts > 0)
+ if (opt_state->keep_going && verify_baton.error_summary->nelts > 0)
{
int rev_maxlength;
svn_revnum_t end_revnum;
apr_pool_t *iterpool;
int i;
+ if (feedback_stream == NULL) /* happens when we are in --quiet mode */
+ feedback_stream = recode_stream_create(stdout, pool);
+
svn_error_clear(
svn_stream_puts(feedback_stream,
_("\n-----Summary of corrupt revisions-----\n")));
diff --git a/subversion/tests/cmdline/shelve_tests.py b/subversion/tests/cmdline/shelve_tests.py
index a71ddbb..4b48bfc 100755
--- a/subversion/tests/cmdline/shelve_tests.py
+++ b/subversion/tests/cmdline/shelve_tests.py
@@ -25,7 +25,7 @@
######################################################################
# General modules
-import shutil, stat, re, os, logging
+import shutil, stat, re, os, sys, logging
logger = logging.getLogger()
@@ -44,7 +44,7 @@ Item = wc.StateItem
#----------------------------------------------------------------------
-def shelve_unshelve_verify(sbox):
+def shelve_unshelve_verify(sbox, global_opts=()):
"""Round-trip: shelve; verify all changes are reverted;
unshelve; verify all changes are restored.
"""
@@ -58,18 +58,18 @@ def shelve_unshelve_verify(sbox):
# Shelve; check there are no longer any modifications
svntest.actions.run_and_verify_svn(None, [],
- 'shelve', 'foo')
+ 'shelve', 'foo', *global_opts)
virginal_state = svntest.actions.get_virginal_state(wc_dir, 1)
svntest.actions.run_and_verify_status(wc_dir, virginal_state)
# Unshelve; check the original modifications are here again
svntest.actions.run_and_verify_svn(None, [],
- 'unshelve', 'foo')
+ 'unshelve', 'foo', *global_opts)
svntest.actions.run_and_verify_status(wc_dir, modified_state)
#----------------------------------------------------------------------
-def shelve_unshelve(sbox, modifier):
+def shelve_unshelve(sbox, modifier, global_opts=()):
"""Round-trip: build 'sbox'; apply changes by calling 'modifier(sbox)';
shelve and unshelve; verify changes are fully reverted and restored.
"""
@@ -82,7 +82,7 @@ def shelve_unshelve(sbox, modifier):
# Make some changes to the working copy
modifier(sbox)
- shelve_unshelve_verify(sbox)
+ shelve_unshelve_verify(sbox, global_opts)
os.chdir(was_cwd)
@@ -156,6 +156,35 @@ def shelve_from_inner_path(sbox):
#----------------------------------------------------------------------
+def shelve_ignores_external_diff(sbox):
+ "shelve ignores external diff"
+
+ def modifier(sbox):
+ sbox.simple_append('A/mu', 'appended mu text')
+
+ sbox.build()
+ was_cwd = os.getcwd()
+ os.chdir(sbox.ospath('A'))
+ sbox.wc_dir = '..'
+
+ # Configure an external 'diff-cmd' that doesn't print a diff to stdout.
+ # (This path needs an explicit directory component to avoid searching.)
+ diff_script_path = os.path.join('.', 'diff')
+ svntest.main.create_python_hook_script(diff_script_path, 'import sys\n'
+ 'for arg in sys.argv[1:]:\n print(arg)\n')
+ if sys.platform == 'win32':
+ diff_script_path = "%s.bat" % diff_script_path
+ config_dir_path = sbox.get_tempname(prefix="config-dir")
+ os.mkdir(config_dir_path)
+ with open(os.path.join(config_dir_path, "config"), "w") as config_file:
+ config_file.write("[helpers]\n"
+ "diff-cmd = %s\n" % diff_script_path)
+
+ modifier(sbox)
+ shelve_unshelve_verify(sbox, global_opts=("--config-dir", config_dir_path))
+
+ os.chdir(was_cwd)
+
########################################################################
# Run the tests
@@ -166,6 +195,7 @@ test_list = [ None,
shelve_adds,
shelve_deletes,
shelve_from_inner_path,
+ shelve_ignores_external_diff,
]
if __name__ == '__main__':
diff --git a/subversion/tests/cmdline/svnadmin_tests.py b/subversion/tests/cmdline/svnadmin_tests.py
index 40b5e97..c0a3862 100755
--- a/subversion/tests/cmdline/svnadmin_tests.py
+++ b/subversion/tests/cmdline/svnadmin_tests.py
@@ -53,6 +53,24 @@ Wimp = svntest.testcase.Wimp_deco
SkipDumpLoadCrossCheck = svntest.testcase.SkipDumpLoadCrossCheck_deco
Item = svntest.wc.StateItem
+def read_rep_cache(repo_dir):
+ """Return the rep-cache contents as a dict {hash: (rev, index, ...)}.
+ """
+ db_path = os.path.join(repo_dir, 'db', 'rep-cache.db')
+ db1 = svntest.sqlite3.connect(db_path)
+ schema1 = db1.execute("pragma user_version").fetchone()[0]
+ # Can't test newer rep-cache schemas with an old built-in SQLite; see the
+ # documentation of STMT_CREATE_SCHEMA_V2 in ../../libsvn_fs_fs/rep-cache-db.sql
+ if schema1 >= 2 and svntest.sqlite3.sqlite_version_info < (3, 8, 2):
+ raise svntest.Failure("Can't read rep-cache schema %d using old "
+ "Python-SQLite version %s < (3,8,2)" %
+ (schema1,
+ svntest.sqlite3.sqlite_version_info))
+
+ content = { row[0]: row[1:] for row in
+ db1.execute("select * from rep_cache") }
+ return content
+
def check_hotcopy_bdb(src, dst):
"Verify that the SRC BDB repository has been correctly copied to DST."
### TODO: This function should be extended to verify all hotcopied files,
@@ -3823,6 +3841,65 @@ def load_issue4725(sbox):
sbox2.build(create_wc=False, empty=True)
load_and_verify_dumpstream(sbox2, None, [], None, False, dump, '-M100')
+def check_recover_prunes_rep_cache(sbox, enable_rep_sharing):
+ """Check 'recover' prunes the rep-cache while enable-rep-sharing is
+ true/false.
+ """
+ # Remember the initial rep cache content.
+ rep_cache_r1 = read_rep_cache(sbox.repo_dir)
+ #print '\n'.join([h + ": " + repr(ref) for h, ref in rep_cache_r1.items()])
+
+ # Commit one new rep and check the rep-cache is extended.
+ sbox.simple_append('iota', 'New line.\n')
+ sbox.simple_commit()
+ rep_cache_r2 = read_rep_cache(sbox.repo_dir)
+ if not (len(rep_cache_r2) == len(rep_cache_r1) + 1):
+ raise svntest.Failure
+
+ fsfs_conf = svntest.main.get_fsfs_conf_file_path(sbox.repo_dir)
+ svntest.main.file_append(fsfs_conf,
+ # Add a newline in case the existing file doesn't
+ # end with one.
+ "\n"
+ "[rep-sharing]\n"
+ "enable-rep-sharing = %s\n"
+ % (('true' if enable_rep_sharing else 'false'),))
+
+ # Break r2 in such a way that 'recover' will discard it
+ head_rev_path = fsfs_file(sbox.repo_dir, 'revs', '2')
+ os.remove(head_rev_path)
+ current_path = os.path.join(sbox.repo_dir, 'db', 'current')
+ svntest.main.file_write(current_path, '1\n')
+
+ # Recover back to r1.
+ svntest.actions.run_and_verify_svnadmin(None, [],
+ "recover", sbox.repo_dir)
+ svntest.actions.run_and_verify_svnlook(['1\n'], [], 'youngest',
+ sbox.repo_dir)
+
+ # Check the rep-cache is pruned.
+ rep_cache_recovered = read_rep_cache(sbox.repo_dir)
+ if not (rep_cache_recovered == rep_cache_r1):
+ raise svntest.Failure
+
+@Issue(4077)
+@SkipUnless(svntest.main.is_fs_type_fsfs)
+@SkipUnless(svntest.main.python_sqlite_can_read_without_rowid)
+def recover_prunes_rep_cache_when_enabled(sbox):
+ "recover prunes rep cache when enabled"
+ sbox.build()
+
+ check_recover_prunes_rep_cache(sbox, enable_rep_sharing=True)
+
+@Issue(4077)
+@SkipUnless(svntest.main.is_fs_type_fsfs)
+@SkipUnless(svntest.main.python_sqlite_can_read_without_rowid)
+def recover_prunes_rep_cache_when_disabled(sbox):
+ "recover prunes rep cache when disabled"
+ sbox.build()
+
+ check_recover_prunes_rep_cache(sbox, enable_rep_sharing=False)
+
########################################################################
# Run the tests
@@ -3897,6 +3974,8 @@ test_list = [ None,
dump_exclude_all_rev_changes,
dump_invalid_filtering_option,
load_issue4725,
+ recover_prunes_rep_cache_when_enabled,
+ recover_prunes_rep_cache_when_disabled,
]
if __name__ == '__main__':
diff --git a/subversion/tests/cmdline/svntest/main.py b/subversion/tests/cmdline/svntest/main.py
index 09a9722..ef281cd 100644
--- a/subversion/tests/cmdline/svntest/main.py
+++ b/subversion/tests/cmdline/svntest/main.py
@@ -1633,6 +1633,15 @@ def server_has_atomic_revprop():
def server_has_reverse_get_file_revs():
return options.server_caps.has_reverse_get_file_revs
+def python_sqlite_can_read_our_wc_db():
+ """Check if the Python builtin is capable enough to peek into wc.db"""
+ # Currently enough (1.7-1.9)
+ return svntest.sqlite3.sqlite_version_info >= (3, 6, 18)
+
+def python_sqlite_can_read_without_rowid():
+ """Check if the Python builtin is capable enough to read new rep-cache"""
+ return svntest.sqlite3.sqlite_version_info >= (3, 8, 2)
+
def is_plaintext_password_storage_disabled():
try:
predicate = re.compile("^WARNING: Plaintext password storage is enabled!")
diff --git a/subversion/tests/cmdline/svntest/wc.py b/subversion/tests/cmdline/svntest/wc.py
index f805dc9..ddfc439 100644
--- a/subversion/tests/cmdline/svntest/wc.py
+++ b/subversion/tests/cmdline/svntest/wc.py
@@ -1092,8 +1092,7 @@ def svn_uri_quote(url):
def python_sqlite_can_read_wc():
"""Check if the Python builtin is capable enough to peek into wc.db"""
- # Currently enough (1.7-1.9)
- return svntest.sqlite3.sqlite_version_info >= (3, 6, 18)
+ return svntest.main.python_sqlite_can_read_our_wc_db()
def open_wc_db(local_path):
"""Open the SQLite DB for the WC path LOCAL_PATH.
diff --git a/subversion/tests/libsvn_client/conflicts-test.c b/subversion/tests/libsvn_client/conflicts-test.c
index 0bcb464..9f113d9 100644
--- a/subversion/tests/libsvn_client/conflicts-test.c
+++ b/subversion/tests/libsvn_client/conflicts-test.c
@@ -164,6 +164,7 @@ static const char *trunk_path = "A";
static const char *branch_path = "A_branch";
static const char *branch2_path = "A_branch2";
static const char *new_file_name = "newfile.txt";
+static const char *new_file2_name = "newfile2.txt";
static const char *new_file_name_branch = "newfile-on-branch.txt";
static const char *deleted_file_name = "mu";
static const char *deleted_dir_name = "B";
@@ -608,7 +609,6 @@ create_wc_with_dir_add_vs_dir_add_merge_conflict(
svn_client_conflict_option_postpone,
svn_client_conflict_option_accept_current_wc_state,
svn_client_conflict_option_incoming_add_ignore,
- svn_client_conflict_option_incoming_added_dir_merge,
svn_client_conflict_option_incoming_added_dir_replace,
svn_client_conflict_option_incoming_added_dir_replace_and_merge,
-1 /* end of list */
@@ -1292,6 +1292,7 @@ test_merge_incoming_added_dir_replace_and_merge2(const svn_test_opts_t *opts,
static svn_error_t *
create_wc_with_incoming_delete_file_merge_conflict(svn_test__sandbox_t *b,
svn_boolean_t move,
+ svn_boolean_t move_unrelated,
svn_boolean_t do_switch)
{
svn_client_ctx_t *ctx;
@@ -1313,6 +1314,17 @@ create_wc_with_incoming_delete_file_merge_conflict(svn_test__sandbox_t *b,
deleted_path = svn_relpath_join(trunk_path, deleted_file_name, b->pool);
move_target_path = svn_relpath_join(trunk_path, new_file_name, b->pool);
SVN_ERR(sbox_wc_move(b, deleted_path, move_target_path));
+ if (move_unrelated)
+ {
+ /* Move an unrelated file on trunk as part of the same commit. */
+ deleted_path = svn_relpath_join(trunk_path,
+ svn_relpath_join(deleted_dir_name,
+ deleted_dir_child,
+ b->pool),
+ b->pool);
+ move_target_path = svn_relpath_join(trunk_path, new_file2_name, b->pool);
+ SVN_ERR(sbox_wc_move(b, deleted_path, move_target_path));
+ }
SVN_ERR(sbox_wc_commit(b, ""));
}
else
@@ -1378,7 +1390,8 @@ test_merge_incoming_delete_file_ignore(const svn_test_opts_t *opts,
SVN_ERR(svn_test__sandbox_create(b, "merge_incoming_delete_file_ignore",
opts, pool));
- SVN_ERR(create_wc_with_incoming_delete_file_merge_conflict(b, FALSE, FALSE));
+ SVN_ERR(create_wc_with_incoming_delete_file_merge_conflict(b, FALSE, FALSE,
+ FALSE));
/* Resolve the tree conflict. */
SVN_ERR(svn_test__create_client_ctx(&ctx, b, b->pool));
@@ -1470,7 +1483,8 @@ test_merge_incoming_delete_file_accept(const svn_test_opts_t *opts,
SVN_ERR(svn_test__sandbox_create(b, "merge_incoming_delete_file_accept",
opts, pool));
- SVN_ERR(create_wc_with_incoming_delete_file_merge_conflict(b, FALSE, FALSE));
+ SVN_ERR(create_wc_with_incoming_delete_file_merge_conflict(b, FALSE, FALSE,
+ FALSE));
/* Resolve the tree conflict. */
SVN_ERR(svn_test__create_client_ctx(&ctx, b, b->pool));
@@ -1565,7 +1579,8 @@ test_merge_incoming_move_file_text_merge(const svn_test_opts_t *opts,
SVN_ERR(svn_test__sandbox_create(b, "merge_incoming_move_file_text_merge",
opts, pool));
- SVN_ERR(create_wc_with_incoming_delete_file_merge_conflict(b, TRUE, FALSE));
+ SVN_ERR(create_wc_with_incoming_delete_file_merge_conflict(b, TRUE, FALSE,
+ FALSE));
/* Resolve the tree conflict. */
SVN_ERR(svn_test__create_client_ctx(&ctx, b, b->pool));
@@ -1971,7 +1986,8 @@ test_switch_incoming_move_file_text_merge(const svn_test_opts_t *opts,
SVN_ERR(svn_test__sandbox_create(b, "switch_incoming_move_file_text_merge",
opts, pool));
- SVN_ERR(create_wc_with_incoming_delete_file_merge_conflict(b, TRUE, TRUE));
+ SVN_ERR(create_wc_with_incoming_delete_file_merge_conflict(b, TRUE, FALSE,
+ TRUE));
/* Resolve the tree conflict. */
SVN_ERR(svn_test__create_client_ctx(&ctx, b, b->pool));
@@ -5179,6 +5195,392 @@ test_merge_incoming_move_dir_across_branches(const svn_test_opts_t *opts,
return SVN_NO_ERROR;
}
+static svn_error_t *
+test_update_incoming_delete_locally_deleted_file(const svn_test_opts_t *opts,
+ apr_pool_t *pool)
+{
+ svn_test__sandbox_t *b = apr_palloc(pool, sizeof(*b));
+ svn_client_ctx_t *ctx;
+ svn_client_conflict_t *conflict;
+ svn_boolean_t text_conflicted;
+ apr_array_header_t *props_conflicted;
+ svn_boolean_t tree_conflicted;
+ svn_wc_status3_t *wc_status;
+
+ SVN_ERR(svn_test__sandbox_create(
+ b, "update_incoming_delete_locally_deleted_file", opts, pool));
+
+ SVN_ERR(sbox_add_and_commit_greek_tree(b));
+ /* Delete the file. */
+ SVN_ERR(sbox_wc_delete(b, "A/mu"));
+ SVN_ERR(sbox_wc_commit(b, ""));
+ /* Update to revision before delete. */
+ SVN_ERR(sbox_wc_update(b, "", 1));
+ /* Delete the file locally. */
+ SVN_ERR(sbox_wc_delete(b, "A/mu"));
+ /* Attempt an update to HEAD. */
+ SVN_ERR(sbox_wc_update(b, "", SVN_INVALID_REVNUM));
+
+ /* We should have a tree conflict in the file "mu". */
+ SVN_ERR(svn_test__create_client_ctx(&ctx, b, pool));
+ SVN_ERR(svn_client_conflict_get(&conflict, sbox_wc_path(b, "A/mu"),
+ ctx, pool, pool));
+ SVN_ERR(svn_client_conflict_get_conflicted(&text_conflicted,
+ &props_conflicted,
+ &tree_conflicted,
+ conflict, pool, pool));
+ SVN_TEST_ASSERT(!text_conflicted);
+ SVN_TEST_INT_ASSERT(props_conflicted->nelts, 0);
+ SVN_TEST_ASSERT(tree_conflicted);
+
+ /* Check available tree conflict resolution options. */
+ {
+ svn_client_conflict_option_id_t expected_opts[] = {
+ svn_client_conflict_option_postpone,
+ svn_client_conflict_option_accept_current_wc_state,
+ svn_client_conflict_option_incoming_delete_accept,
+ -1 /* end of list */
+ };
+ SVN_ERR(assert_tree_conflict_options(conflict, ctx, expected_opts, pool));
+ }
+
+ SVN_ERR(svn_client_conflict_tree_get_details(conflict, ctx, pool));
+
+ {
+ svn_client_conflict_option_id_t expected_opts[] = {
+ svn_client_conflict_option_postpone,
+ svn_client_conflict_option_accept_current_wc_state,
+ svn_client_conflict_option_incoming_delete_accept,
+ -1 /* end of list */
+ };
+ SVN_ERR(assert_tree_conflict_options(conflict, ctx, expected_opts, pool));
+ }
+
+ /* Resolve the tree conflict accepting the incoming deletion. */
+ SVN_ERR(svn_client_conflict_tree_resolve_by_id(
+ conflict, svn_client_conflict_option_incoming_delete_accept,
+ ctx, pool));
+
+ /* Check the status. */
+ SVN_ERR(svn_wc_status3(&wc_status, ctx->wc_ctx, sbox_wc_path(b, "A/mu"),
+ pool, pool));
+ SVN_TEST_INT_ASSERT(wc_status->kind, svn_node_unknown);
+ SVN_TEST_ASSERT(!wc_status->versioned);
+ SVN_TEST_ASSERT(!wc_status->conflicted);
+ SVN_TEST_INT_ASSERT(wc_status->node_status, svn_wc_status_none);
+ SVN_TEST_INT_ASSERT(wc_status->text_status, svn_wc_status_none);
+ SVN_TEST_INT_ASSERT(wc_status->prop_status, svn_wc_status_none);
+ SVN_TEST_INT_ASSERT(wc_status->actual_kind, svn_node_none);
+
+ return SVN_NO_ERROR;
+}
+
+/* A helper function which prepares a working copy for the test below. */
+static svn_error_t *
+create_wc_with_added_dir_conflict_across_branches(svn_test__sandbox_t *b,
+ svn_client_ctx_t *ctx)
+{
+ const char *trunk_url;
+ const char *branch_url;
+ svn_opt_revision_t opt_rev;
+ const char *new_dir_path;
+ const char *new_file_path;
+
+ SVN_ERR(sbox_add_and_commit_greek_tree(b));
+
+ /* Create a branch of node "A". */
+ SVN_ERR(sbox_wc_copy(b, trunk_path, branch_path));
+ SVN_ERR(sbox_wc_commit(b, ""));
+
+ /* Create a second branch ("branch2") of node "A". */
+ SVN_ERR(sbox_wc_copy(b, trunk_path, branch2_path));
+ SVN_ERR(sbox_wc_commit(b, ""));
+
+ /* Add directories with differing content to both branches. */
+ new_dir_path = svn_relpath_join(branch_path, new_dir_name, b->pool);
+ SVN_ERR(sbox_wc_mkdir(b, new_dir_path));
+ new_file_path = svn_relpath_join(new_dir_path, new_file_name, b->pool);
+ SVN_ERR(sbox_file_write(b, new_file_path,
+ "This is a new file on branch 1\n"));
+ SVN_ERR(sbox_wc_add(b, new_file_path));
+ SVN_ERR(sbox_wc_commit(b, ""));
+
+ new_dir_path = svn_relpath_join(branch2_path, new_dir_name, b->pool);
+ SVN_ERR(sbox_wc_mkdir(b, new_dir_path));
+ new_file_path = svn_relpath_join(new_dir_path, new_file_name, b->pool);
+ SVN_ERR(sbox_file_write(b, new_file_path,
+ "This is a new file on branch 2\n"));
+ SVN_ERR(sbox_wc_add(b, new_file_path));
+ SVN_ERR(sbox_wc_commit(b, ""));
+
+ /* Merge the differences between trunk and branch into branch2.
+ * This merge should raise an add vs. add conflict on the new directory. */
+ SVN_ERR(sbox_wc_update(b, "", SVN_INVALID_REVNUM));
+ opt_rev.kind = svn_opt_revision_head;
+ opt_rev.value.number = SVN_INVALID_REVNUM;
+ trunk_url = apr_pstrcat(b->pool, b->repos_url, "/", trunk_path,
+ SVN_VA_NULL);
+ branch_url = apr_pstrcat(b->pool, b->repos_url, "/", branch2_path,
+ SVN_VA_NULL);
+ opt_rev.kind = svn_opt_revision_head;
+ opt_rev.value.number = SVN_INVALID_REVNUM;
+ SVN_ERR(svn_client_merge5(trunk_url, &opt_rev, branch_url, &opt_rev,
+ sbox_wc_path(b, branch2_path),
+ svn_depth_infinity,
+ FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
+ NULL, ctx, b->pool));
+ return SVN_NO_ERROR;
+}
+
+static svn_error_t *
+test_merge_two_added_dirs_assertion_failure(const svn_test_opts_t *opts,
+ apr_pool_t *pool)
+{
+ svn_test__sandbox_t *b = apr_palloc(pool, sizeof(*b));
+ svn_client_ctx_t *ctx;
+ svn_client_conflict_t *conflict;
+ svn_boolean_t text_conflicted;
+ apr_array_header_t *props_conflicted;
+ svn_boolean_t tree_conflicted;
+ svn_wc_status3_t *wc_status;
+ const char *new_dir_path;
+
+ SVN_ERR(svn_test__sandbox_create(
+ b, "test_merge_two_added_dirs_assertion_failure", opts, pool));
+
+ SVN_ERR(svn_test__create_client_ctx(&ctx, b, pool));
+ SVN_ERR(create_wc_with_added_dir_conflict_across_branches(b, ctx));
+
+ /* We should have a tree conflict in the directory "A_branch2/newdir". */
+ new_dir_path = svn_relpath_join(branch2_path, new_dir_name, b->pool);
+ SVN_ERR(svn_client_conflict_get(&conflict, sbox_wc_path(b, new_dir_path),
+ ctx, pool, pool));
+ SVN_ERR(svn_client_conflict_get_conflicted(&text_conflicted,
+ &props_conflicted,
+ &tree_conflicted,
+ conflict, pool, pool));
+ SVN_TEST_ASSERT(!text_conflicted);
+ SVN_TEST_INT_ASSERT(props_conflicted->nelts, 0);
+ SVN_TEST_ASSERT(tree_conflicted);
+
+ /* Check available tree conflict resolution options. */
+ {
+ svn_client_conflict_option_id_t expected_opts[] = {
+ svn_client_conflict_option_postpone,
+ svn_client_conflict_option_accept_current_wc_state,
+ svn_client_conflict_option_incoming_add_ignore,
+ svn_client_conflict_option_incoming_added_dir_replace,
+ svn_client_conflict_option_incoming_added_dir_replace_and_merge,
+ -1 /* end of list */
+ };
+ SVN_ERR(assert_tree_conflict_options(conflict, ctx, expected_opts, pool));
+ }
+
+ /* This call used to run into an assertion failure (start_rev > end_rev). */
+ SVN_ERR(svn_client_conflict_tree_get_details(conflict, ctx, pool));
+
+ {
+ svn_client_conflict_option_id_t expected_opts[] = {
+ svn_client_conflict_option_postpone,
+ svn_client_conflict_option_accept_current_wc_state,
+ svn_client_conflict_option_incoming_add_ignore,
+ svn_client_conflict_option_incoming_added_dir_replace,
+ svn_client_conflict_option_incoming_added_dir_replace_and_merge,
+ -1 /* end of list */
+ };
+ SVN_ERR(assert_tree_conflict_options(conflict, ctx, expected_opts, pool));
+ }
+
+ /* Resolve the tree conflict by replace + merge. */
+ SVN_ERR(svn_client_conflict_tree_resolve_by_id(
+ conflict,
+ svn_client_conflict_option_incoming_added_dir_replace_and_merge,
+ ctx, pool));
+
+ /* Check the status. */
+ SVN_ERR(svn_wc_status3(&wc_status, ctx->wc_ctx, sbox_wc_path(b, new_dir_path),
+ pool, pool));
+ SVN_TEST_INT_ASSERT(wc_status->kind, svn_node_dir);
+ SVN_TEST_ASSERT(wc_status->versioned);
+ SVN_TEST_ASSERT(!wc_status->conflicted);
+ SVN_TEST_INT_ASSERT(wc_status->node_status, svn_wc_status_replaced);
+ SVN_TEST_INT_ASSERT(wc_status->text_status, svn_wc_status_normal);
+ SVN_TEST_INT_ASSERT(wc_status->prop_status, svn_wc_status_none);
+ SVN_TEST_INT_ASSERT(wc_status->actual_kind, svn_node_dir);
+
+ return SVN_NO_ERROR;
+}
+
+/* Test for issue #4766: resolver adds unrelated moves to move target list */
+static svn_error_t *
+test_merge_incoming_delete_file_unrelated_move(const svn_test_opts_t *opts,
+ apr_pool_t *pool)
+{
+ svn_test__sandbox_t *b = apr_palloc(pool, sizeof(*b));
+ svn_client_ctx_t *ctx;
+ const char *deleted_path;
+ svn_client_conflict_t *conflict;
+ svn_boolean_t tree_conflicted;
+ svn_boolean_t text_conflicted;
+ apr_array_header_t *props_conflicted;
+ struct status_baton sb;
+ struct svn_client_status_t *status;
+ svn_opt_revision_t opt_rev;
+ apr_array_header_t *possible_moved_to_repos_relpaths;
+ apr_array_header_t *options;
+ svn_client_conflict_option_t *option;
+ const char *new_file_path;
+ const char *moved_to_repos_path;
+ svn_node_kind_t kind;
+ svn_stringbuf_t *buf;
+
+ SVN_ERR(svn_test__sandbox_create(b,
+ "merge_incoming_delete_file_unrelated_move",
+ opts, pool));
+
+ SVN_ERR(create_wc_with_incoming_delete_file_merge_conflict(b, TRUE, TRUE,
+ FALSE));
+
+ /* Resolve the tree conflict. */
+ SVN_ERR(svn_test__create_client_ctx(&ctx, b, b->pool));
+ deleted_path = svn_relpath_join(branch_path, deleted_file_name, b->pool);
+ SVN_ERR(svn_client_conflict_get(&conflict, sbox_wc_path(b, deleted_path),
+ ctx, b->pool, b->pool));
+
+ {
+ svn_client_conflict_option_id_t expected_opts[] = {
+ svn_client_conflict_option_postpone,
+ svn_client_conflict_option_accept_current_wc_state,
+ svn_client_conflict_option_incoming_delete_ignore,
+ svn_client_conflict_option_incoming_delete_accept,
+ -1 /* end of list */
+ };
+ SVN_ERR(assert_tree_conflict_options(conflict, ctx, expected_opts,
+ b->pool));
+ }
+
+ SVN_ERR(svn_client_conflict_tree_get_details(conflict, ctx, b->pool));
+
+ {
+ svn_client_conflict_option_id_t expected_opts[] = {
+ svn_client_conflict_option_postpone,
+ svn_client_conflict_option_accept_current_wc_state,
+ svn_client_conflict_option_incoming_move_file_text_merge,
+ -1 /* end of list */
+ };
+ SVN_ERR(assert_tree_conflict_options(conflict, ctx, expected_opts,
+ b->pool));
+ }
+
+ SVN_ERR(svn_client_conflict_tree_get_resolution_options(&options, conflict,
+ ctx, b->pool,
+ b->pool));
+ option = svn_client_conflict_option_find_by_id(
+ options, svn_client_conflict_option_incoming_move_file_text_merge);
+ SVN_TEST_ASSERT(option != NULL);
+
+ /* Assert that only one move target candidate has been found in repository. */
+ SVN_ERR(svn_client_conflict_option_get_moved_to_repos_relpath_candidates(
+ &possible_moved_to_repos_relpaths, option, b->pool, b->pool));
+
+ SVN_TEST_INT_ASSERT(possible_moved_to_repos_relpaths->nelts, 1);
+ moved_to_repos_path = svn_relpath_join(trunk_path, new_file_name, b->pool);
+ SVN_TEST_STRING_ASSERT(
+ APR_ARRAY_IDX(possible_moved_to_repos_relpaths, 0, const char *), moved_to_repos_path);
+
+ SVN_ERR(svn_client_conflict_tree_resolve_by_id(
+ conflict, svn_client_conflict_option_incoming_move_file_text_merge,
+ ctx, b->pool));
+
+ /* Ensure that the deleted file has the expected status. */
+ opt_rev.kind = svn_opt_revision_working;
+ sb.result_pool = b->pool;
+ SVN_ERR(svn_client_status6(NULL, ctx, sbox_wc_path(b, deleted_path),
+ &opt_rev, svn_depth_unknown, TRUE, TRUE,
+ TRUE, TRUE, FALSE, TRUE, NULL,
+ status_func, &sb, b->pool));
+ status = sb.status;
+ SVN_TEST_ASSERT(status->kind == svn_node_file);
+ SVN_TEST_ASSERT(status->versioned);
+ SVN_TEST_ASSERT(!status->conflicted);
+ SVN_TEST_ASSERT(status->node_status == svn_wc_status_deleted);
+ SVN_TEST_ASSERT(status->text_status == svn_wc_status_normal);
+ SVN_TEST_ASSERT(status->prop_status == svn_wc_status_none);
+ SVN_TEST_ASSERT(!status->copied);
+ SVN_TEST_ASSERT(!status->switched);
+ SVN_TEST_ASSERT(!status->file_external);
+ SVN_TEST_ASSERT(status->moved_from_abspath == NULL);
+ new_file_path = svn_relpath_join(branch_path, new_file_name, b->pool);
+ SVN_TEST_STRING_ASSERT(status->moved_to_abspath,
+ sbox_wc_path(b, new_file_path));
+
+ SVN_ERR(svn_client_conflict_get(&conflict, sbox_wc_path(b, deleted_path),
+ ctx, b->pool, b->pool));
+
+ /* The file should not be in conflict. */
+ SVN_ERR(svn_client_conflict_get_conflicted(&text_conflicted,
+ &props_conflicted,
+ &tree_conflicted,
+ conflict, b->pool, b->pool));
+ SVN_TEST_ASSERT(!text_conflicted &&
+ props_conflicted->nelts == 0 &&
+ !tree_conflicted);
+
+ /* Ensure that the moved file has the expected status. */
+ opt_rev.kind = svn_opt_revision_working;
+ sb.result_pool = b->pool;
+ SVN_ERR(svn_client_status6(NULL, ctx, sbox_wc_path(b, new_file_path),
+ &opt_rev, svn_depth_unknown, TRUE, TRUE,
+ TRUE, TRUE, FALSE, TRUE, NULL,
+ status_func, &sb, b->pool));
+ status = sb.status;
+ SVN_TEST_ASSERT(status->kind == svn_node_file);
+ SVN_TEST_ASSERT(status->versioned);
+ SVN_TEST_ASSERT(!status->conflicted);
+ SVN_TEST_ASSERT(status->node_status == svn_wc_status_added);
+ SVN_TEST_ASSERT(status->text_status == svn_wc_status_normal);
+ SVN_TEST_ASSERT(status->prop_status == svn_wc_status_none);
+ SVN_TEST_ASSERT(status->copied);
+ SVN_TEST_ASSERT(!status->switched);
+ SVN_TEST_ASSERT(!status->file_external);
+ SVN_TEST_STRING_ASSERT(status->moved_from_abspath,
+ sbox_wc_path(b, deleted_path));
+ SVN_TEST_ASSERT(status->moved_to_abspath == NULL);
+
+ /* Ensure that the original file was removed. */
+ SVN_ERR(svn_io_check_path(sbox_wc_path(b, deleted_path), &kind, b->pool));
+ SVN_TEST_ASSERT(kind == svn_node_none);
+
+ /* Ensure that the moved file has the expected content. */
+ SVN_ERR(svn_stringbuf_from_file2(&buf, sbox_wc_path(b, new_file_path),
+ b->pool));
+ SVN_TEST_STRING_ASSERT(buf->data, modified_file_on_branch_content);
+
+ /* Ensure that the unrelated moved file has the expected status. */
+ opt_rev.kind = svn_opt_revision_working;
+ sb.result_pool = b->pool;
+ SVN_ERR(svn_client_status6(NULL, ctx,
+ sbox_wc_path(b, svn_relpath_join(branch_path,
+ new_file2_name, b->pool)),
+ &opt_rev, svn_depth_unknown, TRUE, TRUE,
+ TRUE, TRUE, FALSE, TRUE, NULL,
+ status_func, &sb, b->pool));
+ status = sb.status;
+ SVN_TEST_ASSERT(status->kind == svn_node_file);
+ SVN_TEST_ASSERT(status->versioned);
+ SVN_TEST_ASSERT(!status->conflicted);
+ SVN_TEST_ASSERT(status->node_status == svn_wc_status_added);
+ SVN_TEST_ASSERT(status->text_status == svn_wc_status_normal);
+ SVN_TEST_ASSERT(status->prop_status == svn_wc_status_none);
+ SVN_TEST_ASSERT(status->copied);
+ SVN_TEST_ASSERT(!status->switched);
+ SVN_TEST_ASSERT(!status->file_external);
+ SVN_TEST_ASSERT(status->moved_from_abspath == NULL);
+ SVN_TEST_ASSERT(status->moved_to_abspath == NULL);
+
+ return SVN_NO_ERROR;
+}
+
/* ========================================================================== */
@@ -5268,7 +5670,13 @@ static struct svn_test_descriptor_t test_funcs[] =
SVN_TEST_OPTS_XFAIL(test_cherry_pick_post_move_edit,
"cherry-pick edit from moved file"),
SVN_TEST_OPTS_PASS(test_merge_incoming_move_dir_across_branches,
- "merge incoming dir move across branches"),
+ "merge incoming dir move across branches"),
+ SVN_TEST_OPTS_PASS(test_update_incoming_delete_locally_deleted_file,
+ "update incoming delete to deleted file (#4739)"),
+ SVN_TEST_OPTS_PASS(test_merge_two_added_dirs_assertion_failure,
+ "merge two added dirs assertion failure (#4744)"),
+ SVN_TEST_OPTS_PASS(test_merge_incoming_delete_file_unrelated_move,
+ "do not suggest unrelated move targets (#4766)"),
SVN_TEST_NULL
};