Có móc móc hiện tại trong Mercurial, như changegroup, cho phép thực hiện các thao tác, nhưng cho phép tôi thực hiện nhiều thao tác (hoặc thay đổi) dựa trên nhánh nào bị ảnh hưởng bởi các changesets trong đó? Ví dụ, tôi cần thông báo cho người nghe tại một địa chỉ khi push được thực hiện nhưng lý tưởng là nó sẽ thông báo cho các url khác nhau dựa trên nhánh nào bị ảnh hưởng mà không chỉ xóa tất cả chúng.Móc Mercurial Changegroup thay đổi dựa trên các nhánh
6
A
Trả lời
7
Không có móc nhánh chi tiết, nhưng bạn có thể thực hiện logic đó trong chính móc. Ví dụ trong hgrc
của bạn:
[hooks]
changeset = actions-by-branch.sh
và sau đó trong bạn actions-by-branch.sh
bạn muốn làm:
#!/bin/bash
BRANCH=$(hg log --template '{branch}' -r $HG_NODE)
BRANCH=${BRANCH:-default} # set value to 'default' if it was empty
if [ "$BRANCH" == "default" ] ; then
do something
elif [ "$BRANCH" == "release" ] ; then
do something else
else
do a different thing
fi
ý rằng tôi đã sử dụng một changeset hơn là móc changegroup. Một nhóm thay đổi duy nhất có thể có các thay đổi trên nhiều nhánh, điều này sẽ làm phức tạp logic. Nếu bạn quyết định đi tuyến đường đó, bạn cần phải lặp lại từ $HG_NODE
tất cả các cách đến tip
để hành động trên mỗi thay đổi trong nhóm.
Các vấn đề liên quan
- 1. Móc Mercurial hữu ích
- 2. Thay đổi di chuyển bằng Mercurial đến chi nhánh mới
- 3. mercurial - xem các thay đổi trên chi nhánh bỏ qua tất cả các cam kết hợp nhất
- 4. Phân nhánh trong Mercurial
- 5. Cách nhận các thay đổi trên chi nhánh trong Git
- 6. thực hiện các thay đổi không được cam kết trên chi nhánh sai cho chi nhánh bên phải
- 7. Phân nhánh với Mercurial SCM
- 8. Tại sao các Mercurial backouts trong một chi nhánh ảnh hưởng đến các chi nhánh khác?
- 9. Mercurial: làm thế nào để hợp nhất các thay đổi cho một tập tin được đổi tên trong nhánh khác?
- 10. Thay đổi OutputCache dựa trên URL
- 11. MQ so với các chi nhánh trong Mercurial
- 12. Tạo chi nhánh git dựa trên một chi nhánh khác
- 13. Phân nhánh có tên Retroactive trong Mercurial
- 14. Đổi tên cam kết thành chi nhánh trong Mercurial
- 15. Thay đổi điểm chi nhánh
- 16. Mercurial: Tạo một chi nhánh mà không phải thực hiện thay đổi đầu tiên
- 17. Chi nhánh nhỏ, tạm thời trong Mercurial
- 18. Mercurial: Chi nhánh các thay đổi cụ thể tiếp tục quay trở lại sau khi kết hợp giả
- 19. sáp nhập các sửa đổi đã chọn từ một chi nhánh này sang chi nhánh khác trong Mercurial
- 20. Git: Thay đổi nhánh chính?
- 21. Mercurial: Bao gồm các thay đổi bí mật trong gói?
- 22. Mercurial - Có thể hợp nhất các thay đổi từ thân cây thành chi nhánh, trong cùng một repo không?
- 23. mercurial đặt chi nhánh làm chi nhánh mặc định mới
- 24. Mercurial Sáp nhập chỉ những thay đổi nhất định
- 25. Chi nhánh cho mọi thay đổi nhỏ?
- 26. Thay đổi DirectoryIndex dựa trên miền/miền phụ trong .htaccess
- 27. JQuery: Thay đổi chiều cao dựa trên yếu tố khác
- 28. Thay đổi cú pháp mặc định dựa trên tên tệp
- 29. Thay đổi cỡ chữ Dựa trên ngôn ngữ
- 30. Mercurial: giữ nhánh mặc định là "active"
Tôi đoán '$ {BRANCH: = default}' phải là 'BRANCH = $ {BRANCH: = default}'. – palacsint
Nó hoạt động như được viết. Từ trang bash man "$ {parameter: = word} Chỉ định giá trị mặc định. Nếu tham số không được đặt hoặc null, thì việc mở rộng từ được gán cho tham số . Giá trị của param- eter sau đó được thay thế. Các tham số có thể không được gán theo cách này. " Nếu chúng ta muốn câu lệnh gán chi tiết hơn, chúng ta sẽ sử dụng ': -' thay cho': = '. –
Ok, tôi đã tìm ra vấn đề. Bash cố gắng chạy giá trị của '$ BRANCH' như một lệnh. Đó là lý do tại sao tôi nhận được thông báo lỗi 'mybranchname: command not found'. Vì vậy, bạn cần phân công hoặc sử dụng bash no-op (': $ {BRANCH: = default}') để tránh lỗi này. – palacsint