Domanda

vorrei sapere se c'è un modo per etichettare automaticamente un changeset come si è impegnata a livello locale o quando spinto al repository forno.

Vorrei che ogni changeset avere un tag con numero di versione / build. Ho intenzione di riporre i miei numeri di versione / build in un database e vorrei avere uno script recuperare questo valore dal database e aggiungere un tag per il changeset. E 'possibile richiamare automaticamente uno script per fare questo come un evento post-commit o come un evento di post-push quando spinto al repository del forno?

Sono aperto anche a tutti gli altri approcci per ottenere il tagging automatico su ogni commit / push.

È stato utile?

Soluzione

Piuttosto che creare un tag per ogni changeset, perché non provare una delle seguenti:

  • Utilizza l'hash changeset come identificatore?
  • Utilizza una stringa generata dal registro come identificatore (vedi sotto)?

Una stringa descrittiva può essere generata dal registro con questo comando:

hg log -r 1.7.2 --template '{latesttag}-{latesttagdistance}-{node}\n'

Il risultato ha la forma:

<latest tag>-<# changesets since latest tag>-<changeset hash>

Per esempio, sul mio clone locale del repo Mercurial, questo genera:

1.7.2-2-5e51254ad4d4c80669f462e310b2677f2b3c54a7

Il che mi dice che ci sono stati due commit dal tag 1.7.2 e l'hash changeset corrente è 5e51254a.

In Mercurial, ogni tag crea un nuovo changeset. Quindi, se si etichetta ogni commit, si raddoppia il numero di changeset nel repository. Si consiglia di utilizzare gli strumenti incorporati (come descritto sopra), piuttosto che cercare di ricreare la ruota.

Altri suggerimenti

  

vorrei sapere se c'è un modo per etichettare automaticamente un changeset come si è impegnata a livello locale o quando spinto al repository forno.

Si può sempre scrivere un post commit hook per farlo.

  

Vorrei che ogni changeset avere un tag con la versione / numero di build.

I tag sono utili per identificare i momenti importanti nella vostra storia commettere. Fornendo quei momenti un nome significativo che riguarda lo sviluppo prodotto simile versione 1.0, 1.3 liberatoria ecc.

Se si dovesse fare un tag ogni cambio di set poi si sarebbe solo aumentare il livello di rumore. Sarà comunque necessario per mantenere le informazioni su importanti tag alcuni dove.

Si consideri tag come meta informazioni sul cambiamento-set. Non tutti meritano la stessa importanza. Non tutti richiedono che le informazioni di meta.

Guardando tag può dare la storia significativa solo quando li si utilizza con parsimonia.

  

On ganci

Si veda:

Esempio: eseguire dopo un changegroup è stato aggiunto tramite spingere, tirare o unbundle. L'ho usato per innescare automatica costruisce.

[hooks]
changegroup.yyyy = command 

Analogamente, non v'è post-commit, ganci post-spinta

[hooks]
post-<command> =  command
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top