Si vous souhaitez tout simplement obtenir le hash du dernier commit de modifier un ensemble de fichiers (et que vous voulez éviter awk
), vous pouvez utiliser:
git log -n 1 --pretty=format:%h -- <path>
Cela peut être utile pour obtenir la validation de hachage pour la suite de l'utilisation avec des git describe
.
Par exemple (dans le cas où c'est utile pour n'importe qui)...
J'ai créer un courant id de version en considérant le dernier commit pour modifier n'importe quel fichier source (en supposant que vous marquez des versions avec des balises comme l' mycode-1.2.1
):
COMMIT=$(git log -n 1 --pretty=format:%h -- *.c *.h)
if VN=$(git describe --always --abbrev=5 --match "mycode-*" $COMMIT 2>/dev/null) &&
case "$VN" in
mycode-*)
git update-index -q --refresh
test -z "$(git diff-index --name-only HEAD *.c *.h)" ||
VN="$VN-mod" ;;
*) VN="mycode-unknown-g$VN" ;;
esac
then
continue
else
VN="mycode-unknown"
fi
Ce produit ids, comme:
-
mycode-1.2.1
- lorsque l'état actuel de la source des fichiers correspond à une tagged version
-
mycode-1.2.1-g3k7s2
- lorsque l'état actuel de la source des fichiers correspond à engager à la suite d'un tagged version
-
mycode-1.2.1-g3k7s2-mod
- lorsque l'état actuel de la source des fichiers ont été modifiés depuis le dernier commit à la suite d'un tagged version
-
mycode-unknown
- quand il n'y a pas encore de version tag créé