[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

Playing with svnmover

From: Julian Foad <julianfoad_at_gmail.com>
Date: Fri, 13 Mar 2015 17:13:18 +0000

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

This is an archived mail posted to the Subversion Dev mailing list.