Hi Daniel,

Thanks for the quick response.

Here's the recipe - this works in 1.6 but fails with 1.7

All the best,

fergus


On 11/13/2011 07:03 PM, Daniel Shahaf wrote:
On Sunday, November 13, 2011 1:31 PM, "Fergus Slorach"<sug...@gmail.com>  wrote:

For 'undelete' in svn, we do the following:

  >  svn rm bic4

  >  svn commit -m 'Test delete'
Deleting       bic4/schematic

Committed revision 6

  >  svn merge --change -6 .
--- Reverse-merging r6 into '.':
A    bic4
A    bic4/schematic
A    bic4/schematic/thumbnail_128x128.png
A    bic4/schematic/master.tag
A    bic4/schematic/data.dm
A    bic4/schematic/sch.oa
--- Recording mergeinfo for reverse merge of r6 into '.':
   U   .
--- Eliding mergeinfo from '.':
   U   .

(The last two messages are new in 1.7)

create a targets file containing:

   bic4
   bic4/schematic
   bic4/schematic/thumbnail_128x128.png
   bic4/schematic/master.tag
   bic4/schematic/data.dm
   bic4/schematic/sch.oa

and commit the changes:

  >  svn commit --targets=<file>  -m 'Undelete bic4'

This works in svn 1.6, but fails in svn 1.7 with the following message:

   svn: E200009: Commit failed (details follow):
   svn: E200009: '<path>/bic4/schematic' is not under version control and is not part 
of the commit, yet its child '<path>/bic4/schematic/sch.oa' is part of the commit

I can workaround this by changing the contents of the target file but this looks
like a bug, because 'bic4/schematic' is in the targets file.

Thanks,

fergus


I can't seem to reproduce this: I tried the patch below and running the
tests against my system's 1.6.17 (with './commit_tests.py --bin
/usr/bin'), but they pass.  Could you please provide a complete
reproduction recipe?

That means either a patch to commit_tests.py, or a #!/bin/sh script that
starts by creating an empty repository and committing to it.  See
http://subversion.apache.org/docs/community-guide/repro-template.sh

Thanks!

Daniel

[[[
Index: subversion/tests/cmdline/commit_tests.py
===================================================================
--- subversion/tests/cmdline/commit_tests.py    (revision 1201404)
+++ subversion/tests/cmdline/commit_tests.py    (working copy)
@@ -2826,6 +2826,28 @@ def commit_incomplete(sbox):
                                          wc_dir)


+#----------------------------------------------------------------------
+def commit_add_subadd(sbox):
+  "commit add and its child"
+
+  sbox.build()
+  wc_dir = sbox.wc_dir
+
+  wcroot = sbox.ospath('')
+
+  sbox.simple_rm('A')
+  sbox.simple_commit(message='rm') # r2
+
+  # must be below sbox.simple_*()
+  os.chdir(wc_dir)
+
+  svntest.main.run_svn(None, 'up')
+  svntest.main.run_svn(None, 'merge', '-c', '-2', '.')
+  open('targets', 'w').write('\n'.join(map(lambda x: x[len(wcroot)+1:],
+                                           
svntest.main.greek_state.desc.keys())
+                                      ))
+  svntest.main.run_svn(None, 'commit', '-mm', '--targets=./targets')
+
  ########################################################################
  # Run the tests

@@ -2894,6 +2916,7 @@ test_list = [ None,
                tree_conflicts_resolved,
                commit_multiple_nested_deletes,
                commit_incomplete,
+              commit_add_subadd,
               ]

  if __name__ == '__main__':
]]]

Attachment: svn-undelete.sh
Description: application/shellscript

Reply via email to