如何在命令行中使用特定的修订号“还原到此修订版本”?

4
我目前正在编写一个脚本,其中我已经熟悉了Tortoise SVN及其相应的命令行函数。我已经让脚本正确更新以查找哪个“版本”适用于一系列测试。在脚本记录该变量(具体版本号)后,我会更新到HEAD版本(以便在处理此过程中出现问题后能够提交)。
我的问题是: 如何从命令行恢复到特定的修订版本号? 我知道可以使用svn update -r,但如何使用还原使其将我的工作副本更改为修改状态;稍后可以提交?我之所以问这个问题,是因为还原不接受-r参数;除非我犯了一个错误。
我从这个问题中了解到Revisions/Updates的工作方式: reverting with tortoise SVN 但是我找不到任何确定的答案。感谢您提供的任何帮助。
2个回答

14

重要的是要正确使用术语,因为“恢复”在Subversion中有非常具体的含义,而在英语中它可以根据上下文具有多个含义。

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

这个有效,谢谢!我之前使用“还原”这个术语是因为GUI中使用了这个术语。每当我还原到一个修订版本时,它会修改它以便可以重新提交。但是在阅读了本节之后,我明白了为什么它被称为反向合并。我没有寻找这个术语,因为我没有使用过它。新手错误。干杯! :) - Chris
意识到胜利: “术语的准确性非常重要,因为在Subversion中,“还原”具有非常特定的含义,而在英语中,它可以根据上下文具有多重含义。” - ahnbizcad

1
在许多情况下,svn merge 更可取。然而当我遇到类似问题时,我发现将代码 checkout 到一个较早(稳定)的版本更适合,因为它不会改变我的本地更改,之后我仍然可以更新到当前版本。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接