17 Stimmen

Kann ich die Konfigurationsoptionen von Mercurial programmatisch einstellen?

Ich suche nach einer Möglichkeit, die .hgrc Konfigurationselemente, ohne die Textdatei zu bearbeiten. Ich versuche, die Einrichtung des Systems zu standardisieren. hgrc über mehrere Entwickler hinweg und ich hätte gerne einen Befehl wie

hg --config ui.username=foo

sondern speichert diese Konfigurationsänderung auch in der hgrc Datei.

Es scheint, wie dies etwas, das direkt in der Vanille hg Befehl unterstützt werden sollte, aber ich kann es nirgends finden.

10voto

Martin Geisler Punkte 71257

Jemand - entweder Sie oder Mercurial - muss die Konfigurationsdatei bearbeiten, wenn Sie möchten, dass die Konfigurationsänderung gespeichert wird :-)

Und wenn Sie Mercurial mit aufrufen können

hg --config ui.username=foo

dann sollten Sie auch in der Lage sein zu tun

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

was die Konfigurationsänderung speichert, egal wie die ~/.hgrc Datei aussieht (es ist in Ordnung, mehrere [ui] Sektionen zu haben).

Mercurial 3.0 und später hat den Befehl hg config --edit, der einen Editor mit der Benutzerkonfigurationsdatei öffnet. Immer noch nicht ganz das, was Sie suchen, aber zumindest erleichtert dies das interaktive Bearbeiten der Datei.

3 Stimmen

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

1 Stimmen

@Garen: Du kannst immer HGRCPATH setzen, um anzugeben, wo Mercurial nach den Konfigurationsdateien suchen soll. Das sollte praktisch für deinen obdachlosen Daemon-Benutzer sein.

2 Stimmen

Bestimmte beliebte CI-Systeme (z. B. TeamCity) bieten keine Möglichkeit, dies zu tun. Die Dokumentation ist auch schlicht falsch - zum Beispiel überprüft hg nicht die dokumentierten systemweiten Speicherorte wie C:\Mercurial, und es ist mir nie gelungen, es zu lesen den beworbenen Registrierungsort. Auf Linux kann es schwierig werden, wenn Ihr Build innerhalb eines Chroot stattfindet, wo Sie möglicherweise nur begrenzte Möglichkeiten haben, Umgebungseinstellungen zu beeinflussen, kein homedir haben, etc. Ich könnte stundenlang weitermachen, der Punkt ist, dass es so einfach wäre, sie zu umgehen, wenn Mercurial uns nur den Befehlszeilenpfad zum Konfigurationsdatei angeben ließe. :)

1voto

Ry4an Brase Punkte 77642

Dieses Formular:

hg --config ui.username=foo

speichert nichts. Es setzt den Wert nur für einen Lauf.

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

1voto

Pykler Punkte 14115

Es gibt eine Erweiterung, die dabei hilft, https://bitbucket.org/alu/hgconfig/wiki/Home

Nachdem du diese Erweiterung installiert hast, kannst du Dinge wie diese tun.

% hg showconfig paths
paths.default=ssh://hg@bitbucket.org/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://hg@bitbucket.org/nassrat/hgconfig
paths.upstream=ssh://hg@bitbucket.org/alu/hgconfig

Der einzige Haken dabei ist, dass dies den integrierten Konfigurationsbefehl überschreibt. Du kannst entweder den Code anpassen, um den Befehlsnamen zu ändern, oder damit leben. Glücklicherweise spielt es wahrscheinlich keine Rolle, wenn dein Anwendungsfall einfach darin besteht, spezifische Konfigurationen zu setzen und abzurufen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X