We can see all the changesets and the files involved using
hg outgoing -v
but the filenames are all scattered in the list of changesets.
Is there a way to just see a list of all the files that will go out if hg push
is issued?
We can see all the changesets and the files involved using
hg outgoing -v
but the filenames are all scattered in the list of changesets.
Is there a way to just see a list of all the files that will go out if hg push
is issued?
I use Torgoise Hg, which is a shell extension that has a "synchronize" view allowing you to see outgoing files before you push them. It's convenient for commits as well, and other things.
First, create a file with this content:
changeset = "{files}"
file = "{file}\n"
Let's say you call it out-style.txt and put it in your home directory. Then you can give this command:
hg -q outgoing --style ~/out-style.txt | sort -u
I usually use
hg outgoing -v | grep files
It makes the listing shorter, but doesnt sort. But thus far I havent been in a situation where I want to push so much (and at the same time check the files) that its been a problem.
[Edit] To do what you want:
cut
to remove the files:
parttr
to put them on separate linessort
Like so:
hg outgoing -v |grep files: |cut -c 14- |tr ' ' '\n' |sort -u
You can put this in ~/outgoingfiles.sh or something to have it nice and ready.
A somewhat under-appreciated feature: hg status
can show information about changes in file status between arbitrary changesets. This can be used to get a list of files changed between revisions X
and Y
:
hg status --rev X:Y
In this case, we can use hg outgoing
, to find the first outgoing changeset X
and then do
hg status --rev X:
to see the files changes since revision X
. You can combine this into a single line in your shell:
hg status --rev $(hg outgoing -q --template '{node}' -l 1):