3

gitolite を無視して使用するとgit-daemon、次のように実行できますがgit clone git://xxx/xxx、プロジェクトをプッシュすると、次のエラーが表示されます。

Total 2 (delta 0), reused 0 (delta 0)
remote: Empty compile time value given to use lib at hooks/update line 6
remote: Use of uninitialized value in require at hooks/update line 7.
remote: Can't locate Gitolite/Hooks/Update.pm in @INC (@INC contains:  /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .) at hooks/update line 7.
remote: BEGIN failed--compilation aborted at hooks/update line 7.
remote: error: hook declined to update refs/heads/master
To git://www.54cxy.com/qianfuzi
 ! [remote rejected] master -> master (hook declined)

しかし、うまくsshいくように使うgit@xxx:xxx.gitと、クローンだけでなくプッシュもできますがgit://、クローンとプッシュに使いたいので、どうすればうまくいくでしょうか?

4

1 に答える 1

1

秘訣は、gitolite によって管理される git リポジトリのクローンを作成する場合、そのリモート リポジトリには、 gitolite によって呼び出されることになっているpost-updateフック ( Gitolite によって予約されている) が含まれることです。

通常、リポジトリがユーザー「デーモン」によって読み取り可能であると宣言されていれば、ネイティブ git プロトコルでプッシュできるはずです (構文を参照し、GitoliteV3 の「とのインターフェース」を参照してください)。git-daemon

repo @all
    R   =   gitweb daemon

特別なユーザーが読み取り可能なレポは、 によってdaemon読み取り可能であると見なされますgit-daemon
これらのリポジトリごとに、 という空のファイルgit-daemon-export-okがリポジトリ (つまり、repo.git内のディレクトリ$HOME/repositories) に作成されます。

したがって、gitolite.conf ファイルに user が記載されているdaemonかどうか、およびファイル$HOME/repositories/git-daemon-export-okが存在するかどうかを確認してください。

于 2012-09-19T12:41:32.180 に答える