添加 svn:executable 的正确方法
Posted
技术标签:
【中文标题】添加 svn:executable 的正确方法【英文标题】:Proper way to add svn:executable 【发布时间】:2011-08-11 01:36:42 【问题描述】:在 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 位,以与其他文件相同的方式设置,但无法确定执行此操作的命令。
【问题讨论】:
我每次不想输入svn propset svn:executable on (...)
时都会打开这个页面。而问题的答案应该是for f in *.cgi; do if [ ! -x $f ]; then svn ps (...); fi; done
,只需提交修改后的文件即可。然后继续前进。
@TomaszGandor 认为您在第二个 sn-p 的某个地方缺少svn:executable
。也许svn ps svn:executable on $f;
?
en.wikipedia.org/wiki/Ellipsis_(linguistics) - 是的,它留给读者作为练习。
【参考方案1】:
你使用svn属性编辑命令是对的。该属性是 svn:executable。
在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 修订号,即使它只是对文件属性的修改(而不是对文件本身的修改)。
【讨论】:
当我以上面显示的方式运行 svn propset 时,它会将它们设置为“*”,但自然方式将 svn:executable 设置为空,但仍然设置。我希望此属性与在将它们添加到 subversion 之前设置了可执行位的属性相同。 抱歉所有的编辑,但如果我没记错的话,将其设置为任何内容都会打开可执行位,删除它(并可能将其设置为 null 或空格)会将其关闭。要获取 SVN 客户端使用的值,可以使用 svn propget。【参考方案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 之类的。) 我相信如果文件在最初导入时设置了可执行位,那么将设置 svn 可执行属性。 相当肯定 find 有一个 -perm 开关,它可能比 if/then 稍微优雅一些,但当然更值得记住以上是关于添加 svn:executable 的正确方法的主要内容,如果未能解决你的问题,请参考以下文章
EVP_DecryptFinal_ex调用返回失败,解密数据错误的解决方法