Domanda

Non riesco a capire come ottenere un Mercurial put revisione id nella mia costruzione Maven (idealmente vorrei che nel manifesto dei miei vasi e la guerra).

La soluzione più vicina che ho trovato è:

mvn -DbuildNumber=`hg id -i`

Il che non sarà davvero il lavoro per Windows o il mio server Hudson. Per fortuna Hudson tag mio costruisce ma vorrei un po 'di garanzia se la build sono stati anche taggati con la Mercurial changset id.

È stato utile?

Soluzione

Date un'occhiata a questo precedente domanda e la creare un collegamento dalla risposta accettata. In sostanza, si vuole fare la stessa cosa, tranne che si desidera utilizzare il buildnumber:hgchangeset gol con Mercurial per ottenere una proprietà changeset con il contenuto di hg id -i.

Altri suggerimenti

Purtroppo, hg id -i è troppo lungo per l'uso. Ho creato uno script che calcola un numero di build accurata. Tuttavia, ci sono due eccezioni. Se non ci fosse release precedente sul ramo, allora non può essere valido. Se ci sono cambiamenti nel repository locale, allora non può essere valida. Nel mio script di build ho marchio build come "x.x.UNSTABLE" ogni volta che ciò accade.

Io uso un REL_PATTERN per raccogliere l'ultimo tag nel ramo corrente che è stato contrassegnato come un rilascio effettivo. Poi ho calcolato il numero di build tracciando il conteggio log commit da quello di rilascio + tutti i commit al ramo da quel rilascio.

#!/bin/bash
REL_PATTERN="release-[0-9]*\.[0-9]*\.[0-9]*"
BRANCH=$( hg branch )
CURR_REV=$( hg id -n )
if [  "${CURR_REV: -1}" = "+" ] ; then
  echo "ERROR: This workspace contains uncommitted code. Cannot calculate build number" >&2
  echo "UNSTABLE"
  exit 1
fi
RELEASE=$( hg log --rev="branch($BRANCH) and tag() and 1:$CURR_REV" -T "{tags} {rev}\n"|grep "${REL_PATTERN} "|tail -1 )
if [ "$RELEASE" = "" ] ; then
  echo "ERROR: Unable to locate version tag" >&2
  echo "UNSTABLE"
  exit 1
fi
RELEASE_REV=$( echo $RELEASE|cut -f 2 -d ' ' )
RELEASE_TAG=$( echo $RELEASE|cut -f 1 -d ' ' )
REVS=$( hg log -P $RELEASE_REV -b $BRANCH -T "{rev}\n"|wc -l )
BUILD=$( hg log -r1:$CURR_REV -P $RELEASE_REV -b $BRANCH -T "{rev}\n"|wc -l )
echo "BRANCH=$BRANCH" >&2
echo "CURR_REV=$CURR_REV" >&2
echo "RELEASE_REV=$RELEASE_REV" >&2
echo "RELEASE_TAG=$RELEASE_TAG" >&2
echo "BUILD=$BUILD" >&2
echo $BUILD
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top