版本控制系統:中央控管 vs 分散式
中央控管與分散式的不同
可以用檔案分享來作一個比喻,會比較容易瞭解.檔案分享有中央控管的Server/Client(ex. ftp),跟點對點(ex. BT).S/C模式的檔案放置一固定位置,取用的人需要知道位置與取得權限,點對點則沒有固定的位置,也不需要取得權限.如果要同步本機磁碟裡的資料,相對於使用S/C模式來說,只有登入server一途.如果server 壞掉了將沒有辦法同步資料.點對點技術不需要知道資料的位置跟權限,只要點對點環境中有另一個節點也持有資料便可以.只要加入點對點網絡,大家都是server,大家也都是client.
可以用檔案分享來作一個比喻,會比較容易瞭解.檔案分享有中央控管的Server/Client(ex. ftp),跟點對點(ex. BT).S/C模式的檔案放置一固定位置,取用的人需要知道位置與取得權限,點對點則沒有固定的位置,也不需要取得權限.如果要同步本機磁碟裡的資料,相對於使用S/C模式來說,只有登入server一途.如果server 壞掉了將沒有辦法同步資料.點對點技術不需要知道資料的位置跟權限,只要點對點環境中有另一個節點也持有資料便可以.只要加入點對點網絡,大家都是server,大家也都是client.
對於版本控制系統來說,專案成員間的程式碼分享與合併所遇到的困難與檔案分享是一樣的.使用中央控管的版本控制系統,需要一個固定位置,專案的成員都需要配給”權限”.成員被限制只能與中央統一的一份程式碼作合併作業,分散式的版本控制系統,每個成員可以在沒有網路的狀況下進行自己的版本控制.之後可以自由選擇與任何一個端點的程式碼做分享作業.
因此,對於實際生產程式碼的coder,有以下的不同
1)中央控管需要記得帳號密碼,分散式的不用
2)中央控管需要網路環境才能使用,分散式的不用
1)中央控管需要記得帳號密碼,分散式的不用
2)中央控管需要網路環境才能使用,分散式的不用
以管理角度來看,中央控管與分散式的差異
最大的差異來自於”權限”的概念.分散式版本控制沒有”權限”的概念,除了可以自由的在無網路狀況下進行任何版本控制操作,與別人分享或同步程式碼也不需要取得帳號密碼權限等東西.這會讓使用分散式版本控制的團隊需要額外架構一個”權限”的系統.可能是推派一個總工程師,定期收集各方的更新,也可能是使用有權限的檔案系統作限制,也可能是大家約定一個統一位置作為最後realse 的目的地.中央控管版本控制有”權限”概念.但是只是用來處理”讀/寫”的控制.只可以達到簡單的分工分權.
最大的差異來自於”權限”的概念.分散式版本控制沒有”權限”的概念,除了可以自由的在無網路狀況下進行任何版本控制操作,與別人分享或同步程式碼也不需要取得帳號密碼權限等東西.這會讓使用分散式版本控制的團隊需要額外架構一個”權限”的系統.可能是推派一個總工程師,定期收集各方的更新,也可能是使用有權限的檔案系統作限制,也可能是大家約定一個統一位置作為最後realse 的目的地.中央控管版本控制有”權限”概念.但是只是用來處理”讀/寫”的控制.只可以達到簡單的分工分權.
另一項差異在於管理”統整”的問題,這對於release 管理是很重要的.因為分散式版本控制進行更新與紀錄都是在程式員本機進行,自然的,2個人的團隊就會有2份不同的程式碼, 5個人的團隊就會有5份不同的程式碼.分散式版本控制不會限制,也沒有辦法限制團隊成員必須同步其他人的更新.這會對release 管理是一個問題.所以使用分散式版本控制,必須額外採用其他的管理手段來達成.中央控管式的就不會有此困擾,只要伺服器的程式碼被更新,所有的團隊成員都需要先合併伺服器的程式碼才能繼續改程式.所以只要追蹤伺服器上的那份程式碼就可以完美的進行release管理.但這樣會衍生出只有要人上傳他的更新到伺服器,團隊其他人都要停下工作,進行與伺服器合併更新,之後才能繼續工作,造成不便.
因此,對於實際負責專案進度的管理者而言,有以下差異
1)中央控管不需要煩惱團隊成員的程式碼同步,分散式的要
2)中央控管不需要煩惱release作業中的統整工作,分散式的要
1)中央控管不需要煩惱團隊成員的程式碼同步,分散式的要
2)中央控管不需要煩惱release作業中的統整工作,分散式的要
留言