2012-03-05 25 views
6

Tôi biết cách xác định móc nào sẽ chạy khi nào. Những gì tôi muốn biết là nếu nó có thể vượt qua cấu hình vào móc thông qua các tập tin hgrc. Tiện ích mở rộng có thể thực hiện việc này, ví dụ:Tôi có thể cấu hình các móc kim loại như một số phần mở rộng được cấu hình trong tập tin hgrc không?

[extensions] 
someextension = something 

[someextension] 
some.config = 1 
some.other.config = True 

Tôi muốn có thể làm điều gì đó tương tự cho móc, ví dụ:

[hooks] 
changegroup.mail_someone = python:something 

[changegroup.mail_someone] 
to_address = [email protected] 

Có phải như thế này có thể không? Tìm kiếm một cách để làm điều này đã không bật lên bất cứ điều gì hữu ích ... Nếu có thể, làm thế nào để tôi đọc về cấu hình trong trình xử lý hook (Python in-process) của tôi?

Trả lời

6

Hãy để tôi trả lời cho cả hai loại móc:

  • Một trong quá trình móc sẽ sử dụng ui.config and the related methods để đọc các giá trị cấu hình:

    address = ui.config('changegroup.mail_someone', 'to_address') 
    

    Bạn cũng có thể sử dụng ui.configboolui.configlist để đọc Booleans và danh sách, tương ứng.

  • Một móc bên ngoài có thể sử dụng hg showconfig để trích xuất các giá trị cấu hình:

    $ hg showconfig changegroup.mail_someone.to_address 
    

    Điều đó sẽ trở [email protected] trên stdout. Bạn có thể sử dụng

    $ hg showconfig changegroup.mail_someone 
    

    để xem tất cả cài đặt trong phần cụ thể đó.

+0

Cảm ơn. Đó là tiện dụng. Có lẽ, bạn có thể truy cập điều này theo cách tương tự với móc nội bộ bằng cách thực hiện 'os.popen ('hg showconfig mail_someone.to_address')'? – Spycho

+0

@Spycho: chắc chắn, bạn có thể làm điều đó. Nhưng đối với một hook nội bộ bạn đã có một đối tượng 'ui' và vì vậy bạn có thể gọi trực tiếp' ui.config ('mail_someone', 'to_address') '. –

+0

ah, tuyệt vời. Đó là đơn giản hơn. Tôi nghĩ rằng tôi đọc ở đâu đó rằng các phương pháp thủy ngân bên trong mà bạn có thể nhận được thông qua các thông số ui và repo không được phép sử dụng vì chúng có thể phá vỡ mà không cần thông báo? Đó không phải là những gì http://mercurial.selenic.com/wiki/MercurialApi là về? Hay điều này không được coi là một phần của "API nội bộ của Mercurial"? – Spycho

Các vấn đề liên quan