2016-10-21 2 views
1

Je cherche une commande qui me dit le nombre de fichiers engagés dans une seule demande de tirage. Je voudrais connaître le nombre de fichiers dans un seul individu de demande de traction depuis le début.comment lister toutes les demandes de pull avec le nombre de fichiers modifiés

Question expliquée dans le scénario de la vie réelle: Disons pour certains myProject quelqu'un a soulevé un pull numéro de demande 100 qui a des modifications dans les fichiers 15.

Je cherche une commande qui liste toutes les demandes de traction de 1 à 100 avec le nombre de fichiers modifiés.

S'il vous plaît répondre WRTO de Windows 7.

-à-dire

  • PR Nombre 100 a des changements dans 10 fichiers
  • PR Nombre 99 a des changements dans 5 fichiers
  • PR Nombre 98 a des changements dans 6 fichiers
  • Numéro PR 96 a changé dans 22 fichiers
  • -
  • -
  • -
  • -
  • PR Nombre 50 a des changements dans 7 fichiers
  • .
  • .
  • .
  • .
  • PR numéro 10 a des modifications dans 2 fichiers
  • .
  • .
  • .
  • .
  • PR numéro 1 a des changements dans 23 fichiers

Répondre

4

Vous pouvez obtenir une liste des demandes de traction à distance comme ceci:

git ls-remote origin 'pull/*/head' 

(en supposant que origin est le nom de votre télécommande GitHub)

pour une livraison donnée, vous pouvez obtenir une liste des fichiers modifiés comme suit:

git show --pretty=format:'' --name-only <ref> 

Vous pouvez mettre les informations ci-dessus ensemble dans un script shell:

git ls-remote origin 'pull/*/head' | awk '{print $2}' | 
while read ref; do 
    pr=$(echo $ref | cut -d/ -f3) 
    git fetch origin $ref > /dev/null 
    files_changed=$(git show --pretty=format:'' --name-only FETCH_HEAD|wc -l) 
    echo "PR number $pr has changes in $files_changed files" 
done 

qui produit une sortie sur stdout comme:

PR number 1 has changes in 4 files 
PR number 10 has changes in 1 files 
PR number 11 has changes in 4 files 
PR number 12 has changes in 7 files 
PR number 13 has changes in 5 files 

(il y a aussi la sortie sur stderr, que vous pouvez prendre en charge avec redirection d'E/S shell standard).Cela fait à peu près ce que vous voulez, avec une mise en garde majeure: les requêtes pull persistent comme refs dans votre dépôt GitHub distant même après qu'elles ont été fermées, donc cela va toujours parcourir toutes les demandes de pull disponibles, passées et présentes.

Vous pouvez contourner ce problème en mettant en cache localement les informations relatives au numéro PR le plus élevé que vous avez précédemment vérifié, puis en ignorant tous les PR inférieurs.

+0

Merci pour la réponse. J'utilise Windows 7 ne suis pas sûr de savoir comment faire fonctionner ces choses. ou comment exécuter un script shell sur windows 7. – ankitd

+0

devrais-je donner 'origin' comme chemin de dissimulation à la branche' develop'? – ankitd

+0

Je ne peux pas vous aider avec la question de Windows. Je ne suis pas sûr de comprendre votre deuxième question. que voulez-vous dire par "chemin de stockage"? Dans cette réponse, 'origin' est le nom d'un git [distant] (https://help.github.com/articles/about-remote-repositories/) (c'est-à-dire l'endroit à partir duquel vous avez cloné le dépôt). Ce n'est pas un nom de branche. – larsks