2016-05-18 3 views
1

J'essaie de trouver un moyen d'obtenir git pour afficher la liste des changements de "nom seulement" entre 2 points de validation (qu'il s'agisse de tags ou de branches) pour un sous-module spécifique.Comment montrer git diff --name-seulement entre 2 branches pour un module spécifique (ou plusieurs modules) dans un repo

Je peux le faire facilement en utilisant git diff pour une prise en pension unique en procédant comme suit:

git diff --name-only commitPointA..commitPointB 

(Voici another answer qui parle de ce à titre de référence)

Mais cette liste tous les changements de fichiers pour le référentiel que je suis la commande à l'intérieur.

Comment puis-je affiner la liste des modifications pour n'afficher que les modifications apportées à un certain module ou à une collection de modules dans le même référentiel?

+0

Définir "module". Git connaît les "fichiers" conservés dans les "arbres"; Si vous voulez différencier un fichier ou un arbre spécifique, ajoutez-le simplement à la commande 'git diff' (voir l'argument' - '). – torek

+0

@torek Je voulais dire un module tel que décrit dans http://stackoverflow.com/tags/module/info. Je vais jeter un oeil à l'argument du chemin, merci. – Jeremy

+0

Cette forme ou ce style de module particulier (traitant un arbre comme le conteneur de la collection) est une façon de faire des modules, mais pas la seule. (Bien que dans le mauvais vieux temps, nous avions tendance à avoir des mots alternatifs pour les ensembles de fichiers qui constituaient des groupes logiques.) – torek

Répondre

1

@torek m'a pointé dans la bonne direction en suggérant que je regarde l'argument <path>. Voici ce que j'ai fait pour obtenir une liste raffinée par module.

Changements au sein d'un seul module ...

git diff --name-only commitPointA..commitPointB ./moduleA 

Changements au sein de plusieurs modules ...

git diff --name-only commitPointA..commitPointB ./moduleA ./moduleB 

C'est probablement utile de préciser ici que le nom du module représente simplement le nom du dossier racine pour ce module au sein du repo.

C'est tout, simple à la fin.


Une alternative à la spécification par le chemin est juste redirigez la sortie vers grep et spécifier quelque chose que vous savez que vous êtes vraiment intéressé comme un nom de module (je sais que cela semble évident).

Voici un exemple simple:

git diff --name-only commitPointA..commitPointB | grep 'module-name' 

Vous pouvez étendre cela à rechercher des valeurs multiples aussi bien, la caisse juste le grep man page pour plus d'informations.