¿Qué hace git rev-parse hacer?

¿Qué hace git rev-parse hacer?

He leído la página del manual pero me ha planteado más preguntas que respuestas. Cosas como:

Elija y masajee los parameters

Masaje ? Qué significa eso?

Estoy utilizando como un resolver (a SHA1) de especificadores de revisión, como

 git rev-parse HEAD^ 

o

 git rev-parse origin/master 

¿Es este el propósito del command? Si no, ¿es incluso correcto usarlo para lograr esto?

git rev-parse es un command de plumbing auxiliar utilizado principalmente para la manipulación.

Un uso común de git rev-parse es imprimir los valores hash SHA1 dado un especificador de revisión. Además, tiene varias opciones para formatear esta salida, como --short para imprimir un SHA1 único más corto.

También hay otros casos de uso (en scripts y otras herramientas construidas sobre git) que he usado para:

  • --verify para verificar que el object especificado sea un object git válido.
  • --git-dir para mostrar la ruta abs / relativa del directory .git .
  • Verificando si estás actualmente dentro de un repository usando --is-inside-git-dir o dentro de un tree de trabajo usando --is-inside-work-tree
  • Comprobando si el repository es un uso --is-bare-repository
  • Imprimir SHA1 hashes of branches ( --branches ), tags ( --tags ) y los --tags también se pueden filtrar en function del control remoto (utilizando --remote )
  • --parse-opt para normalizar arguments en un script (tipo similar a getopt ) e imprimir una cadena de salida que se puede usar con eval

Massage solo implica que es posible convertir la información de una forma a otra, es decir, un command de transformación. Estos son algunos ejemplos rápidos en los que puedo pensar:

  • un nombre de twig o label en el SHA1 del compromiso al que apunta para que se pueda pasar a un command de plomería que solo acepta valores SHA1 para el compromiso.
  • un range de revisión A..B para git log o git diff en los arguments equivalentes para el command de plomería subyacente como B ^A

Para elaborar la etimología del nombre de command rev-parse , Git usa consistentemente el término rev en los commands de plomería como abreviatura de "revisión" y generalmente significa el hash SHA1 de 40 caracteres para un commit. El command rev-list por ejemplo, imprime una list de hashes de confirmación de 40 caracteres para una twig o lo que sea.

En este caso, el nombre podría expandirse a parse-a-commitish-to-a-full-SHA1-hash . Si bien el command tiene varias funciones auxiliares mencionadas en la respuesta de Tuxdude, su homónimo parece ser el caso de uso de transformar una reference fácil de usar como un nombre de twig o hash abreviado en el hash SHA1 de 40 caracteres inequívoco más útil para muchos progtwigs / plomería propósitos.

Sé que estaba pensando que era "retrospectiva" algo durante bastante time antes de que me diera count y tuviera el mismo problema para dar sentido a los términos "masajear" y "manipular" 🙂

De todos modos, considero que esta noción de "analizar a una revisión" es una forma satisfactoria de pensar en ello, y un concepto confiable para recordar este command cuando necesito ese tipo de cosas. Con frecuencia en scripting Git toma una reference de compromiso amigable para el usuario como input de usuario y, en general, desea que se resuelva en una reference de trabajo validada e inequívoca tan pronto como la reciba como sea posible. De lo contrario, la traducción de input y la validation tienden a proliferar a través del script.

git rev-parse También funciona para get el nombre de la twig actual usando el indicador –abbrev-ref como:

 git rev-parse --abbrev-ref HEAD