2010-02-03 95 views
6

二進制文件(Linux下)不具有擴展名,所以我不能使用模式排除。因此,當我使用SVN add添加目錄,我會得到這樣的如何使SVN地址忽略的二進制文件

$ svn add recursion_vector/ 
A   recursion_vector 
A   recursion_vector/rec_vec.cxx 
A   recursion_vector/rec_vec.h 
A (bin) recursion_vector/rec_vec 

這裏rec_vec是我想排除的可執行文件。 SVN顯然認爲它是二進制的。現在我可以告訴Subversion忽略所有二進制文件嗎?

+0

只是一句話:忽略所有二進制文件會忽略其他的二進制文件,太。例如,您可能希望將其包含在存儲庫中的圖標。 – Sam 2010-02-03 10:30:25

+0

是的,但那是我可以忍受的事情,因爲我通常只檢查代碼而不是圖標。 – fuenfundachtzig 2010-02-03 13:36:15

回答

2

這是一個有點冗長,因爲它使用發現:

find [TARGET-DIRECTORY] \(-executable -type f \) -prune -o -print | xargs svn add --depth empty

傳遞目標目錄查找,發現將遞歸的目錄打印出的所有內容,除了可執行文件(\(-executable -type f \) -prune)。如果沒有-type f發現也將刪減目錄,因爲這些通常執行位或「搜索位」集。

add上的--depth empty選項告訴svn不要遞歸文件對象,因爲find處理遞歸。

如果你喜歡的結果,你可以在一個shell函數,它會讓你在傳遞參數的[TARGET-DIRECTORY]把這個。

謝謝

扎卡里

1

你能建立一個模式匹配,以排除那些沒有在他們.文件名?

+0

最好的辦法到目前爲止:)當然,它也將火上的文件叫README和類似的,但我沒有這些,所以也許我應該用這個去。 – fuenfundachtzig 2010-06-02 09:08:35

+0

@fuenfundachtzig你也可以匹配沒有在他們'.',也符合'[A-Z] +'文件名。如果你使用README文件,那麼它們可能都是'[A-Z] +'... – masher 2010-07-08 06:35:42