2011-04-22 126 views
84

我有幾個文件在svn添加之前已經可執行。他們有svn:可執行屬性集。現在,其他幾個文件進行了檢查中沒有可執行位沒有它,我想設置svn:executable屬性:正確的方法來添加svn:可執行文件

$ svn propset svn:executable on *.cgi 

然後我檢查狀態,甚至用了svn文件:可執行文件已被修改:

$ svn diff 
Property changes on: a.cgi 
___________________________________________________________________ 
Modified: svn:executable 
    - 
    + * 


Property changes on: b.cgi 
___________________________________________________________________ 
Added: svn:executable 
    + * 

a.cgi不應該被修改。我想添加svn:可執行位以與其他文件相同的方式進行設置,但無法找出執行該操作的命令。

+2

執行此我打開這個網頁,我不想鍵入每次'的svn propset命令的svn:可執行文件上(...)'。這個問題的答案應該是'for * .cgi中的f;如果[! -x $ f];那麼svn ps(...);網絡連接;完成',並提交修改後的文件。然後繼續。 – 2013-11-23 05:32:03

+0

@TomaszGandor認爲你錯過了'svn:executable'在那個第二段中的某處。也許'svn ps svn:可執行文件$ f;'? – 2017-06-22 23:28:44

+0

https://en.wikipedia.org/wiki/Ellipsis_(linguistics) - 是的,它只是一個練習給讀者。 – 2017-06-23 00:27:45

回答

128

你是對的使用svn屬性編輯命令。該屬性是svn:可執行文件。

要SVN添加 「可執行位」

svn propset svn:executable on <list of files> 

要刪除 「可執行位」 在SVN

svn propdel svn:executable <list of files> 

The SVN documentation for this is located here.

只要不修改可執行文件,你不會修改可執行文件(校驗和會驗證),但是您正在修改SVN存儲庫。請記住,SVN修訂文件系統,而不僅僅是文件;所以,修改權限位將增加SVN修訂版本號,即使它只是對文件屬性的修改(而不是修改文件本身)。

+0

當我以上面所示的方式運行svn propset時,它將它們設置爲「*」,但自然的方式將svn:executable設置爲無效,但仍然設置爲可執行。我希望這個屬性和可執行位在添加到subversion之前設置的屬性相同。 – Jake 2011-04-22 16:11:54

+2

對不起所有的編輯,但如果我記得正確,將它設置爲任何將打開可執行位,刪除它(可能設置爲空或空白)將關閉它。要獲得SVN客戶端使用的值,可以使用svn propget。 – 2011-04-22 16:15:09

-3

下面是我如何在我的項目中設置了執行位的所有* .py文件上設置可執行屬性。 我從頂級目錄

for f in `find ./ -name '*.py'`; do echo $f; if [ -x $f ]; then echo $f 'is executable setting svn:executable'; svn propset svn:executable on $f; else echo $f 'is not executable'; fi; done; 
相關問題