Dear fans of move tracking,
I heartily invite you to help by playing with 'svnmover'. Can you have
a go and see what it can do? It's quite fun to play with (in a nerdy
way :-)
To get it, build the 'move-tracking-2' branch and look in
'subversion/svnmover/svnmover' -- it's a sibling to 'svn' and
'svnmucc'.
It's fairly easy to pick up as you go along. There's a transcript
below, as an example. You can also see in the IRC history [1] where I
guided Brane through playing with it for the first time.
You can try
- doing renames/moves (using 'mv PATH1 PATH2')
- merging those changes onto another branch ('merge FROM TO YCA')
- visualize what's happening ('branches PATH', 'ls PATH', 'ls-br-r')
- type 'help' to see usage message
You should find that it copes perfectly with renames inside renames, and so on.
Do please share any thoughts or questions you have --
* about the model
* do you grok the way moves work in svnmover?
* any new feature 'svnmover' should have to help with experimenting?
I believe we can build a move-tracking design for Subversion. This
stage is not trying to give the final answer, it is squarely aimed at
exploring and understanding how it could and should work. So I need
*your* input, please, if you can spare some thought cycles and
experimentation cycles.
Here's an example transcript.
[[[
$ svnadmin create repo; REPO=file://$PWD/repo
$ svnmover -U $REPO
svnmover> ls .
e0 .
svnmover> mkbranch trunk mkdir branches
A trunk (branch ^.2)
A branches
Committed r1:
--- diff branch ^, family 0, at / : /
A e2 e0/trunk (branch ^.2)
A e3 e0/branches
--- added branch ^.2, family 1, at /trunk
svnmover> mkdir trunk/A mkdir trunk/A/D1 mkdir trunk/A/D2
A trunk/A
A trunk/A/D1
A trunk/A/D2
Committed r2:
--- diff branch ^.2, family 1, at /trunk : /trunk
A e101 e100/A
A e102 e101/D1
A e103 e101/D2
svnmover> branch trunk branches/br1
A+ branches/br1 (branch ^.4)
Committed r3:
--- diff branch ^, family 0, at / : /
A e4 e3/br1 (branch ^.4)
--- added branch ^.4, family 1, at /branches/br1
svnmover> branches .
branches in family 0:
^ /
svnmover> branches trunk
branches in family 1:
^.2 /trunk
^.4 /branches/br1
svnmover> mv branches/br1/A/D1 branches/br1/D1renamed
V branches/br1/D1renamed (from branches/br1/A/D1)
Committed r4:
--- diff branch ^.4, family 1, at /branches/br1 : /branches/br1
Mvr e102 e100/D1renamed from e101/D1
svnmover> mkdir trunk/A/D1/new-child
A trunk/A/D1/new-child
Committed r5:
--- diff branch ^.2, family 1, at /trunk : /trunk
A e104 e102/new-child
svnmover> merge trunk branches/br1 trunk_at_2
A e104 new-child
Committed r6:
--- diff branch ^.4, family 1, at /branches/br1 : /branches/br1
A e104 e102/new-child
svnmover> ls branches/br1
e100 .
e101 A
e102 D1renamed
e103 A/D2
e104 D1renamed/new-child
svnmover> merge branches/br1 trunk trunk_at_2
M/V e102 D1renamed
M/V e104 new-child
Committed r7:
--- diff branch ^.2, family 1, at /trunk : /trunk
Mvr e102 e100/D1renamed from e101/D1
svnmover> ls trunk
e100 .
e101 A
e102 D1renamed
e103 A/D2
e104 D1renamed/new-child
svnmover>
]]]
- Julian
[1] <http://colabti.org/irclogger/irclogger_log/svn-dev?date=2015-03-05#l113>
Received on 2015-03-13 19:16:06 CET