問題タブ [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に無視させる方法
Railsプロジェクトで自動化を成功させるには、すべてのテストに合格する必要があります。問題は、git add --patch
コミットする前にかなり多く使用し、段階的な変更でのみテストを実行したいということです。
解決策1:コミット前に
agit stash --keep-index
を実行するか、コミット後に単純git stash
に実行し、その後にフック(rake tests
)とを実行しgit stash pop
ます。これは、それが終了するのを待つ必要があり、実行中はステージングされていない変更にアクセスできないことを意味します。
解決策2:新しいローカルリポジトリ(テスター)をセットアップし、最初のリポジトリ(開発)からコミット後のフックをセットアップして、テスターリポジトリにプッシュします。テスターリポジトリには、テストを実行し、プッシュする前にコミットの修正に合格したか失敗したかを(電子メールまたはwhateva経由で)通知するための受信後フックが必要です。
無視されたファイルのためにリポジトリに違いがあるとしても、2番目の解決策ははるかに良く聞こえます(私は推測します)。
提案する別の解決策はありますか?
git - GIT プッシュでメールを受信する
私は、誰かがコミットするたびにコラボレーショングループが電子メールを受信するという転覆に慣れています。GitHub に同様の機能があり、ユーザーが変更をプッシュするたびに、リポジトリで作業している人々が電子メールを受信しますか?
githooks - perl で書かれた post-receive フックはどのようにブランチ名を取得できますか?
perl で書かれた post-receive フックがあります。どのブランチにプッシュされているかを把握できる必要があります。これどうやってするの?@ARGV と $ARGV[2] を調べてみましたが、成功しませんでした。
git - Git コミット フックをスキップする
Pythonコードでprintステートメントを探すgitフックを見ています。print ステートメントが見つかった場合は、git commit が妨げられます。
このフックをオーバーライドしたいのですが、そうするコマンドがあると言われました。私はそれを見つけることができませんでした。何かご意見は?
git - ギトライトにフックを取り付ける方法
フック、同様の 質問、および多くのコードに関するすべてのドキュメントを読みましたが、手順のエラーがどこにあるかを追跡できません。私のgitoliteインストール(CentOSのrpmパッケージで作成)に単純なフックをインストールする必要があるので、これが私がしたことです:
gitoliteをインストールするには(少し前):
- rpmパッケージをインストールしました
# su - gitolite
$ gl-setup /tmp/fabio.pub
(gitoliteユーザーとして)
次にフックを取り付けます。
post-update
フックコードを含むサンプルファイルを作成し~gitolite/.gitolite/hooks/common
ましchmod +x
た- ここに記載
gl-setup /tmp/fabio.pub
されているように再度実行します
しかし、何も起こりませんでした。最新のコマンドの終了ステータスは0ですが、フックファイルはどのリポジトリでもシンボリックリンクされていません。それで、私の手順の何が問題になっていますか?私は何かを逃したことがありますか?
ボーナスの質問:
- ドキュメントを理解していた場合、私の手順は正しいですか?つまり、フックを更新するたびにgl-setupを実行する必要がありますか?
- このようにして、このgitoliteインストールの下のすべてのリポジトリに共有フックをインストールします。フックをどこかにシンボリックリンクとして手動でインストールすることはできますか、それとも特定のリポジトリに対してのみ実行可能なスクリプトとしてインストールすることはできますか?指定されたリポジトリのフックフォルダで手動で行う必要がありますか?フックの競合に注意する必要がありますか(つまり、単一のリポジトリのカスタムフックは、同じ名前の他の共有フックをブロックしますか?)
これが重要かどうかわからない、私のギトライトバージョンは1.5.9.1
です。
git - メンテナーがカスタムバージョンを使用できるようにしながら、デフォルトの構成ファイルを Git リポジトリに保持する方法は?
パブリック Github リポジトリに .xml 構成ファイルがあり、新しいユーザーが使用できるように、その .xml ファイルの基本的な既定のバージョンを含めたいと考えています。
ただし、パッケージのメンテナーは、個人用の .xml ファイルをコミットせずに編集できるようにしたいと考えています。
メンテナーがカスタム バージョンを使用できるようにしながら、既定の構成ファイルをパブリック Git リポジトリに保持する最もクリーンな方法は何ですか?
git - Git マージ後のフック、マージされたブランチの名前を取得する方法
特定のブランチからマージする場合にのみ実行されるマージ後のフック スクリプトを作成しようとしています。特定のコミットのブランチ変更の名前を特定するにはどうすればよいですか?
例えば
git - Gitフック:エコーコマンドを有効にする
gitフックでエコーを有効にする方法はありますか
別のマシンで必要なgitプッシュ出力:
これは単なる例であり、実際のコマンドチェーンはより複雑になる可能性があります
どこかで失敗します
どういうわけかstdoutをstderrにリダイレクトする必要がありますか?
アップデート
現在、私は通常のgit push
出力を持っていますが、その後========post-update hook=========
...そして何もありません
おー!gitバージョンは1.5.6.5です
mysql - Gitプッシュアンドプルでデータベースをエクスポートおよびインポートする
サーバーを使用せずに、2台のローカルコンピューター間でデータベースを同期させる必要があります。いくつかの調査の後、Gitフックを使用してタスクを実行できると思いました。
私が基本的に望んでいるのは、リモートリポジトリとの間mysqldump
で実行git push
(およびSQLファイルをコミットに追加)することmysqlimport
です。git pull
このための特定のフックは見つかりませんでした。フックを試しましたpre-commit
が、現在のコミットにSQLファイルが追加されませんでした。それから私は試しprepare-commit
ましたが、運がありませんでした。
誰かがこれに対する答えを持っていますか?