問題タブ [git-post-receive]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
git - Gitpost-receive-プッシュされたブランチがマスターとマージされているかどうかを確認する方法
私たちのチームでは通常、すべてのタスクを別々のブランチにプッシュし、その後、リリースマネージャーがそれらのブランチを確認して「マスター」ブランチにマージします
チームメンバーが(プッシュする前に)ブランチをマスターブランチとマージするのを忘れることがあります-だから私がやろうとしているのは-ユーザープッシュの後に「マスターとマージしてください」というメッセージを出力する-私はポストで何かをチェックする必要があると思います-リモートの受信フック..いくつかの例はありますか?..または基本的に何をすべきですか?
更新:これの主な理由-潜在的な競合の数を最小限に抑えます(コミッター(リリースマネージャーではない)がそれらを解決するため)
git - Git for Websites / ポストレシーブ / テストサイトと本番サイトの分離
私は Git を使用して Web サイトのソース コードと展開を管理しており、現在、テスト サイトとライブ サイトを同じボックスで実行しています。このリソースhttp://toroid.org/ams/git-website-howtoに従って、ライブ サイトへのプッシュとテスト サイトへのプッシュを区別するために、次の post-receive フック スクリプトを考え出しました。
ただし、これが実際に安全であるかどうかは疑問です:)私は決してGitの専門家ではありませんが、Gitはおそらく現在チェックアウトされているブランチヘッドを追跡していると推測しており、このアプローチはおそらくそれを混乱させる可能性があります果てしなく。
いくつか質問があります:
これは安全ですか?
ベース リポジトリをテスト サイト リポジトリ (対応する作業ディレクトリを含む) にしてから、そのリポジトリに変更を新しいライブ サイト リポジトリ (ライブ サイト ベースに対応する作業ディレクトリを持つ) にプッシュさせる方がよいでしょうか? これにより、プロダクションを別のサーバーに移動して、展開チェーンをそのまま維持することもできます。
足りないものはありますか?Git を使用して Web サイトを管理する場合に、テスト展開と本番展開を区別する別の明確な方法はありますか?
Viの回答に照らして追加のメモとして、ファイルシステムをあまりいじらずに削除を処理する良い方法はありますか?
ありがとう - ウォルト
PS - 複数のリポジトリ用に思いついたスクリプト (よく聞こえない限り使用しています) は次のとおりです。
そして、../Live/$sitename のリポジトリ (これらは、init の後に作業ツリーが追加された「裸の」リポジトリです) には、基本的な post-receive があります。
git - Gitの受信後フックが機能しない
中央リポジトリでgitを使用しています(Gitosisを使用)。変更が中央リポジトリにプッシュされるたびに開発メーリングリストに電子メールを生成し、gitリポジトリのドキュメントフォルダーからドキュメントを生成するための受信後フックを作成しました。
したがって、〜git /にはディレクトリがあり、gitリポジトリのクローンを含む「a」と呼びます。受信後のフックは次のようになります。
電子メールスクリプトは機能していますが、ドキュメントの生成は機能していません。pull_log.logの内容は次のとおりです。
これは、上記のスクリプトの5行目の正しいディレクトリに変更されていないと思います。私が間違っている?どうすればこれを機能させることができますか?
編集:応答で提案されているように、受信後のフックを更新しました。スクリプトは次のようになります。
そして、gitpushから次の出力が得られます。
これ以上の助けはありますか?
ああ、スクリプトを自分で実行すると、機能します(hooks / post-receiveと言って実行します)
serverfaultのおかげで、問題を発見しました。基本的に、環境変数はフックの実行時GIT_DIR
にGIT_WORK_TREE
設定され、これらはgitpullに悪影響を及ぼします。変数を設定解除すると、問題が修正されます。
git - git の post-receive によって返されるすべての行に表示される 'remote:' メッセージを取り除くにはどうすればよいですか?
git で post-receive フックを作成しました。フックはメッセージを画面に出力し、それはプッシュを実行している git クライアントに送り返され、出力されます。
出力のすべての行の前にある「remote:」テキストを削除するにはどうすればよいですか? それはむしろ気を散らすものです。(実際に見たことがあるので、それが可能であることは知っていますが、それがどのように行われるのかわかりません。)
git - Git:html形式のカラー差分を表示するメール受信後フック?
Git の post-receive e-mail フックを使用して差分メールを送信しました (この SO ポストのおかげです) が、送信されるメールは単なるプレーン テキストです。より大きく、よりカラフルで適切にフォーマットされたものが欲しい.
post-receive フックを使用して実行できる、プレーン テキストのメールの代わりに適切にフォーマットされた差分メールを送信するスクリプトまたは何かはありますか?
git - 複数のコマンドがgitpost-receiveで機能していません
私はtracでgitを使用しています。プッシュした後、2つのことを実行したいと思います。
- diffを使用して開発チームにメールを送信する
- コミットメッセージに特別なフレーズがある場合(「#1を参照」など)、コミットメッセージをtracチケットに配置する必要があります。
最初のことはgit-commit-notifierによって解決されます。受信後のフックを作成した後は、完全に機能します。
私の2番目の要件は、http: //trac-hacks.org/wiki/GitPlugin#post-receivehookscriptsで説明されているように解決できます。また、このような受信後のフックでも完全に機能します。
2つは、別々の場合に機能します。しかし、私はそれらを組み合わせる必要があります。だから私はポストレシーブフックを作成しました:
とても面白いですが、これは機能していません。コマンドは個別に実行すると完全に正常に実行されますが、受信後のフックに配置された場合は最初のコマンドのみが機能します。
私がそのようなフックを持っている場合:
次のエラーが表示されます
しかし、この2つのコマンドの順序に変更してもエラーは発生しませんが、最初のコマンドのみが機能します。
助けていただければ幸いです。私は長い間この問題を解決しようとしていますが、私には考えがありません。
git - ウェブサイトのステージングのための Git Post-Receive フック
git pull
現在のバージョンをローカルで動作さgit push
せ、変更をリモートサーバーにプッシュできるように、Web サイトをステージングするために Git をセットアップしようとしています。希望どおりに動作するようにセットアップしましたが、プッシュした後、手動で実行するgit checkout -f
かgit reset --hard HEAD
、リモートサーバーで実行する必要があります。
これらをサーバーの受信後フックとしてシェルスクリプトに入れてみましたが、効果がないようです。プッシュ後に「変更がサーバーにプッシュされました」と表示されるため、スクリプトが実行されていることがわかります。受信後フックは次のとおりです。
git - 受信後フックを適切に使用するにはどうすればよいですか?
私のディレクトリ構造は次のとおりです。
〜/ parent.git / .git / hooks / post-receive
受信後のフックは次のようになります。
parent.gitにプッシュすると、スクリプトが実行されません。インターネットのあらゆる部分がこれがうまくいくはずだと言っているので、私は問題を理解することができません。
受信後にchmodしたので、それが問題ではないことはわかっています。どんな助けでも大歓迎です。
git - gitosis の post-receive フック
私は実行中Gitosis
で、コミットした作業を自分の html ディレクトリにステージングしたいと考えています。
このアプローチを使用して GIT_WORKING_TREE を html ディレクトリに設定しようとしましたが、エラーが発生しましremote: fatal: This operation must be run in a work tree
た。Gitosis にはベアリポジトリが必要なように思われるからだと思います。
どんなアドバイスも大きな助けになります。
git - Git post-receive フックが機能しない
私のセットアップは、cURL が有効で、Git と Hudson がインストールされた Windows XAMPP サーバーです。Hudson は Git を毎分ポーリングして変更を探し、見つかった場合はビルドを作成します。このビルドをテスト サーバーとして使用します。これはうまくいきます。
Hudson の強制ビルド機能を実行する中央リモート リポジトリに post-receive フックを設定したいと考えています。
開発者のローカル ブランチからプッシュされる中央の Git リポジトリのフック ディレクトリに、"post-receive" という post-receive ファイルを作成しました。それぞれが中央リポジトリの独自のブランチにプッシュします。Hudson が Git を毎分ポーリングするのではなく、すべてのプッシュの直後に post-receive ビルドを実行したいと考えています。
リモートサーバーへのシェルを開いてフックフォルダーで「post-receive」を実行すると、実行されます。人々がローカルリポジトリのコピーから中央のリポジトリにプッシュしたときに呼び出されていないだけです。
正しく説明していないかもしれませんが、これが私が Git を理解している方法です。
受信後コードは 2 行です。
繰り返しますが、シェルを開いてこれを実行すると動作しますが、誰かがシェルにプッシュしても何も起こらず、1 分も経たないうちに Hudson が Git が変更されたことに気づき、ビルドします。
必要に応じて明確にさせていただきます。どんな助けでも大歓迎です。
編集:それをいじった後、参照が何かの更新されていないため、受信後が実行されていないように感じますか? gitのドキュメントによると
すべての参照が更新された後、リモート リポジトリで 1 回実行されます。
これは、何も更新しないと実行されないということですか? もしそうなら、とにかく物事が更新されていると確信しているので、それは適用されるべきではありません.
これが私のプロセスです: ローカルで編集を行います。編集をコミットします。HEAD から「mybranch」と呼ばれるリモート ブランチ (チェックアウトされているマスター ブランチではない) にプッシュします。これは、フックを実行するポイントです。