2013-07-29 7 views
1

Бит кудрявый, на который я не смог найти ответ. У меня есть pre-commit hook для git, который mysqldumps базы данных, и ставит файл для фиксации.Принудительная фиксация git при постановке пуста, но привязка до фиксации добавит файлы

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

Вот основной урезанный тест, который я пытаюсь это с:

#!/bin/bash 

#commit database as point-in-time 
SITE_PATH="/data/site.com" 
cd $SITE_PATH 

FILE_NAME="db/site.sql" 
$(mysqldump --skip-extended-insert --skip-dump-date db_name > $FILE_NAME) 

#add changed file to commit 
$(git add $FILE_NAME) 

Вопрос заключается в том, что если нет файлов будут поставлено, предварительно совершить сценарий запускается, но совершить ISN» t завершено. Если вы запустите echo $?, то git commit вернет код выхода из 1 (потому что на этапе не было файлов). Запуск git status показывает, что дамп db теперь готов к фиксации.

Конец работает, если у меня есть какой-либо другой файл, добавленный в очередь, перед запуском коммита.

Я могу, очевидно, легко написать обертку, которая делает то, что я хочу, а затем называет git commit в конце после того, как все было организовано заранее, но может ли кто-нибудь пролить свет на лучшие практики для этой ситуации?

ответ

3
git commit --allow-empty 

Это остановит git от прерывания фиксации, которая не изменила никаких файлов с предыдущего фиксации.

+0

отлично, приветствия! Я, должно быть, пропустил это, скорее всего, искал ключевые слова «силы» в записи человека. – aleayr