You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by pr...@apache.org on 2013/01/29 08:34:55 UTC

svn commit: r1439765 - in /subversion/branches/verify-keep-going: ./ subversion/libsvn_wc/ subversion/svn/ subversion/tests/cmdline/ subversion/tests/cmdline/upgrade_tests_data/ tools/dist/ tools/hook-scripts/mailer/ tools/server-side/

Author: prabhugs
Date: Tue Jan 29 07:34:55 2013
New Revision: 1439765

URL: http://svn.apache.org/viewvc?rev=1439765&view=rev
Log:
Merging r1439433 through r1439754 from trunk to verify-keep-going branch.

Added:
    subversion/branches/verify-keep-going/subversion/tests/cmdline/upgrade_tests_data/upgrade_from_1_7_wc.tar.bz2
      - copied unchanged from r1439754, subversion/trunk/subversion/tests/cmdline/upgrade_tests_data/upgrade_from_1_7_wc.tar.bz2
Modified:
    subversion/branches/verify-keep-going/   (props changed)
    subversion/branches/verify-keep-going/subversion/libsvn_wc/adm_crawler.c
    subversion/branches/verify-keep-going/subversion/libsvn_wc/conflicts.c
    subversion/branches/verify-keep-going/subversion/libsvn_wc/conflicts.h
    subversion/branches/verify-keep-going/subversion/libsvn_wc/old-and-busted.c
    subversion/branches/verify-keep-going/subversion/libsvn_wc/upgrade.c
    subversion/branches/verify-keep-going/subversion/libsvn_wc/wc_db.c
    subversion/branches/verify-keep-going/subversion/svn/update-cmd.c
    subversion/branches/verify-keep-going/subversion/tests/cmdline/update_tests.py
    subversion/branches/verify-keep-going/subversion/tests/cmdline/upgrade_tests.py
    subversion/branches/verify-keep-going/tools/dist/make-deps-tarball.sh   (props changed)
    subversion/branches/verify-keep-going/tools/hook-scripts/mailer/mailer.conf.example
    subversion/branches/verify-keep-going/tools/hook-scripts/mailer/mailer.py
    subversion/branches/verify-keep-going/tools/server-side/   (props changed)

Propchange: subversion/branches/verify-keep-going/
------------------------------------------------------------------------------
  Merged /subversion/trunk:r1439280-1439754

Modified: subversion/branches/verify-keep-going/subversion/libsvn_wc/adm_crawler.c
URL: http://svn.apache.org/viewvc/subversion/branches/verify-keep-going/subversion/libsvn_wc/adm_crawler.c?rev=1439765&r1=1439764&r2=1439765&view=diff
==============================================================================
--- subversion/branches/verify-keep-going/subversion/libsvn_wc/adm_crawler.c (original)
+++ subversion/branches/verify-keep-going/subversion/libsvn_wc/adm_crawler.c Tue Jan 29 07:34:55 2013
@@ -58,8 +58,8 @@
    last-commit-time.  Either way, set entry-timestamp to match that of
    the working file when all is finished.
 
-   If REMOVE_TEXT_CONFLICT is TRUE, remove an existing text conflict
-   from LOCAL_ABSPATH.
+   If MARK_RESOLVED_TEXT_CONFLICT is TRUE, mark as resolved any existing
+   text conflict on LOCAL_ABSPATH.
 
    Not that a valid access baton with a write lock to the directory of
    LOCAL_ABSPATH must be available in DB.*/
@@ -67,7 +67,7 @@ static svn_error_t *
 restore_file(svn_wc__db_t *db,
              const char *local_abspath,
              svn_boolean_t use_commit_times,
-             svn_boolean_t remove_text_conflicts,
+             svn_boolean_t mark_resolved_text_conflict,
              apr_pool_t *scratch_pool)
 {
   svn_skel_t *work_item;
@@ -89,8 +89,8 @@ restore_file(svn_wc__db_t *db,
                          scratch_pool));
 
   /* Remove any text conflict */
-  if (remove_text_conflicts)
-    SVN_ERR(svn_wc__resolve_text_conflict(db, local_abspath, scratch_pool));
+  if (mark_resolved_text_conflict)
+    SVN_ERR(svn_wc__mark_resolved_text_conflict(db, local_abspath, scratch_pool));
 
   return SVN_NO_ERROR;
 }
@@ -135,7 +135,8 @@ svn_wc_restore(svn_wc_context_t *wc_ctx,
     }
 
   if (kind == svn_kind_file || kind == svn_kind_symlink)
-    SVN_ERR(restore_file(wc_ctx->db, local_abspath, use_commit_times, FALSE,
+    SVN_ERR(restore_file(wc_ctx->db, local_abspath, use_commit_times,
+                         FALSE /*mark_resolved_text_conflict*/,
                          scratch_pool));
   else
     SVN_ERR(svn_io_dir_make(local_abspath, APR_OS_DEFAULT, scratch_pool));
@@ -161,8 +162,9 @@ restore_node(svn_wc__db_t *db,
 {
   if (kind == svn_kind_file || kind == svn_kind_symlink)
     {
-      /* Recreate file from text-base */
-      SVN_ERR(restore_file(db, local_abspath, use_commit_times, TRUE,
+      /* Recreate file from text-base; mark any text conflict as resolved */
+      SVN_ERR(restore_file(db, local_abspath, use_commit_times,
+                           TRUE /*mark_resolved_text_conflict*/,
                            scratch_pool));
     }
   else if (kind == svn_kind_dir)

Modified: subversion/branches/verify-keep-going/subversion/libsvn_wc/conflicts.c
URL: http://svn.apache.org/viewvc/subversion/branches/verify-keep-going/subversion/libsvn_wc/conflicts.c?rev=1439765&r1=1439764&r2=1439765&view=diff
==============================================================================
--- subversion/branches/verify-keep-going/subversion/libsvn_wc/conflicts.c (original)
+++ subversion/branches/verify-keep-going/subversion/libsvn_wc/conflicts.c Tue Jan 29 07:34:55 2013
@@ -2566,9 +2566,9 @@ resolve_conflict_on_node(svn_boolean_t *
 
 
 svn_error_t *
-svn_wc__resolve_text_conflict(svn_wc__db_t *db,
-                              const char *local_abspath,
-                              apr_pool_t *scratch_pool)
+svn_wc__mark_resolved_text_conflict(svn_wc__db_t *db,
+                                    const char *local_abspath,
+                                    apr_pool_t *scratch_pool)
 {
   svn_boolean_t ignored_result;
 

Modified: subversion/branches/verify-keep-going/subversion/libsvn_wc/conflicts.h
URL: http://svn.apache.org/viewvc/subversion/branches/verify-keep-going/subversion/libsvn_wc/conflicts.h?rev=1439765&r1=1439764&r2=1439765&view=diff
==============================================================================
--- subversion/branches/verify-keep-going/subversion/libsvn_wc/conflicts.h (original)
+++ subversion/branches/verify-keep-going/subversion/libsvn_wc/conflicts.h Tue Jan 29 07:34:55 2013
@@ -401,11 +401,11 @@ svn_wc__conflict_invoke_resolver(svn_wc_
                                  apr_pool_t *scratch_pool);
 
 
-/* Resolve text conflicts on the given node.  */
+/* Mark as resolved any text conflict on the node at DB/LOCAL_ABSPATH.  */
 svn_error_t *
-svn_wc__resolve_text_conflict(svn_wc__db_t *db,
-                              const char *local_abspath,
-                              apr_pool_t *scratch_pool);
+svn_wc__mark_resolved_text_conflict(svn_wc__db_t *db,
+                                    const char *local_abspath,
+                                    apr_pool_t *scratch_pool);
 
 #ifdef __cplusplus
 }

Modified: subversion/branches/verify-keep-going/subversion/libsvn_wc/old-and-busted.c
URL: http://svn.apache.org/viewvc/subversion/branches/verify-keep-going/subversion/libsvn_wc/old-and-busted.c?rev=1439765&r1=1439764&r2=1439765&view=diff
==============================================================================
--- subversion/branches/verify-keep-going/subversion/libsvn_wc/old-and-busted.c (original)
+++ subversion/branches/verify-keep-going/subversion/libsvn_wc/old-and-busted.c Tue Jan 29 07:34:55 2013
@@ -1264,7 +1264,7 @@ svn_wc__read_entries_old(apr_hash_t **en
     }
 
   /* Fill in any implied fields. */
-  return resolve_to_defaults(*entries, result_pool);
+  return svn_error_trace(resolve_to_defaults(*entries, result_pool));
 }
 
 

Modified: subversion/branches/verify-keep-going/subversion/libsvn_wc/upgrade.c
URL: http://svn.apache.org/viewvc/subversion/branches/verify-keep-going/subversion/libsvn_wc/upgrade.c?rev=1439765&r1=1439764&r2=1439765&view=diff
==============================================================================
--- subversion/branches/verify-keep-going/subversion/libsvn_wc/upgrade.c (original)
+++ subversion/branches/verify-keep-going/subversion/libsvn_wc/upgrade.c Tue Jan 29 07:34:55 2013
@@ -1504,22 +1504,19 @@ bump_to_30(void *baton, svn_sqlite__db_t
   svn_boolean_t have_row;
   apr_pool_t *iterpool = svn_pool_create(scratch_pool);
   svn_sqlite__stmt_t *stmt;
-  svn_sqlite__stmt_t *stmt_store;
   svn_wc__db_t *db; /* Read only temp db */
   const char *wri_abspath = bb->wcroot_abspath;
 
   SVN_ERR(svn_wc__db_open(&db, NULL, FALSE, FALSE,
                           scratch_pool, scratch_pool));
 
-  SVN_ERR(svn_sqlite__get_statement(&stmt_store, sdb,
-                                    STMT_UPGRADE_30_SET_CONFLICT));
-
   SVN_ERR(svn_sqlite__get_statement(&stmt, sdb,
                                     STMT_UPGRADE_30_SELECT_CONFLICT_SEPARATE));
   SVN_ERR(svn_sqlite__step(&have_row, stmt));
 
   while (have_row)
     {
+      svn_sqlite__stmt_t *stmt_store;
       svn_stringbuf_t *skel_data;
       svn_skel_t *conflict_data;
       apr_int64_t wc_id = svn_sqlite__column_int64(stmt, 0);
@@ -1549,6 +1546,8 @@ bump_to_30(void *baton, svn_sqlite__db_t
 
       skel_data = svn_skel__unparse(conflict_data, iterpool);
 
+      SVN_ERR(svn_sqlite__get_statement(&stmt_store, sdb,
+                                        STMT_UPGRADE_30_SET_CONFLICT));
       SVN_ERR(svn_sqlite__bindf(stmt_store, "isb", wc_id, local_relpath,
                                 skel_data->data, skel_data->len));
       SVN_ERR(svn_sqlite__step_done(stmt_store));

Modified: subversion/branches/verify-keep-going/subversion/libsvn_wc/wc_db.c
URL: http://svn.apache.org/viewvc/subversion/branches/verify-keep-going/subversion/libsvn_wc/wc_db.c?rev=1439765&r1=1439764&r2=1439765&view=diff
==============================================================================
--- subversion/branches/verify-keep-going/subversion/libsvn_wc/wc_db.c (original)
+++ subversion/branches/verify-keep-going/subversion/libsvn_wc/wc_db.c Tue Jan 29 07:34:55 2013
@@ -14239,6 +14239,7 @@ svn_wc__db_bump_format(int *result_forma
 {
   svn_sqlite__db_t *sdb;
   svn_error_t *err;
+  svn_error_t *upgrade_err;
   int format;
 
   /* Do not scan upwards for a working copy root here to prevent accidental
@@ -14274,11 +14275,11 @@ svn_wc__db_bump_format(int *result_forma
     }
 
   SVN_ERR(svn_sqlite__read_schema_version(&format, sdb, scratch_pool));
-  SVN_ERR(svn_wc__upgrade_sdb(result_format, wcroot_abspath,
-                              sdb, format, scratch_pool));
-  SVN_ERR(svn_sqlite__close(sdb));
+  upgrade_err = svn_wc__upgrade_sdb(result_format, wcroot_abspath,
+                                     sdb, format, scratch_pool);
+  err = svn_sqlite__close(sdb);
 
-  return SVN_NO_ERROR;
+  return svn_error_compose_create(upgrade_err, err);
 }
 
 svn_error_t *

Modified: subversion/branches/verify-keep-going/subversion/svn/update-cmd.c
URL: http://svn.apache.org/viewvc/subversion/branches/verify-keep-going/subversion/svn/update-cmd.c?rev=1439765&r1=1439764&r2=1439765&view=diff
==============================================================================
--- subversion/branches/verify-keep-going/subversion/svn/update-cmd.c (original)
+++ subversion/branches/verify-keep-going/subversion/svn/update-cmd.c Tue Jan 29 07:34:55 2013
@@ -51,12 +51,12 @@ print_update_summary(apr_array_header_t 
   int i;
   const char *path_prefix;
   apr_pool_t *iterpool;
+  svn_boolean_t printed_header = FALSE;
 
   if (targets->nelts < 2)
     return SVN_NO_ERROR;
 
   SVN_ERR(svn_dirent_get_absolute(&path_prefix, "", scratch_pool));
-  SVN_ERR(svn_cmdline_printf(scratch_pool, _("Summary of updates:\n")));
 
   iterpool = svn_pool_create(scratch_pool);
 
@@ -87,6 +87,13 @@ print_update_summary(apr_array_header_t 
       /* Print an update summary for this target, removing the current
          working directory prefix from PATH (if PATH is at or under
          $CWD), and converting the path to local style for display. */
+      if (! printed_header)
+        {
+          SVN_ERR(svn_cmdline_printf(scratch_pool,
+                                     _("Summary of updates:\n")));
+          printed_header = TRUE;
+        }
+
       SVN_ERR(svn_cmdline_printf(iterpool, _("  Updated '%s' to r%ld.\n"),
                                  svn_cl__local_style_skip_ancestor(
                                    path_prefix, path, iterpool),

Modified: subversion/branches/verify-keep-going/subversion/tests/cmdline/update_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/verify-keep-going/subversion/tests/cmdline/update_tests.py?rev=1439765&r1=1439764&r2=1439765&view=diff
==============================================================================
--- subversion/branches/verify-keep-going/subversion/tests/cmdline/update_tests.py (original)
+++ subversion/branches/verify-keep-going/subversion/tests/cmdline/update_tests.py Tue Jan 29 07:34:55 2013
@@ -5478,7 +5478,6 @@ def update_moved_dir_leaf_del(sbox):
   expected_status.remove('A/B/E2/alpha')
   svntest.actions.run_and_verify_status(wc_dir, expected_status)
 
-@XFail()
 @Issue(3144,3630)
 # Like break_moved_dir_edited_leaf_del, but with --accept=mine-conflict
 def update_moved_dir_edited_leaf_del(sbox):
@@ -5527,13 +5526,13 @@ def update_moved_dir_edited_leaf_del(sbo
   # Now resolve the conflict, using --accept=mine-conflict.
   # This should apply the update to A/B/E2, and flag a tree
   # conflict on A/B/E2/alpha (incoming delete vs. local edit)
-  # XFAIL: Currently the A/B/E2/alpha is deleted during this update.
   svntest.actions.run_and_verify_svn("resolve failed", None, [],
                                      'resolve',
-                                     '--recursive',
-                                     '--accept=mine-conflict', wc_dir)
+                                     '--accept=mine-conflict',
+                                     sbox.ospath('A/B/E'))
   expected_status.tweak('A/B/E', treeconflict=None)
-  expected_status.tweak('A/B/E2/alpha', treeconflict='C')
+  expected_status.tweak('A/B/E2/alpha', status='A ', copied='+', wc_rev='-',
+                        entry_status='  ', treeconflict='C')
   svntest.actions.run_and_verify_status(wc_dir, expected_status)
 
 def update_moved_dir_file_add(sbox):
@@ -5714,7 +5713,6 @@ def update_moved_dir_file_move(sbox):
   svntest.actions.run_and_verify_status(wc_dir, expected_status)
 
 
-@XFail()
 @Issue(3144,3630)
 def update_move_text_mod(sbox):
   "text mod to moved files"
@@ -5732,31 +5730,36 @@ def update_move_text_mod(sbox):
   expected_status = svntest.actions.get_virginal_state(wc_dir, 1)
   expected_status.tweak('A/B/E', 'A/B/E/alpha', 'A/B/E/beta', 'A/B/lambda',
                         status='D ')
+  expected_status.tweak('A/B/E',  moved_to='A/E2')
+  expected_status.tweak('A/B/lambda', moved_to='A/lambda2')
   expected_status.add({
-      'A/E2'        : Item(status='A ', copied='+', wc_rev='-'),
+      'A/E2'        : Item(status='A ', copied='+', wc_rev='-',
+                           moved_from='A/B/E'),
       'A/E2/alpha'  : Item(status='  ', copied='+', wc_rev='-'),
       'A/E2/beta'   : Item(status='  ', copied='+', wc_rev='-'),
-      'A/lambda2'   : Item(status='A ', copied='+', wc_rev='-'),
+      'A/lambda2'   : Item(status='A ', copied='+', wc_rev='-',
+                           moved_from='A/B/lambda'),
       })
 
   svntest.actions.run_and_verify_status(wc_dir, expected_status)
 
   expected_output = svntest.wc.State(wc_dir, {
-    'A/lambda2' : Item(status='U '),
-    'A/E2/beta' : Item(status='U '),
+    'A/B/lambda' : Item(status='  ', treeconflict='C'),
+    'A/B/E'      : Item(status='  ', treeconflict='C'),
+    'A/B/E/beta' : Item(status='  ', treeconflict='U'),
   })
   expected_disk = svntest.main.greek_state.copy()
   expected_disk.remove('A/B/E/alpha', 'A/B/E/beta', 'A/B/E', 'A/B/lambda')
   expected_disk.add({
     'A/E2'        : Item(),
     'A/E2/alpha'  : Item(contents="This is the file 'alpha'.\n"),
-    'A/E2/beta'   : Item(contents="This is the file 'beta'.\nmodified\n"),
-    'A/lambda2'   : Item(contents="This is the file 'lambda'.\nmodified\n"),
+    'A/E2/beta'   : Item(contents="This is the file 'beta'.\n"),
+    'A/lambda2'   : Item(contents="This is the file 'lambda'.\n"),
   })
   expected_status.tweak(wc_rev=2)
+  expected_status.tweak('A/B/E', 'A/B/lambda', treeconflict='C')
   expected_status.tweak('A/E2', 'A/E2/alpha', 'A/E2/beta', 'A/lambda2',
                         wc_rev='-')
-  ### XFAIL 'A/E2/beta' is status R but should be ' '
   svntest.actions.run_and_verify_update(wc_dir,
                                         expected_output,
                                         expected_disk,
@@ -5764,7 +5767,22 @@ def update_move_text_mod(sbox):
                                         None, None, None,
                                         None, None, 1)
 
-@XFail()
+  svntest.actions.run_and_verify_svn("resolve failed", None, [],
+                                     'resolve',
+                                     '--recursive',
+                                     '--accept=mine-conflict',
+                                     wc_dir)
+
+  expected_status.tweak('A/B/E', 'A/B/lambda', treeconflict=None)
+  svntest.actions.run_and_verify_status(wc_dir, expected_status)
+
+  expected_disk.tweak('A/E2/beta',
+                      contents="This is the file 'beta'.\nmodified\n"),
+  expected_disk.tweak('A/lambda2',
+                      contents="This is the file 'lambda'.\nmodified\n"),
+  svntest.actions.verify_disk(wc_dir, expected_disk, check_props = True)
+
+
 @Issue(3144,3630)
 def update_nested_move_text_mod(sbox):
   "text mod to moved file in moved dir"
@@ -5780,29 +5798,34 @@ def update_nested_move_text_mod(sbox):
 
   expected_status = svntest.actions.get_virginal_state(wc_dir, 1)
   expected_status.tweak('A/B/E', 'A/B/E/alpha', 'A/B/E/beta', status='D ')
+  expected_status.tweak('A/B/E', moved_to='A/E2')
   expected_status.add({
-      'A/E2'        : Item(status='A ', copied='+', wc_rev='-'),
-      'A/E2/alpha'  : Item(status='D ', copied='+', wc_rev='-'),
+      'A/E2'        : Item(status='A ', copied='+', wc_rev='-',
+                           moved_from='A/B/E'),
+      'A/E2/alpha'  : Item(status='D ', copied='+', wc_rev='-',
+                           moved_to='A/alpha2'),
       'A/E2/beta'   : Item(status='  ', copied='+', wc_rev='-'),
-      'A/alpha2'    : Item(status='A ', copied='+', wc_rev='-'),
+      'A/alpha2'    : Item(status='A ', copied='+', wc_rev='-',
+                           moved_from='A/E2/alpha'),
       })
 
   svntest.actions.run_and_verify_status(wc_dir, expected_status)
 
   expected_output = svntest.wc.State(wc_dir, {
-    'A/alpha2' : Item(status='U '),
+    'A/B/E'       : Item(status='  ', treeconflict='C'),
+    'A/B/E/alpha' : Item(status='  ', treeconflict='U'),
   })
   expected_disk = svntest.main.greek_state.copy()
   expected_disk.remove('A/B/E/alpha', 'A/B/E/beta', 'A/B/E')
   expected_disk.add({
     'A/E2'        : Item(),
     'A/E2/beta'   : Item(contents="This is the file 'beta'.\n"),
-    'A/alpha2'    : Item(contents="This is the file 'alpha'.\nmodified\n"),
+    'A/alpha2'    : Item(contents="This is the file 'alpha'.\n"),
   })
   expected_status.tweak(wc_rev=2)
+  expected_status.tweak('A/B/E', treeconflict='C')
   expected_status.tweak('A/E2', 'A/E2/alpha', 'A/E2/beta', 'A/alpha2',
                         wc_rev='-')
-  ### XFAIL update fails 'No such file'
   svntest.actions.run_and_verify_update(wc_dir,
                                         expected_output,
                                         expected_disk,
@@ -5810,6 +5833,19 @@ def update_nested_move_text_mod(sbox):
                                         None, None, None,
                                         None, None, 1)
 
+  svntest.actions.run_and_verify_svn("resolve failed", None, [],
+                                     'resolve',
+                                     '--recursive',
+                                     '--accept=mine-conflict',
+                                     wc_dir)
+
+  expected_status.tweak('A/B/E', treeconflict=None)
+  svntest.actions.run_and_verify_status(wc_dir, expected_status)
+
+  expected_disk.tweak('A/alpha2',
+                      contents="This is the file 'alpha'.\nmodified\n"),
+  svntest.actions.verify_disk(wc_dir, expected_disk, check_props = True)
+
 def update_with_parents_and_exclude(sbox):
   "bring a subtree in over an excluded path"
 
@@ -6428,6 +6464,37 @@ def update_swapped_depth_dirs(sbox):
                                         None, None, 1)
 
 
+  # Further update and expect a conflict.
+  expected_status.tweak('A/B', status='D ', treeconflict='C', moved_to='A/B2')
+  expected_status.tweak(wc_rev=3)
+  expected_status.tweak( 'A/B2', 'A/B2/E', 'A/B2/E/beta', 'A/B2/E/alpha',
+                         'A/B2/F', 'A/B2/lambda', wc_rev='-')
+  svntest.actions.run_and_verify_update(wc_dir,
+                                        expected_output,
+                                        expected_disk,
+                                        expected_status,
+                                        None, None, None,
+                                        None, None, 1,
+                                        '-r', '3', wc_dir)
+
+  # Resolve conflict moving changes and raising property conflicts
+  svntest.actions.run_and_verify_svn("resolve failed", None, [],
+                                     'resolve',
+                                     '--accept=mine-conflict',
+                                     sbox.ospath('A/B'))
+
+  expected_status.tweak('A/B', treeconflict=None)
+  expected_status.tweak('A/B2/E', 'A/B2/E/beta', status=' C')
+  svntest.actions.run_and_verify_status(wc_dir, expected_status)
+
+  expected_disk.tweak('A/B2', 'A/B2/E/alpha', props={'propertyA' : 'value1',
+                                                     'propertyB' : 'value2'})
+  expected_disk.tweak('A/B2/E', 'A/B2/E/beta', props={'propertyA' : 'value1',
+                                                      'propertyB' : 'value3'})
+  extra_files = ['dir_conflicts.prej', 'beta.prej']
+  svntest.actions.verify_disk(wc_dir, expected_disk, True,
+                              svntest.tree.detect_conflict_files, extra_files)
+
 #######################################################################
 # Run the tests
 

Modified: subversion/branches/verify-keep-going/subversion/tests/cmdline/upgrade_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/verify-keep-going/subversion/tests/cmdline/upgrade_tests.py?rev=1439765&r1=1439764&r2=1439765&view=diff
==============================================================================
--- subversion/branches/verify-keep-going/subversion/tests/cmdline/upgrade_tests.py (original)
+++ subversion/branches/verify-keep-going/subversion/tests/cmdline/upgrade_tests.py Tue Jan 29 07:34:55 2013
@@ -1262,6 +1262,18 @@ def upgrade_not_present_replaced(sbox):
   svntest.actions.run_and_verify_update(sbox.wc_dir, expected_output,
                                         None, expected_status)
 
+@XFail()
+@Issue(4307)
+def upgrade_from_1_7(sbox):
+  "upgrade from 1.7 WC (format 29)"
+
+  sbox.build(create_wc=False)
+  replace_sbox_with_tarfile(sbox, 'upgrade_from_1_7_wc.tar.bz2')
+
+  # The working copy contains a text conflict, and upgrading such
+  # a working copy currently crashes 'svn'.
+  svntest.actions.run_and_verify_svn(None, None, [], 'upgrade', sbox.wc_dir)
+
 ########################################################################
 # Run the tests
 
@@ -1313,6 +1325,7 @@ test_list = [ None,
               upgrade_file_externals,
               upgrade_missing_replaced,
               upgrade_not_present_replaced,
+              upgrade_from_1_7,
              ]
 
 

Propchange: subversion/branches/verify-keep-going/tools/dist/make-deps-tarball.sh
------------------------------------------------------------------------------
  Merged /subversion/trunk/tools/dist/make-deps-tarball.sh:r1439280-1439754

Modified: subversion/branches/verify-keep-going/tools/hook-scripts/mailer/mailer.conf.example
URL: http://svn.apache.org/viewvc/subversion/branches/verify-keep-going/tools/hook-scripts/mailer/mailer.conf.example?rev=1439765&r1=1439764&r2=1439765&view=diff
==============================================================================
--- subversion/branches/verify-keep-going/tools/hook-scripts/mailer/mailer.conf.example (original)
+++ subversion/branches/verify-keep-going/tools/hook-scripts/mailer/mailer.conf.example Tue Jan 29 07:34:55 2013
@@ -146,6 +146,15 @@
 #
 #   from_addr = %(author)s@example.com
 #
+# The substitution variable "repos_basename" is provided, and is set to
+# the directory name of the repository. This can be useful to set
+# a custom subject that can be re-used in multiple repositories:
+#
+#   commit_subject_prefix = [svn-%(repos_basename)s]
+#
+# For example if the repository is at /path/to/repo/project-x then
+# the subject of commit emails will be prefixed with [svn-project-x]
+#
 #
 # SUMMARY
 #

Modified: subversion/branches/verify-keep-going/tools/hook-scripts/mailer/mailer.py
URL: http://svn.apache.org/viewvc/subversion/branches/verify-keep-going/tools/hook-scripts/mailer/mailer.py?rev=1439765&r1=1439764&r2=1439765&view=diff
==============================================================================
--- subversion/branches/verify-keep-going/tools/hook-scripts/mailer/mailer.py (original)
+++ subversion/branches/verify-keep-going/tools/hook-scripts/mailer/mailer.py Tue Jan 29 07:34:55 2013
@@ -98,7 +98,10 @@ def main(pool, cmd, config_fname, repos_
   if cmd == 'commit':
     revision = int(cmd_args[0])
     repos = Repository(repos_dir, revision, pool)
-    cfg = Config(config_fname, repos, { 'author' : repos.author })
+    cfg = Config(config_fname, repos,
+                 {'author': author,
+                  'repos_basename': os.path.basename(repos.repos_dir)
+                 })
     messenger = Commit(pool, cfg, repos)
   elif cmd == 'propchange' or cmd == 'propchange2':
     revision = int(cmd_args[0])
@@ -108,14 +111,20 @@ def main(pool, cmd, config_fname, repos_
     repos = Repository(repos_dir, revision, pool)
     # Override the repos revision author with the author of the propchange
     repos.author = author
-    cfg = Config(config_fname, repos, { 'author' : author })
+    cfg = Config(config_fname, repos,
+                 {'author': author,
+                  'repos_basename': os.path.basename(repos.repos_dir)
+                 })
     messenger = PropChange(pool, cfg, repos, author, propname, action)
   elif cmd == 'lock' or cmd == 'unlock':
     author = cmd_args[0]
     repos = Repository(repos_dir, 0, pool) ### any old revision will do
     # Override the repos revision author with the author of the lock/unlock
     repos.author = author
-    cfg = Config(config_fname, repos, { 'author' : author })
+    cfg = Config(config_fname, repos,
+                 {'author': author,
+                  'repos_basename': os.path.basename(repos.repos_dir)
+                 })
     messenger = Lock(pool, cfg, repos, author, cmd == 'lock')
   else:
     raise UnknownSubcommand(cmd)

Propchange: subversion/branches/verify-keep-going/tools/server-side/
------------------------------------------------------------------------------
--- svn:ignore (original)
+++ svn:ignore Tue Jan 29 07:34:55 2013
@@ -1,6 +1,7 @@
 .libs
 svn-populate-node-origins-index
 svnauthz
+svnauthz-validate
 svn-rep-sharing-stats
 fsfs-reorg
 fsfs-stats