[cvsnt] Import generates conflict messages, why???

Oliver Giesen ogware at gmx.net
Tue Nov 23 23:14:18 GMT 2004


> OK, so if I do specify a vendor branch when I do the import then on
> the first such import the source files get revision 1.1.1.1 and are on
> the branch (and of course also on trunk).

Why "of course"? There's quite a bit of magic going on at that point...


> But now, when the next load of files are imported using the same
> vendor branch, what happens then with files which have been altered?

Depends on your definition of "altered" here. If you mean altered between
the two imports then yes, the new revision will be 1.1.1.2 and there will be
no revision on the trunk.

Yet, the Vendor branch is special in that you do not have to explicitly
update to it in order to get its revisions. Simply checking out your
(multi-)imported module without specifying any tags, revisions or dates will
give you the most recent revisions from the vendor branch. In this case the
1.1.1.2 revision will actually be the HEAD!

That is because Import changes the "default branch" of files, i.e. the
branch that will be retrieved when you do not explicitly request a specific
branch. It is also the branch to whose tip revision the HEAD symbol refers.
Once you modify and commit a file however, the new revision ends up on the
trunk (typically as 1.2) and the default branch for that file is changed
back to the trunk, hence all future commits will go to the trunk as well.
You could however still do update imports to the vendor branch and then
merge those changes with your local changes. This latter part of course only
really makes sense if you do use Import for managing third-party sources.

In your case, I would just use Import (with vendor branch) to get all those
historic revisions into your repository and then continue work as usual.
After the initial imports files will all have revisions like 1.1.1.1 or
1.1.1.8 but as soon as you start committing manually (in contrast to using
import) they will continue life as 1.2, 1.3, 1.4, etc., just as if there had
never been a branch involved in the whole process.


> Will they not wind up as 1.1.1.2 and no revision on TRUNK?
> If this is so then we have effectively bypassed TRUNK for everything
> except the very first import....

Actually no. Even the very first import goes to the vendor branch instead of
the trunk. However, due to the inner workings of Import this does not imply
that the 1.1 revision is "dead" as it would be if you manually added a file
on a branch initially.

I guess the biggest problem here is understanding the "default branch"
concept and that semantically it is yet subtly different from both the trunk
and the vendor branch. I'd say, why don't you just try it all on a test
repository and see for yourself? ;)


Hope this helps.

-- 
Oliver
----  ------------------
JID:  ogiesen at jabber.org
ICQ:  18777742     (http://wwp.icq.com/18777742)




More information about the cvsnt mailing list