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