You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by ju...@apache.org on 2010/08/25 17:57:19 UTC

svn commit: r989189 - in /subversion/trunk/subversion: libsvn_client/commit_util.c tests/cmdline/tree_conflict_tests.py

Author: julianfoad
Date: Wed Aug 25 15:57:19 2010
New Revision: 989189

URL: http://svn.apache.org/viewvc?rev=989189&view=rev
Log:
Remove a special case introduced in r878027 in which "commit" would allow
committing a deleted node even while unresolved tree conflicts are still
present on or inside that node, if and only if the deletion included the
"keep local" flag.  We don't want a special case.

* subversion/libsvn_client/commit_util.c
  (harvest_committables): Ignore the 'keep_local' flag when checking for
    conflicts.

* subversion/tests/cmdline/tree_conflict_tests.py
  (keep_local_del_tc_inside, keep_local_del_tc_is_target): Delete.
  (force_del_tc_inside): Remove a comment about keep-local.
  (test_list): Remove the two deleted tests.

Modified:
    subversion/trunk/subversion/libsvn_client/commit_util.c
    subversion/trunk/subversion/tests/cmdline/tree_conflict_tests.py

Modified: subversion/trunk/subversion/libsvn_client/commit_util.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_client/commit_util.c?rev=989189&r1=989188&r2=989189&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_client/commit_util.c (original)
+++ subversion/trunk/subversion/libsvn_client/commit_util.c Wed Aug 25 15:57:19 2010
@@ -398,7 +398,6 @@ harvest_committables(apr_hash_t *committ
   svn_boolean_t is_added;
   const char *node_copyfrom_relpath;
   svn_revnum_t node_copyfrom_rev;
-  svn_boolean_t keep_local;
   svn_wc_context_t *wc_ctx = ctx->wc_ctx;
 
   SVN_ERR_ASSERT(svn_dirent_is_absolute(local_abspath));
@@ -482,12 +481,9 @@ harvest_committables(apr_hash_t *committ
         }
     }
 
-  SVN_ERR(svn_wc__temp_get_keep_local(&keep_local, ctx->wc_ctx,
-                                      local_abspath, scratch_pool));
-  if (! keep_local)
-    SVN_ERR(bail_on_tree_conflicted_children(ctx->wc_ctx, local_abspath,
-                                             db_kind, depth, changelists,
-                                             scratch_pool));
+  SVN_ERR(bail_on_tree_conflicted_children(ctx->wc_ctx, local_abspath,
+                                           db_kind, depth, changelists,
+                                           scratch_pool));
 
   /* Our own URL wins if not in COPY_MODE.  In COPY_MODE the
      telescoping URLs are used. */

Modified: subversion/trunk/subversion/tests/cmdline/tree_conflict_tests.py
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/tests/cmdline/tree_conflict_tests.py?rev=989189&r1=989188&r2=989189&view=diff
==============================================================================
--- subversion/trunk/subversion/tests/cmdline/tree_conflict_tests.py (original)
+++ subversion/trunk/subversion/tests/cmdline/tree_conflict_tests.py Wed Aug 25 15:57:19 2010
@@ -704,102 +704,11 @@ def merge_dir_add_onto_not_none(sbox):
 
 #----------------------------------------------------------------------
 
-def keep_local_del_tc_inside(sbox):
-  "--keep-local del on dir with TCs inside"
-  #          A/C       <-  delete with --keep-local
-  # A  +  C  A/C/dir
-  # A  +  C  A/C/file
-
-  sbox.build()
-  wc_dir = sbox.wc_dir
-
-  C   = os.path.join(wc_dir, "A", "C")
-  dir = os.path.join(wc_dir, "A", "C", "dir")
-  file = os.path.join(wc_dir, "A", "C", "file")
-
-  # Add dir
-  main.run_svn(None, 'mkdir', dir)
-
-  # Add file
-  content = "This is the file 'file'.\n"
-  main.file_append(file, content)
-  main.run_svn(None, 'add', file)
-
-  main.run_svn(None, 'commit', '-m', 'Add dir and file', wc_dir)
-
-  # Remove dir and file in r3.
-  main.run_svn(None, 'delete', dir, file)
-  main.run_svn(None, 'commit', '-m', 'Remove dir and file', wc_dir)
-
-  # Warp back to -r2, dir and file coming back.
-  main.run_svn(None, 'update', '-r2', wc_dir)
-
-  # Set a meaningless prop on each dir and file
-  run_and_verify_svn(None,
-                     ["property 'propname' set on '" + dir + "'\n"],
-                     [], 'ps', 'propname', 'propval', dir)
-  run_and_verify_svn(None,
-                     ["property 'propname' set on '" + file + "'\n"],
-                     [], 'ps', 'propname', 'propval', file)
-
-  # Update WC to HEAD, tree conflicts result dir and file
-  # because there are local mods on the props.
-  expected_output = wc.State(wc_dir, {
-    'A/C/dir' : Item(status='  ', treeconflict='C'),
-    'A/C/file' : Item(status='  ', treeconflict='C'),
-    })
-
-  expected_disk = main.greek_state.copy()
-  expected_disk.add({
-    'A/C/dir' : Item(props={'propname' : 'propval'}),
-    'A/C/file' : Item(contents=content, props={'propname' : 'propval'}),
-    })
-
-  expected_status = get_virginal_state(wc_dir, 2)
-  expected_status.tweak(wc_rev='3')
-  expected_status.add({
-    'A/C/dir' : Item(status='A ', wc_rev='-', copied='+', treeconflict='C'),
-    'A/C/file' : Item(status='A ', wc_rev='-', copied='+', treeconflict='C'),
-    })
-  run_and_verify_update(wc_dir,
-                        expected_output, expected_disk, expected_status,
-                        None, None, None, None, None, 1,
-                        wc_dir)
-
-  # Delete A/C with --keep-local, in effect disarming the tree-conflicts.
-  run_and_verify_svn(None,
-                     verify.UnorderedOutput(['D         ' + C + '\n',
-                                             'D         ' + dir + '\n',
-                                             'D         ' + file + '\n']),
-                     [], 'delete', C, '--keep-local')
-
-  # Verify deletion status
-  # Note: the tree conflicts are still in the status.
-  expected_status.tweak('A/C', status='D ')
-  expected_status.tweak('A/C/dir', status='? ', copied=None, wc_rev=None)
-  expected_status.tweak('A/C/file', status='? ', copied=None, wc_rev=None)
-
-  run_and_verify_status(wc_dir, expected_status)
-
-  # Commit, remove the "disarmed" tree-conflict.
-  expected_output = wc.State(wc_dir, { 'A/C' : Item(verb='Deleting') })
-
-  expected_status.remove('A/C', 'A/C/dir', 'A/C/file')
-
-  run_and_verify_commit(wc_dir,
-                        expected_output, expected_status, None,
-                        wc_dir)
-
-#----------------------------------------------------------------------
-
 def force_del_tc_inside(sbox):
   "--force del on dir with TCs inside"
   ### This test is currently marked XFail because we don't remove tree
   ### conflicts upon "delete --force" yet. They linger and block
   ### the commit.
-  ### This should be handled the same as with --keep-local, but
-  ### the code does not have the proper antennae for that yet.
-  ### Fixing that separately.
 
   #          A/C       <-  delete with --force
   # A  +  C  A/C/dir
@@ -887,95 +796,6 @@ def force_del_tc_inside(sbox):
 
 #----------------------------------------------------------------------
 
-def keep_local_del_tc_is_target(sbox):
-  "--keep-local del on tree-conflicted targets"
-  #          A/C
-  # A  +  C  A/C/dir   <-  delete with --keep-local
-  # A  +  C  A/C/file  <-  delete with --keep-local
-  ### This test currently XFails because the tree-conflicts on dir and
-  ### file remain in the WC but were supposed to be unversioned by a commit
-  ### (because of a delete --keep-local).
-
-  sbox.build()
-  wc_dir = sbox.wc_dir
-
-  C   = os.path.join(wc_dir, "A", "C")
-  dir = os.path.join(wc_dir, "A", "C", "dir")
-  file = os.path.join(wc_dir, "A", "C", "file")
-
-  # Add dir
-  main.run_svn(None, 'mkdir', dir)
-
-  # Add file
-  content = "This is the file 'file'.\n"
-  main.file_append(file, content)
-  main.run_svn(None, 'add', file)
-
-  main.run_svn(None, 'commit', '-m', 'Add dir and file', wc_dir)
-
-  # Remove dir and file in r3.
-  main.run_svn(None, 'delete', dir, file)
-  main.run_svn(None, 'commit', '-m', 'Remove dir and file', wc_dir)
-
-  # Warp back to -r2, dir and file coming back.
-  main.run_svn(None, 'update', '-r2', wc_dir)
-
-  # Set a meaningless prop on each dir and file
-  run_and_verify_svn(None,
-                     ["property 'propname' set on '" + dir + "'\n"],
-                     [], 'ps', 'propname', 'propval', dir)
-  run_and_verify_svn(None,
-                     ["property 'propname' set on '" + file + "'\n"],
-                     [], 'ps', 'propname', 'propval', file)
-
-  # Update WC to HEAD, tree conflicts result dir and file
-  # because there are local mods on the props.
-  expected_output = wc.State(wc_dir, {
-    'A/C/dir' : Item(status='  ', treeconflict='C'),
-    'A/C/file' : Item(status='  ', treeconflict='C'),
-    })
-
-  expected_disk = main.greek_state.copy()
-  expected_disk.add({
-    'A/C/dir' : Item(props={'propname' : 'propval'}),
-    'A/C/file' : Item(contents=content, props={'propname' : 'propval'}),
-    })
-
-  expected_status = get_virginal_state(wc_dir, 2)
-  expected_status.tweak(wc_rev='3')
-  expected_status.add({
-    'A/C/dir' : Item(status='A ', wc_rev='-', copied='+', treeconflict='C'),
-    'A/C/file' : Item(status='A ', wc_rev='-', copied='+', treeconflict='C'),
-    })
-  run_and_verify_update(wc_dir,
-                        expected_output, expected_disk, expected_status,
-                        None, None, None, None, None, 1,
-                        wc_dir)
-
-  # Delete nodes with --keep-local, in effect disarming the tree-conflicts.
-  run_and_verify_svn(None,
-                     ['D         ' + dir + '\n',
-                      'D         ' + file + '\n'],
-                     [],
-                     'delete', dir, file, '--keep-local')
-
-  expected_status.tweak('A/C/dir', status='? ', copied=None, wc_rev=None)
-  expected_status.tweak('A/C/file', status='? ', copied=None, wc_rev=None)
-  run_and_verify_status(wc_dir, expected_status)
-
-  # Commit, remove the "disarmed" tree-conflict.
-  expected_output = wc.State(wc_dir, {})
-
-  ### This is why this test currently XFails. We want the conflicts
-  ### on the unversioned nodes to go away.
-  expected_status.remove('A/C/dir', 'A/C/file')
-
-  run_and_verify_commit(wc_dir,
-                        expected_output, expected_status, None,
-                        wc_dir)
-
-#----------------------------------------------------------------------
-
 def force_del_tc_is_target(sbox):
   "--force del on tree-conflicted targets"
   #          A/C
@@ -1263,9 +1083,7 @@ test_list = [ None,
               XFail(merge_dir_del_onto_not_same),
               merge_dir_del_onto_not_dir,
               merge_dir_add_onto_not_none,
-              keep_local_del_tc_inside,
               XFail(force_del_tc_inside),
-              XFail(keep_local_del_tc_is_target),
               XFail(force_del_tc_is_target),
               query_absent_tree_conflicted_dir,
               XFail(up_add_onto_add_revert),