Posted on 2011-06-27 21:29
幻海藍夢 閱讀(1997)
評論(0) 編輯 收藏 所屬分類:
Git
SVN是當前使用最多的版本控制工具。與它相比較,Git最大的優勢在于兩點:
易于本地增加分支和分布式的特性。
下面兩幅圖可以形象的展示Git與SVN的不同之處
對于易于本地增加分支,圖中Git本地和服務器端結構都很靈活,所有版本都存儲在一個目錄中,你只需要進行分支的切換即可達到在某個分支工作的效 果。而SVN則完全不同,如果你需要在本地試驗一些自己的代碼,只能本地維護多個不同的拷貝,每個拷貝對應一個SVN服務器地址。舉一個實際的例子,以前 我所在的小組使用SVN作為版本控制工具,當我正在試圖增強一個模塊,工作做到一半,由于會改變原模塊的行為導致代碼服務器上許多測試的失敗,所以并沒有 提交代碼。這時候上級對我說,現在有一個很緊急的Bug需要處理, 必須在兩個小時內完成。我只好將本地的所有修改diff,并輸出成為一個patch文件,然后回滾有關當前任務的所有代碼,再開始修改Bug的 任務,等到修改好后,在將patch應用回來。前前后后要完成多個繁瑣的步驟,這還不計中間代碼發生沖突所要進行的工作量。可是如果使用Git, 我們只需要開一個分支或者轉回到主分支上,就可以隨時開始Bug修改的任務,完成之后,只要切換到原來的分支就可以優雅的繼續以前的任務。只要你愿意,每 一個新的任務都可以開一個分支,完成后,再將它合并到主分支上,輕松而優雅。
分布式對于Git而言,你可以本地提交代碼,所以在上面的圖中,Git有利于將一個大任務分解,進行本地的多次提交,而SVN只能在本地進 行大量的一次性更改,導致將來合并到主干上造成巨大的風險。Git的代碼日志是在本地的,可以隨時查看。SVN的日志在服務器上的,每次查看日志需要先從 服務器上下載下來。我工作的小組,代碼服務器在美國,每次查看小組幾年前所做的工作時,日志下載就需要十分鐘,這不能不說是一個痛苦。后來我們遷移到 Git上,利用Git日志在本地的特性,我用Ruby編寫了一個Rake腳本,可以查看某個具體任務的所有代碼歷史,每次只需要幾秒鐘,大大方便我的工作。當然分布式并不是說用了Git就不需要一個代碼中心服務器,如果你工作在一個團隊里,還是需要一個服務器來保存所有的代碼的。
原文;http://www.zzbaike.com/wiki/Git%E4%B8%8ESVN%E9%97%B4%E7%9A%84%E6%AF%94%E8%BE%83
http://www.zzbaike.com/wiki/Git%E4%B8%8ESVN%E9%97%B4%E7%9A%84%E6%AF%94%E8%BE%83