Как избежать случайного "hg push" вместо "hg qpush"?

Для тех из вас, кто использует Mercurial с расширением MQ:

Это второй случай, когда я случайно отправляю изменения в центральный репозиторий (hg push) вместо применения патча к моему рабочему каталогу (hg qpush).

Я думаю, что это очень неудачно, потому что это очень простая ошибка, чтобы сделать и имеет очень серьезные последствия (наименьшее нужно сделать hg backout и дополнительный hg push для каждого представленного изменения, чтобы создать новый что "отменяет" las один в центральном хранилище, но история становится запутанной и неприятной.

Моя цель - настроить некоторые псевдонимы или что-то в моей среде в orden, чтобы сделать hg push сложнее сделать случайно.

Есть ли у вас предложения? Я думал что-то вроде:

[alias]
push=      <-- how to NOP the push command??
pushtoserver=push

Поскольку это полностью субъективный вопрос, это происходит как вики сообщества.

спасибо!

Ответ 1

некоторые неопределенные идеи:

  • вы можете удалить местоположение по умолчанию из своего репо
  • вы могли бы написать "вы имели в виду qpush? yes, no" pre-push hook

Этот крючок (командная строка bash) запрашивает подтверждение перед нажатием изменений на пульте дистанционного управления (проверено с помощью mercurial 1.4):

[hooks]
preoutgoing.confirm = read -p 'Are you sure you want to push to remote? (y/n): '; echo $REPLY | grep -q 'y'
  • вы могли бы псевдоним нажать на qpush и псевдоним pushtoserver, чтобы нажать (я думаю, что это работает, но не может попробовать сейчас)

Ответ 2

Поместите следующее в свой .hgrc:

[alias]
pushtoserver = push
push = 'Did you mean qpush or pushtoserver?'

Работает следующим образом:

$ hg push
alias 'push' resolves to unknown command 'Did you mean qpush or pushtoserver?'

$ hg pushtoserver
abort: repository default-push not found!

См. также раздел псевдонима http-страницы hgrc.