Регистрация  |  Вход

Git pre-commit hooks

Привет всем.

Возник такой вопрос. У нас есть Bitbucket репозиторий, который связан с Jira.
Для правильной работы этой интеграции надо в commit message добавлять код issue с которым он связан.

Так вот проблема в том как прикрутить какой-нибудь commit message checker (validator) чтобы не разрешать коммит без ссылки на jira issue. Мне кажется что задача не редкая, но почему-то с ходу не гуглится.

Венрнее гуглятся плагины типа вот такого https://marketplace.atlassian.com/plugins/com.isroot.stash.plugin.yacc/server/overview
Но не уверен что это подходит - у нас репозиторий хостится на самом Bitbucket Cloud

Если кто делал, буду очень признателен за совет.

Возможно это еще можно реализовать на уровне git hooks или в самом Source Tree.

Привет всем. 

Возник такой вопрос. У нас есть Bitbucket репозиторий, который связан с Jira.
Для правильной работы этой интеграции надо в commit message добавлять код issue с которым он связан.

Так вот проблема в том как прикрутить какой-нибудь commit message checker (validator) чтобы не разрешать коммит без ссылки на jira issue. Мне кажется что задача не редкая, но почему-то с ходу не гуглится.

Венрнее гуглятся плагины типа вот такого https://marketplace.atlassian.com/plugins/com.isroot.stash.plugin.yacc/server/overview
Но не уверен что это подходит - у нас репозиторий хостится на самом Bitbucket Cloud

Если кто делал, буду очень признателен за совет.

Возможно это еще можно реализовать на уровне git hooks или в самом Source Tree.
Нашел такой вариант
http://tech.yipit.com/2011/11/16/183772396/
отсюда
http://stackoverflow.com/questions/23495113/automatically-rejecting-a-commit-based-on-certain-criteria
буду пробовать

А если тебе нужно будет коммитнуть что-то, маленький фикс, без номера issue?

А если тебе нужно будет коммитнуть что-то, маленький фикс, без номера issue?

Maxim Elets
без номера issue?

Это конечно интересный вопрос. Но в принципе любая работа должна трекаться и изменения должны иметь под собой основание. На крайняк можно зафигачить любой близкий по смыслу. Это лучше чем разбираться с тонной коммитов с "нечаянно" пропущенным номером таска.

[quote="Maxim Elets"] без номера issue?[/quote]
Это конечно интересный вопрос. Но в принципе любая работа должна трекаться и изменения должны иметь под собой основание. На крайняк можно зафигачить любой близкий по смыслу. Это лучше чем разбираться с тонной коммитов с "нечаянно" пропущенным номером таска.
Вот тут подробнее
https://git-scm.com/book/en/v2/Customizing-Git-Git-Hooks

В общем работает. И очень круто работает
Рекомендую.

Один недостаток - надо заставлять других разработчиков себе хук устанавливать локально.

Но для себя любимого просто огонь

В общем работает. И очень круто работает :D
Рекомендую.

Один недостаток - надо заставлять других разработчиков себе хук устанавливать локально.

Но для себя любимого просто огонь :D 

Dmitry Shnyrev
Один недостаток - надо заставлять других разработчиков себе хук устанавливать локально.

сделай хук на сервере.

[quote="Dmitry Shnyrev"]Один недостаток - надо заставлять других разработчиков себе хук устанавливать локально.[/quote]
сделай хук на сервере.

Gres
сделай хук на сервере.

Есть два момента - чет пока не понял как на самом Bitbicket делать хуки - это получается надо будет отдельный сервер задействовать чтобы хостить скрипт (пока толком не гуглил)
Второй - дело в том что коммиты создаются локально и сервер о них узнает только во время push. Очень будет неприятно узнать что пуш не проходит потому что один из 100 коммитов имеет неправильный message. Я так кстати и не нашел как просто поменять message у коммита который не последний.

[quote="Gres"]сделай хук на сервере.[/quote]
Есть два момента - чет пока не понял как на самом Bitbicket делать хуки - это получается надо будет отдельный сервер задействовать чтобы хостить скрипт (пока толком не гуглил)
Второй - дело в том что коммиты создаются локально и сервер о них узнает только во время push. Очень будет неприятно узнать что пуш не проходит потому что один из 100 коммитов имеет неправильный message. Я так кстати и не нашел как просто поменять message у коммита который не последний.

Dmitry Shnyrev
Я так кстати и не нашел как просто поменять message у коммита который не последний.

Rebase наше все!
Dmitry Shnyrev
дело в том что коммиты создаются локально и сервер о них узнает только во время push.

Логично, зато разработчик будет в следующий раз думать.

[quote="Dmitry Shnyrev"] Я так кстати и не нашел как просто поменять message у коммита который не последний.[/quote]
Rebase наше все!
[quote="Dmitry Shnyrev"] дело в том что коммиты создаются локально и сервер о них узнает только во время push. [/quote]
Логично, зато разработчик будет в следующий раз думать.

Gres
зато разработчик будет в следующий раз думать.

Вот на это я надеюсь меньше всего

[quote="Gres"]зато разработчик будет в следующий раз думать.[/quote]
Вот на это я надеюсь меньше всего :D