3

誰かがリモート リポジトリにプッシュした後、自分の redmine プロジェクト リポジトリを自動的に更新したいと考えています。現在、redmine の gin は稼働しており、正常に動作しています。しかし、フックを使用した自動更新の後The entry or revision was not found in the repository.、redmine に入ります。

redime で git をセットアップするために、 redmine wikiに従って、レポはそのままで作成されました。git clone --bare

redmine の git リポジトリを更新するには、これを使用しますcd /srv/www/redmine.domain.com/git_repositories/linode.git && git fetch && git reset --soft refs/remotes/origin/master

  • gitユーザーの下でコマンドラインから実行している場合の手動更新は正常に機能します

手動で実行したときのスクリーンショットは

remote: Counting objects: 5, done.
remote: Compressing objects: 100% (3/3), done.
remote: Total 3 (delta 2), reused 0 (delta 0)
Unpacking objects: 100% (3/3), done.
From domain.com:linode
  * [new branch]      master     -> origin/master
  • フォームフックを実行している場合、同じことが正しく機能しませんpost-receive(上記のエラーを参照)。同じユーザー (git) で実行します。フックの最初の行は#!/bin/sh

構成: git (1.7.0.4) + ubuntu の gitolite (1.5.7)

GIT_DIR システム変数 byt command SET remote: /srv/www/redmine.domain.com/git_repositories/linode.git[K remote: GIT_DIR='.'[K

git pathフックにセットしてみました

export GIT_DIR=/srv/www/redmine.domain.com/git_repositories/linode.git
or unset GIT_DIR

しかし、何も役に立ちませんでした。

フックの結果

echo "Post receive-hook => updating Redmine repository"
#env -i git reset --hard
#unset $(git rev-parse --local-env-vars)
#unset GIT_DIR


cd /srv/www/redmine.domain.com/git_repositories/linode.git
pwd
git fetch
git reset --soft refs/remotes/origin/master

Pushing to git@domain.com:linode
remote: Post receive-hook => updating Redmine repository[K
remote: From domain.com:linode[K
remote: /srv/www/redmine.domain.com/git_repositories/linode.git[K
remote:    4755447..13b8e3d  master     -> origin/master[K
To git@domain.com:linode
  4755447..13b8e3d  master -> master

calling-git-pull-from-a-git-post-update-hookおよびgit-post-receive-hook-with-git-pull-failed-to-find-a-valid-git-directoryからヒントをいくつか試しましたしかし、何も助けませんでした

アップデート

私が試したら

echo "Post receive-hook => updating Redmine repository"
export GIT_DIR=

cd /srv/www/domain.com/git_repositories/linode.git

echo "Resetting working tree..."
git reset --hard
echo "Finished resetting working tree."

git fetch
git reset --soft refs/remotes/origin/master

+ redmine リポジトリは変更されておらず、redmine からアクセスできます

Pushing to git@domain.com:linode
remote: Post receive-hook => updating Redmine repository[K
remote: Resetting working tree...[K
remote: fatal: Not a git repository: ''[K
remote: Finished resetting working tree.[K
remote: fatal: Not a git repository: ''[K
remote: fatal: Not a git repository: ''[K
To git@domain.com:linode
 c553a15..854d159  master -> master

Update2

git fetchフックから実行してgit reset --soft refs/remotes/origin/masterからコマンドラインから実行すると、機能しないことがわかりました。Redmineで上記のエラーが発生します。git fetchコマンドラインから行うと、すべて正常に動作します。フックとコマンドラインの「git fetch」コマンドの両方からのコンソール メッセージは、同じように見えます。

4

1 に答える 1

0

私は正確に何を、なぜそれを知っていますが、git fetchフック (私は gitolite を使用) を介して実行した後、いくつかのファイル (おそらく新しいファイル) には、redmine が「気に入らない」パーミッションが設定されています。

chmod -R 770 redmine_repo.git

トリックをした

于 2010-11-18T05:20:43.683 に答える