2009-12-08 24 views
11

Tôi muốn giữ hai tệp ~/.hgrc: ~/.hgrc và ~/.hgrc.local - một với cài đặt "chuẩn" (ví dụ: username), thiết bị còn lại có cài đặt dành riêng cho máy (ví dụ: cài đặt một công cụ kết hợp đồ họa).Tải nhiều tệp .hgrc - tức là một số có cài đặt dành riêng cho máy?

Làm cách nào tôi có thể thực hiện việc này với hg?

Ví dụ, đây là cách tôi làm điều đó với Vim:

# ~/.vimrc 
syntax enable 
source ~/.vimrc.local 

Sau đó:

# ~/.vimrc.local 
let work_code = 'code/work/.*' 
if expand('%:p:h') =~ work_code ... fi 

Trả lời

20

Có một không-thường được sử dụng %include chỉ trong lanh 1.3 và mới hơn:

Từ man hgrc:

A line of the form %include file will include file into the current 
    configuration file. The inclusion is recursive, which means that 
    included files can include other files. Filenames are relative to the 
    configuration file in which the %include directive is found. 

nên đi với:

%include ~/.hgrc.local 

và bạn sẽ được tốt để đi .

+0

kinh ngạc, tuyệt vời - đó chính là điều tôi đang tìm kiếm. Cảm ơn. –

+0

Chà, tôi không biết là đã tồn tại. Tốt đẹp. –

+0

Hrm, do đó sẽ thực sự mát mẻ ... Nhưng nó không hoạt động với hg 1.3.1 hoặc 1.4.1 ... Và grepping cây nguồn hg (1.4.1 + 7-4ddfad7ebd98) cho '% import' không biến bất cứ điều gì lên. Vậy ... Anh tìm thấy cái đó ở đâu? –

0

Mercurial sẽ xem xét tại các địa điểm khác nhau cho hgrc tập tin và sẽ tải chúng nếu có. Đối với cấu hình toàn hệ thống, chuẩn (trên UNIX) sẽ sử dụng /etc/mercurial/hgrc.

Xem files section of the hgrc man page để biết thêm thông tin.

+0

Có vẻ như ở một vài nơi khác nhau… Nhưng tôi cần phải có cả hai tệp cấu hình trong ~, vì tôi không có gốc trên tất cả các máy của mình. –

+0

được giảm giá để diễn giải hướng dẫn mà không thêm thông tin thực. Bạn có thể làm tốt hơn :) – NicDumZ

5

Tôi giải quyết vấn đề này cho tất cả "tệp chấm" của tôi theo cách tương tự. Khi đăng nhập, shell của tôi sẽ kiểm tra danh sách các tệp (hgrc, vimrc, ....) và kiểm tra xem có bất kỳ tệp nào trong số chúng cũ hơn ${that_name}.global hoặc ${that_name}.local. Nếu đó là - cat ${that_name}.{global,local} > ${that_name}. Đơn giản và hoạt động tuyệt vời cho đến nay. Trong khi có một cách "tốt hơn" (sử dụng %include) đôi khi việc xử lý các tệp cấu hình theo cách thủ công có lợi thế - ví dụ: nó sẽ hoạt động với tính năng siêu việt trước 1.3.

+0

Ah, đó là một ý tưởng tuyệt vời. Cảm ơn! –

4

Kiểm tra Mercurial cho một số tệp cấu hình có mức độ ưu tiên cụ thể. Bằng cách này, bạn có thể có cài đặt toàn cầu, người dùng cụ thể và kho lưu trữ cụ thể. phiên bản Mercurial> = 1.4 có một lệnh hg help config trong đó mô tả điều này trong một cái nhìn tổng quan tốt đẹp:

$ hg help config 
Configuration Files 

    Mercurial reads configuration data from several files, if they exist. Below we list the most specific file first. 

    On Windows, these configuration files are read: 

    - "<repo>\.hg\hgrc" 
    - "%USERPROFILE%\.hgrc" 
    - "%USERPROFILE%\Mercurial.ini" 
    - "%HOME%\.hgrc" 
    - "%HOME%\Mercurial.ini" 
    - "C:\Mercurial\Mercurial.ini" 
    - "HKEY_LOCAL_MACHINE\SOFTWARE\Mercurial" 
    - "<install-dir>\Mercurial.ini" 

    On Unix, these files are read: 

    - "<repo>/.hg/hgrc" 
    - "$HOME/.hgrc" 
    - "/etc/mercurial/hgrc" 
    - "/etc/mercurial/hgrc.d/*.rc" 
    - "<install-root>/etc/mercurial/hgrc" 
    - "<install-root>/etc/mercurial/hgrc.d/*.rc" 

    The configuration files for Mercurial use a simple ini-file format. A configuration file consists of sections, led by a "[section]" header and followed by 
    "name = value" entries: 

     [ui] 
     username = Firstname Lastname <[email protected]> 
     verbose = True 

    This above entries will be referred to as "ui.username" and "ui.verbose", respectively. Please see the hgrc man page for a full description of the possible 
    configuration values: 

    - on Unix-like systems: "man hgrc" 
    - online: http://www.selenic.com/mercurial/hgrc.5.html 

Bạn có thể liệt kê các thiết lập hiện tại của bạn với hg showconfig.

+0

Thật không may tôi đã nhìn thấy rằng ... Và nó không trả lời câu hỏi. –

+1

Đồng ý rằng câu trả lời không trả lời 100% câu hỏi của bạn. Nhưng một cuộc bỏ phiếu xuống? Nào. – Paidhi

+0

Giúp tôi. Tôi sẽ bầu bạn! – user37078

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