4

我目前正在制作一个脚本,在该脚本中我已经熟悉了 Tortoise SVN 及其相应的命令行功能。

我已经正确更新了脚本,以通过一系列测试找到正确构建的“修订版”。在脚本记录该变量(具体的版本号)之后,我更新到 HEAD 修订版(这样我就可以在这个过程之后提交我遇到问题)。

我的问题: 如何从命令行恢复到特定的修订号?

我知道您可以 svn update -r ,但是您如何通过还原来做到这一点,以便将我的工作副本更改为修改状态;以后可以犯吗?我只问是因为 revert 不接受 -r 参数;除非我犯了错误。

我从这个问题中发现了 Revisions/Updates 它是如何工作的: reverting with tortoise SVN 但我找不到任何可靠的答案。任何帮助,将不胜感激。

4

2 回答 2

14

正确使用术语很重要,因为“revert”在 Subversion 中意味着非常具体的东西,而在英语中它可以根据上下文有多种含义。

  • Subversion “revert” 撤消任何本地的、未提交的更改并将项目重置回其最后一个已知的存储库状态。这不是你要找的。
  • “恢复”通过svn update -r实际上只是将文件更新到特定(过去)修订版。您正在“恢复”到旧版本,但您并没有真正更改任何内容(如果您尝试编辑然后提交,您将被拒绝,因为您没有编辑最新版本)。同样,这不是您要寻找的。
  • 正如您所描述的那样,恢复将更好地描述为“回滚”-您想要撤消在当前修订版和过去的某个修订版之间所做的任何更改,然后将项目的状态提交为新的HEAD。在 Subversion 中,这称为反向合并。这在 Subversion 手册中有描述- 您提供svn merge一系列修订号,以相反的顺序(最新到最旧),然后提交生成的工作副本。
于 2013-05-17T13:51:48.647 回答
1

在许多情况下svn merge是可取的

但是,当我遇到类似的问题时,我发现结帐到较早的(稳定)修订版更合适,因为它不会更改我的本地更改,而且我以后仍然可以更新到当前版本

于 2014-09-19T07:53:36.560 回答