2012-04-04 7 views
2

Wenn Sie ein Repository in Mercurial klonen, gibt es eine Möglichkeit, einen Zielordner basierend auf dem neuesten Änderungssatz zu erstellen? Beispiel:Ich möchte einen versionierten Ordner als Ergebnis von mercurial erstellen "hg Klon <repo url>"

$ hg clone http://hg.repo.com:8000/myrepo 'myrepo-$VERSION' 

Der Ordner soll nach der Version des Projektes genannt werden, beispielsweise myrepo-1.3.

+0

Können Sie klarstellen, was Sie meinen, vielleicht mit einem Beispiel? –

Antwort

0

Wenn Sie mit der Verwendung des Changeset-Hash in Ordnung sind, dann können Sie mit

$ hg identify -i http://hg.repo.com:8000/myrepo 

beginnen die ID der Spitze changeset zu bekommen. Sie können dies wie folgt mit Klon kombinieren in einer Unix-Shell:

$ hg clone http://hg.repo.com:8000/myrepo \ 
      "myrepo-$(hg -i identify http://hg.repo.com:8000/myrepo)" 

Um es bequemer zu bedienen, ich einen Alias ​​für das schaffen würde:

[alias] 
vclone = !DEST=$(basename "$1")-$($HG identify -i "$1"); 
      echo "destination directory: $DEST"; 
      $HG clone "$1" "$DEST" 

Dies lässt Sie hg vclone foo tun bekommen ein foo-<ID> Klon.

Im Alias ​​kümmerte ich mich um die Berechnung eines geeigneten Basisnamens aus der Klon URL und um das Ziel auf die gleiche Weise zu drucken, wie hg clone normalerweise tut, wenn Sie kein explizites Ziel angeben. Schließlich habe ich darauf geachtet, die Argumente so zu zitieren, dass Sie ein Verzeichnis mit Leerzeichen im Namen klonen können. (Wenn Sie auch Zeichen wie " in Ihren Namen haben, dann haben Sie Pech ohne bessere Unterstützung für Zitate in Mercurial-Shell-Aliasen.)

0

Sie müssen es zunächst in einen temporären Ordner klonen, dann den Repo-Tipp prüfen, um die Revision oder die Eigenschaft zu sehen, die Sie in Ihrem Benennungsschema verwenden möchten, und dann den vorherigen (temporären) Speicherort umbenennen sei jetzt ... es ist nicht verfügbar in Vanille Hg meines Wissens.