How get (erroneous) baselines created by the SVN import wizard?
I have a SVN repository that is structured like the one in the following example:
component
branches
branch1
branch2
tags
branch1
tag1.1
tag1.2
branch2
tag2.1
tag_on_trunk
trunk
other_component
...
Imagine that each of the leaf folders above contains several eclipse projects. Several issues occur when importing that repository into SCM:
component
branches
branch1
branch2
tags
branch1
tag1.1
tag1.2
branch2
tag2.1
tag_on_trunk
trunk
other_component
...
Imagine that each of the leaf folders above contains several eclipse projects. Several issues occur when importing that repository into SCM:
-
The importer creates two baselines for every tag created for trunk instead of one
Thereby the second baseline contains one additional change set that should not be part of the baseline corresponding to the tag.
-
The importer does not correctly recognize the tags on branches. There are two cases:
-
only one tag for a branch
The importer creates a baseline named like the branch instead of the tag
possible solution: rename manually, but one has to recognize that this case occured (checking whether there is only one tag existing or not and it must not be confused with a tag taken for the trunk)
-
more than one tag exists for a branch
The importer creates a single baseline marked as "partial" which has to be extended by additional imports. Each of this imports afford a lot of manual work, including creation of new workspaces with the appropriate component's baseline included and rerunning the wizard.
-
During import process, the wizard shows any tag (tag1) created for a branch (b1) inside the trunk (e.g. "trunk/tag1"), additionally to its proper place at "tags/b1/tag1"
I can ignore these artificial folders, but perhaps this has anything to do with the other issues? - The situation gets stranger when renaming occurs, see this question.
One answer
The SVN importer was written expecting the repository layout of
trunk
folder1
tags
tag1
folder1
tag2
folder1
folder2
branch
branch1
folder1
branch2
folder1
folder2
Your structure differs from that so the importer is being thrown off. The import should work as expected for branches but will not create the baselines you would like for your tags. This difference in structure is also contributing to what you are seeing in point 3. Suffice it to say that the importer relies a bit too heavily on the assumption that the above pattern is used to organize the repository.
trunk
folder1
tags
tag1
folder1
tag2
folder1
folder2
branch
branch1
folder1
branch2
folder1
folder2
Your structure differs from that so the importer is being thrown off. The import should work as expected for branches but will not create the baselines you would like for your tags. This difference in structure is also contributing to what you are seeing in point 3. Suffice it to say that the importer relies a bit too heavily on the assumption that the above pattern is used to organize the repository.
Comments
I understand that the baselines for the tags on the branches are not created correctly. We will have to decide whether it is worth the effort to migrate those tags / branches manually or not.
But I do not understand how the duplicated baselines arise on trunk. Those are created in the same way as you stated it. And "svn log -v" shows a commit that contains an add-action into tags stated to stem from trunk.
Currently I only see that we have to correct the import manually. But how can I move a change set into a different baseline, and then delete the wrong ones?
Comments
Steffen Weik
Dec 17 '13, 6:17 a.m.I could provide a small svndump but do not know how to attach a file here, any hints about that?