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以外の人を上書きしてその下にあるものにアクセスできないことかもしれないと思います。

私のPCでは/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パスに2つの/root/ rootが必要で、実行しようとしているコマンドはどれですか。非常に小さく単純なフック(たとえば、svnexportまたはsvnco)を作成して、それを試してください。スクリプトも投稿してください。

エラーから、まだ存在しないものを更新しようとしているようです。

于 2009-07-26T13:30:37.580 に答える
0

ディレクトリで動作します?タッチはディレクトリに対して機能しますか?私のLinuxの能力は弱いですが、それはファイルのタイムスタンプを作成/更新するためだけのものだと思いました。もしそうなら、それはあなたの問題かもしれません。

于 2009-07-26T13:40:31.030 に答える