Hi Julian,
Here the things that I noticed while playing with svnmover.
I was going for a FSFS / FSX library duplication scenario.
The only major problem IMO, is that "branchify" is currently
too destructive: Applied within an existing branch, it seems
to make merges from & to the respective sub-tree impossible
(but the conflict it might also have been caused by the
deletion, so I'm not 100% positive).
I think I have a solution to that and will sketch that in a
separate post.
-- Stefan^2.
* nice to have: svnmover should have a history in interactive mode
* Local paths don't get resolved as expect:
svnmover> put ~/develop/svnmover/mail.txt trunk/sub/mail.txt
svnmover: warning: apr_err=ENOENT
svnmover: warning: W000002: Can't open file
'~/develop/svnmover/mail.txt': No such file or directory
svnmover> put /home/stefan/develop/svnmover/mail.txt trunk/sub/mail.txt
svnmover: warning: apr_err=SVN_ERR_INCORRECT_PARAMS
svnmover: warning: W200004: Argument
'/home/stefan/develop/svnmover/mail.txt' is not a relative path or a URL
* Trying to branch from a non-branch-root segfaults:
svnmover> branch trunk branches/maint
Segmentation fault (core dumped)
* Are element IDs arbitrary? From the output it seems that they use
distinct ranges for each branch. I assume a "proper" implementation
would have a two-dimensional ID space such as "e1.1" instead of "e101".
* Bogus error message when trying to create a sub-branch from a
non-branch-root:
svnmover> branch trunk/sub trunk/B
svnmover: warning: W123456: source and destination must be within same
outer branch; source is b10 inside b0, destination is in b10
svnmover> ls .
e0 .
e1 branches
e3 tags
e6 trunk (branch ^.6)
e7 branches/maint (branch ^.7)
svnmover> ls trunk
e100 .
e101 sub
e102 sub/mail.txt
* Currently, branchify cannot "heal" or "undo" a dissolve operation.
Can that limitation be lifted for any copy source / target pair?
Can that limitation be lifted for undoing a 'dissolve' when no
other commits were done to that (former) branch in the meantime?
* Trying to rename a sub-branch root:
svnmover> mv trunk/sub trunk/A
mv: moving by copy-and-delete
svnmover: warning: apr_err=SVN_ERR_ASSERTION_FAIL
svnmover: warning: W235000: In file 'subversion/libsvn_delta/editor3e.c'
line 293: assertion failed (eid != branch->sibling_defn->root_eid)
Tree structure before & after (unchanged):
svnmover> ls-br-r
family 0 (BSIDs 0:1, EIDs 0:8)
branch ^ bsid=0 root=e0 /
e0 .
e1 branches
e3 tags
e6 trunk (branch ^.6)
e7 branches/maint (branch ^.7)
family 1 (BSIDs 10:12, EIDs 100:104)
branch ^.6 bsid=10 root=e100 /trunk
e100 .
e103 sub (branch ^.6.103)
branch ^.7 bsid=11 root=e100 /branches/maint
e100 .
e101 sub
e102 sub/mail.txt
family 2 (BSIDs 20:21, EIDs 200:202)
branch ^.6.103 bsid=20 root=e200 /trunk/sub
e200 .
e201 mail.txt
* The following sequence works, though (ommitting outputs):
svnmover> branch trunk/sub trunk/B
svnmover> branch trunk/sub trunk/A
svnmover> rm trunk/sub
Interesting state of branches/maint/sub vs. trunk/A & trunk/B:
svnmover> ls-br-r
[[[
family 0 (BSIDs 0:1, EIDs 0:8)
branch ^ bsid=0 root=e0 /
e0 .
e1 branches
e3 tags
e6 trunk (branch ^.6)
e7 branches/maint (branch ^.7)
family 1 (BSIDs 10:12, EIDs 100:106)
branch ^.6 bsid=10 root=e100 /trunk
e100 .
e104 B (branch ^.6.104)
e105 A (branch ^.6.105)
branch ^.7 bsid=11 root=e100 /branches/maint
e100 .
e101 sub
e102 sub/mail.txt
family 2 (BSIDs 20:23, EIDs 200:202)
branch ^.6.104 bsid=21 root=e200 /trunk/B
e200 .
e201 mail.txt
branch ^.6.105 bsid=22 root=e200 /trunk/A
e200 .
e201 mail.txt
]]]
* Trying to merge a recent change:
svnmover> merge branches/maint trunk trunk_at_6
! e102 <conflict>
svnmover: warning: W123456: Merge failed: conflict(s) occurred
I guess that merge has been doomed since the point trunk/sub
became a branch root.
* Merging into the opposite direction fails as well:
svnmover> merge trunk branches/maint trunk_at_6
D e101 sub
! e102 <conflict>
A e104 B (branch ^.6.104)
A e105 A (branch ^.6.105)
svnmover: warning: W123456: Merge failed: conflict(s) occurred
How would that kind of conflict be permanently resolved?
Full log:
svnmover> log ._at_0 .@12
[[[
------------------------------------------------------------------------
r12 | ...
Changed elements:
--- diff branch ^.6 at /trunk : ^.6 at /trunk, family 1
D sub (branch ^.6.103)
--- deleted branch ^.6.103, family 2, at /trunk/sub
------------------------------------------------------------------------
r11 | ...
Changed elements:
--- diff branch ^.6 at /trunk : ^.6 at /trunk, family 1
A A (branch ^.6.105)
--- added branch ^.6.105, family 2, at /trunk/A
------------------------------------------------------------------------
r10 | ...
Changed elements:
--- diff branch ^.6 at /trunk : ^.6 at /trunk, family 1
A B (branch ^.6.104)
--- added branch ^.6.104, family 2, at /trunk/B
------------------------------------------------------------------------
r9 | ...
Changed elements:
--- diff branch ^.6 at /trunk : ^.6 at /trunk, family 1
D sub
D sub/mail.txt
A sub (branch ^.6.103)
--- added branch ^.6.103, family 2, at /trunk/sub
------------------------------------------------------------------------
r8 | ...
Changed elements:
--- diff branch ^.7 at /branches/maint : ^.7 at /branches/maint, family 1
M sub/mail.txt
------------------------------------------------------------------------
r7 | ...
Changed elements:
--- diff branch ^ at / : ^ at /, family 0
A branches/maint (branch ^.7)
--- added branch ^.7, family 1, at /branches/maint
------------------------------------------------------------------------
r6 | ...
Changed elements:
--- diff branch ^ at / : ^ at /, family 0
D trunk
D trunk/sub
D trunk/sub/mail.txt
A trunk (branch ^.6)
--- added branch ^.6, family 1, at /trunk
------------------------------------------------------------------------
r5 | ...
Changed elements:
--- diff branch ^ at / : ^ at /, family 0
A trunk/sub/mail.txt
------------------------------------------------------------------------
r4 | ...
Changed elements:
--- diff branch ^ at / : ^ at /, family 0
A trunk/sub
------------------------------------------------------------------------
r3 | ...
Changed elements:
--- diff branch ^ at / : ^ at /, family 0
A tags
------------------------------------------------------------------------
r2 | ...
Changed elements:
--- diff branch ^ at / : ^ at /, family 0
A trunk
------------------------------------------------------------------------
r1 | ...
Changed elements:
--- diff branch ^ at / : ^ at /, family 0
A branches
]]]
Received on 2015-04-07 23:00:54 CEST