2013-04-05 117 views
4

我有一個佈局非常糟糕的svn存儲庫,我沒有權限重新構建。有幾個子項目在存儲庫根目錄的不同深度遍佈回購倉庫。我希望能夠檢查出所有的幹線(但不包括任何分支或標籤文件夾),無論它們的深度如何。我認爲這將是wget解決的一個很好的問題。我最初使用wget的看起來是這樣的:使用wget「簽出」svn存儲庫

wget -r -X 'tags' -I "base/of/repo" "http://www.urlrepo.com/" 

我跑了幾個問題納入運行此命令時:

  1. Wget的還是抓住,即使我想-X標誌應排除的文件夾標籤他們
  2. 下載的文件放入文件夾「底座/ /回購」,這並不可怕,但它會很高興,不保存這條道路

的思考?

+2

什麼?您使用svn命令行客戶端。你爲什麼要用'wget'? 'svn co svn:// repo/trunk /' – thatidiotguy 2013-04-05 13:58:32

+0

因爲在整個回購中有多個標籤/和分支/文件夾,我不想檢查它們。我不相信有一種方法可以通過svn命令行客戶端排除這些文件夾。 – Josh 2013-04-05 14:00:12

+0

不要放棄推動回購重組。從svn結束時,它非常簡單並且無風險,價值將會很容易演示。如果您對獲取源代碼的感官結構沒有吸引力,請翻閱簡歷。體面的項目從上到下佈置得很好 - 在整個項目中都可能反映出這樣一個令人眩目的時間。 – thekbb 2013-04-05 19:58:41

回答

3

您可以使用稀疏結帳以遞歸方式使用bashsvn

喜歡的東西:

svn co --depth immediates svn://repo/trunk 

然後在每個子文件夾,如果是 '標籤':

svn up --set-depth empty tags 

否則:

svn up --set-depth infinity dirName 
1

雖然可能工作,它依賴於沒有100%保證的東西:當你使用ht時,你可以使用瀏覽器tpd作爲你的Subversion版本庫服務器。

在執行svn update時,您可以使用svn co--set-depth參數中的--depth參數來限制結帳。這將允許您只檢出那些您想要的文件夾和目錄,而不會把所有東西都拉下來。這有時被稱爲稀疏結帳。作爲獎勵,這是一個實際結帳。你可以做承諾 - 這是wget不會讓你做的事:

$ # I want to just checkout the immediate files under the URL: 
$ svn co --set-depth=immediates $REPO/trunk/foo 
A foo/first 
A foo/second 
A foo/third 
# I want to checkout everything in first and third, but nothing in second: 
$ cd foo 
$ svn up --set-depth=none second #Removes directory second 
$ svn up --set-depth=infinity first third 

使用這應該與你原來的工作,例如:

$ svn co --depth=none http://www.urlrepo.com/ workdir 
$ cd workdir 
$ svn up --set-depth=none base 
$ cd base 
$ svn up --set-depth=none of 
$ cd of 
$ svn up --set-depth=infinity repo