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

2021-08-16 04:56:04 字數 2520 閱讀 8439

很多時候,你的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之後,終於找到了辦法。具體如下(分兩種情況討論):

i. 本地儲存有完整的working copy情況:

換句話說就是,你已經將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了。

ii. 進行一次全新的忽略目錄checkout操作:

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

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

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

-checked out revision 736189.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

-...........

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

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 將伺服器中的最新 同步到本地 伺服器 本地 注意 更新提交操作 要及時 防止...