Mercurial: применить «hg pull -u» перед «hg commit»

В некоторых случаях мне нужно обеспечить, чтобы пользователи Mercurial запускали hg pull -u перед любым hg commit может быть разрешено, т. Е. hg pull будет означать, что входящая очередь пуста - и кроме того, я также хочу, чтобы человек использовал версию ветки head.

Как я могу установить такое ограничение?

(я полностью осознаю, что это противоречит частям ядра разработки DVCS)

7 голосов | спросил Peter Toft 16 PMpMon, 16 Apr 2012 17:57:11 +040057Monday 2012, 17:57:11

3 ответа


0

Вы можете попросить своих разработчиков установить

[hooks]
pre-commit = hg pull -u

в их конфигурационных файлах (вероятно, его следует установить в файл .hg/hgrc для каждого хранилища, поскольку этот рабочий процесс зависит от хранилища).

Это делает Mercurial немного похожим на Subversion: у ваших разработчиков будет только один выдающийся набор изменений. Но обратите внимание, как только кто-то отправляет на сервер, hg pull -u не может обновиться до новой подсказки ветвления, поскольку она будет пересекать ветки (топологические ветки) в Сделай так. Поэтому в этот момент потребуется правильное слияние (или rebase , см. hg pull --rebase)

ответил Martin Geisler 16 PMpMon, 16 Apr 2012 19:42:40 +040042Monday 2012, 19:42:40
0

Обычно mercurial НЕ позволяет вам открыть открытую голову на сервер без использования флага -f (принудительно). Вы можете написать хук для автоматического извлечения, но это не может быть применено на стороне сервера, потому что сервер не знает, что у вас есть. На сайте Mercurial есть статья об этом сценарии: https://www.mercurial-scm. /TipsAndTricks? Highlight =% 28heads% 29 # Prevent_a_push_that_would_create_multiple_heads

ответил Tyler Smith 16 PMpMon, 16 Apr 2012 19:16:04 +040016Monday 2012, 19:16:04
0

Как говорит Адам, возможно, что вам действительно нужно сделать, это предотвратить несколько голов (на каждую ветку). Это то, что мы делаем, используя ловушку «hibid_2head »из Netbeans (ссылка здесь )

В результате ловушка предотвращает любой толчок, который создает несколько головок на ветке (так по одной на ветке анонимный /по умолчанию плюс по одной на именованных ветвях). Это фактически заставляет тянуть перед фиксацией, потому что вы должны тянуть, получить две головы локально, затем объединить или перебазировать, чтобы удалить их.

обратите внимание, ловушка находится на сервере /главном репо

ответил Truan 7 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowFri, 07 Sep 2012 12:35:02 +0400 2012, 12:35:02

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

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132