GIT 0.99.6
diff --git a/Documentation/git-archimport-script.txt b/Documentation/git-archimport-script.txt
new file mode 100644
index 0000000..134fbed
--- /dev/null
+++ b/Documentation/git-archimport-script.txt
@@ -0,0 +1,42 @@
+git-archimport-script(1)
+========================
+
+NAME
+----
+git-archimport-script - Import an arch repository into git
+
+
+SYNOPSIS
+--------
+`git-archimport-script` [--option...] <args>
+
+DESCRIPTION
+-----------
+The script expects you to provide the key roots where it can start the
+import from an 'initial import' or 'tag' type of Arch commit. It will
+then follow all the branching and tagging within the provided roots.
+
+It will die if it sees branches that have different roots.
+
+
+OPTIONS
+-------
+--option::
+	Some option not yet documented.
+
+<args>...::
+	Some argument not yet documented.
+
+
+Author
+------
+Written by Martin Langhoff <martin@catalyst.net.nz>.
+
+Documentation
+--------------
+Documentation by Junio C Hamano and the git-list <git@vger.kernel.org>.
+
+GIT
+---
+Part of the link:git.html[git] suite
+
diff --git a/Documentation/git-build-rev-cache.txt b/Documentation/git-build-rev-cache.txt
index b199cf9..1dbad77 100644
--- a/Documentation/git-build-rev-cache.txt
+++ b/Documentation/git-build-rev-cache.txt
@@ -3,26 +3,26 @@
 
 NAME
 ----
-git-build-rev-cache - Some git command not yet documented.
-
+git-build-rev-cache - Create or update a rev-cache file.
 
 SYNOPSIS
 --------
-'git-build-rev-cache' [ --option ] <args>...
+'git-build-rev-cache' [-v] <rev-cache-file> < list-of-heads
 
 DESCRIPTION
 -----------
-Does something not yet documented.
-
+Creates or updates a file that describes the commit ancestry reachable
+from the list-of-head read from stdin. This file is in an append-only
+binary format to make the server side friendly to rsync mirroring
+scheme, and can be read by the git-show-rev-cache command.
 
 OPTIONS
 -------
---option::
-	Some option not yet documented.
+-v::
+	Verbose.
 
-<args>...::
-	Some argument not yet documented.
-
+<rev-cache-file>::
+	The rev-cache to operate on.
 
 Author
 ------
diff --git a/Documentation/git-checkout-script.txt b/Documentation/git-checkout-script.txt
index ca469ec..52831ab 100644
--- a/Documentation/git-checkout-script.txt
+++ b/Documentation/git-checkout-script.txt
@@ -3,26 +3,31 @@
 
 NAME
 ----
-git-checkout-script - Some git command not yet documented.
-
+git-checkout-script - Checkout and switch to a branch.
 
 SYNOPSIS
 --------
-'git-checkout-script' [ --option ] <args>...
+'git-checkout-script' [-f] [-b <new_branch>] [<branch>]
 
 DESCRIPTION
 -----------
-Does something not yet documented.
-
+Updates the index and working tree to reflect the specified branch,
+<branch>. Updates HEAD to be <branch> or, if specified, <new_branch>.
 
 OPTIONS
 -------
---option::
-	Some option not yet documented.
+-f::
+	Force an re-read of everything.
 
-<args>...::
-	Some argument not yet documented.
+-b::
+	Create a new branch and start it at <branch>.
 
+<new_branch>::
+	Name for the new branch.
+
+<branch>::
+	Branch to checkout; may be any object ID that resolves to a
+	commit. Defaults to HEAD.
 
 Author
 ------
diff --git a/Documentation/git-parse-remote-script.txt b/Documentation/git-parse-remote-script.txt
new file mode 100644
index 0000000..d6e551f
--- /dev/null
+++ b/Documentation/git-parse-remote-script.txt
@@ -0,0 +1,48 @@
+git-parse-remote-script(1)
+==========================
+
+NAME
+----
+git-parse-remote-script - Routines to help parsing $GIT_DIR/remotes/
+
+
+SYNOPSIS
+--------
+'. git-parse-remote-script'
+
+DESCRIPTION
+-----------
+This script is included in various scripts to supply
+routines to parse files under $GIT_DIR/remotes/ and
+$GIT_DIR/branches/.
+
+The primary entry points are:
+
+get_remote_refs_for_fetch::
+	Given the list of user-supplied `<repo> <refspec>...`,
+	return the list of refs to fetch after canonicalizing
+	them into `$GIT_DIR` relative paths
+	(e.g. `refs/heads/foo`).  When `<refspec>...` is empty
+	the returned list of refs consists of the defaults
+	for the given `<repo>`, if specified in
+	`$GIT_DIR/remotes/` or `$GIT_DIR/branches/`.
+
+get_remote_refs_for_push::
+	Given the list of user-supplied `<repo> <refspec>...`,
+	return the list of refs to push in a form suitable to be
+	fed to the `git-send-pack` command.  When `<refspec>...`
+	is empty the returned list of refs consists of the
+	defaults for the given `<repo>`, if specified in
+	`$GIT_DIR/remotes/`.
+
+Author
+------
+Written by Junio C Hamano.
+
+Documentation
+--------------
+Documentation by Junio C Hamano and the git-list <git@vger.kernel.org>.
+
+GIT
+---
+Part of the link:git.html[git] suite
diff --git a/Documentation/git-reset-script.txt b/Documentation/git-reset-script.txt
index 2c12f59..18bd9e9 100644
--- a/Documentation/git-reset-script.txt
+++ b/Documentation/git-reset-script.txt
@@ -3,26 +3,33 @@
 
 NAME
 ----
-git-reset-script - Some git command not yet documented.
-
+git-reset-script - Reset current HEAD to the specified state.
 
 SYNOPSIS
 --------
-'git-reset-script' [ --option ] <args>...
+'git-reset-script' [--mixed | --soft | --hard] [<commit-ish>]
 
 DESCRIPTION
 -----------
-Does something not yet documented.
-
+Sets the current head to the specified commit and optionally resets the
+index and working tree to match.
 
 OPTIONS
 -------
---option::
-	Some option not yet documented.
+--mixed::
+	Like --soft but reports what has not been updated. This is the
+	default action.
 
-<args>...::
-	Some argument not yet documented.
+--soft::
+	Does not touch the index file nor the working tree at all, but
+	requires them in a good order.
 
+--hard::
+	Matches the working tree and index to that of the tree being
+	switched to.
+
+<commit-ish>::
+	Commit to make the current HEAD.
 
 Author
 ------
diff --git a/Documentation/git-rev-parse.txt b/Documentation/git-rev-parse.txt
index 592c2bd..fa64c5a 100644
--- a/Documentation/git-rev-parse.txt
+++ b/Documentation/git-rev-parse.txt
@@ -3,7 +3,7 @@
 
 NAME
 ----
-git-rev-parse - Some git command not yet documented.
+git-rev-parse - Pick out and massage parameters.
 
 
 SYNOPSIS
@@ -12,21 +12,74 @@
 
 DESCRIPTION
 -----------
-Does something not yet documented.
+
+Many git Porcelainish commands take mixture of flags
+(i.e. parameters that begin with a dash '-') and parameters
+meant for underlying `git-rev-list` command they use internally
+and flags and parameters for other commands they use as the
+downstream of `git-rev-list`.  This command is used to
+distinguish between them.
 
 
 OPTIONS
 -------
---option::
-	Some option not yet documented.
+--revs-only::
+	Do not output flags and parameters not meant for
+	`git-rev-list` command.
+
+--no-revs::
+	Do not output flags and parameters meant for
+	`git-rev-list` command.
+
+--flags::
+	Do not output non-flag parameters.
+
+--no-flags::
+	Do not output flag parameters.
+
+--default <arg>::
+	If there is no parameter given by the user, use `<arg>`
+	instead.
+
+--verify::
+	The parameter given must be usable as a single, valid
+	object name.  Otherwise barf and abort.
+
+--sq::
+	Usually the output is made one line per flag and
+	parameter.  This option makes output a single line,
+	properly quoted for consumption by shell.  Useful when
+	you expect your parameter to contain whitespaces and
+	newlines (e.g. when using pickaxe `-S` with
+	`git-diff-\*`).
+
+--not::
+	When showing object names, prefix them with '^' and
+	strip '^' prefix from the object names that already have
+	one.
+
+--symbolic::
+	Usually the object names are output in SHA1 form (with
+	possible '^' prefix); this option makes them output in a
+	form as close to the original input as possible.
+
+
+--all::
+	Show all refs found in `$GIT_DIR/refs`.
+
+--show-prefix::
+	When the command is invoked from a directory show the
+	path of the current directory relative to the top-level
+	directory.
 
 <args>...::
-	Some argument not yet documented.
+	Flags and parameters to be parsed.
 
 
 Author
 ------
-Written by Linus Torvalds <torvalds@osdl.org> and Junio C Hamano <junkio@cox.net>
+Written by Linus Torvalds <torvalds@osdl.org> and
+Junio C Hamano <junkio@cox.net>
 
 Documentation
 --------------
diff --git a/Documentation/git-show-rev-cache.txt b/Documentation/git-show-rev-cache.txt
index 48f1ca3..104ecb7 100644
--- a/Documentation/git-show-rev-cache.txt
+++ b/Documentation/git-show-rev-cache.txt
@@ -3,26 +3,25 @@
 
 NAME
 ----
-git-show-rev-cache - Some git command not yet documented.
-
+git-show-rev-cache - Show the contents of a rev-cache file.
 
 SYNOPSIS
 --------
-'git-show-rev-cache' [ --option ] <args>...
+'git-show-rev-cache' <rev-cache-file>
 
 DESCRIPTION
 -----------
-Does something not yet documented.
+Show the contents of <rev-cache-file>.
 
+A rev-cache file describes the commit ancestry reachable from references
+supplied as input to get-build-rev-cache. This file is in an
+append-only binary format to make the server side friendly to rsync
+mirroring scheme.
 
 OPTIONS
 -------
---option::
-	Some option not yet documented.
-
-<args>...::
-	Some argument not yet documented.
-
+<rev-cache-file>::
+	Rev-cache file to display.
 
 Author
 ------
diff --git a/Documentation/git.txt b/Documentation/git.txt
index b10edff..fd5108c 100644
--- a/Documentation/git.txt
+++ b/Documentation/git.txt
@@ -209,6 +209,9 @@
 link:git-branch-script.html[git-branch-script]::
 	Create and Show branches.
 
+link:git-checkout-script.html[git-checkout-script]::
+	Checkout and switch to a branch.
+
 link:git-cherry-pick-script.html[git-cherry-pick-script]::
 	Cherry-pick the effect of an existing commit.
 
@@ -245,6 +248,9 @@
 link:git-repack-script.html[git-repack-script]::
 	Pack unpacked objects in a repository.
 
+link:git-reset-script.html[git-reset-script]::
+	Reset current HEAD to the specified state.
+
 link:git-resolve-script.html[git-resolve-script]::
 	Merge two commits.
 
@@ -274,6 +280,9 @@
 link:git-applypatch.html[git-applypatch]::
 	Apply one patch extracted from an e-mail.
 
+link:git-archimport-script.html[git-archimport-script]::
+	Import an arch repository into git.
+
 link:git-convert-cache.html[git-convert-cache]::
 	Converts old-style GIT repository
 
@@ -298,15 +307,24 @@
 
 Interrogators:
 
+link:git-build-rev-cache.html[git-build-rev-cache]::
+	Create or update a rev-cache file.
+
 link:git-cherry.html[git-cherry]::
 	Find commits not merged upstream.
 
 link:git-count-objects-script.html[git-count-objects-script]::
 	Count unpacked number of objects and their disk consumption.
 
+link:git-daemon.html[git-daemon]::
+	A really simple server for GIT repositories.
+
 link:git-diff-helper.html[git-diff-helper]::
 	Generates patch format output for git-diff-*
 
+link:git-get-tar-commit-id.html[git-get-tar-commit-id]::
+	Extract commit ID from an archive created using git-tar-tree.
+
 link:git-mailinfo.html[git-mailinfo]::
 	Extracts patch from a single e-mail message.
 
@@ -316,42 +334,30 @@
 link:git-patch-id.html[git-patch-id]::
 	Compute unique ID for a patch.
 
+link:git-parse-remote-script.html[git-parse-remote-script]::
+	Routines to help parsing $GIT_DIR/remotes/
+
+link:git-request-pull-script.html[git-request-pull-script]::
+	git-request-pull-script.
+
+link:git-rev-parse.html[git-rev-parse]::
+	Pick out and massage parameters.
+
 link:git-send-email-script.html[git-send-email]::
 	Send patch e-mails out of "format-patch --mbox" output.
 
-link:git-get-tar-commit-id.html[git-get-tar-commit-id]::
-	Extract commit ID from an archive created using git-tar-tree.
+link:git-show-rev-cache.html[git-show-rev-cache]::
+	Show the contents of a rev-cache file.
 
 Commands not yet documented
 ---------------------------
 
-link:git-build-rev-cache.html[git-build-rev-cache]::
-	git-build-rev-cache.
-
-link:git-checkout-script.html[git-checkout-script]::
-	git-checkout-script.
-
-link:git-daemon.html[git-daemon]::
-	git-daemon.
-
 link:git-diff-script.html[git-diff-script]::
 	git-diff-script.
 
 link:git-format-patch-script.html[git-format-patch-script]::
 	git-format-patch-script.
 
-link:git-request-pull-script.html[git-request-pull-script]::
-	git-request-pull-script.
-
-link:git-reset-script.html[git-reset-script]::
-	git-reset-script.
-
-link:git-rev-parse.html[git-rev-parse]::
-	git-rev-parse.
-
-link:git-show-rev-cache.html[git-show-rev-cache]::
-	git-show-rev-cache.
-
 link:git-stripspace.html[git-stripspace]::
 	git-stripspace.
 
diff --git a/Makefile b/Makefile
index 033c96e..6dbffc2 100644
--- a/Makefile
+++ b/Makefile
@@ -11,7 +11,9 @@
 #
 # Define PPC_SHA1 environment variable when running make to make use of
 # a bundled SHA1 routine optimized for PowerPC.
-
+#
+# Define NEEDS_SSL_WITH_CRYPTO if you need -lcrypto with -lssl (Darwin).
+# Define NEEDS_LIBICONV if linking with libc is not enough (Darwin).
 
 # Define COLLISION_CHECK below if you believe that SHA1's
 # 1461501637330902918203684832716283019655932542976 hashes do not give you
@@ -66,13 +68,20 @@
 	git-format-patch-script git-sh-setup-script git-push-script \
 	git-branch-script git-parse-remote-script git-verify-tag-script \
 	git-ls-remote-script git-rename-script \
-	git-request-pull-script git-bisect-script
+	git-request-pull-script git-bisect-script \
+	git-applymbox git-applypatch
 
 SCRIPTS += git-count-objects-script
 SCRIPTS += git-revert-script
 SCRIPTS += git-octopus-script
 SCRIPTS += git-archimport-script
 
+# The ones that do not have to link with lcrypto nor lz.
+SIMPLE_PROGRAMS = \
+	git-get-tar-commit-id git-mailinfo git-mailsplit git-stripspace \
+	git-daemon git-var
+
+# ... and all the rest
 PROG=   git-update-cache git-diff-files git-init-db git-write-tree \
 	git-read-tree git-commit-tree git-cat-file git-fsck-cache \
 	git-checkout-cache git-diff-tree git-rev-tree git-ls-files \
@@ -80,12 +89,13 @@
 	git-unpack-file git-export git-diff-cache git-convert-cache \
 	git-ssh-push git-ssh-pull git-rev-list git-mktag \
 	git-diff-helper git-tar-tree git-local-pull git-hash-object \
-	git-get-tar-commit-id git-apply git-stripspace \
+	git-apply \
 	git-diff-stages git-rev-parse git-patch-id git-pack-objects \
 	git-unpack-objects git-verify-pack git-receive-pack git-send-pack \
 	git-prune-packed git-fetch-pack git-upload-pack git-clone-pack \
-	git-show-index git-daemon git-var git-peek-remote git-show-branch \
-	git-update-server-info git-show-rev-cache git-build-rev-cache
+	git-show-index git-peek-remote git-show-branch \
+	git-update-server-info git-show-rev-cache git-build-rev-cache \
+	$(SIMPLE_PROGRAMS)
 
 ifdef WITH_SEND_EMAIL
 SCRIPTS += git-send-email-script
@@ -126,6 +136,11 @@
 LIBS = $(LIB_FILE)
 LIBS += -lz
 
+ifeq ($(shell uname -s),Darwin)
+	NEEDS_SSL_WITH_CRYPTO = YesPlease
+	NEEDS_LIBICONV = YesPlease
+endif
+
 ifndef NO_OPENSSL
 	LIB_OBJS += epoch.o
 	OPENSSL_LIBSSL=-lssl
@@ -134,6 +149,16 @@
 	MOZILLA_SHA1=1
 	OPENSSL_LIBSSL=
 endif
+ifdef NEEDS_SSL_WITH_CRYPTO
+	LIB_4_CRYPTO = -lcrypto -lssl
+else
+	LIB_4_CRYPTO = -lcrypto
+endif
+ifdef NEEDS_LIBICONV
+	LIB_4_ICONV = -liconv
+else
+	LIB_4_ICONV =
+endif
 ifdef MOZILLA_SHA1
 	SHA1_HEADER="mozilla-sha1/sha1.h"
 	LIB_OBJS += mozilla-sha1/sha1.o
@@ -143,11 +168,7 @@
 		LIB_OBJS += ppc/sha1.o ppc/sha1ppc.o
 	else
 		SHA1_HEADER=<openssl/sha.h>
-		ifeq ($(shell uname -s),Darwin)
-			LIBS += -lcrypto -lssl
-		else
-			LIBS += -lcrypto
-		endif
+		LIBS += $(LIB_4_CRYPTO)
 	endif
 endif
 
@@ -161,7 +182,6 @@
 
 all:
 	$(MAKE) -C templates
-	$(MAKE) -C tools
 
 %.o: %.c
 	$(CC) -o $*.o -c $(ALL_CFLAGS) $<
@@ -171,6 +191,11 @@
 git-%: %.o $(LIB_FILE)
 	$(CC) $(ALL_CFLAGS) -o $@ $(filter %.o,$^) $(LIBS)
 
+git-mailinfo : SIMPLE_LIB += $(LIB_4_ICONV)
+$(SIMPLE_PROGRAMS) : $(LIB_FILE)
+$(SIMPLE_PROGRAMS) : git-% : %.o
+	$(CC) $(ALL_CFLAGS) -o $@ $(filter %.o,$^) $(LIB_FILE) $(SIMPLE_LIB)
+
 git-http-pull: pull.o
 git-local-pull: pull.o
 git-ssh-pull: rsh.o pull.o
@@ -218,7 +243,6 @@
 	$(INSTALL) $(PROG) $(SCRIPTS) $(DESTDIR)$(bindir)
 	$(INSTALL) git-revert-script $(DESTDIR)$(bindir)/git-cherry-pick-script
 	$(MAKE) -C templates install
-	$(MAKE) -C tools install
 
 install-doc:
 	$(MAKE) -C Documentation install
@@ -258,7 +282,6 @@
 	rm -f $(GIT_TARNAME).tar.gz git-core_$(GIT_VERSION)-*.tar.gz
 	rm -f git-core_$(GIT_VERSION)-*.deb git-core_$(GIT_VERSION)-*.dsc
 	rm -f git-tk_$(GIT_VERSION)-*.deb
-	$(MAKE) -C tools/ clean
 	$(MAKE) -C Documentation/ clean
 	$(MAKE) -C templates/ clean
 	$(MAKE) -C t/ clean
diff --git a/git b/git
index 0d8b382..476aeec 100755
--- a/git
+++ b/git
@@ -17,6 +17,4 @@
     echo " git commands are:"
 fi
 
-alternatives=$(cd $path &&
-	       ls git-*-script | sed -e 's/git-//' -e 's/-script//')
-echo $alternatives | fmt | sed 's/^/  /'
+ls $path | sed -ne 's/^git-\(.*\)-script/  \1/p' | fmt
diff --git a/tools/git-applymbox b/git-applymbox
similarity index 100%
rename from tools/git-applymbox
rename to git-applymbox
diff --git a/tools/git-applypatch b/git-applypatch
similarity index 100%
rename from tools/git-applypatch
rename to git-applypatch
diff --git a/tools/mailinfo.c b/mailinfo.c
similarity index 98%
rename from tools/mailinfo.c
rename to mailinfo.c
index ef2add7..df470bb 100644
--- a/tools/mailinfo.c
+++ b/mailinfo.c
@@ -152,6 +152,10 @@
 	/* We do not want to mess with boundary.  Note that we do not
 	 * handle nested multipart.
 	 */
+	if (strcasestr(line, "boundary=")) {
+		fprintf(stderr, "Not handling nested multipart message.\n");
+		exit(1);
+	}
 	slurp_attr(line, "charset=", charset);
 	if (*charset) {
 		int i, c;
diff --git a/tools/mailsplit.c b/mailsplit.c
similarity index 100%
rename from tools/mailsplit.c
rename to mailsplit.c
diff --git a/tools/.gitignore b/tools/.gitignore
deleted file mode 100644
index d1ea9ea..0000000
--- a/tools/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
-git-mailinfo
-git-mailsplit
diff --git a/tools/Makefile b/tools/Makefile
deleted file mode 100644
index 5cc6d14..0000000
--- a/tools/Makefile
+++ /dev/null
@@ -1,25 +0,0 @@
-#
-# Make Linus git-tools
-#
-CC=gcc
-CFLAGS = -O2 -g -Wall
-ALL_CFLAGS = $(CFLAGS)
-INSTALL=install
-prefix=$(HOME)
-bindir=$(prefix)/bin
-# DESTDIR=
-
-PROGRAMS=git-mailsplit git-mailinfo
-SCRIPTS=git-applymbox git-applypatch
-
-git-%: %.c
-	$(CC) $(ALL_CFLAGS) -o $@ $(filter %.c,$^)
-
-all: $(PROGRAMS)
-
-install: $(PROGRAMS) $(SCRIPTS)
-	$(INSTALL) -m755 -d $(DESTDIR)$(bindir)
-	$(INSTALL) $(PROGRAMS) $(SCRIPTS) $(DESTDIR)$(bindir)
-
-clean:
-	rm -f $(PROGRAMS) *.o