Tôi là quá trình viết một kịch bản cập nhật, mà kéo phiên bản mới nhất của một số kho, và xây dựng lại các dự án. Tôi muốn thực hiện việc xây dựng có điều kiện, vì vậy tôi cố gắngMercurial: kiểm tra xem cuối cùng kéo/cập nhật giới thiệu những thay đổi
hg pull -u && ant clean build
và sự thay đổi
hg pull; hg update && ant clean build
Tuy nhiên, kiến xây dựng luôn được gọi, thậm chí khi không có gì đã thay đổi. Tôi biết rằng tôi có thể sử dụng hg incoming
để kiểm tra các thay đổi trước khi thực hiện thao tác kéo, nhưng điều này gây lãng phí cho tôi.
Làm cách nào để kiểm tra các thay đổi mới mà không phải liên hệ với máy chủ hai lần (một lần cho hg incoming
, một lần cho hg pull
)?
UPDATE: Đây là xây dựng kịch bản của tôi bây giờ:
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)
Và đối với người tự hỏi tại sao tôi làm sạch xây dựng mọi thời gian, có hai lý do cho điều đó:
- Các kho phụ thuộc vào nhau, và khi API trong một trong số chúng thay đổi, tôi cần phải xây dựng lại hoàn toàn để tìm những nơi mà những thay đổi API này phá vỡ mã
- Trình biên dịch Java cố định hằng số, cũng từ các tệp lớp khác. Bây giờ, khi tôi thay đổi một hằng số trong một lớp trở lại một trường có thể thay đổi, tất cả các tệp lớp khác sử dụng hằng số đó vẫn bị ảnh hưởng bởi một bản dựng và điều này có thể dẫn đến các lỗi nhỏ mà tôi muốn tránh.
Không phải là hệ thống xây dựng thích hợp, đọc: không kiến, có thể tạo các bản dựng gia tăng không? – jmg
kiến có thể làm các bản dựng tăng dần, nhưng tôi muốn tránh các lỗi tinh vi, vì vậy tôi làm một bản dựng sạch mọi lúc. –
Vậy làm cách nào để tạo các bản dựng tăng dần của riêng bạn giúp tránh các lỗi tinh vi? –