0

セットアップ:

  • LAN サーバー (Linux) にリモート git リポジトリーがある
  • このリポジトリには、samba および ssh を介してアクセスできます。これらのアクセス方法は両方とも、さまざまな開発者、およびウィンドウで作業するすべての開発者に使用されます。
  • post-receive スクリプト (最後) がコマンド ライン smtp メーラーを呼び出し、メールが送信されます (内部 smtp サーバー経由)。
  • Windows 用 (bmail.exe) と Linux 用 (smtpstoat) の 2 つのコマンド ライン smpt メーラーを使用できます。両方とも

問題:

  • post-receive スクリプトが Linux 実行可能ファイル (smtpstoat) を呼び出している場合、git pushssh 経由でリモート リポジトリにアクセスしている開発者に対して適切に実行されます (電子メールが送信されます)。しかし、samba を介してアクセスしている開発者の他の部分がgit pushコマンドを実行すると、git は不平を言います:remote: ./hooks/smtpstoat: ./hooks/smtpstoat: cannot execute binary file
  • また、受信後スクリプトを変更して Windows 実行可能ファイル (bmail.exe) を呼び出すと、samba アクセス権を持つ開発者はgit push. しかし、ssh ユーザーは次のようになりました。remote: hooks/post-receive: line 708: ./hooks/bmail.exe: cannot execute binary file

リモートリポジトリへのアクセス方法に関係なく、このメール送信を機能させるにはどうすればよいですか?

4

1 に答える 1

0

さて、フックはリポジトリに書き込む git プロセスによって実行されます。SSH 経由でプッシュすると、このプロセスは SSH セッションで実行されます。したがって、開発者が SSH をプッシュすると、実際にログインし、リポジトリを更新してフックを実行します。

誰かが SMB をプッシュすると、レポを更新するのはその人の git プロセスです。プロセスは彼のマシンで実行されており、確かにそのバイナリは実行できません。

いずれにせよ、SMB を介したプッシュは本当に素晴らしいアイデアではありません。あなたの場合の最善の解決策は、Windows 開発者に SSH をプッシュさせることだと思います。彼らにとっては問題ではないはずです。

于 2013-06-13T15:58:02.670 に答える