Git добавляет в хук предварительной фиксации, а не промежуточный файл для фиксации

Я написал ловушку перед фиксацией, которая компилирует мой проект и добавляет сгенерированный файл в фиксацию.

Это проект JavaScript, и я использую хаски, но я экспериментировал с редактированием .git / hooks / pre-commit, и файл не добавляется в коммит. Если я отменю фиксацию, я вижу, что файл был добавлен, но по какой-то причине это не относится к текущей фиксации.

Мой хук перед фиксацией выглядит примерно так:

const shell = require('shelljs');

shell.exec('yarn bundle');
shell.exec('git add dist');
shell.exit(0);

shelljs - это просто библиотека для выполнения команд Unix между ОС в узле

Я отредактировал .git/hooks/pre-commit для запуска git add dist, но файл все еще не добавлен в фиксацию


person Heather Roberts    schedule 10.08.2018    source источник
comment
Хук действительно выполнен? Ему нужен исполняемый бит, и он может быть проигнорирован, если его нет. Также проверьте без shelljs, вызывая git add dist напрямую   -  person Dmitriy Smirnov    schedule 10.08.2018
comment
Возможный дубликат Может ли перехватчик Git автоматически добавлять файлы в совершить?   -  person Dmitriy Smirnov    schedule 10.08.2018
comment
Хук определенно выполнен, да, и я попробовал просто запустить git add dist, но он все равно не сработал.   -  person Heather Roberts    schedule 13.08.2018


Ответы (1)


Я не думаю, что git add может работать в ловушка pre-commit, предназначенная для проверки того, что будет зафиксировано, а не для ее изменения.

Вместо этого вы можете использовать подход, аналогичный «Может ли перехватчик Git автоматически добавлять файлы в коммит?», который создает отдельный дополнительная фиксация.

person VonC    schedule 10.08.2018
comment
Добавление файлов с помощью хуков предварительной фиксации действительно работает. считай простейший крючок echo text > test.file && git add test.file - у меня сработал. - person Dmitriy Smirnov; 10.08.2018
comment
А как насчет предварительного нажатия? Вы можете выполнить фиксацию всегда, но при попытке отправить вы можете фактически сгенерировать другие файлы, добавить их, зафиксировать их программно и выдать команду exit (0), чтобы нажатие произошло. Но да, кажется неправильным, как сказал @VonC. - person Lovato; 10.08.2018
comment
Спасибо @VonC, используя решение этого другого вопроса, мне помогло, но я бы хотел добавить дополнительный файл в ловушку перед фиксацией ... - person Heather Roberts; 13.08.2018