mailing list mirror (one of many)
 help / Atom feed
From: Junio C Hamano <>
Subject: A note from the maintainer
Date: Sat, 01 Sep 2007 23:34:15 -0700
Message-ID: <> (raw)
In-Reply-To: <>

Now a new feature release is out, it's a good time to welcome new
people to the list.  This message talks about how git.git is managed,
and how you can work with it.

* IRC and Mailing list

Many active members of development community hang around on #git
IRC channel on Freenode.  Its log is available at:

The development however is primarily done on this mailing list
you are reading right now.  If you have patches, please send
them to the list, following Documentation/SubmittingPatches.

I usually try to read all patches posted to the list, and follow
almost all the discussions on the list, unless the topic is about an
obscure corner that I do not personally use.  But I am obviously not
perfect.  If you sent a patch that you did not hear from anybody for
three days, that is a very good indication that it was dropped on the
floor --- please do not hesitate to remind me.

The list archive is available at a few public sites as well:

and some people seem to prefer to read it over NNTP:


* Repositories, branches and documentation.

My public git.git repository is at:


Immediately after I publish to the primary repository at, I
also push into an alternate here:


Impatient people might have better luck with the latter one.

Their gitweb interfaces are found at:

There are three branches in git.git repository that are not
about the source tree of git: "todo", "html" and "man".  The
first one was meant to contain TODO list for me, but I am not
good at maintaining such a list so it is not as often updated as
it could/should be.  It also contains some helper scripts I use
to maintain git.

The "html" and "man" are autogenerated documentation from the
tip of the "master" branch; the tip of "html" is extracted to be
visible at at:

The above URL is the top-level documentation page, and it has
links to documentation of older releases.

The script to maintain these two documentation branches are
found in "todo" branch as, if you are interested.  It
is a good demonstration of how to use an update hook to automate
a task.

There are four branches in git.git repository that track the
source tree of git: "master", "maint", "next", and "pu".  I may
add more maintenance branches (e.g. "maint-1.5.1") if we have
huge backward incompatible feature updates in the future to keep
an older release alive; I may not, but the distributed nature of
git means any volunteer can run a stable-tree like that himself.

The "master" branch is meant to contain what are very well
tested and ready to be used in a production setting.  There
could occasionally be minor breakages or brown paper bag bugs
but they are not expected to be anything major.  Every now and
then, a "feature release" is cut from the tip of this branch and
they typically are named with three dotted decimal digits.  The
last such release was v1.5.3 done on Sep 2nd this year.  You
can expect that the tip of the "master" branch is always as
stable as any of the released versions, if not more stable.

Whenever a feature release is made, "maint" branch is forked off
from "master" at that point.  Obvious, safe and urgent fixes
after a feature release are applied to this branch and
maintenance releases are cut from it.  The maintenance releases
are named with four dotted decimal, named after the feature
release they are updates to; the last such release was v1.5.2.5.
New features never go to this branch.  This branch is also
merged into "master" to propagate the fixes forward.

A trivial and safe enhancement goes directly on top of "master".
A new development, either initiated by myself or more often by
somebody who found his or her own itch to scratch, does not
usually happen on "master", however.  Instead, a separate topic
branch is forked from the tip of "master", and it first is
tested in isolation; I may make minimum fixups at this point.
Usually there are a handful such topic branches that are running
ahead of "master" in git.git repository.  I do not publish the
tip of these branches in my public repository, however, partly
to keep the number of branches that downstream developers need
to worry about low, and primarily because I am lazy.

I judge the quality of topic branches, taking advices from the
mailing list discussions.  Some of them start out as "good idea
but obviously is broken in some areas (e.g. breaks the existing
testsuite)" and then with some more work (either by the original
contributor or help from other people on the list) becomes "more
or less done and can now be tested by wider audience".  Luckily,
most of them start out in the latter, better shape.

The "next" branch is to merge and test topic branches in the
latter category.  In general, the branch always contains the tip
of "master".  It might not be quite rock-solid production ready,
but is expected to work more or less without major breakage.  I
usually use "next" version of git for my own work, so it cannot
be _that_ broken to prevent me from pushing the changes out.
The "next" branch is where new and exciting things take place.
Note that being in "next" does not mean the change will be in
the next feature release.

The above three branches, "master", "maint" and "next" are never
rewound, so you should be able to safely track them (this
automatically means the topics that have been merged into "next"
are not rebased, and you can find the tip of topic branches you
are interested in from the output of "git log next").

The "pu" (proposed updates) branch bundles all the remainder of
topic branches.  The "pu" branch, and topic branches that are
only in "pu", are subject to rebasing in general.  By the above
definition of how "next" works, you can tell that this branch
will contain quite experimental and obviously broken stuff.

When a topic that was in "pu" proves to be in testable shape, it
graduates to "next".  I do this with:

        git checkout next
        git merge that-topic-branch

Sometimes, an idea that looked promising turns out to be not so
good and the topic can be dropped from "pu" in such a case.

A topic that is in "next" is expected to be tweaked and fixed to
perfection before it is merged to "master" (that's why "master"
can be expected to stay very stable).  Similarly to the above, I
do it with this:

        git checkout master
        git merge that-topic-branch
        git branch -d that-topic-branch

However, being in "next" is not a guarantee to appear in the
next release (being in "master" is such a guarantee, unless it
is later found seriously broken and reverted), or even in any
future release.  There even were cases that topics needed
reverting a few commits in them before graduating to "master",
or a topic that already was in "next" were entirely reverted
from "next" because fatal flaws were found in them later.

Starting from v1.5.0, "master" and "maint" have release notes
for the next release in Documentation/RelNotes-* files, so that
I do not have to run around summarizing what happened just
before the release.

* Other people's trees, trusted lieutenants and credits.

Documentation/SubmittingPatches outlines who your changes should
be sent to.  As described in contrib/README, I would delegate
fixes and enhancements in contrib/ area to primary contributors
of them.

Although the following are included in git.git repository, they
have their own authoritative repository and maintainers:

 git-gui/ -- this subdirectory comes from Shawn Pearce's git-gui
             project, which is found at:


 gitk     -- this file is maintained by Paul Mackerras, at:


I would like to thank everybody who helped to raise git into the
current shape.  Especially I would like to thank the git list
regulars whose help I have relied on and expect to continue
relying on heavily:

 - Linus on general design issues.

 - Linus, Shawn Pearce, Johannes Schindelin, Nicolas Pitre, and
   Rene Scharfe on general implementation issues.

 - Shawn and Nicolas Pitre on pack issues.

 - Martin Langhoff and Frank Lichtenheld on cvsserver and cvsimport.

 - Paul Mackerras on gitk.

 - Eric Wong on git-svn.

 - Jakub Narebski, Petr Baudis, and Luben Tuikov on gitweb.

 - J. Bruce Fields on documentaton issues.

 - Johannes Schindelin and Johannes Sixt for their effort to
   move things forward on the Windows front.  Although my
   repository does not have much from the effort of MinGW team,
   I expect a merge into mainline will happen so that everybody
   can work from the same codebase.

 - People on non-Linux platforms for keeping their eyes on
   portability; especially, Randal Schwartz, Theodore Ts'o,
   Jason Riedy, Thomas Glanzmann, but countless others as well.

* This document

The latest copy of this document is found in git.git repository,
on 'todo' branch, as MaintNotes.

  reply index

Thread overview: 122+ messages in thread (expand / mbox.gz / Atom feed / [top])
2006-10-24  9:16 Junio C Hamano
2006-10-24  9:37 ` Jakub Narebski
2007-01-02  3:31 Junio C Hamano
2007-01-02  3:47 ` Shawn O. Pearce
     [not found] <>
2007-02-16 22:31 ` Junio C Hamano
2007-02-17  2:35   ` Johannes Schindelin
2007-02-23  6:03     ` Junio C Hamano
     [not found] <>
2007-04-04 18:26 ` Junio C Hamano
2007-05-20  9:54   ` Junio C Hamano
2007-09-02  6:31 [ANNOUNCE] GIT 1.5.3 Junio C Hamano
2007-09-02  6:34 ` Junio C Hamano [this message]
2007-09-02  6:58 ` H. Peter Anvin
2007-09-02  7:58   ` Junio C Hamano
2007-09-02  8:06   ` David Kastrup
2007-09-02  9:57     ` H. Peter Anvin
2007-09-02 17:38       ` Sean
2007-09-02 22:13         ` Junio C Hamano
2007-09-02 23:16           ` Sean
2007-09-03  0:19             ` Junio C Hamano
2007-09-03  7:51             ` H. Peter Anvin
2007-09-03  8:10               ` Junio C Hamano
2007-09-03  8:12                 ` H. Peter Anvin
2007-09-03  8:35                   ` Junio C Hamano
2007-09-03  8:47                     ` H. Peter Anvin
2007-09-03  8:53                       ` Junio C Hamano
2007-09-03  9:10                       ` Junio C Hamano
2007-09-03  9:13                         ` H. Peter Anvin
2007-09-03 11:32           ` Andreas Ericsson
2007-09-03 12:58             ` David Kastrup
2007-09-03 13:02               ` Andreas Ericsson
2007-09-03 13:17                 ` David Kastrup
2007-09-03  7:46         ` H. Peter Anvin
2007-09-02  7:08 ` David Kastrup
2007-09-02  8:43 ` Arkadiusz Miskiewicz
2007-09-02 10:28   ` Alex Riesen
2007-09-02 10:59   ` Johannes Schindelin
2007-09-02 11:19     ` Alex Riesen
2007-09-02 12:36     ` Arkadiusz Miskiewicz
2007-09-02 15:12 ` Nicolas Vilz
2007-09-02 22:52 ` David Kågedal
2007-09-02 22:54   ` David Kågedal
2007-09-02 23:28     ` Junio C Hamano
2007-09-02 23:36       ` Steven Grimm
2007-09-03  0:03         ` Junio C Hamano
2008-01-08  8:57 Junio C Hamano
2008-01-08  9:57 ` Jakub Narebski
2008-01-08 10:03   ` Junio C Hamano
2008-02-02  4:35 Junio C Hamano
2008-02-02 11:06 ` Jakub Narebski
2008-02-17  9:16 Junio C Hamano
2008-03-09 10:57 ` Junio C Hamano
2008-04-09  9:44 Junio C Hamano
     [not found] <>
2008-06-19  7:24 ` Junio C Hamano
2008-07-14  5:51   ` Junio C Hamano
     [not found] <>
2008-08-17 23:58 ` Junio C Hamano
2008-12-25  6:48 Junio C Hamano
2009-03-04 19:52 Junio C Hamano
2009-05-07  7:09 Junio C Hamano
2009-05-07 13:40 ` Baz
2009-05-07 16:30   ` Junio C Hamano
2009-07-29 21:15 Junio C Hamano
2010-01-01  0:09 Junio C Hamano
2010-02-13  1:24 Junio C Hamano
2010-07-21 22:18 Junio C Hamano
2010-09-19  1:28 Junio C Hamano
2011-01-31  5:51 Junio C Hamano
2011-04-25 21:05 Junio C Hamano
2011-08-24 23:51 Junio C Hamano
2011-10-05  2:22 Junio C Hamano
2011-10-15  5:47 ` Martin von Zweigbergk
2011-10-16  7:24   ` Junio C Hamano
2011-10-24 15:32 Junio C Hamano
     [not found] <>
2012-01-27 21:41 ` Junio C Hamano
2012-03-06  7:10 Junio C Hamano
2012-06-19 23:53 Junio C Hamano
2012-08-20  3:16 Junio C Hamano
2012-09-18 23:14 Junio C Hamano
2012-10-08 20:08 Junio C Hamano
2012-10-21 22:10 Junio C Hamano
2012-12-10 23:16 Junio C Hamano
2013-01-01  0:27 Junio C Hamano
2013-01-28 20:48 Junio C Hamano
2013-03-13 20:26 Junio C Hamano
2014-11-26 23:09 Junio C Hamano
2015-02-05 22:53 Junio C Hamano
2015-03-06 23:33 Junio C Hamano
2015-03-23 21:38 Junio C Hamano
2015-04-30 19:51 Junio C Hamano
2015-05-08 14:46 ` Christian Couder
2015-05-08 16:25   ` Junio C Hamano
2015-07-15 21:43 Junio C Hamano
2015-08-28 21:12 Junio C Hamano
2015-09-28 23:20 Junio C Hamano
2015-11-05 23:14 Junio C Hamano
2015-11-06 10:50 ` Xue Fuqiao
2015-11-06 17:38   ` Junio C Hamano
2016-01-04 23:44 Junio C Hamano
2016-02-06  0:07 Junio C Hamano
2016-03-28 22:42 Junio C Hamano
2016-04-29 22:04 Junio C Hamano
2016-05-19 17:48 Junio C Hamano
2016-06-13 19:45 Junio C Hamano
2016-07-11 20:14 Junio C Hamano
2016-08-12 19:55 Junio C Hamano
2016-08-12 22:42 ` Eric Wong
2016-08-13  8:10   ` Jeff King
2016-08-13  9:04     ` Eric Wong
2016-08-13 11:14       ` Jeff King
2016-08-14  1:27         ` Eric Wong
2016-08-14  2:12           ` Eric Wong
2016-08-14 12:23             ` Jeff King
2016-08-14 12:19           ` Jeff King
2016-08-14 15:00           ` Philip Oakley
2016-08-14 22:52             ` Eric Wong
2016-09-03  2:17 Junio C Hamano
2016-09-03 10:26 ` Jakub Narębski
2016-09-07 16:16   ` Junio C Hamano
2016-10-03 22:31 Junio C Hamano
2016-11-29 21:24 Junio C Hamano
2017-02-24 19:29 Junio C Hamano
2017-03-20 21:39 Junio C Hamano
2017-03-24 21:19 Junio C Hamano

Reply instructions:

You may reply publically to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:

  List information:

* Reply to all the recipients using the --to, --cc,
  and --in-reply-to switches of git-send-email(1):

  git send-email \ \ \ \

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link mailing list mirror (one of many)

Archives are clonable:
	git clone --mirror
	git clone --mirror http://ou63pmih66umazou.onion/git
	git clone --mirror http://czquwvybam4bgbro.onion/git
	git clone --mirror http://hjrcffqmbrq6wope.onion/git

Newsgroups are available over NNTP:

 note: .onion URLs require Tor:
       or Tor2web:

AGPL code for this site: git clone public-inbox