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