是否有可能在SVN中粘贴历史记录?

时间:2009-11-24 15:31:48

标签: svn tortoisesvn

我们有一个文件OLD_FILE,历史很长~100次修订。

然后从存储库中删除了该文件。 并创建了内容为OLD_FILE的新文件NEW_FILE。 不要问我 - 为什么文件不只是重命名;)

然后NEW_FILE被更改了5次。 然后使用svn。

将NEW_FILE重命名为OLD_FILE

现在,如果我们尝试查看OLD_FILE的历史记录,我们只会看到与NEW_FILE相关的最近5次修订。 但是我们没有从第一个OLD_FILE的历史中看到很多修订。

是否可以修复存储库以查看OLD_FILE(~100个修订版)和NEW_FILE(5个修订版)的所有修订版? 我想使用命令查看所有这些修订 svn lof -q OLD_FILE

顺便说一句 当我尝试从TortoiseSVN调用“显示日志”时,我可以看到下一个对话框:


离线?

连接服务器时出现问题。 您想要查看缓存的数据吗?

请注意,由于历史记录不完整,缓存的数据可能已过时,不完整甚至误导。

立即离线。永久离线。不要离线


然后我可以看到第一个OLD_FILE的所有100个修订。

这是什么意思?

2 个答案:

答案 0 :(得分:2)

简短的回答是否定的。

但是,如果日期,修订号和相对于NEW_FILE更改的其他更改的顺序不重要,您可以:

恢复旧修订历史记录:

svn rm OLD_FILE 
svn copy -r when_old_was_gone OLD_FILE OLD_FILE

使用svn diff对NEW_FILE,apply the patchcommit的所有更改填写新文件历史记录。你必须分别对每个变化进行差异化,修补,提交。

另一种解决方法是使用tortoise svn和按路径过滤来检索所有修订的日志。将选择相同路径的所有更改。

答案 1 :(得分:1)

由于Subversion不知道NEW_FILEOLD_FILE是相关的,因此您的问题的答案是否定的;它不会显示您想要的合并历史记录。但是,如果您提供适当的peg revision,您仍然可以访问~100个旧版本。

例如:

svn log http://my.repos.com/path/to/OLD_FILE@42

其中42是原始OLD_FILE被删除之前的修订版。