view tests/test-convert-git @ 6456:db5324d3c257

Pager extension: switch it off if --debugger is set The pager is preventing the debugger prompt and much of the debugger output to be refreshed. Moreover the pager does not make sense when debugging line by line. (This supersedes the similar ui.debugflag patch. Disabling the pager for debug output doesn't make that much sense, as this is actually when the pager might be useful.)
author Gilles Moris <gilles.moris@free.fr>
date Thu, 03 Apr 2008 11:11:31 +0200
parents a5a7f7fd5554
children 7239e06e58e9 c1dc903dc7b6
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 -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"
    glog -R "$repo"
    hg -R "$repo" manifest --debug
}

echo '% full conversion'
hg -q convert --datesort git-repo2 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'