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