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