Gentoo Archives: gentoo-scm

From: "Michał Górny" <mgorny@g.o>
To: Rich Freeman <rich0@g.o>
Cc: gentoo-dev <gentoo-dev@l.g.o>, infra-bugs@g.o, qa@g.o, Gentoo Council <council@g.o>, gentoo-scm@l.g.o
Subject: [gentoo-scm] Re: [gentoo-dev] Re: My masterplan for git migration (+ looking for infra to test it)
Date: Sun, 14 Sep 2014 14:58:08
Message-Id: 20140914165624.4a0b9101@pomiot.lan
In Reply to: [gentoo-scm] Re: My masterplan for git migration (+ looking for infra to test it) by Rich Freeman
1 Dnia 2014-09-14, o godz. 10:33:03
2 Rich Freeman <rich0@g.o> napisał(a):
3
4 > > Of course, that assumes infra is
5 > > going to cooperate quickly or someone else is willing to provide the
6 > > infra for it.
7 >
8 > The infra components to a git infrastructure are one of the main
9 > blockers at this point. I don't really see cooperation as the issue -
10 > just lack of manpower or interest.
11
12 By 'cooperating' I simply meant offering the necessary resources
13 in a reasonable time.
14
15 > >
16 > > 1. send announcement to devs to explain how to use git,
17 >
18 > This is one of the blockers. We haven't actually decided how we want
19 > to use git.
20 >
21 > Sure, everybody knows how to use git. The problem is that there are a
22 > dozen different ways we COULD use git, and nobody has picked the ONE
23 > way we WILL use it.
24 >
25 > This isn't as trivial as you might think. We have a fairly high
26 > commit rate and with a single repository that means that in-between a
27 > pull-merge/rebase-push there is a decent chance of another commit that
28 > will make the resulting push a non-fast-forward.
29 >
30 > People love to point out linux and its insane commit rate. The thing
31 > is, the mainline git repo with all those commits has exactly one
32 > committer - Linus himself. They don't have one big repo with one
33 > master branch that everybody pushes to. At least, that is my
34 > understanding (and there are certainly others here who are more
35 > involved with kernel development).
36
37 It's hard to talk about commit rate when we combine crippled CVS with
38 awfully stupid two-part repoman committing. This forces us to commit
39 everything immediately, and makes some of us not committing anything
40 at all anymore...
41
42 With git, we can finally do stuff like preparing everything and pushing
43 in one go. Rebasing or merging will be much easier then, since
44 the effective push rate will be smaller than current commit rate.
45
46 > > On top of user sync repo rsync is propagated. The rsync tree is populated
47 > > with all old ChangeLogs copied from CVS (stored in 30M git repo), new
48 > > ChangeLogs are generated from git logs and Manifests are expanded.
49 >
50 > So, I don't really have a problem with your design. I still question
51 > whether we still need to be generating changelogs - they seem
52 > incredibly redundant. But, if people really want a redundant copy of
53 > the git log, whatever...
54
55 I don't want them too. However, I'm pretty sure people will bikeshed
56 this to death if we kill them... Especially that rsync has no git log.
57 Not that many users make real use of ChangeLogs, esp. considering
58 how useless messages often are there...
59
60 > > Main developer repo
61 > > -------------------
62 > >
63 > > I was able to create a start git repository that takes around 66M
64 > > as a git pack (this is how much you will have to fetch to start working
65 > > with it). The repository is stripped clean of history and ChangeLogs,
66 > > and has thin Manifests only.
67 > >
68 > > This means we don't have to wait till someone figures out the perfect
69 > > way of converting the old CVS repository. You don't need that history
70 > > most of the time, and you can play with CVS to get it if you really do.
71 > > In any case, we would likely strip the history anyway to get a small
72 > > repo to work with.
73 >
74 > We already have a migration process that coverts the old CVS
75 > repository, generating both a shallow repository that lacks history
76 > and a full repository that contains all of history. Additionally,
77 > these two are consistent - that is the last branch of the full
78 > repository has the same commit ID as the base of the shallow
79 > repository. Basically we generate the full history and then trim out
80 > 99% of it so that the commit in the shallow repository points to a
81 > parent that isn't in the packed repository.
82 >
83 > Actually doing the conversion is basically a solved problem. If this
84 > were actually the blocker I'd be all for just sticking the history in
85 > a different repo and starting from scratch with a new one.
86
87 Was the resulting tree actually verified? How long does the conversion
88 take? Can it be incremental, i.e. convert most of it, lock CVS, convert
89 the remaining new commits?
90
91 > > I think we should also merge gentoo-news & glsa & herds.xml into
92 > > the repository. They all reference Gentoo packages at a particular
93 > > state in time, and it would be much nicer to have them synced properly.
94 > >
95 >
96 > I can see the pros/cons here, but I don't personally have an issue
97 > with merging them. As has been brought up elsewhere herds.xml may
98 > just go away.
99 >
100 > If somebody can come up with a set of hooks/scripts that will create
101 > the various trees and the only thing that is left is to get infra to
102 > host them, I think we can make real progress. I don't think this is
103 > something that needs to take a long time. The pieces are mostly there
104 > - they just have to be assembled.
105
106 Are you willing to champion that, then? :)
107
108 --
109 Best regards,
110 Michał Górny

Attachments

File name MIME type
signature.asc application/pgp-signature

Replies