test-convert-git
186 lines
| 3.9 KiB
| text/plain
|
TextLexer
/ tests / test-convert-git
|
r5219 | #!/bin/sh | ||
"$TESTDIR/hghave" git || exit 80 | ||||
echo "[extensions]" >> $HGRCPATH | ||||
echo "convert=" >> $HGRCPATH | ||||
|
r5380 | echo 'hgext.graphlog =' >> $HGRCPATH | ||
|
r5219 | |||
|
r5335 | 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` | ||||
} | ||||
|
r5219 | mkdir git-repo | ||
cd git-repo | ||||
|
r5231 | git init-db >/dev/null 2>/dev/null | ||
|
r5219 | echo a > a | ||
|
r5345 | 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) | ||||
|
r5369 | git rm -f d/b | ||
|
r5345 | commit -m t2 | ||
echo d > d | ||||
git add d | ||||
commit -m t3 | ||||
|
r5335 | |||
|
r5219 | echo b >> a | ||
|
r5345 | commit -a -m t4.1 | ||
|
r5335 | |||
|
r9434 | git checkout -b other HEAD~ >/dev/null 2>/dev/null | ||
|
r5335 | echo c > a | ||
echo a >> a | ||||
|
r5345 | commit -a -m t4.2 | ||
|
r5335 | |||
git checkout master >/dev/null 2>/dev/null | ||||
git pull --no-commit . other > /dev/null 2>/dev/null | ||||
commit -m 'Merge branch other' | ||||
|
r5219 | cd .. | ||
|
r5335 | hg convert --datesort git-repo | ||
|
r6737 | hg up -q -R git-repo-hg | ||
|
r5335 | hg -R git-repo-hg tip -v | ||
|
r5380 | |||
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' | ||||
|
r9434 | git checkout -b Bar HEAD~ >/dev/null 2>/dev/null | ||
|
r5380 | echo quux >> quux | ||
git add quux | ||||
commit -a -m 'add quux' | ||||
echo bar > bar | ||||
git add bar | ||||
commit -a -m 'add bar' | ||||
|
r9434 | git checkout -b Baz HEAD~ >/dev/null 2>/dev/null | ||
|
r5380 | 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' | ||||
|
r9434 | git checkout -b Foo HEAD~ >/dev/null 2>/dev/null | ||
|
r5380 | 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() | ||||
{ | ||||
|
r8523 | hg glog --template '{rev} "{desc|firstline}" files: {files}\n' "$@" | ||
|
r5380 | } | ||
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" | ||||
|
r6737 | hg up -q -R "$repo" | ||
|
r5380 | glog -R "$repo" | ||
hg -R "$repo" manifest --debug | ||||
} | ||||
echo '% full conversion' | ||||
hg -q convert --datesort git-repo2 fullrepo | ||||
|
r6737 | hg up -q -R fullrepo | ||
|
r5380 | 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' | ||||
|
r7222 | 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())' | ||||
|
r8271 | cd .. | ||
|
r7222 | |||
|
r8271 | 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 | ||||
|
r8691 | hg -R git-repo4-hg log -v | ||
echo '% --sourceorder should fail' | ||||
hg convert --sourcesort git-repo4 git-repo4-sourcesort-hg | ||||
|
r10987 | 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 | \ | ||||
|
r10990 | grep 'abort:' | sed 's/abort:.*/abort:/g' | ||
|
r10987 | |||
|
r8691 | true | ||