You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by iv...@apache.org on 2014/06/30 12:15:08 UTC
svn commit: r1606666 [2/2] - in /subversion/branches/remove-log-addressing:
./ subversion/bindings/javahl/native/
subversion/bindings/javahl/native/jniwrapper/
subversion/bindings/javahl/src/org/apache/subversion/javahl/types/
subversion/bindings/javah...
Modified: subversion/branches/remove-log-addressing/subversion/tests/cmdline/merge_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/remove-log-addressing/subversion/tests/cmdline/merge_tests.py?rev=1606666&r1=1606665&r2=1606666&view=diff
==============================================================================
--- subversion/branches/remove-log-addressing/subversion/tests/cmdline/merge_tests.py (original)
+++ subversion/branches/remove-log-addressing/subversion/tests/cmdline/merge_tests.py Mon Jun 30 10:15:06 2014
@@ -4227,7 +4227,7 @@ def obey_reporter_api_semantics_while_do
copy_of_A_D_wc_rev = cur_rev
svntest.actions.run_and_verify_svn(None,
- ['\n',
+ ['Committing transaction...\n',
'Committed revision ' + str(cur_rev+1) +
'.\n'],
[],
@@ -6460,10 +6460,12 @@ def update_loses_mergeinfo(sbox):
A_B_url = sbox.repo_url + '/A/B'
A_B_J_url = sbox.repo_url + '/A/B/J'
A_B_K_url = sbox.repo_url + '/A/B/K'
- svntest.actions.run_and_verify_svn(None, ['\n', 'Committed revision 2.\n'],
+ svntest.actions.run_and_verify_svn(None, ['Committing transaction...\n',
+ 'Committed revision 2.\n'],
[],
'mkdir', '-m', 'rev 2', A_B_J_url)
- svntest.actions.run_and_verify_svn(None, ['\n', 'Committed revision 3.\n'],
+ svntest.actions.run_and_verify_svn(None, ['Committing transaction...\n',
+ 'Committed revision 3.\n'],
[],
'mkdir', '-m', 'rev 3', A_B_K_url)
@@ -6580,10 +6582,12 @@ def merge_loses_mergeinfo(sbox):
A_B_url = sbox.repo_url + '/A/B'
A_B_J_url = sbox.repo_url + '/A/B/J'
A_B_K_url = sbox.repo_url + '/A/B/K'
- svntest.actions.run_and_verify_svn(None, ['\n', 'Committed revision 2.\n'],
+ svntest.actions.run_and_verify_svn(None, ['Committing transaction...\n',
+ 'Committed revision 2.\n'],
[],
'mkdir', '-m', 'rev 2', A_B_J_url)
- svntest.actions.run_and_verify_svn(None, ['\n', 'Committed revision 3.\n'],
+ svntest.actions.run_and_verify_svn(None, ['Committing transaction...\n',
+ 'Committed revision 3.\n'],
[],
'mkdir', '-m', 'rev 3', A_B_K_url)
@@ -7724,7 +7728,8 @@ def merge_old_and_new_revs_from_renamed_
wc_status, None, wc_dir)
# Move A to A_MOVED
- svntest.actions.run_and_verify_svn(None, ['\n', 'Committed revision 4.\n'],
+ svntest.actions.run_and_verify_svn(None, ['Committing transaction...\n',
+ 'Committed revision 4.\n'],
[], 'mv', '-m', 'mv A to A_MOVED',
A_url, A_MOVED_url)
@@ -8145,7 +8150,8 @@ def merge_old_and_new_revs_from_renamed_
expected_status, None, wc_dir)
# Move mu to mu_MOVED
- svntest.actions.run_and_verify_svn(None, ['\n', 'Committed revision 4.\n'],
+ svntest.actions.run_and_verify_svn(None, ['Committing transaction...\n',
+ 'Committed revision 4.\n'],
[], 'mv', '-m', 'mv mu to mu_MOVED',
mu_url, mu_MOVED_url)
@@ -9143,7 +9149,8 @@ def merge_source_normalization_and_subtr
wc_disk, wc_status = set_up_branch(sbox)
# r7 - Move A to A_MOVED
- svntest.actions.run_and_verify_svn(None, ['\n', 'Committed revision 7.\n'],
+ svntest.actions.run_and_verify_svn(None, ['Committing transaction...',
+ 'Committed revision 7.\n'],
[], 'mv', '-m', 'mv A to A_MOVED',
sbox.repo_url + '/A',
sbox.repo_url + '/A_MOVED')
@@ -9889,7 +9896,8 @@ def dont_add_mergeinfo_from_own_history(
# out, leaving the only the mergeinfo created from the merge itself:
# '/A_COPY:7'.
svntest.actions.run_and_verify_svn(None,
- ['\n', 'Committed revision 8.\n'],
+ ['Committing transaction...\n',
+ 'Committed revision 8.\n'],
[], 'move',
sbox.repo_url + '/A',
sbox.repo_url + '/A_MOVED',
@@ -10543,9 +10551,11 @@ def merge_added_subtree(sbox):
A_COPY_url = url + "/A_COPY"
A_path = sbox.ospath('A')
- svntest.actions.run_and_verify_svn("",["\n", "Committed revision 2.\n"], [],
+ svntest.actions.run_and_verify_svn("",["Committing transaction...\n",
+ "Committed revision 2.\n"], [],
"cp", "-m", "", A_url, A_COPY_url)
- svntest.actions.run_and_verify_svn("",["\n", "Committed revision 3.\n"], [],
+ svntest.actions.run_and_verify_svn("",["Committing transaction...\n",
+ "Committed revision 3.\n"], [],
"cp", "-m", "",
A_COPY_url + '/D',
A_COPY_url + '/D2')
@@ -10804,7 +10814,8 @@ def dont_merge_revs_into_subtree_that_pr
# Copy 'A/D/H' to 'H_COPY' in r6.
svntest.actions.run_and_verify_svn(None,
- ['\n', 'Committed revision 6.\n'],
+ ['Committing transaction...\n',
+ 'Committed revision 6.\n'],
[], 'copy',
sbox.repo_url + "/A/D/H",
sbox.repo_url + "/H_COPY",
@@ -10956,7 +10967,8 @@ def set_up_renamed_subtree(sbox):
# Copy 'A/D/H' to 'H_COPY' in r5.
svntest.actions.run_and_verify_svn(None,
- ['\n', 'Committed revision 5.\n'],
+ ['Committing transaction...\n',
+ 'Committed revision 5.\n'],
[], 'copy',
sbox.repo_url + "/A/D/H",
sbox.repo_url + "/H_COPY",
@@ -13557,7 +13569,8 @@ def no_self_referential_filtering_on_add
# r10: Move A/C to A/C_MOVED.
svntest.actions.run_and_verify_svn(None,
- ['\n', 'Committed revision 10.\n'],
+ ['\n', 'Committing transaction...\n',
+ 'Committed revision 10.\n'],
[], 'move',
sbox.repo_url + '/A/C',
sbox.repo_url + '/A/C_MOVED',
@@ -13771,6 +13784,7 @@ def merge_range_prior_to_rename_source_e
# r12 - Move A/D/H/nu to A/D/H/nu_moved
svntest.actions.run_and_verify_svn(None, ["\n",
+ "Committing transaction...\n",
"Committed revision 12.\n"], [],
'move', sbox.repo_url + '/A/D/H/nu',
sbox.repo_url + '/A/D/H/nu_moved',
@@ -15093,7 +15107,8 @@ def committed_case_only_move_and_revert(
# r3: A case-only file rename on the server
svntest.actions.run_and_verify_svn(None,
- ['\n', 'Committed revision 3.\n'],
+ ['Committing transaction...\n',
+ 'Committed revision 3.\n'],
[], 'move',
sbox.repo_url + '/A/mu',
sbox.repo_url + '/A/MU',
@@ -15197,7 +15212,8 @@ def committed_case_only_move_and_revert(
# r5: A case-only directory rename on the server
svntest.actions.run_and_verify_svn(None,
- ['\n', 'Committed revision 5.\n'],
+ ['Committing transaction...\n',
+ 'Committed revision 5.\n'],
[], 'move',
sbox.repo_url + '/A/C',
sbox.repo_url + '/A/c',
@@ -17158,7 +17174,8 @@ def reverse_merge_with_rename(sbox):
# r7 - Rename ^/A to ^/trunk.
svntest.actions.run_and_verify_svn(None,
- ['\n', 'Committed revision 7.\n'],
+ ['Committing transaction...\n',
+ 'Committed revision 7.\n'],
[], 'move',
sbox.repo_url + '/A',
sbox.repo_url + '/trunk',
Modified: subversion/branches/remove-log-addressing/subversion/tests/cmdline/stat_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/remove-log-addressing/subversion/tests/cmdline/stat_tests.py?rev=1606666&r1=1606665&r2=1606666&view=diff
==============================================================================
--- subversion/branches/remove-log-addressing/subversion/tests/cmdline/stat_tests.py (original)
+++ subversion/branches/remove-log-addressing/subversion/tests/cmdline/stat_tests.py Mon Jun 30 10:15:06 2014
@@ -951,7 +951,9 @@ def status_ignored_dir(sbox):
new_dir = sbox.ospath('dir.o')
new_dir_url = sbox.repo_url + "/dir.o"
- svntest.actions.run_and_verify_svn("Create dir", "\n|Committed revision 2.", [],
+ svntest.actions.run_and_verify_svn("Create dir",
+ ["Committing transaction...\n",
+ "Committed revision 2.\n"], [],
'mkdir', new_dir_url, '-m', 'msg')
# Make a dir that is ignored by the default ignore patterns.
Modified: subversion/branches/remove-log-addressing/subversion/tests/cmdline/svnadmin_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/remove-log-addressing/subversion/tests/cmdline/svnadmin_tests.py?rev=1606666&r1=1606665&r2=1606666&view=diff
==============================================================================
--- subversion/branches/remove-log-addressing/subversion/tests/cmdline/svnadmin_tests.py (original)
+++ subversion/branches/remove-log-addressing/subversion/tests/cmdline/svnadmin_tests.py Mon Jun 30 10:15:06 2014
@@ -923,7 +923,8 @@ def load_with_parent_dir(sbox):
# Create 'sample' dir in sbox.repo_url, and load the dump stream there.
svntest.actions.run_and_verify_svn(None,
- ['\n', 'Committed revision 1.\n'],
+ ['Committing transaction...\n',
+ 'Committed revision 1.\n'],
[], "mkdir", sbox.repo_url + "/sample",
"-m", "Create sample dir")
load_dumpstream(sbox, dumpfile, '--parent-dir', '/sample')
@@ -945,7 +946,8 @@ def load_with_parent_dir(sbox):
# This time, don't include a leading slash on the --parent-dir argument.
# See issue #3547.
svntest.actions.run_and_verify_svn(None,
- ['\n', 'Committed revision 11.\n'],
+ ['Committing transaction...\n',
+ 'Committed revision 11.\n'],
[], "mkdir", sbox.repo_url + "/sample-2",
"-m", "Create sample-2 dir")
load_dumpstream(sbox, dumpfile, '--parent-dir', 'sample-2')
@@ -1018,7 +1020,8 @@ def reflect_dropped_renumbered_revs(sbox
dumpfile = open(dumpfile_location).read()
# Create 'toplevel' dir in sbox.repo_url
- svntest.actions.run_and_verify_svn(None, ['\n', 'Committed revision 1.\n'],
+ svntest.actions.run_and_verify_svn(None, ['Committing transaction...\n',
+ 'Committed revision 1.\n'],
[], "mkdir", sbox.repo_url + "/toplevel",
"-m", "Create toplevel dir")
Modified: subversion/branches/remove-log-addressing/subversion/tests/cmdline/svnrdump_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/remove-log-addressing/subversion/tests/cmdline/svnrdump_tests.py?rev=1606666&r1=1606665&r2=1606666&view=diff
==============================================================================
--- subversion/branches/remove-log-addressing/subversion/tests/cmdline/svnrdump_tests.py (original)
+++ subversion/branches/remove-log-addressing/subversion/tests/cmdline/svnrdump_tests.py Mon Jun 30 10:15:06 2014
@@ -431,7 +431,8 @@ def reflect_dropped_renumbered_revs(sbox
# Create the 'toplevel' directory in repository and then load the same
# dumpfile into that subtree.
- svntest.actions.run_and_verify_svn(None, ['\n', 'Committed revision 10.\n'],
+ svntest.actions.run_and_verify_svn(None, ['Committing transaction...\n',
+ 'Committed revision 10.\n'],
[], "mkdir", sbox.repo_url + "/toplevel",
"-m", "Create toplevel dir to load into")
svntest.actions.run_and_verify_svnrdump(svnrdump_dumpfile,
@@ -727,7 +728,8 @@ def svnrdump_load_partial_incremental_du
# Create the 'A' directory in repository and then load the partial
# incremental dump into the root of the repository.
- svntest.actions.run_and_verify_svn(None, ['\n', 'Committed revision 1.\n'],
+ svntest.actions.run_and_verify_svn(None, ['Committing transaction...\n',
+ 'Committed revision 1.\n'],
[], "mkdir", sbox.repo_url + "/A",
"-m", "Create toplevel dir to load into")
Modified: subversion/branches/remove-log-addressing/subversion/tests/cmdline/switch_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/remove-log-addressing/subversion/tests/cmdline/switch_tests.py?rev=1606666&r1=1606665&r2=1606666&view=diff
==============================================================================
--- subversion/branches/remove-log-addressing/subversion/tests/cmdline/switch_tests.py (original)
+++ subversion/branches/remove-log-addressing/subversion/tests/cmdline/switch_tests.py Mon Jun 30 10:15:06 2014
@@ -352,11 +352,13 @@ def delete_subdir(sbox):
A2_B_F_url = sbox.repo_url + '/A2/B/F'
svntest.actions.run_and_verify_svn(None,
- ['\n', 'Committed revision 2.\n'], [],
+ ['Committing transaction...\n',
+ 'Committed revision 2.\n'], [],
'cp', '-m', 'make copy', A_url, A2_url)
svntest.actions.run_and_verify_svn(None,
- ['\n', 'Committed revision 3.\n'], [],
+ ['Committing transaction...\n',
+ 'Committed revision 3.\n'], [],
'rm', '-m', 'delete subdir', A2_B_F_url)
expected_output = svntest.wc.State(wc_dir, {
@@ -482,7 +484,8 @@ def failed_anchor_is_target(sbox):
G_url = sbox.repo_url + '/A/D/G'
G_psi_url = G_url + '/psi'
svntest.actions.run_and_verify_svn(None,
- ['\n', 'Committed revision 2.\n'], [],
+ ['Committing transaction...\n',
+ 'Committed revision 2.\n'], [],
'mkdir', '-m', 'log msg', G_psi_url)
# Modify the file 'H/psi' locally.
@@ -543,7 +546,8 @@ def bad_intermediate_urls(sbox):
# First, make an extra subdirectory in C to match one in the root, plus
# another one inside of that.
svntest.actions.run_and_verify_svn(None,
- ['\n', 'Committed revision 2.\n'], [],
+ ['Committing transaction...\n',
+ 'Committed revision 2.\n'], [],
'mkdir', '-m', 'log msg',
url_A_C_A, url_A_C_A_Z)
@@ -1106,7 +1110,7 @@ def forced_switch_failures(sbox):
# Make dir A/D/H/I in repos.
# svn mkdir -m "Log message" url/A/D/H/I
expected_stdout = verify.UnorderedOutput([
- '\n',
+ 'Committing transaction...\n',
'Committed revision 2.\n',
])
Modified: subversion/branches/remove-log-addressing/subversion/tests/cmdline/update_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/remove-log-addressing/subversion/tests/cmdline/update_tests.py?rev=1606666&r1=1606665&r2=1606666&view=diff
==============================================================================
--- subversion/branches/remove-log-addressing/subversion/tests/cmdline/update_tests.py (original)
+++ subversion/branches/remove-log-addressing/subversion/tests/cmdline/update_tests.py Mon Jun 30 10:15:06 2014
@@ -1238,7 +1238,8 @@ def another_hudson_problem(sbox):
# Delete directory G from the repository
svntest.actions.run_and_verify_svn(None,
- ['\n', 'Committed revision 3.\n'], [],
+ ['Committing transaction...\n',
+ 'Committed revision 3.\n'], [],
'rm', '-m', 'log msg',
sbox.repo_url + '/A/D/G')
@@ -1340,7 +1341,8 @@ def new_dir_with_spaces(sbox):
# Create a new directory ("spacey dir") directly in repository
svntest.actions.run_and_verify_svn(None,
- ['\n', 'Committed revision 2.\n'], [],
+ ['Committing transaction...\n',
+ 'Committed revision 2.\n'], [],
'mkdir', '-m', 'log msg',
sbox.repo_url
+ '/A/spacey%20dir')
@@ -1983,7 +1985,7 @@ def update_copy_of_old_rev(sbox):
# Commit, and check that it says it's committing the right thing
exp_out = ['Adding ' + dir2 + '\n',
- '\n',
+ 'Committing transaction...\n',
'Committed revision 3.\n']
svntest.actions.run_and_verify_svn(None, exp_out, [],
'ci', '-m', '', wc_dir)
Modified: subversion/branches/remove-log-addressing/subversion/tests/libsvn_fs/locks-test.c
URL: http://svn.apache.org/viewvc/subversion/branches/remove-log-addressing/subversion/tests/libsvn_fs/locks-test.c?rev=1606666&r1=1606665&r2=1606666&view=diff
==============================================================================
--- subversion/branches/remove-log-addressing/subversion/tests/libsvn_fs/locks-test.c (original)
+++ subversion/branches/remove-log-addressing/subversion/tests/libsvn_fs/locks-test.c Mon Jun 30 10:15:06 2014
@@ -857,6 +857,7 @@ expect_unlock_error(const char *path,
struct lock_many_baton_t {
apr_hash_t *results;
apr_pool_t *pool;
+ int count;
};
/* Implements svn_fs_lock_callback_t. */
@@ -875,6 +876,10 @@ lock_many_cb(void *lock_baton,
result->fs_err = svn_error_dup(fs_err);
svn_hash_sets(b->results, apr_pstrdup(b->pool, path), result);
+ if (b->count)
+ if (!--(b->count))
+ return svn_error_create(SVN_ERR_FS_GENERAL, NULL, "lock_many_cb");
+
return SVN_NO_ERROR;
}
@@ -908,6 +913,7 @@ lock_multiple_paths(const svn_test_opts_
baton.results = apr_hash_make(pool);
baton.pool = pool;
+ baton.count = 0;
lock_paths = apr_hash_make(pool);
unlock_paths = apr_hash_make(pool);
target = svn_fs_lock_target_create(NULL, newrev, pool);
@@ -1012,6 +1018,67 @@ lock_multiple_paths(const svn_test_opts_
return SVN_NO_ERROR;
}
+static svn_error_t *
+lock_cb_error(const svn_test_opts_t *opts,
+ apr_pool_t *pool)
+{
+ svn_fs_t *fs;
+ svn_revnum_t newrev;
+ svn_fs_access_t *access;
+ svn_fs_lock_target_t *target;
+ struct lock_many_baton_t baton;
+ apr_hash_t *lock_paths, *unlock_paths;
+ svn_lock_t *lock;
+
+ SVN_ERR(create_greek_fs(&fs, &newrev, "test-lock-cb-error", opts, pool));
+ SVN_ERR(svn_fs_create_access(&access, "bubba", pool));
+ SVN_ERR(svn_fs_set_access(fs, access));
+
+ baton.results = apr_hash_make(pool);
+ baton.pool = pool;
+ baton.count = 1;
+ lock_paths = apr_hash_make(pool);
+ unlock_paths = apr_hash_make(pool);
+ target = svn_fs_lock_target_create(NULL, newrev, pool);
+
+ svn_hash_sets(lock_paths, "/A/B/E/alpha", target);
+ svn_hash_sets(lock_paths, "/A/B/E/beta", target);
+
+ apr_hash_clear(baton.results);
+ SVN_TEST_ASSERT_ERROR(svn_fs_lock_many(fs, lock_paths, "comment", 0, 0, 0,
+ lock_many_cb, &baton,
+ pool, pool),
+ SVN_ERR_FS_GENERAL);
+
+ SVN_TEST_ASSERT(apr_hash_count(baton.results) == 1);
+ SVN_TEST_ASSERT(svn_hash_gets(baton.results, "/A/B/E/alpha")
+ || svn_hash_gets(baton.results, "/A/B/E/beta"));
+ SVN_ERR(svn_fs_get_lock(&lock, fs, "/A/B/E/alpha", pool));
+ SVN_TEST_ASSERT(lock);
+ svn_hash_sets(unlock_paths, "/A/B/E/alpha", lock->token);
+ SVN_ERR(svn_fs_get_lock(&lock, fs, "/A/B/E/beta", pool));
+ SVN_TEST_ASSERT(lock);
+ svn_hash_sets(unlock_paths, "/A/B/E/beta", lock->token);
+
+ baton.count = 1;
+ apr_hash_clear(baton.results);
+ SVN_TEST_ASSERT_ERROR(svn_fs_unlock_many(fs, unlock_paths, FALSE,
+ lock_many_cb, &baton,
+ pool, pool),
+ SVN_ERR_FS_GENERAL);
+
+ SVN_TEST_ASSERT(apr_hash_count(baton.results) == 1);
+ SVN_TEST_ASSERT(svn_hash_gets(baton.results, "/A/B/E/alpha")
+ || svn_hash_gets(baton.results, "/A/B/E/beta"));
+
+ SVN_ERR(svn_fs_get_lock(&lock, fs, "/A/B/E/alpha", pool));
+ SVN_TEST_ASSERT(!lock);
+ SVN_ERR(svn_fs_get_lock(&lock, fs, "/A/B/E/beta", pool));
+ SVN_TEST_ASSERT(!lock);
+
+ return SVN_NO_ERROR;
+}
+
/* ------------------------------------------------------------------------ */
/* The test table. */
@@ -1045,6 +1112,8 @@ static struct svn_test_descriptor_t test
"check out-of-dateness before locking"),
SVN_TEST_OPTS_PASS(lock_multiple_paths,
"lock multiple paths"),
+ SVN_TEST_OPTS_PASS(lock_cb_error,
+ "lock callback error"),
SVN_TEST_NULL
};
Modified: subversion/branches/remove-log-addressing/tools/dist/backport.pl
URL: http://svn.apache.org/viewvc/subversion/branches/remove-log-addressing/tools/dist/backport.pl?rev=1606666&r1=1606665&r2=1606666&view=diff
==============================================================================
--- subversion/branches/remove-log-addressing/tools/dist/backport.pl (original)
+++ subversion/branches/remove-log-addressing/tools/dist/backport.pl Mon Jun 30 10:15:06 2014
@@ -35,7 +35,6 @@ use Tie::File ();
# Programs we use.
#
# TODO: document which are interpreted by sh and which should point to binary.
-my $SVNAUTH = $ENV{SVNAUTH} // 'svnauth'; # optional dependency
my $SVN = $ENV{SVN} || 'svn'; # passed unquoted to sh
my $SHELL = $ENV{SHELL} // '/bin/sh';
my $VIM = 'vim';
@@ -43,11 +42,17 @@ my $EDITOR = $ENV{SVN_EDITOR} // $ENV{VI
my $PAGER = $ENV{PAGER} // 'less' // 'cat';
# Mode flags.
-# svn-role: YES=1 MAY_COMMIT=1 (plus '--renormalize')
-# conflicts-bot: YES=1 MAY_COMMIT=0
-# interactive: YES=0 MAY_COMMIT=0 (default)
+package Mode {
+ use constant {
+ AutoCommitApproveds => 1, # used by nightly commits (svn-role)
+ Conflicts => 2, # used by the hourly conflicts-detection buildbot
+ Interactive => 3,
+ };
+};
my $YES = ($ENV{YES} // "0") =~ /^(1|yes|true)$/i; # batch mode: eliminate prompts, add sleeps
my $MAY_COMMIT = ($ENV{MAY_COMMIT} // "false") =~ /^(1|yes|true)$/i;
+my $MODE = ($YES ? ($MAY_COMMIT ? Mode::AutoCommitApproveds : Mode::Conflicts )
+ : Mode::Interactive );
# Other knobs.
my $VERBOSE = 0;
@@ -60,15 +65,31 @@ die if grep { ($sh[$_] eq 'true') != !!$
# Username for entering votes.
my $SVN_A_O_REALM = '<https://svn.apache.org:443> ASF Committers';
my ($AVAILID) = $ENV{AVAILID} // do {
- local $_ = `$SVNAUTH list 2>/dev/null`;
+ local $_ = `$SVN auth svn.apache.org:443 2>/dev/null`; # TODO: pass $SVN_A_O_REALM
($? == 0 && /Auth.*realm: \Q$SVN_A_O_REALM\E\nUsername: (.*)/) ? $1 : undef
} // do {
local $/; # slurp mode
+ my $fh;
+ my $dir = "$ENV{HOME}/.subversion/auth/svn.simple/";
my $filename = Digest->new("MD5")->add($SVN_A_O_REALM)->hexdigest;
- `cat $ENV{HOME}/.subversion/auth/svn.simple/$filename`
- =~ /K 8\nusername\nV \d+\n(.*)/ and $1 or undef
+ open $fh, '<', "$dir/$filename"
+ and <$fh> =~ /K 8\nusername\nV \d+\n(.*)/
+ ? $1
+ : undef
+};
+
+unless (defined $AVAILID) {
+ unless ($MODE == Mode::Conflicts) {
+ warn "Username for commits (of votes/merges) not found; "
+ ."it will be possible to review nominations but not to commit votes "
+ ."or merges.\n";
+ warn "Press the 'any' key to continue...\n";
+ die if $MODE == Mode::AutoCommitApproveds; # unattended mode; can't prompt.
+ ReadMode 'cbreak';
+ ReadKey 0;
+ ReadMode 'restore';
+ }
}
-// warn "Username for commits (of votes/merges) not found";
############## End of reading values from the environment ##############
@@ -152,6 +173,11 @@ y: Open a shell.
d: View a diff.
N: Move to the next entry.
+To commit a merge, you have two options: either answer 'y' to the second prompt
+to open a shell, and manually run 'svn commit' therein; or set \$MAY_COMMIT=1
+in the environment before running the script, in which case answering 'y'
+to the first prompt will not only run the merge but also commit it.
+
There is also a batch mode (normally used only by cron jobs and buildbot tasks,
rather than interactively): when \$YES and \$MAY_COMMIT are defined to '1' in
the environment, this script will iterate the "Approved:" section, and merge
@@ -165,6 +191,7 @@ EOF
}
sub nominate_usage {
+ my $availid = $AVAILID // "(your username)";
my $basename = basename $0;
print <<EOF;
nominate.pl: a tool for adding entries to STATUS.
@@ -177,7 +204,7 @@ Will add:
Justification:
\$Some_justification
Votes:
- +1: $AVAILID
+ +1: $availid
to STATUS. Backport branches are detected automatically.
The STATUS file in the current directory is used (unless argv[0] is "n", in
@@ -191,6 +218,18 @@ EOF
# TODO: Do a dry-run merge on interactively-edited entries in backport.pl
}
+# If $AVAILID is undefined, warn about it and return true.
+# Else return false.
+#
+# $_[0] is a string for inclusion in generated error messages.
+sub warned_cannot_commit {
+ my $caller_error_string = shift;
+ return 0 if defined $AVAILID;
+
+ warn "$0: $caller_error_string: unable to determine your username via \$AVAILID or svnauth(1) or ~/.subversion/auth/";
+ return 1;
+}
+
sub digest_string {
Digest->new("MD5")->add(@_)->hexdigest
}
@@ -538,6 +577,11 @@ sub vote {
my @votesarray;
return unless %$approved or %$votes;
+ # If $AVAILID is undef, we can only process 'edit' pseudovotes; handle_entry() is
+ # supposed to prevent numeric (±1,±0) votes from getting to this point.
+ die "Assertion failed" if not defined $AVAILID
+ and grep { $_ ne 'edit' } map { $_->[0] } values %$votes;
+
my $had_empty_line;
$. = 0;
@@ -852,6 +896,8 @@ sub handle_entry {
while (1) {
given (prompt "Shall I open a subshell? [ydN] ", verbose => 1) {
when (/^y/i) {
+ # TODO: if $MAY_COMMIT, save the log message to a file (say,
+ # backport.logmsg in the wcroot).
system($SHELL) == 0
or warn "Creating an interactive subshell failed ($?): $!"
}
@@ -900,11 +946,14 @@ sub handle_entry {
next PROMPT;
}
when (/^([+-][01])\s*$/i) {
+ next QUESTION if warned_cannot_commit "Entering a vote failed";
$votes->{$key} = [$1, \%entry];
say "Your '$1' vote has been recorded." if $VERBOSE;
last PROMPT;
}
when (/^e/i) {
+ prompt "Press the 'any' key to continue...\n"
+ if warned_cannot_commit "Committing this edit later on may fail";
my $original = $entry{raw};
$entry{raw} = edit_string $entry{raw}, $entry{header},
trailing_eol => 2;
@@ -1026,6 +1075,8 @@ sub nominate_main {
my (@revnums) = (+shift) =~ /(\d+)/g;
my $justification = shift;
+ die "Unable to proceed." if warned_cannot_commit "Nominating failed";
+
@revnums = sort { $a <=> $b } keys %{{ map { $_ => 1 } @revnums }};
die "No revision numbers specified" unless @revnums;
Modified: subversion/branches/remove-log-addressing/tools/server-side/svnfsfs/stats-cmd.c
URL: http://svn.apache.org/viewvc/subversion/branches/remove-log-addressing/tools/server-side/svnfsfs/stats-cmd.c?rev=1606666&r1=1606665&r2=1606666&view=diff
==============================================================================
--- subversion/branches/remove-log-addressing/tools/server-side/svnfsfs/stats-cmd.c (original)
+++ subversion/branches/remove-log-addressing/tools/server-side/svnfsfs/stats-cmd.c Mon Jun 30 10:15:06 2014
@@ -290,7 +290,8 @@ open_rev_or_pack_file(apr_file_t **file,
apr_pool_t *pool)
{
svn_fs_fs__revision_file_t *rev_file;
- SVN_ERR(svn_fs_fs__open_pack_or_rev_file(&rev_file, fs->fs, rev, pool));
+ SVN_ERR(svn_fs_fs__open_pack_or_rev_file(&rev_file, fs->fs, rev,
+ pool, pool));
*file = rev_file->file;
return SVN_NO_ERROR;
Modified: subversion/branches/remove-log-addressing/win-tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/remove-log-addressing/win-tests.py?rev=1606666&r1=1606665&r2=1606666&view=diff
==============================================================================
--- subversion/branches/remove-log-addressing/win-tests.py (original)
+++ subversion/branches/remove-log-addressing/win-tests.py Mon Jun 30 10:15:06 2014
@@ -788,8 +788,11 @@ elif test_javahl:
if not java_exe:
print('Java not found. Skipping Java tests')
else:
- args = (
- os.path.abspath(java_exe),
+ args = (os.path.abspath(java_exe),)
+ if (objdir == 'Debug'):
+ args = args + ('-Xcheck:jni',)
+
+ args = args + (
'-Dtest.rootdir=' + os.path.join(abs_builddir, 'javahl'),
'-Dtest.srcdir=' + os.path.join(abs_srcdir,
'subversion/bindings/javahl'),