2011-02-01 149 views
2

我有幾個問題的源代碼管理。我和另一位網絡開發人員加入了一家公司,接管了舊有和未來項目的軟件開發。公司沒有源代碼控制,因爲舊項目是由擁有自己的版本控制系統的外部承包商開發的。我想盡快設置一個設置,但是我對於我一直無法找到答案的兩個熱門選擇有一些問題,所以不只是另一個GitHub vs Subversion主題。源代碼控制問題

關於要存儲的項目的一些背景。有幾個較老的項目,主要是驅動程序/固件。我自己開發的新項目將更多基於.Net/Java的,Web開發人員將希望存儲網站內容。

從我讀過的和嘗試過的,我更喜歡Github,但Web開發人員在使用Subversion時變得更加堅定。另一個考慮可能是我在Windows機器上,而Web開發人員在Mac上,所以可用的客戶端會有所不同。我希望我們都可以使用相同的源代碼管理,而不是單獨使用。我使用的第一個源代碼控制是團隊基礎服務器,我們爲每個項目的根目錄有一個存儲庫和子目錄。

Q1。對基本軟件包GitHub的擔憂將允許使用10個存儲庫。考慮到已經有5個網站,十幾個較舊的軟件項目,三個新項目,甚至還有更多未來,我覺得我們會限制我們可以承載的項目數量,即使項目變得越來越少,編輯很少。 。鑑於Git,你似乎克隆/簽出整個存儲庫。我假設我可以在而不是存儲幾個項目在一個存儲庫,正好在不同的子目錄下。

SoftwareRepo/PROJECT1 /代碼

SoftwareRepo/Project2中/代碼

SoftwareRepo /項目3 /代碼

SoftwareRepo/Project4 /代碼

,而不是子目錄使用分支嘗試或者,所以你有一個分支的空倉庫,每個分支包含每個不同項目的內容。我在這裏看到的缺點是,當您切換分支(或我的案例中的項目)時,舊項目的文件在文件資源管理器中隱藏,直到您切換回前一個分支(之前的項目)。

我認爲我們需要的是更多數量的存儲庫,以及他們使用的磁盤空間上限,因爲我們可能會有幾十個小型項目,這些項目只有一個,並且只需要在活動開發期間進行源代碼管理,然後一些更大的項目將利用GitHubs強大的功能,如分支。

對於客戶,我發現SmartGit在管理我創建的測試存儲庫時非常有用,它與我最初嘗試使用的命令通道相對。 Q2302。如果我們使用SubVersion,我們可以自己託管它。我有一個帶有6GB內存的i7,可以運行虛擬機,但Web開發人員不滿意我可能不在辦公室,所以顛覆​​服務器會關閉,而且他們也不滿意我的機器像服務器一樣24/7全天候運行。我們確實有一個業務服務器,但是外包管理員對運行流程非常敏感,所以我們不能對此進行顛覆。服務器硬盤每天至少備份一次。是否有可能將存儲庫文件存儲在我們的業務服務器上,並僅使用客戶端訪問Subversion文件,或者是客戶端訪問存儲庫文件所需的Subversion服務器進程。 Web開發人員正在考慮在亞馬遜E2C雲中運行SVN服務器,但我沒有經驗,因此無法評論。 我對Subversion的擔憂是我之前使用過它,並且發生了一些非常奇怪的錯誤消息,TortiseSVN讓我刪除已簽出的文件夾,並由於衝突(似乎並不存在)在存儲庫中重新加載源代碼庫簽入任何代碼。

如果你有很多不同類型的小項目,你會選擇哪個源代碼控制客戶端,以及你會採用哪種方法(我們自己的在線主機,主機)。我試圖找出什麼是可用選項中的最佳解決方案。

編輯

令人失望的是,我們到底去了哪裏使用SVN。不是我個人的選擇,但我們在嘗試在Windows機器上安裝Git並將其作爲服務器運行時遇到了難以置信的困難。它需要大量的額外安裝,SHH的設置以及通過命令行進行管理。如本指南所示 - http://www.timdavis.com.au/git/setting-up-a-msysgit-server-with-copssh-on-windows/ 另一方面,我們使用VisualSVN Server的SVN,將其指向網絡驅動器以存儲存儲庫,並且我們正在前進。一個安裝程序和易於使用的管理控制檯。 如果Git可以作爲一個單獨的安裝程序與管理GUI完成,我們會使用它,因爲我認爲它是更靈活和可靠的,因爲我們已經有SVN錯誤消息,(損壞的文件/文件doe snot存在/運行清理等。 )

+0

我很抱歉混合git和github。你們都是正確的github是一個託管服務,只有一個有很多SmartGit的功能和支持。 – JonWillis 2011-02-01 08:19:10

回答

4

我想你已經錯過了一點點的git。從手冊頁:「Git本身支持ssh,git,http,https,ftp,ftps和rsync協議。」這不僅意味着如果你願意,你可以從i7自己託管它,但如果你的「業務服務器」已經建立了一個你可以使用它的人,而無需sysadmin來安裝其他任何東西。

此外,git的分佈式特性意味着您不需要只有一箇中央存儲庫,並且您不需要讓所有存儲庫始終處於聯機狀態。只要你經常在線共享彼此的變化,你可以在任何你想要的地方託管你自己的git倉庫,根據需要檢查你自己的變化,並根據需要從另一個變更。這種靈活性聽起來適合您的情況。

+0

Git非常容忍兩個回購之間的連接。您可以通過電子郵件發送修補程序,並在某些中央回購不可用時進行同步。但這並不方便:) – 9000 2011-02-01 01:58:48

+0

這是非常正確的,我經常忽略分佈式系統的關鍵優勢,這意味着「中央」存儲庫不需要在線。 Web開發人員可以檢入自己的存儲庫,並在可用時推送到遠程主機。 可以移動遠程主機嗎?請稍後將它從I7轉移到業務服務器。 – JonWillis 2011-02-01 08:21:50

+0

是的,您可以隨時移動遠程主機。你只需要確保每個使用它的人都知道新的地址。 – 2011-02-01 14:41:12

1

如果我是你,當然我會爲每一個不相關的項目單獨的git回購。如果您通常不需要對兩個項目進行協調更改,我會將兩個項目稱爲「不相關的」,因此您不需要同時進行兩項提交。也許你沒有這麼多無關項目,只需要3-4回購。我在一個巨大的項目中工作,發佈了一些獨立的產品,我們只有3個g​​it回購站。

是的,一個顛覆服務器是一個需要運行的進程,以允許svn客戶端與它通信。請注意,svn hosting is also widely available

你也可以make the SVN repo follow your git repo,所以你們每個人都會得到他/她的首選界面。有一天探索這個。

如果你使用git,你也可以自己託管它:[1][2]等。這可能不像github那麼性感,但是你真的需要所有這些特性嗎?不過,如果你這樣做,20回購成本爲22美元/月,10回購,10美元/月。或者。亞馬遜EC2可能會給你類似的賬單。

但是,如果你不是非常財政緊張,我想你會購買商業SVN和git託管,並卸下管理,備份等你的肩上。使用git,無論如何你都擁有每個機器上的存儲庫的完整副本,它可以防止一些故障。

+0

我也在爲每個項目考慮一個單獨的存儲庫。一些遺留項目的本地化更改比本地化中的重寫更容易進行分支和合並。但大多數項目是完全獨立的。 – JonWillis 2011-02-01 08:23:59

1

GitHub不是一個版本控制系統,它是一個git的託管服務。 Git可以很容易地在本地託管。 (見例如,gitolite用於使用ssh託管多個git存儲庫。)

我強烈建議您使用相同的程序,無論是Subversion還是Git,都適合您。就個人而言,我會推薦Git和每個項目的單獨存儲庫,並使用本地託管的服務器(如gitolite),儘管它不像GitHub那樣時髦。我非常喜歡不依賴第三方來提供對我的源代碼這樣的關鍵資源的訪問。

1

爲了滿足你的svn友好的web開發者,你可以讓svn成爲你的中央repo,你可以在你的本地機器上使用git並使用git-svn與svn服務器交談。

鑑於Git,您似乎克隆/檢出整個存儲庫。

不一定是來自版本1的完整克隆。您可以從特定版本進行克隆。第二季度銷售價格指數爲:

Q2。如果我們使用SubVersion,我們可以自己託管它。我有一個帶有6GB內存的i7,可以運行虛擬機,但Web開發人員不滿意我可能不在辦公室,所以顛覆​​服務器會關閉,而且他們也不滿意我的機器像服務器一樣24/7全天候運行。

如果可能的話,要求你的客戶獲得NAS並在那裏設置你的svn回購。即使你不在辦公室,你也可以讓你的個人(git)克隆工作。 Web開發人員也可以很高興地與svn合作。