Я принял подход fchateaus выше (спасибо человеку!) И изменил его для работы с Mercurial.
Вам нужно будет отредактировать .hg/hgrc на центральном сервере и поместить крюк changegroup. Имейте в виду, что группы изменений только устанавливают первый набор изменений в переменную среды HG_NODE, поэтому вам нужно сделать hg-отзыв для захватите реальный узел наконечника и передайте это через URL вместо этого. Немного об уловке в одном слоте, но я это понял.
Это то, что вы сделали бы для Хадсона, работающего на Windows.
[hooks]
# this uses wget to hit the hudson url responsible for starting a build - %HG_NODE% only gets first changeset of changegroup, so use hg tip to grab changeset most recently added instead
changegroup.hudson = for /f "tokens=*" %G IN ('hg tip --template {node}') DO "C:\Program Files (x86)\UnxUtils\usr\local\wbin\wget" --non-verbose --spider http://HudsonServer:8080/job/{Repository}/buildWithParameters?HgRevId=%G | ECHO Result of Hudson Polling Request For Node %G
# TODO: when Hudson implements polling with parameters, change to something like this
#changegroup.hudson = for /f "tokens=*" %G IN ('hg tip --template {node}') DO "C:\Program Files (x86)\UnxUtils\usr\local\wbin\wget" --non-verbose --spider http://HudsonServer:8080/job/{Repository}/polling?HgRevId=%G | ECHO Result of Hudson Polling Request For Node %G
Вы должны позаботиться о том, чтобы это не вызвало проблем с производительностью для Хадсона. Например, если вы совершаете фиксации каждые несколько секунд, тогда как сборка hudson занимает несколько минут. Вскоре вы наполните очередь сборки. – toolkit
В моей жизни я не понимаю, почему это может понадобиться. Почему важно быть чем-то отличным от текущего состояния кодовой базы? – sal
Привет, причина для этого - тестирование. Мы стремимся поставить каждую ревизию на регрессионный тест. Поэтому, если мы не строим каждую ревизию, мы не тестируем каждую ревизию. Это вызывает проблемы, если rev n работает, но rev n + 10 не является, и мы не тестировали какие-либо изменения между ними. Какое изменение вызвало регресс? – CodeBuddy