使用 .NET 的 10 人以內開發團隊用 SVN 好還是 TFS 好?為什麼?
07-20
【整理】TFS vs SVN
如果是純粹源代碼版本管理,建議用 SVN 或者 git ;如果要進行軟體生命周期管理、項目管理,以及源代碼自動Build生成,生成後自動部署到測試環境(乃至生產環境)等,TFS(Team Foundation Server)是個不錯的選擇。部署上會比 SVN、git 複雜,但是用起來並不象1樓說的有那麼些問題,項目的團隊管理功能(簽入簽出)已經內置在 VS (Visual Studio 2010 Visual Studio 2012) 里了,操作還是很方便的。做個選擇其實不用那麼苦逼。
TFS的思維和時代是脫節的
TFS通過複雜的看似功能強大配置管理,將聯機看做是整個項目周期的常態,這在實際使用中造成極大的不便。現在流程的Git以及SVN的幾個演化軟體,其實都解放了「聯機」的約束:代碼只需要在提交到版本庫的時候才聯機,這不管是XP還是其他管理模式中都逐漸強化的一個概念。對於說集成管理中的任務管理、生成管理等,本質上是團隊管理的一部分。相對來說,第三方的subversion,Git等,都有更靈活的支持方案。配置管理都是一次性的,成本消耗是完全可控的。
複雜項目更要慎用TFS
對於@Cheney所講的「業務複雜的企業型項目」,TFS更是不可承受之重。越是複雜的系統,越要講究靈活性。且不說TFS對於伺服器的消耗,在同等情況下,TFS在個人成本上的消耗相對來說更大一些。帶過幾個幾乎同樣素質的開發團隊,同樣的VS環境,使用TFS的埋怨比GIT、Subversion都要多。和其他的管理者也溝通過這個現象,我相信絕不是個例。更不能理解的是,使用TFS來實現MSF都是彆扭的,這很讓人迷惑:這個產品的指導核心是什麼?
SCM不僅僅是Code
從SCM的角度來講,本質上也不應該僅僅是Source Code的管理,這必須要求SCM是開放的。項目的前期文檔,如可行性報告、售前資料、業務調研等等,也不僅僅是開發團隊(含測試)進行使用,Sales、BA都會使用。對於這個,VSTE的弱智我都不想說了。更不能容忍的是,居然對於Office系列的,比如Word,TFS都不能直接實現Compare或者Merge。這讓PM們情何以堪?再一個,當項目中包含一些跨平台項目時,尋找和配置各種TFS插件的過程絕對會讓你吐血。
不能因為MS所以MS
我本身也是MS的死忠。但對於TFS以及MS的其他產品,其實我們應該站在更客觀的立場上去選擇,如同一個諮詢師一樣:只選擇最合適的,而不要限制於誰的產品。比如說你會使用Office,但不一定非要選擇SkyDrive;MS有Photo Story,估計大部分團隊寧可美圖秀秀也不會用這個吧?Update at 2015-08-03:TFS 2013之後,上述問題的很多地方有改善,特別是支持Git方式管理源碼。正在嘗試中,本答案以後再補充更新。基本策略,熟悉哪個就用哪個,1L明顯是熟悉svn才出此回應。
svn或git都是代碼版本控制系統,tfs不同,它是軟體生命周期控制系統,擁有豐富的工作流程管控(包括CMMI和Scrum等模板),和持續集成編譯等功能。如果是業務複雜的企業型項目,使用TFS是不二的選擇。如果是互聯網項目,只需要分支、簽入簽出等版本控制功能即可,所以用svn或tfs都無所謂。都很方便。
PS:1 TFS2010已經非常出色,擬補了2008版本諸多短板弊端。2 極少的可能,你今後會移植項目至mono平台,這種情況就不要考慮tfs了。
3 個人推薦,如果選擇svn還不如選擇git,給你硬碟發點兒福利。
如果大家都會用 TFS 那就 TFS,如果要從頭學習,那就選擇 GIT,連微軟自己開的 codeplex 都支持 git,沒什麼好說,VCS 無冕之王。
個人覺得SVN比較好,一是本身免費,二是配置方便,使用起來很簡便,TFS雖然和VS結合比較緊密,但是用起來不直觀,操作步驟比較繁瑣,checkin/out都不是很直觀,以前用的時候還按時出現衝突。團隊人數並不多的情況下svn足夠負荷,所以覺得svn更好。
http://bitbucket.orgTFS大概是指Team Foundation Server 而不是 TFS開源首頁 吧,後者不用說了,和SVN根本不是一回事,前者的話,非典型CVS。
SVN比較古老了,現在流行的是git,如果兩者都沒有用,而且都無基礎,建議就用git吧。 對了,這個問題添加的話題是TFS - 熱門問答,描述是「淘寶文件系統」,話題添加錯了。已幫你刪除。
看項目的複雜度,以及團隊成員對工具的熟悉程度。沒有一個工具能在readme中列舉出每一種適用情況,更多還是要根據實際做需分和選擇。
看你的需求如何了,如果只是版本管理,svn和git就可以了,系統集成管理用tfs可以,不過tfs配置很麻煩,版本管理很蛋疼,使用時要多看msdn
請選擇Git。但是自己部署Git託管的話有一定小門檻。SVN和TFS都是和時代有點脫節的產品。不過TFS2013看起來好像還可以(支持Git,Pul Request),可以簡單嘗試。
這個問題需要看你跟進一步的需求,SVN的好處在於開源,免費,使用簡單,可能很多開發者都用過,所以上手快,但缺點是沒有集成項目管理的內容,需要第三方插件或程序支持;而TFS需要付費使用,使用相對複雜,如果沒有有經驗的人指導還是要熟悉一段時間,但優點是項目管理方面非常方便,用了才知道。
推薦閱讀:
※asp.net core 原生製作網站還是用 abp框架 ?
※能推薦.net個人感覺比較好的開發工具嗎?
※做ASP.NET項目,出現這個是什麼意思?怎麼解決?
TAG:NET | SVNSubversion |