SVN實現在更新本地版本庫時忽略指定目錄

2021-09-01 18:21:49 字數 2759 閱讀 5792

很多時候,你的svn repo(假定project)很大(這裡指包括所有tags和branches),但是其實你真正需要的卻只有一兩個(比如說trunk,以及和trunk平級的install目錄,同時install目錄和trunk目錄有著這樣活那樣的聯絡),這時你就希望在svn co的時候是co整個project並且忽略你不想要的目錄。當然,你大可不必co整個project,而單獨co你想要的目錄就行了。但是,從scm的角度出發,你不可以強行改變使用者的使用習慣,不排除就有這麼些人喜歡這樣操作,尤其是對於那些喜歡用命令列的人而言。

可能我這麼說,大家沒有什麼概念,我給大家舉個例子,大家應該就知道這是一種什麼情況了:

大家都知道,在乙個專案的scm管理中,往往要求開發者通過打tag的方式來進行版本發布,tag存在於tags目錄,tags目錄往往與trunk/branches目錄平級,這裡還有乙個install目錄,如下:

project/

|-- branches 

|   |

-- branch1 

|   |

-- branch2 

|   `

-- branch3 

|-- install 

|-- tags 

|   |

-- tag1 

|   |

-- tag2 

|   |

-- tag3 

|   |

-- tag4 

|   `

-- tag5 

`-- trunk 

`-- src

tags目錄雖然是乙個標籤副本,但在checkout的過程中,是會針對乙份完整**的,因此很多人都不希望在本地的working copy中保留這個tags目錄。遺憾的是,svn co命令並沒有這樣乙個選項去忽略這個目錄。

事實上,我也遇到了這個問題,在我看了很多help之後,終於找到了辦法。具體如下(分兩種情況討論):

換句話說就是,你已經將svn中完整的repos/directories checkout到本地了(本地已經有乙份你在伺服器端的完整copy了)。這時,你只需要執行以下命令將tags以及branches目錄排除在svn up列表: #

svn 

update 

--set-depth=exclude

tags branches

d    tags

d    branches 

選項後面可以跟多個目錄,這樣,就在你當前的working copy中成功的將tags和branches目錄排除掉了,在你下一次的update中,就不會去理會這兩個目錄了,但同時***了你的project是在version control下的,因此不需要每次都逐個進入目錄進行svn up了。

這種情況如果是在windows下,就顯得非常簡單,你只需要使用烏龜客戶端的「choose item」按鈕。

但是如果是在命令列的情況下,那就要稍微複雜一點了,請按照如下操作:

1. 首先將目錄樹checkout到本地:

2. 將你不想co的目錄排除在外(比如這裡我想排除backup, data, doc, src, tool這五個目錄,只想checkout scripts目錄):

[root]@[fck_with_u]:[~/temp]->>cd 

my_checkout/   

[root]@[fck_with_u]:[~/temp/my_checkout]->>ls   

backup  data  doc  scripts  src  tool   

[root]@[fck_with_u]:[~/temp/my_checkout]->>svn 

up --set-depth=exclude

backup data doc src tool   

d         backup   

d         data   

d         doc   

d         src   

d         tool  

3. 更新你想要的scripts目錄:

[root]@[fck_with_u]:[~/temp/my_checkout]->>svn 

update --set-depth

infinity 

scripts/   

a    scripts/trunk   

a    scripts/trunk/test   

...........  

這樣,目的就達到了!說煩也不煩!

from: 

SVN實現在更新本地版本庫時忽略指定目錄

很多時候,你的svn repo 假定project 很大 這裡指包括所有tags和branches 但是其實你真正需要的卻只有一兩個 比如說trunk,以及和trunk平級的install目錄,同時install目錄和trunk目錄有著這樣活那樣的聯絡 這時你就希望在svn co的時候是co整個pr...

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

接下來就是如何自動化的問題了。我那些版本庫不都是在同一巢狀層上的,有的深有的淺。例如說這樣 repository ironruby trunk nemerle ruby ruby 1 8 trunk 星號標註的是要更新的目標。怎麼辦呢?只好遞迴搜尋了。反正能找到帶有 svn 目錄的最上層目錄就被認為...

本地版本跟svn版本對比 SVN(版本控制)

1.工作原理 客戶端 服務端 2.svn常見操作 1.發布專案 share project 專案組長將本機的專案第一次發布到 倉庫 3.提交 commit 組員將修改後的內同步到伺服器 本地 伺服器 4.更新 update 將伺服器中的最新 同步到本地 伺服器 本地 注意 更新提交操作 要及時 防止...