2017-01-22 39 views
1

Я пытаюсь применить политику сообщения git commit, чтобы мои репозитории были чистыми и аккуратными. Я видел официальные документы об ошибках на стороне сервера и клиента, а затем я столкнулся с husky.Как использовать хаски для проверки формата сообщения git commit?

До сих пор я мог работать с первым, но не мог настроить хаски, у меня еще есть чему поучиться. Основная идея заключается в том, чтобы иметь возможность работать на новой рабочей станции без необходимости вручную настраивать любые клики на стороне клиента.

Может кто-нибудь объяснить, как я могу настроить хрипло, чтобы проверить мои сообщения о совершении или даже привести пример?

Это мой совершить-сообщ крюк в project-root/githooks папке:

#!/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, коммит-сообщ крюк и ошибка он выдает.

Тот же крюк, вложенный .git/hooks папка, работает просто отлично.

ответ

1

См issue 81

Во-первых, проверьте

npm config get ignore-scripts # should be false 

Тогда в мерзавца репо:

npm install husky --save-dev 

Вы можете добавить крючки (здесь перед фиксацией и предварительно нажать) для npm (package.json), идея определения этих крюков - это версии в этом файле package.json (часть ваших источников репозитория git)

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

Вы также можете объявить существующие регулярные крюки Баш (issue 92)

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

Вы можете использовать validate-commit-msg для подтверждения своих намерений.

добавить "commitmsg": "validate-commit-msg" в свои npm-скрипты в package.json.

+0

Прежде всего, спасибо вам за помощь! Как упоминалось в редактировании, я попытался настроить файл package.json, но он вообще не работает. Я тоже пробовал проверку validate-commit-msg, и это тоже не работает ... До сих пор я мог запускать скрипт («postinstall»: «sh hooks/setup_hooks.sh»), чтобы переместить мои крючки в .git/папка с крючками. – remmargorp

+0

@remmargorp, на какой ОС вы работаете? С какой версией npm? – VonC

+0

Я на Ubuntu 16.04, а npm - версия 4.0.5 – remmargorp

 Смежные вопросы

  • Нет связанных вопросов^_^