[prev in list] [next in list] [prev in thread] [next in thread]
List: gentoo-dev
Subject: [gentoo-dev] Re: stabilization commits and atomicity
From: Duncan <1i5t5.duncan () cox ! net>
Date: 2015-10-20 23:16:26
Message-ID: pan$65f2b$4074604e$e602289b$ac3bb3de () cox ! net
[Download RAW message or body]
hasufell posted on Mon, 19 Oct 2015 19:13:50 +0200 as excerpted:
> On 10/19/2015 07:08 PM, Rich Freeman wrote:
>> On Mon, Oct 19, 2015 at 11:27 AM, Ian Stakenvicius <axs@gentoo.org>
>> wrote:
>>>
>>> Ahh, so what you're referring to here is stabilization of multiple
>>> unrelated packages in a single commit.. ok.. i'm not so comfortable
>>> with that idea..
>>
>> Nor am I. A commit should be a set of related changes. Stabilizing
>> all of KDE-n in one commit makes a lot of sense. Stabilizing 5 random
>> packages in one commit doesn't make sense. By all means push them all
>> at once, but don't commit them all at once. It isn't like we have to
>> pay for each commit.
>>
> We already know that. But if e.g. ago runs his scripts at 00:00 with
> ~300 packages stabilized, the history (without git command line) on
> github/gitweb will be fun to read (and people DO that).
I'm one of those people (see my reply a few posts down-thread], tho I
don't read /everything/, but would definitely read rather more if this
were handled correctly.
But IMO, the proposal here is trying to fix the bit that's /not/ broken,
not what is.
On the kernel, I can very easily do a ...
git log --color --stat --graph ORIG_HEAD..
... get the nice color graphical listing piped to most, hit end to read
the whole range of commit logs into buffer, and then starting from the
end, pageup one page at a time to get the merge chronology correct, and
read all of Linus's very nicely summarized merge commits, telling me what
trees were merged and listing the one-line title/summary for each one.
If I want to drill down, as I generally do for specific subsystems
(fs/btrfs, drm/radeon, various subsystems like power I've had bugs with
in the past), it's a multi-level hierarchy and thus easy enough to go
from say the drm merge to the radeon sub-merge and check individual
commits at the comment and affected file levels (--stat).
If I want to drill down further, the commit ID is right there and I can
git show <ID> to read the specific code.
Meanwhile, if the top-level merge commit says it's for example arm, I'll
immediately move on to the next top-level merge commit, effectively
skipping all those possibly hundreds of "boring and not interesting to
me" individual arm commits, by very simply skipping to the next very
nicely commented merge commit, with its one-liner list of individual
commits.
The merge hierarchy, informative merge commit comments, and color-coded
--graph makes finding the merges so easy! That's the way git was
/designed/ to work. =:^)
Unfortunately, gentoo is by policy trying to flatten all that multi-level-
hierarchy-for-a-reason into a single flat list of CVS/SVN-like strictly
ordered parent-child relationship commits, destroying the whole rich
hierarchy and all the information that git includes with it, using
horrible rebase-pushes as an incredibly poor substitute for the very
natural git-native merge hierarchy along with all its richness.
Now we're complaining about how flat/boring/uninformative all those
atomic commits are, but it's not the atomic commits that are the problem,
it's the fact that we're deliberately stripping out the merge commits and
all the richness that comes with them, including the natural hierarchy
and the ability to make those merge-commits as informative as they
normally are in the kernel, with a short mention of the highlights and a
quick list of the included one-liners.
If gentoo were doing git the way it was designed to work instead of
trying to force it into the one-dimensional CVS mold, ago's 300-commit
bore for anyone not interested in that subsystem, on gentoo commit after
boring one-dimensional commit that's of less interest to me than the
price of tea in China, would be in a single merge tree with the arch team
in the one-liner, so I could immediately skip on to the next top-level
merge. Pageup to that merge, spotted quickly by the asterisk in the left
column, the two lines merging to it, and the change in color in the left-
hand-line, see it's of no interested, and on to the next one, instead of
having to go thru 300 boring one dimensional commits in case something
I'm interested in squeezed in there somewhere.
So as I said, the problem isn't the atomic commits, it's gentoo's
strongly recommended lack of merge hierarchy. Now we're complaining
about that and trying to kill the atomic commits, but they're not the
problem, trying to use that new git nailgun as if it's the manual
screwdriver of yesteryear is the problem. If we don't fix that, we'll
simply be trying to replace one small bit of the information we so
mercilessly stripped out with those forced-to-one-dimension rebases,
instead of deciding that stripping all that information out in the first
place wasn't such a good idea after all and that the real solution is to
simply stop trying to use that power nailgun as a manual screwdriver!
--
Duncan - List replies preferred. No HTML msgs.
"Every nonfree program has a lord, a master --
and if you use the program, he is your master." Richard Stallman
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic