[Python-Dev] I am now lost - committed, pulled, merged, what is "collapse"?

John Arbash Meinel john at arbash-meinel.com
Tue Mar 22 10:38:10 CET 2011


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

On 3/21/2011 10:32 PM, Nick Coghlan wrote:
> On Tue, Mar 22, 2011 at 3:16 AM, Raymond Hettinger
> <raymond.hettinger at gmail.com> wrote:
>> I don't think that is the main source of complexity.
>> The more difficult and fragile part of the workflows are:
>> * requiring commits to be cross-linked between branches
>> * and wanting changesets to be collapsed or rebased
>>   (two operations that destroy and rewrite history).
> 
> Yep, that sounds about right. I think in the long run the first one
> *will* turn out to be a better work flow, but it's definitely quite a
> shift from our historical way of doing things.
> 
> As far as the second point goes, I'm coming to the view that we should
> avoid rebase/strip/rollback when intending to push to the main
> repository, and do long term work in *separate* cloned repositories.
> Then an rdiff with the relevant cpython branch will create a nice
> collapsed patch ready for application to the main repository (I have
> yet to succeed in generating a nice patch without using rdiff, but I
> still have some more experimentation to do with MvL's last proposed
> command for that before giving up on the idea).
> 
> Cheers,
> Nick.
> 

I don't know what mercurial specifically supports. I believe git has a
'--squash' option at merge/commit time. And bzr has "bzr revert
- --forget-merges". Which lets you do a merge as normal, and then tell it
to forget all of the history that you just merged (treating the commit
as just a collapsed patch).

It is trivial to do this as a DVCS (it is just *omitting* the extra
parent pointer for commit). Though Mercurial's model of extra heads
existing in the branch may make it a bit trickier. (If you omit the head
when committing, it still stays around looking like it is unmerged, so
you need 1 more step of killing the extra head.)

Regardless, I'm sure it is something that could be implemented and
streamlined for Python's use. Maybe someone knows a Mercurial command to
already do it?

John
=:->
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (Cygwin)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iEYEARECAAYFAk2IbgIACgkQJdeBCYSNAANAlACfZkegH6t9y0PUH9xufcbCB4PX
8ykAn0A6i7D/+LJ+9+9OwoA27hkAiHUc
=eh4I
-----END PGP SIGNATURE-----


More information about the Python-Dev mailing list