2010-10-21 55 views
2

有人无意中通过删除旧文件并添加重命名文件而不是使用正确的SVN重命名命令来重命名SVN工作副本中的文件。新文件仍在不断变化,但不幸的是,历史现在已经被打破。除非你知道在哪里看,否则你甚至不知道这是一个问题。通过Subversion中的删除/添加重命名文件重建历史记录

有什么办法让我重新链接旧文件和新文件的历史记录吗?

回答

2

已执行了多少次更改?

我的解决办法是:

  1. 删除当前文件
  2. 复制最新版本的文件N这是与删除:svn copy -r N proto://path/to/file.ext file.ext
  3. 适当svn rename
  4. 再涂每个DIFF重新命名它,这已经用“新”文件完成了(如果它不那么重要 - 你也可以在“新文件的第一次修改”和“新文件的最后一次修改”之间只能得到一个大差异
+0

手动确实是更可靠的方法......我只是感谢它是少数几个文件。 – detly 2010-12-06 06:36:12

1

在颠覆中没有直接的方法来做到这一点。事实上,颠覆开发者一直在讨论这个话题(没有达成共识)。在你的情况下,你需要的只是跳过导致删除和重命名的具体修订。如果您搜索subversion obliterate,则可以查找有关此主题的更多信息。此链接有关于此主题的howto

注意:除非仔细做,否则可能会遇到麻烦。同时确保在进行转储和加载时保持UID,否则开发人员将不得不切换到更新的repo。

+0

“跳过导致删除和重命名的具体修订” - 但对新文件的后续更改如何? – detly 2010-10-21 06:00:39

+0

它仍然会在那里,只有特定的修改必须被跳过。例如,如果文件在这些修订版本r3,r5,r6,r12,r15中被修改。如果r5和r6是删除和添加发生的地方,那么您可以使用svndump筛选器跳过修订版r5和r6。这样你仍然会有其他的改变。 此链接(http://serverfault.com/questions/95083/svnadmin-dump-skip-revision)讨论了一个类似的问题。 – 2010-10-21 06:27:39

相关问题