Я занимаюсь написанием скрипта обновления, который извлекает последнюю версию из ряда репозиториев и перестраивает проекты.Я хотел сделать сборку условной, поэтому попробовал
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 )
И для людей, которые задаются вопросом, почему я делаю чистую сборкукаждый раз для этого есть две причины:
- Репозитории зависят друг от друга, и когда API в одном из них изменяется, мне нужно выполнить полную перестройку, чтобы найти места, где эти API изменяютсякод прерывания
- Компилятор Java содержит встроенные константы, также из других файлов классов.Теперь, когда я изменяю константу в классе обратно на поле, которое можно изменить, все остальные файлы классов, использующие эту константу, остаются неизменными при сборке, и это может привести к незначительным ошибкам, которых я хочу избежать.