diff --git a/tests/test-bookmark-workflow.t b/tests/test-bookmark-workflow.t
index a7da97e69d56a7edc284cd7cfe1f552c9288d45d_dGVzdHMvdGVzdC1ib29rbWFyay13b3JrZmxvdy50..c4849b2dab87434439793ec708760dd6d8d9c84d_dGVzdHMvdGVzdC1ib29rbWFyay13b3JrZmxvdy50 100644
--- a/tests/test-bookmark-workflow.t
+++ b/tests/test-bookmark-workflow.t
@@ -22,13 +22,6 @@
   $ python -c 'from mercurial import util ; assert \
   >  util.version() != "unknown" and util.version() >= "2.1"' || exit 80
 
-  $ 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
-
   $ gitcount=10
   $ gitcommit()
   > {
diff --git a/tests/test-clone.t b/tests/test-clone.t
index a7da97e69d56a7edc284cd7cfe1f552c9288d45d_dGVzdHMvdGVzdC1jbG9uZS50..c4849b2dab87434439793ec708760dd6d8d9c84d_dGVzdHMvdGVzdC1jbG9uZS50 100755
--- a/tests/test-clone.t
+++ b/tests/test-clone.t
@@ -7,25 +7,9 @@
 bail if the user does not have dulwich
   $ python -c 'import dulwich, dulwich.repo' || exit 80
 
-  $ 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 gitrepo
   $ cd gitrepo
   $ git init
   Initialized empty Git repository in $TESTTMP/gitrepo/.git/
   $ echo alpha > alpha
   $ git add alpha
@@ -26,10 +10,10 @@
   $ mkdir gitrepo
   $ cd gitrepo
   $ git init
   Initialized empty Git repository in $TESTTMP/gitrepo/.git/
   $ echo alpha > alpha
   $ git add alpha
-  $ commit -m 'add alpha'
+  $ fn_git_commit -m 'add alpha'
 
   $ git tag alpha
 
@@ -37,7 +21,7 @@
   Switched to a new branch "beta"
   $ echo beta > beta
   $ git add beta
-  $ commit -m 'add beta'
+  $ fn_git_commit -m 'add beta'
 
 
   $ cd ..
diff --git a/tests/test-empty-working-tree.t b/tests/test-empty-working-tree.t
index a7da97e69d56a7edc284cd7cfe1f552c9288d45d_dGVzdHMvdGVzdC1lbXB0eS13b3JraW5nLXRyZWUudA==..c4849b2dab87434439793ec708760dd6d8d9c84d_dGVzdHMvdGVzdC1lbXB0eS13b3JraW5nLXRyZWUudA== 100644
--- a/tests/test-empty-working-tree.t
+++ b/tests/test-empty-working-tree.t
@@ -7,13 +7,6 @@
 bail if the user does not have dulwich
   $ python -c 'import dulwich, dulwich.repo' || exit 80
 
-  $ 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
-
   $ mkdir gitrepo
   $ cd gitrepo
   $ git init
diff --git a/tests/test-file-removal.t b/tests/test-file-removal.t
index a7da97e69d56a7edc284cd7cfe1f552c9288d45d_dGVzdHMvdGVzdC1maWxlLXJlbW92YWwudA==..c4849b2dab87434439793ec708760dd6d8d9c84d_dGVzdHMvdGVzdC1maWxlLXJlbW92YWwudA== 100644
--- a/tests/test-file-removal.t
+++ b/tests/test-file-removal.t
@@ -7,25 +7,9 @@
 bail if the user does not have dulwich
   $ python -c 'import dulwich, dulwich.repo' || exit 80
 
-  $ 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 gitrepo
   $ cd gitrepo
   $ git init
   Initialized empty Git repository in $TESTTMP/gitrepo/.git/
   $ echo alpha > alpha
   $ git add alpha
@@ -26,9 +10,9 @@
   $ mkdir gitrepo
   $ cd gitrepo
   $ git init
   Initialized empty Git repository in $TESTTMP/gitrepo/.git/
   $ echo alpha > alpha
   $ git add alpha
-  $ commit -m 'add alpha'
+  $ fn_git_commit -m 'add alpha'
   $ echo beta > beta
   $ git add beta
@@ -33,6 +17,6 @@
   $ echo beta > beta
   $ git add beta
-  $ commit -m 'add beta'
+  $ fn_git_commit -m 'add beta'
   $ mkdir foo
   $ echo blah > foo/bar
   $ git add foo
@@ -36,6 +20,6 @@
   $ mkdir foo
   $ echo blah > foo/bar
   $ git add foo
-  $ commit -m 'add foo'
+  $ fn_git_commit -m 'add foo'
   $ git rm alpha
   rm 'alpha'
@@ -40,5 +24,5 @@
   $ git rm alpha
   rm 'alpha'
-  $ commit -m 'remove alpha'
+  $ fn_git_commit -m 'remove alpha'
   $ git rm foo/bar
   rm 'foo/bar'
@@ -43,6 +27,6 @@
   $ git rm foo/bar
   rm 'foo/bar'
-  $ commit -m 'remove foo/bar'
+  $ fn_git_commit -m 'remove foo/bar'
   $ echo % final manifest in git is just beta
   % final manifest in git is just beta
   $ git ls-files
diff --git a/tests/test-git-clone.t b/tests/test-git-clone.t
index a7da97e69d56a7edc284cd7cfe1f552c9288d45d_dGVzdHMvdGVzdC1naXQtY2xvbmUudA==..c4849b2dab87434439793ec708760dd6d8d9c84d_dGVzdHMvdGVzdC1naXQtY2xvbmUudA== 100755
--- a/tests/test-git-clone.t
+++ b/tests/test-git-clone.t
@@ -7,25 +7,9 @@
 bail if the user does not have dulwich
   $ python -c 'import dulwich, dulwich.repo' || exit 80
 
-  $ 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 gitrepo
   $ cd gitrepo
   $ git init
   Initialized empty Git repository in $TESTTMP/gitrepo/.git/
   $ echo alpha > alpha
   $ git add alpha
@@ -26,9 +10,9 @@
   $ mkdir gitrepo
   $ cd gitrepo
   $ git init
   Initialized empty Git repository in $TESTTMP/gitrepo/.git/
   $ echo alpha > alpha
   $ git add alpha
-  $ commit -m 'add alpha'
+  $ fn_git_commit -m 'add alpha'
   $ echo beta > beta
   $ git add beta
@@ -33,6 +17,6 @@
   $ echo beta > beta
   $ git add beta
-  $ commit -m 'add beta'
+  $ fn_git_commit -m 'add beta'
 
   $ cd ..
 
diff --git a/tests/test-git-submodules.t b/tests/test-git-submodules.t
index a7da97e69d56a7edc284cd7cfe1f552c9288d45d_dGVzdHMvdGVzdC1naXQtc3VibW9kdWxlcy50..c4849b2dab87434439793ec708760dd6d8d9c84d_dGVzdHMvdGVzdC1naXQtc3VibW9kdWxlcy50 100644
--- a/tests/test-git-submodules.t
+++ b/tests/test-git-submodules.t
@@ -7,25 +7,9 @@
 bail if the user does not have dulwich
   $ python -c 'import dulwich, dulwich.repo' || exit 80
 
-  $ 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" | sed 's/, 0 deletions(-)//'
-  >     count=`expr $count + 1`
-  > }
-
   $ mkdir gitrepo1
   $ cd gitrepo1
   $ git init
   Initialized empty Git repository in $TESTTMP/gitrepo1/.git/
   $ echo alpha > alpha
   $ git add alpha
@@ -26,10 +10,10 @@
   $ mkdir gitrepo1
   $ cd gitrepo1
   $ git init
   Initialized empty Git repository in $TESTTMP/gitrepo1/.git/
   $ echo alpha > alpha
   $ git add alpha
-  $ commit -m 'add alpha'
+  $ fn_git_commit -m 'add alpha'
   $ cd ..
 
   $ mkdir gitsubrepo
@@ -38,7 +22,7 @@
   Initialized empty Git repository in $TESTTMP/gitsubrepo/.git/
   $ echo beta > beta
   $ git add beta
-  $ commit -m 'add beta'
+  $ fn_git_commit -m 'add beta'
   $ cd ..
 
   $ mkdir gitrepo2
diff --git a/tests/test-git-tags.t b/tests/test-git-tags.t
index a7da97e69d56a7edc284cd7cfe1f552c9288d45d_dGVzdHMvdGVzdC1naXQtdGFncy50..c4849b2dab87434439793ec708760dd6d8d9c84d_dGVzdHMvdGVzdC1naXQtdGFncy50 100644
--- a/tests/test-git-tags.t
+++ b/tests/test-git-tags.t
@@ -7,29 +7,6 @@
 bail if the user does not have dulwich
   $ python -c 'import dulwich, dulwich.repo' || exit 80
 
-  $ 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`
-  > }
-  $ tag()
-  > {
-  >     GIT_AUTHOR_DATE="2007-01-01 00:00:$count +0000"
-  >     GIT_COMMITTER_DATE="$GIT_AUTHOR_DATE"
-  >     git tag "$@" >/dev/null 2>/dev/null || echo "git commit error"
-  >     count=`expr $count + 1`
-  > }
-
   $ mkdir gitrepo
   $ cd gitrepo
   $ git init
@@ -37,8 +14,8 @@
   $ git config receive.denyCurrentBranch ignore
   $ echo alpha > alpha
   $ git add alpha
-  $ commit -m 'add alpha'
-  $ tag alpha
+  $ fn_git_commit -m 'add alpha'
+  $ fn_git_tag alpha
 
   $ echo beta > beta
   $ git add beta
@@ -42,8 +19,8 @@
 
   $ echo beta > beta
   $ git add beta
-  $ commit -m 'add beta'
-  $ tag -a -m 'added tag beta' beta
+  $ fn_git_commit -m 'add beta'
+  $ fn_git_tag -a -m 'added tag beta' beta
 
   $ cd ..
   $ hg clone gitrepo hgrepo | grep -v '^updating'
diff --git a/tests/test-git-workflow.t b/tests/test-git-workflow.t
index a7da97e69d56a7edc284cd7cfe1f552c9288d45d_dGVzdHMvdGVzdC1naXQtd29ya2Zsb3cudA==..c4849b2dab87434439793ec708760dd6d8d9c84d_dGVzdHMvdGVzdC1naXQtd29ya2Zsb3cudA== 100755
--- a/tests/test-git-workflow.t
+++ b/tests/test-git-workflow.t
@@ -7,31 +7,9 @@
 bail if the user does not have dulwich
   $ python -c 'import dulwich, dulwich.repo' || exit 80
 
-  $ 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`
-  > }
-  $ hgcommit()
-  > {
-  >     HGDATE="2007-01-01 00:00:$count +0000"
-  >     hg commit -d "$HGDATE" "$@" >/dev/null 2>/dev/null || echo "hg commit error"
-  >     count=`expr $count + 1`
-  > }
-
   $ mkdir hgrepo
   $ cd hgrepo
   $ hg init
 
   $ echo alpha > alpha
   $ hg add alpha
@@ -32,10 +10,10 @@
   $ mkdir hgrepo
   $ cd hgrepo
   $ hg init
 
   $ echo alpha > alpha
   $ hg add alpha
-  $ hgcommit -m "add alpha"
+  $ fn_hg_commit -m "add alpha"
   $ hg log --graph --debug | grep -v phase:
   @  changeset:   0:0221c246a56712c6aa64e5ee382244d8a471b1e2
      tag:         tip
@@ -73,7 +51,7 @@
   Already on "master"
   $ echo beta > beta
   $ git add beta
-  $ commit -m 'add beta'
+  $ fn_git_commit -m 'add beta'
 
   $ echo % get things back to hg
   % get things back to hg
diff --git a/tests/test-hg-author.t b/tests/test-hg-author.t
index a7da97e69d56a7edc284cd7cfe1f552c9288d45d_dGVzdHMvdGVzdC1oZy1hdXRob3IudA==..c4849b2dab87434439793ec708760dd6d8d9c84d_dGVzdHMvdGVzdC1oZy1hdXRob3IudA== 100644
--- a/tests/test-hg-author.t
+++ b/tests/test-hg-author.t
@@ -7,28 +7,6 @@
 bail if the user does not have dulwich
   $ python -c 'import dulwich, dulwich.repo' || exit 80
 
-  $ 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`
-  > }
-  $ hgcommit()
-  > {
-  >     HGDATE="2007-01-01 00:00:$count +0000"
-  >     hg commit -d "$HGDATE" "$@" >/dev/null 2>/dev/null || echo "hg commit error"
-  >     count=`expr $count + 1`
-  > }
-
   $ mkdir gitrepo
   $ cd gitrepo
   $ git init
@@ -36,7 +14,7 @@
 
   $ echo alpha > alpha
   $ git add alpha
-  $ commit -m "add alpha"
+  $ fn_git_commit -m "add alpha"
   $ git checkout -b not-master
   Switched to a new branch 'not-master'
 
@@ -50,9 +28,9 @@
   0 files updated, 0 files merged, 0 files removed, 0 files unresolved
   $ echo beta > beta
   $ hg add beta
-  $ hgcommit -u "test" -m 'add beta'
+  $ fn_hg_commit -u "test" -m 'add beta'
   $ hg push
   pushing to $TESTTMP/gitrepo
   searching for changes
 
   $ echo gamma >> beta
@@ -54,12 +32,12 @@
   $ hg push
   pushing to $TESTTMP/gitrepo
   searching for changes
 
   $ echo gamma >> beta
-  $ hgcommit -u "test <test@example.com> (comment)" -m 'modify beta'
+  $ fn_hg_commit -u "test <test@example.com> (comment)" -m 'modify beta'
   $ hg push
   pushing to $TESTTMP/gitrepo
   searching for changes
 
   $ echo gamma > gamma
   $ hg add gamma
@@ -60,13 +38,13 @@
   $ hg push
   pushing to $TESTTMP/gitrepo
   searching for changes
 
   $ echo gamma > gamma
   $ hg add gamma
-  $ hgcommit -u "<test@example.com>" -m 'add gamma'
+  $ fn_hg_commit -u "<test@example.com>" -m 'add gamma'
   $ hg push
   pushing to $TESTTMP/gitrepo
   searching for changes
 
   $ echo delta > delta
   $ hg add delta
@@ -67,13 +45,13 @@
   $ hg push
   pushing to $TESTTMP/gitrepo
   searching for changes
 
   $ echo delta > delta
   $ hg add delta
-  $ hgcommit -u "name<test@example.com>" -m 'add delta'
+  $ fn_hg_commit -u "name<test@example.com>" -m 'add delta'
   $ hg push
   pushing to $TESTTMP/gitrepo
   searching for changes
 
   $ echo epsilon > epsilon
   $ hg add epsilon
@@ -74,13 +52,13 @@
   $ hg push
   pushing to $TESTTMP/gitrepo
   searching for changes
 
   $ echo epsilon > epsilon
   $ hg add epsilon
-  $ hgcommit -u "name <test@example.com" -m 'add epsilon'
+  $ fn_hg_commit -u "name <test@example.com" -m 'add epsilon'
   $ hg push
   pushing to $TESTTMP/gitrepo
   searching for changes
 
   $ echo zeta > zeta
   $ hg add zeta
@@ -81,13 +59,13 @@
   $ hg push
   pushing to $TESTTMP/gitrepo
   searching for changes
 
   $ echo zeta > zeta
   $ hg add zeta
-  $ hgcommit -u " test " -m 'add zeta'
+  $ fn_hg_commit -u " test " -m 'add zeta'
   $ hg push
   pushing to $TESTTMP/gitrepo
   searching for changes
 
   $ echo eta > eta
   $ hg add eta
@@ -88,13 +66,13 @@
   $ hg push
   pushing to $TESTTMP/gitrepo
   searching for changes
 
   $ echo eta > eta
   $ hg add eta
-  $ hgcommit -u "test < test@example.com >" -m 'add eta'
+  $ fn_hg_commit -u "test < test@example.com >" -m 'add eta'
   $ hg push
   pushing to $TESTTMP/gitrepo
   searching for changes
 
   $ echo theta > theta
   $ hg add theta
@@ -95,10 +73,10 @@
   $ hg push
   pushing to $TESTTMP/gitrepo
   searching for changes
 
   $ echo theta > theta
   $ hg add theta
-  $ hgcommit -u "test >test@example.com>" -m 'add theta'
+  $ fn_hg_commit -u "test >test@example.com>" -m 'add theta'
   $ hg push
   pushing to $TESTTMP/gitrepo
   searching for changes
diff --git a/tests/test-hg-branch.t b/tests/test-hg-branch.t
index a7da97e69d56a7edc284cd7cfe1f552c9288d45d_dGVzdHMvdGVzdC1oZy1icmFuY2gudA==..c4849b2dab87434439793ec708760dd6d8d9c84d_dGVzdHMvdGVzdC1oZy1icmFuY2gudA== 100644
--- a/tests/test-hg-branch.t
+++ b/tests/test-hg-branch.t
@@ -7,14 +7,7 @@
 bail if the user does not have dulwich
   $ python -c 'import dulwich, dulwich.repo' || exit 80
 
-  $ 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
-
 TODO stop using this when we're 1.5 only
   $ filterhash="sed s/71414c4e3c6f/a31e374801c9/;s/698615204564/d93a72262a83/"
   $ filterhash="$filterhash;s/d93a72262a83/05aed681ccb3/"
 
@@ -17,22 +10,7 @@
 TODO stop using this when we're 1.5 only
   $ filterhash="sed s/71414c4e3c6f/a31e374801c9/;s/698615204564/d93a72262a83/"
   $ filterhash="$filterhash;s/d93a72262a83/05aed681ccb3/"
 
-  $ 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`
-  > }
-  $ hgcommit()
-  > {
-  >     HGDATE="2007-01-01 00:00:$count +0000"
-  >     hg commit -d "$HGDATE" "$@" >/dev/null 2>/dev/null || echo "hg commit error"
-  >     count=`expr $count + 1`
-  > }
-
   $ mkdir gitrepo
   $ cd gitrepo
   $ git init
@@ -40,7 +18,7 @@
 
   $ echo alpha > alpha
   $ git add alpha
-  $ commit -m "add alpha"
+  $ fn_git_commit -m "add alpha"
   $ git checkout -b not-master
   Switched to a new branch 'not-master'
 
@@ -53,10 +31,10 @@
   $ hg co master
   0 files updated, 0 files merged, 0 files removed, 0 files unresolved
   $ hg mv alpha beta
-  $ hgcommit -m 'rename alpha to beta'
+  $ fn_hg_commit -m 'rename alpha to beta'
   $ hg push
   pushing to $TESTTMP/gitrepo
   searching for changes
 
   $ hg branch gamma | grep -v 'permanent and global'
   marked working directory as branch gamma
@@ -57,10 +35,10 @@
   $ hg push
   pushing to $TESTTMP/gitrepo
   searching for changes
 
   $ hg branch gamma | grep -v 'permanent and global'
   marked working directory as branch gamma
-  $ hgcommit -m 'started branch gamma'
+  $ fn_hg_commit -m 'started branch gamma'
   $ hg push
   pushing to $TESTTMP/gitrepo
   searching for changes
diff --git a/tests/test-hg-tags.t b/tests/test-hg-tags.t
index a7da97e69d56a7edc284cd7cfe1f552c9288d45d_dGVzdHMvdGVzdC1oZy10YWdzLnQ=..c4849b2dab87434439793ec708760dd6d8d9c84d_dGVzdHMvdGVzdC1oZy10YWdzLnQ= 100644
--- a/tests/test-hg-tags.t
+++ b/tests/test-hg-tags.t
@@ -7,28 +7,6 @@
 bail if the user does not have dulwich
   $ python -c 'import dulwich, dulwich.repo' || exit 80
 
-  $ 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`
-  > }
-  $ hgtag()
-  > {
-  >     HGDATE="2007-01-01 00:00:$count +0000"
-  >     hg tag -d "$HGDATE" "$@" >/dev/null 2>/dev/null || echo "hg commit error"
-  >     count=`expr $count + 1`
-  > }
-
   $ mkdir gitrepo
   $ cd gitrepo
   $ git init
@@ -36,7 +14,7 @@
 
   $ echo alpha > alpha
   $ git add alpha
-  $ commit -m "add alpha"
+  $ fn_git_commit -m "add alpha"
   $ git checkout -b not-master
   Switched to a new branch 'not-master'
 
@@ -48,7 +26,7 @@
   $ cd hgrepo
   $ hg co master
   0 files updated, 0 files merged, 0 files removed, 0 files unresolved
-  $ hgtag alpha
+  $ fn_hg_tag alpha
   $ hg push
   pushing to $TESTTMP/gitrepo
   searching for changes
diff --git a/tests/test-incoming.t b/tests/test-incoming.t
index a7da97e69d56a7edc284cd7cfe1f552c9288d45d_dGVzdHMvdGVzdC1pbmNvbWluZy50..c4849b2dab87434439793ec708760dd6d8d9c84d_dGVzdHMvdGVzdC1pbmNvbWluZy50 100755
--- a/tests/test-incoming.t
+++ b/tests/test-incoming.t
@@ -11,28 +11,6 @@
   $ python -c 'from mercurial import util ; assert \
   >  util.version() != "unknown" and util.version() > "1.7"' || exit 80
 
-  $ 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`
-  > }
-  $ hgcommit()
-  > {
-  >     HGDATE="2007-01-01 00:00:$count +0000"
-  >     hg commit -d "$HGDATE" "$@" >/dev/null 2>/dev/null || echo "hg commit error"
-  >     count=`expr $count + 1`
-  > }
-
   $ mkdir gitrepo
   $ cd gitrepo
   $ git init
@@ -40,7 +18,7 @@
 
   $ echo alpha > alpha
   $ git add alpha
-  $ commit -m "add alpha"
+  $ fn_git_commit -m "add alpha"
 
   $ cd ..
   $ hg clone gitrepo hgrepo | grep -v '^updating'
@@ -54,7 +32,7 @@
   $ cd ../gitrepo
   $ echo beta > beta
   $ git add beta
-  $ commit -m 'add beta'
+  $ fn_git_commit -m 'add beta'
 
   $ cd ../hgrepo
   $ hg incoming | grep -v 'no changes found' | grep -v 'bookmark:'
@@ -71,8 +49,8 @@
   $ mkdir d
   $ echo gamma > d/gamma
   $ git add d/gamma
-  $ commit -m'add d/gamma'
+  $ fn_git_commit -m'add d/gamma'
   $ git tag t1
 
   $ echo gamma 2 >> d/gamma
   $ git add d/gamma
@@ -75,8 +53,8 @@
   $ git tag t1
 
   $ echo gamma 2 >> d/gamma
   $ git add d/gamma
-  $ commit -m'add d/gamma line 2'
+  $ fn_git_commit -m'add d/gamma line 2'
 
   $ cd ../hgrepo
   $ hg incoming -p | grep -v 'no changes found' | grep -v 'bookmark:'
diff --git a/tests/test-keywords.t b/tests/test-keywords.t
index a7da97e69d56a7edc284cd7cfe1f552c9288d45d_dGVzdHMvdGVzdC1rZXl3b3Jkcy50..c4849b2dab87434439793ec708760dd6d8d9c84d_dGVzdHMvdGVzdC1rZXl3b3Jkcy50 100755
--- a/tests/test-keywords.t
+++ b/tests/test-keywords.t
@@ -7,25 +7,9 @@
 bail if the user does not have dulwich
   $ python -c 'import dulwich, dulwich.repo' || exit 80
 
-  $ 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 gitrepo
   $ cd gitrepo
   $ git init
   Initialized empty Git repository in $TESTTMP/gitrepo/.git/
   $ echo alpha > alpha
   $ git add alpha
@@ -26,9 +10,9 @@
   $ mkdir gitrepo
   $ cd gitrepo
   $ git init
   Initialized empty Git repository in $TESTTMP/gitrepo/.git/
   $ echo alpha > alpha
   $ git add alpha
-  $ commit -m 'add alpha'
+  $ fn_git_commit -m 'add alpha'
   $ echo beta > beta
   $ git add beta
@@ -33,6 +17,6 @@
   $ echo beta > beta
   $ git add beta
-  $ commit -m 'add beta'
+  $ fn_git_commit -m 'add beta'
 
   $ cd ..
 
diff --git a/tests/test-merge.t b/tests/test-merge.t
index a7da97e69d56a7edc284cd7cfe1f552c9288d45d_dGVzdHMvdGVzdC1tZXJnZS50..c4849b2dab87434439793ec708760dd6d8d9c84d_dGVzdHMvdGVzdC1tZXJnZS50 100644
--- a/tests/test-merge.t
+++ b/tests/test-merge.t
@@ -7,25 +7,9 @@
 bail if the user does not have dulwich
   $ python -c 'import dulwich, dulwich.repo' || exit 80
 
-  $ 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" | sed 's/, 0 deletions(-)//'
-  >     count=`expr $count + 1`
-  > }
-
   $ mkdir gitrepo
   $ cd gitrepo
   $ git init
   Initialized empty Git repository in $TESTTMP/gitrepo/.git/
   $ echo alpha > alpha
   $ git add alpha
@@ -26,12 +10,12 @@
   $ mkdir gitrepo
   $ cd gitrepo
   $ git init
   Initialized empty Git repository in $TESTTMP/gitrepo/.git/
   $ echo alpha > alpha
   $ git add alpha
-  $ commit -m 'add alpha'
+  $ fn_git_commit -m 'add alpha'
 
   $ git checkout -b beta 2>&1 | sed s/\'/\"/g
   Switched to a new branch "beta"
   $ echo beta > beta
   $ git add beta
@@ -33,11 +17,11 @@
 
   $ git checkout -b beta 2>&1 | sed s/\'/\"/g
   Switched to a new branch "beta"
   $ echo beta > beta
   $ git add beta
-  $ commit -m 'add beta'
+  $ fn_git_commit -m 'add beta'
 
   $ git checkout master 2>&1 | sed s/\'/\"/g
   Switched to branch "master"
   $ echo gamma > gamma
   $ git add gamma
@@ -39,9 +23,9 @@
 
   $ git checkout master 2>&1 | sed s/\'/\"/g
   Switched to branch "master"
   $ echo gamma > gamma
   $ git add gamma
-  $ commit -m 'add gamma'
+  $ fn_git_commit -m 'add gamma'
 
 clean merge
   $ git merge beta | sed "s/the '//;s/' strategy//" | sed 's/^Merge.*recursive.*$/Merge successful/' | sed 's/files/file/;s/insertions/insertion/;s/, 0 deletions.*//' | sed 's/|  */| /'
diff --git a/tests/test-octopus.t b/tests/test-octopus.t
index a7da97e69d56a7edc284cd7cfe1f552c9288d45d_dGVzdHMvdGVzdC1vY3RvcHVzLnQ=..c4849b2dab87434439793ec708760dd6d8d9c84d_dGVzdHMvdGVzdC1vY3RvcHVzLnQ= 100644
--- a/tests/test-octopus.t
+++ b/tests/test-octopus.t
@@ -7,22 +7,6 @@
 bail if the user does not have dulwich
   $ python -c 'import dulwich, dulwich.repo' || exit 80
 
-  $ 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" | sed 's/0 deletions(-)//'
-  >     count=`expr $count + 1`
-  > }
-
   $ mkdir gitrepo
   $ cd gitrepo
   $ git init
@@ -30,9 +14,9 @@
 
   $ echo alpha > alpha
   $ git add alpha
-  $ commit -m 'add alpha'
+  $ fn_git_commit -m 'add alpha'
 
   $ git checkout -b branch1 2>&1 | sed s/\'/\"/g
   Switched to a new branch "branch1"
   $ echo beta > beta
   $ git add beta
@@ -34,11 +18,11 @@
 
   $ git checkout -b branch1 2>&1 | sed s/\'/\"/g
   Switched to a new branch "branch1"
   $ echo beta > beta
   $ git add beta
-  $ commit -m 'add beta'
+  $ fn_git_commit -m 'add beta'
 
   $ git checkout -b branch2 master 2>&1 | sed s/\'/\"/g
   Switched to a new branch "branch2"
   $ echo gamma > gamma
   $ git add gamma
@@ -40,11 +24,11 @@
 
   $ git checkout -b branch2 master 2>&1 | sed s/\'/\"/g
   Switched to a new branch "branch2"
   $ echo gamma > gamma
   $ git add gamma
-  $ commit -m 'add gamma'
+  $ fn_git_commit -m 'add gamma'
 
   $ git checkout master 2>&1 | sed s/\'/\"/g
   Switched to branch "master"
   $ echo delta > delta
   $ git add delta
@@ -46,9 +30,9 @@
 
   $ git checkout master 2>&1 | sed s/\'/\"/g
   Switched to branch "master"
   $ echo delta > delta
   $ git add delta
-  $ commit -m 'add delta'
+  $ fn_git_commit -m 'add delta'
 
   $ git merge branch1 branch2 | sed "s/the '//;s/' strategy//" | sed 's/^Merge.*octopus.*$/Merge successful/;s/, 0 deletions.*//'  | sed 's/|  */| /'
   Trying simple merge with branch1
diff --git a/tests/test-outgoing.t b/tests/test-outgoing.t
index a7da97e69d56a7edc284cd7cfe1f552c9288d45d_dGVzdHMvdGVzdC1vdXRnb2luZy50..c4849b2dab87434439793ec708760dd6d8d9c84d_dGVzdHMvdGVzdC1vdXRnb2luZy50 100755
--- a/tests/test-outgoing.t
+++ b/tests/test-outgoing.t
@@ -7,28 +7,6 @@
 bail if the user does not have dulwich
   $ python -c 'import dulwich, dulwich.repo' || exit 80
 
-  $ 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`
-  > }
-  $ hgcommit()
-  > {
-  >     HGDATE="2007-01-01 00:00:$count +0000"
-  >     hg commit -d "$HGDATE" "$@" >/dev/null 2>/dev/null || echo "hg commit error"
-  >     count=`expr $count + 1`
-  > }
-
   $ mkdir gitrepo
   $ cd gitrepo
   $ git init
@@ -36,7 +14,7 @@
 
   $ echo alpha > alpha
   $ git add alpha
-  $ commit -m "add alpha"
+  $ fn_git_commit -m "add alpha"
   $ git branch alpha
   $ git show-ref
   7eeab2ea75ec1ac0ff3d500b5b6f8a3447dd7c03 refs/heads/alpha
@@ -51,8 +29,8 @@
   $ hg update -q master
   $ echo beta > beta
   $ hg add beta
-  $ hgcommit -m 'add beta'
+  $ fn_hg_commit -m 'add beta'
 
 
   $ echo gamma > gamma
   $ hg add gamma
@@ -55,8 +33,8 @@
 
 
   $ echo gamma > gamma
   $ hg add gamma
-  $ hgcommit -m 'add gamma'
+  $ fn_hg_commit -m 'add gamma'
 
   $ hg book -r 1 beta
 
@@ -114,7 +92,7 @@
   Already on "master"
   $ echo delta > delta
   $ git add delta
-  $ commit -m "add delta"
+  $ fn_git_commit -m "add delta"
 
   $ cd ..
 
diff --git a/tests/test-pull-after-strip.t b/tests/test-pull-after-strip.t
index a7da97e69d56a7edc284cd7cfe1f552c9288d45d_dGVzdHMvdGVzdC1wdWxsLWFmdGVyLXN0cmlwLnQ=..c4849b2dab87434439793ec708760dd6d8d9c84d_dGVzdHMvdGVzdC1wdWxsLWFmdGVyLXN0cmlwLnQ= 100755
--- a/tests/test-pull-after-strip.t
+++ b/tests/test-pull-after-strip.t
@@ -18,25 +18,9 @@
 bail if the user does not have dulwich
   $ python -c 'import dulwich, dulwich.repo' || exit 80
 
-  $ 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 gitrepo
   $ cd gitrepo
   $ git init
   Initialized empty Git repository in $TESTTMP/gitrepo/.git/
   $ echo alpha > alpha
   $ git add alpha
@@ -37,10 +21,10 @@
   $ mkdir gitrepo
   $ cd gitrepo
   $ git init
   Initialized empty Git repository in $TESTTMP/gitrepo/.git/
   $ echo alpha > alpha
   $ git add alpha
-  $ commit -m 'add alpha'
+  $ fn_git_commit -m 'add alpha'
 
   $ git tag alpha
 
@@ -48,7 +32,7 @@
   Switched to a new branch "beta"
   $ echo beta > beta
   $ git add beta
-  $ commit -m 'add beta'
+  $ fn_git_commit -m 'add beta'
 
 
   $ cd ..
@@ -95,7 +79,7 @@
   $ cd gitrepo
   $ echo beta line 2 >> beta
   $ git add beta
-  $ commit -m 'add to beta'
+  $ fn_git_commit -m 'add to beta'
 
   $ cd ..
   $ cd hgrepo-b
diff --git a/tests/test-pull.t b/tests/test-pull.t
index a7da97e69d56a7edc284cd7cfe1f552c9288d45d_dGVzdHMvdGVzdC1wdWxsLnQ=..c4849b2dab87434439793ec708760dd6d8d9c84d_dGVzdHMvdGVzdC1wdWxsLnQ= 100644
--- a/tests/test-pull.t
+++ b/tests/test-pull.t
@@ -7,24 +7,8 @@
 bail if the user does not have dulwich
   $ python -c 'import dulwich, dulwich.repo' || exit 80
 
-  $ 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`
-  > }
-
 set up a git repo with some commits, branches and a tag
   $ git init -q gitrepo
   $ cd gitrepo
   $ echo alpha > alpha
   $ git add alpha
@@ -26,10 +10,10 @@
 set up a git repo with some commits, branches and a tag
   $ git init -q gitrepo
   $ cd gitrepo
   $ echo alpha > alpha
   $ git add alpha
-  $ commit -m 'add alpha'
+  $ fn_git_commit -m 'add alpha'
   $ git tag t_alpha
   $ git checkout -qb beta
   $ echo beta > beta
   $ git add beta
@@ -32,8 +16,8 @@
   $ git tag t_alpha
   $ git checkout -qb beta
   $ echo beta > beta
   $ git add beta
-  $ commit -m 'add beta'
+  $ fn_git_commit -m 'add beta'
   $ cd ..
 
 clone a tag (ideally we'd want to pull it, but that seems broken for now)
@@ -83,7 +67,7 @@
   $ git checkout -q master
   $ echo gamma > gamma
   $ git add gamma
-  $ commit -m 'add gamma'
+  $ fn_git_commit -m 'add gamma'
   $ cd ..
 
 pull everything else
diff --git a/tests/test-push.t b/tests/test-push.t
index a7da97e69d56a7edc284cd7cfe1f552c9288d45d_dGVzdHMvdGVzdC1wdXNoLnQ=..c4849b2dab87434439793ec708760dd6d8d9c84d_dGVzdHMvdGVzdC1wdXNoLnQ= 100644
--- a/tests/test-push.t
+++ b/tests/test-push.t
@@ -7,28 +7,6 @@
 bail if the user does not have dulwich
   $ python -c 'import dulwich, dulwich.repo' || exit 80
 
-  $ 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`
-  > }
-  $ hgcommit()
-  > {
-  >     HGDATE="2007-01-01 00:00:$count +0000"
-  >     hg commit -d "$HGDATE" "$@" >/dev/null 2>/dev/null || echo "hg commit error"
-  >     count=`expr $count + 1`
-  > }
-
   $ mkdir gitrepo
   $ cd gitrepo
   $ git init
@@ -36,7 +14,7 @@
 
   $ echo alpha > alpha
   $ git add alpha
-  $ commit -m "add alpha"
+  $ fn_git_commit -m "add alpha"
   $ git checkout -b not-master 2>&1 | sed s/\'/\"/g
   Switched to a new branch "not-master"
 
@@ -48,8 +26,8 @@
   $ cd hgrepo
   $ echo beta > beta
   $ hg add beta
-  $ hgcommit -m 'add beta'
+  $ fn_hg_commit -m 'add beta'
 
 
   $ echo gamma > gamma
   $ hg add gamma
@@ -52,8 +30,8 @@
 
 
   $ echo gamma > gamma
   $ hg add gamma
-  $ hgcommit -m 'add gamma'
+  $ fn_hg_commit -m 'add gamma'
 
   $ hg book -r 1 beta
   $ hg push -r beta
@@ -76,7 +54,7 @@
   Switched to branch "master"
   $ echo delta > delta
   $ git add delta
-  $ commit -m "add delta"
+  $ fn_git_commit -m "add delta"
   $ git checkout not-master 2>&1 | sed s/\'/\"/g
   Switched to branch "not-master"
 
diff --git a/tests/test-subrepos.t b/tests/test-subrepos.t
index a7da97e69d56a7edc284cd7cfe1f552c9288d45d_dGVzdHMvdGVzdC1zdWJyZXBvcy50..c4849b2dab87434439793ec708760dd6d8d9c84d_dGVzdHMvdGVzdC1zdWJyZXBvcy50 100644
--- a/tests/test-subrepos.t
+++ b/tests/test-subrepos.t
@@ -7,32 +7,9 @@
 bail if the user does not have dulwich
   $ python -c 'import dulwich, dulwich.repo' || exit 80
 
-  $ 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
-  $ gitcommit()
-  > {
-  >     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`
-  > }
-  $ hgcommit()
-  > {
-  >     HGDATE="2007-01-01 00:00:$count +0000"
-  >     hg commit -d "$HGDATE" "$@" >/dev/null 2>/dev/null || echo "hg commit error"
-  >     count=`expr $count + 1`
-  > }
-
-
   $ mkdir gitsubrepo
   $ cd gitsubrepo
   $ git init
   Initialized empty Git repository in $TESTTMP/gitsubrepo/.git/
   $ echo beta > beta
   $ git add beta
@@ -33,10 +10,10 @@
   $ mkdir gitsubrepo
   $ cd gitsubrepo
   $ git init
   Initialized empty Git repository in $TESTTMP/gitsubrepo/.git/
   $ echo beta > beta
   $ git add beta
-  $ gitcommit -m 'add beta'
+  $ fn_git_commit -m 'add beta'
   $ cd ..
 
   $ mkdir gitrepo1
@@ -45,7 +22,7 @@
   Initialized empty Git repository in $TESTTMP/gitrepo1/.git/
   $ echo alpha > alpha
   $ git add alpha
-  $ gitcommit -m 'add alpha'
+  $ fn_git_commit -m 'add alpha'
   $ git submodule add ../gitsubrepo subrepo1
   Cloning into 'subrepo1'...
   done.
@@ -49,7 +26,7 @@
   $ git submodule add ../gitsubrepo subrepo1
   Cloning into 'subrepo1'...
   done.
-  $ gitcommit -m 'add subrepo1'
+  $ fn_git_commit -m 'add subrepo1'
   $ git submodule add ../gitsubrepo xyz/subrepo2
   Cloning into 'xyz/subrepo2'...
   done.
@@ -53,7 +30,7 @@
   $ git submodule add ../gitsubrepo xyz/subrepo2
   Cloning into 'xyz/subrepo2'...
   done.
-  $ gitcommit -m 'add subrepo2'
+  $ fn_git_commit -m 'add subrepo2'
 we are going to push to this repo from our hg clone,
 allow commits despite working copy presense
   $ git config receive.denyCurrentBranch ignore
@@ -95,7 +72,7 @@
   $ cd gitsubrepo
   $ echo gamma > gamma
   $ git add gamma
-  $ gitcommit -m 'add gamma'
+  $ fn_git_commit -m 'add gamma'
   $ cd ..
   $ cd hgrepo
   $ cd xyz/subrepo2
@@ -134,8 +111,8 @@
   $ cd hgsub
   $ echo delta > delta
   $ hg add delta
-  $ hgcommit -m "add delta"
+  $ fn_hg_commit -m "add delta"
   $ echo "`hg tip --template '{node}'` hgsub" > ../gitrepo1/.hgsubstate
   $ echo "hgsub = $(pwd)" > ../gitrepo1/.hgsub
   $ cd ../gitrepo1
   $ git add .hgsubstate .hgsub
@@ -138,8 +115,8 @@
   $ echo "`hg tip --template '{node}'` hgsub" > ../gitrepo1/.hgsubstate
   $ echo "hgsub = $(pwd)" > ../gitrepo1/.hgsub
   $ cd ../gitrepo1
   $ git add .hgsubstate .hgsub
-  $ gitcommit -m "Test3. Prepare .hgsub and .hgsubstate sources"
+  $ fn_git_commit -m "Test3. Prepare .hgsub and .hgsubstate sources"
   $ cd ../hgrepo
   $ hg pull
   pulling from $TESTTMP/gitrepo1
diff --git a/tests/test-tree-decomposition.t b/tests/test-tree-decomposition.t
index a7da97e69d56a7edc284cd7cfe1f552c9288d45d_dGVzdHMvdGVzdC10cmVlLWRlY29tcG9zaXRpb24udA==..c4849b2dab87434439793ec708760dd6d8d9c84d_dGVzdHMvdGVzdC10cmVlLWRlY29tcG9zaXRpb24udA== 100644
--- a/tests/test-tree-decomposition.t
+++ b/tests/test-tree-decomposition.t
@@ -7,22 +7,6 @@
 bail if the user does not have dulwich
   $ python -c 'import dulwich, dulwich.repo' || exit 80
 
-  $ 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 gitrepo
   $ cd gitrepo
   $ git init
@@ -32,7 +16,7 @@
   $ echo a > d1/f1
   $ echo b > d1/f2
   $ git add d1/f1 d1/f2
-  $ commit -m initial
+  $ fn_git_commit -m initial
 
   $ mkdir d2
   $ git mv d1/f2 d2/f2
@@ -36,8 +20,8 @@
 
   $ mkdir d2
   $ git mv d1/f2 d2/f2
-  $ commit -m 'rename'
+  $ fn_git_commit -m 'rename'
 
   $ rm -r d1
   $ echo c > d1
   $ git add d1
@@ -40,8 +24,8 @@
 
   $ rm -r d1
   $ echo c > d1
   $ git add d1
-  $ commit -m 'replace a dir with a file'
+  $ fn_git_commit -m 'replace a dir with a file'
 
 
   $ cd ..
diff --git a/tests/testutil b/tests/testutil
index a7da97e69d56a7edc284cd7cfe1f552c9288d45d_dGVzdHMvdGVzdHV0aWw=..c4849b2dab87434439793ec708760dd6d8d9c84d_dGVzdHMvdGVzdHV0aWw= 100755
--- a/tests/testutil
+++ b/tests/testutil
@@ -10,3 +10,39 @@
 # Not needed in Mercurial 2.3+, as graphlog was integrated into core
 echo 'graphlog=' >> $HGRCPATH
 echo 'mq=' >> $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
+
+# Functions to commit and tag in Mercurial and Git in a predictable manner
+count=10
+
+fn_git_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`
+}
+
+fn_hg_commit() {
+    HGDATE="2007-01-01 00:00:$count +0000"
+    hg commit -d "$HGDATE" "$@" >/dev/null 2>/dev/null || echo "hg commit error"
+    count=`expr $count + 1`
+}
+
+fn_git_tag() {
+    GIT_AUTHOR_DATE="2007-01-01 00:00:$count +0000"
+    GIT_COMMITTER_DATE="$GIT_AUTHOR_DATE"
+    git tag "$@" >/dev/null 2>/dev/null || echo "git tag error"
+    count=`expr $count + 1`
+}
+
+fn_hg_tag() {
+    HGDATE="2007-01-01 00:00:$count +0000"
+    hg tag -d "$HGDATE" "$@" >/dev/null 2>/dev/null || echo "hg tag error"
+    count=`expr $count + 1`
+}