1

ローカル マシンからプッシュされたときに別のリポジトリに自動的にプッシュする中央リポジトリをセットアップしようとしています。私は数日間グーグルをしており、見つけたすべてのコマンドの組み合わせを試してみましたが、うまくいきませんでした。

セットアップ: 最初に中央リポジトリをベアとして作成し、それを非ベアとして 2 番目のマシンに複製しました。「www」と呼ばれるリモートとして 2 台目のマシンを 1 台目のマシンに追加しました。1台目から「git push www master」を手動で実行し、2台目をSSH経由でアップデートできることを確認しました。次に、リポジトリを HTTP 経由でローカルの開発マシンに複製しました。ローカルからセントラルに問題なくプッシュできます。

現在の形式の更新後のフック:

#!/bin/bash

cd /var/git_repos/site.git

unset $(git rev-parse --local-env-vars)

branch=$(git rev-parse --abbrev-ref HEAD)

if [ "$branch" == "master" ];
then
  echo "Pushing $branch to www..."
  env -i git push www master
fi

exec git update-server-info

私はさまざまな SO とブログの投稿からこれをまとめました。最初のマシンの CLI (「cd /var/git_repos/site.git/hooks; ./post-update」) から手動で実行すると正常に動作しますが、実行すると「www は Git リポジトリではありません」というエラー メッセージが表示されます。フックとして。

出力:

$ git push
Password:
Counting objects: 5, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 264 bytes, done.
Total 3 (delta 0), reused 0 (delta 0)
remote: Pushing master to www...
remote: fatal: 'www' does not appear to be a git repository
remote: fatal: The remote end hung up unexpectedly
To https://xxx@git.xxx.xxx/site.git
   e3d3a1d..103c819  master -> master

誰が私が間違っているのか教えてもらえますか?

編集:私の最初の問題は、site.git のアクセス許可が完全に正しく設定されていないことであることがわかりました。その問題を解決したので、新しい問題が発生しました。

新しい出力:

$ git push
Password:
Counting objects: 5, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 332 bytes, done.
Total 3 (delta 1), reused 0 (delta 0)
remote: I am apache <---- Output of "whoami" for debugging
remote: Pushing master to www...
remote: ssh: connect to host 192.168.1.79 port 22: Permission denied
remote: fatal: The remote end hung up unexpectedly
To https://nnn@git.nnn.nnn/site.git
   29d504c..f14f201  master -> master

/etc/sudoers ファイルに以下を追加しようとしましたが、うまくいきませんでした:

apache ALL=NOPASSWD: /usr/bin/ssh
4

3 に答える 3

1

これは、不明なリモートにプッシュしようとしたときに発生するエラーです。試す:

git push thisisprobablynotaremote master

小切手

git remote -v

www が適切に定義されていることを確認してください。

git config --list

www もあるはずです。

フック自体からのすべてのコマンドの出力を出力し、出力を比較します。

于 2011-04-26T20:15:19.100 に答える
0

しないでください

unset $(git rev-parse --local-env-vars)

人々が別のリポジトリから git pull を実行しようとしていたフックを見たと思います。現在のリポジトリに関連するすべてのコマンドを実行しているだけです。だからあなたはそれをする必要はありません。

同様に、しないでください:

env -i git push www master

を削除しますenv -i

于 2011-04-26T21:07:22.477 に答える
0

wwwプッシュ先のリモート リポジトリの完全な URL に変更することをお勧めします。さらに、に変更masterするmaster:masterと役立つ場合があります。

于 2011-04-26T20:15:51.633 に答える