I've accidentally overwritten an old branch by copying trunk over it using 'svn copy'. More specifically, for every release, trunk is branched and kept as a tag, using:
svn copy svn://machine/REPOS/trunk svn://machine/REPOS/tags/$RELEASENR
But this time the value of 'RELEASENR' was that of an old existing branch instead of a new one. Anybody have any ideas on how to undo this mistake? Thanks already!
-
Make again your copy, this time with the correct tag. Then retrieve a previous revision of your existing tag and overwrite the incorrect revision. I don't remember the exact syntax for doing this but it can easily be found in svn book.
-
Subversion doesn't work that way. You haven't actually overwritten it. If the target of the copy or a move exists and is a directory, then the copied or moved item is placed in that directory:
svn copy svn://machine/REPOS/trunk svn://machine/REPOS/tag/EXISTS_ALREADYIf you look, you should find:
svn://machine/REPOS/tag/EXISTS_ALREADY/trunkWhich is a copy of the trunk you just tried to tag. The fix in this case is easy:
svn mv svn://machine/REPOS/tag/EXISTS_ALREADY/trunk \ svn://machine/REPOS/tag/CORRECT_TAG_NAME(In case you're not *nix conversant: The \ means I've broken one logical line into two physical lines to spare your horizontal scrollbar from overwork.)
mouviciel : I suspect that if his procedure is identical for all releases, he has actually overwritten the existing trunk in EXIST_ALREADY directory.
0 comments:
Post a Comment