Me gustaría obtener el número de confirmaciones de mi repositorio Git, un poco como los números de revisión SVN.
El objetivo es usarlo como un número de compilación incremental único.
Actualmente me gusta eso, en Unix / Cygwin / msysGit:
git log --pretty=format:'' | wc -l
Pero siento que es un poco hack.
¿Hay una mejor manera de hacer eso? Sería genial si realmente no necesitara wc
o incluso Git, por lo que podría funcionar en un Windows desnudo. Simplemente lea un archivo o una estructura de directorio ...
git
build-process
revision
Splo
fuente
fuente
git rev-list HEAD --count
git rev-listRespuestas:
Para obtener una cuenta de confirmación para una revisión (
HEAD
,master
, una confirmación hash):Para obtener el recuento de confirmación en todas las ramas:
Recomiendo no usar esto para el identificador de compilación, pero si debe hacerlo, probablemente sea mejor usar el recuento para la rama con la que está compilando. De esa manera, la misma revisión siempre tendrá el mismo número. Si usa el conteo para todas las ramas, la actividad en otras ramas podría cambiar el número.
fuente
git shortlog | grep -E '^[ ]+\w+' | wc -l
si desea obtener el número total ygit shortlog | grep -E '^[^ ]'
si desea obtener el número de confirmaciones para cada contribuyente.wc -l
. Minimalismo FTW. Lo incorporé a mi respuesta.git log --pretty=format:'' | wc -l
enfoque dado en la pregunta original) e incorrecta: puede ver esto invirtiendo la coincidencia (git shortlog | grep -Ev '^[ ]+\w+'
) y viendo que, por ejemplo, los commits sin mensaje (es decir, "<ninguno>") no se cuentan. El usogit rev-list HEAD --count
es más sucinto y más preciso.git rev-list HEAD --count
es una mejor solución.git log --oneline | wc -l
git shortlog
es unidireccionalfuente
git rev-list HEAD --count
más que el enfoque original dado en el PO. En mis pruebas,git log --pretty=format:'' | wc -l
está apagado por uno.git log --oneline | wc -l
no está desactivado por uno (OS X 10.8.5).git rev-list HEAD --count
git rev-list
git rev-list <commit>
: Enumere las confirmaciones a las que se puede acceder siguiendo los enlaces primarios de la confirmación dada (en este caso, HEAD ).--count
: Imprima un número que indique cuántas confirmaciones se habrían enumerado y suprima todos los demás resultados.fuente
Este comando devuelve el recuento de confirmaciones agrupadas por confirmadores:
Salida:
Es posible que desee saber que el
-s
argumento es la forma de contracción de--summary
.fuente
git shortlog
por sí solo no aborda la pregunta original del número total de confirmaciones (no agrupadas por autor). Usar en sugit rev-list HEAD --count
lugar.| sort -n
demasiadoSi está buscando un identificador único y aún bastante legible para las confirmaciones, git describe podría ser lo que necesita.
fuente
No eres el primero en pensar en un "número de revisión" en Git , pero '
wc
' es bastante peligroso, ya que commit puede ser borrado o aplastado, y la historia revisitada.El "número de revisión" fue especialmente importante para Subversion ya que era necesario en caso de fusión (SVN1.5 y 1.6 han mejorado en ese frente).
Podría terminar con un enlace previo a la confirmación que incluiría un número de revisión en el comentario, con un algoritmo que no implique buscar todo el historial de una rama para determinar el número correcto.
Al bazar se le ocurrió tal algoritmo , y puede ser un buen punto de partida para lo que desea hacer.
(Como señala la respuesta de Bombe , Git tiene un algoritmo propio, basado en la última etiqueta, más el número de confirmaciones, más un poco de una clave SHA-1). Debería ver (y votar) su respuesta si funciona para usted.
Para ilustrar la idea de Aaron , también puede agregar el hash Git commit al archivo de "información" de una aplicación que está distribuyendo con su aplicación.
De esa manera, el cuadro sobre se vería así:
El número de solicitud es parte de la confirmación, pero el 'archivo de "información" de la aplicación se genera durante el proceso de empaquetado, vinculando efectivamente un número de compilación de solicitud con una identificación de revisión técnica .
fuente
U solo puede usar:
Resultado:
fuente
Una forma simple es:
oneline
asegura que.fuente
Para ponerlo en una variable, la forma más fácil es:
fuente
git rev-list
es la herramienta correcta para usar, nogit log
como dice el otro.wc -l
sólo tiene que utilizar el--count
interruptor:git rev-list --all --count
.--count
interruptor en sí.El shortlog de Git es una forma de obtener los detalles de confirmación:
Esto le dará el número de confirmaciones seguidas del nombre del autor. La opción -s elimina todos los mensajes de confirmación para cada confirmación que realizó el autor. Elimine la misma opción si desea ver también los mensajes de confirmación. La opción -n se usa para ordenar la lista completa. Espero que esto ayude.
fuente
git shortlog
por sí solo no aborda la pregunta original del número total de confirmaciones (no agrupadas por autor). Usar en sugit rev-list HEAD --count
lugar.git rev-parse - HEAD corto
fuente
Hay un buen script de ayuda que la gente de Git usa para ayudar a generar un número de versión útil basado en la descripción de Git. Muestro el script y lo explico en mi respuesta a ¿Cómo incluirías la identificación de confirmación actual en los archivos de un proyecto Git? .
fuente
Si solo está usando una rama, como master, creo que esto funcionaría muy bien:
Esto solo generará un número. Puedes alias a algo como
para hacer las cosas realmente convenientes. Para hacerlo, edite su
.git/config
archivo y agregue esto en:Esto no funcionará en Windows. No sé el equivalente de "wc" para ese sistema operativo, pero escribir una secuencia de comandos de Python para contarlo sería una solución multiplataforma.
EDITAR : Obtenga el recuento entre dos confirmaciones:
Estaba buscando una respuesta que mostrara cómo obtener el número de confirmaciones entre dos revisiones arbitrarias y no vi ninguna.
fuente
Genere un número durante la compilación y escríbalo en un archivo. Cada vez que realice un lanzamiento, confirme ese archivo con el comentario "Build 147" (o el número de compilación que sea actualmente). No confirme el archivo durante el desarrollo normal. De esta manera, puede asignar fácilmente entre números de compilación y versiones en Git.
fuente
En nuestra empresa, nos mudamos de SVN a Git. La falta de números de revisión fue un gran problema!
Haga
git svn clone
, y luego etiquete la última confirmación SVN por su número de revisión SVN:Entonces puede obtener el número de revisión con ayuda de
Este comando da algo como:
Medios: la última etiqueta es 7603, es la revisión SVN. 3 - es el recuento de confirmaciones de él. Necesitamos agregarlos.
Entonces, el número de revisión puede ser contado por este script:
fuente
El que solía usar era:
Simple pero funcionó.
fuente
Usando la sintaxis de Bash,
se ve bien para la historia puramente lineal. Si también desea tener a veces "números" de sucursales (basados en
master
), considere:Cuando se ejecuta desde un proceso de pago
master
, obtienes simplemente1234.0
o similar. Cuando se ejecuta desde el pago de una rama, obtendrá algo como1234.13
, si se han realizado 13 confirmaciones en esa rama. Obviamente, esto es útil solo en la medida en que esté basando como máximo una rama en unamaster
revisión dada .--first-parent
podría agregarse al número micro para suprimir algunas confirmaciones que surgen solo de la fusión de otras ramas, aunque probablemente sea innecesario.fuente
Puedes probar
o para enumerar todos los compromisos realizados por las personas que contribuyen en el repositorio
fuente
git config --global alias.count 'rev-list --all --count'
Si agrega esto a su configuración, puede hacer referencia al comando;
git count
fuente
Use git shortlog como este
git shortlog -sn
O cree un alias (para terminal basado en ZSH)
# show contributors by commits alias gcall="git shortlog -sn"
fuente
¿Qué tal hacer un
alias
?fuente