Subversion1.5已發(fā)布,新特性值得期待
Subversion已被廣泛應(yīng)用但是也在不斷的更新,這里介紹一下Subversion1.5發(fā)布,以及它的新特性。
CSDN從Subversion中文站第一時(shí)間拿到了它的中文版的發(fā)布說明。在此感謝Subversion中文站的文章提供。另外他們還為大家準(zhǔn)備了Subversion1.5專題,給許多特性提供了更深入的討論。還有他們翻譯的《使用Subversion進(jìn)行版本控制》也已經(jīng)發(fā)布1.4版本,最新的1.5版本也正在翻譯中。言歸正傳,讓我們看一下Subversion1.5的新東西吧。
此次的版本的更新主要包括以下幾個(gè)方面:
1、合并跟蹤(基礎(chǔ))
2、稀疏檢出(通過新的–depth選項(xiàng))
3、交互式的沖突解決
4、變更列表支持
5、svn:externals的相對URL和peg修訂版本
6、對于ra_svn和svnserve的CyrusSASL支持
7、通過sharding對于FSFS的大規(guī)模開發(fā)的支持
8、FSFS優(yōu)化,通過不變的文件隔離
9、WebDAV的透明通過代理寫
10、copy和move的改進(jìn)
11、速度改進(jìn),取消響應(yīng)改進(jìn)
12、更簡單的使用試驗(yàn)ra_serfDAV訪問模塊
13、API改變、改進(jìn)以及語言綁定
14、超過150的bug修正,改進(jìn)
Subversion1.5是以前Subversion發(fā)布版本的超集,可以認(rèn)為是當(dāng)前“最好的”版本。包含所有1.0.x到1.4.x的,以及以前版本沒有的修正和特性。所有的新特性將會寫入Subversionbook,見svnbook.red-bean.com。
兼容性問題
以前的客戶端和服務(wù)器可以直接與1.5的服務(wù)器和客戶端交互,然而,如果服務(wù)器和客戶端不全是1.5時(shí),一些新的1.5特性(例如合并跟蹤)將會不可用,而另外一些特性如稀疏檢出,在服務(wù)器是舊的,客戶端是新的時(shí),可以運(yùn)行但是效率比較低。
沒有必要轉(zhuǎn)儲并重新加載版本庫,subversion1.5可以讀取以前創(chuàng)建的版本,升級只需用最新的庫和二進(jìn)制程序覆蓋原來的程序。
Subversion會維護(hù)與先前版本API/ABI的兼容,只會增加新的特性,而不會刪除舊的特性。根據(jù)1.0,1.1,1.2,1.3或1.4的API編寫的程序,可以使用1.5的庫編譯,為1.5編寫的程序不必為舊庫編譯或運(yùn)行。
新特性的兼容性表格
新特性
MinimumClient
MinimumServer
MinimumRepository
Notes
合并跟蹤(基礎(chǔ))
1.5,1.5,1.5
稀疏檢出(通過新的–depth選項(xiàng))
1.5,any,any
交互式的沖突解決
1.5,any,any
變更列表支持
1.5,any,any
svn:externals的相對URL和peg修訂版本
1.5,any,any
對于ra_svn和svnserve的CyrusSASL支持
any*,1.5,any*,1.5,any
◆受限,見SASL和svn://兼容性 過sharding對于FSFS的大規(guī)模開發(fā)的支持
any*,1.5,1.5,1.5
◆1.5file://兼容性需要FSFS優(yōu)化,通過不變的文件隔離
any*,1.5,1.5,1.5
◆1.5file://兼容性需要WebDAV的透明通過代理寫
any,1.5*,any
◆需要Apache2.2服務(wù)器copy和move的改進(jìn)
1.5,any*,1.5,any
◆受限,見copy和move的改進(jìn)
速度改進(jìn),取消響應(yīng)改進(jìn)
1.5,any,any
更簡單的使用試驗(yàn)ra_serfDAV訪問模塊
1.5,any,any
工作拷貝和版本庫格式更改
工作拷貝格式已經(jīng)升級,這意味著1.4和更老的Subversion客戶端不能與Subversion1.5的工作拷貝上工作,工作拷貝是自動升級的。類似的,版本庫格式也已經(jīng)改變,意味著直接訪問庫的1.4以及舊的版本的程序如svnserve,mod_dav_svn,svnadmin等不能讀取Subversion1.5的版本庫,但是版本庫是不能自動升級的。
工作拷貝升級
警告:如果一個(gè)Subversion1.5客戶端遇到了一個(gè)1.5以前的工作拷貝,它會在接觸到工作拷貝時(shí)自動升級工作拷貝格式,并使舊的Subversion客戶端不能再讀這些工作拷貝了。如果你在機(jī)器上使用多個(gè)版本的Subversion,請確認(rèn)你對工作拷貝是用的subversion版本,防止意外升級工作拷貝。(但是這種自動升級行為不會發(fā)生在版本庫上,只發(fā)生在工作拷貝。)
如果你意外的將工作拷貝從1.4升級到1.5,并希望降級到1.4,可以使用change-svn-wc-format.py,詳情看這篇文章,也可以以–help運(yùn)行來查看使用指導(dǎo)。
版本庫升級
Subversion1.5服務(wù)器可以與1.4和以前的版本庫工作,如果不使用svnadminupgrade命令,版本庫不會自動升級到1.5。這意味僅僅升級服務(wù)器不能直接得到某些特性,你也需要升級版本庫。(我們決定不使用自動升級版本庫是因?yàn)槲覀儾幌M鹲ubversion1.5偷偷的升級成1.4不可用的版本庫。)
在運(yùn)行svnadminupgrade之后,你或許希望對版本庫運(yùn)行svn-populate-node-origins-index程序。Subversion1.5為每個(gè)版本庫維護(hù)了一個(gè)節(jié)點(diǎn)起源的索引,為了得到一些信息,偶爾構(gòu)建這個(gè)索引。但是對于包含許多修訂的老版本庫,最好一次創(chuàng)建這個(gè)索引,使用前面說道的工具,而不會因?yàn)樽约簶?gòu)建這個(gè)索引而影響查詢的性能,更多細(xì)節(jié)見issue#3024。
命令行輸出的變更
盡管我們希望盡可能讓命令行程序的的輸出與以前版本保持兼容,但是還是要添加一些信息,這會破壞一些精確依賴輸出的腳本。不幸的是,我們不能列出1.5輸出的所有改變,但有一條可以確定的是沖突標(biāo)記的行結(jié)束符號會和文件的eol-style匹配。
SASL和svn://的兼容性
所有1.x的客戶端,包含或不包含CyrusSASL支持的,都可以通過在CyrusSASL沒有開啟時(shí)認(rèn)證正常。注意CRAM-MD5和ANONYMOUS機(jī)制是Subversion內(nèi)置的,所以即使CyrusSASL插件不在,我們也可以使用。
沒有CyrusSASL支持的1.x客戶端不能通過開啟CyrusSASL,允許CRAM-MD5和ANONYMOUS機(jī)制的1.5+的subversion服務(wù)器認(rèn)證,包含CyrusSASL支持的1.5+客戶端可以通過開啟SASL功能的1.5+服務(wù)器認(rèn)證,只要保證服務(wù)器支持的某個(gè)機(jī)制客戶端也支持。
關(guān)于CyrusSASL的更多信息可以看這個(gè)部分。
自定義revprops現(xiàn)在需要通過pre-commit鉤子的檢驗(yàn) Subversion每個(gè)修訂版本都有一組關(guān)聯(lián)的修訂版本屬性;除了標(biāo)準(zhǔn)的日志信息,作者和日志,可以設(shè)置任意的用戶定義的屬性。這些屬性本身不是版本化的,所以不能恢復(fù)修改的內(nèi)容。因此,如果我們沒有設(shè)置pre-revprop-change,我們就不能修改提交修訂版本的revprops。在Subversion1.5之前,我們只能在提交時(shí)提供這三個(gè)標(biāo)準(zhǔn)的revprops;管理員使用鉤子來控制這三個(gè)標(biāo)準(zhǔn)修訂版本屬性的內(nèi)容,需要在pre-commit和pre-revprop-change檢查,但是對于自定義的屬性,只有pre-revprop-change是相關(guān)的。
Subversion1.5添加了svncommit包含–with-revprop選項(xiàng),允許用戶在提交時(shí)為修訂版本指定屬性,因此在Subversion1.5允許在沒有pre-revprop-change鉤子時(shí)設(shè)置修訂版本屬性,pre-commit可以在提交之前檢查事務(wù)修訂版本屬性(就像許多服務(wù)器已經(jīng)使用pre-commit來檢查正確格式化的log)。
這意味著如果你以前依賴pre-revprop-changeto鉤子控制對于修訂版本屬性的修改(不僅僅你是跟蹤它們的歷史),那你先現(xiàn)在也需要在pre-commit添加類似的控制。
【編輯推薦】
- Subversion Pre-Commit-Hook Template未明安全漏洞
- 七步搞定Subversion服務(wù)器在Ubuntu下的配置
- 三大主流Subversion客戶端初探
- CentOS安裝新版subversion
- 學(xué)習(xí)筆記:剖析Collabnet Subversion集成