Reputation: 40319
I want to generate a list of which files changed between two revisions in a given directory in Mercurial.
In particular, I am not interested in what changed, but which files changed in that directory.
E.g., supposing that between then
and otherthen
, only 2 files changed:
>hg hypothetical-command -r then:otherthen
foo.baz
bar.baz
>
What's the hypothetical command? I've tried diff and log, but I can't see how to convince them to do it: either I get the patch(diff), or I get the whole repo(log).
Upvotes: 123
Views: 36430
Reputation: 191
status is what you need.
But, depending what you mean by "between two revisions", you might also consider using the "x::y" (DAG - Directed Acyclic Graph) range.
Given parallel changesets,
1--2---4
\---3
hg status --rev 1:4
would return (1,2,3,4),
i.e. anything between and including the endpoints, according to the local, numerical rev. This might (and most probably will) return different results in other - though related - repositories!
hg status --rev 1::4
would return (1,2,4),
i.e. the endpoints, and all changesets which are descendants of '1' AND ancestors of '4'.
The latter case, x::y, is usually more useful in real-world applications. This is what you get via TortoiseHg\Visual Diff.
>hg help revsets:
"x::y" A DAG range, meaning all changesets that are descendants of x and ancestors of y, including x and y themselves. If the first endpoint is left out, this is equivalent to "ancestors(y)", if the second is left out it is equivalent to "descendants(x)".
Upvotes: 15
Reputation: 8268
hg status --rev x:y
where x
and y
are desired revision numbers (or tag or branch names).
If you are using the terminal in windows add hg status --rev x:y
> your-file.txt
to save the list to a file.
Upvotes: 173