Add some tests of git-cvsimport's handling of vendor branches

CVS's handling of vendor branches is tricky; add some tests to check
whether revisions added via "cvs imports" then imported to git via
"git cvsimport" are reflected correctly on master.

One of these tests fail and is therefore marked "test_expect_failure".
Cvsimport doesn't realize that subsequent changes on a vendor branch
affect master as long as the vendor branch is the default branch.

The test CVS repository used for these tests is derived from cvs2svn's
test suite.

Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Michael Haggerty 2009-02-23 06:08:13 +01:00 committed by Junio C Hamano
parent cefa318ddb
commit b225290445
9 changed files with 413 additions and 0 deletions

View File

@ -0,0 +1,86 @@
#!/bin/sh
# Description of the files in the repository:
#
# imported-once.txt:
#
# Imported once. 1.1 and 1.1.1.1 should be identical.
#
# imported-twice.txt:
#
# Imported twice. HEAD should reflect the contents of the
# second import (i.e., have the same contents as 1.1.1.2).
#
# imported-modified.txt:
#
# Imported, then modified on HEAD. HEAD should reflect the
# modification.
#
# imported-modified-imported.txt:
#
# Imported, then modified on HEAD, then imported again.
#
# added-imported.txt,v:
#
# Added with 'cvs add' to create 1.1, then imported with
# completely different contents to create 1.1.1.1, therefore the
# vendor branch was never the default branch.
#
# imported-anonymously.txt:
#
# Like imported-twice.txt, but with a vendor branch whose branch
# tag has been removed.
test_description='git cvsimport handling of vendor branches'
. ./lib-cvs.sh
CVSROOT="$TEST_DIRECTORY"/t9601/cvsroot
export CVSROOT
test_expect_success 'import a module with a vendor branch' '
git cvsimport -C module-git module
'
test_expect_success 'check HEAD out of cvs repository' 'test_cvs_co master'
test_expect_success 'check master out of git repository' 'test_git_co master'
test_expect_success 'check a file that was imported once' '
test_cmp_branch_file master imported-once.txt
'
test_expect_failure 'check a file that was imported twice' '
test_cmp_branch_file master imported-twice.txt
'
test_expect_success 'check a file that was imported then modified on HEAD' '
test_cmp_branch_file master imported-modified.txt
'
test_expect_success 'check a file that was imported, modified, then imported again' '
test_cmp_branch_file master imported-modified-imported.txt
'
test_expect_success 'check a file that was added to HEAD then imported' '
test_cmp_branch_file master added-imported.txt
'
test_expect_success 'a vendor branch whose tag has been removed' '
test_cmp_branch_file master imported-anonymously.txt
'
test_done

1
t/t9601/cvsroot/.gitattributes vendored Normal file
View File

@ -0,0 +1 @@
* -whitespace

2
t/t9601/cvsroot/CVSROOT/.gitignore vendored Normal file
View File

@ -0,0 +1,2 @@
history
val-tags

View File

@ -0,0 +1,44 @@
head 1.1;
access;
symbols
vtag-4:1.1.1.1
vbranchA:1.1.1;
locks; strict;
comment @# @;
1.1
date 2004.02.09.15.43.15; author kfogel; state Exp;
branches
1.1.1.1;
next ;
1.1.1.1
date 2004.02.09.15.43.16; author kfogel; state Exp;
branches;
next ;
desc
@@
1.1
log
@Add a file to the working copy.
@
text
@Adding this file, before importing it with different contents.
@
1.1.1.1
log
@Import (vbranchA, vtag-4).
@
text
@d1 1
a1 1
This is vtag-4 (on vbranchA) of added-then-imported.txt.
@

View File

@ -0,0 +1,42 @@
head 1.1;
branch 1.1.1;
access;
symbols
vtag-1:1.1.1.1;
locks; strict;
comment @# @;
1.1
date 2004.02.09.15.43.13; author kfogel; state Exp;
branches
1.1.1.1;
next ;
1.1.1.1
date 2004.02.09.15.43.13; author kfogel; state Exp;
branches;
next ;
desc
@@
1.1
log
@Initial revision
@
text
@This is vtag-1 (on vbranchA) of imported-anonymously.txt.
@
1.1.1.1
log
@Import (vbranchA, vtag-1).
@
text
@@

View File

@ -0,0 +1,76 @@
head 1.2;
access;
symbols
vtag-2:1.1.1.2
vtag-1:1.1.1.1
vbranchA:1.1.1;
locks; strict;
comment @# @;
1.2
date 2004.02.09.15.43.14; author kfogel; state Exp;
branches;
next 1.1;
1.1
date 2004.02.09.15.43.13; author kfogel; state Exp;
branches
1.1.1.1;
next ;
1.1.1.1
date 2004.02.09.15.43.13; author kfogel; state Exp;
branches;
next 1.1.1.2;
1.1.1.2
date 2004.02.09.15.43.13; author kfogel; state Exp;
branches;
next ;
desc
@@
1.2
log
@First regular commit, to imported-modified-imported.txt, on HEAD.
@
text
@This is a modification of imported-modified-imported.txt on HEAD.
It should supersede the version from the vendor branch.
@
1.1
log
@Initial revision
@
text
@d1 2
a2 1
This is vtag-1 (on vbranchA) of imported-modified-imported.txt.
@
1.1.1.1
log
@Import (vbranchA, vtag-1).
@
text
@@
1.1.1.2
log
@Import (vbranchA, vtag-2).
@
text
@d1 1
a1 1
This is vtag-2 (on vbranchA) of imported-modified-imported.txt.
@

View File

@ -0,0 +1,59 @@
head 1.2;
access;
symbols
vtag-1:1.1.1.1
vbranchA:1.1.1;
locks; strict;
comment @# @;
1.2
date 2004.02.09.15.43.14; author kfogel; state Exp;
branches;
next 1.1;
1.1
date 2004.02.09.15.43.13; author kfogel; state Exp;
branches
1.1.1.1;
next ;
1.1.1.1
date 2004.02.09.15.43.13; author kfogel; state Exp;
branches;
next ;
desc
@@
1.2
log
@Commit on HEAD.
@
text
@This is a modification of imported-modified.txt on HEAD.
It should supersede the version from the vendor branch.
@
1.1
log
@Initial revision
@
text
@d1 2
a2 1
This is vtag-1 (on vbranchA) of imported-modified.txt.
@
1.1.1.1
log
@Import (vbranchA, vtag-1).
@
text
@@

View File

@ -0,0 +1,43 @@
head 1.1;
branch 1.1.1;
access;
symbols
vtag-1:1.1.1.1
vbranchA:1.1.1;
locks; strict;
comment @# @;
1.1
date 2004.02.09.15.43.13; author kfogel; state Exp;
branches
1.1.1.1;
next ;
1.1.1.1
date 2004.02.09.15.43.13; author kfogel; state Exp;
branches;
next ;
desc
@@
1.1
log
@Initial revision
@
text
@This is vtag-1 (on vbranchA) of imported-once.txt.
@
1.1.1.1
log
@Import (vbranchA, vtag-1).
@
text
@@

View File

@ -0,0 +1,60 @@
head 1.1;
branch 1.1.1;
access;
symbols
vtag-2:1.1.1.2
vtag-1:1.1.1.1
vbranchA:1.1.1;
locks; strict;
comment @# @;
1.1
date 2004.02.09.15.43.13; author kfogel; state Exp;
branches
1.1.1.1;
next ;
1.1.1.1
date 2004.02.09.15.43.13; author kfogel; state Exp;
branches;
next 1.1.1.2;
1.1.1.2
date 2004.02.09.15.43.13; author kfogel; state Exp;
branches;
next ;
desc
@@
1.1
log
@Initial revision
@
text
@This is vtag-1 (on vbranchA) of imported-twice.txt.
@
1.1.1.1
log
@Import (vbranchA, vtag-1).
@
text
@@
1.1.1.2
log
@Import (vbranchA, vtag-2).
@
text
@d1 1
a1 1
This is vtag-2 (on vbranchA) of imported-twice.txt.
@