如何在不删除其后续修订的情况下切换回文件的先前版本?

Mar*_*n08 11 svn

我的subversion存储库中有4个版本的文件A.txt,例如:A.txt.r1,A.txt.r2,A.txt.r3和A.txt.r4.我的文件工作副本是r4,我想切换回r2.我不想使用" svn update -r 2 A.txt ",因为这将删除r2之后的所有修订版,即r3和r4.

那么有什么方法可以将我的工作副本更新到r2并且仍然可以选择稍后切换到r3和r4吗?换句话说,我希望仍然能够在执行更新后使用" svn log A.txt " 查看所有4个修订版.

Bru*_*ine 26

要使A.txt的新修订版等于修订版2:

svn up -r HEAD
svn merge -r HEAD:2 A.txt
svn commit
Run Code Online (Sandbox Code Playgroud)

另请参阅撤消更改中的说明.


Ken*_*ric 10

该命令svn up -r 4仅将本地副本更新为修订版4.

服务器仍然具有所有版本1到任何版本.

您要做的是创建一个版本,版本号5,与版本号2相同.

cd /repo 
svn up -r 2 
cp /repo/file /tmp/file_2 
svn up -r 4 
cp /tmp/file_2 /repo/file 
svn commit -m "Making 5 from 2" 
Run Code Online (Sandbox Code Playgroud)

如果你改变主意并希望4回来,你可以通过从修订版4创建修订版6来实现.

cd /repo 
svn up -r 4
cp /repo/file /tmp/file_4
svn up -r 5 
cp /tmp/file_4 /repo/file 
svn commit -m "Making 6 from 4" 
Run Code Online (Sandbox Code Playgroud)

快乐的黑客.

(当然有一种方法可以在我认为的2个命令中完成上述操作,但是自从我做了它已经有一段时间了,它可能有点令人困惑)


Adr*_*ark 3

我没有太多使用 Subversion 的经验,所以如果此方法在这种环境下不起作用,请原谅。

在这种情况下,我按照以下步骤操作:

  1. 签出有问题的文件,准备编辑为 r4
  2. 使用您需要的修订版覆盖文件的本地副本,在本例中为 r2
  3. 签入/提交文件的这个“新”版本作为 r5 并带有适当的注释

这样,当您浏览文件历史记录时,您将看到类似以下内容的内容:

  • r1
  • r2
  • r3
  • r4
  • r5(注释:“恢复为 r2 内容”)