2016-11-30 31 views
0

У меня есть pre-commit-hook написанный на python, который вносит некоторые изменения в файл. Теперь я хотел бы также добавить этот файл, чтобы включить изменения, сделанные pre-commit-hook.git python pre-commit hook для добавления файлов

Я пытался использовать subprocess сделать это

subprocess.check_call(('git', 'add', filename)) 

Если бы я попробовать это в интерактивной сессии питона это правильно добавляет файл, но я крюк он не работает.
Я уже проверил, что крюк работает с соответствующим каталогом.

Как я могу правильно добавить файлы?

Edit: Моя git версия 2.1.4

+0

Во-первых, убедитесь, что ваш крюк действительно работает (например, распечатайте или зарегистрируйте что-нибудь). Если он не запускается, ничто из этого не будет иметь никакого эффекта! Если это действительно * * выполняется, следующий шаг зависит от вашей версии Git. (В любом случае, крючок, который * изменяет то, что должно быть зафиксировано *, обычно не является хорошей идеей: эти крючки должны просто * проверять * и выходить 0 или ненулевое, чтобы разрешить или предотвратить фиксацию.) – torek

+0

Я проверил, что мой крючок (с использованием некоторых операторов печати). Причина, по которой я хочу добавить файл, заключается в том, что крючок добавляет номер версии после проверки файлов. Крюк - единственный безопасный способ, который я знаю для этого. – DerWeh

ответ

0

Интересно: до тех пор, как предварительно совершить крюк на самом деле работает, git add должен вступить в силу в любой версии Git позднее 1.5.4. См. this commit в репозитории Git для Git.

(я помню, что это не правильно работать в некоторой версии Git, но не помню, что была нарушена в какой-либо конкретной версии.)

Альтернатива, если это испорчено в вашей конкретной версии Git, является сделайте свой крючок для предварительной фиксации, добавьте файл, запустите его собственныйgit commit, который устраивает внутреннюю рекурсивную фиксацию не recurse again - вам решать, как это осуществить, а затем, когда внутренняя фиксация завершается, отклоните фиксация. Это решение является уродливым, так как делает каждое комманда неудачным.

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

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