Update MaintNotes
[git] / MaintNotes
1 Now a new feature release is out, it's a good time to welcome new
2 people to the list.  This message talks about how git.git is managed,
3 and how you can work with it.
4
5 * IRC and Mailing list
6
7 Many active members of development community hang around on #git
8 IRC channel on Freenode.  Its log is available at:
9
10         http://colabti.de/irclogger/irclogger_log/git
11
12 The development however is primarily done on this mailing list
13 you are reading right now.  If you have patches, please send
14 them to the list, following Documentation/SubmittingPatches.
15
16 I usually try to read all patches posted to the list, and follow
17 almost all the discussions on the list, unless the topic is about an
18 obscure corner that I do not personally use.  But I am obviously not
19 perfect.  If you sent a patch that you did not hear from anybody for
20 three days, that is a very good indication that it was dropped on the
21 floor --- please do not hesitate to remind me.
22
23 The list archive is available at a few public sites as well:
24
25         http://news.gmane.org/gmane.comp.version-control.git/
26         http://marc.theaimsgroup.com/?l=git
27         http://www.spinics.net/lists/git/
28
29 and some people seem to prefer to read it over NNTP:
30
31         nntp://news.gmane.org/gmane.comp.version-control.git
32
33 When you point at a message in a mailing list archive, using
34 gmane is often the easiest to follow by readers, like this:
35
36         http://thread.gmane.org/gmane.comp.version-control.git/27/focus=217
37
38 as it also allows people who subscribe to the mailing list as
39 gmane newsgroup to "jump to" the article.
40
41 * Repositories, branches and documentation.
42
43 My public git.git repository is at:
44
45         git://git.kernel.org/pub/scm/git/git.git/
46
47 Immediately after I publish to the primary repository at kernel.org, I
48 also push into an alternate here:
49
50         git://repo.or.cz/alt-git.git/
51
52 Impatient people might have better luck with the latter one.
53
54 Their gitweb interfaces are found at:
55
56         http://git.kernel.org/?p=git/git.git
57         http://repo.or.cz/w/alt-git.git
58
59 There are three branches in git.git repository that are not
60 about the source tree of git: "todo", "html" and "man".  The
61 first one was meant to contain TODO list for me, but I am not
62 good at maintaining such a list so it is not as often updated as
63 it could/should be.  It also contains some helper scripts I use
64 to maintain git.
65
66 The "html" and "man" are autogenerated documentation from the
67 tip of the "master" branch; the tip of "html" is extracted to be
68 visible at kernel.org at:
69
70         http://www.kernel.org/pub/software/scm/git/docs/
71
72 The above URL is the top-level documentation page, and it has
73 links to documentation of older releases.
74
75 The script to maintain these two documentation branches are
76 found in "todo" branch as dodoc.sh, if you are interested.  It
77 is a good demonstration of how to use an update hook to automate
78 a task.
79
80 There are four branches in git.git repository that track the
81 source tree of git: "master", "maint", "next", and "pu".  I may
82 add more maintenance branches (e.g. "maint-1.5.1") if we have
83 hugely backward incompatible feature updates in the future to keep
84 an older release alive; I may not, but the distributed nature of
85 git means any volunteer can run a stable-tree like that himself.
86
87 The "master" branch is meant to contain what are very well
88 tested and ready to be used in a production setting.  There
89 could occasionally be minor breakages or brown paper bag bugs
90 but they are not expected to be anything major, and more
91 importantly quickly and trivially fixable.  Every now and
92 then, a "feature release" is cut from the tip of this branch and
93 they typically are named with three dotted decimal digits.  The
94 last such release was v1.5.3 done on Sep 2nd last year.  You
95 can expect that the tip of the "master" branch is always more
96 stable than any of the released versions.
97
98 Whenever a feature release is made, "maint" branch is forked off
99 from "master" at that point.  Obvious, safe and urgent fixes
100 after a feature release are applied to this branch and
101 maintenance releases are cut from it.  The maintenance releases
102 are named with four dotted decimal, named after the feature
103 release they are updates to; the last such release was v1.5.3.7.
104 New features never go to this branch.  This branch is also
105 merged into "master" to propagate the fixes forward.
106
107 A trivial and safe enhancement goes directly on top of "master".
108 A new development, either initiated by myself or more often by
109 somebody who found his or her own itch to scratch, does not
110 usually happen on "master", however.  Instead, a separate topic
111 branch is forked from the tip of "master", and it first is
112 tested in isolation; I may make minimum fixups at this point.
113 Usually there are a handful such topic branches that are running
114 ahead of "master" in git.git repository.  I do not publish the
115 tip of these branches in my public repository, however, partly
116 to keep the number of branches that downstream developers need
117 to worry about low, and primarily because I am lazy.
118
119 I judge the quality of topic branches, taking advices from the
120 mailing list discussions.  Some of them start out as "good idea
121 but obviously is broken in some areas (e.g. breaks the existing
122 testsuite)" and then with some more work (either by the original
123 contributor or help from other people on the list) becomes "more
124 or less done and can now be tested by wider audience".  Luckily,
125 most of them start out in the latter, better shape.
126
127 The "next" branch is to merge and test topic branches in the
128 latter category.  In general, the branch always contains the tip
129 of "master".  It might not be quite rock-solid production ready,
130 but is expected to work more or less without major breakage.  I
131 usually use "next" version of git for my own work, so it cannot
132 be _that_ broken to prevent me from pushing the changes out.
133 The "next" branch is where new and exciting things take place.
134
135 The above three branches, "master", "maint" and "next" are never
136 rewound, so you should be able to safely track them (this
137 automatically means the topics that have been merged into "next"
138 are never rebased, and you can find the tip of topic branches you
139 are interested in from the output of "git log next").
140
141 The "pu" (proposed updates) branch bundles all the remainder of
142 topic branches.  The "pu" branch, and topic branches that are
143 only in "pu", are subject to rebasing in general.  By the above
144 definition of how "next" works, you can tell that this branch
145 will contain quite experimental and obviously broken stuff.
146
147 When a topic that was in "pu" proves to be in testable shape, it
148 graduates to "next".  I do this with:
149
150         git checkout next
151         git merge that-topic-branch
152
153 Sometimes, an idea that looked promising turns out to be not so
154 good and the topic can be dropped from "pu" in such a case.
155
156 A topic that is in "next" is expected to be tweaked and fixed to
157 perfection before it is merged to "master" (that's why "master"
158 can be expected to stay very stable).  Similarly to the above, I
159 do it with this:
160
161         git checkout master
162         git merge that-topic-branch
163         git branch -d that-topic-branch
164
165 Note that being in "next" is not a guarantee to appear in the
166 next release (being in "master" is such a guarantee, unless it
167 is later found seriously broken and reverted), or even in any
168 future release.  There even were cases that topics needed
169 reverting a few commits in them before graduating to "master",
170 or a topic that already was in "next" were entirely reverted
171 from "next" because fatal flaws were found in them later.
172
173 Starting from v1.5.0, "master" and "maint" have release notes
174 for the next release in Documentation/RelNotes-* files, so that
175 I do not have to run around summarizing what happened just
176 before the release.
177
178
179 * Other people's trees, trusted lieutenants and credits.
180
181 Documentation/SubmittingPatches outlines who your changes should
182 be sent to.  As described in contrib/README, I would delegate
183 fixes and enhancements in contrib/ area to primary contributors
184 of them.
185
186 Although the following are included in git.git repository, they
187 have their own authoritative repository and maintainers:
188
189  git-gui/ -- this subdirectory comes from Shawn Pearce's git-gui
190              project, which is found at:
191
192              git://repo.or.cz/git-gui.git
193
194  gitk     -- this file is maintained by Paul Mackerras, at:
195
196              git://git.kernel.org/pub/scm/gitk/gitk.git
197
198 I would like to thank everybody who helped to raise git into the
199 current shape.  Especially I would like to thank the git list
200 regulars whose help I have relied on and expect to continue
201 relying on heavily:
202
203  - Linus on general design issues.
204
205  - Linus, Shawn Pearce, Johannes Schindelin, Nicolas Pitre,
206    RĂ©ne Scharfe and Jeff King on general implementation issues.
207
208  - Shawn and Nicolas Pitre on pack issues.
209
210  - Martin Langhoff and Frank Lichtenheld on cvsserver and cvsimport.
211
212  - Paul Mackerras on gitk.
213
214  - Eric Wong on git-svn.
215
216  - Jakub Narebski, Petr Baudis, and Luben Tuikov on gitweb.
217
218  - J. Bruce Fields on documentaton issues.
219
220  - Johannes Schindelin and Johannes Sixt for their effort to
221    move things forward on the Windows front.  Although my
222    repository does not have much from the effort of MinGW team,
223    I expect a merge into mainline will happen so that everybody
224    can work from the same codebase.
225
226  - People on non-Linux platforms for keeping their eyes on
227    portability; especially, Randal Schwartz, Theodore Ts'o,
228    Jason Riedy, Thomas Glanzmann, but countless others as well.
229
230 * This document
231
232 The latest copy of this document is found in git.git repository,
233 on 'todo' branch, as MaintNotes.