2011-01-27 82 views
0

稍微有點背景第一:如何以及我應該使用哪個工具進行源代碼管理?

我已經使用了Team Foundation Server幾個月,並且知道如何使用它。我一直在Codeplex上爲我的項目使用它。他們需要TFS,這是在我的Visual Studio安裝,所以基本上我從來不知道什麼都花了得到它的工作,因爲它無縫地在Visual Studio中工作,我不得不做檢查和退房的東西...

但現在我想看看有什麼其他替代品可用,先裝水銀的命令行(這是我從來沒有使用過),然後尋找一個GUI的替代,並安裝TortoiseHg,隨後從在其網站上的文檔的指令。然後它說要安裝一個3路Diff工具...我搜索了它,然後找到了TortoiseSVN;我認爲它一定是一些插件或東西,所以我搜索了與我的情況有關的問題,當我偶然發現這個SO Question,並被許多工具迷住了不同的工作。

現在:

  • 有人可以解釋所有的工具都是源代碼控制。我是否必須爲每個不同的任務安裝不同的工具。對於他們來說沒有任何單一的軟件包。基本上,我們在源控制中執行的任務是什麼。我只知道CheckIn,Check Out和檢查來自Codeplex網站的差異。 我還應該知道什麼

  • 是否如Git,到位桶等每一個網站使用他們的源代碼控制不同的龜(XXX)。

  • 是源控制和版本控制不同的術語

請幫助..

+1

就像一個方面說明 - CodePlex上不需要TFS,你可以使用SVN爲好。 – BrokenGlass 2011-01-27 01:14:58

+0

我知道..它給了我選擇TFS和其他一些選項..我知道TFS,所以我把它... – 2011-01-27 01:16:14

回答

5

這是一個巨大的話題,將不可能提供一個包羅萬象的答案。但是這裏有幾個想法,假設你正在尋找更多的是Software Configuration Management的解決方案,而不是一個簡單的Revision Control System類型的方法:

發佈管理:

除了併發控制(辦理登機手續,入住出門等),您的SCM可以/也應該提供歷史記錄,標籤,分支和其他版本管理類型功能。也就是說,它應該總是提供一個單一的真實來源,以說明哪些源文件在哪些發行版,服務包等中。爲了實現這一點,您的構建環境需要很好地集成到您的SCM中。

WIP管理:

一個良好的供應鏈管理系統,將讓你的工作正在進行中比較到最新的版本檢查。它還應該允許您恢復您的WIP,暫時擱置,或者逐個文件地合併另一個人的更改。

文檔&培訓

不要小看它是多麼重要的是使用一個工具,如果需要,可以給你一噸的幫助,書籍,文檔,社區支持,甚至付費支持。另外選擇一個「流行」的工具可能意味着一些新的開發者有一件事要學習。

持續集成:

自動的構建是任何認真組織必須的,你應該選擇一個SCM,可以在你的編譯系統(如哈德森,CruiseControl的,竹等)接入

安全

單片機系統應該有一個內置的認證系統,也可以使用外部認證提供商,因爲許多組織隨着時間的推移而變化。另外,它應該能夠支持在防火牆之外工作的開發人員,最好是支持http。

IDE和構建工具集成

爲了使所有這些東西更容易您的SCM必須能夠無縫地連接到您的開發系統和你使用的任何命令行工具。幾乎所有非Microsoft IDE都支持所有SCM工具,這一事實變得更加簡單。

源瀏覽

是我見過最SCM工具有一批非常優質的第三方瀏覽器,如魚眼的。所以我把這作爲一個區分因素。

那麼使用哪個工具?

如果你的組織在你的公司內相當完善,那麼選擇Subversion。它非常流行,與每個IDE/OS/Build工具集成在一起,與ToroiseSVN一起工作,支持所有平臺,支持多種協議,多個UI,強大的命令行,龐大的社區,免費且堅實耐用。它也有一個很好的免費book

如果你有一個高度分佈式開發組和/或希望收到來自許多不同的人的開源貢獻,去使用Git的分佈式功能。

除了這兩個,爲自己節省大量的時間和麻煩,忘掉一切....真的。我意識到我正在opinion持,但你有點要求提出意見。

1

如果我是勸東西給你,這將是

使用水銀(又名hg),並從 開始在命令行中學習它。這 這樣,你將學習所有的基本概念, 可能只使用GUI覆蓋等 如TortoiseHG時有些從 隱藏你。所有與當前良好的 簡單的教程,也許 廣爲人知hginit覆蓋 一些簡單的使用場景。

這將是「我還應該知道什麼」部分的答案,至少是一開始。然後你可以自己探索,有一個有限的,但有點堅實的基礎。或者,至少,您可以提出更簡明的問題以瞭解更多信息,或者對您引用的SO問題有更多的瞭解。當然,你的問題比這個要寬泛得多,但我建議不要試圖一下子把握一切。每個系統都有它自己的怪癖和特色,但你現在不應該爲此擔心。就像編程一樣 - 如果你還不知道,你不應該一次嘗試學習多種語言。

啊,而且作爲點睛之筆:龜(XXX)是不完全是一個版本控制系統,換一個外殼,集成的Windows客戶端系統XXX那只是一個典型的名稱。就我而言,「烏龜」部分是指「殼」。


PS。 「Mercurial」的建議是由於我個人的口味,當然也是由於學習Hg會讓你從其他系統很容易掌握大部分想法(如果你需要的話)。

1

從我個人的經驗,我會建議在尋找新一代的「源代碼控制系統」被稱爲分佈式版本控制系統。這些都是像Git這樣的系統(我認爲Mercurial,但我沒有用過),它在本地有效地存儲完整版本的控制系統,當你提交到遠程倉庫時(推入git條款),你推送你的本地版本控制系統到服務器上的主版本控制系統。

而且Git的設計,使分支變得輕而易舉。在像Subversion這樣的系統中,分支不是那麼容易,但是使用Git Branching是推薦的修改操作。我已經使用了Git,Subversion(SVN)和SourceSafe(迄今爲止最糟糕的三種源代碼控制系統!),這是Git比較傳統的源代碼管理系統的主要優勢。

例如,如果你是修復bug或添加在使用SVN代碼庫功能的標準做法是

  1. 退房你會在工作的分支。
  2. 製作任何錯誤修復並測試它們。
  3. 簽入更改。

使用Git或類似的系統你會

  1. 科主分支機構本地(即開發,製造設備1.1版本等)。
  2. 讓你的本地分支的版本的任何錯誤修復和測試(即你爲1.1版本的JIRA-123-bug修復分支)。
  3. 將分支合併回您創建的主分支的本地副本,並確保一切正常。
  4. 然後將您對主分支的本地副本所做的更改推送到中央Git存儲庫。

這樣做的好處是,如果您必須返回並修復錯誤修復程序,您仍然擁有該分支的本地副本。

有關更多信息,請參閱文章A Successful Git Branching Model

相關問題