Générer une liste des fichiers modifiés entre les versions hg

118

Je souhaite générer une liste des fichiers modifiés entre deux révisions dans un répertoire donné dans Mercurial.

En particulier, je ne suis pas intéressé par ce qui a changé, mais par quels fichiers ont changé dans ce répertoire.

Par exemple, en supposant qu'entre thenet otherthen, seuls 2 fichiers ont changé:

>hg hypothetical-command -r then:otherthen
foo.baz
bar.baz
>

Quelle est la commande hypothétique? J'ai essayé diff et log, mais je ne vois pas comment les convaincre de le faire: soit j'obtiens le correctif (diff), soit j'obtiens tout le repo (log).

Paul Nathan
la source

Réponses:

166
hg status --rev x:y

xet ysont les numéros de révision souhaités (ou les noms d'étiquettes ou de succursales).

Si vous utilisez le terminal dans Windows, ajoutez hg status --rev x:y> your-file.txtpour enregistrer la liste dans un fichier.

alemjerus
la source
3
Pour voir uniquement les modifications dans le répertoire actuel:hg status --rev x:y .
Utilisateur
14
Pour voir les changements dans la dernière révision: hg status --rev .^
kunigami
8
Pour obtenir uniquement la liste des noms de fichiers (et aucun caractère de préfixe indiquant le type de changement), ajoutez -n, c'esthg status --rev x:y -n
Cheetah
1
hg status --change .répertorie les fichiers modifiés dans .- même liste que hg status --rev .^mais plus directement
Metaxis
14

le statut est ce dont vous avez besoin.

Mais, selon ce que vous entendez par «entre deux révisions», vous pouvez également envisager d'utiliser la plage « x :: y » (DAG - Directed Acyclic Graph).

Compte tenu des ensembles de modifications parallèles,

1--2---4 \---3

hg status --rev 1:4 renverrait (1, 2, 3, 4), c'est-à-dire tout ce qui se trouve entre et y compris les points d'extrémité, selon la rév numérique locale . Cela pourrait (et très probablement renverra) des résultats différents dans d'autres référentiels - bien que liés!

hg status --rev 1::4renverrait (1, 2, 4), c'est-à-dire les points de terminaison, et tous les changesets qui sont les descendants de '1' ET les ancêtres de '4'.

Le dernier cas, x :: y, est généralement plus utile dans les applications du monde réel. C'est ce que vous obtenez via TortoiseHg \ Visual Diff.


> hg help revsets:

"x :: y" Une plage DAG, signifiant tous les changesets qui sont les descendants de x et les ancêtres de y, y compris x et y eux-mêmes. Si le premier point de terminaison est omis, cela équivaut à «ancêtres (y)», si le second est omis, il équivaut à «descendants (x)».

martind2112
la source
1
Vous devez peut-être inclure explicitement la commande afin que votre réponse ne dépende pas de l'autre et soit plus infaillible. Quelque chose comme "Oui, le statut est ce dont vous avez besoin. Par exemple hg status --rev x::y".
PhoneixS