在SVN中跳回时间

在SVN中跳回时间,svn,version-control,tortoisesvn,branch,Svn,Version Control,Tortoisesvn,Branch,我是SVN的新手,我对一个问题很困惑。我用的是乌龟SVN 我有一个项目的版本8和更高版本11。在11之前,这是一个简单的过程,但现在我必须跳回rev 8,顺便说一句,它被标记并从中开始计数。我已经制作了rev8的工作副本,并做了一些更改 我如何将主干的磁带倒回rev8,并对最近的主干进行分支,并在rev8上提交我的更改,以便最终得到主干 所有遇到的文档都写了关于分支和标记的无休止的页面——存储库中实际的顶级版本——但没有关于过去版本中的这些操作 收银台 在不同的目录中导出r8 svn导出。这样就

我是SVN的新手,我对一个问题很困惑。我用的是乌龟SVN

我有一个项目的版本8和更高版本11。在11之前,这是一个简单的过程,但现在我必须跳回rev 8,顺便说一句,它被标记并从中开始计数。我已经制作了rev8的工作副本,并做了一些更改

我如何将主干的磁带倒回rev8,并对最近的主干进行分支,并在rev8上提交我的更改,以便最终得到主干

所有遇到的文档都写了关于分支和标记的无休止的页面——存储库中实际的顶级版本——但没有关于过去版本中的这些操作

收银台

在不同的目录中导出r8 svn导出。这样就避免了.svn元目录

将所有r8文件复制到主干中

承诺

五,。如果trunk有其他不在r8中的文件,您需要svn手动删除这些文件

正如你可能猜到的,这并不是真正的倒带。相反,磁带会继续向前移动,但如果这样做,r12会恰巧与r8一模一样-

svn merge -r11:8 path/

将“还原”从8到11所做的所有更改。

要从给定版本创建分支,只需选择“合并/分支…”。。。然后选中repository中特定修订的单选按钮,并输入修订号11

要使主干恢复到版本8中的状态,请选择“显示日志…”,然后选择要回滚到版本8的版本,单击鼠标右键,然后选择“还原到此版本”。那就承诺吧。这将创建与版本8相同的附加版本13


确保不要将修订版13合并到从修订版11创建的分支中,因为它还会回滚分支中的更改。为了确保不会发生这种情况,请将修订版13从主干合并到分支中,但选中复选框仅记录合并IIRC。首先,让我们分支最新的更改。我喜欢使用完整URL进行分支:

$ svn cp svn://localhost/trunk svn://localhost/branches/foo  #Creating branch foo
现在,我们可以从9开始删除更改:

$ svn merge -rHEAD:8 .
请注意,我不必指定用于修订版8的标记。这是因为修订号很擅长充当标签。我通常只标记有意思的修订——超出开发范围的修订,或者我认为以后出于某种原因可能很重要的修订

顺便说一下。我也可以按相反的顺序做事:

$ svn merge -r11:8 .   #Remove changes 9 through 11
$ svn commit -m "Removing yucky stuff"   #Creates revision #12
哎呀!我本应该把它改成第11版的!让我们现在就做:

$ svn copy -r11 . svn://localhost/branches/foo   #Revision #11 is now branch "foo"
如果您更喜欢完整URL:

$ svn copy -r11 svn://localhost/trunk@11 svn://localhost/branches/foo
查看头部修正 原木 右键单击要成为新标题的修订 单击“还原到此修订版” 犯罪
这里有一个不同的信息,因此是一个答案,但@David_W、@maxim1000和@Wrikken的答案有助于完成这项工作

很多人偶然发现,颠覆只允许在每个分支的头上工作。这不是一个but,而是一个特性。因此,重写历史是不可能的,你可以放心,没有人会改变历史

这就是您必须执行抽象步骤的原因:

在本地签出当前版本。 在本地副本上以相反的顺序执行r8到r11的反向补丁。 提交这些更改,以便与第8版完全相同的工作副本的新内容将出现在头部。
另外,您的问题表明情况稍微复杂一些,例如,您似乎也想在r11?的基础上创建一个新分支?。如果是这样的话,我可以改进我的答案,但现在我假设一个更简单的场景:你只想回到过去。一个更好/更全面的解释。但是,您可以通过一个svn cp svn:/source来避免第一次svn合并/etc@8 svn://target/etc,甚至更少的工作@如果修订版8可以放在分支上,修订版11保留在主干上,那就太好了。然而,OP希望主干上有版本8,分支上有版本11。我猜他可以将svn mv主干连接到一个分支,然后将修订版8中的svn cp连接到主干中。这也会起作用,但可能会给签出主干的用户带来问题。是的,我错过了cp在服务器上的部分,但是合并在当前签出上,我的错。