問題タブ [pre-commit]
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 - 特定のファイルの precommit フックをスキップする Git 設定
免責事項: はい、Skip Git commit hooksを読み、フラグについては知ってい-n
ますが、これは私が探しているものではありません。
コードの整形を行うために実行されるプレコミットフックがあります(タブをスペースに置き換え、二重の空行を削除するなど)。
ただし、フックを実行したくない場合もあります。たとえば、いくつかの Makefile をチェックインするときに、タブをスペースに単純に置き換えることができないため、これらのファイルをスキップする必要があります。
私が唯一の開発者である場合、フックが実行されないようにするためにフラグを付けても問題ありませんが、フラグ-n
を知らない UI を使用する他の人がいて(咳tortoisegit)、彼らは喜んでいません。にいくつかのフラグを指定します。-n
commit
スキップをフックに直接実装することと明白な-n
方法は別として、プリコミットフックの実行を防ぐ方法は他にありますか?
git - git merge commit 中に競合またはローカルで編集されたファイルを見つける
背景: 私はプレコミット ツールに取り組んでいます。開発者として、別の開発者のブランチを引っ張ってきて、自分が触れていないファイルについて pre-commit フックが大声で文句を言うのは、かなりイライラすることがあります。
私の実装でできるようにしたいのは、マージコミットの場合、競合しているファイルまたはマージ競合中にローカルで手動で編集したファイルに対してのみフックを実行することです。
私がこれまでに試したこと:
git diff --staged
- これは現在のソリューションの動作であり、正常にマージされたファイルを含むすべてのファイルが含まれているため、正しくありません。git diff MERGE_HEAD
- これはかなり近いですが、マージするブランチが master からブランチされた場合、これにはまだマージしていない master からのすべての変更が含まれます。.git/MERGE_MSG
競合するファイルのリストが含まれています。これは良い出発点のように思えますが、ローカルで編集されたファイルは含まれていません。- をコミットした後、
git show --name-only
私が望むものを正確に取得します。しかし、それでは遅すぎます(結局、事前コミットを実装しています:D)
git - git commit -a の使用時に Git が pre-commit フックをスキップしないようにするにはどうすればよいですか?
すべての Puppet 構成用にこのレポがあります。変更された .pp ファイルを検証し、検証が失敗した場合はコミットから抜け出すために、次のように記述しました。pre-commit スクリプトは、によってトリガーされたときに適切に実行されますgit commit
がgit commit -a
、フックを完全にスキップするようです。排他的に使用するgit commit -a
ため、この動作は少し問題になります。
私は何か間違ったことをしていますか?または、コミット前スクリプトで git commit -a の動作を複製するにはどうすればよいですか?
mercurial - Mercurial pre-commit hook: 変更されたファイルとコミットされたファイルを区別する方法
現在の変更セット内のすべてのファイルのリストを取得するための次のコードがあります。
しかし、changeset.files() では、コミット済みとしてマークされたファイルだけでなく、変更されたすべてのファイルが返されることがわかりました。
もちろん、Mercurial はこれら 2 種類のファイルの違いを実際に認識しているのでmercurial/cmdutil.py
、mercurial リポジトリからコードをチェックアウトしたところ、次のコードが見つかりました。
しかし問題は、pre-commit フックでは、すべてのファイルが変更済みとしてマークされていることです。これが意図的なものなのかバグなのかはわかりません。
OK、次に試したのは の代わりにpretxncommit
orcommit
フックを使用することでしprecommit
たが、この場合、ctx にはmodified
, added
andremoved
メソッドがまったくありません。
問題は、変更されたファイルと precommit フックでコミットされるファイルをどのように区別するかということです。
java - Maven の sonarQube を使用して、コミット前に増分分析を収集する方法
質問: Maven の sonarQube を使用して、コミット前に増分分析を収集する方法を教えてください。
背景: SonarQube 4.1.2 を使用して、Maven でビルドされた Java プロジェクトの分析を実行しています。Issues Report プラグイン 1.1 をサーバーにインストールしました。
ビルド コンソールで増分レポートを有効にしました。maven コマンドを使用して、継続的インテグレーション サーバー内から増分データが適切に提供されていることを確認できます。 mvn org.codehaus.mojo:sonar-maven-plugin:2.3.1:sonar -P sonar -Dsonar.java.target=1.7 -Dsonar.java.source=1.7 -Dsonar.profile=MyProfileName -Dsonar.branch=branchID
関連する Maven プロファイルがあります。
継続的インテグレーション CI サーバー ログから、期待どおりにコンソールに増分レポートが表示されます。
コマンドを使用してインクリメンタル分析のためにこれを開発マシンから呼び出すと、次のようになります。mvn org.codehaus.mojo:sonar-maven-plugin:2.3.1:sonar -Dsonar.profile=MyProfileName -Dsonar.branch=branchID -Dsonar.analysis.mode=incremental -Dsonar.host.url=http://mySonarHostName:9000 -Dsonar.issuesReport.html.enable=true -Dsonar.issuesReport.console.enable=true -Dsonar.dynamicAnalysis=reuseReports
変更されたコードに予想されるさらに多くの問題を含む増分レポートを取得します。興味深いことに、ここでの数は、sonarQube サーバーで測定されたプロジェクトの課題の総数よりも大きくなっています。
参照リンク 調査の一環として、次のリンクを参考にしています。
コミット前分析の 3 つのオプション http://www.sonarqube.org/three-options-for-pre-commit-analysis/
SonarQube での分析 vs. プレビュー vs. インクリメンタル プレビュー http://www.sonarqube.org/analysis-vs-preview-vs-incremental-preview-in-sonarqube/
問題レポート プラグインhttp://docs.sonarqube.org/display/SONAR/Issues+Report+Plugin
CodeHaus ソナー Maven プラグイン http://mojo.codehaus.org/sonar-maven-plugin/plugin-info.html
更新 (2014/07/16) このスレッド [ http://sonarqube.15.x6.nabble.com/Incremental-run-mode-td5024228.html]に気づきました。これは、どのファイルを分析するかを決定するために、インクリメンタルがファイルのハッシュを処理していることを説明しています。
私が取り組んでいるプロジェクトは、ソナーが無視するように指示されていないコードを生成しました。私は、これが追加のチャーンを引き起こしていると仮定しています (マシンが生成したコードをスキャンするのは悪い考えであることに加えて)。この理論を調べるため-Dsonar.exclusions=com/generatedpackage/**/*.java
に、コマンドに追加しています。
更新 (2014/07/17)
生成されたソースを sonar.exclusions で指定することにより、「増分」分析で検出される違反の数が削減されました。これらがすべて考慮されると、問題/違反の数は、プロセスをローカルで検証するために導入した問題の数と一致しました。これのメンテナンスを簡素化するために、次のパターンを使用して、生成されたすべてのファイルのメトリックを単純に抑制します。file:**/generated*/**
統一性のために、分析中のプロジェクトのルート POM 内でこれを指定することができました。
上で引用したように、ソナー Qube フォーラム スレッドは、インクリメンタル分析はハッシュがソナー Qube サーバー上のハッシュされたファイルと一致しないファイルのみを分析すると説明しました。
git - checkstyle のコミット前の git フックを実行しようとすると、複数の「ファイルが見つかりません!」が返されます。エラー
コマンド ラインで ant を使用して、checkstyle を正常に実行できます。残念ながら、このpre-commit checkstyle git hook がインストールされている状態で、git シェルまたは cmd プロンプト経由でコミットしようとすると、次の (サンプルの) エラーが発生します。
ここで、「mydirectory」は Web アプリのルートへのパスです。正直なところ、何が起こっているのかわかりません。私はこれに何時間も取り組んでいるので、十分な情報がない場合はお詫び申し上げます。ご不明な点がございましたら、お気軽にお問い合わせください。目が覚めたらご連絡いたします。前もって感謝します。
git - Git で precommit フックを実行します。スクリプトが実行されていることを確認する方法はありますか?
私は Git を実行したかったのですが、ブログで提案されているように、以前$git init
はリポジトリを初期化していました。その後.git
、hooks ディレクトリにフックが存在する場所にフォルダーが作成されました。次に、スクリプトで示唆されてpre-commit.sample as pre-commit
いるように、名前を変更しても機能pre-commit.sh
しなかったため、バックグラウンドでまだ実行されていないように見えるか、少なくとも実行していることを知らなかったため、名前を変更しました。
そのため、バックグラウンドで実行されているかどうかの手がかりを得るために、echo ステートメントを使用しましたが、表示されませんでした。道に迷ったので、次に PowerShell でスクリプトを手動で実行しようとし.\pre-commit.sh
ましたが、echo ステートメントはコンソールに出力されませんでした。一つには、ユーザーからの入力フィードでスクリプトの進行を止めて、echo ステートメントが成功しても、コンソールが表示されるかどうかはわかりません。
教えてください - pre-commit フックをセットアップする方法は? 手順を読み間違えた?ここで何か不足していますか?教えてください。
私が使用しているフックはデフォルトの pre-commit フックの実装です。便宜上、ここに記載します。
svn - いくつかの特定の値に対して Windows で Pre-commit フックを構成する方法 (BugID)
pre-commit フックを使用して TeamID をログ メッセージに統合したいと考えています。現在、バグ追跡ツールは使用していません。私はいくつかのチーム ID を持っており、ユーザーにチーム ID を入力してもらいます (このチーム ID は有効である必要があります)。Bugtraq で svn のプロパティを使用しようとしましたが、これらの TeamID を検証する方法がわかりません。これらの IDS を Excel シートのエントリと比較できますか。
バグ追跡システム全体を SVN に統合したくないことに注意してください。ほんの一握りの TeamID とログ メッセージに入力された ID を比較したいだけです。