2011-08-05 76 views
1

將src代碼保存到SCM中毫無疑問,但生成的構建文件如何?考慮到你有許多差異化版本的客戶,並且可以接觸到它們,將它們存入一個文件系統,將它們保存到SCM中是一種很好的做法嗎?將構建的二進制文件保存到SCM中

+0

請您詳細說明一下。 –

+0

我可以說一個JAR,它是我的「二進制」,mysoft-1.0.0.jar並將其保存在SCM /versions/mysoft-1.0.0.jar中。明天我會做一個新版本,而不是覆蓋同一個文件(允許scm版本控制二進制文件),我會寫另一個文件mysoft-1.0.1.jar。我想使用SCM作爲一個安全的文件系統(因爲我的服務器經常被備份,維護等等)。 –

+0

你可能會發現這個答案在這種情況下很有幫助。[以svn或git的形式存儲jar文件的最佳實踐]( http://stackoverflow.com/questions/3329041/best-practice-to-store-jar-files-in-vcs-svn-git) –

回答

1

當然,你將無法查看二進制文件的diff文件,但任何類型的文件可以被放入版本控制。

我從來沒有在SVN二進制文件的一個問題,但如果你不小心,在一些其他的SCM(GIT,可能還有其他),他們可能會損壞。

如果您使用的是SVN,則需要考慮的另一件事是,無論何時您上傳新版本的二進制文件,您的回購所使用的空間量都會隨二進制文件的大小而增長。發生這種情況是因爲它不能區分二進制文件,因此每個連續的副本都必須保存完整。因此,如果服務器輔助存儲空間有問題,或者您的二進制文件很大,您可能需要考慮替代解決方案。

所以...你使用SVN嗎? :)

+0

我沒有使用Maven和不會使用它。是的SVN是我的供應鏈管理。我知道二進制文件的副本,這不會是一個問題,因爲新版本將成爲其他路徑中的一個完整的新文件。我不會使用svn來「版本控制」我的版本,就像建立一個可信的文件系統一樣。 –

+0

是的,我從來沒有任何麻煩保持在SVN的二進制文件。它看起來不是最優雅的解決方案,但它應該工作。 –

+0

Git不會破壞二進制文件。這種觀念來自哪裏? – Novelocrat

0

不建議將生成的工件保存到SCM中。

不知道你正在開發什麼樣的程序,對於Java項目,好的做法是使用Maven來構建和存儲工件到Maven資源庫中。 請閱讀article瞭解更多關於Maven Repository的信息,以及爲什麼不把二進制文件放入SCM。

+0

感謝您的意見,但maven不是我的選擇。 –

2

您不應該在版本控制中存儲生成的二進制文件。它們應該是使用存儲庫中的構建腳本編譯和捆綁存儲庫中的源代碼的輸出。如果您的構建由於某種原因無法重現,請修復原因。不要濫用版本控制,將其應用於不發展的工件。

請注意,這是所有參考二進制文件。如果您有外部依賴關係,將它們保留在版本控制下有時是合理的,因爲它們是構建過程的輸入。這將是第三方庫或工具鏈組件等。

如果你只需要你過貨的客戶有什麼備份,滴在同一個備份文件系統,你把你的資料庫上完整的圖像或檔案。將它們保留在文件系統頂層的VCS多餘的包裝層中沒有什麼特別之處。如果有的話,這是不太可靠的,因爲還有一點可能的腐敗。無論哪種情況,如果您關心那些存檔構建的完整性,那麼您應該在它們運輸時將它們加密散列,並將它們記錄在檔案旁邊,以便稍後驗證它們。如果您確實是偏執狂,請使用未保存在該文件服務器上的私鑰簽署校驗和文件。

相關問題