> All that's really "automatic magic" in the vendor branch support is the
> fact that "cvs import" automatically creates the branch structure, and
> any truly obvious conflicts with local changes on the trunk are detected
> and reported so that the maintainer can have some indication as to how
> difficult the creation of a local release might be. In the end it might
> be just as easy to skip the automatic conflict detection, in which case
> it's really pointless to use a magic "vendor" branch -- it would be just
> as easy to import the vendor release directly to the trunk and to create
> normal branches to identify local changes, re-starting a new local
> "release" branch after every import.
If I understand this correctly, you are saying to use the trunk for the
vendor, and branches for local; the opposite of the default (branch for
vendor, trunk for local).
How do you do the import then? (what is the command for 'take this
directory tree, stick it on the trunk as the current head, including
removed or added files or sub-directories'?)
For that matter, what if I wanted to put it on a branch other than the
vendor branch? I can specify a three digit branch to import, but unless
I've just done a 'commit -r2', that's not really useful. -- HEY, THAT'S
A GOOD USE OF REVISION IN CVS! (Comments please, before I shoot myself
using it)
> i.e. do a three-way diff between the head of the trunk and the head of
> the vendor branch (i.e. the revision as of the previous import), and
> /dev/null, with conflict markers. In my example from earlier today I
> don't have enough lines of text to really show this properly, but
> perhaps it'll do:
>
> $ cat foo.c-1.2
> foo
> barf
> $ cat foo.c-1.1.1.1
> foo
> $ diff3 -aAm foo.c-1.2 foo.c-1.1.1.1 /dev/null
> <<<<<<< foo.c-1.2
> foo
> barf
> ||||||| foo.c-1.1.1.1
> foo
> =======
> >>>>>>> /dev/null
I hate to admit it, but I had compeletly forgotten about diff3, or even
realized that that was the tool being used for the conflict marking :-).
Just as an aside, something that actually came up yesturday; I'm hoping
that you might have an idea on. We had a source directory that was being
re-organized on a branch. One of the files was modified on the trunk,
and had some stuff (two routines) deleted. All of the old stuff was
empty files on the branch (the re-organization was a complete
re-structuring of the project).
I was trying to figure out some way to say "Here is the stuff that has
been added to the trunk since the branch was created, and here is the
stuff that was deleted from the trunk since the branch was created", in
the conflict format (easy enough in the patch format, but less useful
for the cleanup/reorganization
The 'additions' were easy enough, but I still can't figure out how to
get the deletions into conflict format. Any ideas?
Michael