問題タブ [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.

0 投票する
3 に答える
5797 参照

git - 特定のファイル(* .cpp、*。h、CMakeLists.txtなど)にタブを含むgitへのプッシュを防止します

タブを含むファイルを含むプッシュをリモートリポジトリで拒否したいのですが、ファイルが特定のクラス(ファイル名に基づく)に属している場合に限ります。それは可能ですか?
私はupdate hookgithooksを少し見てきましたが、それは正しいと思います。

つまり、次の場合、プッシュは拒否されます。

  1. リストされたタイプのファイルがあります(*.cpp、、)*.hCMakeLists.txt
  2. 1つ以上のタブ文字が含まれています。
0 投票する
5 に答える
23143 参照

git - 更新後フックを使用して別のリポジトリで「git pull」を実行すると、「fatal: not a git repository: '.'」を取得する

私は git を初めて使用するので、ここで用語を誤用した場合はお詫びします (そして訂正してください)。ただし、最善を尽くします。

ベア git リポジトリ (ハブ) と開発サイトの作業コピー (プライム) を Web サーバーにセットアップしようとしています。この記事を参考にパターン化してみました。ハブ リポジトリがプッシュされるたびに、開発作業コピーが更新されるようにします。これの適切なフックは であるという印象を受けています。これはpost-update次のように作成しました。

アップデート

変更をローカル リポジトリからベア ハブにプッシュすると、更新後のスクリプトから次の出力が得られます。

ただし、ユーザー「サイト」としてサーバーに SSH 接続し、このスクリプトを手動で実行すると、うまく機能します。このフックまたはスクリプトで何が問題になっている可能性がありますか?

0 投票する
6 に答える
10569 参照

git - コミットが存在するかどうかを検証する

指定されたshaのコミットが現在のブランチに存在するかどうかを検証する方法は?

出力を解析する方法はたくさんありますが、ブール値を返す最適な方法が必要です (bash スクリプトで使用するため)。

例えば

0 投票する
2 に答える
5520 参照

git - git サーバーへの単純なマージのプッシュをブロックする

しばらく前に、開発者に をプッシュする前にマージの代わりにリベースを使用するように依頼しました。些細なマージをなくすことで、コミット グラフ (例: gitk、git log) を追跡しやすくなります。

ときどき、うっかりマージしてからプッシュしてしまう人がいます。些細なマージをブロックするサーバー側のフックを作成するための便利な情報やヒントを持っている人はいますか?

「些細なマージ」とは、競合のないマージを意味します。ここに例を示します。これは、git での単純なマージのより良い説明です

Update Wed Nov 10 01:26:41 UTC 2010 : すばらしいコメント、すべて! ありがとうございました。

  • 次のことを考えてみてください。私が皆さんに本当にお願いしているのは、これだけです。
    • git pull --ff-only失敗した場合は、git pull --rebase代わりに行うgit pull
  • git.git にはコミッターが 1 人か 2 人しかいませんよね?理論的には、コミット グラフをたどるのは簡単なはずですが、かなり面倒に見えます。

更新 Thu Nov 11 23:49:35 UTC 2010 :

Update Wed Dec 15 18:34:52 UTC 2010 :

0 投票する
1 に答える
4265 参照

git - コマンドラインからOKですが、フック(git)

誰かがリモート リポジトリにプッシュした後、自分の redmine プロジェクト リポジトリを自動的に更新したいと考えています。現在、redmine の gin は稼働しており、正常に動作しています。しかし、フックを使用した自動更新の後The entry or revision was not found in the repository.、redmine に入ります。

redime で git をセットアップするために、 redmine wikiに従って、レポはそのままで作成されました。git clone --bare

redmine の git リポジトリを更新するには、これを使用しますcd /srv/www/redmine.domain.com/git_repositories/linode.git && git fetch && git reset --soft refs/remotes/origin/master

  • gitユーザーの下でコマンドラインから実行している場合の手動更新は正常に機能します

手動で実行したときのスクリーンショットは

  • フォームフックを実行している場合、同じことが正しく機能しませんpost-receive(上記のエラーを参照)。同じユーザー (git) で実行します。フックの最初の行は#!/bin/sh

構成: git (1.7.0.4) + ubuntu の gitolite (1.5.7)

GIT_DIR システム変数 byt command SET remote: /srv/www/redmine.domain.com/git_repositories/linode.git[K remote: GIT_DIR='.'[K

git pathフックにセットしてみました

しかし、何も役に立ちませんでした。

フックの結果

calling-git-pull-from-a-git-post-update-hookおよびgit-post-receive-hook-with-git-pull-failed-to-find-a-valid-git-directoryからヒントをいくつか試しましたしかし、何も助けませんでした

アップデート

私が試したら

+ redmine リポジトリは変更されておらず、redmine からアクセスできます

Update2

git fetchフックから実行してgit reset --soft refs/remotes/origin/masterからコマンドラインから実行すると、機能しないことがわかりました。Redmineで上記のエラーが発生します。git fetchコマンドラインから行うと、すべて正常に動作します。フックとコマンドラインの「git fetch」コマンドの両方からのコンソール メッセージは、同じように見えます。

0 投票する
1 に答える
1339 参照

git - 複数のサーバーを更新するための git post-receive フック

私はgit post-receive フックを使用して、3 つのサーバー (開発、テスト、および運用) の 3 つのブランチ (マスター、ステージング、および安定) から Web アプリケーションのバージョンをデプロイしています。ブランチとサーバー間のペアリングは、現在スクリプトでハードコーディングされています。しかし、私はこの制限を取り除き、このフックで無制限の数のブランチを管理できるようにしたいと考えています。次の方法で実行できます。

  • すべてのブランチごとの設定オプションを別のファイルに移動します。たとえば、.git/???/<branch_name>
  • メインスクリプトは、そのようなファイルがすべてのブランチで利用可能かどうかを確認し、それをソースにして、そのファイルの構成パラメーターを使用してリモートサーバーにデプロイします。

.gitただし、そのようなファイルをディレクトリのどこに配置できるかは正確にはわかりません。それとも、より良い解決策がありますか?

0 投票する
1 に答える
1274 参照

git - Git グローバル フックのカスタマイズ

ユーザーのアクションをデータベースに記録するプロジェクトとして、いくつかの git フックを作成する予定です。このデータベースは、彼のすべてのアクティビティのクエリに使用できます。私が記録しようとしているアクションは

  • 専念
  • 引く
  • 押す
  • マージ
  • ブランチ

これを、パッケージ マネージャー経由でインストールできるディストリビューションにパッケージ化したいと考えています。Git は、そのようなものを配置することでグローバルフックを許可します$PREFIX/share/templates/hooks

現在、無効になっているフックがいくつかあります(.sample名前に が追加されています)。新しいリポジトリが作成されると、これらのフックは.gitリポジトリのフォルダーにコピーされます

ユーザーがこれらのフックとフックのパッケージをインストールするpost-commitpost-update、すでに有効になっています。この場合、スクリプト ファイルは上書きされます。これはまずいですね

これは、git がアクションごとに 1 つのフック ファイルしか持たないことを意味します。1 回のアクションで 3 つのフックを保持する必要がある場合、それは不可能です。これは、パッケージ マネージャーからの自動インストールによって競合が発生する可能性があることを意味します。

ここで、デフォルトで有効になっているファイルを上書きするフックをパッケージ化したとします。ユーザーがこれらのファイルにさらにアクションを追加したい場合、パッケージをアンインストールすることにした場合、カスタム コマンドも削除されますか?

この点でgitはかなり賢いと思っていましたが、間違っていました:(

post-commitおよびまたは任意のアクションという名前のフォルダーが必要でありpost-update、git はそのフォルダー内のすべてのスクリプトを実行する必要があります。現在の状況に対処する方法を探し続けています。

0 投票する
2 に答える
5315 参照

git - git post-commit フックで、変更されたファイルのリストを取得するにはどうすればよいですか?

Git コミット後のフックでコミットに費やされた時間を把握しようとしています。

コミットに関する API を介して情報を送信するコミット後の git フックがあります。私がやりたいことは、コミットに費やされた時間を把握することです。だいたい。

関連するすべてのファイルの作成時間と変更時間の最小値を見つけ、最大の作成時間と変更時間と比較することで、大まかな値を計算できると思います。

これは、Python スクリプトで簡単に実行できます。「foo.txt」、「bar.txt」、「path/bla.txt」というファイルだと誰かに言われたら、これらのファイルに基づいてスクリプトで簡単に計算を行うことができます。

では、git post-commit フックでは、変更されたファイルのリストを取得するにはどうすればよいでしょうか?

0 投票する
2 に答える
1446 参照

git - 受信後フックを適切に使用するにはどうすればよいですか?

私のディレクトリ構造は次のとおりです。

〜/ parent.git / .git / hooks / post-receive

受信後のフックは次のようになります。

parent.gitにプッシュすると、スクリプトが実行されません。インターネットのあらゆる部分がこれがうまくいくはずだと言っているので、私は問題を理解することができません。

受信後にchmodしたので、それが問題ではないことはわかっています。どんな助けでも大歓迎です。

0 投票する
1 に答える
2675 参照

git - Git タグの作成時に Git フックを自動的に実行する

新しい Git タグが追加されたときに実行できる Git フックはありますか? 新しい Git タグ名を自動的にテキスト ファイルに書き込みたいためです。これを行う方法についての手がかりはありますか?