Mercurial > hg
view tests/test-convert-filemap @ 10135:9a4034b630c4 stable
patch: better handling of sequence of offset patch hunks (issue1941)
The built-in patch implementation applied the hunks to the wrong lines of the
file if the file in the repo has been modified to skew the patch line numbers
and the file contains repetitive sequences of lines.
author | Greg Onufer <gonufer@jazzhaiku.com> |
---|---|
date | Wed, 09 Dec 2009 16:56:00 -0800 |
parents | 5b7da468531b |
children | b1addc725998 |
line wrap: on
line source
#!/bin/sh HGMERGE=true; export HGMERGE echo '[extensions]' >> $HGRCPATH echo 'hgext.graphlog =' >> $HGRCPATH echo 'hgext.convert =' >> $HGRCPATH glog() { hg glog --template '{rev} "{desc}" files: {files}\n' "$@" } hg init source cd source echo foo > foo echo baz > baz mkdir dir echo dir/file >> dir/file echo dir/file2 >> dir/file2 hg ci -d '0 0' -qAm '0: add foo baz dir/' echo bar > bar echo quux > quux hg copy foo copied hg ci -d '1 0' -qAm '1: add bar quux; copy foo to copied' echo >> foo hg ci -d '2 0' -m '2: change foo' hg up -qC 1 echo >> bar echo >> quux hg ci -d '3 0' -m '3: change bar quux' hg up -qC 2 hg merge -qr 3 echo >> bar echo >> baz hg ci -d '4 0' -m '4: first merge; change bar baz' echo >> bar echo 1 >> baz echo >> quux hg ci -d '5 0' -m '5: change bar baz quux' hg up -qC 4 echo >> foo echo 2 >> baz hg ci -d '6 0' -m '6: change foo baz' hg up -qC 5 hg merge -qr 6 echo >> bar hg ci -d '7 0' -m '7: second merge; change bar' echo >> foo hg ci -m '8: change foo' glog echo '% final file versions in this repo:' hg manifest --debug hg debugrename copied echo cd .. splitrepo() { msg="$1" files="$2" opts=$3 echo "% $files: $msg" prefix=`echo "$files" | sed -e 's/ /-/g'` fmap="$prefix.fmap" repo="$prefix.repo" for i in $files; do echo "include $i" >> "$fmap" done hg -q convert $opts --filemap "$fmap" --datesort source "$repo" hg up -q -R "$repo" glog -R "$repo" hg -R "$repo" manifest --debug } splitrepo 'skip unwanted merges; use 1st parent in 1st merge, 2nd in 2nd' foo splitrepo 'merges are not merges anymore' bar splitrepo '1st merge is not a merge anymore; 2nd still is' baz splitrepo 'we add additional merges when they are interesting' 'foo quux' splitrepo 'partial conversion' 'bar quux' '-r 3' splitrepo 'complete the partial conversion' 'bar quux' rm -r foo.repo splitrepo 'partial conversion' 'foo' '-r 3' splitrepo 'complete the partial conversion' 'foo' splitrepo 'copied file; source not included in new repo' copied hg --cwd copied.repo debugrename copied splitrepo 'copied file; source included in new repo' 'foo copied' hg --cwd foo-copied.repo debugrename copied cat > renames.fmap <<EOF include dir exclude dir/file2 rename dir dir2 include foo include copied rename foo foo2 rename copied copied2 EOF hg -q convert --filemap renames.fmap --datesort source renames.repo hg up -q -R renames.repo glog -R renames.repo hg -R renames.repo manifest --debug hg --cwd renames.repo debugrename copied2 echo 'copied:' hg --cwd source cat copied echo 'copied2:' hg --cwd renames.repo cat copied2