First of all, I totally approve of moving to Subversion.

Daniel Berlin wrote:
>I also plan on excluding merge tags

It's not safe to exclude the most recent mergepoint tag for
a live branch.  We will lose necessary information for the next
merge to that branch.

You wrote elsewhere:
>Find the current revision of the apple-ppc-branch using svn info on your
>checked out copy.
Right, this gives the revision number for the apple-ppc-branch.

>From your checked out copy of the apple ppc branch, type:
>
>"svn merge -r<current rev that tells you>:HEAD
>svn://svn.toolchain.org/svn/gcc/trunk "
>
>That will merge in all the changes from the HEAD since the last time you
>merged.

No, it won't.  This compares the status of "trunk" between your branch
and HEAD.  Is "trunk" on apple-ppc-branch going to contain the
trunk from the last time apple-ppc-branch was merged from trunk?
Why *would* it?  (I suppose special procedures used during previous merges
could have had that effect, but that doesn't apply to converted-from-CVS
stuff.)

Obviously, for a brand-new branch, it would contain the branchpoint,
which is correct.  For a branch which has had a merge from trunk already,
it will *not*.  I'm looking at the docs for svn 1.1.3 here.

>From the Subversion book:

"Ideally, your version control system should prevent the double-application of
changes to a branch. It should automatically remember which changes a branch
has already received, and be able to list them for you. It should use this
information to help automate merges as much as possible.

"Unfortunately, Subversion is not such a system. Like CVS, Subversion does not
yet record any information about merge operations. When you commit local
modifications, the repository has no idea whether those changes came from
running svn merge, or from just hand-editing the files."

This is especially true of old merges being ported over from CVS.

In order to merge correctly, we need to know the last repository revision
number on trunk which was merged into the branch.  This means, in the case of
an old merge done in CVS, the revision number corresponding to the last
mergepoint.

(For a new, all-svn branch, there are easier ways of keeping track of that
revision number, like putting it in the log message for the merge.)

-- 
This space intentionally left blank.

Reply via email to