[英]SVN: Ignore some directories recursively
我不希望任何名為build
或dist
目錄進入我的SVN,無論它在樹中有多深。
這可能嗎? 在git我剛剛放
build
dist
在我的.gitignore
根目錄,它遞歸忽略。 我怎么用svn做這個? 請不要告訴我在每個父母的目錄上做一個propset ...
從subversion 1.8開始,現在有svn:global-ignores
屬性,它的作用類似於svn:ignore
但是遞歸(所以在你的頂級目錄中設置它)
svn propset
將--recursive
作為一個選項,所以你可以做到這一點,有兩個缺點:
svn:ignore
屬性 這是不可能的。 Subversion中只有兩種忽略機制, svn:ignore
(非遞歸)和global-ignores
(不特定於存儲庫)。
這對我有用:
svn propset --recursive svn:ignore *.zip <dir_tree_with_no_zips>
添加到〜/ .subversion / config或/ etc / subversion / config文件:
[miscellany]
global-ignores = build dist
通過從版本控制中刪除目錄,可以忽略構建和分配。 訣竅是使用--keep-local選項將目錄保留在工作副本中。 例如:
svn rm dist --keep-local
svn ci -m'removed build directory from version control'
subversion將不再跟蹤該目錄,但它仍然會在您的工作副本中保存編譯器輸出等。
歡呼,喬
例如文件夾結構:
Project/
Project/dist/
cd Project
svn propset svn:ignore '*' dist/
svn ci -m "content of dist ignored"
在ignore命令之前對dist內容進行svn刪除是很好的,因此對於branches dist將為空。
為我工作,今天進行測試。 這是一個解釋它的頁面
為了忽略所有存儲庫中的所有此類文件,您可以向每用戶配置文件添加global-ignores
。
在類Unix系統上,此區域在用戶的主目錄中顯示為名為.subversion的目錄。 在Win32系統上,Subversion創建一個名為Subversion的文件夾,通常位於用戶配置文件目錄的Application Data區域內
請參閱配置選項
不幸的是,沒有每個存儲庫選項來執行此操作。 它基本上是每個用戶或每個目錄,所以多個svn:ignores
可能是要走的路,盡管它很煩人。
您首先必須移動到工作副本的頂級文件夾並在那里創建一個文件(例如.svnignore),您應該在其中放置您想要忽略的所有模式,例如(對於Android項目):
bin
gen
proguard
.classpath
.project
local.properties
Thumbs.db
*.apk
*.ap_
*.class
*.dex
然后運行以下命令(請記住,您必須位於工作副本的頂級文件夾中):
svn propset svn:ignore -R -F .svnignore .
這僅適用於尚未受版本控制的文件夾和文件。 如果您希望開始被忽略的文件夾(或文件)也被忽略,請通過運行以下命令將其從版本控制中刪除:
svn rm --keep-local <path>
從這篇解釋一切的精彩文章中得到了所有這些: http : //superchlorine.com/2013/08/getting-svn-to-ignore-files-and-directories/
在subversion 1.8 over中,可以為當前存儲庫設置global-ignores。
svn propset svn:global-ignores build .
svn propset svn:global-ignores dist .
您還可以創建名為.svnignore的文件夾,並編寫條件。
build
dist
記住每行一個條件,設置build / *或dist / debug是徒勞的。 然后執行命令:
svn propset svn:global-ignores -F .svnignore .
創建一個文件並將您的忽略添加到其中
則會忽略列表:
file1
directory1
file2
etc...
然后應用以下命令
for n in directory; do svn propset svn:ignore -F ignore-list $n; done
directory是您的目錄的名稱,您可以對目錄/子目錄進行子分類。 或者使用*來記錄您所在的當前目錄。
這假設您使用bash作為shell
svn propset --recursive svn:ignore svn_ignore_rules .
其中svn_ignore_rules是一個包含忽略規則的文件 - 每行一個
當然,每次向repo添加新目錄時都必須重新運行它
svn_ignore_rules也可以被視為已檢入倉庫,可由具有對倉庫的寫入權限的其他用戶重新使用
cd parent_dir #the directory containing folder to be ignored recursively svn propedit svn:ignore . #will open up svn-prop.tmp enlist folder(s) ^X Y commit -m 'ignore targeted direcoty'
一種方法是在提交前或提交后掛鈎添加某種檢查,但如果您不擁有repo服務器則直接注意。
由於似乎沒有解決這個可能常見的問題,我想分享我們的解決方案。 正如其他人已經明確的那樣,您可以使用svn:ignore
屬性,這適用於單個目錄(因此不適用於新目錄),或者您使用適用於單個用戶的global-ignores
(但不屬於到存儲庫)。
為了讓生活更輕松,我創建了一個名為Settings.Svn.reg
的reg文件,並將其添加到存儲庫的根目錄中。 現在每個人都可以雙擊這個regfile一次,並完成設置。
REGEDIT4
[HKEY_CURRENT_USER\Software\Tigris.org\Subversion\Config\miscellany]
"global-ignores"="obj *.suo *.bak *.pdb *.user *.Cache*"
我真的很感激SVN存儲庫中的解決方案,所以如果有人知道,你願意分享嗎?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.