* A question of workflow @ 2006-12-30 5:16 Matthew Palmer 2006-12-30 19:19 ` Richard Purdie 2007-01-02 0:05 ` Cliff Brake 0 siblings, 2 replies; 39+ messages in thread From: Matthew Palmer @ 2006-12-30 5:16 UTC (permalink / raw) To: openembedded-devel [I've never used monotone for a project before, so this may be something of a general monotone question, but please bear with me] I've hacked on the Ruby bitbake spec so it can build commonly-used extensions like zlib, socket, and openssl. However, I'm not sure how to go about committing, submitting, and merging this patch with the main OE tree. What I've done so far: * Gotten a checkout of the org.openembedded.dev branch; * Made my modifications; * Created a key; * Committed my changes to my working copy. Now I can't even manage to retrieve the diff of my changes (the 'obvious' step of running "mtn diff -r <SHA1>" didn't do anything useful) to submit them to the bugzilla. Of course, submitting a context-free patch when you've got a full distributed RCS at your bidding seems a bit archaic anyway. So, my questions: * How do I get my diff back? * How do I submit my changes to the OE project for merging? * Will I have problems when the change gets committed to the trunk? * (The biggie) is there a guide on the wiki or somewhere describing the preferred workflow for making changes and working effectively with the rest of the OE developer community? (Google wasn't at all illuminating) Thanks, - Matt ^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: A question of workflow 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-31 2:41 ` jack-oe 2007-01-02 0:05 ` Cliff Brake 1 sibling, 2 replies; 39+ messages in thread From: Richard Purdie @ 2006-12-30 19:19 UTC (permalink / raw) To: openembedded-devel On Sat, 2006-12-30 at 16:16 +1100, Matthew Palmer wrote: > I've hacked on the Ruby bitbake spec so it can build commonly-used > extensions like zlib, socket, and openssl. However, I'm not sure how to go > about committing, submitting, and merging this patch with the main OE tree. > > What I've done so far: > > * Gotten a checkout of the org.openembedded.dev branch; > * Made my modifications; > * Created a key; > * Committed my changes to my working copy. > > Now I can't even manage to retrieve the diff of my changes (the 'obvious' > step of running "mtn diff -r <SHA1>" didn't do anything useful) to submit > them to the bugzilla. I'm not sure what the right command it but you should be able to extract that diff somehow, I don't know offhand what the command would be. > Of course, submitting a context-free patch when > you've got a full distributed RCS at your bidding seems a bit archaic > anyway. > > So, my questions: > > * How do I get my diff back? > * How do I submit my changes to the OE project for merging? > * Will I have problems when the change gets committed to the trunk? > * (The biggie) is there a guide on the wiki or somewhere describing the > preferred workflow for making changes and working effectively with the rest > of the OE developer community? (Google wasn't at all illuminating) What you've described is how I or any other OE developer with an authorised monotone key would work with OE. The problem is we can't just give access to anyone as that wouldn't make any sense for obvious reasons. Before we give out such access, we need to have some idea of a persons capabilities and trust them enough not to break things (too badly ;-). We generally ask you start submitting patches via the bugzilla and then when we're happy you might get direct commit access. This doesn't fit in with the SCM (monotone) that well. It does mean you shouldn't be committing changes locally via monotone. If you do this you will have to pull and then merge every time. That isn't a problem in itself but if you do get direct commit access, we will not be happy adding hundreds of extra merges to the main repository. Richard ^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: A question of workflow 2006-12-30 19:19 ` Richard Purdie @ 2006-12-30 21:43 ` Matthew Palmer 2006-12-30 22:07 ` Koen Kooi 2006-12-31 2:41 ` jack-oe 1 sibling, 1 reply; 39+ messages in thread From: Matthew Palmer @ 2006-12-30 21:43 UTC (permalink / raw) To: openembedded-devel On Sat, Dec 30, 2006 at 07:19:29PM +0000, Richard Purdie wrote: > On Sat, 2006-12-30 at 16:16 +1100, Matthew Palmer wrote: > > I've hacked on the Ruby bitbake spec so it can build commonly-used > > extensions like zlib, socket, and openssl. However, I'm not sure how to go > > about committing, submitting, and merging this patch with the main OE tree. > > > > What I've done so far: > > > > * Gotten a checkout of the org.openembedded.dev branch; > > * Made my modifications; > > * Created a key; > > * Committed my changes to my working copy. > > > > Now I can't even manage to retrieve the diff of my changes (the 'obvious' > > step of running "mtn diff -r <SHA1>" didn't do anything useful) to submit > > them to the bugzilla. > > I'm not sure what the right command it but you should be able to extract > that diff somehow, I don't know offhand what the command would be. Marcin Juszkiewicz gave me the answer in the bugzilla issue I opened (#1725). It was... non-trivial. And I thought tla had a difficult UI... > > Of course, submitting a context-free patch when > > you've got a full distributed RCS at your bidding seems a bit archaic > > anyway. > > > > So, my questions: > > > > * How do I get my diff back? > > * How do I submit my changes to the OE project for merging? > > * Will I have problems when the change gets committed to the trunk? > > * (The biggie) is there a guide on the wiki or somewhere describing the > > preferred workflow for making changes and working effectively with the rest > > of the OE developer community? (Google wasn't at all illuminating) > > What you've described is how I or any other OE developer with an > authorised monotone key would work with OE. The problem is we can't just > give access to anyone as that wouldn't make any sense for obvious > reasons. Yep, you're naturally not going to give trunk access to random people, but I'm not looking for trunk commit rights. You're using a distributed revision control system, in which I should be able to work pretty much entirely independently, just feeding changesets back for the core devs to merge. I don't want, and shouldn't need, core commit rights in order to be able to do what I want -- that's the beauty of a DRCS. However, being unfamiliar with monotone, I need assistance with knowing exactly which commands I need to be running to do what I need to do. > It does mean you shouldn't be committing changes locally via monotone. > If you do this you will have to pull and then merge every time. That > isn't a problem in itself but if you do get direct commit access, we > will not be happy adding hundreds of extra merges to the main > repository. WTF? Why are you using a distributed revision control system, if I'm not supposed to be committing locally? If everything I do is supposed to be bundled up into a patch and sent to the bugzilla, how am I meant to maintain my own tree of fixes while I wait for them all to be applied to dev? Quilt? That might make sense if I'm stuck interacting with SVN, but with a DRCS in the mix I expect *it* to be able to take on that role. - Matt ^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: A question of workflow 2006-12-30 21:43 ` Matthew Palmer @ 2006-12-30 22:07 ` Koen Kooi 2006-12-30 23:08 ` Erik Hovland ` (2 more replies) 0 siblings, 3 replies; 39+ messages in thread From: Koen Kooi @ 2006-12-30 22:07 UTC (permalink / raw) To: openembedded-devel -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Matthew Palmer schreef: > On Sat, Dec 30, 2006 at 07:19:29PM +0000, Richard Purdie wrote: >> It does mean you shouldn't be committing changes locally via monotone. >> If you do this you will have to pull and then merge every time. That >> isn't a problem in itself but if you do get direct commit access, we >> will not be happy adding hundreds of extra merges to the main >> repository. > > WTF? Why are you using a distributed revision control system, if I'm not > supposed to be committing locally? If everything I do is supposed to be > bundled up into a patch and sent to the bugzilla, how am I meant to maintain > my own tree of fixes while I wait for them all to be applied to dev? Quilt? > That might make sense if I'm stuck interacting with SVN, but with a DRCS in > the mix I expect *it* to be able to take on that role. Do what virtually every DSCM does to support that: make a branch -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.5 (Darwin) iD8DBQFFluM9MkyGM64RGpERApWCAJ4vGC91DRHlu2CiBN+Zjl+u0YQx3gCgrdfF kcLE9jQGwMRuafhSB8gUs3o= =svf1 -----END PGP SIGNATURE----- ^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: A question of workflow 2006-12-30 22:07 ` Koen Kooi @ 2006-12-30 23:08 ` Erik Hovland 2006-12-30 23:40 ` Matthew Palmer 2006-12-31 9:36 ` Koen Kooi 2006-12-30 23:59 ` Matthew Palmer 2007-01-02 20:06 ` Paul Sokolovsky 2 siblings, 2 replies; 39+ messages in thread From: Erik Hovland @ 2006-12-30 23:08 UTC (permalink / raw) To: openembedded-devel On Sat, Dec 30, 2006 at 11:07:57PM +0100, Koen Kooi wrote: > > On Sat, Dec 30, 2006 at 07:19:29PM +0000, Richard Purdie wrote: > > >> It does mean you shouldn't be committing changes locally via monotone. > >> If you do this you will have to pull and then merge every time. That > >> isn't a problem in itself but if you do get direct commit access, we > >> will not be happy adding hundreds of extra merges to the main > >> repository. > > > > WTF? Why are you using a distributed revision control system, if I'm not > > supposed to be committing locally? If everything I do is supposed to be > > bundled up into a patch and sent to the bugzilla, how am I meant to maintain > > my own tree of fixes while I wait for them all to be applied to dev? Quilt? > > That might make sense if I'm stuck interacting with SVN, but with a DRCS in > > the mix I expect *it* to be able to take on that role. > > Do what virtually every DSCM does to support that: make a branch Strange. Git nor mercucial require you to branch. E -- Erik Hovland mail: erik@hovland.org web: http://hovland.org/ PGP/GPG public key available on request ^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: A question of workflow 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 1 sibling, 1 reply; 39+ messages in thread From: Matthew Palmer @ 2006-12-30 23:40 UTC (permalink / raw) To: openembedded-devel On Sat, Dec 30, 2006 at 03:08:34PM -0800, Erik Hovland wrote: > On Sat, Dec 30, 2006 at 11:07:57PM +0100, Koen Kooi wrote: > > > On Sat, Dec 30, 2006 at 07:19:29PM +0000, Richard Purdie wrote: > > > > >> It does mean you shouldn't be committing changes locally via monotone. > > >> If you do this you will have to pull and then merge every time. That > > >> isn't a problem in itself but if you do get direct commit access, we > > >> will not be happy adding hundreds of extra merges to the main > > >> repository. > > > > > > WTF? Why are you using a distributed revision control system, if I'm not > > > supposed to be committing locally? If everything I do is supposed to be > > > bundled up into a patch and sent to the bugzilla, how am I meant to maintain > > > my own tree of fixes while I wait for them all to be applied to dev? Quilt? > > > That might make sense if I'm stuck interacting with SVN, but with a DRCS in > > > the mix I expect *it* to be able to take on that role. > > > > Do what virtually every DSCM does to support that: make a branch > > Strange. Git nor mercucial require you to branch. Add darcs and bzr to the "no need to explicitly branch" list. But then again, it's not a fundamental failing of the tool if you need to say "Please branch now", especially when, like monotone, you've got the ability to have this "micro-branch" thing with the multiple "heads". - Matt -- "Ah, the beauty of OSS. Hundreds of volunteers worldwide volunteering their time inventing and implementing new, exciting ways for software to suck." -- Toni Lassila, in the Monastery ^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: A question of workflow 2006-12-30 23:40 ` Matthew Palmer @ 2006-12-31 0:02 ` Richard Purdie 0 siblings, 0 replies; 39+ messages in thread From: Richard Purdie @ 2006-12-31 0:02 UTC (permalink / raw) To: openembedded-devel On Sun, 2006-12-31 at 10:40 +1100, Matthew Palmer wrote: > On Sat, Dec 30, 2006 at 03:08:34PM -0800, Erik Hovland wrote: > > On Sat, Dec 30, 2006 at 11:07:57PM +0100, Koen Kooi wrote: > > > > On Sat, Dec 30, 2006 at 07:19:29PM +0000, Richard Purdie wrote: > > > > > > >> It does mean you shouldn't be committing changes locally via monotone. > > > >> If you do this you will have to pull and then merge every time. That > > > >> isn't a problem in itself but if you do get direct commit access, we > > > >> will not be happy adding hundreds of extra merges to the main > > > >> repository. > > > > > > > > WTF? Why are you using a distributed revision control system, if I'm not > > > > supposed to be committing locally? If everything I do is supposed to be > > > > bundled up into a patch and sent to the bugzilla, how am I meant to maintain > > > > my own tree of fixes while I wait for them all to be applied to dev? Quilt? > > > > That might make sense if I'm stuck interacting with SVN, but with a DRCS in > > > > the mix I expect *it* to be able to take on that role. > > > > > > Do what virtually every DSCM does to support that: make a branch > > > > Strange. Git nor mercucial require you to branch. > > Add darcs and bzr to the "no need to explicitly branch" list. But then > again, it's not a fundamental failing of the tool if you need to say "Please > branch now", especially when, like monotone, you've got the ability to have > this "micro-branch" thing with the multiple "heads". You don't have to branch. It simply means you will have to merge every time you pull from upstream. This is the same as git, I'm not familiar with the others. All I've tried to do it make you aware of what you're doing and which a) you will need to always merge after pulling and b) why you won't be allowed to push to trunk with such a repository. If neither thing concerns you, please go ahead. This isn't a unique problem to monotone. git handles this by allowing you to rebase commits against a new base revision. I'm not sure if monotone has a way to handle this or not. If it doesn't, it should have but that is something for the monotone people to consider. As for the problem of patch interchange using the actual SCM without trunk write access, this is something that needs careful thought. You can share a repository and I guess we'd pull into a local branch, then merge with trunk. I'd be interested in the monotone people's thoughts on how to handle this tbh. Currently we have no good solution but it would be nice to have one. Its probably an education problem on both ends. FWIW, the linux kernel has similar issues with git and developers still exchange patches rather than git repositories. Richard ^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: A question of workflow 2006-12-30 23:08 ` Erik Hovland 2006-12-30 23:40 ` Matthew Palmer @ 2006-12-31 9:36 ` Koen Kooi 2006-12-31 11:12 ` Matthew Palmer 1 sibling, 1 reply; 39+ messages in thread From: Koen Kooi @ 2006-12-31 9:36 UTC (permalink / raw) To: openembedded-devel -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Erik Hovland schreef: > On Sat, Dec 30, 2006 at 11:07:57PM +0100, Koen Kooi wrote: >>> On Sat, Dec 30, 2006 at 07:19:29PM +0000, Richard Purdie wrote: >>>> It does mean you shouldn't be committing changes locally via monotone. >>>> If you do this you will have to pull and then merge every time. That >>>> isn't a problem in itself but if you do get direct commit access, we >>>> will not be happy adding hundreds of extra merges to the main >>>> repository. >>> WTF? Why are you using a distributed revision control system, if I'm not >>> supposed to be committing locally? If everything I do is supposed to be >>> bundled up into a patch and sent to the bugzilla, how am I meant to maintain >>> my own tree of fixes while I wait for them all to be applied to dev? Quilt? >>> That might make sense if I'm stuck interacting with SVN, but with a DRCS in >>> the mix I expect *it* to be able to take on that role. >> Do what virtually every DSCM does to support that: make a branch > > Strange. Git nor mercucial require you to branch. Actually git branches the moment when you pull, it just hides that. -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.5 (Darwin) iD8DBQFFl4SsMkyGM64RGpERAurNAKCjkLjRb0r5CvV+r4ZlinBXqnP5FACfeAFn ybhy4X43hRaAfqafOSnzhPA= =HtD6 -----END PGP SIGNATURE----- ^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: A question of workflow 2006-12-31 9:36 ` Koen Kooi @ 2006-12-31 11:12 ` Matthew Palmer 0 siblings, 0 replies; 39+ messages in thread From: Matthew Palmer @ 2006-12-31 11:12 UTC (permalink / raw) To: openembedded-devel On Sun, Dec 31, 2006 at 10:36:44AM +0100, Koen Kooi wrote: > -----BEGIN PGP SIGNED MESSAGE----- > Hash: SHA1 > > Erik Hovland schreef: > > On Sat, Dec 30, 2006 at 11:07:57PM +0100, Koen Kooi wrote: > >>> On Sat, Dec 30, 2006 at 07:19:29PM +0000, Richard Purdie wrote: > >>>> It does mean you shouldn't be committing changes locally via monotone. > >>>> If you do this you will have to pull and then merge every time. That > >>>> isn't a problem in itself but if you do get direct commit access, we > >>>> will not be happy adding hundreds of extra merges to the main > >>>> repository. > >>> WTF? Why are you using a distributed revision control system, if I'm not > >>> supposed to be committing locally? If everything I do is supposed to be > >>> bundled up into a patch and sent to the bugzilla, how am I meant to maintain > >>> my own tree of fixes while I wait for them all to be applied to dev? Quilt? > >>> That might make sense if I'm stuck interacting with SVN, but with a DRCS in > >>> the mix I expect *it* to be able to take on that role. > >> Do what virtually every DSCM does to support that: make a branch > > > > Strange. Git nor mercucial require you to branch. > > Actually git branches the moment when you pull, it just hides that. That's what bzr and darcs do, too. You can't really have a DRCS without either implicit or explicit branching on retrieval. In reality, monotone is branching implicitly just like git, bzr, and darcs. It's just that monotone has two levels of branching: "heads", which are nothing more than unnamed microbranches, and the more coarse-grained named branch. - Matt ^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: A question of workflow 2006-12-30 22:07 ` Koen Kooi 2006-12-30 23:08 ` Erik Hovland @ 2006-12-30 23:59 ` Matthew Palmer 2006-12-31 0:06 ` Richard Purdie 2007-01-02 20:06 ` Paul Sokolovsky 2 siblings, 1 reply; 39+ messages in thread From: Matthew Palmer @ 2006-12-30 23:59 UTC (permalink / raw) To: openembedded-devel On Sat, Dec 30, 2006 at 11:07:57PM +0100, Koen Kooi wrote: > -----BEGIN PGP SIGNED MESSAGE----- > Hash: SHA1 > > Matthew Palmer schreef: > > On Sat, Dec 30, 2006 at 07:19:29PM +0000, Richard Purdie wrote: > > >> It does mean you shouldn't be committing changes locally via monotone. > >> If you do this you will have to pull and then merge every time. That > >> isn't a problem in itself but if you do get direct commit access, we > >> will not be happy adding hundreds of extra merges to the main > >> repository. > > > > WTF? Why are you using a distributed revision control system, if I'm not > > supposed to be committing locally? If everything I do is supposed to be > > bundled up into a patch and sent to the bugzilla, how am I meant to maintain > > my own tree of fixes while I wait for them all to be applied to dev? Quilt? > > That might make sense if I'm stuck interacting with SVN, but with a DRCS in > > the mix I expect *it* to be able to take on that role. > > Do what virtually every DSCM does to support that: make a branch You seem right on with that "virtually" bit: $ mtn help |grep -i branch $ Oh, commit with a --branch option. Cute, if not exactly discoverable. Monotone certainly seems to have read from the Tom Lord manual of Interface Design. Note also that Richard said that I shouldn't be doing *any* commits locally -- no mention of branching or any other way to take advantage of the benefits of a DRCS. (Not having a go at you, Richard, just explaining my thought processes.) So having solved The Mystery Of The Branch, how do I make the completed branch available for the core devs to merge back into the trunk? (If it involves copying a huge monotone database to my webserver and running mtnserve, I'll just give up now -- I don't have the resources to spare for that). What's the naming policy for branches -- presumably, since my branch names will end up "polluting" the main database if you propagate my changes, I can't just go naming my branches any old thing (since it appears that it's a single global namespace for branches). How do I manage separate feature branches (so that each branch is kept clean for merging) while still having a comglomerate branch I can use for building from? I suppose I can propagate each feature branch back into a dirty work branch, but that just seems... labour-intensive. Do you understand my frustration? I know what I've got to do, but I can't find any docs in the wiki that cater to anyone other than OE core devs (MonotonePhraseBook) -- which I'm certainly not going to be any time soon -- so I'm left either working everything out from first principles (wasting time that I could be spending fixing things, not to mention making a pile of screwups -- like committing to the main branch, creating a second head -- in the meantime), writing slightly pissy e-mails on mailing lists (and getting equally pissy responses back), or just giving up, converting the dev branch to darcs, and not bothering to contribute my fixes back in any meaningful manner because it's just Too Damn Hard. In short, how do *you* want to be worked with? I'm happy to work in whatever reasonable way works best for you, but I need to know what that process is first. - Matt -- It fsck's the volume or it gets the format again. -- Don Quixote, in the Monastery ^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: A question of workflow 2006-12-30 23:59 ` Matthew Palmer @ 2006-12-31 0:06 ` Richard Purdie 2006-12-31 9:45 ` Koen Kooi 0 siblings, 1 reply; 39+ messages in thread From: Richard Purdie @ 2006-12-31 0:06 UTC (permalink / raw) To: openembedded-devel On Sun, 2006-12-31 at 10:59 +1100, Matthew Palmer wrote: > Note also that Richard said that I shouldn't be doing *any* commits locally > -- no mention of branching or any other way to take advantage of the > benefits of a DRCS. (Not having a go at you, Richard, just explaining my > thought processes.) 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. Richard ^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: A question of workflow 2006-12-31 0:06 ` Richard Purdie @ 2006-12-31 9:45 ` Koen Kooi 2006-12-31 11:00 ` Matthew Palmer 2007-01-07 20:04 ` Patrick Ohly 0 siblings, 2 replies; 39+ messages in thread From: Koen Kooi @ 2006-12-31 9:45 UTC (permalink / raw) To: openembedded-devel -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Richard Purdie schreef: > On Sun, 2006-12-31 at 10:59 +1100, Matthew Palmer wrote: >> Note also that Richard said that I shouldn't be doing *any* commits locally >> -- no mention of branching or any other way to take advantage of the >> benefits of a DRCS. (Not having a go at you, Richard, just explaining my >> thought processes.) > > 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. Attaching them to the bugtracker makes it easy to search for, view and comment on patches, and most importantly, view their status. It doesn't matter which SCM we use with that workflow. -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.5 (Darwin) iD8DBQFFl4bHMkyGM64RGpERAqP/AJ4p9m4FAbXgtVOiACLMQEKScGYqmwCgqC/4 9Oee1LelN+CNy3/fWLqDRn8= =fv68 -----END PGP SIGNATURE----- ^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: A question of workflow 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 1 sibling, 1 reply; 39+ messages in thread From: Matthew Palmer @ 2006-12-31 11:00 UTC (permalink / raw) To: openembedded-devel On Sun, Dec 31, 2006 at 10:45:43AM +0100, Koen Kooi wrote: > Richard Purdie schreef: > > On Sun, 2006-12-31 at 10:59 +1100, Matthew Palmer wrote: > >> Note also that Richard said that I shouldn't be doing *any* commits locally > >> -- no mention of branching or any other way to take advantage of the > >> benefits of a DRCS. (Not having a go at you, Richard, just explaining my > >> thought processes.) > > > > 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. So you propagate the contributed branch to the dev tree, then make the changes that are needed to fix it up as a separate changeset. That maintains full history for everyone. > Attaching them to the bugtracker makes it easy to search for, view and > comment on patches, and most importantly, view their status. The problem with just dealing in raw patches is that when I'm maintaining my local tree, a branch of the upstream repo, my patches come back to me after getting applied upstream without any context, so that I get all manner of spurious conflicts. It looks as though all I can do to try and avoid this is disapprove patches, I can't "unpropagate" a whole branch to prevent the conflict -- and that assumes that I know in advance that the patch is coming back down. Far better to have the SCM do that all for me. > It doesn't matter which SCM we use with that workflow. Which does make me wonder why you went with monotone instead of the lowest-common-denominator, since you don't appear to be using any of monotone's more interesting features? - Matt ^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: A question of workflow 2006-12-31 11:00 ` Matthew Palmer @ 2006-12-31 11:10 ` Koen Kooi 0 siblings, 0 replies; 39+ messages in thread From: Koen Kooi @ 2006-12-31 11:10 UTC (permalink / raw) To: openembedded-devel -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Matthew Palmer schreef: > On Sun, Dec 31, 2006 at 10:45:43AM +0100, Koen Kooi wrote: >> It doesn't matter which SCM we use with that workflow. > > Which does make me wonder why you went with monotone instead of the > lowest-common-denominator, since you don't appear to be using any of > monotone's more interesting features? Offline commit, diff and history as well as peer-to-peer syncing. We've had 2 periods (when our bk license ran out and when mtn 0.26 changed the network protocol) were we tested different SCMs (hg, git, svn, svk, mtn) and each time monotone came out on top. BTW, most of the questions you asked are answered in http://venge.net/monotone/monotone.html. regards, Koen -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.5 (Darwin) iD8DBQFFl5qpMkyGM64RGpERAkihAKCJqU1kRwEbtMp7LbufGFn1sMJ8KACgiY3k QVLw7nVwscXhLBam6Mrktjg= =tgwY -----END PGP SIGNATURE----- ^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: A question of workflow 2006-12-31 9:45 ` Koen Kooi 2006-12-31 11:00 ` Matthew Palmer @ 2007-01-07 20:04 ` Patrick Ohly 2007-01-07 21:16 ` Paul Sokolovsky 1 sibling, 1 reply; 39+ messages in thread From: Patrick Ohly @ 2007-01-07 20:04 UTC (permalink / raw) To: openembedded-devel 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/ ^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: A question of workflow 2007-01-07 20:04 ` Patrick Ohly @ 2007-01-07 21:16 ` Paul Sokolovsky 2007-01-07 21:40 ` Patrick Ohly 2007-01-07 22:03 ` Matthew Palmer 0 siblings, 2 replies; 39+ messages in thread From: Paul Sokolovsky @ 2007-01-07 21:16 UTC (permalink / raw) To: Patrick Ohly; +Cc: openembedded-devel Hello Patrick, Sunday, January 7, 2007, 10:04:24 PM, you wrote: > 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. [] > What do you think? Did I miss something? Well, why would OE core developers (err, what about non-core developers - we also care for contributed patches - after all, to get commit access to OE, you first contribute bunch of patches) - well, why would they do that? OE is open-source project, there's no position of "patch processor", and people do what they find useful, leaving some share of their for patch processing. Any complex and artificial rules won't work. Just in case, there's always another alternative - contributors just should submit patches in the perfect form, suitable for merging w/o tweaks. Obviously, it's just the same not attainable, nor it's really *that* important - we want people contribute more than either us or them to follow strict rules. Just my IMHO - I'm not a core developer ;-). -- Best regards, Paul mailto:pmiscml@gmail.com ^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: A question of workflow 2007-01-07 21:16 ` Paul Sokolovsky @ 2007-01-07 21:40 ` Patrick Ohly 2007-01-07 22:03 ` Matthew Palmer 1 sibling, 0 replies; 39+ messages in thread From: Patrick Ohly @ 2007-01-07 21:40 UTC (permalink / raw) To: openembedded-devel On So, 2007-01-07 at 23:16 +0200, Paul Sokolovsky wrote: > Hello Patrick, > > What do you think? Did I miss something? > > Well, why would OE core developers (err, what about non-core > developers - we also care for contributed patches - after all, to get > commit access to OE, you first contribute bunch of patches) - well, why > would they do that? Perhaps because they care enough about external contributions to make life easier for the people preparing patches? The fact that their own changes would also be tracked by monotone is probably less important. I'm aware that this is not something that can be requested from volunteers, but at least it can be suggested and perhaps someone will find it useful and (more important) doable. > Just in case, there's always another alternative - contributors > just should submit patches in the perfect form, suitable for merging w/o > tweaks. I'm not so sure that this will work - As Koen said, having to tweak a patch is the rule, not the exception. Just doing those tweaks instead of striving for perfect patches might be less work also for the core developers. > Obviously, it's just the same not attainable, nor it's really > *that* important - we want people contribute more than either us or them > to follow strict rules. Of course, these shouldn't be strict rules, but having some guidelines wouldn't hurt either. I think I have seen questions about "how to contribute patches" several times on this list already. -- Bye, Patrick Ohly -- Patrick.Ohly@gmx.de http://www.estamos.de/ ^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: A question of workflow 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-08 1:18 ` Rolf Leggewie 1 sibling, 2 replies; 39+ messages in thread From: Matthew Palmer @ 2007-01-07 22:03 UTC (permalink / raw) To: openembedded-devel On Sun, Jan 07, 2007 at 11:16:32PM +0200, Paul Sokolovsky wrote: > Well, why would OE core developers (err, what about non-core > developers - we also care for contributed patches - after all, to get > commit access to OE, you first contribute bunch of patches) - well, why > would they do that? OE is open-source project, there's no position of > "patch processor", and people do what they find useful, leaving some > share of their for patch processing. Any complex and artificial rules > won't work. The only reason I can think of for the core devs to follow a particular workflow is to make it ultimately easier for external contributors to produce and submit patches. The more external patches that come in, the less work the core devs have to do (or the more 'other' things they can do). For example, a few days ago Marcin asked for a patch to make a build of a newer version of fakeroot; I'd have whipped that patch up by now except that I know that it's going to cause a conflict when the change comes back down, so I'm loathe to make the change until I work out how I can manage the patch flow, because it's going to cause me pain without any benefit. I'm just not that masochistic. - Matt ^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: A question of workflow 2007-01-07 22:03 ` Matthew Palmer @ 2007-01-07 22:46 ` Justin Patrin 2007-01-07 22:56 ` Matthew Palmer 2007-01-08 18:28 ` Patrick Ohly 2007-01-08 1:18 ` Rolf Leggewie 1 sibling, 2 replies; 39+ messages in thread From: Justin Patrin @ 2007-01-07 22:46 UTC (permalink / raw) To: openembedded-devel On 1/7/07, Matthew Palmer <mpalmer@hezmatt.org> wrote: > On Sun, Jan 07, 2007 at 11:16:32PM +0200, Paul Sokolovsky wrote: > > Well, why would OE core developers (err, what about non-core > > developers - we also care for contributed patches - after all, to get > > commit access to OE, you first contribute bunch of patches) - well, why > > would they do that? OE is open-source project, there's no position of > > "patch processor", and people do what they find useful, leaving some > > share of their for patch processing. Any complex and artificial rules > > won't work. > > The only reason I can think of for the core devs to follow a particular > workflow is to make it ultimately easier for external contributors to > produce and submit patches. The more external patches that come in, the > less work the core devs have to do (or the more 'other' things they can do). > For example, a few days ago Marcin asked for a patch to make a build of a > newer version of fakeroot; I'd have whipped that patch up by now except that > I know that it's going to cause a conflict when the change comes back down, > so I'm loathe to make the change until I work out how I can manage the patch > flow, because it's going to cause me pain without any benefit. I'm just not > that masochistic. > You know, instead of adding extra branches and making the workflow mor complicated for core devs you, as an external contributor, could follow your patch as it makes it into OE and update your local version accordingly. That way you also have no conflicts when you propagate or merge. One thing I could see us doing is possibly comitting a patch as-is and then making changes and comitting that. (Of course, we wouldn't push until it's all finished) but I don't know how well that will merge. Monotone uses the revision graph to deal with merging and your local commit still wouldn't likely be the same revision as what the dev comitted. Hmmm, now that I think of it this workflow might work: Contributor: 1) notes current (.dev) revision they are using in their workspace 2) makes changes 3) commits a new revision with those changes 4) creates a patch and opens a bug OE dev (assuming patch and change is ok): 5) updates their workspace to revision from 1) 6) commits the contributor's patch 7) makes changes to "fix up" patch 8) commits fixed up revision 9) merges with head (if needed) This way, the revision from 3) is the same as the revision from 6) and your DB will realize this (from the rev#, which is a SHA1 hash) and you don't have to merge at all. This only works if the patch is accepted as-is (if it requires revision before an OE dev initially commits it you still will have to manually update your own revision to allow it to merge cleanly) and assumes that you make all of your changes *directly* on a .dev revision and not in your own branch. Monotone tracks revisions, not patches, remember. It should also be noted that it doesn't take too much to get to be an OE dev yourself. You can keep your own branch and deal with a few merge conflicts, then get commit access to OE and commit/push directly. -- Justin Patrin ^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: A question of workflow 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 1 sibling, 1 reply; 39+ messages in thread From: Matthew Palmer @ 2007-01-07 22:56 UTC (permalink / raw) To: openembedded-devel On Sun, Jan 07, 2007 at 02:46:38PM -0800, Justin Patrin wrote: > You know, instead of adding extra branches and making the workflow mor > complicated for core devs you, as an external contributor, could > follow your patch as it makes it into OE and update your local version > accordingly. That way you also have no conflicts when you propagate or > merge. Or I could just not submit the patch to OE. That way I would also have no conflicts. Not so good for OE, but the same end result for me. Keeping track of a large number of patches in any particular state wouldn't be a whole load of fun, either, especially when there's a tool which, in theory, should be doing that work for me. > One thing I could see us doing is possibly comitting a patch as-is and > then making changes and comitting that. (Of course, we wouldn't push > until it's all finished) but I don't know how well that will merge. > Monotone uses the revision graph to deal with merging and your local > commit still wouldn't likely be the same revision as what the dev > comitted. Or you could merge the patch directly from the user's tree, which keeps all the metadata intact. Monotone seems particularly poor in this regard, requiring you to be running your own mtnserve, though. > It should also be noted that it doesn't take too much to get to be an > OE dev yourself. You can keep your own branch and deal with a few > merge conflicts, then get commit access to OE and commit/push > directly. That shouldn't be necessary. - Matt -- If Alan Turing was alive today, the homosexuality would be OK but he'd be in trouble for codebreaking. -- Martin Bacon ^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: A question of workflow 2007-01-07 22:56 ` Matthew Palmer @ 2007-01-07 23:11 ` Justin Patrin 0 siblings, 0 replies; 39+ messages in thread From: Justin Patrin @ 2007-01-07 23:11 UTC (permalink / raw) To: openembedded-devel On 1/7/07, Matthew Palmer <mpalmer@hezmatt.org> wrote: > On Sun, Jan 07, 2007 at 02:46:38PM -0800, Justin Patrin wrote: > > You know, instead of adding extra branches and making the workflow mor > > complicated for core devs you, as an external contributor, could > > follow your patch as it makes it into OE and update your local version > > accordingly. That way you also have no conflicts when you propagate or > > merge. > > Or I could just not submit the patch to OE. That way I would also have no > conflicts. Not so good for OE, but the same end result for me. Keeping > track of a large number of patches in any particular state wouldn't be a > whole load of fun, either, especially when there's a tool which, in theory, > should be doing that work for me. > Then don't keep track of them. Here's another perfectly valid idea. You submit patches and, as you submit more and listen to the list you come to understand how your patches should be contributed. Your patches get better and better and you have less and less merge conflicts. Be glad we're using such a great system and you have these possibilities. We could still be using CVS like so many other projects. We don't try to create conflicts. We want your patches to be able to be just dropped in. > > One thing I could see us doing is possibly comitting a patch as-is and > > then making changes and comitting that. (Of course, we wouldn't push > > until it's all finished) but I don't know how well that will merge. > > Monotone uses the revision graph to deal with merging and your local > > commit still wouldn't likely be the same revision as what the dev > > comitted. > > Or you could merge the patch directly from the user's tree, which keeps all > the metadata intact. Monotone seems particularly poor in this regard, > requiring you to be running your own mtnserve, though. How would you suggest we do this? The only way to get your revision *directly* into our DB is for you to push it or for us to pull it. It is also possible to get the same revision using a patch as I outlined in my previous mail, which you seem to have left out of this reply. That is the only possible way I can think of right now for monotone and OE to somewhat easily deal with this so that you don't have to do as much work keeping up to date with patches. Of course, it puts constraints on both the contributor and the OE developers, but it would work. -- Justin Patrin ^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: A question of workflow 2007-01-07 22:46 ` Justin Patrin 2007-01-07 22:56 ` Matthew Palmer @ 2007-01-08 18:28 ` Patrick Ohly 2007-01-08 19:11 ` Justin Patrin 1 sibling, 1 reply; 39+ messages in thread From: Patrick Ohly @ 2007-01-08 18:28 UTC (permalink / raw) To: openembedded-devel On Sun, 2007-01-07 at 14:46 -0800, Justin Patrin wrote: > One thing I could see us doing is possibly comitting a patch as-is and > then making changes and comitting that. (Of course, we wouldn't push > until it's all finished) but I don't know how well that will merge. I think it would merge as well (or bad) as committing to a branch first. The reason why I didn't mention this possibility is that it means that the core developer's revision of the trunk gets temporarily "polluted" with an unchecked and possibly incomplete patch. That might prevent finishing and pushing some other, more important work. I also don't know how easy it would be to back out the patch completely. > Monotone uses the revision graph to deal with merging and your local > commit still wouldn't likely be the same revision as what the dev > comitted. I'm on thin ice here because I don't know monotone well enough, but isn't a common ancestor enough to do the three-way merge that has a much better chance of avoiding merge conflicts? There is guaranteed to be a common ancestor for external and core OE developer even if both work with branches because both share the same OE trunk. > Hmmm, now that I think of it this workflow might work: > > Contributor: > 1) notes current (.dev) revision they are using in their workspace > 2) makes changes As you said, this assumes that the contributor always develops the patch against the oe.dev branch. The more likely situation with an active contributor is that he has multiple pending patches that he needs to continue with his work. He might store them using quilt/patcher or in a monotone branch, but in either case the base revision of a patch is not something found on the oe.dev branch. > OE dev (assuming patch and change is ok): > 5) updates their workspace to revision from 1) Even if the contributor is able to provide a revision, isn't that going to be a lot slower for the core developer? It implies going back to an older revision and then recompiling all sources necessary to check the patch (okay, that could be skipped, but that's not desirable). In my "temporarily branch on commit" proposal the developer would be able to keep working with the currently checked out and compiled revision of the meta data, although admittedly reusing the same branch name requires some more thought - I'm not exactly sure how to do that with monotone. Anyway, all of this is idle speculation unless one or more of the core developers are willing to adopt such a method. -- Bye, Patrick Ohly -- Patrick.Ohly@gmx.de http://www.estamos.de/ ^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: A question of workflow 2007-01-08 18:28 ` Patrick Ohly @ 2007-01-08 19:11 ` Justin Patrin 2007-01-08 21:02 ` Patrick Ohly 0 siblings, 1 reply; 39+ messages in thread From: Justin Patrin @ 2007-01-08 19:11 UTC (permalink / raw) To: openembedded-devel On 1/8/07, Patrick Ohly <Patrick.Ohly@gmx.de> wrote: > On Sun, 2007-01-07 at 14:46 -0800, Justin Patrin wrote: > > One thing I could see us doing is possibly comitting a patch as-is and > > then making changes and comitting that. (Of course, we wouldn't push > > until it's all finished) but I don't know how well that will merge. > > I think it would merge as well (or bad) as committing to a branch first. > The reason why I didn't mention this possibility is that it means that > the core developer's revision of the trunk gets temporarily "polluted" > with an unchecked and possibly incomplete patch. That might prevent > finishing and pushing some other, more important work. I also don't know > how easy it would be to back out the patch completely. I'm not sure what making another branch realy buys here. In fact, I'm not even sure how monotone is happily merging your conflicts seeing as the patch would still be coming from 2 places. If a contributor makes a change in their own branch and then it's comitted seperately to .dev then they're 2 different revisions. > > > Monotone uses the revision graph to deal with merging and your local > > commit still wouldn't likely be the same revision as what the dev > > comitted. > > I'm on thin ice here because I don't know monotone well enough, but > isn't a common ancestor enough to do the three-way merge that has a much > better chance of avoiding merge conflicts? There is guaranteed to be a > common ancestor for external and core OE developer even if both work > with branches because both share the same OE trunk. With my workflow you have a common *revision* and this means that monotone can realy do the merge work for you. > > > Hmmm, now that I think of it this workflow might work: > > > > Contributor: > > 1) notes current (.dev) revision they are using in their workspace > > 2) makes changes > > As you said, this assumes that the contributor always develops the patch > against the oe.dev branch. The more likely situation with an active > contributor is that he has multiple pending patches that he needs to > continue with his work. He might store them using quilt/patcher or in a > monotone branch, but in either case the base revision of a patch is not > something found on the oe.dev branch. This is easily solveable. The contributor can use the latest official .dev rev and make their patch, then commit. Once this is done they can merge/propagate to their own branch. > > > OE dev (assuming patch and change is ok): > > 5) updates their workspace to revision from 1) > > Even if the contributor is able to provide a revision, isn't that going > to be a lot slower for the core developer? It implies going back to an > older revision and then recompiling all sources necessary to check the > patch (okay, that could be skipped, but that's not desirable). Updating to an older revision isn't hard. It's about the same thing as doing a new checkout or creating a new branch. > > In my "temporarily branch on commit" proposal the developer would be > able to keep working with the currently checked out and compiled > revision of the meta data, although admittedly reusing the same branch > name requires some more thought - I'm not exactly sure how to do that > with monotone. > As long as we create the same revision, merging is going to be much simpler. Even if a dev has to go "back" to commit the patch then they can simply merge with head and be back up to current. > Anyway, all of this is idle speculation unless one or more of the core > developers are willing to adopt such a method. > Some comments from monotone developers would be nice. Nathaniel, are you listening? -- Justin Patrin ^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: A question of workflow 2007-01-08 19:11 ` Justin Patrin @ 2007-01-08 21:02 ` Patrick Ohly 2007-01-08 21:13 ` Koen Kooi 0 siblings, 1 reply; 39+ messages in thread From: Patrick Ohly @ 2007-01-08 21:02 UTC (permalink / raw) To: openembedded-devel On Mon, 2007-01-08 at 11:11 -0800, Justin Patrin wrote: > On 1/8/07, Patrick Ohly <Patrick.Ohly@gmx.de> wrote: > > On Sun, 2007-01-07 at 14:46 -0800, Justin Patrin wrote: > > > One thing I could see us doing is possibly comitting a patch as-is and > > > then making changes and comitting that. (Of course, we wouldn't push > > > until it's all finished) but I don't know how well that will merge. > > > > I think it would merge as well (or bad) as committing to a branch first. > > The reason why I didn't mention this possibility is that it means that > > the core developer's revision of the trunk gets temporarily "polluted" > > with an unchecked and possibly incomplete patch. That might prevent > > finishing and pushing some other, more important work. I also don't know > > how easy it would be to back out the patch completely. > > I'm not sure what making another branch realy buys here. The main point which makes life easier for external contributors is that the patch is applied as-is and then modified, with all changes recorded in monotone. However, you are right: the change must be recorded on trunk. Making it on a branch and then only propagating the result fails, see below. > In fact, I'm > not even sure how monotone is happily merging your conflicts seeing as > the patch would still be coming from 2 places. I don't know exactly why it worked, but it did in a case where the normal "reapply your patches" method would have failed. I also tested another scenario that we have mentioned: * the contributor creates two patches changing the same file and submits them separately because they fix different problems while at the same time commiting them to a private branch * a developer commits the first patch literally on the trunk * the contributor pulls trunk and propagates to his branch (no conflicts) * developer commits second patch literally on trunk * pulling and propagating again works without conflicts I think the key reason why this works is that the developer recreates a revision as it exists on the contributors branch and therefore monotone doesn't really have to do anything. Let's try a more complicated scenario: * the contributor makes a change to one file, submits patch * he makes another change to another file, submits patch * OE developer accepts first patch into trunk, then modifies it * pulling and propagating to private branch works without conflicts, but this time monotone created a merged version that the contributor can update to * OE developer commits second patch * contributor can pull + propagate and his private branch is identical with trunk again Finally a last one: * the contributor makes a change to one file, submits patch * he makes another change to another file, submits patch * OE developer commits the second patch first, on a branch * he modifies the same file to fix it * finally propagates to trunk * contributor pulls and propagates to private branch => now there is a conflict which needs to be resolved manually Okay, so if there is something to be learned from this, then I suppose it is this: * Contributors, keep your changes in a private branch by using "monotone commit -b <your branch name>" the first time you commit changes. The branch names is remembered for the current working copy, so there is no need to always use the "-b". Use "mtn pull && mtn propagate org.openembedded.dev <your branch name> && mtn update" to follow the main development. * OE developers, please, be kind to your contributors and apply patches literally, commit them to org.openembedded.dev and only then modify them. > > > OE dev (assuming patch and change is ok): > > > 5) updates their workspace to revision from 1) > > > > Even if the contributor is able to provide a revision, isn't that going > > to be a lot slower for the core developer? It implies going back to an > > older revision and then recompiling all sources necessary to check the > > patch (okay, that could be skipped, but that's not desirable). > > Updating to an older revision isn't hard. It's about the same thing as > doing a new checkout or creating a new branch. But recompiling everything that was modified by going to the other revision is going to take time. -- Bye, Patrick Ohly -- Patrick.Ohly@gmx.de http://www.estamos.de/ ^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: A question of workflow 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 0 siblings, 2 replies; 39+ messages in thread From: Koen Kooi @ 2007-01-08 21:13 UTC (permalink / raw) To: openembedded-devel -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Patrick Ohly schreef: <snip> So after every first commmit the tree is in a broken state, where-as if a developers applied a fixed patch in one go it wouldn't be. Sounds like your concept is badly broken. -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.5 (Darwin) iD8DBQFForPqMkyGM64RGpERAhNiAKC0h5k18/9xgqdMpkx1ydjzU/8XQwCglkU1 XeKU9oiSgFx5wjFQMCkHfc0= =O1dj -----END PGP SIGNATURE----- ^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: A question of workflow 2007-01-08 21:13 ` Koen Kooi @ 2007-01-08 21:43 ` Patrick Ohly 2007-01-08 21:53 ` Justin Patrin 1 sibling, 0 replies; 39+ messages in thread From: Patrick Ohly @ 2007-01-08 21:43 UTC (permalink / raw) To: openembedded-devel On Mon, 2007-01-08 at 22:13 +0100, Koen Kooi wrote: > So after every first commmit the tree is in a broken state, where-as if a developers > applied a fixed patch in one go it wouldn't be. That's exactly why I had suggested that a developer should commit on a branch, fix the patch there and then propagate all changes from the branch. As I learned since then this does not work with monotone because monotone only propagates the final revision. What do you think about commiting the original patch, fixing it, commiting again, and then pushing all these changes? This is the model suggested by Justin. > Sounds like your concept is badly broken. So what do you suggest should be done instead? Ignore anything that a revision control system might be able to do and let external contributors sort it out manually or with quilt/patcher? Sorry, that doesn't sound very encouraging. -- Bye, Patrick Ohly -- Patrick.Ohly@gmx.de http://www.estamos.de/ ^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: A question of workflow 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 1 sibling, 1 reply; 39+ messages in thread From: Justin Patrin @ 2007-01-08 21:53 UTC (permalink / raw) To: openembedded-devel; +Cc: openembedded-devel On 1/8/07, Koen Kooi <koen@dominion.kabel.utwente.nl> wrote: > Patrick Ohly schreef: > > <snip> > > So after every first commmit the tree is in a broken state, where-as if a developers > applied a fixed patch in one go it wouldn't be. Sounds like your concept is badly broken. Apply, commit (note brokenness if needed in commit message), then fix it, commit, and push. Don't push before fixing. -- Justin Patrin ^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: A question of workflow 2007-01-08 21:53 ` Justin Patrin @ 2007-01-09 9:42 ` Richard Purdie 2007-01-09 19:51 ` Patrick Ohly 0 siblings, 1 reply; 39+ messages in thread From: Richard Purdie @ 2007-01-09 9:42 UTC (permalink / raw) To: openembedded-devel On Mon, 2007-01-08 at 13:53 -0800, Justin Patrin wrote: > On 1/8/07, Koen Kooi <koen@dominion.kabel.utwente.nl> wrote: > > Patrick Ohly schreef: > > So after every first commmit the tree is in a broken state, where-as if a developers > > applied a fixed patch in one go it wouldn't be. Sounds like your concept is badly broken. > > Apply, commit (note brokenness if needed in commit message), then fix > it, commit, and push. Don't push before fixing. The argument against this in other projects like the kernel is that you just broke the git-bisect method of debugging... I'm not a fan of broken patches being committed... Richard ^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: A question of workflow 2007-01-09 9:42 ` Richard Purdie @ 2007-01-09 19:51 ` Patrick Ohly 0 siblings, 0 replies; 39+ messages in thread From: Patrick Ohly @ 2007-01-09 19:51 UTC (permalink / raw) To: openembedded-devel On Tue, 2007-01-09 at 09:42 +0000, Richard Purdie wrote: > On Mon, 2007-01-08 at 13:53 -0800, Justin Patrin wrote: > > On 1/8/07, Koen Kooi <koen@dominion.kabel.utwente.nl> wrote: > > > So after every first commmit the tree is in a broken state, where-as if a developers > > > applied a fixed patch in one go it wouldn't be. Sounds like your concept is badly broken. > > > > Apply, commit (note brokenness if needed in commit message), then fix > > it, commit, and push. Don't push before fixing. > > The argument against this in other projects like the kernel is that you > just broke the git-bisect method of debugging... That's a valid point, although I am not sure whether the same argument applies to monotone: an OE developer choosing the next pivot version manually could be smarter than "git bisect" and always pick the version which includes the fixes for the immediately preceeding patch submission. Anyway, it seems like there are contradicting criteria for what is desirable when pushing patches, and the ones of the core OE developers absolutely trump the ones from external contributors. It would have been nice if there had been a solution which worked for both, but that seems unlikely. > I'm not a fan of broken patches being committed... One last word: perhaps there is a middle ground where functionally correct patches are applied as they are and then cosmetic changes like fixing the formating or exchanging lines is applied on top of that. Obviously, its entirely up to the OE developer importing the patch whether he wants to do that. -- Bye, Patrick Ohly -- Patrick.Ohly@gmx.de http://www.estamos.de/ ^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: A question of workflow 2007-01-07 22:03 ` Matthew Palmer 2007-01-07 22:46 ` Justin Patrin @ 2007-01-08 1:18 ` Rolf Leggewie 2007-01-08 18:09 ` Patrick Ohly 1 sibling, 1 reply; 39+ messages in thread From: Rolf Leggewie @ 2007-01-08 1:18 UTC (permalink / raw) To: openembedded-devel Matthew Palmer wrote: > For example, a few days ago Marcin asked for a patch to make a build of a > newer version of fakeroot; I'd have whipped that patch up by now except that > I know that it's going to cause a conflict when the change comes back down, > so I'm loathe to make the change until I work out how I can manage the patch > flow The way I handled this before having rw access was to use quilt and it worked nicely for me. Actually, I still use this for stuff I cannot be sure to fix in one setting to commit right after. Workflow (optimistically assuming no loops and pauses here) quilt new some.patch quilt edit packages/somepackage/some.bb quilt refresh and then send the patch to the bug tracker. Before updating monotone, I back out all quilt patches (cron does this for me daily) quilt pop -a && mtn pull && mtn update && quilt push -a Maybe this is workable for others as well? ^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: A question of workflow 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 0 siblings, 2 replies; 39+ messages in thread From: Patrick Ohly @ 2007-01-08 18:09 UTC (permalink / raw) To: openembedded-devel On Mon, 2007-01-08 at 02:18 +0100, Rolf Leggewie wrote: > The way I handled this before having rw access was to use quilt and it > worked nicely for me. Actually, I still use this for stuff I cannot be > sure to fix in one setting to commit right after. > > Workflow (optimistically assuming no loops and pauses here) > > quilt new some.patch > quilt edit packages/somepackage/some.bb > quilt refresh > > and then send the patch to the bug tracker. Before updating monotone, I > back out all quilt patches (cron does this for me daily) > > quilt pop -a && mtn pull && mtn update && quilt push -a > > Maybe this is workable for others as well? I have done the same before, the only difference was that I used Holger Schurig's "patcher". The method has some drawbacks: * you have to keep track of which patches have been applied, and you cannot let tools do it for you * you cannot easily(*) find out how your patch was modified after you submitted it; this implies that learning how to write better patches requires extra effort and thus becomes harder (more unlikely?) and that mistakes made by the core developer when merging the patch might not be detected by the external developer (hey, it might happen, so for the sake of the argument bear we me when I mention it ;-) (*) Instead of one working copy of the sources you would need two, the upstream version and the last version which you patched yourself. It's just not the same as having that information in the revision control system. -- Bye, Patrick Ohly -- Patrick.Ohly@gmx.de http://www.estamos.de/ ^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: A question of workflow 2007-01-08 18:09 ` Patrick Ohly @ 2007-01-09 12:51 ` Rolf Leggewie 2007-01-09 12:54 ` Rolf Leggewie 1 sibling, 0 replies; 39+ messages in thread From: Rolf Leggewie @ 2007-01-09 12:51 UTC (permalink / raw) To: openembedded-devel Patrick Ohly wrote: > I have done the same before, the only difference was that I used Holger > Schurig's "patcher". The method has some drawbacks: > * you have to keep track of which patches have been applied, and > you cannot let tools do it for you I am not sure if Holger's patcher can do this, but quilt makes this real easy. "ls -l patches/" or "quilt series" depending on what you want to know. > * you cannot easily(*) find out how your patch was modified after > you submitted it; this implies that learning how to write better > patches requires extra effort and thus becomes harder (more > unlikely?) and that mistakes made by the core developer when > merging the patch might not be detected by the external > developer (hey, it might happen, so for the sake of the argument > bear we me when I mention it ;-) This one is a little bit more work but still doable. mtn can give you the diff between any revision. Get the one that was applied to OE with "mtn diff -r $rev1 -r $rev2", output it to a tmp file and compare to your quilt patch. mtn can also restore the state of your OE tree to any revision you want. "mtn update -r $rev_just_before_your_patch_was_applied;quilt push -a;cp $dir_you_were_working_on /tmp;quilt pop -a;mtn update; diff -Naur $dir_you_were_working_on /tmp/$dir_you_were_working_on|less" IMHO this is all easier than the rigid regime you are proposing that no one is going to stick to anyways and that the main devs have already rejected. The beauty of it is that you don't have to rely on anyone else to behave in a particular way for this work for you. ^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: A question of workflow 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 1 sibling, 1 reply; 39+ messages in thread From: Rolf Leggewie @ 2007-01-09 12:54 UTC (permalink / raw) To: openembedded-devel Patrick Ohly wrote: > * you have to keep track of which patches have been applied, and > you cannot let tools do it for you Did you mean you wanted to know which of your patches have been applied in OE? That one is also easy. They are the ones that quilt cannot apply anymore when doing "quilt push -a" ;-) ^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: A question of workflow 2007-01-09 12:54 ` Rolf Leggewie @ 2007-01-09 19:39 ` Patrick Ohly 0 siblings, 0 replies; 39+ messages in thread From: Patrick Ohly @ 2007-01-09 19:39 UTC (permalink / raw) To: openembedded-devel On Tue, 2007-01-09 at 13:54 +0100, Rolf Leggewie wrote: > Patrick Ohly wrote: > > * you have to keep track of which patches have been applied, and > > you cannot let tools do it for you > > Did you mean you wanted to know which of your patches have been applied > in OE? That's indeed what I meant. Just like quilt, patcher also keeps track of which patches are currently applied locally. > That one is also easy. They are the ones that quilt cannot > apply anymore when doing "quilt push -a" ;-) Not necessarily. The patch might also fail to apply because unrelated changes were made upstream, so the external contributor always has to check these conflicts manually. On Tue, 2007-01-09 at 13:51 +0100, Rolf Leggewie wrote: > > * you cannot easily(*) find out how your patch was modified after > > you submitted it; this implies that learning how to write better > > patches requires extra effort and thus becomes harder (more > > unlikely?) and that mistakes made by the core developer when > > merging the patch might not be detected by the external > > developer (hey, it might happen, so for the sake of the argument > > bear we me when I mention it ;-) > > This one is a little bit more work but still doable. Of course, and if there is no better solution I don't mind doing it. But that doesn't mean that one shouldn't at least search for a better solution. Too bad there doesn't seem to be any :-/ -- Bye, Patrick Ohly -- Patrick.Ohly@gmx.de http://www.estamos.de/ ^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: A question of workflow 2006-12-30 22:07 ` Koen Kooi 2006-12-30 23:08 ` Erik Hovland 2006-12-30 23:59 ` Matthew Palmer @ 2007-01-02 20:06 ` Paul Sokolovsky 2007-01-02 20:08 ` [Angstrom-devel] " Koen Kooi 2007-01-04 4:23 ` Justin Patrin 2 siblings, 2 replies; 39+ messages in thread From: Paul Sokolovsky @ 2007-01-02 20:06 UTC (permalink / raw) To: openembedded-devel, angstrom-distro-devel Hello Koen, Sunday, December 31, 2006, 12:07:57 AM, you wrote: [] > Do what virtually every DSCM does to support that: make a branch Well, that's what I wanted to ask for a long time: if I make my private branch in the local OE checkout, do I need to do some steps to ensure it won't be pushed to the upstream repo (assuming I have commit to .dev branch)? -- Best regards, Paul mailto:pmiscml@gmail.com ^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: [Angstrom-devel] A question of workflow 2007-01-02 20:06 ` Paul Sokolovsky @ 2007-01-02 20:08 ` Koen Kooi 2007-01-04 4:23 ` Justin Patrin 1 sibling, 0 replies; 39+ messages in thread From: Koen Kooi @ 2007-01-02 20:08 UTC (permalink / raw) To: angstrom-distro-devel; +Cc: openembedded-devel -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Paul Sokolovsky schreef: > Hello Koen, > > Sunday, December 31, 2006, 12:07:57 AM, you wrote: > > [] >> Do what virtually every DSCM does to support that: make a branch > > Well, that's what I wanted to ask for a long time: if I make my > private branch in the local OE checkout, do I need to do some steps to > ensure it won't be pushed to the upstream repo (assuming I have commit to > .dev branch)? 'mtn push org.openembedded.dev' instead of 'mtn sync', as outlined in the monotone doc: http://venge.net/monotone/monotone.html -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.5 (Darwin) iD8DBQFFmrvMMkyGM64RGpERAn0uAKCB8UWfx2KUJ9zUEzANzDr3FgJM2gCdHnFm G99bqMalZy6qgUsfDM1JPVs= =ONFz -----END PGP SIGNATURE----- ^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: [Angstrom-devel] A question of workflow 2007-01-02 20:06 ` Paul Sokolovsky 2007-01-02 20:08 ` [Angstrom-devel] " Koen Kooi @ 2007-01-04 4:23 ` Justin Patrin 1 sibling, 0 replies; 39+ messages in thread From: Justin Patrin @ 2007-01-04 4:23 UTC (permalink / raw) To: Paul Sokolovsky, angstrom-distro-devel; +Cc: openembedded-devel On 1/2/07, Paul Sokolovsky <pmiscml@gmail.com> wrote: > Hello Koen, > > Sunday, December 31, 2006, 12:07:57 AM, you wrote: > > [] > > Do what virtually every DSCM does to support that: make a branch > > Well, that's what I wanted to ask for a long time: if I make my > private branch in the local OE checkout, do I need to do some steps to > ensure it won't be pushed to the upstream repo (assuming I have commit to > .dev branch)? > What you would do is to create your own branch and propagate from org.openembedded.dev to your own branch whenever you want the newest changes. Make changes locally in your branch, put them in the bugtracker, and when they're applied you get the new versions when you propagate. Of course, since it's not using your branch revision as the ancestor and we not always commit your patch as it originally was, you will have conflicts, but c'est la vie. This is a general trust problem. You could also make changes in a local branch and then propagate to org.openembedded.dev, but in this case you are basically just making your changes to org.openembedded.dev and if you got push access to our DB all of a sudden your branch's revisions would be pulled into the main DB since they are ancestors of revisions in org.openembedded.dev. The revisions in your branch would also not have branch certs (due to our limiting of branches you can push) and so would be basically dangling ancestors. Again, this wouldn't be good for us as it brings in a lot of revisions that we don't really need. I suggest option 1 where you propagate from .dev to your own branch. Yes, you will have conflicts if we alter your patches, but there is really no way (with monotone at least) to deal with this. (Essentially what we are talking about here is cherry picking and knowing where a patch came from. It's a complicated issue and not somehting that monotone supports directly at the moment.) -- Justin Patrin ^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: A question of workflow 2006-12-30 19:19 ` Richard Purdie 2006-12-30 21:43 ` Matthew Palmer @ 2006-12-31 2:41 ` jack-oe 1 sibling, 0 replies; 39+ messages in thread From: jack-oe @ 2006-12-31 2:41 UTC (permalink / raw) To: openembedded-devel [-- Attachment #1: Type: text/plain, Size: 2009 bytes --] On Sat, Dec 30, 2006 at 07:19:29PM +0000, Richard Purdie wrote: > What you've described is how I or any other OE developer with an > authorised monotone key would work with OE. The problem is we can't just > give access to anyone as that wouldn't make any sense for obvious > reasons. Monotone supports trust relations[0] as well as netsync access controls[1]. Netsync access controls are primarily to prevent someone trashing your repository. OE restricts write access to the repository on openembedded.org. Trust relations are orthogonal to access control. Monotone allows you to only trust revisions committed by certain users(keys). In the case of a single trusted repository, that only a certain number of developers have write access to -- they're the same thing. However, in the case where you have multiple repositories, with different permissions, things can get complicated. There is work ongoing in monotone to make this simpler[2]. > It does mean you shouldn't be committing changes locally via monotone. > If you do this you will have to pull and then merge every time. That > isn't a problem in itself but if you do get direct commit access, we > will not be happy adding hundreds of extra merges to the main > repository. Yeah. Or commit your changes to a private branch, and 'propagate' changes there from the main branch. The monotone wiki has a series of (incomplete) best practices[3]. Important are DaggyFixes[4], and CommitEarlyCommitOften[5].. Cheers, --Jack [0] http://venge.net/monotone/wiki/TrustFoundations [1] section 6.1.3 of http://venge.net/monotone/docs/Hooks.html [2] http://venge.net/monotone/wiki/VersionedPolicy [3] http://venge.net/monotone/wiki/BestPractices [4] http://venge.net/monotone/wiki/DaggyFixes [3] http://venge.net/monotone/wiki/CommitEarlyCommitOften -- Jack (John) Cummings http://mudshark.org/ PGP fingerprint: 0774 D073 E386 B70B 6B16 2D2B 1DD8 F8B0 CCF0 FAEE [-- Attachment #2: Type: application/pgp-signature, Size: 198 bytes --] ^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: A question of workflow 2006-12-30 5:16 A question of workflow Matthew Palmer 2006-12-30 19:19 ` Richard Purdie @ 2007-01-02 0:05 ` Cliff Brake 1 sibling, 0 replies; 39+ messages in thread From: Cliff Brake @ 2007-01-02 0:05 UTC (permalink / raw) To: openembedded-devel On 12/30/06, Matthew Palmer <mpalmer@hezmatt.org> wrote: > * (The biggie) is there a guide on the wiki or somewhere describing the > preferred workflow for making changes and working effectively with the rest > of the OE developer community? (Google wasn't at all illuminating) Many of us use bbcollections to keep any OE changes in a completely separate OE tree and don't modify the dev tree. The components in the custom tree are given higher priority and in effect replace the components in the dev tree. This works very well for the case where you are working on a project and have quite a bit of custom development that will never get pushed into dev. This is far from ideal, but is the best solution I've found. Cliff -- ======================= Cliff Brake http://bec-systems.com ^ permalink raw reply [flat|nested] 39+ messages in thread
end of thread, other threads:[~2007-01-09 19:55 UTC | newest] Thread overview: 39+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 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 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
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.