专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅

首页 »C 教程 » svn使用方法:SVN加速的实现方法和技巧 »正文

svn使用方法:SVN加速的实现方法和技巧

来源: 发布时间:星期四, 2008年9月25日 浏览:253次 评论:0

1、假定條件

  假定妳熟悉SVN
  如若妳的版本管理工具只是個人使用,不涉及多人使用的,可以直接忽略本文,去做更有意義的事情吧!

2、起因

  SVN雖好,對於少於1萬個源碼文件的項目速度上還算是可以的,但一旦源代碼文件超過1萬個以上,甚至達到10萬個源文件或以上,使用SVN修改區區一個源代碼根目錄下的README文件,然後提交,提交的時間就足夠妳去煮一壺100攝氏度的開水再沖一杯純正的綠茶,喝完,說不定還可以美美地睡一覺~~當然,比起CVS來說,這速度已經算是自行車與摩托車的區別了,但與Git等神速的分佈式版本管理系統來說,就只有兩個字——烏龜-_-!噢!我忘記了,這情況僅發生在非使用本地協議(file://)的情況下——當然,既然是多人使用的版本庫,估計沒什麼理由使用本地協議吧?
  多人使用的版本庫,一般是通過svn:// 、http://、http://、svn+ssh://這幾種協議來讀寫的,但我們知道,通過網絡的來讀寫,其速度很難達到跟本地文件的速度,畢竟啥東西一發到網絡上,就得視乎於網絡速度了,況且估計現今網絡的速度還沒能比硬盤的直接讀寫快吧?
  在此之前,我曾經考慮過換用其它的版本管理系統,例如Git、Mercurial(HG)、Bzr……但各個版本庫都有不盡人意的地方,例如Git雖然速度快則快矣,但沒有一個完全比得上TortoiseSVN的界面,對於像我這種能躺著就絕不坐的人來說,首先否決了這個。Mercurial(HG),一個非常好的分佈式版本管理系統,速度令人滿意,而且有TortoiseHG這樣的界面工具,但可惜的是當我決定把SVN的代碼轉到其上時,發覺目前沒有一個軟件能完全正確的把SVN項目所有記錄轉于其上,嘗試過幾個Python的腳本如Hgsvn等,都不能正確的把項目轉過去,英文的項目還可以,碰到中文標注的項目就死了,於是只好放棄。其它的也是有這樣或那樣的問題,沒有一個像TortoiseSVN那樣的整合工具(TortoiseMerge、TortoiseDiff……)。

3、原理

  於是我轉而考慮能否給SVN加速?思前想後,唯一能提速的方法就是使用本地協議了,但使用本地協議,問題就來了,如何去處理網絡共享的問題?通過網絡協議幾乎是必定的選擇,那怎樣通過本地協議來加速?這時靈光一閃,想到了前段時間搞過的SVK。
  SVK是基於SVN的分佈式版本管理系統(實際上算是SVN的一個外殼)。通過SVK我們可以建立網絡版本庫的一個鏡像,並通過TortoiseSVN使用本地協議來管理本地分枝!!
  SVK的使用請參考我的另一篇文章 [ 分佈式版本控制系統SVK搭配TortoiseSVN的使用 ]
  注意:使用本地協議時,在Windows上的本地協議格式是(file:///d:/svnlib/myproject ),留意那個file:///,是三個反斜槓,一般很容易忽略這個問題導致老是連不上的!

4、實例

  我其中一個項目擁有9453個文件,原來採用的是SVN://協議,每次我修改源碼(Trunk根下的文件)後提交,不得不等待SVN10來20分鐘來檢查文件修改(一般這時候我就會拿杯茶傻傻地望著那個對話框發呆)。使用SVK配合SVN外加本地協議模式後,幾乎一點,修改過的文件就出來了,速度可以跟Git有得一拼了……這樣子我那一大堆的SVN管理的的項目就不用轉Git了。

=== 補充 ===

(可能會有人疑惑這不正是使用SVK嗎?嗯,雖然這是使用SVK,但之前我用SVK時還是直接通過SVN://協議的-_-b 後來我才發現原來SVK的也可以直接使用本地協議……我在SVK上找了老半天都沒有找到這種用法,SVK文檔基本討論的是直接使用它本身的功能,而SVN討論的基本都是使用它本身而且推薦使用的是網絡協議,而我之前在網上找了兩天都沒找到相關SVN加速的方法,只見到很多人說SVN在大項目時速度慢,還有很多人因為速度問題轉而投向Git,也有不少使用SVK的也因為速度問題(估計跟我一樣沒採用本地協議)轉向了Git,如果有同樣的速度,加上SVN優良的GUI界面,豈不是一個完美的選擇?於是就發文了~~)

相关文章

读者评论

  • 共0条 分0页

发表评论

  • 昵称:
  • 内容: