【发布时间】:2010-10-18 00:06:54
【问题描述】:
我不小心使用“svn copy”将主干复制覆盖了旧分支。更具体地说,对于每个版本,主干都会被分支并作为标签保存,使用:
svn copy svn://machine/REPOS/trunk svn://machine/REPOS/tags/$RELEASENR
但这一次“RELEASENR”的值是旧的现有分支而不是新分支的值。有人对如何撤消这个错误有任何想法吗?已经谢谢了!
【问题讨论】:
我不小心使用“svn copy”将主干复制覆盖了旧分支。更具体地说,对于每个版本,主干都会被分支并作为标签保存,使用:
svn copy svn://machine/REPOS/trunk svn://machine/REPOS/tags/$RELEASENR
但这一次“RELEASENR”的值是旧的现有分支而不是新分支的值。有人对如何撤消这个错误有任何想法吗?已经谢谢了!
【问题讨论】:
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:\ 表示我已将一条逻辑线分成两条物理线,以免水平滚动条过度劳累。)
【讨论】:
svn co svn://machine/REPOS/tags/EXISTS_ALREADY/ EXISTS_ALREADY、cd EXISTS_ALREADY、svn merge -c -REVISION_OF_INCORRECT_CP .、svn commit。
为了撤消
svn cp OLDFOLDER NEWFOLDER
如果更改尚未提交,只需使用
svn revert NEWFOLDER --depth=infinity
【讨论】:
您可以通过合并回上一个版本来撤消上一个版本。 见http://anilsaldhana.blogspot.com/2007/11/svn-undo-change.html
svn merge --revision 92:91 .
然后提交
【讨论】: