Mention #git is on freenode in 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://marc.theaimsgroup.com/?l=git
26         http://news.gmane.org/gmane.comp.version-control.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 * Repositories, branches and documentation.
34
35 My public git.git repository is at:
36
37         git://git.kernel.org/pub/scm/git/git.git/
38
39 Immediately after I publish to the primary repository at kernel.org, I
40 also push into an alternate here:
41
42         git://repo.or.cz/alt-git.git/
43
44 Impatient people would have better luck with the latter one, but it
45 does not have "html" and "man" branches (described below).
46
47 There are three branches in git.git repository that are not
48 about the source tree of git: "todo", "html" and "man".  The
49 first one was meant to contain TODO list for me, but I am not
50 good at maintaining such a list so it is not as often updated as
51 it could/should be.  It also contains some helper scripts I use
52 to maintain git.
53
54 The "html" and "man" are autogenerated documentation from the
55 tip of the "master" branch; the tip of "html" is extracted to be
56 visible at kernel.org at:
57
58         http://www.kernel.org/pub/software/scm/git/docs/
59
60 The above URL is the top-level documentation page, and it has
61 links to documentation of older releases.
62
63 The script to maintain these two documentation branches are
64 found in "todo" branch as dodoc.sh, if you are interested.  It
65 is a good demonstration of how to use an update hook to automate
66 a task.
67
68 There are four branches in git.git repository that track the
69 source tree of git: "master", "maint", "next", and "pu".  I may
70 add more maintenance branches (e.g. "maint-1.5.1") if we have
71 huge backward incompatible feature updates in the future to keep
72 an older release alive; I may not, but the distributed nature of
73 git means any volunteer can run a stable-tree like that himself.
74
75 The "master" branch is meant to contain what are very well
76 tested and ready to be used in a production setting.  There
77 could occasionally be minor breakages or brown paper bag bugs
78 but they are not expected to be anything major.  Every now and
79 then, a "feature release" is cut from the tip of this branch and
80 they typically are named with three dotted decimal digits.  The
81 last such release was v1.5.2 done on May 20th this year.
82
83 Whenever a feature release is made, "maint" branch is forked off
84 from "master" at that point.  Obvious, safe and urgent fixes
85 after a feature release are applied to this branch and
86 maintenance releases are cut from it.  The maintenance releases
87 are named with four dotted decimal, named after the feature
88 release they are updates to; the last such release was v1.5.1.6.
89 New features never go to this branch.  This branch is also
90 merged into "master" to propagate the fixes forward.
91
92 A trivial and safe enhancement goes directly on top of "master".
93 A new development, either initiated by myself or more often by
94 somebody who found his or her own itch to scratch, does not
95 usually happen on "master", however.  Instead, a separate topic
96 branch is forked from the tip of "master", and it first is
97 tested in isolation; I may make minimum fixups at this point.
98 Usually there are a handful such topic branches that are running
99 ahead of "master" in git.git repository.  I do not publish the
100 tip of these branches in my public repository, however, partly
101 to keep the number of branches that downstream developers need
102 to worry about low, and primarily because I am lazy.
103
104 I judge the quality of topic branches, taking advices from the
105 mailing list discussions.  Some of them start out as "good idea
106 but obviously is broken in some areas (e.g. breaks the existing
107 testsuite)" and then with some more work (either by the original
108 contributor or help from other people on the list) becomes "more
109 or less done and can now be tested by wider audience".  Luckily,
110 most of them start out in the latter, better shape.
111
112 The "next" branch is to merge and test topic branches in the
113 latter category.  In general, the branch always contains the tip
114 of "master".  It might not be quite rock-solid production ready,
115 but is expected to work more or less without major breakage.  I
116 usually use "next" version of git for my own work, so it cannot
117 be _that_ broken to prevent me from pushing the changes out.
118 The "next" branch is where new and exciting things take place.
119
120 The above three branches, "master", "maint" and "next" are never
121 rewound, so you should be able to safely track them (this
122 automatically means the topics that have been merged into "next"
123 are not rebased, and you can find the tip of topic branches you
124 are interested in from the output of "git log next").
125
126 The "pu" (proposed updates) branch bundles all the remainder of
127 topic branches.  The "pu" branch, and topic branches that are
128 only in "pu", are subject to rebasing in general.
129
130 When a topic that was in "pu" proves to be in testable shape, it
131 graduates to "next".  I do this with:
132
133         git checkout next
134         git merge that-topic-branch
135
136 Sometimes, an idea that looked promising turns out to be not so
137 hot and the topic can be dropped from "pu" in such a case.
138
139 A topic that is in "next" is expected to be tweaked and fixed to
140 perfection before it is merged to "master" (that's why "master"
141 can be expected to stay very stable).  Similarly to the above I
142 do it with this:
143
144         git checkout master
145         git merge that-topic-branch
146         git branch -d that-topic-branch
147
148 However, being in "next" is not a guarantee to appear in the
149 next release (being in "master" is such a guarantee, unless it
150 is later found seriously broken and reverted), or even in any
151 future release.  There even were cases that topics needed
152 reverting a few commits in them before graduating to "master",
153 or a topic that already was in "next" were entirely reverted
154 from "next" because fatal flaws were found in them later.
155
156 Starting from v1.5.0, "master" and "maint" have release notes
157 for the next release in Documentation/RelNotes-* files, so that
158 I do not have to run around summarizing what happened just
159 before the release.
160
161
162 * Other people's trees, trusted lieutenants and credits.
163
164 Documentation/SubmittingPatches outlines who your changes should
165 be sent to.  As described in contrib/README, I would delegate
166 fixes and enhancements in contrib/ area to primary contributors
167 of them.
168
169 Although the following are included in git.git repository, they
170 have their own authoritative repository and maintainers:
171
172  git-gui/ -- this subdirectory comes from Shawn Pearce's git-gui
173              project, which is found at:
174
175              git://repo.or.cz/git-gui.git
176
177  gitk     -- this file is maintained by Paul Mackerras, at:
178
179              git://git.kernel.org/pub/scm/gitk/gitk.git
180
181 I would like to thank everybody who helped to raise git into the
182 current shape.  Especially I would like to thank the git list
183 regulars whose help I have relied on and expect to continue
184 relying on heavily:
185
186  - Linus on general design issues.
187
188  - Linus, Shawn Pearce, Johannes Schindelin, Nicolas Pitre, and
189    Rene Scharfe on general implementation issues.
190
191  - Shawn and Nicolas Pitre on pack issues.
192
193  - Martin Langhoff and Frank Lichtenheld on cvsserver and cvsimport.
194
195  - Paul Mackerras on gitk.
196
197  - Eric Wong on git-svn.
198
199  - Jakub Narebski, Peter Baudis, and Luben Tuikov on gitweb.
200
201  - J. Bruce Fields on documentaton issues.
202
203
204 * This document
205
206 The latest copy of this document is found in git.git repository,
207 on 'todo' branch, as MaintNotes.