From: Patrick Ohly <Patrick.Ohly@gmx.de>
To: openembedded-devel@lists.openembedded.org
Subject: Re: A question of workflow
Date: Sun, 07 Jan 2007 21:04:24 +0100 [thread overview]
Message-ID: <1168200264.15021.54.camel@ip6-localhost> (raw)
In-Reply-To: <459786C7.70000@dominion.kabel.utwente.nl>
On So, 2006-12-31 at 10:45 +0100, Koen Kooi wrote:
> > This is simply because we have no established way of receiving data
> > through the SCM for merging into trunk without direct write access.
> As
> > my other email says, I'd like to find a way of supporting that but
> its
> > probably an education issue on both sides.
>
> And the fact that we usually have to tweak 80% if the patches we
> receive.
If you do that, can you commit the patch from the original author
literally on a branch, then apply your own changes which fix it on top
of the original patch and then merge back into the main trunk? I did an
experiment and found that this considerably eases the pain for external
contributors.
The experiment simulated a "worst case" scenario:
* external author creates a new file
* OE developer modifies and renames the file before committing to
the trunk
* external author updates the trunk and merges automatically
* => file exists twice with different content; without renaming
there would be a merge conflict
If external contributor and core OE developers adhere to the following
procedures, then the merge conflict is avoided. The external developer
should:
* pull official OE monotone database
* checkout, make changes
* commit on a personal branch ("mtn commit -b
personal.branch.name")
* generate a patch (e.g. "mtn diff -r org.openembedded.dev", be
more specific if necessary)
* propose to merge the patch by submitting it in the OE tracker
* continue working on the personal branch
* follow upstream changes by propagating them ("mtn propagate
org.openembedded.dev personal.branch.name" + "mtn update -b
personal.branch.name")
To accept this contribution, a core OE developer should:
* apply the original patch ("patch <foo.patch" + "mtn add <new
files>")
* commit on a new branch _before_ making any changes to it ("mtn
commit -b org.openembedded.<developer>.merging")
* make any required changes on that branch
* commit, then propagate to org.openembedded.dev
This worked for me in the scenario above where the external developer
had not made further changes on his branch. During propagating the trunk
with patch + changes applied monotone reported that no merging was
necessary and directly made the current head part of the personal
branch. After that, updating the personal branch had all changes. I
suppose it would have worked just as well if merging had been needed
because monotone had all the required information.
One of the disadvantages is the need for another branch. I don't think
it has to be pushed into the official monotone DB, so only the developer
doing the merging needs to know about it. I should even be possible to
reuse the branch in multiple patch/commit/fix/propagate cycles by
propagating the trunk to it before applying changes.
Clearly this puts some extra work on the OE developers, but in exchange
you not only encourage external contributions, you also better document
inside monotone what the original patch was and how you modified it.
What do you think? Did I miss something?
--
Bye, Patrick Ohly
--
Patrick.Ohly@gmx.de
http://www.estamos.de/
next prev parent reply other threads:[~2007-01-07 20:09 UTC|newest]
Thread overview: 39+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-12-30 5:16 A question of workflow Matthew Palmer
2006-12-30 19:19 ` Richard Purdie
2006-12-30 21:43 ` Matthew Palmer
2006-12-30 22:07 ` Koen Kooi
2006-12-30 23:08 ` Erik Hovland
2006-12-30 23:40 ` Matthew Palmer
2006-12-31 0:02 ` Richard Purdie
2006-12-31 9:36 ` Koen Kooi
2006-12-31 11:12 ` Matthew Palmer
2006-12-30 23:59 ` Matthew Palmer
2006-12-31 0:06 ` Richard Purdie
2006-12-31 9:45 ` Koen Kooi
2006-12-31 11:00 ` Matthew Palmer
2006-12-31 11:10 ` Koen Kooi
2007-01-07 20:04 ` Patrick Ohly [this message]
2007-01-07 21:16 ` Paul Sokolovsky
2007-01-07 21:40 ` Patrick Ohly
2007-01-07 22:03 ` Matthew Palmer
2007-01-07 22:46 ` Justin Patrin
2007-01-07 22:56 ` Matthew Palmer
2007-01-07 23:11 ` Justin Patrin
2007-01-08 18:28 ` Patrick Ohly
2007-01-08 19:11 ` Justin Patrin
2007-01-08 21:02 ` Patrick Ohly
2007-01-08 21:13 ` Koen Kooi
2007-01-08 21:43 ` Patrick Ohly
2007-01-08 21:53 ` Justin Patrin
2007-01-09 9:42 ` Richard Purdie
2007-01-09 19:51 ` Patrick Ohly
2007-01-08 1:18 ` Rolf Leggewie
2007-01-08 18:09 ` Patrick Ohly
2007-01-09 12:51 ` Rolf Leggewie
2007-01-09 12:54 ` Rolf Leggewie
2007-01-09 19:39 ` Patrick Ohly
2007-01-02 20:06 ` Paul Sokolovsky
2007-01-02 20:08 ` [Angstrom-devel] " Koen Kooi
2007-01-04 4:23 ` Justin Patrin
2006-12-31 2:41 ` jack-oe
2007-01-02 0:05 ` Cliff Brake
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1168200264.15021.54.camel@ip6-localhost \
--to=patrick.ohly@gmx.de \
--cc=openembedded-devel@lists.openembedded.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.