2011-01-11 20 views
13

Szukam sposobu na ustawienie elementów konfiguracyjnych .hgrc bez konieczności edytowania pliku tekstowego. Staram się standaryzować konfigurację hgrc w wielu deweloperów i chciałbym polecenia jakCzy mogę programowo skonfigurować opcje konfiguracji Mercurial?

hg --config ui.username=foo 

ale które również zapisuje tę zmianę do pliku konfiguracyjnego hgrc.

Wygląda na to, że powinno to być coś, co powinno być obsługiwane bezpośrednio w poleceniu vanilla hg, ale nie mogę go nigdzie znaleźć.

Odpowiedz

9

Ktoś - ty lub Mercurial - będzie musiał zmodyfikować plik konfiguracyjny jeśli chcesz zmiana config zostać zapisany :-)

I jeśli można nazwać Mercurial z

hg --config ui.username=foo 

następnie należy również być w stanie zrobić

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

który będzie zapisać zmiany config, nie ma znaczenia, w jaki sposób plik ~/.hgrc dzieje się wyglądać (to jest w porządku, aby mieć wielo sekcja [ui]).

Mercurial 3.0 i nowsze wersje mają the hg config --edit command, który otwiera edytor z plikiem konfiguracyjnym użytkownika. Wciąż nie do końca to, o co prosisz, ale przynajmniej to ułatwia interaktywną edycję pliku.

+3

Jeśli proces, w którym działa hg, nie ma katalogu "~" lub katalogu HOME, lub działa jako użytkownik systemu/demona z katalogiem "~", nie można pisać do:: ~ ( – Garen

+1

@Garen: Zawsze możesz ustawić 'HGRCPATH' aby zastąpić gdzie szuka plików konfiguracyjnych Mercurial To powinno być przydatne dla twojego demona bezdomnych –

+2

Niektóre popularne systemy CI (np. TeamCity) nie mogą tego zrobić. - na przykład hg nie sprawdza udokumentowanych lokalizacji obejmujących cały system, takich jak C: \ Mercurial, i nigdy nie byłem w stanie go odczytać z anonsowanej lokalizacji rejestru.Od Linuksa może stać się trudny, gdy twoja kompilacja wystąpi wewnątrz chroota gdzie mogłeś mieć ograniczoną możliwość wpływania na ustawienia środowiska, nie masz homediru itd. Mógłbym iść naprzód, a mianowicie, że tak łatwo byłoby się nimi ominąć IFF Mercurial pozwoliłby nam tylko określić plik konfiguracyjny ścieżka w wierszu poleceń. :) – Garen

2

Ta forma:

hg --config ui.username=foo 

nie zapisuje niczego. Ustawia wartość tylko dla jednego uruchomienia.

Możesz także użyć ustawienia /etc/mercurial/hgrc dla ustawień całego systemu, jeśli to pomaga.

1

Jest to rozszerzenie, które pomaga w tym, https://bitbucket.org/alu/hgconfig/wiki/Home

Po installing that hgext można robić takie rzeczy.

% 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 

Jedynym haczyka jest to nadpisuje wbudowanego polecenia konfiguracyjnego, można dostosować kod, aby zmienić nazwę polecenia lub z tym żyć. Na szczęście prawdopodobnie nie będzie miało znaczenia, czy twój przypadek użycia wystarczy po prostu ustawić i uzyskać konkretne konfiguracje.

Powiązane problemy