Frage

Normalerweise würde ich Erweiterungen aktivieren, indem Sie die folgenden .hg/hgrc fügte hinzu:

[extensions]
hgext.win32text=
[encode]
** = cleverencode:
[decode]
** = cleverdecode:

Allerdings möchte ich diese Konfiguration versioniert werden, das heißt ein Teil des Repository, so dass es für alle anderen aktiviert ist (Mitarbeiter, bauen Maschinen), um das Repository zu klonen. Beachten Sie, dass whomsoever Klone sollte das Repository nicht dazu verpflichtet werden, alles diese Erweiterungen zu ermöglichen.

Es erscheint es nicht möglich, von der Dokumentation , aber weiß jemand, jede ordentlich Tricks, die mir hier helfen?

War es hilfreich?

Lösung

Sie wollen Mercurial etwas automatisch tun, wenn Sie ein Repo (aktualisieren Sie die Haken oder config) klonen. Dokumentation sagt es nicht möglich ist, und gibt einige sehr gute Gründe:

Hooks do not propagate

In Mercurial, hooks are not revision controlled, and do not propagate when you clone,
or pull from, a repository. The reason for this is simple: a hook is a completely    
arbitrary piece of executable code. It runs under your user identity, with your 
privilege level, on your machine. No comments

It would be extremely reckless for any distributed revision control system to 
implement revision-controlled hooks, as this would offer an easily exploitable way to 
subvert the accounts of users of the revision control system. No comments

So klar, mercurial selbst wird nicht Ihr Problem lösen. Sie klarstellen, dass Sie nichts anderes als Mercurial wollen Ihr Problem zu lösen, so lautet die Antwort: was Sie fordern nicht möglich ist,

.

Der einzige Weg, um Ihr Problem zu lösen, besteht darin, dass alle Ihre Benutzer ausführen müssen / installieren mindestens einmal ein bestimmtes Skript, das die Aktionen ausführen, die Sie wollen, so etwas wie die richtigen Haken installieren.

Wenn Sie über diese klug sein:

  • erstellen eine einmalige Skript, das ausgeführt wird einen Haken installieren Sie die richtige Konfiguration in die .hg oder den Benutzer zu kopieren
  • stellen Sie sicher, dass der Haken, einmal installiert ist, können Sie das Skript aktualisieren Config-Updates für die Benutzer zu verteilen
  • machen den Haken einige spezielle hinzufügen Markierung Nachrichten zu begehen
  • verweigern auf dem zentralen Repository verpflichten, dass sie die spezielle Nachricht nicht tragen

Ein bisschen kompliziert, aber das ist die nächste, die ich Ihren Anforderungen vorstellen kann:

  • Benutzer ausgeführt, sobald ein Skript und sie vergessen,
  • können Sie sicherstellen, dass, wenn die es nicht laufen, können sie zu Ihrem zentralen Repo nicht begehen

Andere Tipps

Die aktuelle Entwicklerversion von Mercurial (veröffentlicht als Mercurial 1.3 am 1. Juli wird) unterstützt eine %include Richtlinie in ihren Konfigurationsdateien.

Das bedeutet, dass man die Leute fragen stellen

%include ../common-hgrc

in .hg/hgrc. Nachdem das getan, können Sie dann ihre effektiv durch Begehen Änderungen Mercurial Einstellungen steuern common-hgrc. Als sie die Änderung zieht, werden die neuen Einstellungen wirksam werden.

Zu beachten ist, dass dies gefährlich ist: jeder, der Sie Änderungen in Ihrem Repository ziehen bekommen können nun beliebige Haken in common-hgrc einfügen können und Sie werden sie auf der nächsten Mercurial Befehl (auch eine „sichere“ Befehlszeile hg status) auszuführen.

Sie könnten in der Lage, dieses Problem über die ProjRC Erweiterung zu lösen.

„Diese Erweiterung macht für Mercurial suchen und analysieren .hg / projrc für zusätzliche Konfigurationseinstellungen. Die Datei wird auf Klon übertragen und auf Zug (aber nie auf push)“

Was ist eine Verknüpfung von .hg/hgrc Erstellen zu beispielsweise customhg/hgrc so dass es versioniert wird. Dann müssen Sie einige Haken erstellen, kopiert sie zurück zu .hg/hgrc - z.B. nach jedem Update.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top