2010-03-04 9 views
6

Ich habe ein Projekt, das einige Konfigurationsdateien benötigt. Ich möchte die Standardkonfiguration filse im Repository behalten. Ich möchte jedoch nicht das Flag -X für jedes Commit angeben müssen, das ich mache. Gibt es eine Standardmethode, um eine Gruppe von revisionierten Dateien so zu markieren, dass sie dauerhaft von den Commits ausgeschlossen sind?Ausschließen von Projektkonfigurationsdateien aus Commits in Mercurial

Antwort

4

Interessante Frage, ich hoffe, Sie erhalten eine bessere Antwort. Konfrontiert ähnliche Probleme, ich habe folgendes getan:

  • die Konfigurationsdateien umbenennen, so dass beispielsweise anstelle von noweb.cfg I noweb.cfg.default haben. Diese Datei wird nur selten geändert und unterliegt der Versionskontrolle.

  • Die eigentliche Konfigurationsdatei noweb.cfg kann sich häufig ändern, wird aber in die .hgignore-Datei geschrieben, so dass sie nie festgeschrieben wird.

  • Bei Bedarf habe ich ein spezielles Makefile-Ziel, das *.cfg von *.cfg.default umbaut.

Diese Lösung ist nicht ideal, weil Änderungen in den .cfg Dateien verloren gehen, wenn die .cfg.default Änderungen. Im Prinzip könnte man dieses Problem mit diff3 oder einem etwas komplizierteren Merge-Tool angehen, aber ich war noch nie energisch genug, um dorthin zu gehen.

3

Sie können den (viel geschmähte) Abschnitt defaults in Ihrer .hgrc verwenden:

[defaults] 
    commit = -X thefileyouwanttoexclude 

Wenn Sie Ihren Finger, um die bevorzugte Art und Weise, mit einem Alias ​​anstatt zu tun umschulen können:

[alias] 
    cmt = commit -X thefileyouwanttoexclude 

dann beginnen Sie mit hg cmt statt commit.

+1

Warum sagen Sie "viel verleumdet"? Ist es verpönt? Oder einfach nicht bekannt? –

+1

Es funktioniert gut, aber mpm, der Schöpfer von Mercurial, hat [defaults] veraltet. Es ändert per Design die Befehle, die auf unsichtbare Weise ausgeführt werden, sodass Skripts oder Erweiterungen, die diese Befehle verwenden, die Befehle mit Argumenten ausführen, die sie möglicherweise nicht beabsichtigen. Zum Beispiel, wenn ich "[defaults] \ npush = -f", weil ich immer -f verwenden will, ist das in Ordnung, aber wenn ein Skript verwendet "push" ohne -f, weil es sicher stellen möchte, nicht neu zu erstellen Remote-Köpfe, dieses Skript würde -fw/o benutzen, es zu wissen. Aliase sind nur sicherer und erreichen fast das gleiche, vorausgesetzt, man kann sich die Finger neu schulen. –

Verwandte Themen