在svn中获取已删除文件的先前版本

时间:2012-06-14 08:14:18

标签: svn version-control

我的所有代码都在1.01中。我最近将它重命名为trunk。现在我无法在重命名之前获得旧版本。重命名发生在修订版6090,但我想要文件的修订版5876。我可以看到日志但无法导出文件 url /var/www/project/trunk/file doesn't exists

我如何获得该版本的文件

我跑 svn export -r 5876 https://url/project/1.01/file

4 个答案:

答案 0 :(得分:5)

尽管提供的答案是正确的,但对于可能偶然发现此问题的人来说,这是一个重要的建议:

SVN EXPORT有两种语法,做不同的事情:

许多人使用第一种语法,因为他们应该使用第二种

1. svn export -r 123 svn://rep/file1.txt

which is shorthand for: svn export -r 123 svn://rep/file1.txt@HEAD

这个命令会做什么?它将首先在当前HEAD修订版中搜索名为“file1.txt”的文件。一旦找到,搜索此文件的过去修订版并获取修订版123的文件内容。因此,如果修订版123中的文件原始名称是file.txt,稍后重命名为file1.txt(例如在修订版133中,您将获得修订版123中原始文件file.txt的内容。

现在是第二种语法:

2. svn export svn://rep/file1.txt@123

which is shorthand for: svn export -r 123 svn://rep/file1.txt@123

该命令告诉SVN在Revision 123中搜索一个名为file1.txt的文件,而不关心任何其他版本中的不同文件名。因此,如果修订版123中的文件原始名称为“file1.txt”,并且稍后将其重命名为“file2.txt”,则此命令仍将为您提供修订版123中原始file1.txt的内容

总结:

如果要为文件名和文件内容提供单独的修订,请仅使用-r标志。只有当您的请求是“SVN在修订版中提供文件内容时才会出现这种情况”现在称为“File1.txt”的123,无论它被称为什么......“

答案 1 :(得分:2)

我宁愿建议您执行以下任一操作而不是接受的答案,因为您丢失了历史记录,您很可能想要回复。

恢复到工作副本

svn cp FILE_URL@REV local_path_to_file

这将直接获取您需要的修订版本,并在本地工作副本中为您重新添加和重新更新该文件。

然后,您可以提交文件文件以将其放回远程存储库。

恢复到存储库

svn cp FILE_URL @ REV FILE_URL

这将使目录复制旧文件并将其放回HEAD,并附带历史记录和所有内容。


显然你可以跨分支等来做这件事......

答案 2 :(得分:0)

你试过吗

 svn cat TARGET@5876 > /var/www/project/trunk/new/path/to/file

然后将其重新添加到svn。

目标应该是重命名前的旧回购路径。

答案 3 :(得分:-1)

你是如何“重命名”trunk文件夹的?使用“svn rename”或“svn move”? 通常,如果使用这些命令,则历史记录应该是一致的,并且在使用“svn export -r ...”命令时该文件应该可用。

“project”文件夹是否也受版本控制?如果是,我会尝试将工作副本更新到旧版本并将其复制到现在应该位于的位置。

是否可能,导出命令依赖于获取导出修订时正确的路径?

将工作副本更新为旧版本时会发生什么情况。如果你对所需的旧版本进行了新的检查?

相关问题