Je veux grep à partir de git submodule status
le hachage de validation SHA-1 de mon sous-module. Selon git submodule --help
:
statut [--cached] [--recursive] [-] [...]
Afficher l'état des sous-modules. Cela imprimera le SHA-1 du commit actuellement extrait pour chaque submodule, ainsi que le chemin du sous-module et la sortie de git describe pour le SHA-1. Chaque SHA-1 sera éventuellement précédé de - si le sous-module n'est pas initialisé, + si le sous-module actuellement extrait commit ne correspond pas au SHA-1 trouvé dans l'index du référentiel contenant et U si le sous-module a fusionner les conflits.
Le résultat ressemble donc à ceci:
input: +f1eeb6aa2a5009b5ef68b5b754499dcb3ab575d1 my-submodule (remotes/origin/HEAD) desired output: f1eeb6aa2a5009b5ef68b5b754499dcb3ab575d1 input: f1eeb6aa2a5009b5ef68b5b754499dcb3ab575d1 my-submodule (remotes/origin/HEAD) desired output: f1eeb6aa2a5009b5ef68b5b754499dcb3ab575d1
La description mentionne que chaque hachage sera éventuellement précédé d'un +
ou un -
. Je ne suis pas intéressé par les signes, et par conséquent, quel que soit le résultat que cela me donne, je veux obtenir le hachage de 40 caractères sans le préfixe.
Exemple:
f1eeb6aa2a5009b5ef68b5b754499dcb3ab575d1 my-submodule (remotes/origin/HEAD)
3 Réponses :
Vous pouvez utiliser la sortie de git ls-tree
:
Au lieu de:
git ls-tree master -- sha1collisiondetection|awk "{print $3}" 855827c583bc30645ba427885caa40c5b81764d2
, vous obtiendrez:
D:\git\git>git ls-tree master -- sha1collisiondetection 160000 commit 855827c583bc30645ba427885caa40c5b81764d2 sha1collisiondetection
Ajoutez l'option -o
à votre commande grep.
-o
: n'imprime que les parties correspondantes (non vides) d'une ligne correspondante, chacune de ces parties sur une ligne de sortie distincte
Je veux grep à partir de
git submodule status
le hachage de validation SHA-1 de mon sous-module.Pourquoi passer par les girations? Demandez simplement ce que vous voulez directement:
git rev-parse :<PATH>