2 votes

Comment boucler sur l'état git en utilisant un script

J'ai besoin d'aide avec ceci :

Je veux boucler le code de statut git sans code de statut ou avec le code de statut ensemble dans une ligne ; j'utilise le code ci-dessous :

# file.sh
files=$(git status --porcelain)
for file in $files; do
    echo $file
done

# SORTIE
M
exemple_dossier/fichier_exemple
M
exemple_dossier_1/fichier_exemple_1
M
exemple_dossier_2/fichier_exemple_2
....

Le problème est que le code de statut s'affiche toujours, je dois supprimer le code de statut ou le mettre ensemble comme ceci :

# LIGNES ATTENDUES
M exemple_dossier/fichier_exemple
M exemple_dossier_1/fichier_exemple_1
# OU
exemple_dossier/fichier_exemple
exemple_dossier_1/fichier_exemple_1

Mon objectif est de produire une entrée en utilisant la console, comme ceci :

files=$(git status --porcelain)
for file in $files; do
    echo $file
    git add $file
    read -p "entrez un commentaire : " commentaires
    git commit -m "${commentaires}"
done

Le code ci-dessus fonctionne, mais le code de statut reçoit également le commentaire, et je dois le supprimer ou le mettre sur une ligne chaque fois qu'une ligne est modifiée.

cordialement.

3voto

ElpieKay Points 7502

--porcelain affiche le résultat au format court.

En format court, l'état de chaque chemin est indiqué sous l'une de ces formes

XY CHEMIN
XY ORIG_CHEMIN -> CHEMIN

Le 2ème format se produit lorsque ORIG_CHEMIN est renommé en CHEMIN. Utilisez awk pour obtenir CHEMIN.

fichiers=$(git status --porcelain | awk '{print $NF}')
pour fichier in $fichiers; faire
    echo $fichier
    git add $fichier
    read -p "entrer un commentaire: " commentaires
    git commit -m "${commentaires}" -- ${fichier}
fait

2voto

bk2204 Points 6334

Vous voulez écrire ceci:

#!/bin/sh

files=$(git status --porcelain | cut -b4-)
for file in $files; do
    echo $file
    git add $file
    read -p "entrez un commentaire : " commentaires
    git commit -m "${commentaires}"
done

Le cut -b4- supprime la partie statut de la sortie.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X