2

私はルビーで独自の git post-receive フックを書いています。これは次のようなものです。

if !File.exists?(rep_dir+repo)
     puts "Cloning repository #{repo} into #{rep_dir}."
     `cd #{rep_dir}; sudo git clone file:////home/git/repositories/#{repo}.git`
exit
end

このフックは gitolite 共通フックでセットアップされるため、新しいリポジトリの構成をプッシュすると、すぐに新しい場所にクローンされます。

また、gitolite config の各プロジェクトをループして、各プロジェクトのリポジトリが存在するかどうかを確認しますが、問題があるのはそこではありません。

私の問題は、このスクリプトを実行するたびに次のようになることです。

remote: cd: 1: can't cd to /home/<somedir>/repositories/
remote: Cloning repository gitolite-admin into /home/<somedir>/repositories/.

フックの実行後、リポジトリはターゲット ディレクトリに複製されませんでした。GIT_DIR 環境変数の設定解除について読みましたが、成功しませんでした。

4

1 に答える 1

3

クローンを作成しているときに、どこでも cd する必要はありません。
clone コマンドのパラメーターとして宛先パスを追加するだけです。

git clone file:///xxx /path/where/to/clone

(宛先パスが存在しないことを確認してください。存在しない場合、git はそこでクローンを作成することを拒否します)

于 2013-02-06T04:24:42.537 に答える