В ідеалі гачки пишуться в баш, якщо ви дотримуєтеся зразків файлів. Але ви можете написати його будь-якою доступною мовою, і просто переконайтесь, що він має прапор, що виконується.
Отже, ви можете написати Python або Go код для досягнення своїх цілей і помістити його під папку гаків. Він буде працювати, але ним не керуватиме разом із сховищем.
Два варіанти
а) Мульти сценарії
Ви можете кодувати гачки всередині вашої допомоги та додати невеликий фрагмент коду до гачків, щоб зателефонувати до ідеального сценарію:
$ cat .git/hooks/pre-commit
#!/bin/bash
../../hooks/myprecommit.js
б) Єдиний сценарій
Більш крутим варіантом є додавання лише одного сценарію, щоб правити ними всі, а не кілька. Отже, ви створюєте гачки / mysuperhook.go і вказуєте на кожен гачок, який хочете мати.
$ cat .git/hooks/pre-commit
#!/bin/bash
../../hooks/mysuperhook.go $(basename $0)
Параметр надасть вашому сценарію, який гак був спрацьований, і ви можете розмежувати його всередині коду. Чому? Іноді, можливо, ви хочете запустити ту саму перевірку на фіксацію та натискання, наприклад.
І потім?
Тоді, можливо, ви хочете мати додаткові функції, наприклад:
- Увімкніть гачок вручну, щоб перевірити, чи все в порядку навіть перед фіксацією чи натисканням. Якщо ви просто зателефонуєте до свого сценарію (варіант a або b), це зробить свою справу.
- Запустіть гачки на CI, тому вам не потрібно буде переписувати ті самі чеки для CI, це було б, наприклад, викликати тригери фіксації та натискання. Те саме, що вище, повинно це вирішити.
- Викликайте зовнішні інструменти, наприклад валідатор розмітки, або валідатор YAML. Ви можете робити системні дзвінки та обробляти STDOUT та STDERR.
- Переконайтеся, що всі розробники мають простий спосіб встановити гачки, тому в сховище потрібно додати приємний скрипт, щоб замінити гачки за замовчуванням на правильні
- Майте декількох глобальних помічників, як, наприклад, чек для блокування комітетів для розробки та освоєння гілок, не потрібно додавати їх до кожного сховища. Ви можете вирішити це, маючи інше сховище з глобальними сценаріями.
Чи може це бути простіше?
Так, є кілька інструментів, які допоможуть вам керувати гачком. Кожен з них призначений для вирішення проблеми з іншого погляду, і вам може знадобитися розібратися у всіх них, щоб отримати той, який найкращий для вас або вашої команди. GitHooks.com пропонує багато читання про підключення та кілька інструментів, доступних сьогодні.
На сьогоднішній день там перелічено 21 проект із різними стратегіями управління гаками. Деякі роблять це лише для одного гачка, деякі для певної мови тощо.
Один із таких інструментів, написаний мною і запропонований безкоштовно як проект із відкритим кодом, називається hooks4git . Він написаний на Python (тому що мені це подобається), але ідея полягає в тому, щоб обробляти всі перераховані вище елементи в одному файлі конфігурації під назвою .hooks4git.ini, який знаходиться всередині вашого сховища і може викликати будь-який сценарій, який ви хочете зателефонувати, будь-якою мовою .
Використання git гаків абсолютно фантастично, але спосіб, яким вони пропонуються, зазвичай відволікає людей від цього.