Mercurial > hg-stable
view contrib/plan9/9diff @ 44794:2dc5ae953c4a stable
graft: fix --base value to be saved in state file
'True' just works because it is treated as an integer revision '1' and
only the truthiness of the basectx is important. If multiple source revisions
were supported with --base, the resumed graft operation would go wrong.
author | Yuya Nishihara <yuya@tcha.org> |
---|---|
date | Tue, 02 Jun 2020 20:40:06 +0900 |
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 ''