1 Now a new feature release is out, it's a good time to welcome new
2 people to the list. This message talks about how git.git is managed,
3 and how you can work with it.
7 Many active members of development community hang around on #git
8 IRC channel on Freenode. Its log is available at:
10 http://colabti.de/irclogger/irclogger_log/git
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.
16 I usually try to read all patches posted to the list, and follow
17 almost 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 not
19 perfect. If you sent a patch that you did not hear from anybody for
20 three days, that is a very good indication that it was dropped on the
21 floor --- please do not hesitate to remind me.
23 The list archive is available at a few public sites as well:
25 http://marc.theaimsgroup.com/?l=git
26 http://news.gmane.org/gmane.comp.version-control.git
27 http://www.spinics.net/lists/git/
29 and some people seem to prefer to read it over NNTP:
31 nntp://news.gmane.org/gmane.comp.version-control.git
33 * Repositories, branches and documentation.
35 My public git.git repository is at:
37 git://git.kernel.org/pub/scm/git/git.git/
39 Immediately after I publish to the primary repository at kernel.org, I
40 also push into an alternate here:
42 git://repo.or.cz/alt-git.git/
44 Impatient people might have better luck with the latter one.
46 Their gitweb interfaces are found at:
48 http://git.kernel.org/?p=git/git.git
49 http://repo.or.cz/w/alt-git.git
51 There are three branches in git.git repository that are not
52 about the source tree of git: "todo", "html" and "man". The
53 first one was meant to contain TODO list for me, but I am not
54 good at maintaining such a list so it is not as often updated as
55 it could/should be. It also contains some helper scripts I use
58 The "html" and "man" are autogenerated documentation from the
59 tip of the "master" branch; the tip of "html" is extracted to be
60 visible at kernel.org at:
62 http://www.kernel.org/pub/software/scm/git/docs/
64 The above URL is the top-level documentation page, and it has
65 links to documentation of older releases.
67 The script to maintain these two documentation branches are
68 found in "todo" branch as dodoc.sh, if you are interested. It
69 is a good demonstration of how to use an update hook to automate
72 There are four branches in git.git repository that track the
73 source tree of git: "master", "maint", "next", and "pu". I may
74 add more maintenance branches (e.g. "maint-1.5.1") if we have
75 huge backward incompatible feature updates in the future to keep
76 an older release alive; I may not, but the distributed nature of
77 git means any volunteer can run a stable-tree like that himself.
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.3 done on Sep 2nd this year. You
86 can expect that the tip of the "master" branch is always as
87 stable as any of the released versions, if not more stable.
89 Whenever a feature release is made, "maint" branch is forked off
90 from "master" at that point. Obvious, safe and urgent fixes
91 after a feature release are applied to this branch and
92 maintenance releases are cut from it. The maintenance releases
93 are named with four dotted decimal, named after the feature
94 release they are updates to; the last such release was v1.5.2.5.
95 New features never go to this branch. This branch is also
96 merged into "master" to propagate the fixes forward.
98 A trivial and safe enhancement goes directly on top of "master".
99 A new development, either initiated by myself or more often by
100 somebody who found his or her own itch to scratch, does not
101 usually happen on "master", however. Instead, a separate topic
102 branch is forked from the tip of "master", and it first is
103 tested in isolation; I may make minimum fixups at this point.
104 Usually there are a handful such topic branches that are running
105 ahead of "master" in git.git repository. I do not publish the
106 tip of these branches in my public repository, however, partly
107 to keep the number of branches that downstream developers need
108 to worry about low, and primarily because I am lazy.
110 I judge the quality of topic branches, taking advices from the
111 mailing list discussions. Some of them start out as "good idea
112 but obviously is broken in some areas (e.g. breaks the existing
113 testsuite)" and then with some more work (either by the original
114 contributor or help from other people on the list) becomes "more
115 or less done and can now be tested by wider audience". Luckily,
116 most of them start out in the latter, better shape.
118 The "next" branch is to merge and test topic branches in the
119 latter category. In general, the branch always contains the tip
120 of "master". It might not be quite rock-solid production ready,
121 but is expected to work more or less without major breakage. I
122 usually use "next" version of git for my own work, so it cannot
123 be _that_ broken to prevent me from pushing the changes out.
124 The "next" branch is where new and exciting things take place.
125 Note that being in "next" does not mean the change will be in
126 the next feature release.
128 The above three branches, "master", "maint" and "next" are never
129 rewound, so you should be able to safely track them (this
130 automatically means the topics that have been merged into "next"
131 are not rebased, and you can find the tip of topic branches you
132 are interested in from the output of "git log next").
134 The "pu" (proposed updates) branch bundles all the remainder of
135 topic branches. The "pu" branch, and topic branches that are
136 only in "pu", are subject to rebasing in general. By the above
137 definition of how "next" works, you can tell that this branch
138 will contain quite experimental and obviously broken stuff.
140 When a topic that was in "pu" proves to be in testable shape, it
141 graduates to "next". I do this with:
144 git merge that-topic-branch
146 Sometimes, an idea that looked promising turns out to be not so
147 good and the topic can be dropped from "pu" in such a case.
149 A topic that is in "next" is expected to be tweaked and fixed to
150 perfection before it is merged to "master" (that's why "master"
151 can be expected to stay very stable). Similarly to the above, I
155 git merge that-topic-branch
156 git branch -d that-topic-branch
158 However, being in "next" is not a guarantee to appear in the
159 next release (being in "master" is such a guarantee, unless it
160 is later found seriously broken and reverted), or even in any
161 future release. There even were cases that topics needed
162 reverting a few commits in them before graduating to "master",
163 or a topic that already was in "next" were entirely reverted
164 from "next" because fatal flaws were found in them later.
166 Starting from v1.5.0, "master" and "maint" have release notes
167 for the next release in Documentation/RelNotes-* files, so that
168 I do not have to run around summarizing what happened just
172 * Other people's trees, trusted lieutenants and credits.
174 Documentation/SubmittingPatches outlines who your changes should
175 be sent to. As described in contrib/README, I would delegate
176 fixes and enhancements in contrib/ area to primary contributors
179 Although the following are included in git.git repository, they
180 have their own authoritative repository and maintainers:
182 git-gui/ -- this subdirectory comes from Shawn Pearce's git-gui
183 project, which is found at:
185 git://repo.or.cz/git-gui.git
187 gitk -- this file is maintained by Paul Mackerras, at:
189 git://git.kernel.org/pub/scm/gitk/gitk.git
191 I would like to thank everybody who helped to raise git into the
192 current shape. Especially I would like to thank the git list
193 regulars whose help I have relied on and expect to continue
196 - Linus on general design issues.
198 - Linus, Shawn Pearce, Johannes Schindelin, Nicolas Pitre, and
199 Rene Scharfe on general implementation issues.
201 - Shawn and Nicolas Pitre on pack issues.
203 - Martin Langhoff and Frank Lichtenheld on cvsserver and cvsimport.
205 - Paul Mackerras on gitk.
207 - Eric Wong on git-svn.
209 - Jakub Narebski, Petr Baudis, and Luben Tuikov on gitweb.
211 - J. Bruce Fields on documentaton issues.
213 - Johannes Schindelin and Johannes Sixt for their effort to
214 move things forward on the Windows front. Although my
215 repository does not have much from the effort of MinGW team,
216 I expect a merge into mainline will happen so that everybody
217 can work from the same codebase.
219 - People on non-Linux platforms for keeping their eyes on
220 portability; especially, Randal Schwartz, Theodore Ts'o,
221 Jason Riedy, Thomas Glanzmann, but countless others as well.
225 The latest copy of this document is found in git.git repository,
226 on 'todo' branch, as MaintNotes.