我的Cygwin SVN客户端在版本1.6.17和1.7.4之间更改了有关Windows ACL的行为。
[更新: SVN 1.7.4和1.6.17实际上具有相同的行为。问题出在其他地方。我没有得到的是它停止工作的地步,可能是Cygwin的更新。的
[更新: Cygwin构建的SVN客户端实际上通过为当前用户设置可执行ACL位来尊重svn:executable
关键字。在SVN书中提及“在Windows下没有效果”必须谨慎使用。的
使用1.7.4运行签出会将所有解压缩的文件设置为只读当前用户。例如,这就是我特定情况下的烦恼,它没有为批次设置执行标志。在文件属性中,“安全”选项卡为Read
勾选Everyone
,为当前用户勾选Read
/ Write
。
使用1.6.17运行签出不会显示此行为。使用用户友好的权限检出文件,并可以执行批处理。在文件属性中,“安全”标签为Read & execute
和Read
/ Everyone
/ Modify
/ {{1}添加了Read & execute
/ Read
。对于当前用户来说,这是我从结账时所期望的。该签出是脚本化过程的一部分,因此两个测试场景中的环境都是相同的。
我在svn门票中没有提到这种行为,也没有找到运气。大多数结果与服务器端配置有关。
我不是ACL / NTFS专家,我确实在http://cygwin.com/cygwin-ug-net/ntsec.html阅读了Cygwin posix / windows文章,但这并没有澄清差异。
Write
,它是空的,没有/etc/fstab
配置。并不是我对1.6.17不满意,但1.7.4中的一些功能很有趣。
如何解决奇怪的访问权限问题?
答案 0 :(得分:0)
嗯,解决方案是使用/etc/passwd
和/etc/group
重建mkpasswd
和mkgroup
。
但是,将更改回滚到这些文件不会在触发问题的状态下还原配置。可能重建它们并再次运行签出对SVN工具本身有影响,但我不知道为什么以及如何。
编辑没有,问题没有解决。
答案 1 :(得分:0)
最终,这是通过find'ing和chmod'文件来解决的:
sh - c "find %MYDIR% -name '*.bat *.sh *.exe *.com *.cmd' -exec chmod u+x {} \;"
由于缺乏调查时间,我当然错过了svn:executable
实际上应该由Cygwin构建的SVN处理以添加正确的权限标志。我很快就要检查一下。
[更新: Cygwin构建的SVN客户端尊重svn:executable
,因此这是解决问题的方法。的 强>