我被那个任务困住了。
我已经编写了 svn post-commit 钩子(Hook),它应该在服务器上更新工作副本,如果有什么改变的话。但似乎它对该文件夹没有权限,但我已将它们设置为允许所有人在那里写入和读取。
下面是测试脚本:
#!/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 对任何人都有读取权限,所以如果您尝试过
- mkdir -p/home/myuser/workingdir/trunk
- chmod -R 777/home/myuser/workingdir
- chown -R myuser:apache/home/myuser/workingdir
然后尝试钩子(Hook),我认为它会起作用
您需要问问自己为什么要 check out /root 中的代码。您应该始终以拥有完成工作所需的最低权限的用户身份工作。除了安装之外,您应该能够编译和编辑您的工作副本,而无需 linux 必须提供的最高级别的权限。
关于linux - svn 提交后 Hook 没有在工作副本目录中创建文件的权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1184571/