How to cope with patches sanely

Sam Vilain sam at vilain.net
Thu Feb 28 23:35:30 UTC 2008


Manoj Srivastava wrote:
>> Feature branches don't magically allow you to avoid merge conflicts
>> either, so this is a red herring. Once you've resolved the conflict,
>> then it becomes just another change. This change can become a diff in
>> a stack of diffs.
> 
>         This whole message is a red herring, since hte feature branches
>  do not attempt to handle merge conflicts -- that is not their purpose.
>  They capture one single feature, independently from every other
>  feature, and thumb their collective noses at merge conflicts.

Yes.  Feature branches are effectively forking a particular version of a
project - this is not a problem, and is essential for efficient
development.  People jumbling together changes in "trunk" branches is
perhaps one of the worst upshots of the 2002-2006 or so obsession with
poorly designed centralised systems and in my opinion sank many projects.

>         The history of the integration branch captures the integration
>   effort; and the integration branch makes no effort to keep the
> integration work up to date with current upstream and feature
> branches. 

Initially perhaps.  However, once a feature is considered ready for
inclusion, it is important that it contains merges FROM the branch they
are targetting.  They mean that a later merge back the other way, to
merge the feature branch into the target branch, can happen painlessly.
 ASSUMING that you're using a system which has commutative merge
characteristics, such as git or mercurial.

>         If you think you can extract an up to date integration patch
>  from the entrails of the integration branch -- feel free o smack
>  me down.  But please provide some substance to the assertion that it is
>  doable.

Perhaps I missed the context to this discussion - certainly expressing a
history containing merge nodes in patches is non-trivial and can't be
done with standard patch format - but I believe that this is certainly
possible.

Can you express this problem with reference to a particular history of
an integration branch?  I will provide some short git commands to
extract the information in the form you are after.

Sam



More information about the vcs-pkg-discuss mailing list