Import of a trivial CVS repository fails due to a cvsps bug. Given the following series of commits:
timestamp a b c message
------------------- --- --- --- -------
2012/12/12 21:09:39 1.1 changes are done
2012/12/12 21:09:44 1.1 changes
2012/12/12 21:09:46 1.2 changes
2012/12/12 21:09:50 1.1 1.3 changes are donecvsps mangles the commit ordering (edited for brevity):
---------------------
PatchSet 1
Date: 2012/12/12 15:09:39
Log:
changes are done Members:
a:INITIAL->1.1
b:INITIAL->1.1
c:1.2->1.3 ---------------------
PatchSet 2
Date: 2012/12/12 15:09:44
Log:
changes Members:
c:INITIAL->1.1 ---------------------
PatchSet 3
Date: 2012/12/12 15:09:46
Log:
changes Members:
c:1.1->1.2This is seen in cvsps versions 2.x and up through at least 3.7.
Signed-off-by: Chris Rorvick <chris@rorvick.com> ---
It actually does fail without the "&& false" at the end. :-P Sorry for the noise.
t/t9605-cvsimport-commit-order.sh | 24 +++++++++++++++ t/t9605/cvsroot/.gitattributes | 1 + t/t9605/cvsroot/CVSROOT/.gitignore | 2 ++ t/t9605/cvsroot/module/a,v | 24 +++++++++++++++ t/t9605/cvsroot/module/b,v | 24 +++++++++++++++ t/t9605/cvsroot/module/c,v | 62 ++++++++++++++++++++++++++++++++++++++ 6 files changed, 137 insertions(+) create mode 100755 t/t9605-cvsimport-commit-order.sh create mode 100644 t/t9605/cvsroot/.gitattributes create mode 100644 t/t9605/cvsroot/CVSROOT/.gitignore create mode 100644 t/t9605/cvsroot/module/a,v create mode 100644 t/t9605/cvsroot/module/b,v create mode 100644 t/t9605/cvsroot/module/c,v
Show changes to 6 files +137 −0
t/t9605-cvsimport-commit-order.sh, t/t9605/cvsroot/.gitattributes, t/t9605/cvsroot/CVSROOT/.gitignore, t/t9605/cvsroot/module/a,v, t/t9605/cvsroot/module/b,v, t/t9605/cvsroot/module/c,v
diff --git a/t/t9605-cvsimport-commit-order.sh b/t/t9605-cvsimport-commit-order.sh new file mode 100755 index 0000000..86aafd1 --- /dev/null +++ b/t/t9605-cvsimport-commit-order.sh @@ -0,0 +1,24 @@ +#!/bin/sh + +test_description='git cvsimport commit order' +. ./lib-cvs.sh + +setup_cvs_test_repository t9605 + +test_expect_success 'checkout with CVS' ' + + echo CVSROOT=$CVSROOT && + cvs checkout -d module-cvs module +' + +test_expect_failure 'import into git (commit order mangled)' ' + + git cvsimport -R -a -p"-x" -C module-git module && + ( + cd module-git && + git merge origin + ) && + test_cmp module-cvs/c module-git/c +' + +test_done diff --git a/t/t9605/cvsroot/.gitattributes b/t/t9605/cvsroot/.gitattributes new file mode 100644 index 0000000..562b12e --- /dev/null +++ b/t/t9605/cvsroot/.gitattributes @@ -0,0 +1 @@ +* -whitespace diff --git a/t/t9605/cvsroot/CVSROOT/.gitignore b/t/t9605/cvsroot/CVSROOT/.gitignore new file mode 100644 index 0000000..3bb9b34 --- /dev/null +++ b/t/t9605/cvsroot/CVSROOT/.gitignore @@ -0,0 +1,2 @@ +history +val-tags diff --git a/t/t9605/cvsroot/module/a,v b/t/t9605/cvsroot/module/a,v new file mode 100644 index 0000000..6455911 --- /dev/null +++ b/t/t9605/cvsroot/module/a,v @@ -0,0 +1,24 @@ +head 1.1; +access; +symbols; +locks; strict; +comment @# @; + + +1.1 +date 2012.12.12.21.09.39; author tester; state Exp; +branches; +next ; + + +desc +@@ + + +1.1 +log +@changes are done +@ +text +@file a +@ diff --git a/t/t9605/cvsroot/module/b,v b/t/t9605/cvsroot/module/b,v new file mode 100644 index 0000000..55545c8 --- /dev/null +++ b/t/t9605/cvsroot/module/b,v @@ -0,0 +1,24 @@ +head 1.1; +access; +symbols; +locks; strict; +comment @# @; + + +1.1 +date 2012.12.12.21.09.50; author tester; state Exp; +branches; +next ; + + +desc +@@ + + +1.1 +log +@changes are done +@ +text +@file b +@ diff --git a/t/t9605/cvsroot/module/c,v b/t/t9605/cvsroot/module/c,v new file mode 100644 index 0000000..d3eac77 --- /dev/null +++ b/t/t9605/cvsroot/module/c,v @@ -0,0 +1,62 @@ +head 1.3; +access; +symbols; +locks; strict; +comment @# @; + + +1.3 +date 2012.12.12.21.09.50; author tester; state Exp; +branches; +next 1.2; + +1.2 +date 2012.12.12.21.09.46; author tester; state Exp; +branches; +next 1.1; + +1.1 +date 2012.12.12.21.09.44; author tester; state Exp; +branches; +next ; + + +desc +@@ + + +1.3 +log +@changes are done +@ +text +@file c +line two +line three +line four +line five +@ + + +1.2 +log +@changes +@ +text +@d2 4 +a5 4 +line 2 +line 3 +line 4 +line 5 +@ + + +1.1 +log +@changes +@ +text +@d2 4 +@ +
-- 1.8.1.rc3.335.g88a67d6