1

我被这个任务困住了。

我写了 svn post-commit 钩子,如果有什么改变,它应该更新服务器上的工作副本。但似乎它没有对该文件夹的权限,但我已将它们设置为允许每个人在那里读写。

所以这里是测试脚本:

#!/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

有任何想法吗?

4

3 回答 3

2

我认为您的问题可能是 /root 目录权限会覆盖除 root 以外的任何人,无法访问其下的任何内容。

在我的电脑上 /root 具有权限 rwx-----root:root 我相信这意味着只有以 root 身份运行的可执行文件才能访问下面的任何内容。

但是我的主文件夹 /home/rich 对任何人都有读取权限,所以如果你尝试过

  1. mkdir -p /home/myuser/workingdir/trunk
  2. chmod -R 777 /home/myuser/workingdir
  3. chown -R myuser:apache /home/myuser/workingdir

然后尝试钩子,我认为它会起作用

您需要问自己为什么要在 /root 中签出代码。您应该始终以拥有完成工作所需的最低权限的用户身份工作。除了安装之外,您应该能够编译和编辑您的工作副本,而不需要 linux 必须提供的最高级别的权限。

于 2009-07-26T13:28:51.373 回答
0

尝试创建工作目录,你确定你的 WC 路径需要两个 /root/root 吗,你试图运行什么命令 - 创建一个非常小的、简单的钩子(例如,只是 svn export 或 svn co)并尝试 -也将脚本发布给我们。

从错误来看,您似乎正在尝试更新尚不存在的内容。

于 2009-07-26T13:30:37.580 回答
0

工作目录?触摸对目录有用吗?我的 linux 能力很弱,但我认为它只是用于创建/更新文件的时间戳。如果是这样,那可能是你的问题。

于 2009-07-26T13:40:31.030 回答