9

私が作業している 1 つのサーバーでは、root としてログインする必要があります (ここでは説明しません)。Web サーバーに使用される git リポジトリがセットアップされていますが、ファイルはルートとして作成されるため、git によって変更されたファイルには間違った権限があります。

私は信じられないほど単純なマージ後のフックを作成しました。これで問題が解決すると思いました。

#!/bin/bash
. git-sh-setup
chown -R www-data:www-data $GIT_DIR

.git/hooks/post-mergeこれを実行権限でドロップしましたが、ファイルが実行されないようです。フックをセットアップしようとしたのはこれが初めてなので、明らかな何かが欠けている可能性があります。

私が気づいたことの 1 つは、ほとんどのフックには.sampleファイルがあり、ポストマージにはファイルがなかったということです。(git バージョン 1.7.4)

前もって感謝します!

4

4 に答える 4

2

すでにご存知かもしれませんが、マージ後のフックで EOL 文字 (CR) を確認する必要があるかもしれません。これは、フックが実行されない理由を説明している可能性があります (この他の質問git-hook-post-merge-error-cannot-run で述べたように) 。

これが解決策でない場合は、問題に対する別のアプローチを検討することもできます。リポジトリ内のファイルがサーバー上で変更されたときに、ディレクトリの所有者の変更を実行するタスクを作成できます。Cron タスク自体は、ファイルシステムの変更に基づいて反応しませんが、サーバーの git リポジトリの変更に反応するために、inotifyなどを使用して試してみることができます。

これらの 2 つの情報が問題を解決するか、少なくとも問題に近づくことを願っています。幸運を。

于 2011-06-27T01:27:27.340 に答える
0

スーパーユーザーグループの所有権にスクリプトを追加してください。

于 2011-06-10T06:27:51.673 に答える
-1

「gitachievements」がどのように機能するかを見てみましょう。gitをスクリプトでラップし、任意のコマンドで必要なことを実行する方が簡単です。フックは、ローカルではなくリモートリポジトリ用に設計されています。マージはローカルで行うものなので、フックメカニズムからの助けはあまりありません。

リンク:

http://benjamin-meyer.blogspot.com/2010/03/git-achievements.html

お役に立てれば

于 2011-06-27T01:57:32.370 に答える
-1

スクリプトがリモートリポジトリを実行するようにプッシュしたい場合は、おそらく受信後のフックを探しています。

于 2011-06-10T06:34:18.540 に答える