Mercurial: проверьте, внесены ли изменения при последнем извлечении / обновлении

Я сейчас пишу сценарий обновления, который извлекает последнюю версию из ряда репозиториев и перестраивает проекты. Я хотел сделать сборку условной, поэтому я попробовал

hg pull -u && ant clean build

и вариант

hg pull; hg update && ant clean build

. Однако сборка муравья вызывается всегда, даже если ничего не изменилось. Я знаю, что могу использовать hg incoming для проверки изменений перед выполнением вытягивания, но мне это кажется расточительным.

Как я могу проверить наличие новых изменений, не обращаясь к серверу дважды (один раз для hg incoming , один раз для hg pull )?

ОБНОВЛЕНИЕ: Вот мой сценарий сборки:

update() {
  TIP=$(hg tip --template "{node"})
  hg pull -u
  if test "$TIP" != $(hg tip --template "{node}"); then
    ant clean build
  fi
}

(cd repo1; update )
(cd repo2; update )

И для людей, интересующихся, почему я каждый раз делаю чистую сборку, есть две причины:

  1. Репозитории зависят друг от друга, и когда API в одном из них изменяется, Мне нужно выполнить полную перестройку, чтобы найти места, где эти изменения API нарушают код
  2. . Компилятор Java встраивает константы, также из других файлов классов. Теперь, когда я изменяю константу в классе обратно на поле, которое может изменяться, все другие файлы классов, использующие эту константу, остаются нетронутыми сборкой, и это может привести к незаметным ошибкам, которых я хочу избежать.
9
задан Martin Geisler 19 January 2012 в 14:30
поделиться