問題タブ [githooks]
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 - コミット メッセージと変更されたファイルを含めるための Git メール フック
Heroku で git のメール フックを設定しました。ただし、何かがプッシュされたというメッセージしか表示されません。コミットメッセージと変更されたファイルの両方が必要です。
git - .git/hooksのフックへの変更の追跡
gitフックの変更を追跡する方法はありますか?他の開発者がフェッチするときではなく、自分のマシンにのみ表示される3つのフックがあります。しようとしてもうまくいきgit add
ません。
git - git hooks - ファイルを再生成して各コミットに追加しますか?
ファイルを自動的に生成し、変更された場合はコミットに追加したいと思います。もしそうなら、どのフックを使用すればよいですか?
コンテキスト: CSS ライブラリをプログラミングしています。いくつかの CSS ファイルがあり、最後に圧縮および最小化されたバージョンを作成したいと考えています。現在、私のワークフローは次のとおりです。
- css ファイル
x.css
を変更し、y.css
git add x.css y.css
minimize.sh
ライブラリ上のすべてのcssファイルを解析し、それらを最小化してmin.css
ファイルを生成する実行git add min.css
git commit -m 'modified x and y doing foo and bar'
ステップ 3 と 4 を git フックを介して自動的に実行したいと考えています。それは可能ですか?
私は以前に git フックを使用したことがありません。man ページを読んだ後、pre-commit
フックを使用する必要があると思います。しかし、私は呼び出すことができgit add min.css
ますか、それともインターネットを壊しますか?
編集:うまくいきました!そして、私はブラックホールなどを作成しませんでした!
これが私の .git/hooks/pre-commit ファイルのコードです:
ドキュメントには、実行可能にする必要がある、または動作しないとは記載されていませんでした。
どのように最小化したかに興味がある場合は、ジューサーを使用しました-最小化コマンドは次のとおりです。
linux - gitのフックへのシンボリックリンク
独自のカスタムマージ後フックを作成しました。メインプロジェクトフォルダーに「hooks」ディレクトリを追加しました(gitは.git / hooksの変更を追跡しないため)。どこかで、フックからシンボリックリンクを作成できることを読みました。 .git / hooksに変更するので、誰かがファイルを変更するたびにファイルを1つのフォルダーから別のフォルダーにコピーする必要がないので、次のことを試しました。
ln -s -f hooks/post-merge .git/hooks/post-merge
しかし、それはうまくいかないようです、なぜ何か考えがありますか?「lnhooks/post-merge .git / hooks / post-merge」は正常に機能しますが、ハードリンクの作成はcopyinと同じだと思います。
git - 無効なサブモジュールのコミットを拒否する git update フックを作成する最良の方法は何ですか?
update
サブモジュールがサブモジュールのアップストリーム リポジトリに存在しないコミット ID に更新されている場合にバウンスする gitのフックを作成しようとしています。別の言い方をすれば、サブモジュール ポインターに変更をプッシュする前に、サブモジュール リポジトリに変更をプッシュするようユーザーに強制したいと考えています。
1 つの警告:
- 親リポジトリと同じサーバーに存在する裸のアップストリームリポジトリを持つサブモジュールのみをテストしたい。そうしないと、git フック内から 'git clone' や 'git fetch' を呼び出すなどのクレイジーなことをしなければならなくなり、楽しくありません。
私はアイデアをいじっていますが、これを行うためのより良い方法があるに違いないと感じています. 更新フックで私が計画していたことは次のとおりです。
- フックに渡された refname をチェックして、 の下で何かを更新しているかどうかを確認し
refs/heads/
ます。そうでない場合は、早めに終了してください。 git rev-list
プッシュされているリビジョンのリストを取得するために使用します。- 各リビジョンについて:
git show <revision_id>
サブモジュールが更新されたかどうかを調べる正規表現を呼び出して使用します (「+Subproject commit [0-9a-f]+」を検索して)。- このコミットがサブモジュールを変更した場合は、
.gitmodules
その特定のコミットで見られるファイルの内容を取得します (git show <revision_id>:.gitmodules
)。 - 3.1 と 3.2 の結果を使用して、サブモジュールの URL とそれらの更新されたコミット ID のリストを取得します。
- 3.3 で作成されたこのリストを、サブモジュールの URL をファイルシステム上のローカルの裸の git リポジトリにマップする外部ファイルと照合して確認してください。
cd
3.4 で見つかったパスに移動し、実行git rev-parse --quiet --verify <updated_submodule_commit_id>
してそのコミットがそのリポジトリに存在するかどうかを確認します。そうでない場合は、ゼロ以外のステータスで終了します。
git rev-parse --quiet --verify <revision_id>:.gitmodules
(注: 3.2 の結果は、リビジョン間で出力が変わらない限り、リビジョン間でキャッシュできる可能性があると思います。ソリューションを単純化するために、この部分は省略しました。)
ええ、これはかなり複雑に思えます。私の生活をずっと楽にしてくれる内部の git コマンドがあるのではないかと思わずにはいられません。それとも、問題について考える別の方法があるのでしょうか?
git - git pre-commitフックでリポジトリにファイルを追加できますか?
gitログのテキストファイルを作業ディレクトリに保持しており、コミット後に更新するスクリプトがあります。これは問題ありませんが、これの効果は、リポジトリ内にあるバージョンが常に1コミット遅れることです。
スクリプトを呼び出してリポジトリにファイルを追加するpre-commitフックを作成して、現在のコミット情報を含むログのテキストバージョンを保存することは可能ですか?
私はgitフックを初めて使用しますが、可能であれば、これがどのように機能するかはまったくわかりません。私は助けに感謝します!
git - gitcommitメッセージをキャプチャしてアクションを実行する方法
私はgitを初めて使用し、origin / masterにプッシュした後にコミットメッセージをキャプチャし、文字列に含まれる内容に基づいて(サーバー上で)bashスクリプトを実行できるようにしたいと考えています。
たとえば、私のgitcommitメッセージに次のように表示されている場合:[email] my commit message
コミットメッセージにが含まれている[email]
場合は、指定されたアクションを実行します。それ以外の場合は、実行しないでください。
これが私がpost-receive
フックで使用することを考えているサンプルのbashスクリプトです:
基本的に私が知る必要があるのは、上記のbashスクリプトで使用するコミットメッセージの変数名が何であるかだけです。また、これがこれを行うための正しいフックであるかどうかはわかりません。
git - 変更されたファイルをgitpost-mergeフックに一覧表示します
マージ後のフックが、早送りであったとしても、マージによって変更されたすべてのファイルのリストを取得する方法はありますか?
git - git で pre receive フックを使用してコマンドの実行を識別する
クライアント側から実行されたコマンドを見つけることができる HOOK を使用する方法はありますか。これには、クライアント側から送信されたすべてのコマンド オプションが含まれている必要があります。
たとえば、クライアントマシンにないすべてのブランチを自動的に削除し、クライアントマシンで利用可能なブランチを複製しようとする --mirror と呼ばれるプッシュのオプションがあることがわかりました (git push --mirror の例)。クライアントマシン。
git push で送信されたコマンドオプションを確認できる pre-receive フックを作成できれば、 --mirror オプションが使用されていないかどうかを確認でき、それ以上の処理なしでコマンドを拒否できます。
どんな助けでも大歓迎です。ありがとうゴピ
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」と呼ばれるリモート ブランチ (チェックアウトされているマスター ブランチではない) にプッシュします。これは、フックを実行するポイントです。