Как зафиксировать файлы, измененные хуком pre-commit в Git
3593
dimovnike
Я борюсь за пару часов, чтобы сделать метаданные git store (permissions / flags / etc) из файлов, используя metastore, и я использую hooks/pre-commitдля этого.
Сценарий вызывается правильно, и файл «метаданные» изменяется, но не добавляется в коммит.
Я пытался позвонить:
git add ./metadata
а также
git add -u ./metadata
из сценария предварительной фиксации, но эффекта нет. Файл заканчивается незафиксированным и помечается как измененный или помеченный, НО не переданный, никогда.
Есть ли способ сделать эту работу? По сути, я хочу, чтобы он обновлял и фиксировал файл «метаданные» для каждого коммита (желательно, как тот же коммит, чтобы я мог восстановить все разрешения после проверки)
Спасибо!
PS Если вам интересно, зачем мне это нужно, ответ - я храню файлы ОС для встроенного устройства, для которого требуются флаги permisions / suid и т. Д.
Это должно работать, может быть, вы делаете что-то не так. Хук pre-commit выполняется автоматически, когда вы делаете «git commit». У него должен быть установлен исполняемый бит. Поэтому попробуйте добавить некоторые файлы в постановку вручную, а затем выполните «git commit». После этого выполните «git show», чтобы увидеть, какие изменения были внесены в этот коммит, и посмотреть, были ли зафиксированы метаданные.
Arkadiusz Drabczyk 9 лет назад
0
Что он делает: изменяет строку var app_version = "0.1.1"; к var app_version = "0.1.2"; и добавляет файл обратно в процесс git commit. Когда вы фиксируете последние изменения будут включены.
неправильный вопрос?
dimovnike 9 лет назад
2
Проблема здесь в том, что вы будете фиксировать все изменения в этом конкретном файле. Не только ранее поставленные изменения. Может работать для файлов, которые содержат только версию, хотя.
Martin Gerhardy 6 лет назад
0
1
dimovnike
I have found the solution. The problem is that when modified from pre-commit hook file is the only modified file - the commit is not happening. While testing this, I was making changes only in the "metadata" file and thats why it did not work for me.
As soon as I modify some other files in the repo add add/rm new files - the metadata file is properly commited!
Bottom line: In order to commit the modified files from pre-commit hook, git needs some other staged changes, otherwise the commit won't happen (probably, git erroneously detects that there is nothing to commit).
This seems a bit unexpected behaviour to me. I tested this in git 1.8 and git 2.0 the behaviour is the same.
У меня та же проблема, но изменение других промежуточных файлов не решает проблему. Git не воспринимает изменения, сделанные pre-commit в моем случае ..
frhd 9 лет назад
0
Удостоверьтесь, что вы делаете git add для canges, сделанного скриптом предварительной фиксации (в конце скрипта).
dimovnike 9 лет назад
0
Я не могу этого сделать. Я получаю ошибку index.lock, поскольку git-commit вызывает pre-commit. Работает ли это для вас?
frhd 9 лет назад
0