Microsoft: TFVC vs Git

Git

屬於DVCS(Distributed Version Control System)。

每個開發者都可以在本機擁有完整的專案程式碼、程式碼歷史紀錄,亦即local repository。因為相同專案的開發者都可以取得並擁有完整的程式碼資料,故具有異地備份的效果。

所有程式碼都在working space進行修改,修改完成後就commit到local repository。在local repository可以自行建立branch再進行程式碼的異動。完成local repository資料的修改並commit後,可將local repository的資料push到遠端機器上的shared repository(可稱為remote repository),以達到程式碼的共享。

使用fetch即可將遠端機器上的shared repository資料下載到本機端,再使用merge將已下載的shared repository資料合併到本機端的local repository。如果兩者的程式碼有相互衝突(conflict)的地方,再用比較軟體檢視兩者的程式碼,保留所要採用的程式碼。fetch+merge的動作相當於pull所執行的動作。

不同的開發者可以各自在自己的local repository修改相同的程式碼檔案。

完成程式碼者在push程式碼到remote repository之前,應先執行fetch,並merge相同Branch的和local repository和remote repository資料,進行(1)兩者程式碼conflict的排除、(2)編譯成功、(3)執行相關測試並通過,確保local repository是最新且大致穩定的程式碼後,才可push到remote repository。

Git每次commit只紀錄修改的資訊,未被修改的資訊則用指標指向前一個commit。

TFVC(Team Foundation Version Control)

屬於CVCS(Centralized Version Control System)。

每個開發者在本機只擁有最新的專案程式碼,沒有完整的程式碼歷史紀錄,完整的程式碼歷史紀錄統一儲存在特定機器上。

只有專案管理者可以建立、合併、切換各開發者所隸屬的branch。

較適合公司內使用Visual Studio進行開發的團隊,不適合Open Source專案團隊。

參考資料

  1. TFS vs. Git…or is it TFS with Git?

  2. MSDN-Choosing the right version control for your project
  3. TFVC 和 Git 的比較

 

 

Advertisements

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com Logo

您的留言將使用 WordPress.com 帳號。 登出 / 變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 / 變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 / 變更 )

Google+ photo

您的留言將使用 Google+ 帳號。 登出 / 變更 )

連結到 %s