[PATCH] t9605: test for cvsps commit ordering bug
From: Chris Rorvick <hidden>
Date: 2016-06-15 22:55:43
Subsystem:
the rest · Maintainer:
Linus Torvalds
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 done
cvsps 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.2
This is seen in cvsps versions 2.x and up through at least 3.7.
Signed-off-by: Chris Rorvick <redacted>
---
Ran into this recently. No branching and no "criss cross" timestamps,
just lazy commit messages. And it magically backed out a bug fix.
This applies on top of master. With minor modifications I've tested it
with Eric's latest code and confirmed the bug still exists.
Chris
t/t9605-cvsimport-commit-order.sh | 25 +++++++++++++++
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, 138 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
diff --git a/t/t9605-cvsimport-commit-order.sh b/t/t9605-cvsimport-commit-order.sh
new file mode 100755
index 0000000..ab4042e
--- /dev/null
+++ b/t/t9605-cvsimport-commit-order.sh@@ -0,0 +1,25 @@ +#!/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 && +false +' + +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