Как отменить 'svn copy'
Я случайно перезаписал старую ветку, скопировав ее с помощью "svn copy". Более конкретно, для каждой версии соединительная линия разветвляется и хранится в виде метки, используя:
svn copy svn://machine/REPOS/trunk svn://machine/REPOS/tags/$RELEASENR
Но на этот раз значение "RELEASENR" было значением старой существующей ветки вместо новой. У кого-нибудь есть идеи о том, как отменить эту ошибку? Спасибо, уже!
Ответы
Ответ 1
Subversion не работает. Вы на самом деле не перезаписали его. Если цель копии или перемещения существует и является каталогом, то скопированный или перемещенный элемент помещается в этот каталог:
svn copy svn://machine/REPOS/trunk svn://machine/REPOS/tags/EXISTS_ALREADY
Если вы посмотрите, вы должны найти:
svn://machine/REPOS/tags/EXISTS_ALREADY/trunk
Какая копия туловища, которую вы просто пытались пометить. Исправление в этом случае легко:
svn mv svn://machine/REPOS/tags/EXISTS_ALREADY/trunk \
svn://machine/REPOS/tags/CORRECT_TAG_NAME
(В случае, если вы не знакомы с * nix:\означает, что я сломал одну логическую строку на две физические линии, чтобы избавить вашу горизонтальную полосу прокрутки от переутомления.)
Ответ 2
Вы можете отменить свою последнюю ревизию путем слияния с предыдущей версией.
См. http://anilsaldhana.blogspot.com/2007/11/svn-undo-change.html
svn merge --revision 92:91 .
а затем выполните
Ответ 3
Чтобы отменить
svn cp OLDFOLDER NEWFOLDER
если изменение еще не было выполнено, просто используйте
svn revert NEWFOLDER --depth=infinity