Patch + log message attached. It changes the expected output, and I'm not
sure how strictly compatible we want to be about that, hence posting here
first.
If I don't hear anything I'll go ahead and commit.
(It seems that the code being changed is passing an APR-encoded path to
a printing function that expects a UTF-8 argument? This might even be
user-visible as mangled output in non-UTF-8 environments, I suppose,
but I don't have such an environment to test with.)
Cheers,
Daniel
[[[
svnadmin: Print LOCK_PATH's correctly.
* subversion/svnadmin/svnadmin.c
(subcommand_lock,
subcommand_unlock,
subcommand_rmlocks): Print the UTF-8, canonical version of the path.
Using UTF-8 is a requirement of the API; using the canonical version
is consistent with the cmdline client.
* subversion/tests/cmdline/svnadmin_tests.py
(locking): Add leading slash to expected outputs.
]]]
[[[
Index: subversion/svnadmin/svnadmin.c
===================================================================
--- subversion/svnadmin/svnadmin.c (revision 1796426)
+++ subversion/svnadmin/svnadmin.c (working copy)
@@ -2357,7 +2357,7 @@ subcommand_lock(apr_getopt_t *os, void *baton, apr
if (! opt_state->quiet)
SVN_ERR(svn_cmdline_printf(pool, _("'%s' locked by user '%s'.\n"),
- lock_path, username));
+ lock_path_utf8, username));
return SVN_NO_ERROR;
}
@@ -2486,9 +2486,10 @@ subcommand_rmlocks(apr_getopt_t *os, void *baton,
if (! opt_state->quiet)
SVN_ERR(svn_cmdline_printf(subpool,
_("Path '%s' isn't locked.\n"),
- lock_path));
+ lock_path_utf8));
continue;
}
+ lock = NULL; /* Don't access LOCK after this point. */
/* Now forcibly destroy the lock. */
err = svn_fs_unlock(fs, lock_path_utf8,
@@ -2498,7 +2499,8 @@ subcommand_rmlocks(apr_getopt_t *os, void *baton,
if (! opt_state->quiet)
SVN_ERR(svn_cmdline_printf(subpool,
- _("Removed lock on '%s'.\n"), lock->path));
+ _("Removed lock on '%s'.\n"),
+ lock_path_utf8));
move_on:
if (err)
@@ -2553,7 +2555,7 @@ subcommand_unlock(apr_getopt_t *os, void *baton, a
if (! opt_state->quiet)
SVN_ERR(svn_cmdline_printf(pool, _("'%s' unlocked by user '%s'.\n"),
- lock_path, username));
+ lock_path_utf8, username));
return SVN_NO_ERROR;
}
Index: subversion/tests/cmdline/svnadmin_tests.py
===================================================================
--- subversion/tests/cmdline/svnadmin_tests.py (revision 1796405)
+++ subversion/tests/cmdline/svnadmin_tests.py (working copy)
@@ -1901,7 +1901,7 @@ def locking(sbox):
invalid_comment_path)
# Test locking path with --bypass-hooks
- expected_output = "'iota' locked by user 'jrandom'."
+ expected_output = "'/iota' locked by user 'jrandom'."
svntest.actions.run_and_verify_svnadmin(expected_output,
None, "lock",
sbox.repo_dir,
@@ -1915,7 +1915,7 @@ def locking(sbox):
sbox.repo_dir, "iota")
# Test locking path without --bypass-hooks
- expected_output = "'iota' locked by user 'jrandom'."
+ expected_output = "'/iota' locked by user 'jrandom'."
svntest.actions.run_and_verify_svnadmin(expected_output,
None, "lock",
sbox.repo_dir,
@@ -1939,7 +1939,7 @@ def locking(sbox):
comment_path)
# Test locking a path while specifying a lock token.
- expected_output = "'A/D/G/rho' locked by user 'jrandom'."
+ expected_output = "'/A/D/G/rho' locked by user 'jrandom'."
lock_token = "opaquelocktoken:01234567-89ab-cdef-89ab-cdef01234567"
svntest.actions.run_and_verify_svnadmin(expected_output,
None, "lock",
@@ -1958,7 +1958,7 @@ def locking(sbox):
# Test unlocking the path again, but this time provide the correct
# lock token.
- expected_output = "'A/D/G/rho' unlocked."
+ expected_output = "'/A/D/G/rho' unlocked."
svntest.actions.run_and_verify_svnadmin(expected_output,
None, "unlock",
sbox.repo_dir,
@@ -2004,7 +2004,7 @@ def locking(sbox):
# Finally, use --bypass-hooks to unlock the path (again using the
# correct lock token).
- expected_output = "'iota' unlocked."
+ expected_output = "'/iota' unlocked."
svntest.actions.run_and_verify_svnadmin(expected_output,
None, "unlock",
"--bypass-hooks",
]]]