diff tests/test-fastimport-cvs2git-fixup @ 39:177a133519bc

Handle fixup branches for tag/branch creation better. - ensure that fixup commits actually become Mercurial changesets (rather than dropping them on the floor) - pretend that fixup commits happen on the same branch as the previous commit - don't track fixup commits as branch heads - add test-fastimport-cvs2git-fixup (currently failing because tags are not converted)
author Greg Ward <greg-hg@gerg.ca>
date Sat, 09 May 2009 18:52:33 -0400
parents
children 71f1e5ed6213
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-fastimport-cvs2git-fixup	Sat May 09 18:52:33 2009 -0400
@@ -0,0 +1,136 @@
+#!/bin/sh
+
+# Test a dump created by cvs2git from a CVS repository with branches and
+# tags.  Specifically, we're looking at the creation of a new branch
+# REL-2-2-3 where the branch point is tagged REL-2-2-3-P1.
+
+# Rather than create an artificial example, this is derived from
+# a real-life CVS repository.
+
+. $TESTDIR/fastimport-common
+
+cat > git-blob.dat <<EOF
+blob
+mark :2308
+data 5
+boo!
+
+blob
+mark :14693
+data 18
+# Doxyfile 1.2.14
+
+blob
+mark :11363
+data 6
+hello
+
+EOF
+
+# XXX this is the dump that cvs2git actually produces.  Subtle
+# bogosities:
+#  - commit 1619 has no first parent, but the "merge" directive
+#    (second parent) points to the commit that should be its first parent
+#  - commit 1620 should have 1619 as its first parent, but 1619 is
+#    set to the second parent... and there is no first parent
+#
+# I'm not using this one; I'm just recording it here to vent about
+# cvs2git.  See below for the dump that I want cvs2git to produce,
+# and the one that is correctly handled by hg-fastimport.
+#cat > git-dump.dat <<EOF
+cat > /dev/null <<EOF
+commit refs/heads/master
+mark :1000000373
+committer Example <example> 991793180 +0000
+data 15
+added Makefile
+
+M 100644 :2308 Makefile
+
+commit refs/heads/REL-2-2-3
+mark :1000001619
+committer cvs2git <cvs2git> 1022533494 +0000
+data 47
+create branch 'REL-2-2-3' (manufactured commit)
+merge :1000000373
+M 100644 :2308 Makefile
+
+commit refs/heads/TAG.FIXUP
+mark :1000001620
+committer cvs2git <cvs2git> 1022533495 +0000
+data 47
+create tag 'REL-2-2-3-P1' (manufactured commit)
+merge :1000001619
+M 100644 :14693 Tools/Debug/C++/DebugCpp.doxygen
+
+reset refs/tags/REL-2-2-3-P1
+from :1000001620
+reset refs/heads/TAG.FIXUP
+
+commit refs/heads/master
+mark :1000001621
+committer Other <other@example.com> 1022536868 +0000
+data 18
+added iostream.h
+
+M 100644 :11363 main.cpp
+EOF
+
+# XXX this is the dump that I think cvs2git *should* produce, not what
+# it actually does produce (hmmm)
+cat > git-dump.dat <<EOF
+commit refs/heads/master
+mark :1000000373
+committer Example <example> 991793180 +0000
+data 15
+added Makefile
+
+M 100644 :2308 Makefile
+
+commit refs/heads/REL-2-2-3
+mark :1000001619
+committer cvs2git <cvs2git> 1022533494 +0000
+data 47
+create branch 'REL-2-2-3' (manufactured commit)
+from :1000000373
+M 100644 :2308 Makefile
+
+commit refs/heads/TAG.FIXUP
+mark :1000001620
+committer cvs2git <cvs2git> 1022533495 +0000
+data 47
+create tag 'REL-2-2-3-P1' (manufactured commit)
+from :1000001619
+M 100644 :14693 Tools/Debug/C++/DebugCpp.doxygen
+
+reset refs/tags/REL-2-2-3-P1
+from :1000001620
+reset refs/heads/TAG.FIXUP
+
+commit refs/heads/master
+mark :1000001621
+committer Other <other@example.com> 1022536868 +0000
+data 18
+added iostream.h
+
+M 100644 :11363 main.cpp
+EOF
+
+echo "% import cvs2git with branch/tag"
+set -e
+hg init realcvs
+hg -R realcvs fastimport git-blob.dat git-dump.dat \
+  | sed "s|$HGTMP|HGTMP|g"
+
+echo "% hg glog"
+cd realcvs
+hg glog -v
+
+echo "% hg branches"
+hg branches
+
+echo "% hg heads -v"
+hg heads
+
+echo "% hg tags -v"
+hg tags