svn版本庫瀏覽器 批量更新SVN版本庫的指令碼

2021-10-19 23:08:50 字數 1493 閱讀 1086

接下來就是如何自動化的問題了。我那些版本庫不都是在同一巢狀層上的,有的深有的淺。例如說這樣:

repository

+ ironruby

* trunk

* nemerle

+ ruby

* ruby_1_8

* trunk

星號標註的是要更新的目標。怎麼辦呢?只好遞迴搜尋了。反正能找到帶有".svn"目錄的最上層目錄就被認為是版本庫目錄,以它為標準來判斷是不是要更新的目標;如果是目錄但不是目標則遍歷子目錄來尋找目標。

於是簡單的寫了這樣的ruby指令碼:

#!/usr/bin/ruby

def update_repo( path )

puts path

system "svn up \"#\""

enddef locate_and_update( dir = "." )

entries = dir.entries( dir ).reject do |item|

item =~ /^\.(?:\.|git|hg)?$/ # remove ".", "..", ".git", ".hg"

endif entries.include? ".svn" # if this is a repo

update_repo dir # perform update

else # if this isn't a repo

entries.each do |e| # recursively search for repos

path = "#/#"

locate_and_update path if file.directory? path

endend

endputs time.now # show the time of update

locate_and_update # start from the working directory

把這個指令碼放在我的repository目錄裡,它就能幫我更新整個目錄裡所有的svn版本庫。當然,遞迴搜尋的效率不是太好——如果有任何乙個目錄裡沒有任何子目錄是svn版本庫,這指令碼恐怕要花上好長時間才能「知道」這點。要想快點的話可以改進上面的**,讓locate_and_update搜尋乙個內容是目錄索引的配置檔案,如果不存在的話就以深度優先搜尋建立乙個索引。那樣就不用每次都對整個repository目錄做全面搜尋了。如果版本庫的數量或者位置發生了改變,只要把那個索引檔案刪除它就應該重新生成索引,也不費事。

要完善的話還可以加點引數什麼的,也可以做非互動式處理(傳--non-interactive引數給svn)。不過上面的**已經足夠滿足我自己的需求了,我的repository目錄裡全是svn版本庫,暫時沒把git和mercurial相關的東西放進來……所以懶得多寫指令碼了 ^ ^

分享到:

2008-06-11 07:56

瀏覽 3994

1 樓lwwin

2008-06-11

哦,原來你是這個意思啊……

偶都忘了可以這麼玩=v=+++

svn版本庫瀏覽器 SVN 建立版本庫

svn 建立版本庫 使用svn命令建立資源庫 runoob centos6 svnadmin create opt svn runoob01 runoob centos6 ll opt svn runoob01 total 24 drwxr xr x 2 root root 4096 2016 08...

判斷瀏覽器版本

用jquery判斷瀏覽器型別 判斷瀏覽器型別是ie瀏覽器還是火狐甚至是opera或者蘋果瀏覽器safari,jquery 特效 如下 function else if browser.opera else if browser.mozilla else if browser.safari else ...

判斷瀏覽器版本

描述 判斷瀏覽器資訊 編寫 littleqiang w 日期 2016.1.5 版本 v1.1 判斷當前瀏覽型別 function browsertype else if fieversion 8 else if fieversion 9 else if fieversion 10 else if ...