Linux svn post-commit钩子不';我没有在工作副本目录中创建文件的权限
我被那项任务困住了 我已经编写了svn post commit hook,它应该会在服务器上更新工作副本,若某些内容发生了更改。但似乎它对那个文件夹并没有权限,但我已经将它们设置为允许每个人在那个里写和读 下面是测试脚本:Linux svn post-commit钩子不';我没有在工作副本目录中创建文件的权限,linux,svn,unix,permissions,post-commit,Linux,Svn,Unix,Permissions,Post Commit,我被那项任务困住了 我已经编写了svn post commit hook,它应该会在服务器上更新工作副本,若某些内容发生了更改。但似乎它对那个文件夹并没有权限,但我已经将它们设置为允许每个人在那个里写和读 下面是测试脚本: #!/bin/sh REPOS="$1" REV="$2" DIR="/root/root/trunk" touch $DIR/worked 我得到了输出: Committed revision 51. Warning: 'post-commit' hook fail
#!/bin/sh
REPOS="$1"
REV="$2"
DIR="/root/root/trunk"
touch $DIR/worked
我得到了输出:
Committed revision 51.
Warning: 'post-commit' hook failed with error output:
touch: cannot touch `/root/root/trunk/worked': Permission denied
以及目标文件夹的权限:
[root@ovz6022 trunk]# ls -la
total 24
drwxrwxrwx 5 apache apache 4096 Jul 26 07:08 .
drwxrwxrwx 6 apache apache 4096 Jul 24 02:14 ..
-rwxrwxrwx 1 apache apache 1367 Jul 24 02:45 pom.xml
drwxrwxrwx 4 apache apache 4096 Jul 24 02:23 src
drwxrwxrwx 6 apache apache 4096 Jul 24 13:31 .svn
drwxrwxrwx 7 apache apache 4096 Jul 24 11:18 target
有什么想法吗 我认为您的问题可能是/root目录权限会覆盖除root之外的任何人访问其下的任何内容 在我的电脑上/root有权限rwx-----root:root,我相信这意味着只有以root身份运行的可执行文件才能访问下面的任何内容 但是,我的主文件夹/home/rich对任何人都具有读取权限,因此如果您尝试
您需要问问自己为什么要在/root中签出代码。您应该始终以拥有完成工作所需的最低权限的用户身份工作。除了安装之外,您应该能够编译和编辑您的工作副本,而不需要linux提供的最高级别的权限 尝试创建工作目录,你确定你的WC路径需要两个/root/root,你想运行什么命令-创建一个非常小的简单钩子(例如svn export或svn co)并尝试-也向我们发布脚本
从错误中可以看出,您正在尝试更新尚不存在的内容。是否有目录?触摸是否适用于目录?我的linux功能很弱,但我认为它只是用于在文件上创建/更新时间戳。如果是这样,那可能是你的问题。因为它是在那里创建的。有道理吗?谢谢,行得通。仍然不明白设置了所有权限的root子目录失败的原因如果apache甚至没有对/root的读取权限,那么它怎么知道存在“/root/root/trunk/worked”,因为找到该目录需要读取它。“拒绝访问”和“未找到”是不同的错误。如果设置了x位,则可以“读取”目录。脚本仅执行:touch$DIR/worked。我从它将在/usr/local/svn/hooks中创建工作文件的相同脚本中调用“touch./worked”。所以这个命令没问题。谢谢你修复我的帖子:)这是一个非常敏感的文件。若它不存在,系统将创建它,否则将修改时间戳,这是我测试在文件夹中写入权限的一种方式