Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
获取svn中已删除文件的以前版本_Svn_Version Control - Fatal编程技术网

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

获取svn中已删除文件的以前版本,svn,version-control,Svn,Version Control,我们所有的代码都在1.01里。我最近把它改名为trunk。现在,我无法在此重命名之前获取的旧版本。重命名发生在版本6090,但我想要文件的版本5876。我可以看到日志,但无法导出文件,因为它说url/var/www/project/trunk/file不存在 如何获取该文件的版本 我运行了svn导出-r 5876https://url/project/1.01/file您是如何“重命名”中继文件夹的?使用“svn重命名”或“svn移动”? 通常,如果使用这些命令,历史记录应该是一致的,并且在使用

我们所有的代码都在1.01里。我最近把它改名为trunk。现在,我无法在此重命名之前获取的旧版本。重命名发生在版本6090,但我想要文件的版本5876。我可以看到日志,但无法导出文件,因为它说url/var/www/project/trunk/file不存在

如何获取该文件的版本

我运行了svn导出-r 5876https://url/project/1.01/file

您是如何“重命名”中继文件夹的?使用“svn重命名”或“svn移动”? 通常,如果使用这些命令,历史记录应该是一致的,并且在使用“svn export-r…”命令时文件应该可用

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

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

将工作副本更新为旧版本时会发生什么情况。是否重新签出所需的旧版本

你试过了吗

 svn cat TARGET@5876 > /var/www/project/trunk/new/path/to/file
然后将其重新添加到svn


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

我建议您执行以下任一操作,而不是接受接受的答案,因为您可能会丢失历史记录,而您很可能希望恢复历史记录

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

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

恢复到存储库 svn cp文件_URL@REV文件地址

这将在目录中复制旧文件并将其放回头部,包括历史记录和所有内容



显然,您可以跨分支等进行此操作。

尽管提供的答案是正确的,但对于任何可能偶然发现此问题的人,这里有一些重要的建议:

SVN EXPORT有两个语法,它们执行不同的操作:

许多人在使用第二种语法时使用第一种语法

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

which is shorthand for: svn export -r 123 svn://rep/file1.txt@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在修订版123中搜索一个名为file1.txt的文件,而不关心任何其他修订版中的不同文件名。因此,如果版本123中的文件原始名称为“file1.txt”,并且后来重命名为“file2.txt”,则此命令仍将提供版本123中原始file1.txt的内容

总结如下:


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

您可以发布您正在使用的命令吗?@lvaroG.Vicario我已经更新了问题我正在使用Rabbit vcs并进行了重命名。它删除了旧版本并用新名称重新创建了一个版本svn cp不是更好,并且允许获取正确的版本吗?用这种方法你不会得到任何历史记录。请看我的答案,看看-r 123和@123之间的区别,这是问题的核心问题,而不是svn cp和svn export之间的区别,两者都会起作用。。。
2. svn export svn://rep/file1.txt@123

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