He estado usando git de flujo para un par de meses y ha funcionado muy bien. Me gustaría automatizar la protuberancia de la versión de la operación».

El proyecto de PHP y la footer.php tiene un token para reemplazar la versión actual de la etiqueta. Estoy seguro de que con algunos awk ing de git log y el archivo PHP que todo debería funcionar, pero supongo que alguien ha hecho esto antes…

Alguna idea?

InformationsquelleAutor spdaly | 2012-04-19

8 Comentarios

  1. 15

    Usted podría utilizar el semver joya, lo que añade un archivo .semver a la raíz de tu repositorio git. Semántica de los números de versión son una recomendación para tener estructurado/coherente/significativo de los números de versión, la piedra hace que sea fácil de implementar.

    Así, todo lo que tendríamos que hacer es agregar:

    semver inc major|minor|patch

    en su flujo de trabajo (de forma manual o mediante scripts), de modo que el .semver se actualiza durante un lanzamiento.

    Si usted no desea que el rubí de dependencia, semver es bastante simple, así que un poco de sed de experimentación es probable que obtener una solución de trabajo.

  2. 12

    También hay bumpversion (más info en https://github.com/peritus/bumpversion) que pretende sustituir a la sed de magia.

    Instalar con pip install bumpversion, decir que los archivos que contienen el número de versión y si desea una confirmación y la etiqueta. También es altamente configurable (con semántica de control de versiones como por defecto), así que usted puede añadir un declarativa archivo de configuración de cómo bump versiones para este proyecto de software para su vcs de elección y de otros que también pueden golpe versiones.

    • Esta es una interesante herramienta. Gracias
    • bumpversion parece haber sido abandonado por el desarrollador original, pero no es un horquilla que es más activamente mantenido y agrega algunas características tales como anotated etiquetas.
  3. 10

    En mi bifurcada proyecto de git-flow yo implementada en la realidad de los ganchos y los filtros, una petición que muchos hicieron en el proyecto original, pero hasta el momento no se ha implementado. Con los que se puede actualizar automáticamente los números de versión en el proyecto.
    La horquilla de proyecto se puede encontrar aquí
    https://github.com/petervanderdoes/gitflow

    Para algunos scripts de Bash en la versión chocar usted puede comprobar fuera de los dos fundamentos que he creado
    https://gist.github.com/2877083 o
    https://gist.github.com/2878492

  4. 3

    Semver indica la página web:

    Dado un número de versión MAYOR.MENOR de edad.PARCHE, incremento de la:

    • Versión PRINCIPAL cuando usted hace incompatible cambios en el API,
    • Versión MENOR al agregar la funcionalidad compatible manera, y
    • Versión del PARCHE cuando usted hace compatible correcciones de errores.

    Etiquetas adicionales para el pre-lanzamiento y generar los metadatos están disponibles como
    las extensiones para los PRINCIPALES.MENOR de edad.Formato de REVISIÓN.

    Gitflow utiliza una convención de nomenclatura para las sucursales, correcciones de errores viven en las ramas con el prefijo hotfix/ y las nuevas funciones están señaladas con feature/.

    Cuando cualquiera de las sucursales de este tipo se combinan en una rama release esto hace que el PATCH a aumentar. Si una característica se ha fusionado el MENOR campo debe ser mayor.

    Dado una revisión concreta, usted debería ser capaz de entender de que si cualquiera de las ramas se han fusionado y el campo de golpe.

    La parte difícil es calcular el cambio de hora. En el pasado he considerado la posibilidad de utilizar la reflexión sobre el código compilado para determinar si la API ha cambiado, sin embargo, me imagino que sería mucho más fácil tal vez sólo tiene que utilizar una palabra clave en los mensajes de confirmación para designar los cambios recientes.

  5. 1

    Aquí está el código que uso para incrementar el número de versión en constantes.h:

    constants='../Include/constants.h'
    
    # Get the current build number
    currentbuild=`grep PRODUCT_BUILD $constants|sed 's/[^0-9]//g'`
    currentversion=`grep PRODUCT_VERSION $constants|sed 's/[^.0-9]//g'`
    
    echo "currentbuild=$currentbuild and currentversion=$currentversion"
    newver=$((1+$currentbuild))
    
    # Update the build number on-disk:
    cp $constants /tmp/constants
    if sed -e "/PRODUCT_BUILD/s/[0-9][0-9]*/${newver}/" < /tmp/constants > $constants
    then    
        echo "Updated build number from $currentversion.$currentbuild to $currentversion.$newver."
        cd ../Include
        # Check it into version control
        svn ci -m "updated build number to ${currentversion}.${newver} for $buildid in $buildroot"
    else
        echo "There was a problem updating $constants to build $newver"
    fi    
  6. 0

    Si entiendo su ‘golpe versión de’ operación correctamente, entonces usted significar aumentar el número de versión en un número arbitrario de archivos una vez que se comienza una liberación con git flow release start x.x.x, donde la versión también está representado en el git tag.

    Ya que el original git-flow de Driessen fue suspendido, el sucesor no oficial parece ser Peter van der Does gitflow-avh (https://github.com/petervanderdoes/gitflow-avh/), que contiene un gran número de git flujo de ganchos. Ver https://github.com/petervanderdoes/gitflow-avh/tree/develop/hooks para obtener una lista completa.

    Hice la versión golpes en post-flow-release-start con este pequeño script:

    VERSION=$1
    
    # Get rid of version prefix
    STRIPPED_VERSION=`echo $VERSION | cut -d'v' -f 2`
    sed -i '' -E "s/^([ |#|[:alpha:]]*)\[.*\]$/[$STRIPPED_VERSION]/1" ./README.md
    sed -i '' -E "s/^([\t| ]*\"version\": )\".*\"/\"$STRIPPED_VERSION\"/1" ./package.json
    git commit -a -m "version $STRIPPED_VERSION"
    
    exit 0

    Es un poco rígido, porque los dos archivos están codificados (LÉAME.md y el paquete.json). Usted puede hacer una búsqueda para la versión antigua de la última etiqueta y, a continuación, repleace para todos configurado los archivos dentro de un bucle.

    Advertencias:

    OSX requiere un sufijo para sed -i, puede utilizar vacía citas, aunque. También, la ampliación de regex param para sed se denominan de manera diferente en Linux.

  7. 0

    Puede automatizar la versión de golpes en cada commit.
    Aquí usted puede encontrar que se haga uso de la secuencia de comandos de shell y la incorporada en el git de gancho:
    https://github.com/addonszz/Galileo/tree/develop/githooks

    El shell scrip para ejecutar es:
    https://github.com/evandrocoan/.versioning/blob/master/scripts/updateVersion.sh

    El problema acerca de automatizar cada cosa es cómo saber si está actualizando el Mayor, Menor, Parche o Construir, cuando usted está cometiendo todo.

    Quiero decir, para construir podría automatizar cada rama de desarrollo cometer, como se ha hecho en el enlace de arriba.

    El parche, usted puede conectar cada git flujo de revisión final. El enlace de arriba sólo le falta el enganche de la revisión de finalizar el incremento de la versión del parche ejecutando:

    ./githooks/updateVersion.sh patch

    Pero los menores y mayores no hay ningún truco, se hace todo dentro de la función de acabado de liberación.

    Obs

    He encontrado una solución para enganchar el pre-revisión-se compromete, en la cuestión:
    Cómo pre-gancho de la gitflow revisión acabado?

Dejar respuesta

Please enter your comment!
Please enter your name here