Как избежать случайного 'hg push' вместо 'hg qpush'? - PullRequest
10 голосов
/ 10 марта 2010

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

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

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

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

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

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

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

спасибо!

Ответы [ 2 ]

9 голосов
/ 10 марта 2010

смутные идеи:

  • вы можете удалить заданное по умолчанию местоположение из вашего репо
  • Вы могли бы написать "Вы имели в виду qpush? Да, нет" 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'
  • вы можете использовать псевдоним push для qpush и псевдоним pushtoserver для push (я думаю, что это работает, но не может попробовать это сейчас)
6 голосов
/ 10 марта 2010

Добавьте в свой .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!

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

...