Mercurial > hg
view contrib/plan9/9diff @ 26902:7ffebbdcb371
rebase: preserve the 'intermediate-source' attribute of grafts
Preserving the 'source' attribute of grafts started with a69a77a80900, which
predates the introduction of 'intermediate-source' in 51930a7180bd by a year and
a half. It looks like not preserving this was an oversight.
On a related note, notice how the source value of 32af76 is no longer visible in
the graph above this test. Is it reasonable to import the sha1 translation from
evolve.py:relocate() into scmutil or similar, and use that to fixup these
attributes as well as the commit message? (I realize that evolve is still
experimental, but I don't see a way to do this from the evolve extension.)
author | Matt Harbison <matt_harbison@yahoo.com> |
---|---|
date | Sun, 08 Nov 2015 17:56:48 -0500 |
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 ''