
		Git installation

Normally you can just do "make" followed by "make install", and that
will install the git programs in your own ~/bin/ directory.  If you want
to do a global install, you can do

	$ make prefix=/usr all doc ;# as yourself
	# make prefix=/usr install install-doc ;# as root

(or prefix=/usr/local, of course).  Just like any program suite
that uses $prefix, the built results have some paths encoded,
which are derived from $prefix, so "make all; make prefix=/usr
install" would not work.

Issues of note:

 - git normally installs a helper script wrapper called "git", which
   conflicts with a similarly named "GNU interactive tools" program.

   Tough.  Either don't use the wrapper script, or delete the old GNU
   interactive tools.  None of the core git stuff needs the wrapper,
   it's just a convenient shorthand and while it is documented in some
   places, you can always replace "git commit" with "git-commit"
   instead. 

   But let's face it, most of us don't have GNU interactive tools, and
   even if we had it, we wouldn't know what it does.  I don't think it
   has been actively developed since 1997, and people have moved over to
   graphical file managers.

 - Git is reasonably self-sufficient, but does depend on a few external
   programs and libraries:

	- "zlib", the compression library. Git won't build without it.

	- "openssl".  The git-rev-list program uses bignum support from
	  openssl, and unless you specify otherwise, you'll also get the
	  SHA1 library from here.

	  If you don't have openssl, you can use one of the SHA1 libraries
	  that come with git (git includes the one from Mozilla, and has
	  its own PowerPC-optimized one too - see the Makefile), and you
	  can avoid the bignum support by excising git-rev-list support
	  for "--merge-order" (by hand).

	- "libcurl" and "curl" executable.  git-http-fetch and
	  git-fetch use them.  If you do not use http
	  transfer, you are probabaly OK if you do not have
	  them.

	- expat library; git-http-push uses it for remote lock
	  management over DAV.  Similar to "curl" above, this is optional.

	- "GNU diff" to generate patches.  Of course, you don't _have_ to
	  generate patches if you don't want to, but let's face it, you'll
	  be wanting to. Or why did you get git in the first place?

	  Non-GNU versions of the diff/patch programs don't generally support
	  the unified patch format (which is the one git uses), so you
	  really do want to get the GNU one.  Trust me, you will want to
	  do that even if it wasn't for git.  There's no point in living
	  in the dark ages any more. 

	- "merge", the standard UNIX three-way merge program.  It usually
	  comes with the "rcs" package on most Linux distributions, so if
	  you have a developer install you probably have it already, but a
	  "graphical user desktop" install might have left it out.

	  You'll only need the merge program if you do development using
	  git, and if you only use git to track other peoples work you'll
	  never notice the lack of it. 

        - "wish", the TCL/Tk windowing shell is used in gitk to show the
          history graphically

	- "ssh" is used to push and pull over the net

	- "perl" and POSIX-compliant shells are needed to use most of
	  the barebone Porcelainish scripts.

	- "python" 2.3 or more recent; if you have 2.3, you may need
          to build with "make WITH_OWN_SUBPROCESS_PY=YesPlease".

 - Some platform specific issues are dealt with Makefile rules,
   but depending on your specific installation, you may not
   have all the libraries/tools needed, or you may have
   necessary libraries at unusual locations.  Please look at the
   top of the Makefile to see what can be adjusted for your needs.
   You can place local settings in config.mak and the Makefile
   will include them.  Note that config.mak is not distributed;
   the name is reserved for local settings.

 - To build and install documentation suite, you need to have the
   asciidoc/xmlto toolchain.  Alternatively, pre-formatted
   documentation are available in "html" and "man" branches of the git
   repository itself.  For example, you could:

	$ mkdir manual && cd manual
	$ git init-db
	$ git clone-pack git://git.kernel.org/pub/scm/git/git.git man html |
	  while read a b
	  do
	    echo $a >.git/$b
	  done
	$ cp .git/refs/heads/man .git/refs/heads/master
	$ git checkout

   to checkout the pre-built man pages.  Also in this repository:

	$ git checkout html

   would instead give you a copy of what you see at:

	http://www.kernel.org/pub/software/scm/git/docs/

