1 Welcome to git community.
3 This message talks about how git.git is managed, and how you can work
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
61 about the source tree of git: "todo", "html" and "man". The
62 first one was meant to contain TODO list for me, but I am not
63 good at maintaining such a list and it is not as often updated as
64 it could/should be. It also contains some helper scripts I use
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 an update hook to automate
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.5.4") 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.1 done on Dec 24th 2008. 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.0.6.
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 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:
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
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), or 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.
182 Starting from v1.5.0, "master" and "maint" have release notes
183 for the next release in Documentation/RelNotes-* files, so that
184 I do not have to run around summarizing what happened just
188 * Other people's trees, trusted lieutenants and credits.
190 Documentation/SubmittingPatches outlines who your changes should
191 be sent to. As described in contrib/README, I would delegate
192 fixes and enhancements in contrib/ area to primary contributors
195 Although the following are included in git.git repository, they
196 have their own authoritative repository and maintainers:
198 - git-gui/ comes from Shawn Pearce's git-gui project:
200 git://repo.or.cz/git-gui.git
202 - gitk-git/ comes from Paul Mackerras's gitk project:
204 git://git.kernel.org/pub/scm/gitk/gitk.git
206 I would like to thank everybody who helped to raise git into the
207 current shape. Especially I would like to thank the git list
208 regulars whose help I have relied on and expect to continue
211 - Linus on general design issues.
213 - Linus, Shawn Pearce, Johannes Schindelin, Nicolas Pitre,
214 René Scharfe and Jeff King on general implementation issues.
216 - Shawn and Nicolas Pitre on pack issues.
218 - Martin Langhoff and Frank Lichtenheld on cvsserver and cvsimport.
220 - Paul Mackerras on gitk.
222 - Eric Wong on git-svn.
224 - Simon Hausmann on git-p4.
226 - Jakub Narebski, Petr Baudis, and Luben Tuikov on gitweb.
228 - J. Bruce Fields on documentaton issues.
230 - Johannes Schindelin, Johannes Sixt and others for their effort
231 to move things forward on the Windows front. Most of the fruits
232 from their porting efforts have been merged to the mainline git.git
233 repository in 1.6.0 release.
235 - People on non-Linux platforms for keeping their eyes on
236 portability; especially, Randal Schwartz, Theodore Ts'o,
237 Jason Riedy, Thomas Glanzmann, but countless others as well.
241 The latest copy of this document is found in git.git repository,
242 on 'todo' branch, as MaintNotes.