1 Welcome to git development community.
3 This message is written by the maintainer and talks about how Git
4 project is managed, and how you can work with it.
8 Members of the development community can sometimes be found on #git
9 IRC channel on Freenode. Its log is available at:
11 http://colabti.org/irclogger/irclogger_log/git
13 The development is primarily done on the Git mailing list. If you have
14 patches, please send them to the list address (git@vger.kernel.org).
15 following Documentation/SubmittingPatches. You don't have to be
16 subscribed to send messages there, and the convention is to Cc:
17 everybody involved, so you don't even have to say "Please Cc: me, I am
20 If you sent a patch and you did not hear any response from anybody for
21 several days, it could be that your patch was totally uninteresting, but
22 it also is possible that it was simply lost in the noise. Please do not
23 hesitate to send a reminder message politely in such a case. Messages
24 getting lost in the noise is a sign that people involved don't have enough
25 mental/time bandwidth to process them right at the moment, and it often
26 helps to wait until the list traffic becomes calmer before sending such a
29 The list archive is available at a few public sites as well:
31 http://news.gmane.org/gmane.comp.version-control.git/
32 http://marc.theaimsgroup.com/?l=git
33 http://www.spinics.net/lists/git/
35 and some people seem to prefer to read it over NNTP:
37 nntp://news.gmane.org/gmane.comp.version-control.git
39 When you point at a message in a mailing list archive, using
40 gmane is often the easiest to follow by readers, like this:
42 http://thread.gmane.org/gmane.comp.version-control.git/27/focus=217
44 as it also allows people who subscribe to the mailing list as
45 gmane newsgroup to "jump to" the article.
47 * Repositories, branches and documentation.
49 My public git.git repository is at:
51 git://git.kernel.org/pub/scm/git/git.git/
53 Immediately after I publish to the primary repository at kernel.org, I
54 also push into an alternate here:
56 git://repo.or.cz/alt-git.git/
58 Impatient people might have better luck with the latter one (there are a
59 few other mirrors I push into at sourceforge and github as well).
61 Their gitweb interfaces are found at:
63 http://git.kernel.org/?p=git/git.git
64 http://repo.or.cz/w/alt-git.git
66 There are three branches in git.git repository that are not about the
67 source tree of git: "todo", "html" and "man". The first one was meant to
68 contain TODO list for me, but I am not good at maintaining such a list and
69 it is in an abandoned state. The branch mostly is used to keep some
70 helper scripts I use to maintain git and the regular "What's cooking"
73 The "html" and "man" are autogenerated documentation from the tip of the
74 "master" branch; the tip of "html" is extracted to be visible at
77 http://www.kernel.org/pub/software/scm/git/docs/
79 The above URL is the top-level documentation page, and it has
80 links to documentation of older releases.
82 The script to maintain these two documentation branches are found in the
83 "todo" branch as dodoc.sh, if you are interested. It is a demonstration
84 of how to use a post-update hook to automate a task after pushing into a
87 There are four branches in git.git repository that track the source tree
88 of git: "master", "maint", "next", and "pu". I may add more maintenance
89 branches (e.g. "maint-1.6.3") if we have hugely backward incompatible
90 feature updates in the future to keep an older release alive; I may not,
91 but the distributed nature of git means any volunteer can run a
92 stable-tree like that herself.
94 The "master" branch is meant to contain what are very well tested and
95 ready to be used in a production setting. There could occasionally be
96 minor breakages or brown paper bag bugs but they are not expected to be
97 anything major, and more importantly quickly and trivially fixable. Every
98 now and then, a "feature release" is cut from the tip of this branch and
99 they typically are named with three dotted decimal digits. The last such
100 release was 1.7.4 done on Jan 30, 2011. You can expect that the tip of
101 the "master" branch is always more stable than any of the released
104 Whenever a feature release is made, "maint" branch is forked off from
105 "master" at that point. Obvious, safe and urgent fixes after a feature
106 release are applied to this branch and maintenance releases are cut from
107 it. The maintenance releases are named with four dotted decimal, named
108 after the feature release they are updates to; the last such release was
109 1.7.3.5. New features never go to this branch. This branch is also
110 merged into "master" to propagate the fixes forward.
112 A trivial and safe enhancement goes directly on top of "master". A new
113 development, either initiated by myself or more often by somebody who
114 found his or her own itch to scratch, does not usually happen on "master",
115 however. Instead, a separate topic branch is forked from the tip of
116 "master", and it first is tested in isolation; I may make minimum fixups
117 at this point. Usually there are a handful such topic branches that are
118 running ahead of "master" in git.git repository. I do not publish the tip
119 of these branches in my public repository, however, partly to keep the
120 number of branches that downstream developers need to worry about low, and
121 primarily because I am lazy.
123 The quality of topic branches are judged primarily by the mailing list
124 discussions. Some of them start out as "good idea but obviously is broken
125 in some areas (e.g. breaks the existing testsuite)" and then with some
126 more work (either by the original contributor's effort or help from other
127 people on the list) becomes "more or less done and can now be tested by
128 wider audience". Luckily, most of them start out in the latter, better
131 The "next" branch is to merge and test topic branches in the latter
132 category. In general, the branch always contains the tip of "master". It
133 might not be quite rock-solid production ready, but is expected to work
134 more or less without major breakage. I usually use "next" version of git
135 for my own work, so it cannot be _that_ broken to prevent me from
136 integrating and pushing the changes out. The "next" branch is where new
137 and exciting things take place.
139 The two branches "master" and "maint" are never rewound, and "next"
140 usually will not be either (this automatically means the topics that have
141 been merged into "next" are usually not rebased, and you can find the tip
142 of topic branches you are interested in from the output of "git log
143 next"). You should be able to safely build on top of them.
145 After a feature release is made from "master", however, "next" will be
146 rebuilt from the tip of "master" using the surviving topics. The commit
147 that replaces the tip of the "next" will usually have the identical tree,
148 but it will have different ancestry from the tip of "master".
150 The "pu" (proposed updates) branch bundles all the remainder of topic
151 branches. The "pu" branch, and topic branches that are only in "pu", are
152 subject to rebasing in general. By the above definition of how "next"
153 works, you can tell that this branch will contain quite experimental and
154 obviously broken stuff.
156 When a topic that was in "pu" proves to be in testable shape, it graduates
157 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 good and
163 the topic can be dropped from "pu" in such a case.
165 A topic that is in "next" is expected to be polished to perfection before
166 it is merged to "master" (that's why "master" can be expected to stay more
167 stable than any released version). Similarly to the above, I do it with
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 next release
175 (being in "master" is such a guarantee, unless it is later found seriously
176 broken and reverted), nor even in any future release. There even were
177 cases that topics needed reverting a few commits in them before graduating
178 to "master", or a topic that already was in "next" were entirely reverted
179 from "next" because fatal flaws were found in them later.
182 * Other people's trees, trusted lieutenants and credits.
184 Documentation/SubmittingPatches outlines to whom your proposed changes
185 should be sent. As described in contrib/README, I would delegate fixes
186 and enhancements in contrib/ area to the primary contributors of them.
188 Although the following are included in git.git repository, they have their
189 own authoritative repository and maintainers:
191 - git-gui/ comes from git-gui project, maintained by Pat Thoyts:
193 git://repo.or.cz/git-gui.git
195 - gitk-git/ comes from Paul Mackerras's gitk project:
197 git://git.kernel.org/pub/scm/gitk/gitk.git
199 I would like to thank everybody who helped to raise git into the current
200 shape. Especially I would like to thank the git list regulars whose help
201 I have relied on and expect to continue relying on heavily:
203 - Linus on general design issues.
205 - Linus, Shawn Pearce, Johannes Schindelin, Nicolas Pitre, René
206 Scharfe, Jeff King, Jonathan Nieder, Johan Herland, Johannes Sixt,
207 Sverre Rabbelier and Thomas Rast on general implementation issues
208 and reviews on the mailing list.
210 - Shawn and Nicolas Pitre on pack issues.
212 - Martin Langhoff, Frank Lichtenheld and Ævar Arnfjörð Bjarmason on
213 cvsserver and cvsimport.
215 - Paul Mackerras on gitk.
217 - Eric Wong, David D. Kilzer and Sam Vilain on git-svn.
219 - Simon Hausmann and Pete Wyckoff on git-p4.
221 - Jakub Narebski, John Hawley, Petr Baudis, Luben Tuikov, Giuseppe Bilotta on
224 - J. Bruce Fields, Jonathan Nieder, Michael J Gruber and Thomas Rast on
225 documentation (and countless others for proofreading and fixing).
227 - Alexandre Julliard on Emacs integration.
229 - David Aguilar and Charles Bailey for taking good care of git-mergetool
230 (and Theodore Ts'o for creating it in the first place) and git-difftool.
232 - Johannes Schindelin, Johannes Sixt, Erik Faye-Lund and others for their
233 effort to move things forward on the Windows front.
235 - People on non-Linux platforms for keeping their eyes on portability;
236 especially, Randal Schwartz, Theodore Ts'o, Jason Riedy, Thomas Glanzmann,
237 Brandon Casey, Jeff King, Alex Riesen and countless others.
241 The latest copy of this document is found in git.git repository,
242 on 'todo' branch, as MaintNotes.