MaintNotes 2007-02-16 edition

Junio C Hamano committed Apr 4, 2007 at 11:25 UTC ae397f597bfaf4e8beb9b56d533e54090bfeea92
1 file changed +212
MaintNotes new
+212
@@ -0,0 +1,212 @@
1 +It has been a while since I sent this message out the last time,
2 +so it may be a good time to send it with updates again. There
3 +seem to be some new people on the git list, especially now the
4 +big release is out.
5 +
6 +This message talks about how git.git is managed, and how you can
7 +work with it.
8 +
9 +
10 +* IRC and Mailing list
11 +
12 +Many active members of development community hang around on #git
13 +IRC channel. Its log is available at:
14 +
15 + http://colabti.de/irclogger/irclogger_logs/git
16 +
17 +[jc: Does anybody know a shortcut for "Today's" page on this
18 + site? It irritates me having to click the latest link on this
19 + page to get to the latest.]
20 +
21 +
22 +The development however is primarily done on this mailing list
23 +you are reading right now. If you have patches, please send
24 +them to the list, following Documentation/SubmittingPatches.
25 +
26 +I usually read all patches posted to the list, and follow almost
27 +all the discussions on the list, unless the topic is about an
28 +obscure corner that I do not personally use. But I am obviously
29 +not perfect. If you sent a patch that you did not hear from
30 +anybody for three days, that is a very good indication that it
31 +was dropped on the floor --- please do not hesitate to remind
32 +me.
33 +
34 +The list archive is available at a few public sites as well:
35 +
36 + http://marc.theaimsgroup.com/?l=git
37 + http://news.gmane.org/gmane.comp.version-control.git
38 +
39 +and some people seem to prefer to read it over NNTP:
40 +
41 + nntp://news.gmane.org/gmane.comp.version-control.git
42 +
43 +
44 +* Repositories, branches and documentation.
45 +
46 +My public git.git repository is at:
47 +
48 + git://git.kernel.org/pub/scm/git/git.git/
49 +
50 +This is mirrored at Pasky's site at
51 +
52 + git://repo.or.cz/git.git/
53 +
54 +but the first has a few hours mirroring delay after I publish
55 +updates, and the latter, being a mirror of former, lags behind
56 +it further. Immediately after I publish to the primary
57 +repository at kernel.org, I also push into an alternate here:
58 +
59 + git://repo.or.cz/alt-git.git/
60 +
61 +Impatient people would have better lack with the last one (but
62 +the last repository does not have "html", "man" and "todo"
63 +branches, described next).
64 +
65 +
66 +There are three branches in git.git repository that are not
67 +about the source tree of git: "todo", "html" and "man". The
68 +first one was meant to contain TODO list for me, but I am not
69 +good at maintaining such a list so it is not as often updated as
70 +it could/should be. It also contains some helper scripts I use
71 +to maintain git.
72 +
73 +The "html" and "man" are autogenerated documentation from the
74 +tip of the "master" branch; the tip of "html" is extracted to be
75 +visible at kernel.org at:
76 +
77 + http://www.kernel.org/pub/software/scm/git/docs/
78 +
79 +Starting from 1.5.0, the top-level documentation page has links
80 +to documentation of older releases.
81 +
82 +The script to maintain these two documentation branches are
83 +found in "todo" branch as dodoc.sh, if you are interested. It
84 +is a good demonstration of how to use an update hook to automate
85 +a task.
86 +
87 +There are four branches in git.git repository that track the
88 +source tree of git: "master", "maint", "next", and "pu".
89 +
90 +The "master" branch is meant to contain what are reasonably
91 +tested and ready to be used in a production setting. There
92 +could occasionally be minor breakages or brown paper bag bugs
93 +but they are not expected to be anything major. Every now and
94 +then, a "feature release" is cut from the tip of this branch and
95 +they typically are named with three dotted decimal digits. The
96 +last such release was v1.5.0 done on Feb 14th this year. The
97 +codename for that release is not "snog".
98 +
99 +Whenever a feature release is made, "maint" branch is forked off
100 +from "master" at that point. Obvious, safe and urgent fixes
101 +after a feature release are applied to this branch and
102 +maintenance releases are cut from it. The maintenance releases
103 +are typically named with four dotted decimal, named after the
104 +feature release they are updates to; the last such release was
105 +v1.4.4.4, and I am expecting to cut v1.5.0.1 sometime soon.
106 +Usually new development will never go to this branch. This
107 +branch is also merged into "master" to propagate the fixes
108 +forward.
109 +
110 +A trivial and safe enhancement goes directly on top of "master".
111 +A new development, either initiated by myself or more often by
112 +somebody who found his or her own itch to scratch, does not
113 +usually happen on "master", however. Instead, it is forked into
114 +a separate topic branch from the tip of "master", and first
115 +tested in isolation; I may make minimum fixups at this point.
116 +Usually there are a handful such topic branches that are running
117 +ahead of "master" in git.git repository. I do not publish the
118 +tip of these branches in my public repository, however, partly
119 +to keep the number of branches that downstream developers need
120 +to worry about and primarily because I am lazy.
121 +
122 +I judge the quality of topic branches, taking advices from the
123 +mailing list discussions. Some of them start out as "good idea
124 +but obviously is broken in some areas (e.g. breaks the existing
125 +testsuite)" and then with some more work (either by the original
126 +contributor or help from other people on the list) becomes "more
127 +or less done and can now be tested by wider audience". Luckily,
128 +most of them start out in the latter, better shape.
129 +
130 +The "next" branch is to merge and test topic branches in the
131 +latter category. In general it should always contain the tip of
132 +"master". They might not be quite production ready, but are
133 +expected to work more or less without major breakage. I usually
134 +use "next" version of git for my own work, so it cannot be
135 +_that_ broken to prevent me from pushing the changes out.
136 +The "next" branch is where new and exciting things take place.
137 +
138 +The above three branches, "master", "maint" and "next" are never
139 +rewound, so you should be able to safely track them (that means
140 +the topics that have been merged into "next" are not rebased).
141 +
142 +The "pu" (proposed updates) branch bundles all the remainder of
143 +topic branches. The "pu" branch, and topic branches that are
144 +only in "pu", are subject to rebasing in general.
145 +
146 +When a topic that was in "pu" proves to be in testable shape, it
147 +graduates to "next". I do this with:
148 +
149 + git checkout next
150 + git merge that-topic-branch
151 +
152 +Sometimes, an idea that looked promising turns out to be not so
153 +hot and the topic can be dropped from "pu" in such a case.
154 +
155 +A topic that is in "next" is expected to be tweaked and fixed to
156 +perfection before it is merged to "master". However, being in
157 +"next" is not a guarantee to appear in the next release (being
158 +in "master" is such a guarantee, unless it is later found
159 +seriously broken and reverted), or even in any future release.
160 +There even were cases that topics needed a few reverting before
161 +graduating to "master", or a topic that already was in "next"
162 +were reverted from "next" because fatal flaws were found in them
163 +later.
164 +
165 +Starting from v1.5.0, "master" and "maint" have release notes
166 +for the next release in Documentation/RelNotes-* files, so that
167 +I do not have to run around summarizing what happened just
168 +before the release.
169 +
170 +
171 +* Other people's trees, trusted lieutenants and credits.
172 +
173 +Documentation/SubmittingPatches outlines who your changes should
174 +be sent to. As described in contrib/README, I would delegate
175 +fixes and enhancements in contrib/ area to primary contributors
176 +of them.
177 +
178 +Although the following are included in git.git repository, they
179 +have their own authoritative repository and maintainers:
180 +
181 + git-gui/ -- this subdirectory comes from Shawn Pearce's git-gui
182 + project, which is found at:
183 +
184 + git://repo.or.cz/git-gui.git
185 +
186 + gitk -- this file is maintained by Paul Packerras, at:
187 +
188 + git://git.kernel.org/pub/scm/gitk/gitk.git
189 +
190 +I would like to thank everybody who helped to raise git into the
191 +current shape. Especially I would like to thank the git list
192 +regulars whose help I have relied on and expect to continue
193 +relying on heavily:
194 +
195 + - Linus on general design issues.
196 +
197 + - Linus, Shawn Pearce, Johannes Schindelin, Nicolas Pitre, and
198 + Rene Scharfe on general implementation issues.
199 +
200 + - Shawn and Nicolas Pitre on pack issues.
201 +
202 + - Martin Langhoff on cvsserver and cvsimport.
203 +
204 + - Paul Packerras on gitk.
205 +
206 + - Eric Wong on git-svn.
207 +
208 + - Jakub Narebski and Luben Tuikov on gitweb.
209 +
210 + - J. Bruce Fields on documentaton issues.
211 +
212 +