3

Я борюсь за пару часов, чтобы сделать метаданные git store (permissions/flags/etc) файлов, используя metastore, и я использую hooks/pre-commit для этого.

Сценарий вызывается правильно, и файл "метаданные" изменяется, но не добавляется в коммит.

Я пытался позвонить:

git add ./metadata 

а также

git add -u ./metadata

из сценария предварительной фиксации, но эффекта нет. Файл заканчивается незафиксированным и помечается как измененный или помеченный, НО не переданный, никогда.

Есть ли способ сделать эту работу? По сути, я хочу, чтобы он обновлял и фиксировал файл "метаданные" для каждого коммита (желательно, как тот же коммит, чтобы я мог восстановить все разрешения после проверки)

Спасибо!

PS Если вам интересно, зачем мне это нужно, ответ - я храню файлы ОС для встроенного устройства, для которого требуются флаги permisions/suid и т.д.

2 ответа2

2

Вы можете сделать что-то вроде этого:

#!/bin/sh
#

perl -i -pe 's/var app_version = "\d+\.\d+\.\K(\d+)/ $1+1 /e' ./version.js

git add ./version.js

Что он делает: изменяет строку var app_version = "0.1.1"; к var app_version = "0.1.2"; и добавляет файл обратно в процесс git commit. Когда вы фиксируете последние изменения будут включены.

1

Я нашел решение. Проблема в том, что при изменении из файла ловушки pre-commit единственный измененный файл - фиксация не происходит. Во время тестирования я вносил изменения только в файл "метаданных", и поэтому он не работал для меня.

Как только я изменю некоторые другие файлы в репозитории, добавьте новые / добавьте новые файлы - файл метаданных будет зафиксирован правильно!

Итог: для того, чтобы зафиксировать измененные файлы из ловушки pre-commit, git нужны некоторые другие поэтапные изменения, иначе фиксация не произойдет (вероятно, git ошибочно обнаружит, что нечего коммитить)

Это кажется немного неожиданным поведением для меня. Я проверял это в git 1.8 и git 2.0, поведение такое же.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .