Mercurial > hg
view contrib/plan9/9diff @ 23301:c10dc5568069
context.status: wipe deleted/unknown/ignored fields when reversed
It makes no sense to request reverse status (i.e. changes from the
working copy to its parent) and then look at the deleted, unknown or
ignored fields. If you do, you would get the result from the forward
status (changes from parent to the working copy). Instead of giving a
nonsensical answer to a nonsensical question, it seems a little saner
to return empty lists. It might be best if we could prevent the caller
accessing these lists, but it's doubtful it's worth the trouble.
author | Martin von Zweigbergk <martinvonz@google.com> |
---|---|
date | Wed, 12 Nov 2014 21:19:07 -0800 |
parents | f9262456fb01 |
children |
line wrap: on
line source
#!/bin/rc # 9diff - Mercurial extdiff wrapper for diff(1) rfork e fn getfiles { cd $1 && for(f in `{du -as | awk '{print $2}'}) test -f $f && echo `{cleanname $f} } fn usage { echo >[1=2] usage: 9diff [diff options] parent child root exit usage } opts=() while(~ $1 -*){ opts=($opts $1) shift } if(! ~ $#* 3) usage # extdiff will set the parent and child to a single file if there is # only one change. If there are multiple changes, directories will be # set. diff(1) does not cope particularly with directories; instead we # do the recursion ourselves and diff each file individually. if(test -f $1) diff $opts $1 $2 if not{ # extdiff will create a snapshot of the working copy to prevent # conflicts during the diff. We circumvent this behavior by # diffing against the repository root to produce plumbable # output. This is antisocial. for(f in `{sort -u <{getfiles $1} <{getfiles $2}}){ file1=$1/$f; test -f $file1 || file1=/dev/null file2=$3/$f; test -f $file2 || file2=/dev/null diff $opts $file1 $file2 } } exit ''