Mercurial автоматическое нажатие на каждый коммит - PullRequest
44 голосов
/ 06 августа 2009

Будучи хорошо знакомым с рабочим процессом Subversion и тем фактом, что 99,9% времени, когда мой компьютер подключен к Интернету, я не люблю делать «hg ci» и «hg push» по отдельности.

Я помню, что у bzr была команда 'checkout', которая связывала бы последующие команды 'commit' для автоматической фиксации непосредственно на сервере ('push').

Есть ли у Mercurial что-то похожее на это?

PS: Написание сценария оболочки или псевдонима, который запускает 'hg ci $ * && hg push', будет последним, что я сделаю.

1 Ответ

56 голосов
/ 06 августа 2009

Вы можете добавить хук для запуска push после успешной фиксации.

РЕДАКТИРОВАТЬ: Я только что попробовал, и, кажется, работает нормально. Я добавил следующее в .hg/hgrc файл репозитория, для которого я хотел активировать автоматическую отправку:

[hooks]
commit.autopush = hg push

РЕДАКТИРОВАТЬ 2: Кроме того, вам не нужно беспокоиться о чем-то вроде этого:

  • Вы находитесь в хранилище, которое вы не не хотите автоматически загружать.
  • Вы используете hg -R ~/another-repo-that-autopushes commit для фиксации в другом репо, который делает автоматически толкать.
  • Завершит ли ловушка hg push изменения в текущем каталоге вместо того, в который вы вносите изменения?

Нет, не будет. По той странице, на которую я ссылаюсь:

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

Это крайний случай, но Mercurial обрабатывает его правильно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...