2011-01-11 11 views
13

Ich suche nach einer Möglichkeit, .hgrc Konfigurationselemente festzulegen, ohne die Textdatei tatsächlich zu bearbeiten. Ich versuche, den Aufbau der hgrc über mehrere Entwickler zu standardisieren und ich würde einen Befehl wie wieKann ich Mercurial-Konfigurationsoptionen programmatisch einstellen?

hg --config ui.username=foo 

aber auch, dass die Konfigurationsänderung in die hgrc Datei speichert.

Es scheint, als sollte dies etwas sein, das direkt im vanilla hg Befehl unterstützt werden sollte, aber ich kann es nirgends finden.

Antwort

9

jemand - entweder Sie oder Mercurial - muss die Konfigurationsdatei bearbeiten, wenn Sie die Konfigurationsänderung :-)

gespeichert werden sollen Und wenn man Mercurial rufen mit

hg --config ui.username=foo 

dann sollten Sie auch

der Lage zu tun
echo '[ui]' >> ~/.hgrc 
echo 'username = foo' >> ~/.hgrc 

, die die Konfigurationsänderung sparen, egal, wie die ~/.hgrc Datei aussehen passiert (es ist in Ordnung Multi haben ple [ui] Abschnitte).

Mercurial 3.0 und höher hat the hg config --edit command, die einen Editor mit der Benutzerkonfigurationsdatei öffnet. Immer noch nicht ganz das, wonach Sie fragen, aber es macht es zumindest einfacher, die Datei interaktiv zu bearbeiten.

+3

Und wenn der Prozess, unter dem hg läuft, kein '~' oder HOME-Verzeichnis hat oder als System/Daemon-Benutzer mit einem '~' Verzeichnis läuft, können Sie nicht schreiben nach:: ~ ( – Garen

+1

@Garen: Sie können immer 'HGRCPATH' setzen, um zu überschreiben, wo Mercurial nach den Konfigurationsdateien sucht. Das sollte für Ihren Obdachlosen-Benutzer nützlich sein. –

+2

Bestimmte populäre CI-Systeme (zB TeamCity) bieten keine Möglichkeit, dies zu tun. B. überprüft hg nicht die dokumentierten systemweiten Standorte wie C: \ Mercurial, und ich konnte es nie dazu bringen, den angekündigten Registrierungsspeicherort zu lesen.Auf Linux kann es schwierig werden, wenn Ihr Build innerhalb einer Chroot stattfindet wo du vielleicht beschränkte Fähigkeit hast, Umwelteinstellungen zu bewirken, keinen homedir, etc. zu haben. Ich könnte weiter und weiter gehen, der Punkt ist, dass es so leicht ist, sie zu umgehen. IFF Mercurial würde uns einfach eine Konfigurationsdatei spezifizieren lassen Pfad in der Befehlszeile. :) – Garen

2

Diese Form:

hg --config ui.username=foo 

nichts retten. Es legt den Wert für nur den einen Lauf fest.

Sie können auch /etc/mercurial/hgrc für systemweite Einstellungen verwenden, wenn das etwas hilft.

1

Es ist eine Erweiterung, die mit diesem hilft, https://bitbucket.org/alu/hgconfig/wiki/Home

Nach installing that hgext, können Sie Dinge wie diese tun.

% 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 

Der einzige Gotcha ist dies den eingebauten Befehl config überschreibt, können Sie entweder den Code optimieren die Befehlsnamen zu ändern, oder damit leben. Zum Glück ist es wahrscheinlich egal, ob Ihr Anwendungsfall einfach ist, bestimmte Konfigurationen zu setzen und zu erhalten.