2011-01-11 17 views
13

Sto cercando un modo per impostare gli elementi di configurazione .hgrc senza effettivamente modificare il file di testo. Sto cercando di standardizzare la configurazione del hgrc tra più sviluppatori e vorrei un comando comePosso impostare programmaticamente le opzioni di configurazione di Mercurial?

hg --config ui.username=foo 

, ma che consente di risparmiare anche che il cambiamento di configurazione nel file hgrc.

Sembra che questo dovrebbe essere qualcosa che dovrebbe essere supportato direttamente nel comando van hg, ma non riesco a trovarlo da nessuna parte.

risposta

9

Qualcuno - o voi o Mercurial - sarà necessario modificare il file di configurazione se si desidera il cambiamento di configurazione da salvare :-)

E se si può chiamare Mercurial con

hg --config ui.username=foo 

allora si dovrebbe anche essere in grado di fare

echo '[ui]' >> ~/.hgrc 
echo 'username = foo' >> ~/.hgrc 

che salverà il cambiamento di configurazione, non importa quanto il file ~/.hgrc accade a guardare come (è bene avere più sezioni [ui]).

Mercurial 3.0 e versioni successive ha the hg config --edit command che apre un editor con il file di configurazione dell'utente. Ancora non è proprio quello che stai chiedendo, ma almeno questo rende più facile modificare il file in modo interattivo.

+3

E se il processo in cui hg è in esecuzione non ha '~' o HOME dir, o è in esecuzione come utente di sistema/demone con una cartella '~' non è possibile scrivere su:: ~ ( – Garen

+1

@Garen: Puoi sempre impostare 'HGRCPATH' per sovrascrivere dove Mercurial cerca i file di configurazione.Questo dovrebbe essere utile per il tuo utente demone senza fissa dimora –

+2

Alcuni sistemi CI popolari (ad es. TeamCity) non offrono alcun modo per farlo. -per esempio hg non controlla le posizioni documentate del sistema come C: \ Mercurial, e non sono mai riuscito a farlo leggere la posizione del registro pubblicizzata.Per Linux può diventare difficile quando la compilazione avviene all'interno di un chroot dove potreste avere una capacità limitata di effettuare le impostazioni dell'ambiente, non avere homedir, ecc. Potrei andare avanti e avanti, il punto è che sarebbe così facile aggirarle. IFF Mercurial vorrebbe semplicemente specificare un file di configurazione percorso sulla riga di comando. :) – Garen

2

Questa forma:

hg --config ui.username=foo 

non salva nulla. Imposta il valore per la sola corsa.

Inoltre, è possibile utilizzare /etc/mercurial/hgrc per le impostazioni di sistema se questo aiuta qualcosa.

1

V'è un'estensione che aiuta con questo, https://bitbucket.org/alu/hgconfig/wiki/Home

Dopo installing that hgext, si possono fare cose come questa.

% hg showconfig paths 
paths.default=ssh://[email protected]/alu/hgconfig 
% hg config paths.upstream $(hg showconfig paths.default) 
% hg config paths.default $(hg showconfig paths.default | sed 's|/alu/|/nassrat/|') 
% hg showconfig paths 
paths.default=ssh://[email protected]/nassrat/hgconfig 
paths.upstream=ssh://[email protected]/alu/hgconfig 

L'unica Gotcha è questo sostituisce il comando incorporato di configurazione, è possibile modificare il codice per modificare il nome del comando, o vivere con essa. Fortunatamente, probabilmente non sarebbe importante se il tuo caso d'uso fosse semplicemente impostare e ottenere configurazioni specifiche.

Problemi correlati