2014-02-06 46 views
2

在開發和集成過程中,SVN和Nexus都被廣泛用作源代碼庫。 這就是說,當我們可以通過SVN設置我們的回購協議時,爲什麼我們真的需要使用Nexus?即使SVN有一個適當的版本控制模式,並且廣受好評。Nexus和SVN有什麼區別?

通過谷歌瀏覽,但似乎沒有提供明顯的區別。 請澄清我。

回答

0

它們都被廣泛使用,它們都是存儲庫......但svn是源代碼的存儲庫,其中nexus是工件的存儲庫(像jar這樣的二進制文件)。他們是非常多的免費系統。

+0

確實,SVN還可以用作儲存罐子的回購倉庫嗎? – Faz

+0

SVN是一個源代碼控制管理,如果你希望你可以在這裏存儲你的工件,但它不是SVN的主要功能。 Nexus是一個企業資源庫管理器,負責存儲所有罐子,公司管理的戰爭,並允許我們與Maven集成以下載和使用工件。 –

5

你可以在顛覆中存儲所有東西。顛覆式結賬會在某個時間點捕獲您的文件系統。在我看來,這種方法有兩個主要問題

  1. SCM系統通常被設計用於存儲文本數據
  2. 存儲在您的SCM版本之間創建你的軟件是如何構建的,它是如何部署的緊密耦合。

Subversion是極少數具有高效二進制文件存儲機制的SCM系統之一,但對我來說,交易斷路器正在使用SCM進行部署。我看到開發團隊無法從CVS和Subversion等工具升級,因爲這些工具直接或間接地需要在客戶站點上發佈和安裝軟件。

儘管我們可能會在某個時間點標記源代碼,但保留髮送給您的客戶的二進制文件的副本至關重要。相同的源代碼很少創建完全相同的二進制輸出。例如,元數據文件可能包含構建日期,導致zip/tar歸檔具有相同的功能結果,但具有不同的校驗和。校驗和對於審計部署非常重要,可以證明分發了正確的文件,有時還可以對發佈版本進行逆向工程。

而不是繼續喜愛的咆哮,我提供了關於這個問題的一些博客文章:

+1

真棒郵政標誌。 –

3

Subversion是源代碼管理。您可以從那裏檢入和檢出源文件,它可以區分基於文本的源文件,允許您在整個發行版和分支中創建標籤。

Nexus通常用於jar分發。您可以存儲構件,但它們通常是經過編譯的,與Subversion不同,您最終可以用較新的構件替換較舊的構件,並且無法跟蹤這些更改。

您可以同時使用Subversion進行源代碼控制,然後使用Nexus來實現它的原始目的:將編譯的Jar文件存儲在本地Maven存儲庫中。

你可以在Subversion中存儲jar文件嗎?當然你可以,但是它會給你帶來什麼? Jar文件佔用了大量的空間,而且很容易看不到從一個到另一個的變化。相反,他們佔用了大量的空間。瓶子佔用Subversion版本庫80%到90%的情況並不少見。

這就是爲什麼我們使用像Nexus這樣的東西來存儲我們的jar,然後在我們編譯時使用Maven或Ant與Ivy來獲取它們。

9

想象一下汽車工廠。在像this這樣的藍圖中,出來了像this這樣的車輛。 SVN就像存儲藍圖的文件櫃,而Nexus就像存儲成品的倉庫。

現在應該有輸入和輸出之間的1對1關聯。但是讓我們假設你改變了工廠本身的環境。那麼即使你使用相同的藍圖,成品也可能出現不同或錯誤。

因此,作爲一般規則,最好儘可能使用Nexus的成品,這已經過質量測試。

希望有所幫助。

+0

謝謝。這是很好的答案。 – kendotwill