2009-09-12 15 views
5

J'ai un petit projet privé de code Google. Pour un SCM, j'utilise Mercurial. Et pour la construction locale, je voudrais utiliser nant.Comment utiliser mercurial à partir de nant

Donc, en gros:

  1. Je voudrais télécharger mes fichiers sources à partir d'un dépôt Mercurial connu en utilisant une tâche nante
  2. Je voudrais en quelque sorte d'obtenir le numéro de révision du référentiel afin que je puisse assembler Un bon petit numéro de version d'assemblage

Le script de construction ne sera pas utilisé pour l'intégration continue, mais seulement pour les versions nocturnes et les versions de production.

Merci pour l'aide

Répondre

4

Je ne sais pas Nant, mais en (vrai) fourmi, nous suffit d'utiliser la tâche <exec> d'invoquer le binaire hg. Dépendant propre que vous souhaitez commencer vous pouvez clone ou simplement pull et l'exécution hg id -i vous obtient le numéro de révision proprement. Une autre chose à considérer est d'utiliser les liens d'archive sur l'interface web distante (essentiellement la commande d'archive hg via HTTP) et d'utiliser simplement wget (pas la tâche nant équivalente) pour extraire l'archive tip, qui a un lien cohérent facile, puis Vous pouvez obtenir l'ID de révision depuis le fichier hg_archival.txt de l'archive.

+0

Cela fonctionnerait mais en même temps impliquerait que l'utilisateur final du script devrait avoir installé localement.J'espérais honnêtement que certaines extensions de taks étaient disponibles – Dejan

+0

Je ne pense pas que vous trouviez un code non-mercurial qui parle actuellement du protocole mercurial, et c'est en python. Vous pouvez donc essayer de l'exécuter dans IronPython, mais à ce stade, vous parlez autant de travail qu'une installation mercuriale. Je vais réécrire ma requête basée dans une réponse séparée. –

2

Puisque vous êtes à la recherche du code NANT plutôt que d'appeler au large du binaire mercurial, je vous suggère simplement utiliser la tâche <get> de Nant pour tirer vers le bas la pointe de votre pension comme celui-ci:

<get src="http://bitbucket.org/tortoisehg/stable/get/tip.zip" dest="latest.zip" /> 
<unzip zipfile="latest.zip" todir="latest"/> 

et à l'intérieur il devrait y avoir un fichier .hg_archival.txt qui contient quelque chose comme ceci:

repo: bac32db38e52fd49acb62b94730a55f4f4b0cdee 
node: 61482ea34fd0b9650e738eaebb2fe352c2f6315a 

à partir de laquelle vous pouvez obtenir un Hached adapté à une utilisation dans l'image de marque d'une construction. Malheureusement, je ne trouve pas les liens de téléchargement d'archives sur google code, mais ils sont assez standard dans les interfaces web mercurial (et bitbucket), donc j'imagine qu'ils sont quelque part.

0

Alors que cela n'aurait pas été applicable à la personne qui posait la question, je devais faire quelque chose de similaire ... mais j'avais besoin de la révision numérique (oui, je sais que le numéro est spécifique au référentiel, mais contexte où le script était utilisé c'était bien). J'ai également eu aucun problème avec l'appel hg.exe, parce que partout où cela pourrait être exécuté à partir de hg.exe est disponible.

Le script NAnt j'ai finalement fini avec était le suivant:

<exec program="hg.exe" output="CurrentMercurialRevision.txt"> 
    <arg value="id" /> 
    <arg value="-n" /> 
</exec> 
<loadfile file="CurrentMercurialRevision.txt" property="buildNumber" /> 

Malheureusement, il ne semble pas être une façon NUnit de lire directement dans une propriété, donc je devais utiliser le texte intermédiaire fichier et le traiter dans une propriété en utilisant le fichier de chargement. J'ai aussi dû ajouter "CurrentMercurialRevision.txt" au fichier .hgignore ... mais si vous connaissez Mercurial, vous l'avez probablement déjà deviné. ;-)

Espérons que cela aidera quelqu'un.

+1

Je suis tombé sur ce fil lors de la recherche d'une de mes questions. Il y a une communauté de msbuild cool écrite spécialement pour "Mercurial" [ici] (http://msbuildhg.codeplex.com/). En utilisant cela, vous n'avez pas besoin d'utiliser un fichier intermédiaire pour cette tâche. –