Я борюсь за пару часов, чтобы сделать метаданные git store (permissions / flags / etc) из файлов, используя metastore, и я использую hooks/pre-commit
для этого.
Сценарий вызывается правильно, и файл «метаданные» изменяется, но не добавляется в коммит.
Я пытался позвонить:
git add ./metadata
а также
git add -u ./metadata
из сценария предварительной фиксации, но эффекта нет. Файл заканчивается незафиксированным и помечается как измененный или помеченный, НО не переданный, никогда.
Есть ли способ сделать эту работу? По сути, я хочу, чтобы он обновлял и фиксировал файл «метаданные» при каждом коммите (желательно, как тот же коммит, чтобы я мог восстановить все разрешения после проверки)
Спасибо!
PS Если вам интересно, зачем мне это нужно, ответ - я храню файлы ОС для встроенного устройства, для которого нужны флаги permisions / suid и т. Д.
Ответы:
Вы можете сделать что-то вроде этого:
Что он делает: изменяет строку var app_version = "0.1.1"; к var app_version = "0.1.2"; и добавляет файл обратно в процесс git commit. Когда вы фиксируете последние изменения будут включены.
источник
Я нашел решение. Проблема в том, что при изменении из файла ловушки pre-commit единственный измененный файл - фиксация не происходит. Во время тестирования я вносил изменения только в файл «метаданных», и поэтому он не работал для меня.
Как только я изменю некоторые другие файлы в репозитории, добавьте новые / добавьте новые файлы - файл метаданных будет принят!
Итог: чтобы зафиксировать измененные файлы из ловушки pre-commit, git нужны некоторые другие поэтапные изменения, иначе фиксация не произойдет (вероятно, git ошибочно обнаружит, что нечего коммитить).
Это кажется немного неожиданным поведением для меня. Я проверял это в git 1.8 и git 2.0, поведение такое же.
источник
index.lock
об ошибке, такgit-commit
как вызываетpre-commit
. Работает ли это для вас?Чтобы изменить файл в
pre-commit
хуке таким образом, чтобы он не мешал неустановленным изменениям (т. Е.git-add -p
Дружественным), вам необходимо отредактировать версию файла в индексе.Вот пример
pre-commit
ловушки, которая обновляет номер версии в виде метки времени в заголовке файла :источник