Gentoo Archives: gentoo-dev

From: Rich Freeman <rich0@g.o>
To: gentoo-dev <gentoo-dev@l.g.o>
Subject: Re: [gentoo-dev] My masterplan for git migration (+ looking for infra to test it)
Date: Sun, 14 Sep 2014 15:58:02
Message-Id: CAGfcS_=Lmc0DAX+QvWEauWWgfBwsSG2-5yzmWNqMbPD8y5MU9A@mail.gmail.com
In Reply to: Re: [gentoo-dev] My masterplan for git migration (+ looking for infra to test it) by hasufell
1 On Sun, Sep 14, 2014 at 11:42 AM, hasufell <hasufell@g.o> wrote:
2 > Patrick Lauer:
3 >>> Are we going to disallow merge commits and ask devs to rebase local
4 >>> changes in order to keep the history "clean"?
5 >>
6 >> Is that going to be sane with our commit frequency?
7 >>
8 >
9 > You have to merge or rebase anyway in case of a push conflict, so the
10 > only difference is the method and the effect on the history.
11 >
12 > Currently... CVS allows you to run repoman on an outdated tree and push
13 > broken ebuilds with repoman being happy. Git will not allow this.
14 >
15
16 Repoman is going to be a challenge here. With cvs every package is
17 its own private repository with its own private history and cvs only
18 cares if there is a collision within the scope of a single file.
19
20 With git your commit is against the whole tree. So, even though it is
21 trivial to merge, independent commits against two different packages
22 do collide and need to be rebased or merged.
23
24 Repoman can run against a single package fairly quickly, so assuming
25 we still allow that we could do a pull/rebase/repman/push workflow
26 even if people are doing commits every few minutes. On the other
27 hand, if you're doing a package move or eclass change or some other
28 change that affects 300 packages, just doing the rebase might cost you
29 a few minutes (due to actual collisions), and running repoman against
30 the whole thing before doing a push isn't going to be practical.
31 Somebody doing a tree-wide commit would almost certainly have to run
32 repoman before the final rebase/merge, push that out, and then maybe
33 do another repoman after-the-fact and maybe clean up any issues. For
34 all intents in purposes that is what we're doing today anyway, since
35 repoman+cvs doesn't offer any kind of tree-wide consistency guarantees
36 unless you're checking out based on a timestamp or something like
37 that.
38
39 --
40 Rich