[svk-devel] smerge/pull with renames
Jason Dillon
jason at planet57.com
Sun Mar 18 20:52:05 EDT 2007
I'm trying to see if svk2 is properly handling updates when
directories/files have been renamed. And from what I can tell its not.
'svk pull' does not seem to have a --track-rename flag, so have to
use smerge, which is okay I guess... though IMO push/pull should
support the flag to handle renames.
To test, I created a simple svktest module:
https://svn.apache.org/repos/asf/geronimo/sandbox/jdillon/svktest/
Which just contains:
test-module/
test.txt (containing "Something terribly interesting")
I've got this checked out via:
svn co https://svn.apache.org/repos/asf/geronimo/sandbox/
jdillon/svktest svktest-orig
I setup a mirror:
svk https://svn.apache.org/repos/asf/geronimo/sandbox/jdillon/
svktest/ //mirrors/svktest
svk sync //mirrors/svktest
And then made a local copy:
svk cp //mirrors/svktest //svktest
And checked it out:
svk //svktest svktest-local
Then I renamed test-module in svktest-local:
svk mv test-module test-module2
svk ci -m "rename"
And then altered the text in svktest-orig/test-module/test.txt:
echo "Something terribly interesting... or maybe not so" > test-
module/test.txt
svn ci -m "alter text"
And then tried to smerge the changes with --track-rename:
svk sm --track-rename //mirrors/svktest //svktest
<snip>
Auto-merging (6674, 6677) /mirrors/svktest to /svktest (base /mirrors/
svktest:6674).
Waiting for editor...
Collecting renames, this might take a while.
U test-module/test.txt - test-module2/test.txt
New merge ticket: 13f79535-47bb-0310-9956-ffa450edef68:/geronimo/
sandbox/jdillon/svktest:519758
Committed revision 6678.
</snip>
But this did not appear to update the text at at all:
cat svktest-local/test-module2/test.txt
<snip>
Something terribly interesting
</snip>
cat svktest-orig/test-module/test.txt
<snip>
Something terribly interesting... or maybe not so
</snip>
It appears that after I 'svk smerge --track-rename', that 'svk pull'
fetched the latest update to test.txt.
Though trying to repeat this again and now I can't get svk to update
the file at all.
echo "Something terribly interesting!" > svktest-orig/test-
module/test.txt
(cd svktest-orig; svn ci -m "alter text")
Try to pull:
cd svktest-local
svk pull
<snip>
Syncing https://svn.apache.org/repos/asf/geronimo/sandbox/jdillon/
svktest
Retrieving log information from 519763 to 519765
Auto-merging (6677, 6679) /mirrors/svktest to /svktest (base /mirrors/
svktest:6677).
test-module - skipped
test-module/test.txt - skipped
Empty merge.
Syncing //svktest(/svktest) in /Users/jason/ws/geronimo/svktest-local
to 6679
</snip>
Or try to smerge --track-rename:
cd svktest-local
svk sm --track-rename //mirrors/svktest //svktest
<snip>
Auto-merging (6677, 6679) /mirrors/svktest to /svktest (base /mirrors/
svktest:6677).
Waiting for editor...
Log message not modified: a)bort, e)dit, c)ommit?c
Collecting renames, this might take a while.
test-module/test.txt - skipped
Empty merge.
</snip>
I also tried to `svk pull` again after the `svk sm --track-rename`
(which worked the very first time), but so far its not updating the
test.txt file. The svk version still has "Something terribly
interesting... or maybe not so", when it should have been updated to
"Something terribly interesting!".
* * *
I'm using svk/trunk built sometime last week. I did notice a few
changes to that tree today, but I've yet to rebuild and test them,
svn up updated:
<snip>
A t/07smerge-rename2.t
U lib/SVK/Editor/Copy.pm
U lib/SVK/Help/Index.pod
U lib/SVK/Path/Checkout.pm
U lib/SVK/Merge.pm
U MANIFEST
U bin/svk
U .
Updated to revision 2349.
</snip>
I dunno, there might be fixed to rename support in here (the "t/
07smerge-rename2.t" makes me think there might be). I will update
and try this again... but I'm wondering if the above test is valid?
I really want to use svk2 to allow me to reorganize a source tree,
while being able to continuously pull in the latest changes made to
the current organization. Then once the reorg is finished, simply
smerge back to the source branch, which should have all of the
changes where were made to the tree during the reorg.
I know this is possible with perforce, and I'm really hoping that
svk2 will work in the exact same way.
Are there any known issues with --track-rename? And has anyone
actually used svk2 in this matter to reorg trees while keeping the
reorg tree updated from latest changes?
--jason
More information about the svk-devel
mailing list