我的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个版本。
答案 0 :(得分:26)
答案 1 :(得分: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"
如果你改变主意并希望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"
快乐的黑客攻击。
(当然有一种方法可以在我认为的2个命令中完成上述操作,但是自从我做了它已经有一段时间了,这可能有点令人困惑)
答案 2 :(得分:3)
我对Subversion没有太多经验,所以如果这种方法在这种环境下不起作用,请原谅。
在这种情况下,我按照以下步骤操作:
这样,当您浏览文件历史记录时,您会看到类似的内容:
答案 3 :(得分:3)
svn update -r 2 A.txt
此命令将不删除存储库中的任何版本。它会将A.txt的工作副本设置为修订版2.您可以通过执行
来查看> svn status -u A.txt
* 2 A.txt
此命令的输出显示您正在查看版本2,并且有更新(即*)。
执行此更新后,您 仍然可以执行“ svn log ”并查看所有修订。
执行“ svn update A.txt ”将返回最新版本(在您的情况下为r4)。
答案 4 :(得分:2)
更新到较旧的转速不会删除您的较新转速。
所以你可以svn up -r2 file
,然后svn up -r4 file
。
另外,你不能以这种方式提交r2文件,因为你必须在提交前更新,你最终会再次使用r4。
答案 5 :(得分:2)
实际上,呃......实际上不会。试一试:在-r 2之后进行常规的svn更新,你会看到工作副本更新回到r4。“我不想使用”svn update -r 2 A.txt“因为这将删除r2之后的所有修订版,即r3和r4。”
答案 6 :(得分:1)
更新不会删除服务器上的任何修订。它所做的唯一更改是您的本地工作副本:
“将存储库中的更改带入您的工作副本”
“将工作副本同步到--revision switch”
给出的修订版