Mercurial > hg
view tests/test-convert-git @ 7566:5f7e3f17aece
mq: drop copy records when refreshing regular patches (issue1441)
Copy information was saved in a common loop, then refined in a git-only block.
The problem was the latter did filter out renames occuring in the current
patch and irrelevant to commit. In the non-git case, copy records still existed
in the dirstate, referencing removed files, making the commit to fail. Git and
non-git copy handling paths are now separated for simplicity.
Reported by Gary Bernhardt
author | Patrick Mezard <pmezard@gmail.com> |
---|---|
date | Sun, 04 Jan 2009 21:32:40 +0100 |
parents | 5d14b06b1cc1 |
children | e3d3dad805f9 |
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())'