您的位置:軟件測試 > 開源軟件測試 > 開源配置管理工具 > SVN
為什么 Git 比 SVN 好
作者:網(wǎng)絡(luò)轉(zhuǎn)載 發(fā)布時間:[ 2014/1/2 10:44:27 ] 推薦標簽:配置管理 SVN Git

如果項目創(chuàng)建了維護分支 /branches/1.x ,若和 /trunk 授權(quán)相同,則需要將上述授權(quán)在 /branches/1.x 下重建。需要在授權(quán)文件中再添加如下授權(quán)指令:

    [demo:/branches/1.x]
    @demo-admin = rw
    @leaders = r

    [demo:/branches/1.x/doc]
    @demo-dev = rw
    @designers = rw

    [demo:/branches/1.x/src/apps]
    @demo-dev = rw

    [demo:/branches/1.x/src/common]
    @demo-dev = rw

    [demo:/branches/1.x/src/html]
    @designers = rw

    [demo:/branches/1.x/src/secret]
    * =
    @demo-admin = rw
    jiangxin = rw

如果版本庫的分支和里程碑越來越多,配置的工作量相當可觀,稍有不慎不是授權(quán)文件格式破壞導致SVN無法工作, 是造成開放授權(quán)。

我曾經(jīng)寫過SVN路徑授權(quán)的補丁,并寫了一款SVN版本庫管理的開源軟件 (參見 《pySvnManager手冊》 ), 但想完美解決這個問題很難。我的一個設(shè)想是在SVN對分支和里程碑授權(quán)檢查時缺省使用 /trunk 的授權(quán),但這樣的實現(xiàn)要求使用SVN嚴格遵循約定俗成的三個目錄的規(guī)范。

Git對于寫操作可以精細到目錄和分支級別(使用Gitolite作為服務(wù)器), 但作為分布式版本庫控制系統(tǒng),在設(shè)計上只能實現(xiàn)版本庫量子化的讀授權(quán)。 即某用戶對整個版本庫要么都能讀,要么對整個版本庫都不能讀。

那么如何控制Git版本庫的讀授權(quán)呢?實際上Git可以通過子模組來實現(xiàn)細粒度的讀授權(quán)。 即在項目需要精細授權(quán)的場合,將版本庫拆分為多個Git版本庫進行單獨授權(quán), 再使用子模組將多個版本庫整合為一個。這個操作并不復雜,而且有助于實現(xiàn)項目的模塊化。

誤解3:Git能隨意改變歷史提交,這對于版本控制來說是不合適的

Git對歷史提交的修改只對本地提交有意義。本地提交像是和共享版本庫間的緩沖。 在未將本地提交推送到遠程共享版本庫之前,開發(fā)者可以后悔?梢詫Σ煌暾奶峤徽f明進行補充, 可以移除錯誤的提交,可以壓縮合并提交等。Git對提交歷史靈活的操作是Git獨有的功能, 是提交審核的必備工具。
      對于已經(jīng)推送到遠程共享服務(wù)器的提交,Git不能再像本地一樣隨意更改了。 因為推送到共享版本庫的提交一旦被其他程序員獲取,便擴散出去, 如覆水難收,難掩眾人悠悠之口。所以Git更改歷史提交只對本地有效,是安全的。
      相比之下,SVN本地工作區(qū)和集中式版本庫之間沒有緩沖,一旦發(fā)現(xiàn)提交了錯誤內(nèi)容, 或?qū)懥隋e誤的提交說明,則無法更改,除非SVN管理員介入。 SVN也允許配置為可修改歷史提交說明,但是一旦管理員放開此功能, 歷史提交的提交說明有可能被批量、惡意更改,并且無法恢復。

誤解4:SVN對中文支持更好,Git庫中的中文目錄和文件名會出現(xiàn)亂碼

我也曾經(jīng)這么認為,并在《Git權(quán)威指南》第3章中用了大量篇幅介紹中文支持的注意事項。 并推薦使用Cygwin作為客戶端,以避免GBK字符集為跨平臺開發(fā)的版本庫引入亂碼。
     一個好消息是Windows下常用的Git客戶端 msysGit 也支持Unicode了。 使用新版本(1.7.10)的 msysGit 無需設(shè)置任何Git配置變量, 版本庫中的中文文件名、目錄名、提交說明都使用Unicode編碼。 配合使用Unicode版的TortoiseGit(新的1.7.9.0版本已是Unicode版), Windows用戶不再為跨平臺開發(fā)的字符集問題而傷腦筋了。

誤解5:SVN的認證方式比Git豐富,比如可以實現(xiàn)LDAP認證

我為客戶配置的Git支持HTTP、SSH協(xié)議,和Gitweb。其中HTTP協(xié)議、Gitweb都使用LDAP認證, 實現(xiàn)統(tǒng)一的口令管理。并且無論是HTTP協(xié)議、SSH協(xié)議,還是Gitweb都使用同一套Gitolite授權(quán)。

誤解6:SVN更易上手,更易管理;而Git太難和太靈活了,不適合團隊?

如果想把配置管理做好,無論是 SVN 還是 Git 都不容易,否則 《SVN Book》 以及我寫 《Git權(quán)威指南》 也不會有那么厚了。

覺得SVN更簡單的,看看下面的錯誤你有沒有犯?

● 很多公司的SVN版本庫沒有遵照約定俗成的三個目錄。

● 如何配置SVN悲觀鎖,以便更好地對二進制文件編輯進行協(xié)同。

● 維護合并追蹤的 svn:mergeinfo 屬性,以便能夠正確的分支合并。還要防止無此功能的客戶端對其的破壞。

● SVN如何正確的反刪除,直接添加刪除的文件是不對的。

● 如何使用 svn:eol-style 屬性,以便正確處理跨平臺開發(fā)時的文件換行符問題。

● SVN管理員如何對版本庫進行整理,如撤出不當提交、修改錯誤的提交說明。

● 版本庫的安全性問題,如何做好版本庫的備份。

上一頁1234下一頁
軟件測試工具 | 聯(lián)系我們 | 投訴建議 | 誠聘英才 | 申請使用列表 | 網(wǎng)站地圖
滬ICP備07036474 2003-2017 版權(quán)所有 上海澤眾軟件科技有限公司 Shanghai ZeZhong Software Co.,Ltd