web-dev-qa-db-ja.com

ハスキーを使用してgitcommitメッセージの形式を確認するにはどうすればよいですか?

リポジトリをクリーンで整頓された状態に保つために、gitcommitメッセージポリシーを適用しようとしています。サーバー側とクライアント側のフックに関する公式ドキュメントを見た後、 ハスキー にぶつかりました。

これまでのところ、最初のもので作業することはできましたが、ハスキーを設定することはできませんでした。まだ学ぶことがたくさんあります。主なアイデアは、クライアント側のフックを手動で設定しなくても、新しいワークステーションで作業できるようにすることです。

誰かが私のコミットメッセージをチェックしたり、例を作ったりするためにハスキーを設定する方法を説明できますか?

これはproject-root/githooksフォルダーにある私のcommit-msgフックです。

#!/usr/bin/env Ruby

message_file = ARGV[0]
message = File.read(message_file)

$regex = /([resolved|fixed]) #([0-9])* ([A-Z])\w+/

if !$regex.match(message)  
  puts "[POLICY] Your message is not formatted correctly!"  
  puts "Message format must be like:"  
  puts "resolved #123 Case title (for features)"  
  puts "fixed #123 Case title    (for bugs)"  
  puts "First letter of 'Case title' must be capitalized!"  
  exit 1  
end  

Package.jsonにスクリプトを追加しようとしました:

"scripts": {  
  ... : ...,  
  "commitmsg": "sh hooks/commit-msg",  
  ... : ...  
}  

フックが機能しません。すべてのメッセージが合格します。 .git/hooksに入れると、正常に動作します。

package.json and commit-msg hook in a test project

これは、package.json、commit-msgフック、およびそれが出力するエラーを含むテストプロジェクトのスクリーンショットです。

.git/hooksフォルダーに配置された同じフックは、問題なく機能します。

6
arjel

問題81 を参照してください

まず、確認してください

npm config get ignore-scripts # should be false

次に、gitリポジトリで:

npm install husky --save-dev

次に、フック(ここではpre-commitとpre-Push)をnpm(package.json)に追加できます。これらのフック定義は、そのpackage.jsonファイル(gitリポジトリソースの一部)のバージョンです。

https://camo.githubusercontent.com/89b1f62d0f2f8b73cad2c70faec7b45d9957c41f/68747470733a2f2f692e696d6775722e636f6d2f794844734d32522e706e67

既存の通常のbashフックを宣言することもできます( issue 92

{
  "scripts": {
    "precommit": "sh scripts/my-specific-hook.sh"
  }
}

次に、 validate-commit-msg を使用してコミットメッセージを検証できます。

"commitmsg": "validate-commit-msg"のnpmスクリプトにpackage.jsonを追加します。

5
VonC

このように:

まず、ハスキー構成に検証スクリプトを追加します。

// package.json
{
 ...
 "husky": {
  "hooks": {
     "pre-commit": "npm test",
     // if you use validate-commit-msg, this can be "validate-commit-msg"
+    "commit-msg": "sh scripts/my-specific-hook.sh",
     ....
  }
 }
}

そして、試してみてください...

すべてが大丈夫のようです。

2
Jerry Zheng