簡體   English   中英

svn到git轉換(如何檢查存儲庫質量)

[英]svn to git conversion (how to check the repository quality)

目前我正計划為開源項目提供相當大的git轉換。 存儲庫非常大,因此試驗和錯誤很慢(超過60,000次提交)。

關於如何進行git轉換有很多問題,但幾乎沒有關於如何檢查轉換是否有效的細節。

當然,有一些基礎知識,比如在repos中設置修訂版和比較存儲庫的內容,但歷史,提交消息......移動文件,跟蹤分支之間的更改等 - 變得更加復雜。

所以我的問題是:

  • 應該在新轉換的git存儲庫中檢查哪些區域,以確定轉換是否正確並成功?
  • 有什么需要注意的問題/陷阱?
  • 任何人都可以建議用於評估轉換后的svn項目的策略,以確保在轉換過程中沒有出錯嗎?

注意 :目前我們正在使用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM