Add a test of "git cvsimport"'s handling of tags and branches

6 out of 11 of these tests fail.

The test CVS repository used for these tests is derived from one in
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:14 +01:00 committed by Junio C Hamano
parent b225290445
commit 0dc062122e
12 changed files with 921 additions and 0 deletions

View file

@ -0,0 +1,79 @@
#!/bin/sh
# A description of the repository used for this test can be found in
# t9602/README.
test_description='git cvsimport handling of branches and tags'
. ./lib-cvs.sh
CVSROOT="$TEST_DIRECTORY"/t9602/cvsroot
export CVSROOT
test_expect_success 'import module' '
git cvsimport -C module-git module
'
test_expect_success 'test branch master' '
test_cmp_branch_tree master
'
test_expect_success 'test branch vendorbranch' '
test_cmp_branch_tree vendorbranch
'
test_expect_failure 'test branch B_FROM_INITIALS' '
test_cmp_branch_tree B_FROM_INITIALS
'
test_expect_failure 'test branch B_FROM_INITIALS_BUT_ONE' '
test_cmp_branch_tree B_FROM_INITIALS_BUT_ONE
'
test_expect_failure 'test branch B_MIXED' '
test_cmp_branch_tree B_MIXED
'
test_expect_success 'test branch B_SPLIT' '
test_cmp_branch_tree B_SPLIT
'
test_expect_failure 'test tag vendortag' '
test_cmp_branch_tree vendortag
'
test_expect_success 'test tag T_ALL_INITIAL_FILES' '
test_cmp_branch_tree T_ALL_INITIAL_FILES
'
test_expect_failure 'test tag T_ALL_INITIAL_FILES_BUT_ONE' '
test_cmp_branch_tree T_ALL_INITIAL_FILES_BUT_ONE
'
test_expect_failure 'test tag T_MIXED' '
test_cmp_branch_tree T_MIXED
'
test_done

62
t/t9602/README Normal file
View file

@ -0,0 +1,62 @@
This repository is for testing the ability to group revisions
correctly along tags and branches. Here is its history:
1. The initial import (revision 1.1 of everybody) created a
directory structure with a file named `default' in each dir:
./
default
sub1/default
subsubA/default
subsubB/default
sub2/default
subsubA/default
sub3/default
2. Then tagged everyone with T_ALL_INITIAL_FILES.
3. Then tagged everyone except sub1/subsubB/default with
T_ALL_INITIAL_FILES_BUT_ONE.
4. Then created branch B_FROM_INITIALS on everyone.
5. Then created branch B_FROM_INITIALS_BUT_ONE on everyone except
/sub1/subsubB/default.
6. Then committed modifications to two files: sub3/default, and
sub1/subsubA/default.
7. Then committed a modification to all 7 files.
8. Then backdated sub3/default to revision 1.2, and
sub2/subsubA/default to revision 1.1, and tagged with T_MIXED.
9. Same as 8, but tagged with -b to create branch B_MIXED.
10. Switched the working copy to B_MIXED, and added
sub2/branch_B_MIXED_only. (That's why the RCS file is in
sub2/Attic/ -- it never existed on trunk.)
11. In one commit, modified default, sub1/default, and
sub2/subsubA/default, on branch B_MIXED.
12. Did "cvs up -A" on sub2/default, then in one commit, made a
change to sub2/default and sub2/branch_B_MIXED_only. So this
commit should be spread between the branch and the trunk.
13. Do "cvs up -A" to get everyone back to trunk, then make a new
branch B_SPLIT on everyone except sub1/subsubB/default,v.
14. Switch to branch B_SPLIT (see sub1/subsubB/default disappear)
and commit a change that affects everyone except sub3/default.
15. An hour or so later, "cvs up -A" to get sub1/subsubB/default
back, then commit a change on that file, on trunk. (It's
important that this change happened after the previous commits
on B_SPLIT.)
16. Branch sub1/subsubB/default to B_SPLIT, then "cvs up -r B_SPLIT"
to switch the whole working copy to the branch.
17. Commit a change on B_SPLIT, to sub1/subsubB/default and
sub3/default.

1
t/t9602/cvsroot/.gitattributes vendored Normal file
View file

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

2
t/t9602/cvsroot/CVSROOT/.gitignore vendored Normal file
View file

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

View file

@ -0,0 +1,102 @@
head 1.2;
access;
symbols
B_SPLIT:1.2.0.4
B_MIXED:1.2.0.2
T_MIXED:1.2
B_FROM_INITIALS_BUT_ONE:1.1.1.1.0.4
B_FROM_INITIALS:1.1.1.1.0.2
T_ALL_INITIAL_FILES_BUT_ONE:1.1.1.1
T_ALL_INITIAL_FILES:1.1.1.1
vendortag:1.1.1.1
vendorbranch:1.1.1;
locks; strict;
comment @# @;
1.2
date 2003.05.23.00.17.53; author jrandom; state Exp;
branches
1.2.2.1
1.2.4.1;
next 1.1;
1.1
date 2003.05.22.23.20.19; author jrandom; state Exp;
branches
1.1.1.1;
next ;
1.1.1.1
date 2003.05.22.23.20.19; author jrandom; state Exp;
branches;
next ;
1.2.2.1
date 2003.05.23.00.31.36; author jrandom; state Exp;
branches;
next ;
1.2.4.1
date 2003.06.03.03.20.31; author jrandom; state Exp;
branches;
next ;
desc
@@
1.2
log
@Second commit to proj, affecting all 7 files.
@
text
@This is the file `default' in the top level of the project.
Every directory in the `proj' project has a file named `default'.
This line was added in the second commit (affecting all 7 files).
@
1.2.4.1
log
@First change on branch B_SPLIT.
This change excludes sub3/default, because it was not part of this
commit, and sub1/subsubB/default, which is not even on the branch yet.
@
text
@a5 2
First change on branch B_SPLIT.
@
1.2.2.1
log
@Modify three files, on branch B_MIXED.
@
text
@a5 2
This line was added on branch B_MIXED only (affecting 3 files).
@
1.1
log
@Initial revision
@
text
@d4 2
@
1.1.1.1
log
@Initial import.
@
text
@@

View file

@ -0,0 +1,102 @@
head 1.2;
access;
symbols
B_SPLIT:1.2.0.4
B_MIXED:1.2.0.2
T_MIXED:1.2
B_FROM_INITIALS_BUT_ONE:1.1.1.1.0.4
B_FROM_INITIALS:1.1.1.1.0.2
T_ALL_INITIAL_FILES_BUT_ONE:1.1.1.1
T_ALL_INITIAL_FILES:1.1.1.1
vendortag:1.1.1.1
vendorbranch:1.1.1;
locks; strict;
comment @# @;
1.2
date 2003.05.23.00.17.53; author jrandom; state Exp;
branches
1.2.2.1
1.2.4.1;
next 1.1;
1.1
date 2003.05.22.23.20.19; author jrandom; state Exp;
branches
1.1.1.1;
next ;
1.1.1.1
date 2003.05.22.23.20.19; author jrandom; state Exp;
branches;
next ;
1.2.2.1
date 2003.05.23.00.31.36; author jrandom; state Exp;
branches;
next ;
1.2.4.1
date 2003.06.03.03.20.31; author jrandom; state Exp;
branches;
next ;
desc
@@
1.2
log
@Second commit to proj, affecting all 7 files.
@
text
@This is sub1/default.
Every directory in the `proj' project has a file named `default'.
This line was added in the second commit (affecting all 7 files).
@
1.2.4.1
log
@First change on branch B_SPLIT.
This change excludes sub3/default, because it was not part of this
commit, and sub1/subsubB/default, which is not even on the branch yet.
@
text
@a5 2
First change on branch B_SPLIT.
@
1.2.2.1
log
@Modify three files, on branch B_MIXED.
@
text
@a5 2
This line was added on branch B_MIXED only (affecting 3 files).
@
1.1
log
@Initial revision
@
text
@d4 2
@
1.1.1.1
log
@Initial import.
@
text
@@

View file

@ -0,0 +1,101 @@
head 1.3;
access;
symbols
B_SPLIT:1.3.0.4
B_MIXED:1.3.0.2
T_MIXED:1.3
B_FROM_INITIALS_BUT_ONE:1.1.1.1.0.4
B_FROM_INITIALS:1.1.1.1.0.2
T_ALL_INITIAL_FILES_BUT_ONE:1.1.1.1
T_ALL_INITIAL_FILES:1.1.1.1
vendortag:1.1.1.1
vendorbranch:1.1.1;
locks; strict;
comment @# @;
1.3
date 2003.05.23.00.17.53; author jrandom; state Exp;
branches
1.3.4.1;
next 1.2;
1.2
date 2003.05.23.00.15.26; author jrandom; state Exp;
branches;
next 1.1;
1.1
date 2003.05.22.23.20.19; author jrandom; state Exp;
branches
1.1.1.1;
next ;
1.1.1.1
date 2003.05.22.23.20.19; author jrandom; state Exp;
branches;
next ;
1.3.4.1
date 2003.06.03.03.20.31; author jrandom; state Exp;
branches;
next ;
desc
@@
1.3
log
@Second commit to proj, affecting all 7 files.
@
text
@This is sub1/subsubA/default.
Every directory in the `proj' project has a file named `default'.
This line was added by the first commit (affecting two files).
This line was added in the second commit (affecting all 7 files).
@
1.3.4.1
log
@First change on branch B_SPLIT.
This change excludes sub3/default, because it was not part of this
commit, and sub1/subsubB/default, which is not even on the branch yet.
@
text
@a7 2
First change on branch B_SPLIT.
@
1.2
log
@First commit to proj, affecting two files.
@
text
@d6 2
@
1.1
log
@Initial revision
@
text
@d4 2
@
1.1.1.1
log
@Initial import.
@
text
@@

View file

@ -0,0 +1,107 @@
head 1.3;
access;
symbols
B_SPLIT:1.3.0.2
B_MIXED:1.2.0.2
T_MIXED:1.2
B_FROM_INITIALS:1.1.1.1.0.2
T_ALL_INITIAL_FILES:1.1.1.1
vendortag:1.1.1.1
vendorbranch:1.1.1;
locks; strict;
comment @# @;
1.3
date 2003.06.03.04.29.14; author jrandom; state Exp;
branches
1.3.2.1;
next 1.2;
1.2
date 2003.05.23.00.17.53; author jrandom; state Exp;
branches;
next 1.1;
1.1
date 2003.05.22.23.20.19; author jrandom; state Exp;
branches
1.1.1.1;
next ;
1.1.1.1
date 2003.05.22.23.20.19; author jrandom; state Exp;
branches;
next ;
1.3.2.1
date 2003.06.03.04.33.13; author jrandom; state Exp;
branches;
next ;
desc
@@
1.3
log
@A trunk change to sub1/subsubB/default. This was committed about an
hour after an earlier change that affected most files on branch
B_SPLIT. This file is not on that branch yet, but after this commit,
we'll branch to B_SPLIT, albeit rooted in a revision that didn't exist
at the time the rest of B_SPLIT was created.
@
text
@This is sub1/subsubB/default.
Every directory in the `proj' project has a file named `default'.
This line was added in the second commit (affecting all 7 files).
This bit was committed on trunk about an hour after an earlier change
to everyone else on branch B_SPLIT. Afterwards, we'll finally branch
this file to B_SPLIT, but rooted in a revision that didn't exist at
the time the rest of B_SPLIT was created.
@
1.3.2.1
log
@This change affects sub3/default and sub1/subsubB/default, on branch
B_SPLIT. Note that the latter file did not even exist on this branch
until after some other files had had revisions committed on B_SPLIT.
@
text
@a10 4
This change affects sub3/default and sub1/subsubB/default, on branch
B_SPLIT. Note that the latter file did not even exist on this branch
until after some other files had had revisions committed on B_SPLIT.
@
1.2
log
@Second commit to proj, affecting all 7 files.
@
text
@d6 5
@
1.1
log
@Initial revision
@
text
@d4 2
@
1.1.1.1
log
@Initial import.
@
text
@@

View file

@ -0,0 +1,59 @@
head 1.1;
access;
symbols
B_MIXED:1.1.0.2;
locks; strict;
comment @# @;
1.1
date 2003.05.23.00.25.26; author jrandom; state dead;
branches
1.1.2.1;
next ;
1.1.2.1
date 2003.05.23.00.25.26; author jrandom; state Exp;
branches;
next 1.1.2.2;
1.1.2.2
date 2003.05.23.00.48.51; author jrandom; state Exp;
branches;
next ;
desc
@@
1.1
log
@file branch_B_MIXED_only was initially added on branch B_MIXED.
@
text
@@
1.1.2.1
log
@Add a file on branch B_MIXED.
@
text
@a0 1
This file was added on branch B_MIXED. It never existed on trunk.
@
1.1.2.2
log
@A single commit affecting one file on branch B_MIXED and one on trunk.
@
text
@a1 3
The same commit added these two lines here on branch B_MIXED, and two
similar lines to ./default on trunk.
@

View file

@ -0,0 +1,102 @@
head 1.3;
access;
symbols
B_SPLIT:1.3.0.2
B_MIXED:1.2.0.2
T_MIXED:1.2
B_FROM_INITIALS_BUT_ONE:1.1.1.1.0.4
B_FROM_INITIALS:1.1.1.1.0.2
T_ALL_INITIAL_FILES_BUT_ONE:1.1.1.1
T_ALL_INITIAL_FILES:1.1.1.1
vendortag:1.1.1.1
vendorbranch:1.1.1;
locks; strict;
comment @# @;
1.3
date 2003.05.23.00.48.51; author jrandom; state Exp;
branches
1.3.2.1;
next 1.2;
1.2
date 2003.05.23.00.17.53; author jrandom; state Exp;
branches;
next 1.1;
1.1
date 2003.05.22.23.20.19; author jrandom; state Exp;
branches
1.1.1.1;
next ;
1.1.1.1
date 2003.05.22.23.20.19; author jrandom; state Exp;
branches;
next ;
1.3.2.1
date 2003.06.03.03.20.31; author jrandom; state Exp;
branches;
next ;
desc
@@
1.3
log
@A single commit affecting one file on branch B_MIXED and one on trunk.
@
text
@This is sub2/default.
Every directory in the `proj' project has a file named `default'.
This line was added in the second commit (affecting all 7 files).
The same commit added these two lines here on trunk, and two similar
lines to ./branch_B_MIXED_only on branch B_MIXED.
@
1.3.2.1
log
@First change on branch B_SPLIT.
This change excludes sub3/default, because it was not part of this
commit, and sub1/subsubB/default, which is not even on the branch yet.
@
text
@a8 2
First change on branch B_SPLIT.
@
1.2
log
@Second commit to proj, affecting all 7 files.
@
text
@d6 3
@
1.1
log
@Initial revision
@
text
@d4 2
@
1.1.1.1
log
@Initial import.
@
text
@@

View file

@ -0,0 +1,102 @@
head 1.2;
access;
symbols
B_SPLIT:1.2.0.2
B_MIXED:1.1.0.2
T_MIXED:1.1
B_FROM_INITIALS_BUT_ONE:1.1.1.1.0.4
B_FROM_INITIALS:1.1.1.1.0.2
T_ALL_INITIAL_FILES_BUT_ONE:1.1.1.1
T_ALL_INITIAL_FILES:1.1.1.1
vendortag:1.1.1.1
vendorbranch:1.1.1;
locks; strict;
comment @# @;
1.2
date 2003.05.23.00.17.53; author jrandom; state Exp;
branches
1.2.2.1;
next 1.1;
1.1
date 2003.05.22.23.20.19; author jrandom; state Exp;
branches
1.1.1.1
1.1.2.1;
next ;
1.1.1.1
date 2003.05.22.23.20.19; author jrandom; state Exp;
branches;
next ;
1.1.2.1
date 2003.05.23.00.31.36; author jrandom; state Exp;
branches;
next ;
1.2.2.1
date 2003.06.03.03.20.31; author jrandom; state Exp;
branches;
next ;
desc
@@
1.2
log
@Second commit to proj, affecting all 7 files.
@
text
@This is sub2/subsub2/default.
Every directory in the `proj' project has a file named `default'.
This line was added in the second commit (affecting all 7 files).
@
1.2.2.1
log
@First change on branch B_SPLIT.
This change excludes sub3/default, because it was not part of this
commit, and sub1/subsubB/default, which is not even on the branch yet.
@
text
@a5 2
First change on branch B_SPLIT.
@
1.1
log
@Initial revision
@
text
@d4 2
@
1.1.2.1
log
@Modify three files, on branch B_MIXED.
@
text
@a3 2
This line was added on branch B_MIXED only (affecting 3 files).
@
1.1.1.1
log
@Initial import.
@
text
@@

View file

@ -0,0 +1,102 @@
head 1.3;
access;
symbols
B_SPLIT:1.3.0.2
B_MIXED:1.2.0.2
T_MIXED:1.2
B_FROM_INITIALS_BUT_ONE:1.1.1.1.0.4
B_FROM_INITIALS:1.1.1.1.0.2
T_ALL_INITIAL_FILES_BUT_ONE:1.1.1.1
T_ALL_INITIAL_FILES:1.1.1.1
vendortag:1.1.1.1
vendorbranch:1.1.1;
locks; strict;
comment @# @;
1.3
date 2003.05.23.00.17.53; author jrandom; state Exp;
branches
1.3.2.1;
next 1.2;
1.2
date 2003.05.23.00.15.26; author jrandom; state Exp;
branches;
next 1.1;
1.1
date 2003.05.22.23.20.19; author jrandom; state Exp;
branches
1.1.1.1;
next ;
1.1.1.1
date 2003.05.22.23.20.19; author jrandom; state Exp;
branches;
next ;
1.3.2.1
date 2003.06.03.04.33.13; author jrandom; state Exp;
branches;
next ;
desc
@@
1.3
log
@Second commit to proj, affecting all 7 files.
@
text
@This is sub3/default.
Every directory in the `proj' project has a file named `default'.
This line was added by the first commit (affecting two files).
This line was added in the second commit (affecting all 7 files).
@
1.3.2.1
log
@This change affects sub3/default and sub1/subsubB/default, on branch
B_SPLIT. Note that the latter file did not even exist on this branch
until after some other files had had revisions committed on B_SPLIT.
@
text
@a7 4
This change affects sub3/default and sub1/subsubB/default, on branch
B_SPLIT. Note that the latter file did not even exist on this branch
until after some other files had had revisions committed on B_SPLIT.
@
1.2
log
@First commit to proj, affecting two files.
@
text
@d6 2
@
1.1
log
@Initial revision
@
text
@d4 2
@
1.1.1.1
log
@Initial import.
@
text
@@