Только Javascript 😍

Привет всем, добро пожаловать обратно в серию git, если вы не видели, как мой предыдущий пост прошел по этой ссылке и вернулся. давайте начнем. Я надеюсь, что в нашем жизненном цикле разработки мы все сталкивались с неправильными сообщениями фиксации или не в соответствии с политикой нашей компании. Итак, сегодня я собираюсь показать вам, как мы можем избежать этих ошибок, давайте начнем.

Что такое крючки🤔

Перехватчики Git — это скрипты, которые Git выполняет до или после таких событий, как: фиксация, отправка и извлечение. Git-хуки — это встроенная функция — ничего скачивать не нужно. Git-хуки запускаются локально. не теряя времени, давайте глубоко погрузимся в крючки.

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

Как вы видите выше, я создал пустую папку с именем «hooksdemo» и инициализировал ее с помощью git. если мы видим внутри каталог «.git». Он содержит подкаталог с именем «hooks». теперь, если мы развернем папку, вы увидите много файлов. Это выглядит так, как показано ниже.

Я надеюсь, что теперь у вас есть вопрос в вашем уме. кто они такие? откуда они на самом деле? что они делают? почему они здесь? Ответ на все ваши вопросы. Это предопределенные хуки, созданные git, когда вы инициализируете каталог с помощью git, и эти хуки появляются, когда вы установили программное обеспечение git на свой компьютер. по умолчанию эти хуки также создаются и хранятся в вашей пользовательской рабочей области. Хорошо, давайте проверим, где они на самом деле присутствуют.

Как вы видите выше, они пришли сверху. По умолчанию они имеют суффикс «.sample», так что теперь эти хуки тупые. Чтобы заставить их работать, нам нужно удалить суффикс «.sample». Как вы видели выше, некоторые из хуков с префиксом «pre», а некоторые из них с «post», это потому, что хуки с префиксом «pre» запускаются до того, как должно произойти определенное событие, а другие наоборот. Приведенные выше хуки написаны на языке perl. Вы можете использовать свой любимый язык, например: -java, javascript, c#, perl, ruby ​​bla bla bla. Мне нравится javascript, поэтому я использую Nodejs для написания хуков. Теперь я собираюсь написать хук, который будет запускаться перед сообщением о коммите. Давайте испачкаем наши руки, написав некоторый код.

Написание хуков Git с помощью javascript😎

Мы собираемся написать хук, который будет проверять сообщение фиксации, соответствующее нашей политике (в моем случае длина сообщения фиксации должна быть больше 10), так что давайте начнем.

Как вы видите выше, «commit-msg» мы собираемся активировать по умолчанию, он содержит некоторые скрипты, написанные в оболочке, нас это не волнует, на данный момент мы удаляем этот файл, создаем другой пустой файл с тем же именем. Итак, давайте сделаем это первый.

#!/usr/bin/env/node

В верхней части файла нам нужно добавить указанную выше строку. Приведенная выше строка указывает операционной системе использовать nodejs для выполнения этого файла. давайте напишем нашу бизнес-логику, используя javascript. Я использую модуль процесса nodejs для получения входных данных команд внутри хуков, если вы не знаете, что такое модуль процесса в nodejs, пожалуйста, перейдите по этой ссылке и поймите. Теперь давайте получим пользовательский ввод и консоль его на данный момент.

В приведенном выше фрагменте мы получаем аргументы, переданные в сообщении фиксации, и завершаемся с кодом «1». По умолчанию выход любого сценария оболочки с кодом «1» рассматривается как сбой, а выход с кодом «0» рассматривается как успех. Для тестирования, так как сейчас я использую «1», позже мы можем использовать его на основе условий. Теперь давайте запустим команду git и посмотрим, что произойдет.

Как вы видите, массив передается в хук из нашей командной строки, который содержит путь выполнения узла и индекс «0», путь к файлу нашего хука с индексом «1» и другой путь к файлу с «2». Индексы «0» и «1» нас не интересуют. Давайте прочитаем файл «.git/COMMIT_EDITMSG», который мы получили по индексу «2».

Как вы видите, оно содержит наше сообщение фиксации, поэтому мы хотим, чтобы это сообщение в нашем хуке выполняло проверку бизнеса.

Теперь давайте прочитаем этот файл с помощью модуля файловой системы nodejs, получим сообщение фиксации и выполним проверку, не теряя времени, давайте начнем это делать.

Как и в приведенном выше коде, мы проверяем длину сообщения фиксации и выполняем проверку. Теперь мы закончили с крюком, пора его протестировать.

Теперь наш хук работает, как и ожидалось, это все о git-хуках.

Заключение

В этом посте мы говорили о git-хуках и о том, как они работают внутри. Я надеюсь, что вам понравилось . В следующем посте я поделюсь различными захватами событий с помощью хуков, а пока пока.