Mercurial: в том числе предварительно измененный файл

При коммите в репозиторий у меня есть крючок, определенный в Mercurial:

[hooks]
precommit.exportDB=exportDB.bat

Это создает / обновляет SQL-дамп из моей базы данных, который должен быть включен в коммит. НО: хотя это работает, Sql помечен как новый, но не является частью уже принятого набора изменений. Как я могу автоматически включить его, чтобы он попадал в набор измененных файлов?

Надеюсь, это имеет смысл...

Thx Рейнхард

1 ответ

Решение

Это будет звучать безумно, но вы можете сделать это в два этапа. Сначала измени свой precommit зацепить pre-commit крючок - да, оба существуют, и они разные. Без черты коммит уже начался, и некоторая блокировка была получена. С тире это происходит до начала коммита, и вы все еще можете hg add новый файл.

На Unix, как это общее изменение будет:

[hooks]
pre-commit.exportDB=exportDB.sh && hg add resulting.sql

предположительно есть что-то похожее на Windows, или вы могли бы сделать hg add последняя строка командного файла.

PS Не фиксируйте сгенерированные файлы.:)

Обновить:

Я только что проверил это, и это работает, как я предложил:

ry4an@four:~$ hg init reinhard
ry4an@four:~$ cd reinhard/
ry4an@four:~/reinhard$ vi .hg/hgrc
ry4an@four:~/reinhard$ cat .hg/hgrc 
[hooks]
pre-commit = hg add otherfile
ry4an@four:~/reinhard$ echo text > afile
ry4an@four:~/reinhard$ echo more > otherfile
ry4an@four:~/reinhard$ hg add afile
ry4an@four:~/reinhard$ hg status
A afile
? otherfile
ry4an@four:~/reinhard$ hg commit -m 'message'
ry4an@four:~/reinhard$ hg status --all
C afile
C otherfile

Обратите внимание, что перед фиксацией добавляется только "afile", а "otherfile" неизвестен, а после фиксации оба файла обозначаются "C" (что означает "Очистить" - они были добавлены и зафиксированы).

Другие вопросы по тегам