添加svn:executable的正确方法


107

我有一些文件可以在添加svn之前执行。它们具有svn:executable属性集。现在,在没有可执行位的情况下签入了一些其他文件,没有这些文件,我想设置svn:executable属性:

$ svn propset svn:executable on *.cgi

然后,我检查状态,甚至带有svn:executable的文件都已被修改:

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


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

a.cgi不应修改。我想添加svn:executable位,使其以与其他文件相同的方式设置,但是无法找出执行此操作的命令。


2
每当我不想输入时,我都会打开此页面svn propset svn:executable on (...)。问题的答案应该是for f in *.cgi; do if [ ! -x $f ]; then svn ps (...); fi; done,只需提交修改后的文件。然后继续前进。
Tomasz Gandor 2013年

@TomaszGandor认为您svn:executable在第二个片段中缺少了某个地方。也许svn ps svn:executable on $f;吧?
基思M

Answers:


166

您正确使用svn属性编辑命令。该属性是svn:executable。

在svn中添加“可执行位”

svn propset svn:executable on <list of files>

删除svn中的“可执行位”

svn propdel svn:executable <list of files>

SVN文档位于此处。

至于不修改可执行文件,您不是在修改可执行文件(校验和将验证该文件),而是在修改SVN存储库。请记住,SVN修订文件系统,而不仅仅是文件。因此,对权限位的修改将增加SVN修订版号,即使这仅仅是对文件属性的修改(而不是对文件本身的修改)。


当我以上面显示的方式运行svn propset时,它会将它们设置为“ *”,但是自然的方式将svn:executable设置为空,但仍然设置。我希望此属性与在将其添加到Subversion之前已设置可执行位的属性相同。
杰克

2
对不起所有编辑,但是如果我没记错的话,将其设置为任何值将打开可执行位,将其删除(并可能将其设置为null或空格)将其关闭。为了获得SVN客户端使用的价值,可以使用svn属性。
Edwin Buck

-2

这是我在项目中所有具有执行位的* .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;

不使用propset如何设置可执行属性?我没有使用它,据我所知,没有人也这样做。它出现在同一目录中的三个文件上,没有其他地方,这些文件似乎没有什么特别的。(它们是Java文件,而不是sh或exe或bat或jar或其他文件。)
Jerry Miller

我相信,如果文件在最初导入时已将可执行位设置为1,则将设置svn可执行文件属性。
艾萨克·杰索普

可以肯定,find具有一个-perm开关,它可能比if / then稍微优雅一些​​,但当然要记住的多
永不再睡觉
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.