[Python-3000] p3yk branch and merging (was Re: [Python-3000-checkins] r45619 - python/branches/p3yk/Modules/cjkcodecs/multibytecodec.c)

Thomas Wouters thomas at python.org
Fri Apr 21 18:47:45 CEST 2006


On 4/21/06, hyeshik.chang <python-3000-checkins at python.org> wrote:
>
> Author: hyeshik.chang
> Date: Fri Apr 21 18:21:44 2006
> New Revision: 45619
>
> Modified:
>    python/branches/p3yk/Modules/cjkcodecs/multibytecodec.c
> Log:
> Add empty __init__ methods for stateful multibytecodec instances.
> This resolves a problem found by Thomas Wouters:
> http://mail.python.org/pipermail/python-dev/2006-April/064051.html


Thanks, but please don't "backport" from the p3yk-branch to the trunk. It
makes merging harder. Not an issue for this fix, because the trunk-merge
happened to be up-to-date, but it can make future merges 'orribly damned
hard. If a fix applies to both the trunk and one or more branches (that are
actively merged), only stuff it in the trunk, then merge the trunk changes
into the branch. (Or get someone else to do it.)

And just so everyone knows: done right, merging isn't hard. It's not as easy
as it could be, but 'svn merge' makes it a lot easier than it used to be in
CVS. Here's how you do it:

The last merged revision is stored in the branch, in a property called
'last_merge'; 'svn propget last_merge .' will show it. Right now, it's in
human-readable format, partly because a branch off of p3yk would get the
last_merge property branched, too, and then you lose track of which branch
was merged when. If anyone wants to automate the merging process (not
something I'd bother with, myself, since it usually requires too much manual
merging anyway), make sure to support grepping for the right revision :)
Also, 'last_merge' is a completely arbitrary propname.

In a checked out and pristine p3yk branch, run 'svn merge -r
<lastmerge>:<now> ../path/to/trunk'. 'path to trunk' can be a URL just as
easily as a local path. 'svn merge' applies all changes (diffs, but also
renames, deletes, property changes, etc) to the local working copy.

Resolve the conflicts, configure, compile, make, make test, fix any test
failures. When you're about to commit, 'svn propedit last_merge .', fill in
the <now> you used in the merge, and 'svn commit' the whole lot.

The <now> you use can be any revision, it doesn't have to be now. Also, svn
merge sometimes can't deal with the trunk changes; for instance, the trunk
had re.py removed and then sre.py renamed to re.py, and svn merge couldn't
handle that in one go. Fortunately, 'svn merge' only applies changes
locally. Tossing it all out is a matter of 'svn revert -R' or just deleting
the working copy.

I think Neal wants to keep the p3yk branch pretty up to date with the trunk,
likely merging every week, and I think that's a very good idea. It makes
merging much less painful ;P

--
Thomas Wouters <thomas at python.org>

Hi! I'm a .signature virus! copy me into your .signature file to help me
spread!
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.python.org/pipermail/python-3000/attachments/20060421/32eb0818/attachment.html 


More information about the Python-3000 mailing list