Mercurial > hg
view tests/test-convert-git @ 11715:4f9dfb54c8b5 stable
qpush --move: move the right patch even with comment lines
88fc876a4833 caused that we find the index of the moving patch in self.series
but look it up in self.full_series. The difference between these is that
full_series also contains comment lines, and we thus moved the wrong patch.
Use back self.full_series to find the moving patch, but take care of striping
the patch guard markers before comparing the patch name. Test cases have been
added for comments and empty lines in self.full_series, and for the case of
guarded patches.
Original patch contributed by Mads Kiilerich <mads@kiilerich.com>
author | Gilles Moris <gilles.moris@free.fr> |
---|---|
date | Sat, 10 Jul 2010 21:23:00 +0200 |
parents | bb377a311109 |
children |
line wrap: on
line source
#!/bin/sh "$TESTDIR/hghave" git || exit 80 echo "[extensions]" >> $HGRCPATH echo "convert=" >> $HGRCPATH echo 'hgext.graphlog =' >> $HGRCPATH GIT_AUTHOR_NAME='test'; export GIT_AUTHOR_NAME GIT_AUTHOR_EMAIL='test@example.org'; export GIT_AUTHOR_EMAIL GIT_AUTHOR_DATE="2007-01-01 00:00:00 +0000"; export GIT_AUTHOR_DATE GIT_COMMITTER_NAME="$GIT_AUTHOR_NAME"; export GIT_COMMITTER_NAME GIT_COMMITTER_EMAIL="$GIT_AUTHOR_EMAIL"; export GIT_COMMITTER_EMAIL GIT_COMMITTER_DATE="$GIT_AUTHOR_DATE"; export GIT_COMMITTER_DATE count=10 commit() { GIT_AUTHOR_DATE="2007-01-01 00:00:$count +0000" GIT_COMMITTER_DATE="$GIT_AUTHOR_DATE" git commit "$@" >/dev/null 2>/dev/null || echo "git commit error" count=`expr $count + 1` } mkdir git-repo cd git-repo git init-db >/dev/null 2>/dev/null echo a > a mkdir d echo b > d/b git add a d commit -a -m t1 # Remove the directory, then try to replace it with a file # (issue 754) git rm -f d/b commit -m t2 echo d > d git add d commit -m t3 echo b >> a commit -a -m t4.1 git checkout -b other HEAD~ >/dev/null 2>/dev/null echo c > a echo a >> a commit -a -m t4.2 git checkout master >/dev/null 2>/dev/null git pull --no-commit . other > /dev/null 2>/dev/null commit -m 'Merge branch other' cd .. hg convert --datesort git-repo hg up -q -R git-repo-hg hg -R git-repo-hg tip -v count=10 mkdir git-repo2 cd git-repo2 git init-db >/dev/null 2>/dev/null echo foo > foo git add foo commit -a -m 'add foo' echo >> foo commit -a -m 'change foo' git checkout -b Bar HEAD~ >/dev/null 2>/dev/null echo quux >> quux git add quux commit -a -m 'add quux' echo bar > bar git add bar commit -a -m 'add bar' git checkout -b Baz HEAD~ >/dev/null 2>/dev/null echo baz > baz git add baz commit -a -m 'add baz' git checkout master >/dev/null 2>/dev/null git pull --no-commit . Bar Baz > /dev/null 2>/dev/null commit -m 'Octopus merge' echo bar >> bar commit -a -m 'change bar' git checkout -b Foo HEAD~ >/dev/null 2>/dev/null echo >> foo commit -a -m 'change foo' git checkout master >/dev/null 2>/dev/null git pull --no-commit -s ours . Foo > /dev/null 2>/dev/null commit -m 'Discard change to foo' cd .. glog() { hg glog --template '{rev} "{desc|firstline}" files: {files}\n' "$@" } 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 git-repo2 "$repo" hg up -q -R "$repo" glog -R "$repo" hg -R "$repo" manifest --debug } echo '% full conversion' hg -q convert --datesort git-repo2 fullrepo hg up -q -R fullrepo glog -R fullrepo hg -R fullrepo manifest --debug splitrepo 'octopus merge' 'foo bar baz' splitrepo 'only some parents of an octopus merge; "discard" a head' 'foo baz quux' echo echo '% test binary conversion (issue 1359)' mkdir git-repo3 cd git-repo3 git init-db >/dev/null 2>/dev/null python -c 'file("b", "wb").write("".join([chr(i) for i in range(256)])*16)' git add b commit -a -m addbinary cd .. echo '% convert binary file' hg convert git-repo3 git-repo3-hg cd git-repo3-hg hg up -C python -c 'print len(file("b", "rb").read())' cd .. echo echo '% test author vs committer' mkdir git-repo4 cd git-repo4 git init-db >/dev/null 2>/dev/null echo >> foo git add foo commit -a -m addfoo echo >> foo GIT_AUTHOR_NAME="nottest" commit -a -m addfoo2 cd .. echo '% convert author committer' hg convert git-repo4 git-repo4-hg hg -R git-repo4-hg log -v echo '% --sourceorder should fail' hg convert --sourcesort git-repo4 git-repo4-sourcesort-hg echo '% damage git repository and convert again' cat > damage.py <<EOF import os for root, dirs, files in os.walk('git-repo4/.git/objects'): if files: path = os.path.join(root, files[0]) os.remove(path) break EOF python damage.py hg convert git-repo4 git-repo4-broken-hg 2>&1 | \ grep 'abort:' | sed 's/abort:.*/abort:/g' true