Тестирование на незафиксированные изменения в подвижном

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

(путь я был бы с git diff --quiet в мерзавце)

9
задан Antony Hatchkins 5 February 2010 в 21:03
поделиться

3 ответа

В mercurial 1.4 и более поздних версиях вы можете использовать команду сводки, которая выдает такой вывод при наличии изменений:

$ hg summary
parent: 0:ad218537bdef tip
 commited
branch: default
commit: 1 modified
update: (current)

и этот post-commit:

$ hg summary
parent: 1:ef93d692f646 tip
 sfsdf
branch: default
commit: (clean)
update: (current)

Или же вы можете установить расширение prompt prompt и сделать что-нибудь вроде этого:

$ hg prompt '{status}'

, что выдаст ! или ? или ничего подобного.

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

hg summary | grep -q 'commit: (clean)'

, которая установит $? ненулевое значение, если какие-либо изменения не будут сделаны:

$ hg summary | grep -q 'commit: (clean)' ; echo $?
0
$ echo more >> that 
$ hg summary | grep -q 'commit: (clean)' ; echo $?
1
11
ответ дан 4 December 2019 в 10:32
поделиться

Должно быть что-то более элегантное, чем просто

[ `hg st |wc -l` -eq 0 ] && echo hi
0
ответ дан 4 December 2019 в 10:32
поделиться

Вы также можете выполнить hg id. Если хэш заканчивается на +, это означает, что в рабочей копии есть изменения. Это должно работать даже со старыми версиями hg.

Похоже, вы уже используете zsh; так вот, пару дней назад я помог обновить поддержку Mercurial для встроенного VCS_INFO для ввода информации о VCS в подсказку. В следующем выпуске планируется поддержка отображения изменений в рабочем каталоге (среди прочего). Если вы не хотите ждать, вы можете взять необходимые файлы из CVS.

На данный момент моя подсказка включает следующее (используя только встроенную функциональность zsh):

   (hg)[1801+ branchname somemq.patch, anycurrentbookmarks]
4
ответ дан 4 December 2019 в 10:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: