Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/svn/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows Cygwin SVN签出ACL问题_Windows_Svn_Windows 7_Cygwin_Acl - Fatal编程技术网

Windows Cygwin SVN签出ACL问题

Windows Cygwin SVN签出ACL问题,windows,svn,windows-7,cygwin,acl,Windows,Svn,Windows 7,Cygwin,Acl,我的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运行签出将当前用户的所有提取文件设置为只读。例如,在我的具体案例中,

我的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运行签出将当前用户的所有提取文件设置为只读。例如,在我的具体案例中,这就是令人恼火的地方,它没有为批处理设置执行标志。在文件属性中,“安全性”选项卡为每个人勾选“读取”,为当前用户勾选“读取/写入”

使用1.6.17运行签出不会显示此行为。文件以用户友好的权限签出,并且可以执行批处理。在文件属性中,Security选项卡为每个人勾选Read&execute/Read,为当前用户勾选Modify/Read&execute/Read/Write,这是我在签出时希望看到的。签出是脚本化过程的一部分,因此两个测试场景中的环境都是相同的

我在svn罚单中没有发现这一行为,也没有找到运气。大多数结果与服务器端配置有关

我不是ACL/NTFS专家,我确实在上读过Cygwin posix/windows文章,但这并没有澄清区别

我尝试了svn:executable关键字,但正如预期的那样,这在Windows下没有效果。 同样的差异在Windows7或XP下也会发生。 我注意到,基于本地SVN1.7.4构建的OrtoiseSVN1.7.6正确地运行了签出。 我有默认的fresh install/etc/fstab,它是空的,没有/etc/fstab.d配置。 并不是我对1.6.17不满意,而是1.7.4中的一些特性很有趣


如何解决这个奇怪的访问权限问题?

好吧,解决方案是使用mkpasswd和mkgroup重建/etc/passwd和/etc/group

但是,回滚对这些文件的更改不会使配置恢复到触发问题的状态。可能重建它们并再次运行签出会对SVN工具本身产生影响,但我不知道原因和方式


编辑否,问题未解决。

最终,通过查找被视为可执行的文件和chmod文件解决了这一问题:

sh-c查找%MYDIR%-name'*.bat*.sh*.exe*.com*.cmd'-execchmodu+x{}\

由于没有时间进行调查,我当然错过了svn:可执行文件实际上应该由Cygwin构建的svn处理,以添加正确的权限标志。我很快就得检查一下


[更新:Cygwin构建的SVN客户端尊重SVN:executable,因此这是解决问题的方法。]

为什么在这里使用Cygwin?“当然,您需要的是一个本地svn客户机。”DavidHeffernan表示同意。但是,运行签出的脚本实际上使用Cygwin工具作为先决条件。在这个过程中引入外部svn可能弊大于利,并且会使运行它的平台的配置复杂化。该脚本可以在远程buildbot工作人员上运行。实际上,svn:可执行文件完成了它的工作。当Cygwin构建的SVN客户端签出或更新工作区时,该关键字实际上在Windows下起作用。