[英]svn to git conversion (how to check the repository quality)
目前我正計划為開源項目提供相當大的git轉換。 存儲庫非常大,因此試驗和錯誤很慢(超過60,000次提交)。
關於如何進行git轉換有很多問題,但幾乎沒有關於如何檢查轉換是否有效的細節。
當然,有一些基礎知識,比如在repos中設置修訂版和比較存儲庫的內容,但歷史,提交消息......移動文件,跟蹤分支之間的更改等 - 變得更加復雜。
所以我的問題是:
注意 :目前我們正在使用reposurgeon但是應該沒有答案,但這確實意味着我們必須進行一次性轉換並獲得正確的權利 。
如果您使用git-svn插件,您可以使用本地git客戶端克隆您的SVN存儲庫,該客戶端可以有效地創建完整歷史記錄的Git存儲庫。 這不僅非常容易且超級快,而且您可以相信您與現有的svn repo正確同步,甚至可以拉出初始克隆后可能發生的更改。
至於需要注意的事項,git不會跟蹤空文件夾。 另一個問題是處理二進制文件,你希望它們不存儲在你現有的倉庫中。 你不想通常在git倉庫中存儲大型二進制文件。 有一些git特定的解決方案,你可以google但如果你通過克隆svn repo拉它們可能會很棘手。
這不是一個明確的答案,只是我們一直在做的一些事情來檢查git轉換是否正常。
找到所有3個以上父母的提交,這些提交的可能性很小,盡管可能有例外情況。
git log --all --min-parents=3
查找具有重復父項的所有提交。 請注意,運行git filter-branch之后可以清除它們,但這有時可能是一個非常緩慢的過程。
git log --all --min-parents=2 --format="format:%H: %P" | egrep ':[^:]* ([0-9a-f]+) [^:]*\1'
找到所有不合並的提交,不要更改任何文件(可能是svn props更改):
git log --all --max-parents=1 --format="format:%H" --shortstat | pcregrep -v -M "^[a-z0-9]+\n "
感謝Julien Rivaud的正則表達式命令!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.