只是爲了澄清:當你說他們會添加/提交,你的意思是他們沒有做舊版本的svn副本到新的版本名稱,是否正確?基於假設我理解正確...
這可能嗎?是的,但沒有到位,也不容易。
我會這樣做的方式是編寫一個腳本,它會以您希望它們完成的方式重放提交,將新的repo轉儲到svn轉儲文件,使用svndumptool.py調整轉儲文件,自定義腳本來設置日期和作者等。
你也許能夠得到svn來幫助你一些。試試這種方法:
複製您的存儲庫,這樣您就可以使用該功能,而不會爲其他人造成混亂。然後,在該存儲庫中,創建/project
/project/trunk
,/project/tags
和/project/branches
目錄。結帳項目/主幹。使用svn export
將您1.0.0版本的第1版轉換爲您的主幹工作副本。使用svn log --xml
獲取原始提交消息,使用svn add
添加所有文件並提交。這給你你的原始起點。
現在,對於對您的/version/1.0.0
所做的每個提交,將該更改集合併到您的新主幹中,使用svn log --xml
提取提交消息,並提交。 將提交用完到1.0.0後,請從trunk
到tags/1.0.0
執行svn copy
。然後使用svn merge --ignore-ancestry .../version/1.0.0 .../version/[email protected]
(其中xyz是1.0.1版本的第一次提交)。這應該會使您在發佈過程中發生任何更改。 (您可能需要試驗一下才能得到正確的結果。)
對每個剩餘版本重複該過程。
一旦你完成了這一點,你有一個在/project
下有更好的歷史記錄的存儲庫,但仍然有在/versions
下的舊的醜陋的歷史。要清理掉,使用svn dump project
創建一個只包含新歷史記錄的轉儲文件。現在,您必須執行一些自定義腳本,並可能會使用svndumptool.py
自由地修復轉儲文件中的提交時間戳記和作者,從svn log --xml
輸出中提取該信息。您可能需要爲您所做的標記提交「發明」這些信息。
最後,使用svn load
將該轉儲文件導入到新的存儲庫中。確認所有新的輝煌歷史看起來都很健全,然後繼續使用新的資源庫。
(哦,你會得到加分,如果你設置你的初始svn mkdir /project /project/trunk /project/tags /project/branches
到1984年的提交時間戳;))
披露:我已經促成svndumptool.py
如果你真的想這麼做,你可能想看看ScummVM團隊從CVS轉移到SVN並執行類似的過程(因爲CVS在重命名中不保留歷史記錄)時所做的工作:http://wiki.scummvm。組織/ index.php文件/ CVS2SVN – 2010-04-09 22:43:23