2010-01-20 69 views
9

是否有某種方式如何使用舊時間/日期提交到SVN存儲庫或如何編輯提交後的時間/日期?SVN提交舊日期/時間

我有一些存檔的源代碼,在我開始使用SVN之前就已經很舊了,現在我想將它們放到SVN中,並且如果可能的話保留它們的原始日期,以便SVN歷史記錄匹配真實日期在哪裏編輯文件。

操縱SVN服務器時間是一個明顯的選擇,但由於SVN服務器超出了我的控制範圍,因此無法在此處使用它。

+0

這是一個現有的存儲庫,或一個新的?你會覆蓋存儲庫中的目錄和/或文件嗎? – 2010-01-20 12:13:23

+0

現有的存儲庫,在初始提交中,我將覆蓋沒有文件,但其中一些將在稍後被覆蓋。我有一堆存檔文件,比如sources-1995-05.zip,sources-1995-08.zip,sources-1996-01.zip,我想將它們的內容轉移到SVN並且有像1995/08/xx這樣的日期和1996/01/xx與各自的承諾。 – Suma 2010-01-20 12:38:10

+0

相關:http://stackoverflow.com/questions/633353/change-the-timestamp-of-a-svn-revision – 2010-01-21 01:32:04

回答

1

我做什麼,最終是:

  • 我的工作站
  • 上安裝VisualSVN服務器創建一個新的 「局部」 SVN倉庫
  • 取檔案逐一對每個:
    • 在工作副本中刪除一切,但.svn文件,以確保被刪除的文件不會被遺留
    • 將存檔解壓縮到workin摹複製
    • 改變系統日期歸檔
    • 添加並根據需要刪除並提交到本地倉庫
  • 一旦完成之日起,使用svnadmin dump主SVN服務器負載存儲庫
  • 轉儲使用svnadmin load

上述步驟對於我來說比安裝pre-revprop-change鉤子更容易。 (我們目前使用的版本只允許編輯日誌消息。)

注意:不是更改系統日期,也可以在加載之前在轉儲文件中編輯日期。

+1

只要您的編輯器保留任何二進制信息並且不會更改轉儲文件最終的線。 – Dingo 2010-01-21 18:02:13

1

每個修訂版都有一個屬性,svn:date。如果您有權修改未受版本控制的屬性,則可以更改該值。

14

日期和時間在"special" revision property, svn:date。你可以修改它,像這樣:

svn propedit svn:date --revprop -r 12345 

或:

svn propset svn:date --revprop -r 12345 2009-02-12T00:44:04.921324Z 

修訂(例如12345以上),也可以HEAD意味着最新版本。

日期格式爲ISO 8601格式。

您需要存儲庫才能設置相應的pre-revprop-change掛鉤(位於存儲庫的hook目錄中)以允許修改svn:date。隨SVN存儲庫一起提供的模板應該很有幫助。