changeset 288:efe9e6a9235f

fix gimport and add test for using to work on hg repos from git (issue 73)
author Abderrahim Kitouni <a.kitouni@gmail.com>
date Fri, 26 Feb 2010 19:27:32 +0100
parents e08a22250fa9
children 0f7db04b8191
files hggit/git_handler.py tests/test-git-workflow tests/test-git-workflow.out
diffstat 3 files changed, 116 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/hggit/git_handler.py
+++ b/hggit/git_handler.py
@@ -352,7 +352,7 @@
         # get a list of all the head shas
         seenheads = set()
         if refs is None:
-            refs = self.git.refs
+            refs = self.git.refs.as_dict()
         if refs:
             for sha in refs.itervalues():
                 # refs contains all the refs in the server, not just the ones
new file mode 100755
--- /dev/null
+++ b/tests/test-git-workflow
@@ -0,0 +1,67 @@
+#!/bin/sh
+
+# Fails for some reason, need to investigate
+# "$TESTDIR/hghave" git || exit 80
+
+# bail if the user does not have dulwich
+python -c 'import dulwich, dulwich.repo' || exit 80
+
+# bail early if the user is already running git-daemon
+echo hi | nc localhost 9418 2>/dev/null && exit 80
+
+echo "[extensions]" >> $HGRCPATH
+echo "hggit=$(echo $(dirname $(dirname $0)))/hggit" >> $HGRCPATH
+echo 'hgext.graphlog =' >> $HGRCPATH
+echo 'hgext.bookmarks =' >> $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`
+}
+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
+hgcommit -m "add alpha"
+hg glog --debug
+
+cd ..
+
+echo % configure for use from git
+hg clone hgrepo gitrepo
+cd gitrepo
+hg book master
+hg up null
+echo "[git]" >> .hg/hgrc
+echo "intree = True" >> .hg/hgrc
+hg gexport
+
+echo % do some work
+git checkout master
+echo beta > beta
+git add beta
+commit -m 'add beta'
+
+echo % get things back to hg
+hg gimport
+hg glog --debug
new file mode 100644
--- /dev/null
+++ b/tests/test-git-workflow.out
@@ -0,0 +1,48 @@
+@  changeset:   0:0221c246a56712c6aa64e5ee382244d8a471b1e2
+   tag:         tip
+   parent:      -1:0000000000000000000000000000000000000000
+   parent:      -1:0000000000000000000000000000000000000000
+   manifest:    0:8b8a0e87dfd7a0706c0524afa8ba67e20544cbf0
+   user:        test
+   date:        Mon Jan 01 00:00:10 2007 +0000
+   files+:      alpha
+   extra:       branch=default
+   description:
+   add alpha
+
+
+% configure for use from git
+updating to branch default
+1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+0 files updated, 0 files merged, 1 files removed, 0 files unresolved
+importing Hg objects into Git
+% do some work
+Already on "master"
+% get things back to hg
+importing Git objects into Hg
+o  changeset:   1:7108ae7bd184226a29b8203619a8253d314643bf
+|  tag:         master
+|  tag:         tip
+|  parent:      0:0221c246a56712c6aa64e5ee382244d8a471b1e2
+|  parent:      -1:0000000000000000000000000000000000000000
+|  manifest:    1:f0bd6fbafbaebe4bb59c35108428f6fce152431d
+|  user:        test <test@example.org>
+|  date:        Mon Jan 01 00:00:11 2007 +0000
+|  files+:      beta
+|  extra:       branch=default
+|  description:
+|  add beta
+|
+|
+o  changeset:   0:0221c246a56712c6aa64e5ee382244d8a471b1e2
+   parent:      -1:0000000000000000000000000000000000000000
+   parent:      -1:0000000000000000000000000000000000000000
+   manifest:    0:8b8a0e87dfd7a0706c0524afa8ba67e20544cbf0
+   user:        test
+   date:        Mon Jan 01 00:00:10 2007 +0000
+   files+:      alpha
+   extra:       branch=default
+   description:
+   add alpha
+
+