Gentoo Archives: gentoo-dev

From: Matt Turner <mattst88@g.o>
To: gentoo development <gentoo-dev@l.g.o>
Subject: Re: [gentoo-dev] Revision bumps vs git commits atomicity
Date: Fri, 02 Dec 2016 19:27:24
Message-Id: CAEdQ38Guzh+JA3-hQLDgykq3zvb2=ga-cr3pfP9o6oN1Ukmtug@mail.gmail.com
In Reply to: [gentoo-dev] Revision bumps vs git commits atomicity by Andrew Savchenko
1 On Fri, Dec 2, 2016 at 7:14 AM, Andrew Savchenko <bircoph@g.o> wrote:
2 > Hi all!
3 >
4 > Right now we have two somewhat conflicting policies (at least up to
5 > my understanding of them):
6 >
7 > 1) git atomic commits [1]:
8 > each logical change should be a separate commit.
9 >
10 > 2) revision bump policy [2]:
11 > each change sufficiently affecting application run-time or
12 > installed files should have a revision bump.
13 >
14 > Let's consider the following quite common scenario: package foo-1.0
15 > should be updated to foo-1.1, but aside from version bump there is
16 > a set of accumulated issues which maintainer is willing to handle,
17 > e.g.:
18 > - bump to EAPI 6;
19 > - fix several runtime bugs (still present in the new version);
20 > - install missing documentation;
21 > - add previously omitted USE flags for some tools of controllable
22 > functionalities;
23 > - etc...
24 >
25 > If both policies are to be followed, users will see something like:
26 > foo-1.0 -> foo-1.1-r8 (assuming each sufficient change was made as
27 > a separate commit with a revision bump).
28 >
29 > While such versioning change is technically correct, it is
30 > confusing for our users and makes future maintainance harder,
31 > because of multiple file renames (yeah, I know about git diff
32 > --find-renames, but this kludge is not perfect).
33 >
34 > What about the following forkflow:
35 > - version bump first with minimal changes required, but without
36 > pushing commit to the tree;
37 > - make each logical change as a separate commit without revision
38 > bumps and without pushing stuff to the tree (of course repoman
39 > scan/full is required as usual for each commit);
40 > - well test package after the last commit (that it builds with
41 > various USE flag combinations, old and new functionality works fine
42 > and so on);
43 > - fix any problems found and only afterwards push changes to the
44 > tree.
45 >
46 > This way users will see only foo-1.0 -> foo-1.1 change in the tree,
47 > while git will still retain each logical change as a separate
48 > commit, which will make future maintenance and debugging much
49 > easier.
50 >
51 > Of course a separate git branch may be used as well, but using
52 > branches for each half-a-dozen set of commits looks like an
53 > overkill to me.
54 >
55 > Thoughts, comments?
56
57 Thanks for starting the discussion. I completely agree.
58
59 Though my case might have been a bit more clear-cut since I was
60 working on an ebuild that initially didn't have any KEYWORDS, I think
61 what I did for freeradius is the best way of handling the situation
62 you describe.
63
64 See 97704b400b7^..e84dc52a816
65
66 An initial commit that copied the 3.0.12 ebuild to 3.0.12-r1 without
67 making any other changes, followed by three self-contained
68 fixes/commits, and finally a patch to add KEYWORDS to 3.0.12-r1.

Replies

Subject Author
Re: [gentoo-dev] Revision bumps vs git commits atomicity Mart Raudsepp <leio@g.o>