Branching directories with fully-contained externals with svncopy.pl
From: Anthony Foglia <AFoglia_at_princeton.com>
Date: Fri, 10 Sep 2010 12:06:42 -0400
I have found a bug in the svncopy.pl script that fails to properly
Taken from the README
--- Using the script allows branches to be created which are really independent. $ perl svncopy.pl --branch http://svn/repos/trunk \ http://svn/repos/branches/3.2_bugfix Result: trunk/ [ as above] branches/ 3.2_bugfix/ trunk/ common/ common1.c common2.c inc/ common1.h common2.h proj_foo/ foo1.c foo2.c X common -r 4997 http://svn/repos/trunk/common X inc http://svn/repos/branches/3.2_bugfix/trunk/inc [rest of example tree omitted] --- The current svncopy.pl script has special logic for a single source and no longer creates the branches/3.2_bugfix/trunk directory, but puts the contents directly in branches/3.2_bugfix. The logic is more along the lines of the "svn copy" command. (This was added in a patch a year ago. <http://svn.haxx.se/dev/archive-2009-06/0064.shtml>) The problem is the fully-contained external, when updated for the branch, is still updated to what the non-patched version would have created, http://svn/repos/branches/3.2_bugfix/trunk/inc, which no longer exists. I can try to fix it, but I have very little Perl experience, and definitely not enough to easily understand the testsvncopy.pl script to make a test case. Here is the verbose output of a branch command up until the error first appears. $ svncopy.pl -b --verbose https://192.168.1.197/svn/ASA/branches/release/trunk-v01_00b2/trunk https://192.168.1.197/svn/ASA/Sandbox/AF/tmp/branch_test ================================================================= === Copying from: === https://192.168.1.197/svn/ASA/branches/release/trunk-v01_00b2/trunk === === Copying to: === https://192.168.1.197/svn/ASA/Sandbox/AF/tmp/branch_test === === - branching (updating fully-contained svn:externals definitions) === multiple_sources: No Using temporary directory /tmp/svncopy_S1AkIqIak9 Copying source URI to destination URI > svn copy --file /tmp/svncopy_S1AkIqIak9/CDYv8LFfbX https://192.168.1.197/svn/ASA/branches/release/trunk-v01_00b2/trunk https://192.168.1.197/svn/ASA/Sandbox/AF/tmp/branch_test Checking out destination directory '/tmp/svncopy_S1AkIqIak9/branch_test' > svn co https://192.168.1.197/svn/ASA/Sandbox/AF/tmp/branch_test /tmp/svncopy_S1AkIqIak9/branch_test Checking '/tmp/svncopy_S1AkIqIak9/branch_test' > svn propget -R svn:externals /tmp/svncopy_S1AkIqIak9/branch_test - Found c-SimpleReturns => 'https://192.168.1.197/svn/ASA/branches/release/trunk-v01_00b2/trunk/projects/barring/toolkit-simple-returns/c-SimpleReturns' - updated 'c-SimpleReturns https://192.168.1.197/svn/ASA/branches/release/trunk-v01_00b2/trunk/projects/barring/toolkit-simple-returns/c-SimpleReturns' to 'c-SimpleReturns https://192.168.1.197/svn/ASA/Sandbox/AF/tmp/branch_test/trunk/projects/barring/toolkit-simple-returns/c-SimpleReturns' [rest omitted] Again, note that although the branch is at branch_test, the new external points to branch_test/trunk. -- Anthony Foglia Princeton Consultants (609) 987-8787 x233Received on 2010-09-10 18:08:32 CEST |
This is an archived mail posted to the Subversion Users mailing list.
This site is subject to the Apache Privacy Policy and the Apache Public Forum Archive Policy.