Gentoo Archives: gentoo-dev

From: Alexis Ballier <aballier@g.o>
To: gentoo-dev@l.g.o
Subject: Re: [gentoo-dev] Developer branches on proj/gentoo
Date: Tue, 11 Aug 2015 18:47:58
Message-Id: 20150811204737.4c3559d4@gentoo.org
In Reply to: Re: [gentoo-dev] Developer branches on proj/gentoo by Ian Stakenvicius
1 On Tue, 11 Aug 2015 11:51:14 -0400
2 Ian Stakenvicius <axs@g.o> wrote:
3
4 > -----BEGIN PGP SIGNED MESSAGE-----
5 > Hash: SHA256
6 >
7 > On 11/08/15 11:21 AM, Alexis Ballier wrote:
8 > > On Tue, 11 Aug 2015 11:11:43 -0400 Ian Stakenvicius
9 > > <axs@g.o> wrote:
10 > >
11 > >> -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA256
12 > >>
13 > >> On 11/08/15 10:01 AM, Michał Górny wrote:
14 > >>> Dnia 2015-08-11, o godz. 15:52:16 Patrice Clement
15 > >>> <monsieurp@g.o> napisał(a):
16 > >>>
17 > >>>> Hi there
18 > >>>>
19 > >>>> According to
20 > >>>> https://wiki.gentoo.org/wiki/Gentoo_git_workflow#Branching_Model,
21 > >>>>
22 > >>>>
23 > >>
24 > >>>>
25 > "there may be developer-specific, task-specific, project-specific
26 > >> branch es
27 > >>>> etc". As far as I understand, it means I can go and create
28 > >>>> my own branch on the main repository and push it and it
29 > >>>> gets spread all over the place. Is that correct?
30 > >>>>
31 > >>>> Could someone explain to me the rationale behind this
32 > >>>> decision?
33 > >>>>
34 > >>>> Truth to be told, I kinda dislike the fact any developer
35 > >>>> can do this.
36 > >>>
37 > >>> As long as it's used with caution, I don't see a problem. Of
38 > >>> course it would be bad if everyone pushed branches for any
39 > >>> minor change. However, if there is a long-term work going on
40 > >>> a branch, I don't see a problem with keeping it public.
41 > >>>
42 > >>
43 > >> Examples in particular I can think of for something like this
44 > >> being useful would be for, say, major EAPI-bump-related
45 > >> feature implementations (ie, EAPI5 and
46 > >> slot-operators/subslots), or major across-tree impementation
47 > >> changes like what we saw with the multilib-eclass porting.
48 > >>
49 > >> These are large projects touching most if not all ebuilds, that
50 > >> a great many developers would or should be involved in.
51 > >> Something like this could be done in a separately hosted repo
52 > >> instead of in the main gentoo repo, but then all developers
53 > >> would need to subscribe to this other repo, while having it in
54 > >> a branch in the main one i think would make it easier for
55 > >> everyone to get involved once they're ready, and would still
56 > >> allow the changes to stay out of the master branch until the
57 > >> project is ready to launch.
58 > >
59 > >
60 > > For me, this is actually a reason to prohibit it :)
61 > >
62 > > EAPI bumps should be done package by package, not at a major
63 > > scale: otherwise, let's just scrap EAPI entirely and update the
64 > > API as we see fit with p.masked package managers :)
65 >
66 > Not EAPI bumps, but implementation of major new features as a result
67 > of the new EAPI. Most EAPI changes generally are beneficial to
68 > particular ebuilds, but some (such as slot-operators and subslots)
69 > really needed to be implemented across a great many packages (and
70 > eclasses too at times). We did it with overlays and patches via
71 > b.g.o and slowly things migrated, but I think it would have gone a
72 > lot faster if all developers had quick and easy access to a branch.
73
74
75 I'm glad this wasn't done that way actually. When subslots appeared,
76 there was a serious tendency to use them in a fashion that caused
77 useless rebuilds most of the time. With time, and discussions on some
78 specific cases, saner practices were adopted.
79
80
81 > > multilib eclasses conversions should also be done one by one to
82 > > be done properly (otherwise using multilib-portage is probably a
83 > > better idea) and each conversion touches one package (two if you
84 > > count emul-*).
85 >
86 > But they don't just touch one package -- you pretty much needed to
87 > do a full deptree at a time.
88
89 Sorry, but no. There was an order in which you could do it, but that's
90 all.
91
92 > We worked around it with a rather
93 > messy 'delete all files in emul-* that collide with the
94 > multilib-built packages currently available' plus a convoluted set
95 > of ||() deps wrapping each emul and the individual alternative
96 > atoms. And even then it was still a mess to try and actually use it
97 > on end-user systems due to various conflicts.
98
99 We split up the huge task into small and manageable ones, yes. I see it
100 as a clear benefit and I'd even say this is one of the major reasons
101 multilib-portage didn't make it. This also allowed to iteratively
102 improve the multilib approach with the experience gained from
103 converting small parts while getting feedback from those interested.
104
105 I don't know what conflicts you're talking about, but I haven't
106 seen any that was not due to a poor conversion.
107
108 > > Big changes that that go in feature branches and are merged in
109 > > one pass are, from my experience, way too much prone to errors.
110 > > Did anyone ever try to review a merge commit?
111 >
112 > This makes sense, yes; the merge back to the main tree could very
113 > well be more difficult than it's worth, however if the branch is
114 > available to all, then the migration into the main tree could be
115 > done piecemeal in batches too rather than in one huge swash.
116 >
117 > The point is, I think it'd be easier and faster to implement these
118 > major treewide projects (and easier to verify too) if the work could
119 > be done in a branch available to all, rather than in what would
120 > effectively be an overlay someplace external.
121
122 You seem to like pull requests and pre-commit reviews :)
123 I believe it is optimistic to say that because there is a branch in
124 gentoo.git then suddenly a lot of people will use this outdated branch
125 to test the feature.
126
127 > How we manage it
128 > effectively, I can't say one way or the other but likely this is
129 > something that we will need to learn from experience as much as
130 > decree policy for.
131
132 yes; or discussions :)