簡體   English   中英

在git-svn中處理帶有二進制文件的大型存儲庫

[英]Handle large repository with binaries in git-svn

在我的工作場所,有一個包含大量二進制文件的大型svn存儲庫(+80.000版本)。 我正在試驗git-svn,但克隆整個歷史似乎是不切實際的(完成這個過程需要100多GB和近一周的時間)。

我已經嘗試克隆修訂的一個子集(最后〜10.0000),並且工作得相當好。 這種方法的主要缺點是責任只能達到我提取的最早的修訂版。

理想情況下,我想克隆源文件的整個歷史記錄,並且只修復二進制文件的最后一千個修訂版。 這有可能嗎? 還有其他建議嗎?

我在我的工作場所遇到過同樣的問題,所以我會分享我的解決方案。

不幸的是,解決方案並不是為了做你想象的事情(雖然我最初也想到了這一點)。 解決方案是重構存儲庫,將二進制文件與源分開。 這說起來容易做起來難,因為你需要讓你的部門參與進來,這影響你團隊的工作流程,但是如果你能把它拉下來,那將是值得的。

實際上有三種類型的文件需要考慮:

  • 源應該在存儲庫中隔離。 這很容易理解。
  • 第三方二進制文件也可以提交到存儲庫,但通過svn:externals導入它們可以避免大量潛在的重復。 這些二進制文件並不是那么糟糕,因為你不會有很多歷史記錄。
  • 到目前為止,生成的二進制文件(編譯的輸出)是最糟糕的! 這些隨着每次編譯而改變,並且維護歷史是沒有意義的。 VCS系統不是為了解決這個問題。 一些公司喜歡提交二進制文件,因為他們可以在不編譯的情況下檢查最新的負載,但是會有巨大的成本。

我一直在實現的解決方案是通過單個命令在主要產品構建和包中創建所有二進制文件。 然后,我將從構建機器構建,打包和存檔夜間(或按需)構建。 人們可以從構建機器獲取最新的二進制文件,只要這些軟件包對安裝友好,它比執行svn up更容易svn up因為你不會有這么多的更新/沖突/合並。 這使生成的二進制文件完全脫離SVN。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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