repositorio - git remote




¿cómo puede git post-receive hook obtener el nombre del repositorio en el que se ejecuta? (3)

Podría hacer git rev-parse --show-toplevel , que le dará la ruta del directorio de nivel superior, y extraer el nombre (reponame.git es convencional para repositorios accesibles remotamente).

$PWD también podría tener la misma información, pero no estoy seguro.

Tengo un gancho de git post receive que activará una compilación en mi sistema de compilación. Necesito crear una cadena de la forma "$ repo-name + $ branch" en el script de enlace.

Puedo analizar la rama, pero ¿cómo puedo obtener el nombre del repositorio de git?

¡Gracias!


Puedes inspeccionar $ GIT_DIR, o $ GIT_WORK_TREE y obtener el nombre del repositorio desde allí.


El "nombre del repositorio" no es una idea bien definida en git, creo. Quizás lo que sería más útil es devolver whatever.git En el caso de un repositorio simple o whatever en el caso de un repositorio con un árbol de trabajo. He comprobado que este fragmento de shell Bourne trata ambos casos correctamente desde un post-receive :

if [ $(git rev-parse --is-bare-repository) = true ]
then
    REPOSITORY_BASENAME=$(basename "$PWD") 
else
    REPOSITORY_BASENAME=$(basename $(readlink -nf "$PWD"/..))
fi
echo REPOSITORY_BASENAME is $REPOSITORY_BASENAME

Actualización: si desea eliminar la extensión .git en el caso del repositorio simple, puede agregar una línea al primer caso para eliminarlo:

    REPOSITORY_BASENAME=$(basename "$PWD")
    REPOSITORY_BASENAME=${REPOSITORY_BASENAME%.git}




git