获取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中已删除文件的以前版本,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移动”? 通常,如果使用这些命令,历史记录应该是一致的,并且在使用
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