2010-10-21 73 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

相關問題