2010-09-24 32 views

Répondre

120

Si vous voulez lister uniquement les fichiers qui ont été modifiés, alors vous devriez utiliser « commande d'état » Le tableau suivant répertorie les modifications apportées aux fichiers dans la révision REV

hg status --change REV 
+7

+1, mais l'OP veut probablement aussi l'indicateur '-n' /' --no-status'. –

+2

Pour une copie facile: 'hg status --no-status --change REV' – FriendlyGuy

+0

+1 Ceci est tellement plus facile à taper que' hg status --rev REV ~ 1: REV' que j'avais l'habitude de faire. –

15

Il suffit de retirer p de votre hg log -vpr montrera la liste des fichiers -p signifie montrer le patch. Vous pouvez également utiliser un template pour formater la sortie à votre goût.

+3

Je pense que vous aurez besoin du modèle suivant: --template 'files: {files} \ n' –

+1

Je crois que les {fichiers} fait partie du modèle -v drapeau par défaut – eskhool

+2

hg log -r. --template '{join (files, "\ n")}' to newline sépare les fichiers – Foxichu

9

Je sais que la question est pour un seul changeset, mais si vous souhaitez obtenir tous les fichiers modifiés pour une gamme de changesets, vous pouvez faire

hg status --rev 1 --rev 10 -m 
+2

Terrible mal. Les fichiers, modifiés dans la plage, sont 'hg log -r BEGIN: END --template" {files} \ n "' comme @ geoffrey-zheng et @ton ont écrit ** il y a deux ans !!! ** –

+0

Désolé pour ça. Assumé leur réponse était pour le seul changeset. –

+0

Bien que, peut-être pas le meilleur, il fonctionne;) –

1

question par TROUVE Cette recherche sur Google pour une même concept. Pour afficher tous les fichiers qui ont changé à travers une gamme de changesets, il est aussi simple que:

hg log -r [start rev]:[end rev] --template "{file_mods}{file_adds}\n" | sed -e 's/ /\n/g' | sort -d | uniq 
  1. hg log -r [start rev]:[end rev] --template "{file_mods}{file_adds}\n" vous montrera une liste de chaque fichier modifié ou ajouté dans chaque changeset, de [démarrer rev] pour [fin rev], avec les fichiers de chaque changeset sur une nouvelle ligne. Échangez {file_mods}{file_adds} avec {files} pour afficher tous les fichiers modifiés, ajoutés ou supprimés.
  2. sed -e 's/ /\n/g' se partageront tous les fichiers à afficher sur des lignes séparées et
  3. sort sera, heu, trier la liste pour vous afin que nous puissions filtrer la liste avec uniq
  4. uniq va filtrer la liste pour supprimer les doublons-fichiers changé dans plus d'une révision.
+0

Cette solution colle ensemble le dernier modifié avec le premier fichier ajouté. En outre, il ne gère pas correctement les espaces dans les noms de fichiers. Une solution '--template' sans ces inconvénients pourrait être construite en utilisant' join() 'comme suggéré par @Foxichu. –

-1

Si vous êtes comme la plupart des magasins, vous utilisez un système de billetterie pour suivre les changements. Si vous connaissez le numéro de ticket et que vous voulez trouver tous les commits associés à ce billet (en supposant que vous incluez le numéro de ticket dans le message de validation), vous pouvez utiliser:

hg log -k TICKET_NUMBER 

Cela n'affiche les toutes les révisions associées à le billet. Cependant, il ne répertorie pas les fichiers. Vous pouvez utiliser l'une des réponses ci-dessus pour obtenir la liste des fichiers associés aux révisions.

Pour le rendre plus simple si, en combinant les informations des réponses précédentes, vous pouvez effectuer les opérations suivantes pour rechercher des commits, fichiers, y compris changé:

hg log -vk TICKET_NUMBER 
+0

Généralement, une bonne idée, mais sans rapport avec la question. –

+0

Ceci est lié à la question. L'affiche a demandé comment obtenir des fichiers dans un changeset. Les modifications sont souvent liées aux tickets. Ma solution montre comment obtenir des fichiers liés aux changesets associés à un ticket. – iDimensionz

0

Je sais que cette question est une question ancienne et je Je suis surpris que personne n'ait offert un code modifié OP. J'ai eu une liste de fichiers modifiés/ajoutés/supprimés (non étiquetés qui est quoi si) en exécutant simplement hg log -v. Ou ce dont j'avais réellement besoin hg log -v -l5 pour voir les fichiers qui ont été modifiés/ajoutés/supprimés dans les 5 derniers commits (y compris ceux que je n'ai pas encore poussés au repo).

+0

"personne n'a juste offert le code modifié OP" - @Geoffrey Zheng a fait exactement cela ~ 1h après que la question ait été postée –