2011-08-03 23 views
22

estoy usando Github, y se dio cuenta de que tener un poco agradable API para acceder a información de recompra como las confirmaciones, que lo hicieron, etc.¿Es posible añadir un número de versión usando git/github

Esto sería una excelente manera de mostrar versiones anteriores del proyecto en un sitio externo, pero me preguntaba si existe una forma conocida de agregar un número de versión a la confirmación maestra.

De modo que el número de versión aumentaría automáticamente con cada confirmación maestra o puedo configurarlo manualmente.

Sé que puedo agregarlo en las notas, pero no estoy familiarizado si hay una manera de separarlo.

+0

Añadir al cometer cómo? Si solo es para mostrar, puedes contar el número de confirmaciones en el ancestro del maestro (desde el shell, 'git rev-list HEAD | wc -l' o similar) y simplemente poner el número al lado de la parte que eres exhibiendo. – jwodder

+0

Bastante justo. Pensé acerca de esto. Pero estaba pensando que podría haber un momento en el que quisiera cambiar la versión de alguna manera. En cuanto a cómo estaba pensando ... Github tiene un rastreador de problemas que cuando me comprometo puedo agregar texto como "Cierra # 1" que github buscará y cerraré el problema correspondiente.No sabía si había alguna forma secreta de hacer la "Versión 0.01" y hacer que lo buscara y agregar un número de versión a la confirmación maestra que luego se puede recuperar de la API. –

Respuesta

12

Puede usar una etiqueta para establecer un número de versión. Puede leer sobre el comando de etiqueta on the git tag man page. En el trabajo configuro nuestro servidor de compilación para incrementar automáticamente el número de versión de la compilación que luego se aplica con una etiqueta. Creo que esto satisfará tus necesidades?

+10

También debería considerar usar un patrón bien definido para sus números de versión. [Versión semántica] (http://semver.org/) es buena. – Tekkub

1

La mayoría de las personas usa git-tag para esto.

Echa un vistazo Vagrant ... desplácese por las etiquetas, verá todas las versiones.

14

Hay dos tipos de etiquetas a considerar, un número de compilación y un número de versión. Un número de versión puede ser aplicado como una etiqueta por una persona cuando el producto se envía. Esta etiqueta es histórica e identifica eventos significativos (por ejemplo, envío del producto).

El número de compilación es útil para identificar en qué compilación está en relación con algún punto de partida. La combinación de git-tag y git-describe proporciona un buen medio para generar un número de compilación que puede integrarse en una compilación. git-describe puede ubicar una etiqueta previa específica con un patrón glob. Los resultados de git describir puedan tener el formato:

tagname-[0-9]+-g[0-9a-f]+ 

Cuando el primer patrón es el número de confirmaciones de la etiqueta y el segundo patrón es el hash de la corriente cometió. Esto se puede formatear muy bien en un número de compilación. Incluir el hash (al menos los primeros 7 caracteres) hace que sea sencillo identificar el compromiso específico asociado con la compilación.

Por ejemplo, git describe podría devolver release-2.2-42-gd788e0e. Esto podría formatearse para convertirse en release-2.2 build 42 (d788e0e).

+0

42 no es el número de compilación, es solo el número de cambios desde la última etiqueta encontrada. –

3

Como se dijo anteriormente, compruebe el comando git-tag y puede combinarlo con un gancho para que se actualice automáticamente al hacer algo, por ejemplo, expulsar el maestro.

la salida http://git-scm.com/book/en/Customizing-Git-Git-Hooks

+0

El enlace tiene 404'ed. –

+1

Nuevo enlace al capítulo 7-3 del libro de git: http://git-scm.com/book/es/Customizing-Git-Git-Hooks – Simon

+0

Gracias, voy a editar. :) –

3

estoy usando esto:

function git_func { 
    GITBIN=/usr/bin/git 
    if [[ $1 == "commit" ]] && [[ "$#" -ne 1 ]] 
    then 
     GIT_VERSION=`$GITBIN rev-list HEAD | wc -l` 
     let GIT_VERSION+=1 
     perl -e "s/(\d+\.\d+\.)\d+/\${1}$GIT_VERSION/;" -pi.save config.json 
     rm config.json.save 
    fi 

    GITCMD="$GITBIN " 
    for var in "[email protected]" 
    do 
     GITCMD="$GITCMD \"$var\"" 
    done 
    eval $GITCMD 
} 


alias git='git_func' 

config.json contiene esto:

"version": "0.1.44" 
Cuestiones relacionadas