Big tool rename.

As promised, this is the "big tool rename" patch.  The primary differences
since 0.99.6 are:

  (1) git-*-script are no more.  The commands installed do not
      have any such suffix so users do not have to remember if
      something is implemented as a shell script or not.

  (2) Many command names with 'cache' in them are renamed with
      'index' if that is what they mean.

There are backward compatibility symblic links so that you and
Porcelains can keep using the old names, but the backward
compatibility support  is expected to be removed in the near
future.

Signed-off-by: Junio C Hamano <junkio@cox.net>
diff --git a/.gitignore b/.gitignore
index 245f54e..12b0137 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,28 +1,28 @@
 git-apply
 git-build-rev-cache
 git-cat-file
-git-checkout-cache
+git-checkout-index
 git-clone-pack
 git-commit-tree
-git-convert-cache
+git-convert-objects
 git-daemon
-git-diff-cache
+git-diff-index
 git-diff-files
 git-diff-helper
 git-diff-stages
 git-diff-tree
 git-export
 git-fetch-pack
-git-fsck-cache
+git-fsck-objects
 git-get-tar-commit-id
 git-hash-object
-git-http-pull
+git-http-fetch
 git-init-db
-git-local-pull
+git-local-fetch
 git-ls-files
 git-ls-tree
 git-merge-base
-git-merge-cache
+git-merge-index
 git-mktag
 git-pack-objects
 git-patch-id
@@ -37,13 +37,13 @@
 git-show-branch
 git-show-index
 git-show-rev-cache
-git-ssh-pull
-git-ssh-push
+git-ssh-fetch
+git-ssh-upload
 git-stripspace
 git-tar-tree
 git-unpack-file
 git-unpack-objects
-git-update-cache
+git-update-index
 git-update-server-info
 git-upload-pack
 git-var
diff --git a/Documentation/diff-format.txt b/Documentation/diff-format.txt
index 811d143..424e75a 100644
--- a/Documentation/diff-format.txt
+++ b/Documentation/diff-format.txt
@@ -1,13 +1,13 @@
-The output format from "git-diff-cache", "git-diff-tree" and
+The output format from "git-diff-index", "git-diff-tree" and
 "git-diff-files" are very similar.
 
 These commands all compare two sets of things; what are
 compared are different:
 
-git-diff-cache <tree-ish>::
+git-diff-index <tree-ish>::
         compares the <tree-ish> and the files on the filesystem.
 
-git-diff-cache --cached <tree-ish>::
+git-diff-index --cached <tree-ish>::
         compares the <tree-ish> and the cache.
 
 git-diff-tree [-r] <tree-ish-1> <tree-ish-2> [<pattern>...]::
@@ -58,7 +58,7 @@
 Generating patches with -p
 --------------------------
 
-When "git-diff-cache", "git-diff-tree", or "git-diff-files" are run
+When "git-diff-index", "git-diff-tree", or "git-diff-files" are run
 with a '-p' option, they do not produce the output described above;
 instead they produce a patch file.
 
@@ -77,7 +77,7 @@
 environment variable 'GIT_DIFF_OPTS'.  For example, if you
 prefer context diff:
 
-      GIT_DIFF_OPTS=-c git-diff-cache -p $(cat .git/HEAD)
+      GIT_DIFF_OPTS=-c git-diff-index -p $(cat .git/HEAD)
 
 
 2. When the environment variable 'GIT_EXTERNAL_DIFF' is set, the
diff --git a/Documentation/diffcore.txt b/Documentation/diffcore.txt
index 1a6e725..a0ffe85 100644
--- a/Documentation/diffcore.txt
+++ b/Documentation/diffcore.txt
@@ -6,7 +6,7 @@
 Introduction
 ------------
 
-The diff commands git-diff-cache, git-diff-files, and
+The diff commands git-diff-index, git-diff-files, and
 git-diff-tree can be told to manipulate differences they find
 in unconventional ways before showing diff(1) output.  The
 manipulation is collectively called "diffcore transformation".
@@ -21,7 +21,7 @@
 The git-diff-* family works by first comparing two sets of
 files:
 
- - git-diff-cache compares contents of a "tree" object and the
+ - git-diff-index compares contents of a "tree" object and the
    working directory (when '--cached' flag is not used) or a
    "tree" object and the index file (when '--cached' flag is
    used);
diff --git a/Documentation/git-add-script.txt b/Documentation/git-add.txt
similarity index 67%
rename from Documentation/git-add-script.txt
rename to Documentation/git-add.txt
index 3001143..beb4500 100644
--- a/Documentation/git-add-script.txt
+++ b/Documentation/git-add.txt
@@ -1,17 +1,17 @@
-git-add-script(1)
-=================
+git-add(1)
+==========
 
 NAME
 ----
-git-add-script - Add files to the cache.
+git-add - Add files to the cache.
 
 SYNOPSIS
 --------
-'git-add-script' <file>...
+'git-add' <file>...
 
 DESCRIPTION
 -----------
-A simple wrapper to git-update-cache to add files to the cache for people used
+A simple wrapper to git-update-index to add files to the cache for people used
 to do "cvs add".
 
 OPTIONS
diff --git a/Documentation/git-archimport-script.txt b/Documentation/git-archimport.txt
similarity index 80%
rename from Documentation/git-archimport-script.txt
rename to Documentation/git-archimport.txt
index 134fbed..8ce5f0a 100644
--- a/Documentation/git-archimport-script.txt
+++ b/Documentation/git-archimport.txt
@@ -1,14 +1,14 @@
-git-archimport-script(1)
-========================
+git-archimport(1)
+=================
 
 NAME
 ----
-git-archimport-script - Import an arch repository into git
+git-archimport - Import an arch repository into git
 
 
 SYNOPSIS
 --------
-`git-archimport-script` [--option...] <args>
+`git-archimport` [--option...] <args>
 
 DESCRIPTION
 -----------
diff --git a/Documentation/git-bisect-script.txt b/Documentation/git-bisect.txt
similarity index 95%
rename from Documentation/git-bisect-script.txt
rename to Documentation/git-bisect.txt
index b4531c6..ae43876 100644
--- a/Documentation/git-bisect-script.txt
+++ b/Documentation/git-bisect.txt
@@ -1,9 +1,9 @@
-git-bisect-script(1)
-====================
+git-bisect(1)
+=============
 
 NAME
 ----
-git-bisect-script - Find the change that introduced a bug
+git-bisect - Find the change that introduced a bug
 
 
 SYNOPSIS
diff --git a/Documentation/git-branch-script.txt b/Documentation/git-branch.txt
similarity index 83%
rename from Documentation/git-branch-script.txt
rename to Documentation/git-branch.txt
index 3ace8ad..914c0e6 100644
--- a/Documentation/git-branch-script.txt
+++ b/Documentation/git-branch.txt
@@ -1,13 +1,13 @@
-git-branch-script(1)
-====================
+git-branch(1)
+=============
 
 NAME
 ----
-git-branch-script - Create a new branch.
+git-branch - Create a new branch.
 
 SYNOPSIS
 --------
-'git-branch-script' [<branchname> [start-point]]
+'git-branch' [<branchname> [start-point]]
 
 DESCRIPTION
 -----------
diff --git a/Documentation/git-checkout-cache.txt b/Documentation/git-checkout-index.txt
similarity index 76%
rename from Documentation/git-checkout-cache.txt
rename to Documentation/git-checkout-index.txt
index 321a00c..bb15214 100644
--- a/Documentation/git-checkout-cache.txt
+++ b/Documentation/git-checkout-index.txt
@@ -1,15 +1,15 @@
-git-checkout-cache(1)
+git-checkout-index(1)
 =====================
 v0.1, May 2005
 
 NAME
 ----
-git-checkout-cache - Copy files from the cache to the working directory
+git-checkout-index - Copy files from the cache to the working directory
 
 
 SYNOPSIS
 --------
-'git-checkout-cache' [-u] [-q] [-a] [-f] [-n] [--prefix=<string>]
+'git-checkout-index' [-u] [-q] [-a] [-f] [-n] [--prefix=<string>]
 	           [--] <file>...
 
 DESCRIPTION
@@ -46,21 +46,21 @@
 
 Note that the order of the flags matters:
 
-     git-checkout-cache -a -f file.c
+     git-checkout-index -a -f file.c
 
 will first check out all files listed in the cache (but not overwrite
 any old ones), and then force-checkout `file.c` a second time (ie that
 one *will* overwrite any old contents with the same filename).
 
-Also, just doing "git-checkout-cache" does nothing. You probably meant
-"git-checkout-cache -a". And if you want to force it, you want
-"git-checkout-cache -f -a".
+Also, just doing "git-checkout-index" does nothing. You probably meant
+"git-checkout-index -a". And if you want to force it, you want
+"git-checkout-index -f -a".
 
 Intuitiveness is not the goal here. Repeatability is. The reason for
 the "no arguments means no work" thing is that from scripts you are
 supposed to be able to do things like:
 
-	find . -name '*.h' -print0 | xargs -0 git-checkout-cache -f --
+	find . -name '*.h' -print0 | xargs -0 git-checkout-index -f --
 
 which will force all existing `*.h` files to be replaced with their
 cached copies. If an empty command line implied "all", then this would
@@ -68,7 +68,7 @@
 
 To update and refresh only the files already checked out:
 
-        git-checkout-cache -n -f -a && git-update-cache --ignore-missing --refresh
+        git-checkout-index -n -f -a && git-update-index --ignore-missing --refresh
 
 Oh, and the "--" is just a good idea when you know the rest will be
 filenames. Just so that you wouldn't have a filename of "-a" causing
@@ -76,18 +76,18 @@
 scripting!).
 
 The prefix ability basically makes it trivial to use
-git-checkout-cache as an "export as tree" function. Just read the
+git-checkout-index as an "export as tree" function. Just read the
 desired tree into the index, and do a
   
-        git-checkout-cache --prefix=git-export-dir/ -a
+        git-checkout-index --prefix=git-export-dir/ -a
   
-and git-checkout-cache will "export" the cache into the specified
+and git-checkout-index will "export" the cache into the specified
 directory.
   
 NOTE The final "/" is important. The exported name is literally just
 prefixed with the specified string, so you can also do something like
 
-    git-checkout-cache --prefix=.merged- Makefile
+    git-checkout-index --prefix=.merged- Makefile
 
 to check out the currently cached copy of `Makefile` into the file
 `.merged-Makefile`
diff --git a/Documentation/git-checkout-script.txt b/Documentation/git-checkout.txt
similarity index 80%
rename from Documentation/git-checkout-script.txt
rename to Documentation/git-checkout.txt
index 52831ab..3bc7743 100644
--- a/Documentation/git-checkout-script.txt
+++ b/Documentation/git-checkout.txt
@@ -1,13 +1,13 @@
-git-checkout-script(1)
-======================
+git-checkout(1)
+===============
 
 NAME
 ----
-git-checkout-script - Checkout and switch to a branch.
+git-checkout - Checkout and switch to a branch.
 
 SYNOPSIS
 --------
-'git-checkout-script' [-f] [-b <new_branch>] [<branch>]
+'git-checkout' [-f] [-b <new_branch>] [<branch>]
 
 DESCRIPTION
 -----------
diff --git a/Documentation/git-cherry-pick-script.txt b/Documentation/git-cherry-pick.txt
similarity index 88%
rename from Documentation/git-cherry-pick-script.txt
rename to Documentation/git-cherry-pick.txt
index ab9fb22..38a4875 100644
--- a/Documentation/git-cherry-pick-script.txt
+++ b/Documentation/git-cherry-pick.txt
@@ -1,14 +1,14 @@
-git-cherry-pick-script(1)
-=========================
+git-cherry-pick(1)
+==================
 v0.99.5 Aug 2005
 
 NAME
 ----
-git-cherry-pick-script - Apply the change introduced by an existing commit.
+git-cherry-pick - Apply the change introduced by an existing commit.
 
 SYNOPSIS
 --------
-'git-cherry-pick-script' [-n] [-r] <commit>
+'git-cherry-pick' [-n] [-r] <commit>
 
 DESCRIPTION
 -----------
diff --git a/Documentation/git-clone-script.txt b/Documentation/git-clone.txt
similarity index 94%
rename from Documentation/git-clone-script.txt
rename to Documentation/git-clone.txt
index afb25bd..cff87ea 100644
--- a/Documentation/git-clone-script.txt
+++ b/Documentation/git-clone.txt
@@ -1,10 +1,10 @@
-git-clone-script(1)
-===================
+git-clone(1)
+============
 v0.1, July 2005
 
 NAME
 ----
-git-clone-script - Clones a repository.
+git-clone - Clones a repository.
 
 
 SYNOPSIS
diff --git a/Documentation/git-commit-script.txt b/Documentation/git-commit.txt
similarity index 95%
rename from Documentation/git-commit-script.txt
rename to Documentation/git-commit.txt
index faa1870..afcf6ef 100644
--- a/Documentation/git-commit-script.txt
+++ b/Documentation/git-commit.txt
@@ -1,10 +1,10 @@
-git-commit-script(1)
-====================
+git-commit(1)
+=============
 v0.99.4, Aug 2005
 
 NAME
 ----
-git-commit-script - Record your changes
+git-commit - Record your changes
 
 SYNOPSIS
 --------
diff --git a/Documentation/git-convert-cache.txt b/Documentation/git-convert-objects.txt
similarity index 73%
rename from Documentation/git-convert-cache.txt
rename to Documentation/git-convert-objects.txt
index 66d7fe7..b1bc1c5 100644
--- a/Documentation/git-convert-cache.txt
+++ b/Documentation/git-convert-objects.txt
@@ -1,15 +1,15 @@
-git-convert-cache(1)
-====================
+git-convert-objects(1)
+======================
 v0.1, May 2005
 
 NAME
 ----
-git-convert-cache - Converts old-style GIT repository
+git-convert-objects - Converts old-style GIT repository
 
 
 SYNOPSIS
 --------
-'git-convert-cache'
+'git-convert-objects'
 
 DESCRIPTION
 -----------
diff --git a/Documentation/git-count-objects-script.txt b/Documentation/git-count-objects.txt
similarity index 73%
rename from Documentation/git-count-objects-script.txt
rename to Documentation/git-count-objects.txt
index 8a3cedf..824852c 100644
--- a/Documentation/git-count-objects-script.txt
+++ b/Documentation/git-count-objects.txt
@@ -1,13 +1,13 @@
-git-count-objects-script(1)
-===========================
+git-count-objects(1)
+====================
 
 NAME
 ----
-git-count-objects-script - Reports on unpacked objects.
+git-count-objects - Reports on unpacked objects.
 
 SYNOPSIS
 --------
-'git-count-objects-script'
+'git-count-objects'
 
 DESCRIPTION
 -----------
diff --git a/Documentation/git-cvsimport-script.txt b/Documentation/git-cvsimport.txt
similarity index 94%
rename from Documentation/git-cvsimport-script.txt
rename to Documentation/git-cvsimport.txt
index 9d8acfc..edf9521 100644
--- a/Documentation/git-cvsimport-script.txt
+++ b/Documentation/git-cvsimport.txt
@@ -1,15 +1,15 @@
-git-cvsimport-script(1)
-=======================
+git-cvsimport(1)
+================
 v0.1, July 2005
 
 NAME
 ----
-git-cvsimport-script - Import a CVS repository into git
+git-cvsimport - Import a CVS repository into git
 
 
 SYNOPSIS
 --------
-'git-cvsimport-script' [ -o <branch-for-HEAD> ] [ -h ] [ -v ]
+'git-cvsimport' [ -o <branch-for-HEAD> ] [ -h ] [ -v ]
 			[ -d <CVSROOT> ] [ -p <options-for-cvsps> ]
 			[ -C <GIT_repository> ] [ -i ] [ -k ]
 			[ -s <subst> ] [ -m ] [ -M regex ] [ <CVS_module> ]
diff --git a/Documentation/git-diff-files.txt b/Documentation/git-diff-files.txt
index 3e1244f..72c7a71 100644
--- a/Documentation/git-diff-files.txt
+++ b/Documentation/git-diff-files.txt
@@ -16,7 +16,7 @@
 Compares the files in the working tree and the cache.  When paths
 are specified, compares only those named paths.  Otherwise all
 entries in the cache are compared.  The output format is the
-same as "git-diff-cache" and "git-diff-tree".
+same as "git-diff-index" and "git-diff-tree".
 
 OPTIONS
 -------
diff --git a/Documentation/git-diff-helper.txt b/Documentation/git-diff-helper.txt
index d826deb..26f5f39 100644
--- a/Documentation/git-diff-helper.txt
+++ b/Documentation/git-diff-helper.txt
@@ -13,7 +13,7 @@
 
 DESCRIPTION
 -----------
-Reads output from "git-diff-cache", "git-diff-tree" and "git-diff-files" and
+Reads output from "git-diff-index", "git-diff-tree" and "git-diff-files" and
 generates patch format output.
 
 OPTIONS
@@ -35,7 +35,7 @@
 
 See Also
 --------
-The section on generating patches in link:git-diff-cache.html[git-diff-cache]
+The section on generating patches in link:git-diff-index.html[git-diff-index]
 
 
 Author
diff --git a/Documentation/git-diff-cache.txt b/Documentation/git-diff-index.txt
similarity index 83%
rename from Documentation/git-diff-cache.txt
rename to Documentation/git-diff-index.txt
index a353d12..12bfcb3 100644
--- a/Documentation/git-diff-cache.txt
+++ b/Documentation/git-diff-index.txt
@@ -1,15 +1,15 @@
-git-diff-cache(1)
+git-diff-index(1)
 =================
 v0.1, May 2005
 
 NAME
 ----
-git-diff-cache - Compares content and mode of blobs between the cache and repository
+git-diff-index - Compares content and mode of blobs between the cache and repository
 
 
 SYNOPSIS
 --------
-'git-diff-cache' [-m] [--cached] [<common diff options>] <tree-ish> [<path>...]
+'git-diff-index' [-m] [--cached] [<common diff options>] <tree-ish> [<path>...]
 
 DESCRIPTION
 -----------
@@ -32,7 +32,7 @@
 -m::
 	By default, files recorded in the index but not checked
 	out are reported as deleted.  This flag makes
-	"git-diff-cache" say that all non-checked-out files are up
+	"git-diff-index" say that all non-checked-out files are up
 	to date.
 
 Output format
@@ -58,24 +58,24 @@
 *what* you are going to commit is without having to write a new tree
 object and compare it that way, and to do that, you just do
 
-	git-diff-cache --cached $(cat .git/HEAD)
+	git-diff-index --cached $(cat .git/HEAD)
 
 Example: let's say I had renamed `commit.c` to `git-commit.c`, and I had
-done an "git-update-cache" to make that effective in the index file.
+done an "git-update-index" to make that effective in the index file.
 "git-diff-files" wouldn't show anything at all, since the index file
-matches my working directory. But doing a "git-diff-cache" does:
+matches my working directory. But doing a "git-diff-index" does:
 
-  torvalds@ppc970:~/git> git-diff-cache --cached $(cat .git/HEAD)
+  torvalds@ppc970:~/git> git-diff-index --cached $(cat .git/HEAD)
   -100644 blob    4161aecc6700a2eb579e842af0b7f22b98443f74        commit.c
   +100644 blob    4161aecc6700a2eb579e842af0b7f22b98443f74        git-commit.c
 
 You can trivially see that the above is a rename.
 
-In fact, "git-diff-cache --cached" *should* always be entirely equivalent to
+In fact, "git-diff-index --cached" *should* always be entirely equivalent to
 actually doing a "git-write-tree" and comparing that. Except this one is much
 nicer for the case where you just want to check where you are.
 
-So doing a "git-diff-cache --cached" is basically very useful when you are 
+So doing a "git-diff-index --cached" is basically very useful when you are
 asking yourself "what have I already marked for being committed, and 
 what's the difference to a previous tree".
 
@@ -96,10 +96,10 @@
 The twist is that if some file doesn't match the cache, we don't have
 a backing store thing for it, and we use the magic "all-zero" sha1 to
 show that. So let's say that you have edited `kernel/sched.c`, but
-have not actually done a "git-update-cache" on it yet - there is no
+have not actually done a "git-update-index" on it yet - there is no
 "object" associated with the new state, and you get:
 
-  torvalds@ppc970:~/v2.6/linux> git-diff-cache $(cat .git/HEAD )
+  torvalds@ppc970:~/v2.6/linux> git-diff-index $(cat .git/HEAD )
   *100644->100664 blob    7476bb......->000000......      kernel/sched.c
 
 ie it shows that the tree has changed, and that `kernel/sched.c` has is
@@ -107,7 +107,7 @@
 get the real diff, you need to look at the object in the working directory
 directly rather than do an object-to-object diff.
 
-NOTE! As with other commands of this type, "git-diff-cache" does not
+NOTE! As with other commands of this type, "git-diff-index" does not
 actually look at the contents of the file at all. So maybe
 `kernel/sched.c` hasn't actually changed, and it's just that you
 touched it. In either case, it's a note that you need to
diff --git a/Documentation/git-diff-tree.txt b/Documentation/git-diff-tree.txt
index 5ccf0ba..9ec4b29 100644
--- a/Documentation/git-diff-tree.txt
+++ b/Documentation/git-diff-tree.txt
@@ -93,7 +93,7 @@
 An example of normal usage is:
 
   torvalds@ppc970:~/git> git-diff-tree 5319e4......
-  *100664->100664 blob    ac348b.......->a01513.......      git-fsck-cache.c
+  *100664->100664 blob    ac348b.......->a01513.......      git-fsck-objects.c
 
 which tells you that the last commit changed just one file (it's from
 this one:
@@ -104,7 +104,7 @@
   author Linus Torvalds <torvalds@ppc970.osdl.org> Sat Apr 9 12:02:30 2005
   committer Linus Torvalds <torvalds@ppc970.osdl.org> Sat Apr 9 12:02:30 2005
 
-  Make "git-fsck-cache" print out all the root commits it finds.
+  Make "git-fsck-objects" print out all the root commits it finds.
 
   Once I do the reference tracking, I'll also make it print out all the
   HEAD commits it finds, which is even more interesting.
diff --git a/Documentation/git-diff-script.txt b/Documentation/git-diff.txt
similarity index 75%
rename from Documentation/git-diff-script.txt
rename to Documentation/git-diff.txt
index 64acdc0..f43a60f 100644
--- a/Documentation/git-diff-script.txt
+++ b/Documentation/git-diff.txt
@@ -1,14 +1,14 @@
-git-diff-script(1)
-==================
+git-diff(1)
+===========
 
 NAME
 ----
-git-diff-script - Some git command not yet documented.
+git-diff - Some git command not yet documented.
 
 
 SYNOPSIS
 --------
-'git-diff-script' [ --option ] <args>...
+'git-diff' [ --option ] <args>...
 
 DESCRIPTION
 -----------
diff --git a/Documentation/git-fetch-script.txt b/Documentation/git-fetch.txt
similarity index 80%
rename from Documentation/git-fetch-script.txt
rename to Documentation/git-fetch.txt
index d15222b..017f646 100644
--- a/Documentation/git-fetch-script.txt
+++ b/Documentation/git-fetch.txt
@@ -1,15 +1,15 @@
-git-fetch-script(1)
-===================
+git-fetch(1)
+============
 v0.99.5, Aug 2005
 
 NAME
 ----
-git-fetch-script - Download objects and a head from another repository.
+git-fetch - Download objects and a head from another repository.
 
 
 SYNOPSIS
 --------
-'git-fetch-script' <repository> <refspec>...
+'git-fetch' <repository> <refspec>...
 
 
 DESCRIPTION
diff --git a/Documentation/git-format-patch-script.txt b/Documentation/git-format-patch.txt
similarity index 70%
rename from Documentation/git-format-patch-script.txt
rename to Documentation/git-format-patch.txt
index ae3b8a1..1788a97 100644
--- a/Documentation/git-format-patch-script.txt
+++ b/Documentation/git-format-patch.txt
@@ -1,14 +1,14 @@
-git-format-patch-script(1)
-==========================
+git-format-patch(1)
+===================
 
 NAME
 ----
-git-format-patch-script - Some git command not yet documented.
+git-format-patch - Some git command not yet documented.
 
 
 SYNOPSIS
 --------
-'git-format-patch-script' [ --option ] <args>...
+'git-format-patch' [ --option ] <args>...
 
 DESCRIPTION
 -----------
diff --git a/Documentation/git-fsck-cache.txt b/Documentation/git-fsck-objects.txt
similarity index 88%
rename from Documentation/git-fsck-cache.txt
rename to Documentation/git-fsck-objects.txt
index 13f1965..2b86404 100644
--- a/Documentation/git-fsck-cache.txt
+++ b/Documentation/git-fsck-objects.txt
@@ -1,15 +1,15 @@
-git-fsck-cache(1)
-=================
+git-fsck-objects(1)
+===================
 v0.1, May 2005
 
 NAME
 ----
-git-fsck-cache - Verifies the connectivity and validity of the objects in the database
+git-fsck-objects - Verifies the connectivity and validity of the objects in the database
 
 
 SYNOPSIS
 --------
-'git-fsck-cache' [--tags] [--root] [--unreachable] [--cache] [--standalone | --full] [--strict] [<object>*]
+'git-fsck-objects' [--tags] [--root] [--unreachable] [--cache] [--standalone | --full] [--strict] [<object>*]
 
 DESCRIPTION
 -----------
@@ -20,7 +20,7 @@
 <object>::
 	An object to treat as the head of an unreachability trace.
 
-	If no objects are given, git-fsck-cache defaults to using the
+	If no objects are given, git-fsck-objects defaults to using the
 	index file and all SHA1 references in .git/refs/* as heads.
 
 --unreachable::
@@ -69,11 +69,11 @@
 
 So for example
 
-	git-fsck-cache --unreachable $(cat .git/HEAD .git/refs/heads/*)
+	git-fsck-objects --unreachable $(cat .git/HEAD .git/refs/heads/*)
 
 will do quite a _lot_ of verification on the tree. There are a few
 extra validity tests to be added (make sure that tree objects are
-sorted properly etc), but on the whole if "git-fsck-cache" is happy, you
+sorted properly etc), but on the whole if "git-fsck-objects" is happy, you
 do have a valid tree.
 
 Any corrupt objects you will have to find in backups or other archives
@@ -111,7 +111,7 @@
 	The <type> object <object>, is present in the database but never
 	'directly' used. A dangling commit could be a root node.
 
-warning: git-fsck-cache: tree <tree> has full pathnames in it::
+warning: git-fsck-objects: tree <tree> has full pathnames in it::
 	And it shouldn't...
 
 sha1 mismatch <object>::
diff --git a/Documentation/git-hash-object.txt b/Documentation/git-hash-object.txt
index a77adab..4dd06f7 100644
--- a/Documentation/git-hash-object.txt
+++ b/Documentation/git-hash-object.txt
@@ -17,7 +17,7 @@
 with the contents of the named file (which can be outside of the
 work tree), and optionally writes the resulting object into the
 object database.  Reports its object ID to its standard output.
-This is used by "git-cvsimport-script" to update the cache
+This is used by "git-cvsimport" to update the cache
 without modifying files in the work tree.  When <type> is not
 specified, it defaults to "blob". 
 
diff --git a/Documentation/git-http-pull.txt b/Documentation/git-http-fetch.txt
similarity index 77%
rename from Documentation/git-http-pull.txt
rename to Documentation/git-http-fetch.txt
index edc5ceb..9cd862e 100644
--- a/Documentation/git-http-pull.txt
+++ b/Documentation/git-http-fetch.txt
@@ -1,15 +1,15 @@
-git-http-pull(1)
-================
+git-http-fetch(1)
+=================
 v0.1, May 2005
 
 NAME
 ----
-git-http-pull - Downloads a remote GIT repository via HTTP
+git-http-fetch - Downloads a remote GIT repository via HTTP
 
 
 SYNOPSIS
 --------
-'git-http-pull' [-c] [-t] [-a] [-d] [-v] [-w filename] [--recover] commit-id url
+'git-http-fetch' [-c] [-t] [-a] [-d] [-v] [-w filename] [--recover] commit-id url
 
 DESCRIPTION
 -----------
diff --git a/Documentation/git-local-pull.txt b/Documentation/git-local-fetch.txt
similarity index 75%
rename from Documentation/git-local-pull.txt
rename to Documentation/git-local-fetch.txt
index 4651e81..aad7d99 100644
--- a/Documentation/git-local-pull.txt
+++ b/Documentation/git-local-fetch.txt
@@ -1,15 +1,15 @@
-git-local-pull(1)
-=================
+git-local-fetch(1)
+==================
 v0.1, May 2005
 
 NAME
 ----
-git-local-pull - Duplicates another GIT repository on a local system
+git-local-fetch - Duplicates another GIT repository on a local system
 
 
 SYNOPSIS
 --------
-'git-local-pull' [-c] [-t] [-a] [-d] [-v] [-w filename] [--recover] [-l] [-s] [-n] commit-id path
+'git-local-fetch' [-c] [-t] [-a] [-d] [-v] [-w filename] [--recover] [-l] [-s] [-n] commit-id path
 
 DESCRIPTION
 -----------
diff --git a/Documentation/git-log-script.txt b/Documentation/git-log.txt
similarity index 90%
rename from Documentation/git-log-script.txt
rename to Documentation/git-log.txt
index ed359be..d1c24f7 100644
--- a/Documentation/git-log-script.txt
+++ b/Documentation/git-log.txt
@@ -1,10 +1,10 @@
-git-log-script(1)
-=================
+git-log(1)
+==========
 v0.99.4, Aug 2005
 
 NAME
 ----
-git-log-script - Show commit logs
+git-log - Show commit logs
 
 
 SYNOPSIS
diff --git a/Documentation/git-ls-remote-script.txt b/Documentation/git-ls-remote.txt
similarity index 93%
rename from Documentation/git-ls-remote-script.txt
rename to Documentation/git-ls-remote.txt
index 0b98e6a..c3152b1 100644
--- a/Documentation/git-ls-remote-script.txt
+++ b/Documentation/git-ls-remote.txt
@@ -1,10 +1,10 @@
-git-ls-remote-script(1)
-=======================
+git-ls-remote(1)
+================
 v0.1, May 2005
 
 NAME
 ----
-git-ls-remote-script - Look at references other repository has.
+git-ls-remote - Look at references other repository has.
 
 
 SYNOPSIS
diff --git a/Documentation/git-merge-cache.txt b/Documentation/git-merge-index.txt
similarity index 80%
rename from Documentation/git-merge-cache.txt
rename to Documentation/git-merge-index.txt
index bd3c9ca..1b99f2b 100644
--- a/Documentation/git-merge-cache.txt
+++ b/Documentation/git-merge-index.txt
@@ -1,15 +1,15 @@
-git-merge-cache(1)
+git-merge-index(1)
 ==================
 v0.1, May 2005
 
 NAME
 ----
-git-merge-cache - Runs a merge for files needing merging
+git-merge-index - Runs a merge for files needing merging
 
 
 SYNOPSIS
 --------
-'git-merge-cache' [-o] [-q] <merge-program> (-a | -- | <file>\*) 
+'git-merge-index' [-o] [-q] <merge-program> (-a | -- | <file>\*)
 
 DESCRIPTION
 -----------
@@ -37,14 +37,14 @@
 	failure usually indicates conflicts during merge). This is for
 	porcelains which might want to emit custom messages.
 
-If "git-merge-cache" is called with multiple <file>s (or -a) then it
+If "git-merge-index" is called with multiple <file>s (or -a) then it
 processes them in turn only stopping if merge returns a non-zero exit
 code.
 
 Typically this is run with the a script calling the merge command from
 the RCS package.
 
-A sample script called "git-merge-one-file-script" is included in the
+A sample script called "git-merge-one-file" is included in the
 distribution.
 
 ALERT ALERT ALERT! The git "merge object order" is different from the
@@ -54,7 +54,7 @@
 
 Examples:
 
-  torvalds@ppc970:~/merge-test> git-merge-cache cat MM
+  torvalds@ppc970:~/merge-test> git-merge-index cat MM
   This is MM from the original tree.			# original
   This is modified MM in the branch A.			# merge1
   This is modified MM in the branch B.			# merge2
@@ -62,17 +62,17 @@
 
 or 
 
-  torvalds@ppc970:~/merge-test> git-merge-cache cat AA MM
+  torvalds@ppc970:~/merge-test> git-merge-index cat AA MM
   cat: : No such file or directory
   This is added AA in the branch A.
   This is added AA in the branch B.
   This is added AA in the branch B.
   fatal: merge program failed
 
-where the latter example shows how "git-merge-cache" will stop trying to
+where the latter example shows how "git-merge-index" will stop trying to
 merge once anything has returned an error (ie "cat" returned an error
 for the AA file, because it didn't exist in the original, and thus
-"git-merge-cache" didn't even try to merge the MM thing).
+"git-merge-index" didn't even try to merge the MM thing).
 
 Author
 ------
diff --git a/Documentation/git-merge-one-file-script.txt b/Documentation/git-merge-one-file.txt
similarity index 64%
rename from Documentation/git-merge-one-file-script.txt
rename to Documentation/git-merge-one-file.txt
index 1cfe954..b84d14d 100644
--- a/Documentation/git-merge-one-file-script.txt
+++ b/Documentation/git-merge-one-file.txt
@@ -1,19 +1,19 @@
-git-merge-one-file-script(1)
-============================
+git-merge-one-file(1)
+=====================
 v0.99.4, Aug 2005
 
 NAME
 ----
-git-merge-one-file-script - The standard helper program to use with "git-merge-cache"
+git-merge-one-file - The standard helper program to use with "git-merge-index"
 
 
 SYNOPSIS
 --------
-'git-merge-one-file-script'
+'git-merge-one-file'
 
 DESCRIPTION
 -----------
-This is the standard helper program to use with "git-merge-cache"
+This is the standard helper program to use with "git-merge-index"
 to resolve a merge after the trivial merge done with "git-read-tree -m".
 
 Author
diff --git a/Documentation/git-octopus-script.txt b/Documentation/git-octopus.txt
similarity index 86%
rename from Documentation/git-octopus-script.txt
rename to Documentation/git-octopus.txt
index f7a073d..7a9cc54 100644
--- a/Documentation/git-octopus-script.txt
+++ b/Documentation/git-octopus.txt
@@ -1,10 +1,10 @@
-git-octopus-script(1)
-=====================
+git-octopus(1)
+==============
 v0.99.5, Aug 2005
 
 NAME
 ----
-git-octopus-script - Merge more than two commits.
+git-octopus - Merge more than two commits.
 
 
 SYNOPSIS
diff --git a/Documentation/git-pack-objects.txt b/Documentation/git-pack-objects.txt
index 7710be0..5ce195c 100644
--- a/Documentation/git-pack-objects.txt
+++ b/Documentation/git-pack-objects.txt
@@ -76,7 +76,7 @@
 
 See-Also
 --------
-git-repack-script(1) git-prune-packed(1)
+git-repack(1) git-prune-packed(1)
 
 GIT
 ---
diff --git a/Documentation/git-parse-remote-script.txt b/Documentation/git-parse-remote.txt
similarity index 87%
rename from Documentation/git-parse-remote-script.txt
rename to Documentation/git-parse-remote.txt
index d6e551f..7ee0145 100644
--- a/Documentation/git-parse-remote-script.txt
+++ b/Documentation/git-parse-remote.txt
@@ -1,14 +1,14 @@
-git-parse-remote-script(1)
-==========================
+git-parse-remote(1)
+===================
 
 NAME
 ----
-git-parse-remote-script - Routines to help parsing $GIT_DIR/remotes/
+git-parse-remote - Routines to help parsing $GIT_DIR/remotes/
 
 
 SYNOPSIS
 --------
-'. git-parse-remote-script'
+'. git-parse-remote'
 
 DESCRIPTION
 -----------
diff --git a/Documentation/git-prune-packed.txt b/Documentation/git-prune-packed.txt
index 893c1df..3fca275 100644
--- a/Documentation/git-prune-packed.txt
+++ b/Documentation/git-prune-packed.txt
@@ -34,7 +34,7 @@
 
 See-Also
 --------
-git-pack-objects(1) git-repack-script(1)
+git-pack-objects(1) git-repack(1)
 
 GIT
 ---
diff --git a/Documentation/git-prune-script.txt b/Documentation/git-prune.txt
similarity index 76%
rename from Documentation/git-prune-script.txt
rename to Documentation/git-prune.txt
index 0f76e8f..f368427 100644
--- a/Documentation/git-prune-script.txt
+++ b/Documentation/git-prune.txt
@@ -1,20 +1,20 @@
-git-prune-script(1)
-===================
+git-prune(1)
+============
 v0.99.5, Aug 2005
 
 NAME
 ----
-git-prune-script - Prunes all unreachable objects from the object database
+git-prune - Prunes all unreachable objects from the object database
 
 
 SYNOPSIS
 --------
-'git-prune-script' [-n]
+'git-prune' [-n]
 
 DESCRIPTION
 -----------
 
-This runs `git-fsck-cache --unreachable` using the heads
+This runs `git-fsck-objects --unreachable` using the heads
 specified on the command line (or `$GIT_DIR/refs/heads/\*` and
 `$GIT_DIR/refs/tags/\*` if none is specified), and prunes all
 unreachable objects from the object database.  In addition, it
diff --git a/Documentation/git-pull-script.txt b/Documentation/git-pull.txt
similarity index 73%
rename from Documentation/git-pull-script.txt
rename to Documentation/git-pull.txt
index 8111813..235a036 100644
--- a/Documentation/git-pull-script.txt
+++ b/Documentation/git-pull.txt
@@ -1,20 +1,20 @@
-git-pull-script(1)
-==================
+git-pull(1)
+===========
 v0.99.4, Aug 2005
 
 NAME
 ----
-git-pull-script - Pull and merge from another repository.
+git-pull - Pull and merge from another repository.
 
 
 SYNOPSIS
 --------
-'git-pull-script' <repository> <refspec>...
+'git-pull' <repository> <refspec>...
 
 
 DESCRIPTION
 -----------
-Runs 'git-fetch-script' with the given parameters.
+Runs 'git-fetch' with the given parameters.
 
 When only one ref is downloaded, runs 'git resolve' to merge it
 into the local HEAD.  Otherwise uses 'git octopus' to merge them
diff --git a/Documentation/git-push-script.txt b/Documentation/git-push.txt
similarity index 70%
rename from Documentation/git-push-script.txt
rename to Documentation/git-push.txt
index 556682f..b8993eb 100644
--- a/Documentation/git-push-script.txt
+++ b/Documentation/git-push.txt
@@ -1,14 +1,14 @@
-git-push-script(1)
-==================
+git-push(1)
+===========
 
 NAME
 ----
-git-push-script - Update remote refs along with associated objects.
+git-push - Update remote refs along with associated objects.
 
 
 SYNOPSIS
 --------
-'git-push-script' [--all] [--force] <repository> <refspec>...
+'git-push' [--all] [--force] <repository> <refspec>...
 
 DESCRIPTION
 -----------
diff --git a/Documentation/git-read-tree.txt b/Documentation/git-read-tree.txt
index e1be6cc..d9c5a13 100644
--- a/Documentation/git-read-tree.txt
+++ b/Documentation/git-read-tree.txt
@@ -16,7 +16,7 @@
 -----------
 Reads the tree information given by <tree-ish> into the directory cache,
 but does not actually *update* any of the files it "caches". (see:
-git-checkout-cache)
+git-checkout-index)
 
 Optionally, it can merge a tree into the cache, perform a
 fast-forward (i.e. 2-way) merge, or a 3-way merge, with the -m
@@ -56,7 +56,7 @@
 cache's stat()s take precedence over the merged tree's).
 
 That means that if you do a "git-read-tree -m <newtree>" followed by a
-"git-checkout-cache -f -u -a", the "git-checkout-cache" only checks out
+"git-checkout-index -f -u -a", the "git-checkout-index" only checks out
 the stuff that really changed.
 
 This is used to avoid unnecessary false hits when "git-diff-files" is
@@ -126,13 +126,13 @@
 
 When this form of git-read-tree returns successfully, you can
 see what "local changes" you made are carried forward by running
-"git-diff-cache --cached $M".  Note that this does not
-necessarily match "git-diff-cache --cached $H" would have
+"git-diff-index --cached $M".  Note that this does not
+necessarily match "git-diff-index --cached $H" would have
 produced before such a two tree merge.  This is because of cases
 18 and 19 --- if you already had the changes in $M (e.g. maybe
-you picked it up via e-mail in a patch form), "git-diff-cache
+you picked it up via e-mail in a patch form), "git-diff-index
 --cached $H" would have told you about the change before this
-merge, but it would not show in "git-diff-cache --cached $M"
+merge, but it would not show in "git-diff-index --cached $M"
 output after two-tree merge.
 
 
@@ -205,8 +205,8 @@
     matching "stage1" entry if it exists too.  .. all the normal
     trivial rules ..
 
-You would normally use "git-merge-cache" with supplied
-"git-merge-one-file-script" to do this last step.  The script
+You would normally use "git-merge-index" with supplied
+"git-merge-one-file" to do this last step.  The script
 does not touch the files in the work tree, and the entire merge
 happens in the index file.  In other words, there is no need to
 worry about what is in the working directory, since it is never
@@ -225,13 +225,13 @@
 commited last to your repository:
 
     $ JC=`cat .git/HEAD`
-    $ git-checkout-cache -f -u -a $JC
+    $ git-checkout-index -f -u -a $JC
 
-You do random edits, without running git-update-cache.  And then
+You do random edits, without running git-update-index.  And then
 you notice that the tip of your "upstream" tree has advanced
 since you pulled from him:
 
-    $ git-fetch-script rsync://.... linus
+    $ git-fetch rsync://.... linus
     $ LT=`cat .git/MERGE_HEAD`
 
 Your work tree is still based on your HEAD ($JC), but you have
@@ -240,7 +240,7 @@
 then does the right thing.  So with the following sequence:
 
     $ git-read-tree -m -u `git-merge-base $JC $LT` $JC $LT
-    $ git-merge-cache git-merge-one-file-script -a
+    $ git-merge-index git-merge-one-file -a
     $ echo "Merge with Linus" | \
       git-commit-tree `git-write-tree` -p $JC -p $LT
 
diff --git a/Documentation/git-rebase-script.txt b/Documentation/git-rebase.txt
similarity index 74%
rename from Documentation/git-rebase-script.txt
rename to Documentation/git-rebase.txt
index 8f14186..09bd328 100644
--- a/Documentation/git-rebase-script.txt
+++ b/Documentation/git-rebase.txt
@@ -1,13 +1,13 @@
-git-rebase-script(1)
-====================
+git-rebase(1)
+=============
 
 NAME
 ----
-git-rebase-script - Rebase local commits to new upstream head.
+git-rebase - Rebase local commits to new upstream head.
 
 SYNOPSIS
 --------
-'git-rebase-script' <upstream> [<head>]
+'git-rebase' <upstream> [<head>]
 
 DESCRIPTION
 -----------
diff --git a/Documentation/git-relink-script.txt b/Documentation/git-relink.txt
similarity index 79%
rename from Documentation/git-relink-script.txt
rename to Documentation/git-relink.txt
index 99c05d4..25975ae 100644
--- a/Documentation/git-relink-script.txt
+++ b/Documentation/git-relink.txt
@@ -1,13 +1,13 @@
-git-relink-script(1)
-====================
+git-relink(1)
+=============
 
 NAME
 ----
-git-relink-script - Hardlink common objects in local repositories.
+git-relink - Hardlink common objects in local repositories.
 
 SYNOPSIS
 --------
-'git-relink-script' [--safe] <dir> <dir> [<dir>]\*
+'git-relink' [--safe] <dir> <dir> [<dir>]\*
 
 DESCRIPTION
 -----------
diff --git a/Documentation/git-rename-script.txt b/Documentation/git-rename.txt
similarity index 75%
rename from Documentation/git-rename-script.txt
rename to Documentation/git-rename.txt
index b110525..2c24bfa 100644
--- a/Documentation/git-rename-script.txt
+++ b/Documentation/git-rename.txt
@@ -1,15 +1,15 @@
-git-rename-script(1)
-====================
+git-rename(1)
+=============
 v0.1, May 2005
 
 NAME
 ----
-git-rename-script - Script used to rename a file, directory or symlink.
+git-rename - Script used to rename a file, directory or symlink.
 
 
 SYNOPSIS
 --------
-'git-rename-script' <source> <destination>
+'git-rename' <source> <destination>
 
 DESCRIPTION
 -----------
diff --git a/Documentation/git-repack-script.txt b/Documentation/git-repack.txt
similarity index 88%
rename from Documentation/git-repack-script.txt
rename to Documentation/git-repack.txt
index df94ec1..d8e3ad0 100644
--- a/Documentation/git-repack-script.txt
+++ b/Documentation/git-repack.txt
@@ -1,16 +1,16 @@
-git-repack-script(1)
-====================
+git-repack(1)
+=============
 v0.99.5, August 2005
 
 NAME
 ----
-git-repack-script - Script used to pack a repository from a collection of
+git-repack - Script used to pack a repository from a collection of
 objects into pack files.
 
 
 SYNOPSIS
 --------
-'git-repack-script' [-a] [-d]
+'git-repack' [-a] [-d]
 
 DESCRIPTION
 -----------
diff --git a/Documentation/git-request-pull-script.txt b/Documentation/git-request-pull.txt
similarity index 76%
rename from Documentation/git-request-pull-script.txt
rename to Documentation/git-request-pull.txt
index 1ebf726..27a66ac 100644
--- a/Documentation/git-request-pull-script.txt
+++ b/Documentation/git-request-pull.txt
@@ -1,13 +1,13 @@
-git-request-pull-script(1)
-==========================
+git-request-pull(1)
+===================
 
 NAME
 ----
-git-request-pull-script - Generates a summary of pending changes.
+git-request-pull - Generates a summary of pending changes.
 
 SYNOPSIS
 --------
-'git-request-pull-script' <start> <url> [<end>]
+'git-request-pull' <start> <url> [<end>]
 
 DESCRIPTION
 -----------
diff --git a/Documentation/git-reset-script.txt b/Documentation/git-reset.txt
similarity index 81%
rename from Documentation/git-reset-script.txt
rename to Documentation/git-reset.txt
index 18bd9e9..a6567c4 100644
--- a/Documentation/git-reset-script.txt
+++ b/Documentation/git-reset.txt
@@ -1,13 +1,13 @@
-git-reset-script(1)
-===================
+git-reset(1)
+============
 
 NAME
 ----
-git-reset-script - Reset current HEAD to the specified state.
+git-reset - Reset current HEAD to the specified state.
 
 SYNOPSIS
 --------
-'git-reset-script' [--mixed | --soft | --hard] [<commit-ish>]
+'git-reset' [--mixed | --soft | --hard] [<commit-ish>]
 
 DESCRIPTION
 -----------
diff --git a/Documentation/git-resolve-script.txt b/Documentation/git-resolve.txt
similarity index 89%
rename from Documentation/git-resolve-script.txt
rename to Documentation/git-resolve.txt
index 77076aa..d058318 100644
--- a/Documentation/git-resolve-script.txt
+++ b/Documentation/git-resolve.txt
@@ -1,10 +1,10 @@
-git-resolve-script(1)
-=====================
+git-resolve(1)
+==============
 v0.99.5, Aug 2005
 
 NAME
 ----
-git-resolve-script - Merge two commits
+git-resolve - Merge two commits
 
 
 SYNOPSIS
diff --git a/Documentation/git-revert-script.txt b/Documentation/git-revert.txt
similarity index 88%
rename from Documentation/git-revert-script.txt
rename to Documentation/git-revert.txt
index 9609dcd..a3f9a56 100644
--- a/Documentation/git-revert-script.txt
+++ b/Documentation/git-revert.txt
@@ -1,13 +1,13 @@
-git-revert-script(1)
-====================
+git-revert(1)
+=============
 
 NAME
 ----
-git-revert-script - Revert an existing commit.
+git-revert - Revert an existing commit.
 
 SYNOPSIS
 --------
-'git-revert-script' [-n] <commit>
+'git-revert' [-n] <commit>
 
 DESCRIPTION
 -----------
diff --git a/Documentation/git-send-email-script.txt b/Documentation/git-send-email.txt
similarity index 88%
rename from Documentation/git-send-email-script.txt
rename to Documentation/git-send-email.txt
index f79ad19..fa11efc 100644
--- a/Documentation/git-send-email-script.txt
+++ b/Documentation/git-send-email.txt
@@ -1,15 +1,15 @@
-git-send-email-script(1)
-========================
+git-send-email(1)
+=================
 v0.1, July 2005
 
 NAME
 ----
-git-send-email-script - Send a collection of patches as emails
+git-send-email - Send a collection of patches as emails
 
 
 SYNOPSIS
 --------
-'git-send-email-script' [options] <file|directory> [... file|directory]
+'git-send-email' [options] <file|directory> [... file|directory]
 
 
 
@@ -66,7 +66,7 @@
 ------
 Written by Ryan Anderson <ryan@michonline.com>
 
-git-send-email-script is originally based upon
+git-send-email is originally based upon
 send_lots_of_email.pl by Greg Kroah-Hartman.
 
 Documentation
diff --git a/Documentation/git-sh-setup-script.txt b/Documentation/git-sh-setup.txt
similarity index 73%
rename from Documentation/git-sh-setup-script.txt
rename to Documentation/git-sh-setup.txt
index 5ac613a..fcf2cdf 100644
--- a/Documentation/git-sh-setup-script.txt
+++ b/Documentation/git-sh-setup.txt
@@ -1,13 +1,13 @@
-git-sh-setup-script(1)
-======================
+git-sh-setup(1)
+===============
 
 NAME
 ----
-git-sh-setup-script - Common git shell script setup code.
+git-sh-setup - Common git shell script setup code.
 
 SYNOPSIS
 --------
-'git-sh-setup-script'
+'git-sh-setup'
 
 DESCRIPTION
 -----------
@@ -16,7 +16,7 @@
 (currently just "die()"), and returns ok if it all looks like a git archive.
 So use it something like
 
-	. git-sh-setup-script || die "Not a git archive"
+	. git-sh-setup || die "Not a git archive"
 
 to make the rest of the git scripts more careful and readable.
 
diff --git a/Documentation/git-show-branch.txt b/Documentation/git-show-branch.txt
index 5103c0c..c947fce 100644
--- a/Documentation/git-show-branch.txt
+++ b/Documentation/git-show-branch.txt
@@ -88,7 +88,7 @@
 $ git show-branch --more=4 master
 [master] Add 'git show-branch'.
 [~1] Add a new extended SHA1 syntax <name>~<num>
-[~2] Fix "git-diff-script A B"
+[~2] Fix "git-diff A B"
 [~3] git-ls-files: generalized pathspecs
 [~4] Make "git-ls-files" work in subdirectories
 ------------------------------------------------
diff --git a/Documentation/git-ssh-pull.txt b/Documentation/git-ssh-fetch.txt
similarity index 71%
rename from Documentation/git-ssh-pull.txt
rename to Documentation/git-ssh-fetch.txt
index ac3fb34..4ef03f6 100644
--- a/Documentation/git-ssh-pull.txt
+++ b/Documentation/git-ssh-fetch.txt
@@ -1,22 +1,22 @@
-git-ssh-pull(1)
-===============
+git-ssh-fetch(1)
+================
 v0.1, May 2005
 
 NAME
 ----
-git-ssh-pull - Pulls from a remote repository over ssh connection
+git-ssh-fetch - Pulls from a remote repository over ssh connection
 
 
 
 SYNOPSIS
 --------
-'git-ssh-pull' [-c] [-t] [-a] [-d] [-v] [-w filename] [--recover] commit-id url
+'git-ssh-fetch' [-c] [-t] [-a] [-d] [-v] [-w filename] [--recover] commit-id url
 
 DESCRIPTION
 -----------
 Pulls from a remote repository over ssh connection, invoking
-git-ssh-push on the other end. It functions identically to
-git-ssh-push, aside from which end you run it on.
+git-ssh-upload on the other end. It functions identically to
+git-ssh-upload, aside from which end you run it on.
 
 
 OPTIONS
diff --git a/Documentation/git-ssh-push.txt b/Documentation/git-ssh-upload.txt
similarity index 69%
rename from Documentation/git-ssh-push.txt
rename to Documentation/git-ssh-upload.txt
index e38679d..f1aa0df 100644
--- a/Documentation/git-ssh-push.txt
+++ b/Documentation/git-ssh-upload.txt
@@ -1,21 +1,21 @@
-git-ssh-push(1)
-===============
+git-ssh-upload(1)
+=================
 v0.1, Jun 2005
 
 NAME
 ----
-git-ssh-push - Pushes to a remote repository over ssh connection
+git-ssh-upload - Pushes to a remote repository over ssh connection
 
 
 SYNOPSIS
 --------
-'git-ssh-push' [-c] [-t] [-a] [-d] [-v] [-w filename] [--recover] commit-id url
+'git-ssh-upload' [-c] [-t] [-a] [-d] [-v] [-w filename] [--recover] commit-id url
 
 DESCRIPTION
 -----------
 Pushes from a remote repository over ssh connection, invoking
-git-ssh-pull on the other end. It functions identically to
-git-ssh-pull, aside from which end you run it on.
+git-ssh-fetch on the other end. It functions identically to
+git-ssh-fetch, aside from which end you run it on.
 
 OPTIONS
 -------
diff --git a/Documentation/git-status-script.txt b/Documentation/git-status.txt
similarity index 85%
rename from Documentation/git-status-script.txt
rename to Documentation/git-status.txt
index 2fb7f74..886fb7c 100644
--- a/Documentation/git-status-script.txt
+++ b/Documentation/git-status.txt
@@ -1,10 +1,10 @@
-git-status-script(1)
-====================
+git-status(1)
+=============
 v0.99.4, Aug 2005
 
 NAME
 ----
-git-status-script - Show working tree status.
+git-status - Show working tree status.
 
 
 SYNOPSIS
@@ -16,7 +16,7 @@
 Examines paths in the working tree that has changes unrecorded
 to the index file, and changes between the index file and the
 current HEAD commit.  The former paths are what you _could_
-commit by running 'git-update-cache' before running 'git
+commit by running 'git-update-index' before running 'git
 commit', and the latter paths are what you _would_ commit by
 running 'git commit'.
 
diff --git a/Documentation/git-tag-script.txt b/Documentation/git-tag.txt
similarity index 84%
rename from Documentation/git-tag-script.txt
rename to Documentation/git-tag.txt
index 5032acb..0e1be72 100644
--- a/Documentation/git-tag-script.txt
+++ b/Documentation/git-tag.txt
@@ -1,16 +1,16 @@
-git-tag-script(1)
-=================
+git-tag(1)
+==========
 v0.99.4, Aug 2005
 
 NAME
 ----
-git-tag-script -  Create a tag object signed with GPG
+git-tag -  Create a tag object signed with GPG
 
 
 
 SYNOPSIS
 --------
-'git-tag-script' [-s | -a] [-f] <name>
+'git-tag' [-s | -a] [-f] <name>
 
 DESCRIPTION
 -----------
diff --git a/Documentation/git-update-cache.txt b/Documentation/git-update-index.txt
similarity index 90%
rename from Documentation/git-update-cache.txt
rename to Documentation/git-update-index.txt
index 7340e89..54b5f24 100644
--- a/Documentation/git-update-cache.txt
+++ b/Documentation/git-update-index.txt
@@ -1,15 +1,15 @@
-git-update-cache(1)
+git-update-index(1)
 ===================
 v0.1, May 2005
 
 NAME
 ----
-git-update-cache - Modifies the index or directory cache
+git-update-index - Modifies the index or directory cache
 
 
 SYNOPSIS
 --------
-'git-update-cache'
+'git-update-index'
 	     [--add] [--remove] [--refresh] [--replace]
 	     [--ignore-missing]
 	     [--force-remove]
@@ -23,7 +23,7 @@
 into the cache and any 'unmerged' or 'needs updating' state is
 cleared.
 
-The way "git-update-cache" handles files it is told about can be modified
+The way "git-update-index" handles files it is told about can be modified
 using the various options:
 
 OPTIONS
@@ -59,7 +59,7 @@
 
 --replace::
 	By default, when a file `path` exists in the index,
-	git-update-cache refuses an attempt to add `path/file`.
+	git-update-index refuses an attempt to add `path/file`.
 	Similarly if a file `path/file` exists, a file `path`
 	cannot be added.  With --replace flag, existing entries
 	that conflicts with the entry being added are
@@ -94,7 +94,7 @@
 
   To pretend you have a file with mode and sha1 at path, say:
 
-   $ git-update-cache --cacheinfo mode sha1 path
+   $ git-update-index --cacheinfo mode sha1 path
 
 '--info-only' is used to register files without placing them in the object
 database.  This is useful for status-only repositories.
@@ -109,7 +109,7 @@
 --------
 To update and refresh only the files already checked out:
 
-   git-checkout-cache -n -f -a && git-update-cache --ignore-missing --refresh
+   git-checkout-index -n -f -a && git-update-index --ignore-missing --refresh
 
 
 Author
diff --git a/Documentation/git-var.txt b/Documentation/git-var.txt
index 45b1006..ebe87d6 100644
--- a/Documentation/git-var.txt
+++ b/Documentation/git-var.txt
@@ -44,7 +44,7 @@
 See Also
 --------
 link:git-commit-tree.html[git-commit-tree]
-link:git-tag-script.html[git-tag-script]
+link:git-tag.html[git-tag]
 
 Author
 ------
diff --git a/Documentation/git-verify-tag-script.txt b/Documentation/git-verify-tag.txt
similarity index 65%
rename from Documentation/git-verify-tag-script.txt
rename to Documentation/git-verify-tag.txt
index d5d747c..98db1b3 100644
--- a/Documentation/git-verify-tag-script.txt
+++ b/Documentation/git-verify-tag.txt
@@ -1,17 +1,17 @@
-git-verify-tag-script(1)
-========================
+git-verify-tag(1)
+=================
 
 NAME
 ----
-git-verify-tag-script - Check the GPG signature of tag.
+git-verify-tag - Check the GPG signature of tag.
 
 SYNOPSIS
 --------
-'git-verify-tag-script' <tag>
+'git-verify-tag' <tag>
 
 DESCRIPTION
 -----------
-Validates the gpg signature created by git-tag-script.
+Validates the gpg signature created by git-tag.
 
 OPTIONS
 -------
diff --git a/Documentation/git-write-tree.txt b/Documentation/git-write-tree.txt
index 3cf8c93..5cd54ab 100644
--- a/Documentation/git-write-tree.txt
+++ b/Documentation/git-write-tree.txt
@@ -20,7 +20,7 @@
 Conceptually, "git-write-tree" sync()s the current directory cache contents
 into a set of tree files.
 In order to have that match what is actually in your directory right
-now, you need to have done a "git-update-cache" phase before you did the
+now, you need to have done a "git-update-index" phase before you did the
 "git-write-tree".
 
 OPTIONS
diff --git a/Documentation/git.txt b/Documentation/git.txt
index fd5108c..617f416 100644
--- a/Documentation/git.txt
+++ b/Documentation/git.txt
@@ -21,7 +21,7 @@
 
 The <<Discussion>> section below contains much useful definition and
 clarification info - read that first.  And of the commands, I suggest
-reading link:git-update-cache.html[git-update-cache] and
+reading link:git-update-index.html[git-update-index] and
 link:git-read-tree.html[git-read-tree] first - I wish I had!
 
 If you are migrating from CVS, link:cvs-migration.html[cvs migration]
@@ -59,8 +59,9 @@
 	Reads a "diff -up1" or git generated patch file and
 	applies it to the working tree.
 
-link:git-checkout-cache.html[git-checkout-cache]::
+link:git-checkout-index.html[git-checkout-index]::
 	Copy files from the cache to the working directory
+	Previously this command was known as git-checkout-cache.
 
 link:git-commit-tree.html[git-commit-tree]::
 	Creates a new commit object
@@ -71,8 +72,9 @@
 link:git-init-db.html[git-init-db]::
 	Creates an empty git object database
 
-link:git-merge-cache.html[git-merge-cache]::
+link:git-merge-index.html[git-merge-index]::
 	Runs a merge for files needing merging
+	Previously this command was known as git-merge-cache.
 
 link:git-mktag.html[git-mktag]::
 	Creates a tag object
@@ -89,8 +91,9 @@
 link:git-unpack-objects.html[git-unpack-objects]::
 	Unpacks objects out of a packed archive.
 
-link:git-update-cache.html[git-update-cache]::
+link:git-update-index.html[git-update-index]::
 	Modifies the index or directory cache
+	Previously this command was known as git-update-cache.
 
 link:git-write-tree.html[git-write-tree]::
 	Creates a tree from the current cache
@@ -102,8 +105,9 @@
 link:git-cat-file.html[git-cat-file]::
 	Provide content or type information for repository objects
 
-link:git-diff-cache.html[git-diff-cache]::
+link:git-diff-index.html[git-diff-index]::
 	Compares content and mode of blobs between the cache and repository
+	Previously this command was known as git-diff-cache.
 
 link:git-diff-files.html[git-diff-files]::
 	Compares files in the working tree and the cache
@@ -117,8 +121,9 @@
 link:git-export.html[git-export]::
 	Exports each commit and a diff against each of its parents
 
-link:git-fsck-cache.html[git-fsck-cache]::
+link:git-fsck-objects.html[git-fsck-objects]::
 	Verifies the connectivity and validity of the objects in the database
+	Previously this command was known as git-fsck-cache.
 
 link:git-ls-files.html[git-ls-files]::
 	Information about files in the cache/working directory
@@ -164,11 +169,13 @@
 link:git-fetch-pack.html[git-fetch-pack]::
 	Updates from a remote repository.
 
-link:git-http-pull.html[git-http-pull]::
+link:git-http-fetch.html[git-http-fetch]::
 	Downloads a remote GIT repository via HTTP
+	Previously this command was known as git-http-pull.
 
-link:git-local-pull.html[git-local-pull]::
+link:git-local-fetch.html[git-local-fetch]::
 	Duplicates another GIT repository on a local system
+	Previously this command was known as git-local-pull.
 
 link:git-peek-remote.html[git-peek-remote]::
 	Lists references on a remote repository using upload-pack protocol.
@@ -179,11 +186,13 @@
 link:git-send-pack.html[git-send-pack]::
 	Pushes to a remote repository, intelligently.
 
-link:git-ssh-pull.html[git-ssh-pull]::
+link:git-ssh-fetch.html[git-ssh-fetch]::
 	Pulls from a remote repository over ssh connection
+	Previously this command was known as git-ssh-pull.
 
-link:git-ssh-push.html[git-ssh-push]::
-	Helper "server-side" program used by git-ssh-pull
+link:git-ssh-upload.html[git-ssh-upload]::
+	Helper "server-side" program used by git-ssh-fetch
+	Previously this command was known as git-ssh-push.
 
 link:git-update-server-info.html[git-update-server-info]::
 	Updates auxiliary information on a dumb server to help
@@ -197,65 +206,84 @@
 Porcelain-ish Commands
 ----------------------
 
-link:git-add-script.html[git-add-script]::
+link:git-add.html[git-add]::
 	Add paths to the index file.
+	Previously this command was known as git-add-script.
 
 link:git-applymbox.html[git-applymbox]::
 	Apply patches from a mailbox.
 
-link:git-bisect-script.html[git-bisect-script]::
+link:git-bisect.html[git-bisect]::
 	Find the change that introduced a bug.
+	Previously this command was known as git-bisect-script.
 
-link:git-branch-script.html[git-branch-script]::
+link:git-branch.html[git-branch]::
 	Create and Show branches.
+	Previously this command was known as git-branch-script.
 
-link:git-checkout-script.html[git-checkout-script]::
+link:git-checkout.html[git-checkout]::
 	Checkout and switch to a branch.
+	Previously this command was known as git-checkout-script.
 
-link:git-cherry-pick-script.html[git-cherry-pick-script]::
+link:git-cherry-pick.html[git-cherry-pick]::
 	Cherry-pick the effect of an existing commit.
+	Previously this command was known as git-cherry-pick-script.
 
-link:git-clone-script.html[git-clone-script]::
+link:git-clone.html[git-clone]::
 	Clones a repository into a new directory.
+	Previously this command was known as git-clone-script.
 
-link:git-commit-script.html[git-commit-script]::
+link:git-commit.html[git-commit]::
 	Record changes to the repository.
+	Previously this command was known as git-commit-script.
 
-link:git-fetch-script.html[git-fetch-script]::
+link:git-fetch.html[git-fetch]::
 	Download from a remote repository via various protocols.
+	Previously this command was known as git-fetch-script.
 
-link:git-log-script.html[git-log-script]::
+link:git-log.html[git-log]::
 	Shows commit logs.
+	Previously this command was known as git-log-script.
 
-link:git-ls-remote-script.html[git-ls-remote-script]::
+link:git-ls-remote.html[git-ls-remote]::
 	Shows references in a remote or local repository.
+	Previously this command was known as git-ls-remote-script.
 
-link:git-octopus-script.html[git-octopus-script]::
+link:git-octopus.html[git-octopus]::
 	Merge more than two commits.
+	Previously this command was known as git-octopus-script.
 
-link:git-pull-script.html[git-pull-script]::
+link:git-pull.html[git-pull]::
 	Fetch from and merge with a remote repository.
+	Previously this command was known as git-pull-script.
 
-link:git-push-script.html[git-push-script]::
+link:git-push.html[git-push]::
 	Update remote refs along with associated objects.
+	Previously this command was known as git-push-script.
 
-link:git-rebase-script.html[git-rebase-script]::
+link:git-rebase.html[git-rebase]::
 	Rebase local commits to new upstream head.
+	Previously this command was known as git-rebase-script.
 
-link:git-rename-script.html[git-rename]::
+link:git-rename.html[git-rename]::
 	Rename files and directories.
+	Previously this command was known as git-rename-script.
 
-link:git-repack-script.html[git-repack-script]::
+link:git-repack.html[git-repack]::
 	Pack unpacked objects in a repository.
+	Previously this command was known as git-repack-script.
 
-link:git-reset-script.html[git-reset-script]::
+link:git-reset.html[git-reset]::
 	Reset current HEAD to the specified state.
+	Previously this command was known as git-reset-script.
 
-link:git-resolve-script.html[git-resolve-script]::
+link:git-resolve.html[git-resolve]::
 	Merge two commits.
+	Previously this command was known as git-resolve-script.
 
-link:git-revert-script.html[git-revert-script]::
+link:git-revert.html[git-revert]::
 	Revert an existing commit.
+	Previously this command was known as git-revert-script.
 
 link:git-shortlog.html[git-shortlog]::
 	Summarizes 'git log' output.
@@ -263,11 +291,13 @@
 link:git-show-branch.html[git-show-branch]::
 	Show branches and their commits.
 
-link:git-status-script.html[git-status-script]::
+link:git-status.html[git-status]::
 	Shows the working tree status.
+	Previously this command was known as git-status-script.
 
-link:git-verify-tag-script.html[git-verify-tag-script]::
+link:git-verify-tag.html[git-verify-tag]::
 	Check the GPG signature of tag.
+	Previously this command was known as git-verify-tag-script.
 
 link:git-whatchanged.html[git-whatchanged]::
 	Shows commit logs and differences they introduce.
@@ -280,29 +310,37 @@
 link:git-applypatch.html[git-applypatch]::
 	Apply one patch extracted from an e-mail.
 
-link:git-archimport-script.html[git-archimport-script]::
+link:git-archimport.html[git-archimport]::
 	Import an arch repository into git.
+	Previously this command was known as git-archimport-script.
 
-link:git-convert-cache.html[git-convert-cache]::
+link:git-convert-objects.html[git-convert-objects]::
 	Converts old-style GIT repository
+	Previously this command was known as git-convert-cache.
 
-link:git-cvsimport-script.html[git-cvsimport-script]::
+link:git-cvsimport.html[git-cvsimport]::
 	Salvage your data out of another SCM people love to hate.
+	Previously this command was known as git-cvsimport-script.
 
-link:git-merge-one-file-script.html[git-merge-one-file-script]::
-	The standard helper program to use with "git-merge-cache"
+link:git-merge-one-file.html[git-merge-one-file]::
+	The standard helper program to use with "git-merge-index"
+	Previously this command was known as git-merge-one-file-script.
 
-link:git-prune-script.html[git-prune-script]::
+link:git-prune.html[git-prune]::
 	Prunes all unreachable objects from the object database
+	Previously this command was known as git-prune-script.
 
-link:git-relink-script.html[git-relink-script]::
+link:git-relink.html[git-relink]::
 	Hardlink common objects in local repositories.
+	Previously this command was known as git-relink-script.
 
-link:git-sh-setup-script.html[git-sh-setup-script]::
+link:git-sh-setup.html[git-sh-setup]::
 	Common git shell script setup code.
+	Previously this command was known as git-sh-setup-script.
 
-link:git-tag-script.html[git-tag-script]::
+link:git-tag.html[git-tag]::
 	An example script to create a tag object signed with GPG
+	Previously this command was known as git-tag-script.
 
 
 Interrogators:
@@ -313,8 +351,9 @@
 link:git-cherry.html[git-cherry]::
 	Find commits not merged upstream.
 
-link:git-count-objects-script.html[git-count-objects-script]::
+link:git-count-objects.html[git-count-objects]::
 	Count unpacked number of objects and their disk consumption.
+	Previously this command was known as git-count-objects-script.
 
 link:git-daemon.html[git-daemon]::
 	A really simple server for GIT repositories.
@@ -334,17 +373,20 @@
 link:git-patch-id.html[git-patch-id]::
 	Compute unique ID for a patch.
 
-link:git-parse-remote-script.html[git-parse-remote-script]::
+link:git-parse-remote.html[git-parse-remote]::
 	Routines to help parsing $GIT_DIR/remotes/
+	Previously this command was known as git-parse-remote-script.
 
-link:git-request-pull-script.html[git-request-pull-script]::
-	git-request-pull-script.
+link:git-request-pull.html[git-request-pull]::
+	git-request-pull.
+	Previously this command was known as 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]::
+link:git-send-email.html[git-send-email]::
 	Send patch e-mails out of "format-patch --mbox" output.
+	Previously this command was known as git-send-email-script.
 
 link:git-show-rev-cache.html[git-show-rev-cache]::
 	Show the contents of a rev-cache file.
@@ -352,11 +394,13 @@
 Commands not yet documented
 ---------------------------
 
-link:git-diff-script.html[git-diff-script]::
-	git-diff-script.
+link:git-diff.html[git-diff]::
+	git-diff.
+	Previously this command was known as git-diff-script.
 
-link:git-format-patch-script.html[git-format-patch-script]::
-	git-format-patch-script.
+link:git-format-patch.html[git-format-patch]::
+	git-format-patch.
+	Previously this command was known as git-format-patch-script.
 
 link:git-stripspace.html[git-stripspace]::
 	git-stripspace.
@@ -473,7 +517,7 @@
 'GIT_DIFF_OPTS'::
 'GIT_EXTERNAL_DIFF'::
 	see the "generating patches" section in :
-	link:git-diff-cache.html[git-diff-cache];
+	link:git-diff-index.html[git-diff-index];
 	link:git-diff-files.html[git-diff-files];
 	link:git-diff-tree.html[git-diff-tree]
 
diff --git a/Documentation/hooks.txt b/Documentation/hooks.txt
index 45809ba..ca0efee 100644
--- a/Documentation/hooks.txt
+++ b/Documentation/hooks.txt
@@ -56,11 +56,11 @@
 pre-commit
 ----------
 
-This hook is invoked by `git-commit-script`, and can be bypassed
+This hook is invoked by `git-commit`, and can be bypassed
 with `--no-verify` option.  It takes no parameter, and is
 invoked before obtaining the proposed commit log message and
 making a commit.  Exiting with non-zero status from this script
-causes the `git-commit-script` to abort.
+causes the `git-commit` to abort.
 
 The default pre-commit hook, when enabled, catches introduction
 of lines with trailing whitespaces and aborts the commit when
@@ -69,10 +69,10 @@
 commit-msg
 ----------
 
-This hook is invoked by `git-commit-script`, and can be bypassed
+This hook is invoked by `git-commit`, and can be bypassed
 with `--no-verify` option.  It takes a single parameter, the
 name of the file that holds the proposed commit log message.
-Exiting with non-zero status causes the `git-commit-script` to
+Exiting with non-zero status causes the `git-commit` to
 abort.
 
 The hook is allowed to edit the message file in place, and can
@@ -86,11 +86,11 @@
 post-commit
 -----------
 
-This hook is invoked by `git-commit-script`.  It takes no
+This hook is invoked by `git-commit`.  It takes no
 parameter, and is invoked after a commit is made.
 
 This hook is meant primarily for notification, and cannot affect
-the outcome of `git-commit-script`.
+the outcome of `git-commit`.
 
 The default post-commit hook, when enabled, demonstrates how to
 send out a commit notification e-mail.
diff --git a/Documentation/howto/make-dist.txt b/Documentation/howto/make-dist.txt
index 132d5ec..00e330b 100644
--- a/Documentation/howto/make-dist.txt
+++ b/Documentation/howto/make-dist.txt
@@ -32,7 +32,7 @@
         stable="$1"
         last="$2"
         new="$3"
-        echo "# git-tag-script v$new"
+        echo "# git-tag v$new"
         echo "git-tar-tree v$new linux-$new | gzip -9 > ../linux-$new.tar.gz"
         echo "git-diff-tree -p v$stable v$new | gzip -9 > ../patch-$new.gz"
         echo "git-rev-list --pretty v$new ^v$last > ../ChangeLog-$new"
diff --git a/Documentation/howto/rebase-from-internal-branch.txt b/Documentation/howto/rebase-from-internal-branch.txt
index 4523b69..b2c021d 100644
--- a/Documentation/howto/rebase-from-internal-branch.txt
+++ b/Documentation/howto/rebase-from-internal-branch.txt
@@ -111,7 +111,7 @@
 
 This creates two files, 0001-XXXX.txt and 0002-XXXX.txt.  Send
 them out "To: " your project maintainer and "Cc: " your mailing
-list.  You could use contributed script git-send-email-script if
+list.  You could use contributed script git-send-email if
 your host has necessary perl modules for this, but your usual
 MUA would do as long as it does not corrupt whitespaces in the
 patch.
diff --git a/Documentation/howto/revert-branch-rebase.txt b/Documentation/howto/revert-branch-rebase.txt
index 1c9a368..e4cce5b 100644
--- a/Documentation/howto/revert-branch-rebase.txt
+++ b/Documentation/howto/revert-branch-rebase.txt
@@ -182,10 +182,10 @@
 ------------------------------------------------
 $ git show-branch --more=1 master pu rc
 ! [master] Revert "Replace zero-length array decls with []."
- ! [pu] git-repack-script: Add option to repack all objects.
+ ! [pu] git-repack: Add option to repack all objects.
   * [rc] Merge refs/heads/master from .
 ---
- +  [pu] git-repack-script: Add option to repack all objects.
+ +  [pu] git-repack: Add option to repack all objects.
  +  [pu~1] More documentation updates.
  +  [pu~2] Show commits in topo order and name all commits.
  +  [pu~3] mailinfo and applymbox updates
diff --git a/Documentation/tutorial.txt b/Documentation/tutorial.txt
index 8d999b0..c938bbc 100644
--- a/Documentation/tutorial.txt
+++ b/Documentation/tutorial.txt
@@ -126,7 +126,7 @@
  - commit that index file as an object.
 
 The first step is trivial: when you want to tell git about any changes
-to your working tree, you use the `git-update-cache` program. That
+to your working tree, you use the `git-update-index` program. That
 program normally just takes a list of filenames you want to update, but
 to avoid trivial mistakes, it refuses to add new entries to the cache
 (or remove existing ones) unless you explicitly tell it that you're
@@ -136,7 +136,7 @@
 So to populate the index with the two files you just created, you can do
 
 ------------------------------------------------
-git-update-cache --add hello example
+git-update-index --add hello example
 ------------------------------------------------
 
 and you have now told git to track those two files.
@@ -183,7 +183,7 @@
 Anyway, as we mentioned previously, you normally never actually take a
 look at the objects themselves, and typing long 40-character hex
 names is not something you'd normally want to do. The above digression
-was just to show that `git-update-cache` did something magical, and
+was just to show that `git-update-index` did something magical, and
 actually saved away the contents of your files into the git object
 database.
 
@@ -318,7 +318,7 @@
 Making a change
 ---------------
 
-Remember how we did the `git-update-cache` on file `hello` and then we
+Remember how we did the `git-update-index` on file `hello` and then we
 changed `hello` afterward, and could compare the new state of `hello` with the
 state we saved in the index file? 
 
@@ -333,18 +333,18 @@
 we'll still see the same difference we saw last time: the index file
 hasn't changed by the act of committing anything. However, now that we
 have committed something, we can also learn to use a new command:
-`git-diff-cache`.
+`git-diff-index`.
 
 Unlike `git-diff-files`, which showed the difference between the index
-file and the working tree, `git-diff-cache` shows the differences
+file and the working tree, `git-diff-index` shows the differences
 between a committed *tree* and either the index file or the working
-tree. In other words, `git-diff-cache` wants a tree to be diffed
+tree. In other words, `git-diff-index` wants a tree to be diffed
 against, and before we did the commit, we couldn't do that, because we
 didn't have anything to diff against. 
 
 But now we can do
 
-	git-diff-cache -p HEAD
+	git-diff-index -p HEAD
 
 (where `-p` has the same meaning as it did in `git-diff-files`), and it
 will show us the same difference, but for a totally different reason. 
@@ -359,16 +359,16 @@
 
 which ends up doing the above for you.
 
-In other words, `git-diff-cache` normally compares a tree against the
+In other words, `git-diff-index` normally compares a tree against the
 working tree, but when given the `\--cached` flag, it is told to
 instead compare against just the index cache contents, and ignore the
 current working tree state entirely. Since we just wrote the index
-file to HEAD, doing `git-diff-cache \--cached -p HEAD` should thus return
+file to HEAD, doing `git-diff-index \--cached -p HEAD` should thus return
 an empty set of differences, and that's exactly what it does. 
 
 [NOTE]
 ================
-`git-diff-cache` really always uses the index for its
+`git-diff-index` really always uses the index for its
 comparisons, and saying that it compares a tree against the working
 tree is thus not strictly accurate. In particular, the list of
 files to compare (the "meta-data") *always* comes from the index file,
@@ -391,7 +391,7 @@
 update the index cache:
 
 ------------------------------------------------
-git-update-cache hello
+git-update-index hello
 ------------------------------------------------
 
 (note how we didn't need the `\--add` flag this time, since git knew
@@ -399,9 +399,9 @@
 
 Note what happens to the different `git-diff-\*` versions here. After
 we've updated `hello` in the index, `git-diff-files -p` now shows no
-differences, but `git-diff-cache -p HEAD` still *does* show that the
+differences, but `git-diff-index -p HEAD` still *does* show that the
 current state is different from the state we committed. In fact, now
-`git-diff-cache` shows the same difference whether we use the `--cached`
+`git-diff-index` shows the same difference whether we use the `--cached`
 flag or not, since now the index is coherent with the working tree.
 
 Now, since we've updated `hello` in the index, we can commit the new
@@ -429,7 +429,7 @@
 looking at what `git commit` really does, feel free to investigate:
 it's a few very simple shell scripts to generate the helpful (?) commit
 message headers, and a few one-liners that actually do the
-commit itself (`git-commit-script`).
+commit itself (`git-commit`).
 
 
 Checking it out
@@ -490,11 +490,11 @@
 Most likely, you are not directly using the core
 git Plumbing commands, but using Porcelain like Cogito on top
 of it. Cogito works a bit differently and you usually do not
-have to run `git-update-cache` yourself for changed files (you
+have to run `git-update-index` yourself for changed files (you
 do tell underlying git about additions and removals via
 `cg-add` and `cg-rm` commands). Just before you make a commit
 with `cg-commit`, Cogito figures out which files you modified,
-and runs `git-update-cache` on them for you.
+and runs `git-update-index` on them for you.
 
 
 Tagging a version
@@ -579,7 +579,7 @@
 information for the files involved) will likely need to be refreshed.
 So after you do a `cp -a` to create a new copy, you'll want to do
 
-	git-update-cache --refresh
+	git-update-index --refresh
 +
 in the new repository to make sure that the index file is up-to-date.
 
@@ -591,16 +591,16 @@
 index cache when you do this, and especially with other peoples'
 repositories you often want to make sure that the index cache is in some
 known state (you don't know *what* they've done and not yet checked in),
-so usually you'll precede the `git-update-cache` with a
+so usually you'll precede the `git-update-index` with a
 
 	git-read-tree --reset HEAD
-	git-update-cache --refresh
+	git-update-index --refresh
 
 which will force a total index re-build from the tree pointed to by `HEAD`.
-It resets the index contents to `HEAD`, and then the `git-update-cache`
+It resets the index contents to `HEAD`, and then the `git-update-index`
 makes sure to match up all index entries with the checked-out files.
 If the original repository had uncommitted changes in its
-working tree, `git-update-cache --refresh` notices them and
+working tree, `git-update-index --refresh` notices them and
 tells you they need to be updated.
 
 The above can also be written as simply
@@ -610,7 +610,7 @@
 and in fact a lot of the common git command combinations can be scripted
 with the `git xyz` interfaces, and you can learn things by just looking
 at what the `git-*-script` scripts do (`git reset` is the above two lines
-implemented in `git-reset-script`, but some things like `git status` and
+implemented in `git-reset`, but some things like `git status` and
 `git commit` are slightly more complex scripts around the basic git
 commands). 
 
@@ -638,13 +638,13 @@
 actually have any of the working tree files to work on. To get
 those, you'd check them out with
 
-	git-checkout-cache -u -a
+	git-checkout-index -u -a
 
 where the `-u` flag means that you want the checkout to keep the index
 up-to-date (so that you don't have to refresh it afterward), and the
 `-a` flag means "check out all files" (if you have a stale copy or an
 older version of a checked out tree you may also need to add the `-f`
-flag first, to tell git-checkout-cache to *force* overwriting of any old
+flag first, to tell git-checkout-index to *force* overwriting of any old
 files). 
 
 Again, this can all be simplified with
@@ -742,7 +742,7 @@
 ------------------------------------------------
 
 Here, we just added another line to `hello`, and we used a shorthand for
-both going a `git-update-cache hello` and `git commit` by just giving the
+both going a `git-update-index hello` and `git commit` by just giving the
 filename directly to `git commit`. The `-m` flag is to give the
 commit log message from the command line.
 
@@ -971,7 +971,7 @@
 server like GIT Native transport does.  Any stock HTTP server
 would suffice.
 +
-There are (confusingly enough) `git-ssh-pull` and `git-ssh-push`
+There are (confusingly enough) `git-ssh-fetch` and `git-ssh-upload`
 programs, which are 'commit walkers'; they outlived their
 usefulness when GIT Native and SSH transports were introduced,
 and not used by `git pull` or `git push` scripts.
diff --git a/INSTALL b/INSTALL
index 43f2bb9..14580cc 100644
--- a/INSTALL
+++ b/INSTALL
@@ -18,7 +18,7 @@
    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-script"
+   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
@@ -41,8 +41,8 @@
 	  can avoid the bignum support by excising git-rev-list support
 	  for "--merge-order" (by hand).
 
-	- "libcurl" and "curl" executable.  git-http-pull and
-	  git-fetch-script use them.  If you do not use http
+	- "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.
 
diff --git a/Makefile b/Makefile
index 6dbffc2..18696fa 100644
--- a/Makefile
+++ b/Makefile
@@ -57,24 +57,21 @@
 
 ### --- END CONFIGURATION SECTION ---
 
+SCRIPT_SH = \
+	git-add.sh git-bisect.sh git-branch.sh git-checkout.sh \
+	git-cherry.sh git-clone.sh git-commit.sh \
+	git-count-objects.sh git-diff.sh git-fetch.sh \
+	git-format-patch.sh git-log.sh git-ls-remote.sh \
+	git-merge-one-file.sh git-octopus.sh git-parse-remote.sh \
+	git-prune.sh git-pull.sh git-push.sh git-rebase.sh \
+	git-repack.sh git-request-pull.sh git-reset.sh \
+	git-resolve.sh git-revert.sh git-sh-setup.sh git-status.sh \
+	git-tag.sh git-verify-tag.sh git-whatchanged.sh git.sh \
+	git-applymbox.sh git-applypatch.sh
 
-
-SCRIPTS=git git-merge-one-file-script git-prune-script \
-	git-pull-script git-tag-script git-resolve-script git-whatchanged \
-	git-fetch-script git-status-script git-commit-script \
-	git-log-script git-shortlog git-cvsimport-script git-diff-script \
-	git-reset-script git-add-script git-checkout-script git-clone-script \
-	gitk git-cherry git-rebase-script git-relink-script git-repack-script \
-	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-applymbox git-applypatch
-
-SCRIPTS += git-count-objects-script
-SCRIPTS += git-revert-script
-SCRIPTS += git-octopus-script
-SCRIPTS += git-archimport-script
+SCRIPT_PERL = \
+	git-archimport.perl git-cvsimport.perl git-relink.perl \
+	git-rename.perl git-send-email.perl git-shortlog.perl
 
 # The ones that do not have to link with lcrypto nor lz.
 SIMPLE_PROGRAMS = \
@@ -82,56 +79,50 @@
 	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 \
-	git-ls-tree git-merge-base git-merge-cache \
-	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-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-peek-remote git-show-branch \
-	git-update-server-info git-show-rev-cache git-build-rev-cache \
+PROGRAMS = \
+	git-apply git-build-rev-cache git-cat-file \
+	git-checkout-index git-clone-pack git-commit-tree \
+	git-convert-objects git-diff-files \
+	git-diff-helper git-diff-index git-diff-stages \
+	git-diff-tree git-export git-fetch-pack git-fsck-objects \
+	git-hash-object git-init-db \
+	git-local-fetch git-ls-files git-ls-tree git-merge-base \
+	git-merge-index git-mktag git-pack-objects git-patch-id \
+	git-peek-remote git-prune-packed git-read-tree \
+	git-receive-pack git-rev-list git-rev-parse \
+	git-rev-tree git-send-pack git-show-branch \
+	git-show-index git-show-rev-cache git-ssh-fetch \
+	git-ssh-upload git-tar-tree git-unpack-file \
+	git-unpack-objects git-update-index git-update-server-info \
+	git-upload-pack git-verify-pack git-write-tree \
 	$(SIMPLE_PROGRAMS)
 
 ifdef WITH_SEND_EMAIL
-SCRIPTS += git-send-email-script
+	SCRIPT_PERL += git-send-email.perl
 endif
 
 ifndef NO_CURL
-	PROG+= git-http-pull
+	PROGRAMS += git-http-fetch
 endif
 
 LIB_FILE=libgit.a
-LIB_H=cache.h object.h blob.h tree.h commit.h tag.h delta.h epoch.h csum-file.h \
-	pack.h pkt-line.h refs.h
-LIB_OBJS=read-cache.o sha1_file.o usage.o object.o commit.o tree.o blob.o \
-	 tag.o date.o index.o diff-delta.o patch-delta.o entry.o path.o \
-	 refs.o csum-file.o pack-check.o pkt-line.o connect.o ident.o \
-	 sha1_name.o setup.o
 
-LIB_H += rev-cache.h
-LIB_OBJS += rev-cache.o
+LIB_H = \
+	blob.h cache.h commit.h count-delta.h csum-file.h delta.h \
+	diff.h epoch.h object.h pack.h pkt-line.h quote.h refs.h \
+	rev-cache.h run-command.h strbuf.h tag.h tree.h
 
-LIB_H += run-command.h
-LIB_OBJS += run-command.o
+DIFF_OBJS = \
+	diff.o diffcore-break.o diffcore-order.o diffcore-pathspec.o \
+	diffcore-pickaxe.o diffcore-rename.o
 
-LIB_H += strbuf.h
-LIB_OBJS += strbuf.o
-
-LIB_H += quote.h
-LIB_OBJS += quote.o 
-
-LIB_H += diff.h count-delta.h
-DIFF_OBJS = diff.o diffcore-rename.o diffcore-pickaxe.o diffcore-pathspec.o \
-	diffcore-break.o diffcore-order.o
-LIB_OBJS += $(DIFF_OBJS) count-delta.o
-
-LIB_OBJS += gitenv.o
-LIB_OBJS += server-info.o
+LIB_OBJS = \
+	blob.o commit.o connect.o count-delta.o csum-file.o \
+	date.o diff-delta.o entry.o gitenv.o ident.o index.o \
+	object.o pack-check.o patch-delta.o path.o pkt-line.o \
+	quote.o read-cache.o refs.o rev-cache.o run-command.o \
+	server-info.o setup.o sha1_file.o sha1_name.o strbuf.o \
+	tag.o tree.o usage.o $(DIFF_OBJS)
 
 LIBS = $(LIB_FILE)
 LIBS += -lz
@@ -143,11 +134,11 @@
 
 ifndef NO_OPENSSL
 	LIB_OBJS += epoch.o
-	OPENSSL_LIBSSL=-lssl
+	OPENSSL_LIBSSL = -lssl
 else
 	DEFINES += '-DNO_OPENSSL'
-	MOZILLA_SHA1=1
-	OPENSSL_LIBSSL=
+	MOZILLA_SHA1 = 1
+	OPENSSL_LIBSSL =
 endif
 ifdef NEEDS_SSL_WITH_CRYPTO
 	LIB_4_CRYPTO = -lcrypto -lssl
@@ -160,25 +151,25 @@
 	LIB_4_ICONV =
 endif
 ifdef MOZILLA_SHA1
-	SHA1_HEADER="mozilla-sha1/sha1.h"
+	SHA1_HEADER = "mozilla-sha1/sha1.h"
 	LIB_OBJS += mozilla-sha1/sha1.o
 else
 	ifdef PPC_SHA1
-		SHA1_HEADER="ppc/sha1.h"
+		SHA1_HEADER = "ppc/sha1.h"
 		LIB_OBJS += ppc/sha1.o ppc/sha1ppc.o
 	else
-		SHA1_HEADER=<openssl/sha.h>
+		SHA1_HEADER = <openssl/sha.h>
 		LIBS += $(LIB_4_CRYPTO)
 	endif
 endif
 
 DEFINES += '-DSHA1_HEADER=$(SHA1_HEADER)'
 
-
+SCRIPTS = $(SCRIPT_SH) $(SCRIPT_PERL) gitk
 
 ### Build rules
 
-all: $(PROG)
+all: $(PROGRAMS)
 
 all:
 	$(MAKE) -C templates
@@ -196,12 +187,12 @@
 $(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
-git-ssh-push: rsh.o
+git-http-fetch: fetch.o
+git-local-fetch: fetch.o
+git-ssh-fetch: rsh.o fetch.o
+git-ssh-upload: rsh.o
 
-git-http-pull: LIBS += -lcurl
+git-http-fetch: LIBS += -lcurl
 git-rev-list: LIBS += $(OPENSSL_LIBSSL)
 
 init-db.o: init-db.c
@@ -209,7 +200,7 @@
 		-DDEFAULT_GIT_TEMPLATE_DIR='"$(template_dir)"' $*.c
 
 $(LIB_OBJS): $(LIB_H)
-$(patsubst git-%,%.o,$(PROG)): $(LIB_H)
+$(patsubst git-%,%.o,$(PROGRAMS)): $(LIB_H)
 $(DIFF_OBJS): diffcore.h
 
 $(LIB_FILE): $(LIB_OBJS)
@@ -219,7 +210,6 @@
 	$(MAKE) -C Documentation all
 
 
-
 ### Testing rules
 
 test: all
@@ -238,10 +228,22 @@
 
 ### Installation rules
 
-install: $(PROG) $(SCRIPTS)
+install: $(PROGRAMS) $(SCRIPTS)
 	$(INSTALL) -m755 -d $(DESTDIR)$(bindir)
-	$(INSTALL) $(PROG) $(SCRIPTS) $(DESTDIR)$(bindir)
-	$(INSTALL) git-revert-script $(DESTDIR)$(bindir)/git-cherry-pick-script
+	$(INSTALL) $(PROGRAMS) $(DESTDIR)$(bindir)
+	@for s in $(SCRIPTS); \
+	do \
+		case "$$s" in \
+		*.*) \
+			e=`expr "$$s" : '\(.*\)\.[^.]*$$'` ;; \
+		*) \
+			e="$$s" ;; \
+		esac && \
+		echo ": install $$s $(DESTDIR)$(bindir)/$$e" && \
+		$(INSTALL) $$s $(DESTDIR)$(bindir)/$$e || exit; \
+	done
+	$(INSTALL) git-revert.sh $(DESTDIR)$(bindir)/git-cherry-pick
+	sh ./cmd-rename.sh $(DESTDIR)$(bindir)
 	$(MAKE) -C templates install
 
 install-doc:
@@ -276,7 +278,7 @@
 ### Cleaning rules
 
 clean:
-	rm -f *.o mozilla-sha1/*.o ppc/*.o $(PROG) $(LIB_FILE)
+	rm -f *.o mozilla-sha1/*.o ppc/*.o $(PROGRAMS) $(LIB_FILE)
 	rm -f git-core.spec
 	rm -rf $(GIT_TARNAME)
 	rm -f $(GIT_TARNAME).tar.gz git-core_$(GIT_VERSION)-*.tar.gz
diff --git a/README b/README
index 62c3b0c..6b38a7a 100644
--- a/README
+++ b/README
@@ -81,7 +81,7 @@
 
 The structured objects can further have their structure and
 connectivity to other objects verified. This is generally done with
-the `git-fsck-cache` program, which generates a full dependency graph
+the `git-fsck-objects` program, which generates a full dependency graph
 of all objects, and verifies their internal consistency (in addition
 to just verifying their superficial consistency through the hash).
 
@@ -104,7 +104,7 @@
 directory tree, and renaming a file does not change the object that
 file is associated with in any way.
 
-A blob is typically created when link:git-update-cache.html[git-update-cache]
+A blob is typically created when link:git-update-index.html[git-update-index]
 is run, and its data can be accessed by link:git-cat-file.html[git-cat-file].
 
 Tree Object
@@ -218,7 +218,7 @@
 A tag is created with link:git-mktag.html[git-mktag],
 its data can be accessed by link:git-cat-file.html[git-cat-file],
 and the signature can be verified by
-link:git-verify-tag-script.html[git-verify-tag].
+link:git-verify-tag.html[git-verify-tag].
 
 
 The "index" aka "Current Directory Cache"
@@ -286,11 +286,11 @@
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
 You update the index with information from the working directory with
-the link:git-update-cache.html[git-update-cache] command.  You
+the link:git-update-index.html[git-update-index] command.  You
 generally update the index information by just specifying the filename
 you want to update, like so:
 
-	git-update-cache filename
+	git-update-index filename
 
 but to avoid common mistakes with filename globbing etc, the command
 will not normally add totally new entries or remove old entries,
@@ -307,7 +307,7 @@
 considering a removed file to be a valid thing, and if the file really
 does not exist any more, it will update the index accordingly.
 
-As a special case, you can also do `git-update-cache --refresh`, which
+As a special case, you can also do `git-update-index --refresh`, which
 will refresh the "stat" information of each index to match the current
 stat information. It will 'not' update the object status itself, and
 it will only update the fields that are used to quickly test whether
@@ -347,18 +347,18 @@
 files. This is not a very common operation, since normally you'd just
 keep your files updated, and rather than write to your working
 directory, you'd tell the index files about the changes in your
-working directory (i.e. `git-update-cache`).
+working directory (i.e. `git-update-index`).
 
 However, if you decide to jump to a new version, or check out somebody
 else's version, or just restore a previous tree, you'd populate your
 index file with read-tree, and then you need to check out the result
 with
 
-		git-checkout-cache filename
+		git-checkout-index filename
 
 or, if you want to check out all of the index, use `-a`.
 
-NOTE! git-checkout-cache normally refuses to overwrite old files, so
+NOTE! git-checkout-index normally refuses to overwrite old files, so
 if you have an old version of the tree already checked out, you will
 need to use the "-f" flag ('before' the "-a" flag or the filename) to
 'force' the checkout.
@@ -530,17 +530,17 @@
 merge result for this file is by:
 
 	mv -f hello.c~2 hello.c
-	git-update-cache hello.c
+	git-update-index hello.c
 
-When a path is in unmerged state, running `git-update-cache` for
+When a path is in unmerged state, running `git-update-index` for
 that path tells git to mark the path resolved.
 
 The above is the description of a git merge at the lowest level,
 to help you understand what conceptually happens under the hood.
 In practice, nobody, not even git itself, uses three `git-cat-file`
-for this.  There is `git-merge-cache` program that extracts the
+for this.  There is `git-merge-index` program that extracts the
 stages to temporary files and calls a `merge` script on it
 
-	git-merge-cache git-merge-one-file-script hello.c
+	git-merge-index git-merge-one-file hello.c
 
 and that is what higher level `git resolve` is implemented with.
diff --git a/checkout-cache.c b/checkout-index.c
similarity index 89%
rename from checkout-cache.c
rename to checkout-index.c
index 31ff577..f32513c 100644
--- a/checkout-cache.c
+++ b/checkout-index.c
@@ -5,22 +5,22 @@
  *
  * Careful: order of argument flags does matter. For example,
  *
- *	git-checkout-cache -a -f file.c
+ *	git-checkout-index -a -f file.c
  *
  * Will first check out all files listed in the cache (but not
  * overwrite any old ones), and then force-checkout "file.c" a
  * second time (ie that one _will_ overwrite any old contents
  * with the same filename).
  *
- * Also, just doing "git-checkout-cache" does nothing. You probably
- * meant "git-checkout-cache -a". And if you want to force it, you
- * want "git-checkout-cache -f -a".
+ * Also, just doing "git-checkout-index" does nothing. You probably
+ * meant "git-checkout-index -a". And if you want to force it, you
+ * want "git-checkout-index -f -a".
  *
  * Intuitiveness is not the goal here. Repeatability is. The
  * reason for the "no arguments means no work" thing is that
  * from scripts you are supposed to be able to do things like
  *
- *	find . -name '*.h' -print0 | xargs -0 git-checkout-cache -f --
+ *	find . -name '*.h' -print0 | xargs -0 git-checkout-index -f --
  *
  * which will force all existing *.h files to be replaced with
  * their cached copies. If an empty command line implied "all",
@@ -50,7 +50,7 @@
 		if (!state.quiet) {
 			pos = -pos - 1;
 			fprintf(stderr,
-				"git-checkout-cache: %s is %s.\n",
+				"git-checkout-index: %s is %s.\n",
 				name,
 				(pos < active_nr &&
 				 !strcmp(active_cache[pos]->name, name)) ?
@@ -76,7 +76,7 @@
 }
 
 static const char checkout_cache_usage[] =
-"git-checkout-cache [-u] [-q] [-a] [-f] [-n] [--prefix=<string>] [--] <file>...";
+"git-checkout-index [-u] [-q] [-a] [-f] [-n] [--prefix=<string>] [--] <file>...";
 
 static struct cache_file cache_file;
 
diff --git a/cmd-rename.sh b/cmd-rename.sh
new file mode 100755
index 0000000..1edb037
--- /dev/null
+++ b/cmd-rename.sh
@@ -0,0 +1,53 @@
+#!/bin/sh
+d="$1"
+test -d "$d" || exit
+while read old new
+do
+	rm -f "$d/$old"
+	ln -s "$new" "$d/$old"
+done <<\EOF
+git-add-script	git-add
+git-archimport-script	git-archimport
+git-bisect-script	git-bisect
+git-branch-script	git-branch
+git-checkout-script	git-checkout
+git-cherry-pick-script	git-cherry-pick
+git-clone-script	git-clone
+git-commit-script	git-commit
+git-count-objects-script	git-count-objects
+git-cvsimport-script	git-cvsimport
+git-diff-script	git-diff
+git-send-email-script	git-send-email
+git-fetch-script	git-fetch
+git-format-patch-script	git-format-patch
+git-log-script	git-log
+git-ls-remote-script	git-ls-remote
+git-merge-one-file-script	git-merge-one-file
+git-octopus-script	git-octopus
+git-parse-remote-script	git-parse-remote
+git-prune-script	git-prune
+git-pull-script	git-pull
+git-push-script	git-push
+git-rebase-script	git-rebase
+git-relink-script	git-relink
+git-rename-script	git-rename
+git-repack-script	git-repack
+git-request-pull-script	git-request-pull
+git-reset-script	git-reset
+git-resolve-script	git-resolve
+git-revert-script	git-revert
+git-sh-setup-script	git-sh-setup
+git-status-script	git-status
+git-tag-script	git-tag
+git-verify-tag-script	git-verify-tag
+git-http-pull	git-http-fetch
+git-local-pull	git-local-fetch
+git-ssh-pull	git-ssh-fetch
+git-checkout-cache	git-checkout-index
+git-diff-cache	git-diff-index
+git-merge-cache	git-merge-index
+git-update-cache	git-update-index
+git-ssh-push	git-ssh-upload
+git-convert-cache	git-convert-objects
+git-fsck-cache	git-fsck-objects
+EOF
diff --git a/convert-cache.c b/convert-objects.c
similarity index 99%
rename from convert-cache.c
rename to convert-objects.c
index 95f0302..9ad0c77 100644
--- a/convert-cache.c
+++ b/convert-objects.c
@@ -318,7 +318,7 @@
 	struct entry *entry;
 
 	if (argc != 2 || get_sha1(argv[1], sha1))
-		usage("git-convert-cache <sha1>");
+		usage("git-convert-objects <sha1>");
 
 	entry = convert_entry(sha1);
 	printf("new sha1: %s\n", sha1_to_hex(entry->new_sha1));
diff --git a/debian/changelog b/debian/changelog
index f3cf358..9ea9e52 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -6,7 +6,7 @@
 
 git-core (0.99.5-1) unstable; urgency=low
 
-  * Enable git-send-email-script on Debian.  There is no reason to shy
+  * Enable git-send-email on Debian.  There is no reason to shy
     away from it, since we have the necessary Perl modules available.
 
  -- Junio C Hamano <junkio@cox.net>  Thu, 25 Aug 2005 14:16:59 -0700
diff --git a/diff-cache.c b/diff-index.c
similarity index 99%
rename from diff-cache.c
rename to diff-index.c
index 400a4cb..bc41d54 100644
--- a/diff-cache.c
+++ b/diff-index.c
@@ -164,7 +164,7 @@
 }
 
 static const char diff_cache_usage[] =
-"git-diff-cache [-m] [--cached] "
+"git-diff-index [-m] [--cached] "
 "[<common diff options>] <tree-ish> [<path>...]"
 COMMON_DIFF_OPTIONS_HELP;
 
diff --git a/entry.c b/entry.c
index 15b8fda..b8426db 100644
--- a/entry.c
+++ b/entry.c
@@ -76,7 +76,7 @@
 	if (!new || strcmp(type, "blob")) {
 		if (new)
 			free(new);
-		return error("git-checkout-cache: unable to read sha1 file of %s (%s)",
+		return error("git-checkout-index: unable to read sha1 file of %s (%s)",
 			path, sha1_to_hex(ce->sha1));
 	}
 	switch (ntohl(ce->ce_mode) & S_IFMT) {
@@ -84,28 +84,28 @@
 		fd = create_file(path, ntohl(ce->ce_mode));
 		if (fd < 0) {
 			free(new);
-			return error("git-checkout-cache: unable to create file %s (%s)",
+			return error("git-checkout-index: unable to create file %s (%s)",
 				path, strerror(errno));
 		}
 		wrote = write(fd, new, size);
 		close(fd);
 		free(new);
 		if (wrote != size)
-			return error("git-checkout-cache: unable to write file %s", path);
+			return error("git-checkout-index: unable to write file %s", path);
 		break;
 	case S_IFLNK:
 		memcpy(target, new, size);
 		target[size] = '\0';
 		if (symlink(target, path)) {
 			free(new);
-			return error("git-checkout-cache: unable to create symlink %s (%s)",
+			return error("git-checkout-index: unable to create symlink %s (%s)",
 				path, strerror(errno));
 		}
 		free(new);
 		break;
 	default:
 		free(new);
-		return error("git-checkout-cache: unknown file mode for %s", path);
+		return error("git-checkout-index: unknown file mode for %s", path);
 	}
 
 	if (state->refresh_cache) {
@@ -131,7 +131,7 @@
 			return 0;
 		if (!state->force) {
 			if (!state->quiet)
-				fprintf(stderr, "git-checkout-cache: %s already exists\n", path);
+				fprintf(stderr, "git-checkout-index: %s already exists\n", path);
 			return 0;
 		}
 
diff --git a/pull.c b/fetch.c
similarity index 99%
rename from pull.c
rename to fetch.c
index ff55044..e874538 100644
--- a/pull.c
+++ b/fetch.c
@@ -1,4 +1,4 @@
-#include "pull.h"
+#include "fetch.h"
 
 #include "cache.h"
 #include "commit.h"
diff --git a/pull.h b/fetch.h
similarity index 100%
rename from pull.h
rename to fetch.h
diff --git a/fsck-cache.c b/fsck-objects.c
similarity index 96%
rename from fsck-cache.c
rename to fsck-objects.c
index e53d01a..43d188a 100644
--- a/fsck-cache.c
+++ b/fsck-objects.c
@@ -162,28 +162,28 @@
 
 	retval = 0;
 	if (has_full_path) {
-		fprintf(stderr, "warning: git-fsck-cache: tree %s "
+		fprintf(stderr, "warning: git-fsck-objects: tree %s "
 			"has full pathnames in it\n", 
 			sha1_to_hex(item->object.sha1));
 	}
 	if (has_zero_pad) {
-		fprintf(stderr, "warning: git-fsck-cache: tree %s "
+		fprintf(stderr, "warning: git-fsck-objects: tree %s "
 			"has zero-padded file modes in it\n",
 			sha1_to_hex(item->object.sha1));
 	}
 	if (has_bad_modes) {
-		fprintf(stderr, "warning: git-fsck-cache: tree %s "
+		fprintf(stderr, "warning: git-fsck-objects: tree %s "
 			"has bad file modes in it\n",
 			sha1_to_hex(item->object.sha1));
 	}
 	if (has_dup_entries) {
-		fprintf(stderr, "error: git-fsck-cache: tree %s "
+		fprintf(stderr, "error: git-fsck-objects: tree %s "
 			"has duplicate file entries\n",
 			sha1_to_hex(item->object.sha1));
 		retval = -1;
 	}
 	if (not_properly_sorted) {
-		fprintf(stderr, "error: git-fsck-cache: tree %s "
+		fprintf(stderr, "error: git-fsck-objects: tree %s "
 			"is not properly sorted\n",
 			sha1_to_hex(item->object.sha1));
 		retval = -1;
@@ -448,7 +448,7 @@
 			continue;
 		}
 		if (*arg == '-')
-			usage("git-fsck-cache [--tags] [--root] [[--unreachable] [--cache] [--standalone | --full] [--strict] <head-sha1>*]");
+			usage("git-fsck-objects [--tags] [--root] [[--unreachable] [--cache] [--standalone | --full] [--strict] <head-sha1>*]");
 	}
 
 	if (standalone && check_full)
diff --git a/git b/git
deleted file mode 100755
index 476aeec..0000000
--- a/git
+++ /dev/null
@@ -1,20 +0,0 @@
-#!/bin/sh
-
-cmd=
-path=$(dirname $0)
-case "$#" in
-0)	;;
-*)	cmd="$1"
-	shift
-	test -x $path/git-$cmd-script && exec $path/git-$cmd-script "$@"
-	test -x $path/git-$cmd && exec $path/git-$cmd "$@" ;;
-esac
-
-echo "Usage: git COMMAND [OPTIONS] [TARGET]"
-if [ -n "$cmd" ]; then
-    echo " git command '$cmd' not found: commands are:"
-else
-    echo " git commands are:"
-fi
-
-ls $path | sed -ne 's/^git-\(.*\)-script/  \1/p' | fmt
diff --git a/git-add-script b/git-add-script
deleted file mode 100755
index 61ec040..0000000
--- a/git-add-script
+++ /dev/null
@@ -1,2 +0,0 @@
-#!/bin/sh
-git-update-cache --add -- "$@"
diff --git a/git-add.sh b/git-add.sh
new file mode 100755
index 0000000..7d91eeb
--- /dev/null
+++ b/git-add.sh
@@ -0,0 +1,2 @@
+#!/bin/sh
+git-update-index --add -- "$@"
diff --git a/git-applymbox b/git-applymbox.sh
similarity index 95%
rename from git-applymbox
rename to git-applymbox.sh
index e58bb21..e2bfd02 100755
--- a/git-applymbox
+++ b/git-applymbox.sh
@@ -18,7 +18,7 @@
 ## use a Signoff_file, because applypatch wants to append the sign-off
 ## message to msg-clean every time it is run.
 
-. git-sh-setup-script || die "Not a git archive"
+. git-sh-setup || die "Not a git archive"
 
 usage () {
     echo >&2 "applymbox [-u] [-k] [-q] (-c .dotest/<num> | mbox) [signoff]"
@@ -47,7 +47,7 @@
 	shift
 esac
 
-files=$(git-diff-cache --cached --name-only HEAD) || exit
+files=$(git-diff-index --cached --name-only HEAD) || exit
 if [ "$files" ]; then
    echo "Dirty index: cannot apply patches (dirty: $files)" >&2
    exit 1
diff --git a/git-applypatch b/git-applypatch.sh
similarity index 97%
rename from git-applypatch
rename to git-applypatch.sh
index e5bc3c0..fd594ed 100755
--- a/git-applypatch
+++ b/git-applypatch.sh
@@ -10,7 +10,7 @@
 ##	$3 - "info" file with Author, email and subject
 ##	$4 - optional file containing signoff to add
 ##
-. git-sh-setup-script || die "Not a git archive."
+. git-sh-setup || die "Not a git archive."
 
 final=.dotest/final-commit
 ##
diff --git a/git-archimport-script b/git-archimport.perl
similarity index 95%
rename from git-archimport-script
rename to git-archimport.perl
index 8f475fd..e9e6f1b 100755
--- a/git-archimport-script
+++ b/git-archimport.perl
@@ -8,7 +8,7 @@
 #
 =head1 Invocation
 
-    git-archimport-script -i <archive>/<branch> [<archive>/<branch>]
+    git-archimport -i <archive>/<branch> [<archive>/<branch>]
     [ <archive>/<branch> ]
 
     The script expects you to provide the key roots where it can start the
@@ -268,16 +268,16 @@
     # imports don't give us good info
     # on added files. Shame on them
     if ($ps->{type} eq 'i' || $ps->{type} eq 't') { 
-        `find . -type f -print0 | grep -zv '^./.git' | xargs -0 -l100 git-update-cache --add`;
-        `git-ls-files --deleted -z | xargs --no-run-if-empty -0 -l100 git-update-cache --remove`; 
+        `find . -type f -print0 | grep -zv '^./.git' | xargs -0 -l100 git-update-index --add`;
+        `git-ls-files --deleted -z | xargs --no-run-if-empty -0 -l100 git-update-index --remove`;
     }
 
     if (@$add) {
         while (@$add) {
             my @slice = splice(@$add, 0, 100);
             my $slice = join(' ', @slice);          
-            `git-update-cache --add $slice`;
-            die "Error in git-update-cache --add: $!" if $?;
+            `git-update-index --add $slice`;
+            die "Error in git-update-index --add: $!" if $?;
         }
     }
     if (@$del) {
@@ -287,8 +287,8 @@
         while (@$del) {
             my @slice = splice(@$del, 0, 100);
             my $slice = join(' ', @slice);
-            `git-update-cache --remove $slice`;
-            die "Error in git-update-cache --remove: $!" if $?;
+            `git-update-index --remove $slice`;
+            die "Error in git-update-index --remove: $!" if $?;
         }
     }
     if (@$ren) {                # renamed
@@ -306,10 +306,10 @@
             #print "moving $from $to";
             `mv $from $to`;
             die "Error renaming $from $to : $!" if $?;
-            `git-update-cache --remove $from`;
-            die "Error in git-update-cache --remove: $!" if $?;
-            `git-update-cache --add $to`;
-            die "Error in git-update-cache --add: $!" if $?;
+            `git-update-index --remove $from`;
+            die "Error in git-update-index --remove: $!" if $?;
+            `git-update-index --add $to`;
+            die "Error in git-update-index --add: $!" if $?;
         }
 
     }
@@ -317,12 +317,12 @@
         while (@$mod) {
             my @slice = splice(@$mod, 0, 100);
             my $slice = join(' ', @slice);
-            `git-update-cache $slice`;
-            die "Error in git-update-cache: $!" if $?;
+            `git-update-index $slice`;
+            die "Error in git-update-index: $!" if $?;
         }
     }
 
-    # warn "errors when running git-update-cache! $!";
+    # warn "errors when running git-update-index! $!";
     $tree = `git-write-tree`;
     die "cannot write tree $!" if $?;
     chomp $tree;
diff --git a/git-bisect-script b/git-bisect.sh
similarity index 98%
rename from git-bisect-script
rename to git-bisect.sh
index e5a4670..605d58a 100755
--- a/git-bisect-script
+++ b/git-bisect.sh
@@ -1,5 +1,5 @@
 #!/bin/sh
-. git-sh-setup-script || dir "Not a git archive"
+. git-sh-setup || dir "Not a git archive"
 
 usage() {
     echo >&2 'usage: git bisect [start|bad|good|next|reset|visualize]
diff --git a/git-branch-script b/git-branch.sh
similarity index 90%
rename from git-branch-script
rename to git-branch.sh
index 0ecbd23..145a7b7 100755
--- a/git-branch-script
+++ b/git-branch.sh
@@ -1,6 +1,6 @@
 #!/bin/sh
 
-. git-sh-setup-script || die "Not a git archive"
+. git-sh-setup || die "Not a git archive"
 
 case "$#" in
 0)
diff --git a/git-checkout-script b/git-checkout.sh
similarity index 94%
rename from git-checkout-script
rename to git-checkout.sh
index b31ded7..4e7c57a 100755
--- a/git-checkout-script
+++ b/git-checkout.sh
@@ -1,5 +1,5 @@
 #!/bin/sh
-. git-sh-setup-script || die "Not a git archive"
+. git-sh-setup || die "Not a git archive"
 
 old=$(git-rev-parse HEAD)
 new=
@@ -53,7 +53,7 @@
 if [ "$force" ]
 then
     git-read-tree --reset $new &&
-	git-checkout-cache -q -f -u -a
+	git-checkout-index -q -f -u -a
 else
     git-read-tree -m -u $old $new
 fi
diff --git a/git-cherry b/git-cherry.sh
similarity index 96%
rename from git-cherry
rename to git-cherry.sh
index fe8c109..aad2e61 100755
--- a/git-cherry
+++ b/git-cherry.sh
@@ -3,7 +3,7 @@
 # Copyright (c) 2005 Junio C Hamano.
 #
 
-. git-sh-setup-script || die "Not a git archive."
+. git-sh-setup || die "Not a git archive."
 
 usage="usage: $0 "'[-v] <upstream> [<head>]
 
diff --git a/git-clone-script b/git-clone.sh
similarity index 97%
rename from git-clone-script
rename to git-clone.sh
index 0848a5d..c076292 100755
--- a/git-clone-script
+++ b/git-clone.sh
@@ -50,7 +50,7 @@
 	while read sha1 refname
 	do
 		name=`expr "$refname" : 'refs/\(.*\)'` &&
-		git-http-pull -v -a -w "$name" "$name" "$1/" || exit 1
+		git-http-fetch -v -a -w "$name" "$name" "$1/" || exit 1
 	done <"$clone_tmp/refs"
 	rm -fr "$clone_tmp"
 }
diff --git a/git-commit-script b/git-commit.sh
similarity index 95%
rename from git-commit-script
rename to git-commit.sh
index a2455b0..741444a 100755
--- a/git-commit-script
+++ b/git-commit.sh
@@ -3,7 +3,7 @@
 # Copyright (c) 2005 Linus Torvalds
 #
 
-. git-sh-setup-script || die "Not a git archive"
+. git-sh-setup || die "Not a git archive"
 
 usage () {
 	die 'git commit [-a] [-v | --no-verify]  [-m <message>] [-F <logfile>] [(-C|-c) <commit>] [<path>...]'
@@ -94,16 +94,16 @@
 case "$all,$#" in
 t,*)
 	git-diff-files --name-only -z |
-	xargs -0 git-update-cache -q --remove --
+	xargs -0 git-update-index -q --remove --
 	;;
 ,0)
 	;;
 *)
 	git-diff-files --name-only -z "$@" |
-	xargs -0 git-update-cache -q --remove --
+	xargs -0 git-update-index -q --remove --
 	;;
 esac || exit 1
-git-update-cache -q --refresh || exit 1
+git-update-index -q --refresh || exit 1
 
 case "$verify" in
 t)
@@ -190,11 +190,11 @@
 		export GIT_AUTHOR_DATE
 	fi
 fi
-git-status-script >>.editmsg
+git-status >>.editmsg
 if [ "$?" != "0" -a ! -f $GIT_DIR/MERGE_HEAD ]
 then
 	rm -f .editmsg
-	git-status-script
+	git-status
 	exit 1
 fi
 case "$no_edit" in
diff --git a/git-count-objects-script b/git-count-objects.sh
similarity index 93%
rename from git-count-objects-script
rename to git-count-objects.sh
index 86432db..74ee4f3 100755
--- a/git-count-objects-script
+++ b/git-count-objects.sh
@@ -1,6 +1,6 @@
 #!/bin/sh
 
-. git-sh-setup-script
+. git-sh-setup
 
 echo $(find "$GIT_DIR/objects"/?? -type f -print | wc -l) objects, \
 $({
diff --git a/git-cvsimport-script b/git-cvsimport.perl
similarity index 99%
rename from git-cvsimport-script
rename to git-cvsimport.perl
index 5079c79..565f4f1 100755
--- a/git-cvsimport-script
+++ b/git-cvsimport.perl
@@ -522,7 +522,7 @@
 			@o2 = @old;
 			@old = ();
 		}
-		system("git-update-cache","--force-remove","--",@o2);
+		system("git-update-index","--force-remove","--",@o2);
 		die "Cannot remove files: $?\n" if $?;
 	}
 	while(@new) {
@@ -533,7 +533,7 @@
 			@n2 = @new;
 			@new = ();
 		}
-		system("git-update-cache","--add",
+		system("git-update-index","--add",
 			(map { ('--cacheinfo', @$_) } @n2));
 		die "Cannot add files: $?\n" if $?;
 	}
diff --git a/git-diff-script b/git-diff.sh
similarity index 93%
rename from git-diff-script
rename to git-diff.sh
index a285a2a..9732c8a 100755
--- a/git-diff-script
+++ b/git-diff.sh
@@ -22,7 +22,7 @@
 	cmd="git-diff-tree $flags $rev $files"
 	;;
 ?*' ')
-	cmd="git-diff-cache $flags $rev $files"
+	cmd="git-diff-index $flags $rev $files"
 	;;
 '')
 	cmd="git-diff-files $flags $files"
diff --git a/git-fetch-script b/git-fetch.sh
similarity index 97%
rename from git-fetch-script
rename to git-fetch.sh
index f9f90b6..4928cd5 100755
--- a/git-fetch-script
+++ b/git-fetch.sh
@@ -1,7 +1,7 @@
 #!/bin/sh
 #
-. git-sh-setup-script || die "Not a git archive"
-. git-parse-remote-script
+. git-sh-setup || die "Not a git archive"
+. git-parse-remote
 _x40='[0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f]'
 _x40="$_x40$_x40$_x40$_x40$_x40$_x40$_x40$_x40"
 
@@ -178,7 +178,7 @@
 	expr "$head" : "$_x40\$" >/dev/null ||
 		die "Failed to fetch $remote_name from $remote"
 	echo Fetching "$remote_name from $remote" using http
-	git-http-pull -v -a "$head" "$remote/" || exit
+	git-http-fetch -v -a "$head" "$remote/" || exit
 	;;
     rsync://*)
 	TMP_HEAD="$GIT_DIR/TMP_HEAD"
diff --git a/git-format-patch-script b/git-format-patch.sh
similarity index 98%
rename from git-format-patch-script
rename to git-format-patch.sh
index 9b13b88..cfba1de 100755
--- a/git-format-patch-script
+++ b/git-format-patch.sh
@@ -3,7 +3,7 @@
 # Copyright (c) 2005 Junio C Hamano
 #
 
-. git-sh-setup-script || die "Not a git archive."
+. git-sh-setup || die "Not a git archive."
 
 usage () {
     echo >&2 "usage: $0"' [-n] [-o dir] [--keep-subject] [--mbox] [--check] [--signoff] [-<diff options>...] upstream [ our-head ]
diff --git a/git-log-script b/git-log.sh
similarity index 100%
rename from git-log-script
rename to git-log.sh
diff --git a/git-ls-remote-script b/git-ls-remote.sh
similarity index 94%
rename from git-ls-remote-script
rename to git-ls-remote.sh
index 061a231..604c5f5 100755
--- a/git-ls-remote-script
+++ b/git-ls-remote.sh
@@ -1,6 +1,6 @@
 #!/bin/sh
 #
-. git-sh-setup-script || die "Not a git archive"
+. git-sh-setup || die "Not a git archive"
 
 usage () {
     echo >&2 "usage: $0 [--heads] [--tags] <repository> <refs>..."
@@ -29,7 +29,7 @@
 ,,,) heads=heads tags=tags other=other ;;
 esac
 
-. git-parse-remote-script
+. git-parse-remote
 peek_repo="$(get_remote_url "$@")"
 shift
 
diff --git a/git-merge-one-file-script b/git-merge-one-file.sh
similarity index 81%
rename from git-merge-one-file-script
rename to git-merge-one-file.sh
index b791107..5419e59 100755
--- a/git-merge-one-file-script
+++ b/git-merge-one-file.sh
@@ -27,7 +27,7 @@
 	if test -f "$4"; then
 		rm -f -- "$4"
 	fi &&
-		exec git-update-cache --remove -- "$4"
+		exec git-update-index --remove -- "$4"
 	;;
 
 #
@@ -35,8 +35,8 @@
 #
 ".$2." | "..$3" )
 	echo "Adding $4"
-	git-update-cache --add --cacheinfo "$6$7" "$2$3" "$4" &&
-		exec git-checkout-cache -u -f -- "$4"
+	git-update-index --add --cacheinfo "$6$7" "$2$3" "$4" &&
+		exec git-checkout-index -u -f -- "$4"
 	;;
 
 #
@@ -49,8 +49,8 @@
 		exit 1
 	fi
 	echo "Adding $4"
-	git-update-cache --add --cacheinfo "$6" "$2" "$4" &&
-		exec git-checkout-cache -u -f -- "$4"
+	git-update-index --add --cacheinfo "$6" "$2" "$4" &&
+		exec git-checkout-index -u -f -- "$4"
 	;;
 
 #
@@ -63,8 +63,8 @@
 
 	# We reset the index to the first branch, making
 	# git-diff-file useful
-	git-update-cache --add --cacheinfo "$6" "$2" "$4"
-		git-checkout-cache -u -f -- "$4" &&
+	git-update-index --add --cacheinfo "$6" "$2" "$4"
+		git-checkout-index -u -f -- "$4" &&
 		merge "$4" "$orig" "$src2"
 	ret=$?
 	rm -f -- "$orig" "$src2"
@@ -78,7 +78,7 @@
 		echo "ERROR: Merge conflict in $4."
 		exit 1
 	fi
-	exec git-update-cache -- "$4"
+	exec git-update-index -- "$4"
 	;;
 
 *)
diff --git a/git-octopus-script b/git-octopus.sh
similarity index 91%
rename from git-octopus-script
rename to git-octopus.sh
index 80edfd4..521cc6f 100755
--- a/git-octopus-script
+++ b/git-octopus.sh
@@ -4,7 +4,7 @@
 #
 # Resolve two or more trees recorded in $GIT_DIR/FETCH_HEAD.
 #
-. git-sh-setup-script || die "Not a git archive"
+. git-sh-setup || die "Not a git archive"
 
 usage () {
     die "usage: git octopus"
@@ -19,9 +19,9 @@
 
 head=$(git-rev-parse --verify HEAD) || exit
 
-git-update-cache --refresh ||
+git-update-index --refresh ||
 	die "Your working tree is dirty."
-test "$(git-diff-cache --cached "$head")" = "" ||
+test "$(git-diff-index --cached "$head")" = "" ||
 	die "Your working tree does not match HEAD."
 
 # MRC is the current "merge reference commit"
@@ -68,9 +68,9 @@
 	if test $? -ne 0
 	then
 		echo "Simple merge did not work, trying automatic merge."
-		git-merge-cache -o git-merge-one-file-script -a || {
+		git-merge-index -o git-merge-one-file -a || {
 		git-read-tree --reset "$head"
-		git-checkout-cache -f -q -u -a
+		git-checkout-index -f -q -u -a
 		die "Automatic merge failed; should not be doing Octopus"
 		}
 		next=$(git-write-tree 2>/dev/null)
diff --git a/git-parse-remote-script b/git-parse-remote.sh
similarity index 97%
rename from git-parse-remote-script
rename to git-parse-remote.sh
index 43b4368..3c5d94b 100755
--- a/git-parse-remote-script
+++ b/git-parse-remote.sh
@@ -1,6 +1,6 @@
 #!/bin/sh
 
-. git-sh-setup-script || die "Not a git archive"
+. git-sh-setup || die "Not a git archive"
 
 get_data_source () {
 	case "$1" in
diff --git a/git-prune-script b/git-prune.sh
similarity index 65%
rename from git-prune-script
rename to git-prune.sh
index 2e130c7..9657dbf 100755
--- a/git-prune-script
+++ b/git-prune.sh
@@ -1,6 +1,6 @@
 #!/bin/sh
 
-. git-sh-setup-script || die "Not a git archive"
+. git-sh-setup || die "Not a git archive"
 
 dryrun=
 echo=
@@ -9,13 +9,13 @@
     case "$1" in
     -n) dryrun=-n echo=echo ;;
     --) break ;;
-    -*) echo >&2 "usage: git-prune-script [ -n ] [ heads... ]"; exit 1 ;;
+    -*) echo >&2 "usage: git-prune [ -n ] [ heads... ]"; exit 1 ;;
     *)  break ;;
     esac
     shift;
 done
 
-git-fsck-cache --full --cache --unreachable "$@" |
+git-fsck-objects --full --cache --unreachable "$@" |
 sed -ne '/unreachable /{
     s/unreachable [^ ][^ ]* //
     s|\(..\)|\1/|p
diff --git a/git-pull-script b/git-pull.sh
similarity index 87%
rename from git-pull-script
rename to git-pull.sh
index c31a65c..c1b4474 100755
--- a/git-pull-script
+++ b/git-pull.sh
@@ -4,10 +4,10 @@
 #
 # Fetch one or more remote refs and merge it/them into the current HEAD.
 
-. git-sh-setup-script || die "Not a git archive"
+. git-sh-setup || die "Not a git archive"
 
 orig_head=$(cat "$GIT_DIR/HEAD") || die "Pulling into a black hole?"
-git-fetch-script --update-head-ok "$@" || exit 1
+git-fetch --update-head-ok "$@" || exit 1
 
 curr_head=$(cat "$GIT_DIR/HEAD")
 if test "$curr_head" != "$orig_head"
@@ -35,10 +35,10 @@
 	;;
 *' '?*)
 	echo >&2 "Pulling more than one heads; making an Octopus."
-	exec git-octopus-script
+	exec git-octopus
 	;;
 esac
 
-git-resolve-script \
+git-resolve \
 	"$(cat "$GIT_DIR"/HEAD)" \
 	$merge_head "Merge $merge_name"
diff --git a/git-push-script b/git-push.sh
similarity index 91%
rename from git-push-script
rename to git-push.sh
index 744ee7e..00d7150 100755
--- a/git-push-script
+++ b/git-push.sh
@@ -1,5 +1,5 @@
 #!/bin/sh
-. git-sh-setup-script || die "Not a git archive"
+. git-sh-setup || die "Not a git archive"
 
 # Parse out parameters and then stop at remote, so that we can
 # translate it using .git/branches information
@@ -31,7 +31,7 @@
 	die "Where would you want to push today?" ;;
 esac
 
-. git-parse-remote-script
+. git-parse-remote
 remote=$(get_remote_url "$@")
 case "$has_all" in
 --all) set x ;;
diff --git a/git-rebase-script b/git-rebase.sh
similarity index 81%
rename from git-rebase-script
rename to git-rebase.sh
index b0893cc..49c8f12 100755
--- a/git-rebase-script
+++ b/git-rebase.sh
@@ -3,7 +3,7 @@
 # Copyright (c) 2005 Junio C Hamano.
 #
 
-. git-sh-setup-script || die "Not a git archive."
+. git-sh-setup || die "Not a git archive."
 
 usage="usage: $0 "'<upstream> [<head>]
 
@@ -17,7 +17,7 @@
     shift ;;
 esac
 
-git-update-cache --refresh || exit
+git-update-index --refresh || exit
 
 case "$#" in
 1) ours_symbolic=HEAD ;;
@@ -27,8 +27,8 @@
 
 upstream=`git-rev-parse --verify "$1"` &&
 ours=`git-rev-parse --verify "$ours_symbolic"` || exit
-different1=$(git-diff-cache --name-only --cached "$ours") &&
-different2=$(git-diff-cache --name-only "$ours") &&
+different1=$(git-diff-index --name-only --cached "$ours") &&
+different2=$(git-diff-index --name-only "$ours") &&
 test "$different1$different2" = "" ||
 die "Your working tree does not match $ours_symbolic."
 
@@ -51,10 +51,10 @@
 	esac
 	echo >&2 "* Applying: $msg"
 	S=`cat "$GIT_DIR/HEAD"` &&
-	git-cherry-pick-script --replay $commit || {
+	git-cherry-pick --replay $commit || {
 		echo >&2 "* Not applying the patch and continuing."
 		echo $commit >>$fail
-		git-reset-script --hard $S
+		git-reset --hard $S
 	}
 done
 if test -s $fail
diff --git a/git-relink-script b/git-relink.perl
similarity index 100%
rename from git-relink-script
rename to git-relink.perl
diff --git a/git-rename-script b/git-rename.perl
similarity index 84%
rename from git-rename-script
rename to git-rename.perl
index b4d3148..a28c8c8 100755
--- a/git-rename-script
+++ b/git-rename.perl
@@ -48,11 +48,11 @@
 rename($src,$dst)
 	or die "rename failed: $!";
 
-my $rc = system("git-update-cache","--add","--",@dstfiles);
-die "git-update-cache failed to add new name with code $?\n" if $rc;
+my $rc = system("git-update-index","--add","--",@dstfiles);
+die "git-update-index failed to add new name with code $?\n" if $rc;
 
-$rc = system("git-update-cache","--remove","--",@srcfiles);
-die "git-update-cache failed to remove old name with code $?\n" if $rc;
+$rc = system("git-update-index","--remove","--",@srcfiles);
+die "git-update-index failed to remove old name with code $?\n" if $rc;
 
 
 sub usage($) {
diff --git a/git-repack-script b/git-repack.sh
similarity index 96%
rename from git-repack-script
rename to git-repack.sh
index 80628b5..064c85c 100755
--- a/git-repack-script
+++ b/git-repack.sh
@@ -3,7 +3,7 @@
 # Copyright (c) 2005 Linus Torvalds
 #
 
-. git-sh-setup-script || die "Not a git archive"
+. git-sh-setup || die "Not a git archive"
 	
 no_update_info= all_into_one= remove_redundant=
 while case "$#" in 0) break ;; esac
diff --git a/git-request-pull-script b/git-request-pull.sh
similarity index 100%
rename from git-request-pull-script
rename to git-request-pull.sh
diff --git a/git-reset-script b/git-reset.sh
similarity index 94%
rename from git-reset-script
rename to git-reset.sh
index 863e2a9..04c1ac0 100755
--- a/git-reset-script
+++ b/git-reset.sh
@@ -1,5 +1,5 @@
 #!/bin/sh
-. git-sh-setup-script || die "Not a git archive"
+. git-sh-setup || die "Not a git archive"
 
 tmp=/var/tmp/reset.$$
 trap 'rm -f $tmp-*' 0 1 2 3 15
@@ -66,7 +66,7 @@
 --hard )
 	# Hard reset matches the working tree to that of the tree
 	# being switched to.
-	git-checkout-cache -f -u -q -a
+	git-checkout-index -f -u -q -a
 	git-ls-files --cached -z |
 	perl -e '
 		use strict;
@@ -90,7 +90,7 @@
 	;; # Nothing else to do
 --mixed )
 	# Report what has not been updated.
-	git-update-cache --refresh
+	git-update-index --refresh
 	;;
 esac
 
diff --git a/git-resolve-script b/git-resolve.sh
similarity index 91%
rename from git-resolve-script
rename to git-resolve.sh
index 000cbb8..1f559d8 100755
--- a/git-resolve-script
+++ b/git-resolve.sh
@@ -4,10 +4,10 @@
 #
 # Resolve two trees.
 #
-. git-sh-setup-script || die "Not a git archive"
+. git-sh-setup || die "Not a git archive"
 
 usage () {
-	die "git-resolve-script <head> <remote> <merge-message>"
+	die "git-resolve <head> <remote> <merge-message>"
 }
 
 dropheads() {
@@ -85,12 +85,12 @@
 esac
 
 echo "Trying to merge $merge into $head using $common."
-git-update-cache --refresh 2>/dev/null
+git-update-index --refresh 2>/dev/null
 git-read-tree -u -m $common $head $merge || exit 1
 result_tree=$(git-write-tree  2> /dev/null)
 if [ $? -ne 0 ]; then
 	echo "Simple merge failed, trying Automatic merge"
-	git-merge-cache -o git-merge-one-file-script -a
+	git-merge-index -o git-merge-one-file -a
 	if [ $? -ne 0 ]; then
 		echo $merge > "$GIT_DIR"/MERGE_HEAD
 		die "Automatic merge failed, fix up by hand"
diff --git a/git-revert-script b/git-revert.sh
similarity index 94%
rename from git-revert-script
rename to git-revert.sh
index 82ed093..722c4f7 100755
--- a/git-revert-script
+++ b/git-revert.sh
@@ -3,13 +3,15 @@
 # Copyright (c) 2005 Linus Torvalds
 # Copyright (c) 2005 Junio C Hamano
 #
-. git-sh-setup-script || die "Not a git archive"
+. git-sh-setup || die "Not a git archive"
 
 case "$0" in
-*-revert-* )
+*-revert* )
 	me=revert ;;
-*-cherry-pick-* )
+*-cherry-pick* )
 	me=cherry-pick ;;
+* )
+	die "What are ou talking about?" ;;
 esac
 
 usage () {
@@ -135,7 +137,7 @@
 git-read-tree -m -u $base $head $next &&
 result=$(git-write-tree 2>/dev/null) || {
     echo >&2 "Simple $me fails; trying Automatic $me."
-    git-merge-cache -o git-merge-one-file-script -a || {
+    git-merge-index -o git-merge-one-file -a || {
 	    echo >&2 "Automatic $me failed.  After fixing it up,"
 	    echo >&2 "you can use \"git commit -F .msg\""
 	    case "$me" in
@@ -158,7 +160,7 @@
 
 case "$no_commit" in
 '')
-	git-commit-script -n -F .msg
+	git-commit -n -F .msg
 	rm -f .msg
 	;;
 esac
diff --git a/git-send-email-script b/git-send-email.perl
similarity index 98%
rename from git-send-email-script
rename to git-send-email.perl
index 86b676a..ec1428d 100755
--- a/git-send-email-script
+++ b/git-send-email.perl
@@ -188,7 +188,7 @@
 	print $_,"\n" for @files;
 } else {
 	print <<EOT;
-git-send-email-script [options] <file | directory> [... file | directory ]
+git-send-email [options] <file | directory> [... file | directory ]
 Options:
    --from         Specify the "From:" line of the email to be sent.
 
@@ -257,7 +257,7 @@
 			'Reply-to'	=>	$from,
 			'In-Reply-To'	=>	$reply_to,
 			'Message-ID'	=>	$message_id,
-			'X-Mailer'	=>	"git-send-email-script",
+			'X-Mailer'	=>	"git-send-email",
 		);
 
 	$mail{smtp} = $smtp_server;
diff --git a/git-sh-setup-script b/git-sh-setup.sh
similarity index 81%
rename from git-sh-setup-script
rename to git-sh-setup.sh
index 9ed5e85..06d8299 100755
--- a/git-sh-setup-script
+++ b/git-sh-setup.sh
@@ -12,8 +12,8 @@
 }
 
 check_clean_tree() {
-    dirty1_=`git-update-cache -q --refresh` && {
-    dirty2_=`git-diff-cache --name-only --cached HEAD`
+    dirty1_=`git-update-index -q --refresh` && {
+    dirty2_=`git-diff-index --name-only --cached HEAD`
     case "$dirty2_" in '') : ;; *) (exit 1) ;; esac
     } || {
 	echo >&2 "$dirty1_"
diff --git a/git-shortlog b/git-shortlog.perl
similarity index 100%
rename from git-shortlog
rename to git-shortlog.perl
diff --git a/git-status-script b/git-status.sh
similarity index 87%
rename from git-status-script
rename to git-status.sh
index ee8f706..621fa49 100755
--- a/git-status-script
+++ b/git-status.sh
@@ -2,7 +2,7 @@
 #
 # Copyright (c) 2005 Linus Torvalds
 #
-. git-sh-setup-script || die "Not a git archive"
+. git-sh-setup || die "Not a git archive"
 
 report () {
   header="#
@@ -37,11 +37,11 @@
 *)	echo "# On branch $branch" ;;
 esac
 
-git-update-cache --refresh >/dev/null 2>&1
+git-update-index --refresh >/dev/null 2>&1
 
 if test -f "$GIT_DIR/HEAD"
 then
-	git-diff-cache -M --cached HEAD |
+	git-diff-index -M --cached HEAD |
 	sed 's/^://' |
 	report "Updated but not checked in" "will commit"
 
@@ -59,7 +59,7 @@
 
 git-diff-files |
 sed 's/^://' |
-report "Changed but not updated" "use git-update-cache to mark for commit"
+report "Changed but not updated" "use git-update-index to mark for commit"
 
 if grep -v '^#' "$GIT_DIR/info/exclude" >/dev/null 2>&1
 then
diff --git a/git-tag-script b/git-tag.sh
similarity index 91%
rename from git-tag-script
rename to git-tag.sh
index 39c3c53..76c1bcd 100755
--- a/git-tag-script
+++ b/git-tag.sh
@@ -1,10 +1,10 @@
 #!/bin/sh
 # Copyright (c) 2005 Linus Torvalds
 
-. git-sh-setup-script || die "Not a git archive"
+. git-sh-setup || die "Not a git archive"
 
 usage () {
-    echo >&2 "Usage: git-tag-script [-a | -s] [-f] [-m "tag message"] tagname"
+    echo >&2 "Usage: git-tag [-a | -s] [-f] [-m "tag message"] tagname"
     exit 1
 }
 
diff --git a/git-verify-tag-script b/git-verify-tag.sh
similarity index 78%
rename from git-verify-tag-script
rename to git-verify-tag.sh
index 6eb650b..156c75b 100755
--- a/git-verify-tag-script
+++ b/git-verify-tag.sh
@@ -1,5 +1,5 @@
 #!/bin/sh
-. git-sh-setup-script || die "Not a git archive"
+. git-sh-setup || die "Not a git archive"
 
 tag=$(git-rev-parse $1) || exit 1
 
diff --git a/git-whatchanged b/git-whatchanged.sh
similarity index 100%
rename from git-whatchanged
rename to git-whatchanged.sh
diff --git a/git.sh b/git.sh
new file mode 100755
index 0000000..f967650
--- /dev/null
+++ b/git.sh
@@ -0,0 +1,27 @@
+#!/bin/sh
+
+cmd=
+path=$(dirname $0)
+case "$#" in
+0)	;;
+*)	cmd="$1"
+	shift
+	test -x $path/git-$cmd && exec $path/git-$cmd "$@" ;;
+esac
+
+echo "Usage: git COMMAND [OPTIONS] [TARGET]"
+if [ -n "$cmd" ]; then
+    echo " git command '$cmd' not found: commands are:"
+else
+    echo " git commands are:"
+fi
+
+cat <<\EOF
+    add apply archimport bisect branch checkout cherry clone
+    commit count-objects cvsimport diff fetch format-patch
+    fsck-cache get-tar-commit-id init-db log ls-remote octopus
+    pack-objects parse-remote patch-id prune pull push rebase
+    relink rename repack request-pull reset resolve revert
+    send-email shortlog show-branch status tag verify-tag
+    whatchanged
+EOF
diff --git a/http-pull.c b/http-fetch.c
similarity index 98%
rename from http-pull.c
rename to http-fetch.c
index e70ab39..df99ba7 100644
--- a/http-pull.c
+++ b/http-fetch.c
@@ -1,7 +1,7 @@
 #include "cache.h"
 #include "commit.h"
 
-#include "pull.h"
+#include "fetch.h"
 
 #include <curl/curl.h>
 #include <curl/easy.h>
@@ -345,7 +345,7 @@
 		arg++;
 	}
 	if (argc < arg + 2) {
-		usage("git-http-pull [-c] [-t] [-a] [-d] [-v] [--recover] [-w ref] commit-id url");
+		usage("git-http-fetch [-c] [-t] [-a] [-d] [-v] [--recover] [-w ref] commit-id url");
 		return 1;
 	}
 	commit_id = argv[arg];
diff --git a/local-pull.c b/local-fetch.c
similarity index 97%
rename from local-pull.c
rename to local-fetch.c
index ca0003b..8176532 100644
--- a/local-pull.c
+++ b/local-fetch.c
@@ -3,7 +3,7 @@
  */
 #include "cache.h"
 #include "commit.h"
-#include "pull.h"
+#include "fetch.h"
 
 static int use_link = 0;
 static int use_symlink = 0;
@@ -178,7 +178,7 @@
 }
 
 static const char local_pull_usage[] =
-"git-local-pull [-c] [-t] [-a] [-d] [-v] [-w filename] [--recover] [-l] [-s] [-n] commit-id path";
+"git-local-fetch [-c] [-t] [-a] [-d] [-v] [-w filename] [--recover] [-l] [-s] [-n] commit-id path";
 
 /* 
  * By default we only use file copy.
diff --git a/merge-cache.c b/merge-index.c
similarity index 91%
rename from merge-cache.c
rename to merge-index.c
index 744681b..727527f 100644
--- a/merge-cache.c
+++ b/merge-index.c
@@ -42,7 +42,7 @@
 	int found;
 	
 	if (pos >= active_nr)
-		die("git-merge-cache: %s not in the cache", path);
+		die("git-merge-index: %s not in the cache", path);
 	arguments[0] = pgm;
 	arguments[1] = "";
 	arguments[2] = "";
@@ -67,7 +67,7 @@
 		arguments[stage + 4] = ownbuf[stage];
 	} while (++pos < active_nr);
 	if (!found)
-		die("git-merge-cache: %s not in the cache", path);
+		die("git-merge-index: %s not in the cache", path);
 	run_program();
 	return found;
 }
@@ -100,7 +100,7 @@
 	int i, force_file = 0;
 
 	if (argc < 3)
-		usage("git-merge-cache [-o] [-q] <merge-program> (-a | <filename>*)");
+		usage("git-merge-index [-o] [-q] <merge-program> (-a | <filename>*)");
 
 	read_cache();
 
@@ -125,7 +125,7 @@
 				merge_all();
 				continue;
 			}
-			die("git-merge-cache: unknown option %s", arg);
+			die("git-merge-index: unknown option %s", arg);
 		}
 		merge_file(arg);
 	}
diff --git a/ssh-pull.c b/ssh-fetch.c
similarity index 94%
rename from ssh-pull.c
rename to ssh-fetch.c
index f1d8e70..d8f4368 100644
--- a/ssh-pull.c
+++ b/ssh-fetch.c
@@ -1,7 +1,7 @@
 #include "cache.h"
 #include "commit.h"
 #include "rsh.h"
-#include "pull.h"
+#include "fetch.h"
 #include "refs.h"
 
 static int fd_in;
@@ -90,7 +90,7 @@
 	const char *prog;
 
 	prog = getenv("GIT_SSH_PUSH");
-	if (!prog) prog = "git-ssh-push";
+	if (!prog) prog = "git-ssh-upload";
 
 	while (arg < argc && argv[arg][0] == '-') {
 		if (argv[arg][1] == 't') {
@@ -110,7 +110,7 @@
 		arg++;
 	}
 	if (argc < arg + 2) {
-		usage("git-ssh-pull [-c] [-t] [-a] [-v] [-d] [--recover] [-w ref] commit-id url");
+		usage("git-ssh-fetch [-c] [-t] [-a] [-v] [-d] [--recover] [-w ref] commit-id url");
 		return 1;
 	}
 	commit_id = argv[arg];
diff --git a/ssh-push.c b/ssh-upload.c
similarity index 91%
rename from ssh-push.c
rename to ssh-upload.c
index 5bd4569..10a3687 100644
--- a/ssh-push.c
+++ b/ssh-upload.c
@@ -17,7 +17,7 @@
 	do {
 		size = read(fd_in, sha1 + posn, 20 - posn);
 		if (size < 0) {
-			perror("git-ssh-push: read ");
+			perror("git-ssh-upload: read ");
 			return -1;
 		}
 		if (!size)
@@ -31,7 +31,7 @@
 	remote = 0;
 	
 	if (!has_sha1_file(sha1)) {
-		fprintf(stderr, "git-ssh-push: could not find %s\n", 
+		fprintf(stderr, "git-ssh-upload: could not find %s\n",
 			sha1_to_hex(sha1));
 		remote = -1;
 	}
@@ -84,7 +84,7 @@
 		retval = read(fd_in, &type, 1);
 		if (retval < 1) {
 			if (retval < 0)
-				perror("git-ssh-push: read ");
+				perror("git-ssh-upload: read ");
 			return;
 		}
 		if (type == 'v' && serve_version(fd_in, fd_out))
@@ -97,7 +97,7 @@
 }
 
 static const char ssh_push_usage[] =
-	"git-ssh-push [-c] [-t] [-a] [-w ref] commit-id url";
+	"git-ssh-upload [-c] [-t] [-a] [-w ref] commit-id url";
 
 int main(int argc, char **argv)
 {
@@ -110,7 +110,7 @@
 	char hex[41];
 
 	prog = getenv("GIT_SSH_PULL");
-	if (!prog) prog = "git-ssh-pull";
+	if (!prog) prog = "git-ssh-fetch";
 	while (arg < argc && argv[arg][0] == '-') {
 		if (argv[arg][1] == 'w')
 			arg++;
diff --git a/t/README b/t/README
index ab47ef9..ac5a3ac 100644
--- a/t/README
+++ b/t/README
@@ -20,9 +20,9 @@
     *** t0000-basic.sh ***
     *   ok 1: .git/objects should be empty after git-init-db in an empty repo.
     *   ok 2: .git/objects should have 256 subdirectories.
-    *   ok 3: git-update-cache without --add should fail adding.
+    *   ok 3: git-update-index without --add should fail adding.
     ...
-    *   ok 23: no diff after checkout and git-update-cache --refresh.
+    *   ok 23: no diff after checkout and git-update-index --refresh.
     * passed all 23 test(s)
     *** t0100-environment-names.sh ***
     *   ok 1: using old names should issue warnings.
@@ -33,7 +33,7 @@
 this:
 
     $ sh ./t3001-ls-files-killed.sh
-    *   ok 1: git-update-cache --add to add various paths.
+    *   ok 1: git-update-index --add to add various paths.
     *   ok 2: git-ls-files -k to show killed files.
     *   ok 3: validate git-ls-files -k output.
     * passed all 3 test(s)
@@ -163,8 +163,8 @@
    Example:
 
 	test_expect_failure \
-	    'git-update-cache without --add should fail adding.' \
-	    'git-update-cache should-be-empty'
+	    'git-update-index without --add should fail adding.' \
+	    'git-update-index should-be-empty'
 
  - test_debug <script>
 
diff --git a/t/lib-read-tree-m-3way.sh b/t/lib-read-tree-m-3way.sh
index d6645b4..d195603 100755
--- a/t/lib-read-tree-m-3way.sh
+++ b/t/lib-read-tree-m-3way.sh
@@ -10,14 +10,14 @@
 	echo This is Z/$p from the original tree. >Z/$p
 	test_expect_success \
 	    "adding test file $p and Z/$p" \
-	    'git-update-cache --add $p &&
-	    git-update-cache --add Z/$p'
+	    'git-update-index --add $p &&
+	    git-update-index --add Z/$p'
     done
 done
 echo This is SS from the original tree. >SS
 test_expect_success \
     'adding test file SS' \
-    'git-update-cache --add SS'
+    'git-update-index --add SS'
 cat >TT <<\EOF
 This is a trivial merge sample text.
 Branch A is expected to upcase this word, here.
@@ -32,7 +32,7 @@
 EOF
 test_expect_success \
     'adding test file TT' \
-    'git-update-cache --add TT'
+    'git-update-index --add TT'
 test_expect_success \
     'prepare initial tree' \
     'tree_O=$(git-write-tree)'
@@ -47,14 +47,14 @@
 rm -f $to_remove
 test_expect_success \
     'change in branch A (removal)' \
-    'git-update-cache --remove $to_remove'
+    'git-update-index --remove $to_remove'
 
 for p in M? Z/M?
 do
     echo This is modified $p in the branch A. >$p
     test_expect_success \
 	'change in branch A (modification)' \
-        "git-update-cache $p"
+        "git-update-index $p"
 done
 
 for p in AN AA Z/AN Z/AA
@@ -62,27 +62,27 @@
     echo This is added $p in the branch A. >$p
     test_expect_success \
 	'change in branch A (addition)' \
-	"git-update-cache --add $p"
+	"git-update-index --add $p"
 done
 
 echo This is SS from the modified tree. >SS
 echo This is LL from the modified tree. >LL
 test_expect_success \
     'change in branch A (addition)' \
-    'git-update-cache --add LL &&
-     git-update-cache SS'
+    'git-update-index --add LL &&
+     git-update-index SS'
 mv TT TT-
 sed -e '/Branch A/s/word/WORD/g' <TT- >TT
 rm -f TT-
 test_expect_success \
     'change in branch A (edit)' \
-    'git-update-cache TT'
+    'git-update-index TT'
 
 mkdir DF
 echo Branch A makes a file at DF/DF, creating a directory DF. >DF/DF
 test_expect_success \
     'change in branch A (change file to directory)' \
-    'git-update-cache --add DF/DF'
+    'git-update-index --add DF/DF'
 
 test_expect_success \
     'recording branch A tree' \
@@ -97,20 +97,20 @@
 test_expect_success \
     'reading original tree and checking out' \
     'git-read-tree $tree_O &&
-     git-checkout-cache -a'
+     git-checkout-index -a'
 
 to_remove=$(echo ?D Z/?D)
 rm -f $to_remove
 test_expect_success \
     'change in branch B (removal)' \
-    "git-update-cache --remove $to_remove"
+    "git-update-index --remove $to_remove"
 
 for p in ?M Z/?M
 do
     echo This is modified $p in the branch B. >$p
     test_expect_success \
 	'change in branch B (modification)' \
-	"git-update-cache $p"
+	"git-update-index $p"
 done
 
 for p in NA AA Z/NA Z/AA
@@ -118,25 +118,25 @@
     echo This is added $p in the branch B. >$p
     test_expect_success \
 	'change in branch B (addition)' \
-	"git-update-cache --add $p"
+	"git-update-index --add $p"
 done
 echo This is SS from the modified tree. >SS
 echo This is LL from the modified tree. >LL
 test_expect_success \
     'change in branch B (addition and modification)' \
-    'git-update-cache --add LL &&
-     git-update-cache SS'
+    'git-update-index --add LL &&
+     git-update-index SS'
 mv TT TT-
 sed -e '/Branch B/s/word/WORD/g' <TT- >TT
 rm -f TT-
 test_expect_success \
     'change in branch B (modification)' \
-    'git-update-cache TT'
+    'git-update-index TT'
 
 echo Branch B makes a file at DF. >DF
 test_expect_success \
     'change in branch B (addition of a file to conflict with directory)' \
-    'git-update-cache --add DF'
+    'git-update-index --add DF'
 
 test_expect_success \
     'recording branch B tree' \
@@ -147,12 +147,12 @@
     'rm -f .git/index &&
      git-read-tree $tree_O &&
      mkdir .orig-O &&
-     git-checkout-cache --prefix=.orig-O/ -f -q -a &&
+     git-checkout-index --prefix=.orig-O/ -f -q -a &&
      rm -f .git/index &&
      git-read-tree $tree_A &&
      mkdir .orig-A &&
-     git-checkout-cache --prefix=.orig-A/ -f -q -a &&
+     git-checkout-index --prefix=.orig-A/ -f -q -a &&
      rm -f .git/index &&
      git-read-tree $tree_B &&
      mkdir .orig-B &&
-     git-checkout-cache --prefix=.orig-B/ -f -q -a'
+     git-checkout-index --prefix=.orig-B/ -f -q -a'
diff --git a/t/t0000-basic.sh b/t/t0000-basic.sh
index 142b7bf..3649f0f 100755
--- a/t/t0000-basic.sh
+++ b/t/t0000-basic.sh
@@ -40,13 +40,13 @@
 
 # updating a new file without --add should fail.
 test_expect_failure \
-    'git-update-cache without --add should fail adding.' \
-    'git-update-cache should-be-empty'
+    'git-update-index without --add should fail adding.' \
+    'git-update-index should-be-empty'
 
 # and with --add it should succeed, even if it is empty (it used to fail).
 test_expect_success \
-    'git-update-cache with --add should succeed.' \
-    'git-update-cache --add should-be-empty'
+    'git-update-index with --add should succeed.' \
+    'git-update-index --add should-be-empty'
 
 test_expect_success \
     'writing tree out with git-write-tree' \
@@ -60,12 +60,12 @@
 # Removing paths.
 rm -f should-be-empty full-of-directories
 test_expect_failure \
-    'git-update-cache without --remove should fail removing.' \
-    'git-update-cache should-be-empty'
+    'git-update-index without --remove should fail removing.' \
+    'git-update-index should-be-empty'
 
 test_expect_success \
-    'git-update-cache with --remove should be able to remove.' \
-    'git-update-cache --remove should-be-empty'
+    'git-update-index with --remove should be able to remove.' \
+    'git-update-index --remove should-be-empty'
 
 # Empty tree can be written with recent write-tree.
 test_expect_success \
@@ -84,8 +84,8 @@
     ln -s "hello $p" ${p}sym
 done
 test_expect_success \
-    'adding various types of objects with git-update-cache --add.' \
-    'find path* ! -type d -print0 | xargs -0 git-update-cache --add'
+    'adding various types of objects with git-update-index --add.' \
+    'find path* ! -type d -print0 | xargs -0 git-update-index --add'
 
 # Show them and see that matches what we expect.
 test_expect_success \
@@ -170,11 +170,11 @@
     'git-diff-files >current && diff >/dev/null -b current expected'
 
 test_expect_success \
-    'git-update-cache --refresh should succeed.' \
-    'git-update-cache --refresh'
+    'git-update-index --refresh should succeed.' \
+    'git-update-index --refresh'
 
 test_expect_success \
-    'no diff after checkout and git-update-cache --refresh.' \
+    'no diff after checkout and git-update-index --refresh.' \
     'git-diff-files >current && cmp -s current /dev/null'
 
 test_done
diff --git a/t/t0100-environment-names.sh b/t/t0100-environment-names.sh
index 9f851bc..3493bd4 100755
--- a/t/t0100-environment-names.sh
+++ b/t/t0100-environment-names.sh
@@ -34,7 +34,7 @@
 }
 
 date >path0
-git-update-cache --add path0
+git-update-index --add path0
 tree=$(git-write-tree)
 
 AUTHOR_DATE='Wed May 11 23:55:18 2005'
diff --git a/t/t0110-environment-names-old.sh b/t/t0110-environment-names-old.sh
index c548b9b..5d602cc 100755
--- a/t/t0110-environment-names-old.sh
+++ b/t/t0110-environment-names-old.sh
@@ -54,8 +54,8 @@
 
 date >path0
 test_expect_success \
-    'using GIT_DIR in git-update-cache' \
-    'git-update-cache --add path0 && test -f .svn/index'
+    'using GIT_DIR in git-update-index' \
+    'git-update-index --add path0 && test -f .svn/index'
 
 sedScript='s|\(..\)|.svn/objects/\1/|'
 
diff --git a/t/t1000-read-tree-m-3way.sh b/t/t1000-read-tree-m-3way.sh
index 89f0e81..f1cd50c 100755
--- a/t/t1000-read-tree-m-3way.sh
+++ b/t/t1000-read-tree-m-3way.sh
@@ -150,7 +150,7 @@
     "rm -fr [NDMALTS][NDMALTSF] Z &&
      rm .git/index &&
      git-read-tree $tree_A &&
-     git-checkout-cache -f -u -a &&
+     git-checkout-index -f -u -a &&
      git-read-tree -m $tree_O $tree_A $tree_B &&
      check_result"
 
@@ -230,21 +230,21 @@
     '1 - must not have an entry not in A.' \
     "rm -f .git/index XX &&
      echo XX >XX &&
-     git-update-cache --add XX &&
+     git-update-index --add XX &&
      git-read-tree -m $tree_O $tree_A $tree_B"
 
 test_expect_success \
     '2 - must match B in !O && !A && B case.' \
     "rm -f .git/index NA &&
      cp .orig-B/NA NA &&
-     git-update-cache --add NA &&
+     git-update-index --add NA &&
      git-read-tree -m $tree_O $tree_A $tree_B"
 
 test_expect_success \
     '2 - matching B alone is OK in !O && !A && B case.' \
     "rm -f .git/index NA &&
      cp .orig-B/NA NA &&
-     git-update-cache --add NA &&
+     git-update-index --add NA &&
      echo extra >>NA &&
      git-read-tree -m $tree_O $tree_A $tree_B"
 
@@ -252,7 +252,7 @@
     '3 - must match A in !O && A && !B case.' \
     "rm -f .git/index AN &&
      cp .orig-A/AN AN &&
-     git-update-cache --add AN &&
+     git-update-index --add AN &&
      git-read-tree -m $tree_O $tree_A $tree_B &&
      check_result"
 
@@ -260,7 +260,7 @@
     '3 - matching A alone is OK in !O && A && !B case.' \
     "rm -f .git/index AN &&
      cp .orig-A/AN AN &&
-     git-update-cache --add AN &&
+     git-update-index --add AN &&
      echo extra >>AN &&
      git-read-tree -m $tree_O $tree_A $tree_B"
 
@@ -269,14 +269,14 @@
     "rm -f .git/index AN &&
      cp .orig-A/AN AN &&
      echo extra >>AN &&
-     git-update-cache --add AN &&
+     git-update-index --add AN &&
      git-read-tree -m $tree_O $tree_A $tree_B"
 
 test_expect_success \
     '4 - must match and be up-to-date in !O && A && B && A!=B case.' \
     "rm -f .git/index AA &&
      cp .orig-A/AA AA &&
-     git-update-cache --add AA &&
+     git-update-index --add AA &&
      git-read-tree -m $tree_O $tree_A $tree_B &&
      check_result"
 
@@ -284,7 +284,7 @@
     '4 (fail) - must match and be up-to-date in !O && A && B && A!=B case.' \
     "rm -f .git/index AA &&
      cp .orig-A/AA AA &&
-     git-update-cache --add AA &&
+     git-update-index --add AA &&
      echo extra >>AA &&
      git-read-tree -m $tree_O $tree_A $tree_B"
 
@@ -293,14 +293,14 @@
     "rm -f .git/index AA &&
      cp .orig-A/AA AA &&
      echo extra >>AA &&
-     git-update-cache --add AA &&
+     git-update-index --add AA &&
      git-read-tree -m $tree_O $tree_A $tree_B"
 
 test_expect_success \
     '5 - must match in !O && A && B && A==B case.' \
     "rm -f .git/index LL &&
      cp .orig-A/LL LL &&
-     git-update-cache --add LL &&
+     git-update-index --add LL &&
      git-read-tree -m $tree_O $tree_A $tree_B &&
      check_result"
 
@@ -308,7 +308,7 @@
     '5 - must match in !O && A && B && A==B case.' \
     "rm -f .git/index LL &&
      cp .orig-A/LL LL &&
-     git-update-cache --add LL &&
+     git-update-index --add LL &&
      echo extra >>LL &&
      git-read-tree -m $tree_O $tree_A $tree_B &&
      check_result"
@@ -318,35 +318,35 @@
     "rm -f .git/index LL &&
      cp .orig-A/LL LL &&
      echo extra >>LL &&
-     git-update-cache --add LL &&
+     git-update-index --add LL &&
      git-read-tree -m $tree_O $tree_A $tree_B"
 
 test_expect_failure \
     '6 - must not exist in O && !A && !B case' \
     "rm -f .git/index DD &&
      echo DD >DD
-     git-update-cache --add DD &&
+     git-update-index --add DD &&
      git-read-tree -m $tree_O $tree_A $tree_B"
 
 test_expect_failure \
     '7 - must not exist in O && !A && B && O!=B case' \
     "rm -f .git/index DM &&
      cp .orig-B/DM DM &&
-     git-update-cache --add DM &&
+     git-update-index --add DM &&
      git-read-tree -m $tree_O $tree_A $tree_B"
 
 test_expect_failure \
     '8 - must not exist in O && !A && B && O==B case' \
     "rm -f .git/index DN &&
      cp .orig-B/DN DN &&
-     git-update-cache --add DN &&
+     git-update-index --add DN &&
      git-read-tree -m $tree_O $tree_A $tree_B"
 
 test_expect_success \
     '9 - must match and be up-to-date in O && A && !B && O!=A case' \
     "rm -f .git/index MD &&
      cp .orig-A/MD MD &&
-     git-update-cache --add MD &&
+     git-update-index --add MD &&
      git-read-tree -m $tree_O $tree_A $tree_B &&
      check_result"
 
@@ -354,7 +354,7 @@
     '9 (fail) - must match and be up-to-date in O && A && !B && O!=A case' \
     "rm -f .git/index MD &&
      cp .orig-A/MD MD &&
-     git-update-cache --add MD &&
+     git-update-index --add MD &&
      echo extra >>MD &&
      git-read-tree -m $tree_O $tree_A $tree_B"
 
@@ -363,14 +363,14 @@
     "rm -f .git/index MD &&
      cp .orig-A/MD MD &&
      echo extra >>MD &&
-     git-update-cache --add MD &&
+     git-update-index --add MD &&
      git-read-tree -m $tree_O $tree_A $tree_B"
 
 test_expect_success \
     '10 - must match and be up-to-date in O && A && !B && O==A case' \
     "rm -f .git/index ND &&
      cp .orig-A/ND ND &&
-     git-update-cache --add ND &&
+     git-update-index --add ND &&
      git-read-tree -m $tree_O $tree_A $tree_B &&
      check_result"
 
@@ -378,7 +378,7 @@
     '10 (fail) - must match and be up-to-date in O && A && !B && O==A case' \
     "rm -f .git/index ND &&
      cp .orig-A/ND ND &&
-     git-update-cache --add ND &&
+     git-update-index --add ND &&
      echo extra >>ND &&
      git-read-tree -m $tree_O $tree_A $tree_B"
 
@@ -387,14 +387,14 @@
     "rm -f .git/index ND &&
      cp .orig-A/ND ND &&
      echo extra >>ND &&
-     git-update-cache --add ND &&
+     git-update-index --add ND &&
      git-read-tree -m $tree_O $tree_A $tree_B"
 
 test_expect_success \
     '11 - must match and be up-to-date in O && A && B && O!=A && O!=B && A!=B case' \
     "rm -f .git/index MM &&
      cp .orig-A/MM MM &&
-     git-update-cache --add MM &&
+     git-update-index --add MM &&
      git-read-tree -m $tree_O $tree_A $tree_B &&
      check_result"
 
@@ -402,7 +402,7 @@
     '11 (fail) - must match and be up-to-date in O && A && B && O!=A && O!=B && A!=B case' \
     "rm -f .git/index MM &&
      cp .orig-A/MM MM &&
-     git-update-cache --add MM &&
+     git-update-index --add MM &&
      echo extra >>MM &&
      git-read-tree -m $tree_O $tree_A $tree_B"
 
@@ -411,14 +411,14 @@
     "rm -f .git/index MM &&
      cp .orig-A/MM MM &&
      echo extra >>MM &&
-     git-update-cache --add MM &&
+     git-update-index --add MM &&
      git-read-tree -m $tree_O $tree_A $tree_B"
 
 test_expect_success \
     '12 - must match A in O && A && B && O!=A && A==B case' \
     "rm -f .git/index SS &&
      cp .orig-A/SS SS &&
-     git-update-cache --add SS &&
+     git-update-index --add SS &&
      git-read-tree -m $tree_O $tree_A $tree_B &&
      check_result"
 
@@ -426,7 +426,7 @@
     '12 - must match A in O && A && B && O!=A && A==B case' \
     "rm -f .git/index SS &&
      cp .orig-A/SS SS &&
-     git-update-cache --add SS &&
+     git-update-index --add SS &&
      echo extra >>SS &&
      git-read-tree -m $tree_O $tree_A $tree_B &&
      check_result"
@@ -436,14 +436,14 @@
     "rm -f .git/index SS &&
      cp .orig-A/SS SS &&
      echo extra >>SS &&
-     git-update-cache --add SS &&
+     git-update-index --add SS &&
      git-read-tree -m $tree_O $tree_A $tree_B"
 
 test_expect_success \
     '13 - must match A in O && A && B && O!=A && O==B case' \
     "rm -f .git/index MN &&
      cp .orig-A/MN MN &&
-     git-update-cache --add MN &&
+     git-update-index --add MN &&
      git-read-tree -m $tree_O $tree_A $tree_B &&
      check_result"
 
@@ -451,7 +451,7 @@
     '13 - must match A in O && A && B && O!=A && O==B case' \
     "rm -f .git/index MN &&
      cp .orig-A/MN MN &&
-     git-update-cache --add MN &&
+     git-update-index --add MN &&
      echo extra >>MN &&
      git-read-tree -m $tree_O $tree_A $tree_B &&
      check_result"
@@ -460,7 +460,7 @@
     '14 - must match and be up-to-date in O && A && B && O==A && O!=B case' \
     "rm -f .git/index NM &&
      cp .orig-A/NM NM &&
-     git-update-cache --add NM &&
+     git-update-index --add NM &&
      git-read-tree -m $tree_O $tree_A $tree_B &&
      check_result"
 
@@ -468,7 +468,7 @@
     '14 - may match B in O && A && B && O==A && O!=B case' \
     "rm -f .git/index NM &&
      cp .orig-B/NM NM &&
-     git-update-cache --add NM &&
+     git-update-index --add NM &&
      echo extra >>NM &&
      git-read-tree -m $tree_O $tree_A $tree_B &&
      check_result"
@@ -477,7 +477,7 @@
     '14 (fail) - must match and be up-to-date in O && A && B && O==A && O!=B case' \
     "rm -f .git/index NM &&
      cp .orig-A/NM NM &&
-     git-update-cache --add NM &&
+     git-update-index --add NM &&
      echo extra >>NM &&
      git-read-tree -m $tree_O $tree_A $tree_B"
 
@@ -486,14 +486,14 @@
     "rm -f .git/index NM &&
      cp .orig-A/NM NM &&
      echo extra >>NM &&
-     git-update-cache --add NM &&
+     git-update-index --add NM &&
      git-read-tree -m $tree_O $tree_A $tree_B"
 
 test_expect_success \
     '15 - must match A in O && A && B && O==A && O==B case' \
     "rm -f .git/index NN &&
      cp .orig-A/NN NN &&
-     git-update-cache --add NN &&
+     git-update-index --add NN &&
      git-read-tree -m $tree_O $tree_A $tree_B &&
      check_result"
 
@@ -501,7 +501,7 @@
     '15 - must match A in O && A && B && O==A && O==B case' \
     "rm -f .git/index NN &&
      cp .orig-A/NN NN &&
-     git-update-cache --add NN &&
+     git-update-index --add NN &&
      echo extra >>NN &&
      git-read-tree -m $tree_O $tree_A $tree_B &&
      check_result"
@@ -511,7 +511,7 @@
     "rm -f .git/index NN &&
      cp .orig-A/NN NN &&
      echo extra >>NN &&
-     git-update-cache --add NN &&
+     git-update-index --add NN &&
      git-read-tree -m $tree_O $tree_A $tree_B"
 
 test_done
diff --git a/t/t1001-read-tree-m-2way.sh b/t/t1001-read-tree-m-2way.sh
index 919f2b3..5b69681 100755
--- a/t/t1001-read-tree-m-2way.sh
+++ b/t/t1001-read-tree-m-2way.sh
@@ -68,13 +68,13 @@
      cat bozbar-old >bozbar &&
      echo rezrov >rezrov &&
      echo yomin >yomin &&
-     git-update-cache --add nitfol bozbar rezrov &&
+     git-update-index --add nitfol bozbar rezrov &&
      treeH=`git-write-tree` &&
      echo treeH $treeH &&
      git-ls-tree $treeH &&
 
      cat bozbar-new >bozbar &&
-     git-update-cache --add frotz bozbar --force-remove rezrov &&
+     git-update-index --add frotz bozbar --force-remove rezrov &&
      git-ls-files --stage >M.out &&
      treeM=`git-write-tree` &&
      echo treeM $treeM &&
@@ -97,8 +97,8 @@
     '4 - carry forward local addition.' \
     'rm -f .git/index &&
      git-read-tree $treeH &&
-     git-checkout-cache -u -f -q -a &&
-     git-update-cache --add yomin &&
+     git-checkout-index -u -f -q -a &&
+     git-update-index --add yomin &&
      read_tree_twoway $treeH $treeM &&
      git-ls-files --stage >4.out || return 1
      diff -u M.out 4.out >4diff.out
@@ -109,9 +109,9 @@
     '5 - carry forward local addition.' \
     'rm -f .git/index &&
      git-read-tree $treeH &&
-     git-checkout-cache -u -f -q -a &&
+     git-checkout-index -u -f -q -a &&
      echo yomin >yomin &&
-     git-update-cache --add yomin &&
+     git-update-index --add yomin &&
      echo yomin yomin >yomin &&
      read_tree_twoway $treeH $treeM &&
      git-ls-files --stage >5.out || return 1
@@ -123,8 +123,8 @@
     '6 - local addition already has the same.' \
     'rm -f .git/index &&
      git-read-tree $treeH &&
-     git-checkout-cache -u -f -q -a &&
-     git-update-cache --add frotz &&
+     git-checkout-index -u -f -q -a &&
+     git-update-index --add frotz &&
      read_tree_twoway $treeH $treeM &&
      git-ls-files --stage >6.out &&
      diff -u M.out 6.out &&
@@ -134,9 +134,9 @@
     '7 - local addition already has the same.' \
     'rm -f .git/index &&
      git-read-tree $treeH &&
-     git-checkout-cache -u -f -q -a &&
+     git-checkout-index -u -f -q -a &&
      echo frotz >frotz &&
-     git-update-cache --add frotz &&
+     git-update-index --add frotz &&
      echo frotz frotz >frotz &&
      read_tree_twoway $treeH $treeM &&
      git-ls-files --stage >7.out &&
@@ -147,18 +147,18 @@
     '8 - conflicting addition.' \
     'rm -f .git/index &&
      git-read-tree $treeH &&
-     git-checkout-cache -u -f -q -a &&
+     git-checkout-index -u -f -q -a &&
      echo frotz frotz >frotz &&
-     git-update-cache --add frotz &&
+     git-update-index --add frotz &&
      if read_tree_twoway $treeH $treeM; then false; else :; fi'
 
 test_expect_success \
     '9 - conflicting addition.' \
     'rm -f .git/index &&
      git-read-tree $treeH &&
-     git-checkout-cache -u -f -q -a &&
+     git-checkout-index -u -f -q -a &&
      echo frotz frotz >frotz &&
-     git-update-cache --add frotz &&
+     git-update-index --add frotz &&
      echo frotz >frotz &&
      if read_tree_twoway $treeH $treeM; then false; else :; fi'
 
@@ -166,9 +166,9 @@
     '10 - path removed.' \
     'rm -f .git/index &&
      git-read-tree $treeH &&
-     git-checkout-cache -u -f -q -a &&
+     git-checkout-index -u -f -q -a &&
      echo rezrov >rezrov &&
-     git-update-cache --add rezrov &&
+     git-update-index --add rezrov &&
      read_tree_twoway $treeH $treeM &&
      git-ls-files --stage >10.out &&
      diff -u M.out 10.out'
@@ -177,9 +177,9 @@
     '11 - dirty path removed.' \
     'rm -f .git/index &&
      git-read-tree $treeH &&
-     git-checkout-cache -u -f -q -a &&
+     git-checkout-index -u -f -q -a &&
      echo rezrov >rezrov &&
-     git-update-cache --add rezrov &&
+     git-update-index --add rezrov &&
      echo rezrov rezrov >rezrov &&
      if read_tree_twoway $treeH $treeM; then false; else :; fi'
 
@@ -187,18 +187,18 @@
     '12 - unmatching local changes being removed.' \
     'rm -f .git/index &&
      git-read-tree $treeH &&
-     git-checkout-cache -u -f -q -a &&
+     git-checkout-index -u -f -q -a &&
      echo rezrov rezrov >rezrov &&
-     git-update-cache --add rezrov &&
+     git-update-index --add rezrov &&
      if read_tree_twoway $treeH $treeM; then false; else :; fi'
 
 test_expect_success \
     '13 - unmatching local changes being removed.' \
     'rm -f .git/index &&
      git-read-tree $treeH &&
-     git-checkout-cache -u -f -q -a &&
+     git-checkout-index -u -f -q -a &&
      echo rezrov rezrov >rezrov &&
-     git-update-cache --add rezrov &&
+     git-update-index --add rezrov &&
      echo rezrov >rezrov &&
      if read_tree_twoway $treeH $treeM; then false; else :; fi'
 
@@ -211,9 +211,9 @@
     '14 - unchanged in two heads.' \
     'rm -f .git/index &&
      git-read-tree $treeH &&
-     git-checkout-cache -u -f -q -a &&
+     git-checkout-index -u -f -q -a &&
      echo nitfol nitfol >nitfol &&
-     git-update-cache --add nitfol &&
+     git-update-index --add nitfol &&
      read_tree_twoway $treeH $treeM &&
      git-ls-files --stage >14.out || return 1
      diff -u M.out 14.out >14diff.out
@@ -224,9 +224,9 @@
     '15 - unchanged in two heads.' \
     'rm -f .git/index &&
      git-read-tree $treeH &&
-     git-checkout-cache -u -f -q -a &&
+     git-checkout-index -u -f -q -a &&
      echo nitfol nitfol >nitfol &&
-     git-update-cache --add nitfol &&
+     git-update-index --add nitfol &&
      echo nitfol nitfol nitfol >nitfol &&
      read_tree_twoway $treeH $treeM &&
      git-ls-files --stage >15.out || return 1
@@ -238,18 +238,18 @@
     '16 - conflicting local change.' \
     'rm -f .git/index &&
      git-read-tree $treeH &&
-     git-checkout-cache -u -f -q -a &&
+     git-checkout-index -u -f -q -a &&
      echo bozbar bozbar >bozbar &&
-     git-update-cache --add bozbar &&
+     git-update-index --add bozbar &&
      if read_tree_twoway $treeH $treeM; then false; else :; fi'
 
 test_expect_success \
     '17 - conflicting local change.' \
     'rm -f .git/index &&
      git-read-tree $treeH &&
-     git-checkout-cache -u -f -q -a &&
+     git-checkout-index -u -f -q -a &&
      echo bozbar bozbar >bozbar &&
-     git-update-cache --add bozbar &&
+     git-update-index --add bozbar &&
      echo bozbar bozbar bozbar >bozbar &&
      if read_tree_twoway $treeH $treeM; then false; else :; fi'
 
@@ -257,9 +257,9 @@
     '18 - local change already having a good result.' \
     'rm -f .git/index &&
      git-read-tree $treeH &&
-     git-checkout-cache -u -f -q -a &&
+     git-checkout-index -u -f -q -a &&
      cat bozbar-new >bozbar &&
-     git-update-cache --add bozbar &&
+     git-update-index --add bozbar &&
      read_tree_twoway $treeH $treeM &&
      git-ls-files --stage >18.out &&
      diff -u M.out 18.out &&
@@ -269,9 +269,9 @@
     '19 - local change already having a good result, further modified.' \
     'rm -f .git/index &&
      git-read-tree $treeH &&
-     git-checkout-cache -u -f -q -a &&
+     git-checkout-index -u -f -q -a &&
      cat bozbar-new >bozbar &&
-     git-update-cache --add bozbar &&
+     git-update-index --add bozbar &&
      echo gnusto gnusto >bozbar &&
      read_tree_twoway $treeH $treeM &&
      git-ls-files --stage >19.out &&
@@ -282,9 +282,9 @@
     '20 - no local change, use new tree.' \
     'rm -f .git/index &&
      git-read-tree $treeH &&
-     git-checkout-cache -u -f -q -a &&
+     git-checkout-index -u -f -q -a &&
      cat bozbar-old >bozbar &&
-     git-update-cache --add bozbar &&
+     git-update-index --add bozbar &&
      read_tree_twoway $treeH $treeM &&
      git-ls-files --stage >20.out &&
      diff -u M.out 20.out &&
@@ -294,9 +294,9 @@
     '21 - no local change, dirty cache.' \
     'rm -f .git/index &&
      git-read-tree $treeH &&
-     git-checkout-cache -u -f -q -a &&
+     git-checkout-index -u -f -q -a &&
      cat bozbar-old >bozbar &&
-     git-update-cache --add bozbar &&
+     git-update-index --add bozbar &&
      echo gnusto gnusto >bozbar &&
      if read_tree_twoway $treeH $treeM; then false; else :; fi'
 
@@ -305,9 +305,9 @@
     '22 - local change cache updated.' \
     'rm -f .git/index &&
      git-read-tree $treeH &&
-     git-checkout-cache -u -f -q -a &&
+     git-checkout-index -u -f -q -a &&
      sed -e "s/such as/SUCH AS/" bozbar-old >bozbar &&
-     git-update-cache --add bozbar &&
+     git-update-index --add bozbar &&
      if read_tree_twoway $treeH $treeM; then false; else :; fi'
 
 # Also make sure we did not break DF vs DF/DF case.
@@ -315,7 +315,7 @@
     'DF vs DF/DF case setup.' \
     'rm -f .git/index &&
      echo DF >DF &&
-     git-update-cache --add DF &&
+     git-update-index --add DF &&
      treeDF=`git-write-tree` &&
      echo treeDF $treeDF &&
      git-ls-tree $treeDF &&
@@ -323,7 +323,7 @@
      rm -f DF &&
      mkdir DF &&
      echo DF/DF >DF/DF &&
-     git-update-cache --add --remove DF DF/DF &&
+     git-update-index --add --remove DF DF/DF &&
      treeDFDF=`git-write-tree` &&
      echo treeDFDF $treeDFDF &&
      git-ls-tree $treeDFDF &&
@@ -334,7 +334,7 @@
     'rm -f .git/index &&
      rm -fr DF &&
      echo DF >DF &&
-     git-update-cache --add DF &&
+     git-update-index --add DF &&
      read_tree_twoway $treeDF $treeDFDF &&
      git-ls-files --stage >DFDFcheck.out &&
      diff -u DFDF.out DFDFcheck.out &&
diff --git a/t/t1002-read-tree-m-u-2way.sh b/t/t1002-read-tree-m-u-2way.sh
index 512d897..861ef4c 100755
--- a/t/t1002-read-tree-m-u-2way.sh
+++ b/t/t1002-read-tree-m-u-2way.sh
@@ -40,13 +40,13 @@
      echo bozbar >bozbar &&
      echo rezrov >rezrov &&
      echo yomin >yomin &&
-     git-update-cache --add nitfol bozbar rezrov &&
+     git-update-index --add nitfol bozbar rezrov &&
      treeH=`git-write-tree` &&
      echo treeH $treeH &&
      git-ls-tree $treeH &&
 
      echo gnusto >bozbar &&
-     git-update-cache --add frotz bozbar --force-remove rezrov &&
+     git-update-index --add frotz bozbar --force-remove rezrov &&
      git-ls-files --stage >M.out &&
      treeM=`git-write-tree` &&
      echo treeM $treeM &&
@@ -71,7 +71,7 @@
 test_expect_success \
     '4 - carry forward local addition.' \
     'rm -f .git/index &&
-     git-update-cache --add yomin &&
+     git-update-index --add yomin &&
      git-read-tree -m -u $treeH $treeM &&
      git-ls-files --stage >4.out || return 1
      diff --unified=0 M.out 4.out >4diff.out
@@ -87,7 +87,7 @@
     '5 - carry forward local addition.' \
     'rm -f .git/index &&
      echo yomin >yomin &&
-     git-update-cache --add yomin &&
+     git-update-index --add yomin &&
      echo yomin yomin >yomin &&
      git-read-tree -m -u $treeH $treeM &&
      git-ls-files --stage >5.out || return 1
@@ -104,7 +104,7 @@
 test_expect_success \
     '6 - local addition already has the same.' \
     'rm -f .git/index &&
-     git-update-cache --add frotz &&
+     git-update-index --add frotz &&
      git-read-tree -m -u $treeH $treeM &&
      git-ls-files --stage >6.out &&
      diff --unified=0 M.out 6.out &&
@@ -119,7 +119,7 @@
     '7 - local addition already has the same.' \
     'rm -f .git/index &&
      echo frotz >frotz &&
-     git-update-cache --add frotz &&
+     git-update-index --add frotz &&
      echo frotz frotz >frotz &&
      git-read-tree -m -u $treeH $treeM &&
      git-ls-files --stage >7.out &&
@@ -136,14 +136,14 @@
     '8 - conflicting addition.' \
     'rm -f .git/index &&
      echo frotz frotz >frotz &&
-     git-update-cache --add frotz &&
+     git-update-index --add frotz &&
      if git-read-tree -m -u $treeH $treeM; then false; else :; fi'
 
 test_expect_success \
     '9 - conflicting addition.' \
     'rm -f .git/index &&
      echo frotz frotz >frotz &&
-     git-update-cache --add frotz &&
+     git-update-index --add frotz &&
      echo frotz >frotz &&
      if git-read-tree -m -u $treeH $treeM; then false; else :; fi'
 
@@ -151,7 +151,7 @@
     '10 - path removed.' \
     'rm -f .git/index &&
      echo rezrov >rezrov &&
-     git-update-cache --add rezrov &&
+     git-update-index --add rezrov &&
      git-read-tree -m -u $treeH $treeM &&
      git-ls-files --stage >10.out &&
      cmp M.out 10.out &&
@@ -162,7 +162,7 @@
     '11 - dirty path removed.' \
     'rm -f .git/index &&
      echo rezrov >rezrov &&
-     git-update-cache --add rezrov &&
+     git-update-index --add rezrov &&
      echo rezrov rezrov >rezrov &&
      if git-read-tree -m -u $treeH $treeM; then false; else :; fi'
 
@@ -170,14 +170,14 @@
     '12 - unmatching local changes being removed.' \
     'rm -f .git/index &&
      echo rezrov rezrov >rezrov &&
-     git-update-cache --add rezrov &&
+     git-update-index --add rezrov &&
      if git-read-tree -m -u $treeH $treeM; then false; else :; fi'
 
 test_expect_success \
     '13 - unmatching local changes being removed.' \
     'rm -f .git/index &&
      echo rezrov rezrov >rezrov &&
-     git-update-cache --add rezrov &&
+     git-update-index --add rezrov &&
      echo rezrov >rezrov &&
      if git-read-tree -m -u $treeH $treeM; then false; else :; fi'
 
@@ -190,7 +190,7 @@
     '14 - unchanged in two heads.' \
     'rm -f .git/index &&
      echo nitfol nitfol >nitfol &&
-     git-update-cache --add nitfol &&
+     git-update-index --add nitfol &&
      git-read-tree -m -u $treeH $treeM &&
      git-ls-files --stage >14.out || return 1
      diff --unified=0 M.out 14.out >14diff.out
@@ -209,7 +209,7 @@
     '15 - unchanged in two heads.' \
     'rm -f .git/index &&
      echo nitfol nitfol >nitfol &&
-     git-update-cache --add nitfol &&
+     git-update-index --add nitfol &&
      echo nitfol nitfol nitfol >nitfol &&
      git-read-tree -m -u $treeH $treeM &&
      git-ls-files --stage >15.out || return 1
@@ -229,14 +229,14 @@
     '16 - conflicting local change.' \
     'rm -f .git/index &&
      echo bozbar bozbar >bozbar &&
-     git-update-cache --add bozbar &&
+     git-update-index --add bozbar &&
      if git-read-tree -m -u $treeH $treeM; then false; else :; fi'
 
 test_expect_success \
     '17 - conflicting local change.' \
     'rm -f .git/index &&
      echo bozbar bozbar >bozbar &&
-     git-update-cache --add bozbar &&
+     git-update-index --add bozbar &&
      echo bozbar bozbar bozbar >bozbar &&
      if git-read-tree -m -u $treeH $treeM; then false; else :; fi'
 
@@ -244,7 +244,7 @@
     '18 - local change already having a good result.' \
     'rm -f .git/index &&
      echo gnusto >bozbar &&
-     git-update-cache --add bozbar &&
+     git-update-index --add bozbar &&
      git-read-tree -m -u $treeH $treeM &&
      git-ls-files --stage >18.out &&
      diff --unified=0 M.out 18.out &&
@@ -256,7 +256,7 @@
     '19 - local change already having a good result, further modified.' \
     'rm -f .git/index &&
      echo gnusto >bozbar &&
-     git-update-cache --add bozbar &&
+     git-update-index --add bozbar &&
      echo gnusto gnusto >bozbar &&
      git-read-tree -m -u $treeH $treeM &&
      git-ls-files --stage >19.out &&
@@ -275,7 +275,7 @@
     '20 - no local change, use new tree.' \
     'rm -f .git/index &&
      echo bozbar >bozbar &&
-     git-update-cache --add bozbar &&
+     git-update-index --add bozbar &&
      git-read-tree -m -u $treeH $treeM &&
      git-ls-files --stage >20.out &&
      diff --unified=0 M.out 20.out &&
@@ -287,7 +287,7 @@
     '21 - no local change, dirty cache.' \
     'rm -f .git/index &&
      echo bozbar >bozbar &&
-     git-update-cache --add bozbar &&
+     git-update-index --add bozbar &&
      echo gnusto gnusto >bozbar &&
      if git-read-tree -m -u $treeH $treeM; then false; else :; fi'
 
@@ -296,7 +296,7 @@
     'DF vs DF/DF case setup.' \
     'rm -f .git/index &&
      echo DF >DF &&
-     git-update-cache --add DF &&
+     git-update-index --add DF &&
      treeDF=`git-write-tree` &&
      echo treeDF $treeDF &&
      git-ls-tree $treeDF &&
@@ -304,7 +304,7 @@
      rm -f DF &&
      mkdir DF &&
      echo DF/DF >DF/DF &&
-     git-update-cache --add --remove DF DF/DF &&
+     git-update-index --add --remove DF DF/DF &&
      treeDFDF=`git-write-tree` &&
      echo treeDFDF $treeDFDF &&
      git-ls-tree $treeDFDF &&
@@ -315,7 +315,7 @@
     'rm -f .git/index &&
      rm -fr DF &&
      echo DF >DF &&
-     git-update-cache --add DF &&
+     git-update-index --add DF &&
      git-read-tree -m -u $treeDF $treeDFDF &&
      git-ls-files --stage >DFDFcheck.out &&
      diff --unified=0 DFDF.out DFDFcheck.out &&
diff --git a/t/t1005-read-tree-m-2way-emu23.sh b/t/t1005-read-tree-m-2way-emu23.sh
index 9227254..00c332a 100755
--- a/t/t1005-read-tree-m-2way-emu23.sh
+++ b/t/t1005-read-tree-m-2way-emu23.sh
@@ -25,7 +25,7 @@
 read_tree_twoway () {
     git-read-tree --emu23 "$1" "$2" &&
     git-ls-files --stage &&
-    git-merge-cache git-merge-one-file-script -a &&
+    git-merge-index ../../git-merge-one-file.sh -a &&
     git-ls-files --stage
 }
 
@@ -77,13 +77,13 @@
      cat bozbar-old >bozbar &&
      echo rezrov >rezrov &&
      echo yomin >yomin &&
-     git-update-cache --add nitfol bozbar rezrov &&
+     git-update-index --add nitfol bozbar rezrov &&
      treeH=`git-write-tree` &&
      echo treeH $treeH &&
      git-ls-tree $treeH &&
 
      cat bozbar-new >bozbar &&
-     git-update-cache --add frotz bozbar --force-remove rezrov &&
+     git-update-index --add frotz bozbar --force-remove rezrov &&
      git-ls-files --stage >M.out &&
      treeM=`git-write-tree` &&
      echo treeM $treeM &&
@@ -117,8 +117,8 @@
     '4 - carry forward local addition.' \
     'rm -f .git/index &&
      git-read-tree $treeH &&
-     git-checkout-cache -u -f -q -a &&
-     git-update-cache --add yomin &&
+     git-checkout-index -u -f -q -a &&
+     git-update-index --add yomin &&
      read_tree_twoway $treeH $treeM &&
      git-ls-files --stage >4.out || return 1
      diff -u M.out 4.out >4diff.out
@@ -131,9 +131,9 @@
     '5 - carry forward local addition.' \
     'rm -f .git/index &&
      git-read-tree $treeH &&
-     git-checkout-cache -u -f -q -a &&
+     git-checkout-index -u -f -q -a &&
      echo yomin >yomin &&
-     git-update-cache --add yomin &&
+     git-update-index --add yomin &&
      echo yomin yomin >yomin &&
      read_tree_twoway $treeH $treeM &&
      git-ls-files --stage >5.out || return 1
@@ -147,8 +147,8 @@
     '6 - local addition already has the same.' \
     'rm -f .git/index &&
      git-read-tree $treeH &&
-     git-checkout-cache -u -f -q -a &&
-     git-update-cache --add frotz &&
+     git-checkout-index -u -f -q -a &&
+     git-update-index --add frotz &&
      read_tree_twoway $treeH $treeM &&
      git-ls-files --stage >6.out &&
      diff -u M.out 6.out &&
@@ -160,9 +160,9 @@
     '7 - local addition already has the same.' \
     'rm -f .git/index &&
      git-read-tree $treeH &&
-     git-checkout-cache -u -f -q -a &&
+     git-checkout-index -u -f -q -a &&
      echo frotz >frotz &&
-     git-update-cache --add frotz &&
+     git-update-index --add frotz &&
      echo frotz frotz >frotz &&
      read_tree_twoway $treeH $treeM &&
      git-ls-files --stage >7.out &&
@@ -173,18 +173,18 @@
     '8 - conflicting addition.' \
     'rm -f .git/index &&
      git-read-tree $treeH &&
-     git-checkout-cache -u -f -q -a &&
+     git-checkout-index -u -f -q -a &&
      echo frotz frotz >frotz &&
-     git-update-cache --add frotz &&
+     git-update-index --add frotz &&
      if read_tree_twoway $treeH $treeM; then false; else :; fi'
 
 test_expect_success \
     '9 - conflicting addition.' \
     'rm -f .git/index &&
      git-read-tree $treeH &&
-     git-checkout-cache -u -f -q -a &&
+     git-checkout-index -u -f -q -a &&
      echo frotz frotz >frotz &&
-     git-update-cache --add frotz &&
+     git-update-index --add frotz &&
      echo frotz >frotz &&
      if read_tree_twoway $treeH $treeM; then false; else :; fi'
 
@@ -192,9 +192,9 @@
     '10 - path removed.' \
     'rm -f .git/index &&
      git-read-tree $treeH &&
-     git-checkout-cache -u -f -q -a &&
+     git-checkout-index -u -f -q -a &&
      echo rezrov >rezrov &&
-     git-update-cache --add rezrov &&
+     git-update-index --add rezrov &&
      read_tree_twoway $treeH $treeM &&
      git-ls-files --stage >10.out &&
      diff -u M.out 10.out'
@@ -203,9 +203,9 @@
     '11 - dirty path removed.' \
     'rm -f .git/index &&
      git-read-tree $treeH &&
-     git-checkout-cache -u -f -q -a &&
+     git-checkout-index -u -f -q -a &&
      echo rezrov >rezrov &&
-     git-update-cache --add rezrov &&
+     git-update-index --add rezrov &&
      echo rezrov rezrov >rezrov &&
      if read_tree_twoway $treeH $treeM; then false; else :; fi'
 
@@ -213,18 +213,18 @@
     '12 - unmatching local changes being removed.' \
     'rm -f .git/index &&
      git-read-tree $treeH &&
-     git-checkout-cache -u -f -q -a &&
+     git-checkout-index -u -f -q -a &&
      echo rezrov rezrov >rezrov &&
-     git-update-cache --add rezrov &&
+     git-update-index --add rezrov &&
      if read_tree_twoway $treeH $treeM; then false; else :; fi'
 
 test_expect_success \
     '13 - unmatching local changes being removed.' \
     'rm -f .git/index &&
      git-read-tree $treeH &&
-     git-checkout-cache -u -f -q -a &&
+     git-checkout-index -u -f -q -a &&
      echo rezrov rezrov >rezrov &&
-     git-update-cache --add rezrov &&
+     git-update-index --add rezrov &&
      echo rezrov >rezrov &&
      if read_tree_twoway $treeH $treeM; then false; else :; fi'
 
@@ -237,9 +237,9 @@
     '14 - unchanged in two heads.' \
     'rm -f .git/index &&
      git-read-tree $treeH &&
-     git-checkout-cache -u -f -q -a &&
+     git-checkout-index -u -f -q -a &&
      echo nitfol nitfol >nitfol &&
-     git-update-cache --add nitfol &&
+     git-update-index --add nitfol &&
      read_tree_twoway $treeH $treeM &&
      git-ls-files --stage >14.out || return 1
      diff -u M.out 14.out >14diff.out
@@ -250,9 +250,9 @@
     '15 - unchanged in two heads.' \
     'rm -f .git/index &&
      git-read-tree $treeH &&
-     git-checkout-cache -u -f -q -a &&
+     git-checkout-index -u -f -q -a &&
      echo nitfol nitfol >nitfol &&
-     git-update-cache --add nitfol &&
+     git-update-index --add nitfol &&
      echo nitfol nitfol nitfol >nitfol &&
      read_tree_twoway $treeH $treeM &&
      git-ls-files --stage >15.out || return 1
@@ -268,9 +268,9 @@
     '16 - conflicting local change.' \
     'rm -f .git/index &&
      git-read-tree $treeH &&
-     git-checkout-cache -u -f -q -a &&
+     git-checkout-index -u -f -q -a &&
      echo bozbar bozbar >bozbar &&
-     git-update-cache --add bozbar &&
+     git-update-index --add bozbar &&
      git-read-tree --emu23 $treeH $treeM &&
      check_stages' <<\EOF
 100644 X 1	bozbar
@@ -286,9 +286,9 @@
     '17 - conflicting local change.' \
     'rm -f .git/index &&
      git-read-tree $treeH &&
-     git-checkout-cache -u -f -q -a &&
+     git-checkout-index -u -f -q -a &&
      echo bozbar bozbar >bozbar &&
-     git-update-cache --add bozbar &&
+     git-update-index --add bozbar &&
      echo bozbar bozbar bozbar >bozbar &&
      if read_tree_twoway $treeH $treeM; then false; else :; fi'
 
@@ -296,9 +296,9 @@
     '18 - local change already having a good result.' \
     'rm -f .git/index &&
      git-read-tree $treeH &&
-     git-checkout-cache -u -f -q -a &&
+     git-checkout-index -u -f -q -a &&
      cat bozbar-new >bozbar &&
-     git-update-cache --add bozbar &&
+     git-update-index --add bozbar &&
      read_tree_twoway $treeH $treeM &&
      git-ls-files --stage >18.out &&
      diff -u M.out 18.out &&
@@ -308,9 +308,9 @@
     '19 - local change already having a good result, further modified.' \
     'rm -f .git/index &&
      git-read-tree $treeH &&
-     git-checkout-cache -u -f -q -a &&
+     git-checkout-index -u -f -q -a &&
      cat bozbar-new >bozbar &&
-     git-update-cache --add bozbar &&
+     git-update-index --add bozbar &&
      echo gnusto gnusto >bozbar &&
      read_tree_twoway $treeH $treeM &&
      git-ls-files --stage >19.out &&
@@ -321,9 +321,9 @@
     '20 - no local change, use new tree.' \
     'rm -f .git/index &&
      git-read-tree $treeH &&
-     git-checkout-cache -u -f -q -a &&
+     git-checkout-index -u -f -q -a &&
      cat bozbar-old >bozbar &&
-     git-update-cache --add bozbar &&
+     git-update-index --add bozbar &&
      read_tree_twoway $treeH $treeM &&
      git-ls-files --stage >20.out &&
      diff -u M.out 20.out &&
@@ -333,9 +333,9 @@
     '21 - no local change, dirty cache.' \
     'rm -f .git/index &&
      git-read-tree $treeH &&
-     git-checkout-cache -u -f -q -a &&
+     git-checkout-index -u -f -q -a &&
      cat bozbar-old >bozbar &&
-     git-update-cache --add bozbar &&
+     git-update-index --add bozbar &&
      echo gnusto gnusto >bozbar &&
      if read_tree_twoway $treeH $treeM; then false; else :; fi'
 
@@ -348,9 +348,9 @@
     '22 - local change cache updated.' \
     'rm -f .git/index &&
      git-read-tree $treeH &&
-     git-checkout-cache -u -f -q -a &&
+     git-checkout-index -u -f -q -a &&
      sed -e "s/such as/SUCH AS/" bozbar-old >bozbar &&
-     git-update-cache --add bozbar &&
+     git-update-index --add bozbar &&
      read_tree_twoway $treeH $treeM &&
      git-ls-files --stage >22.out || return 1
      diff -u M.out 22.out >22diff.out
@@ -362,7 +362,7 @@
     'DF vs DF/DF case setup.' \
     'rm -f .git/index &&
      echo DF >DF &&
-     git-update-cache --add DF &&
+     git-update-index --add DF &&
      treeDF=`git-write-tree` &&
      echo treeDF $treeDF &&
      git-ls-tree $treeDF &&
@@ -371,7 +371,7 @@
      rm -f DF &&
      mkdir DF &&
      echo DF/DF >DF/DF &&
-     git-update-cache --add --remove DF DF/DF &&
+     git-update-index --add --remove DF DF/DF &&
      treeDFDF=`git-write-tree` &&
      echo treeDFDF $treeDFDF &&
      git-ls-tree $treeDFDF &&
@@ -382,7 +382,7 @@
     'rm -f .git/index &&
      rm -fr DF &&
      echo DF >DF &&
-     git-update-cache --add DF &&
+     git-update-index --add DF &&
      read_tree_twoway $treeDF $treeDFDF &&
      git-ls-files --stage >DFDFcheck.out &&
      diff -u DFDF.out DFDFcheck.out &&
@@ -396,7 +396,7 @@
      rm -fr DF &&
      mkdir DF &&
      echo DF/DF >DF/DF &&
-     git-update-cache --add DF/DF &&
+     git-update-index --add DF/DF &&
      read_tree_twoway $treeDFDF $treeDF &&
      git-ls-files --stage >DFDFcheck.out &&
      diff -u DF.out DFDFcheck.out &&
@@ -411,7 +411,7 @@
      rm -fr DF &&
      mkdir DF &&
      echo DF/DF >DF/DF &&
-     git-update-cache --add DF/DF &&
+     git-update-index --add DF/DF &&
      # This should fail because I and H have a conflict
      # at DF.
      if git-read-tree --emu23 $treeDF $treeDFDF
diff --git a/t/t2000-checkout-cache-clash.sh b/t/t2000-checkout-cache-clash.sh
index a2c4260..03ea4de 100755
--- a/t/t2000-checkout-cache-clash.sh
+++ b/t/t2000-checkout-cache-clash.sh
@@ -3,7 +3,7 @@
 # Copyright (c) 2005 Junio C Hamano
 #
 
-test_description='git-checkout-cache test.
+test_description='git-checkout-index test.
 
 This test registers the following filesystem structure in the
 cache:
@@ -16,7 +16,7 @@
     path0/file0 - a file in a directory
     path1       - a file
 
-The git-checkout-cache command should fail when attempting to checkout
+The git-checkout-index command should fail when attempting to checkout
 path0, finding it is occupied by a directory, and path1/file1, finding
 path1 is occupied by a non-directory.  With "-f" flag, it should remove
 the conflicting paths and succeed.
@@ -28,8 +28,8 @@
 date >path1/file1
 
 test_expect_success \
-    'git-update-cache --add various paths.' \
-    'git-update-cache --add path0 path1/file1'
+    'git-update-index --add various paths.' \
+    'git-update-index --add path0 path1/file1'
 
 rm -fr path0 path1
 mkdir path0
@@ -37,15 +37,15 @@
 date >path1
 
 test_expect_failure \
-    'git-checkout-cache without -f should fail on conflicting work tree.' \
-    'git-checkout-cache -a'
+    'git-checkout-index without -f should fail on conflicting work tree.' \
+    'git-checkout-index -a'
 
 test_expect_success \
-    'git-checkout-cache with -f should succeed.' \
-    'git-checkout-cache -f -a'
+    'git-checkout-index with -f should succeed.' \
+    'git-checkout-index -f -a'
 
 test_expect_success \
-    'git-checkout-cache conflicting paths.' \
+    'git-checkout-index conflicting paths.' \
     'test -f path0 && test -d path1 && test -f path1/file1'
 
 test_done
diff --git a/t/t2001-checkout-cache-clash.sh b/t/t2001-checkout-cache-clash.sh
index f0e3d1d..b1c5263 100755
--- a/t/t2001-checkout-cache-clash.sh
+++ b/t/t2001-checkout-cache-clash.sh
@@ -3,7 +3,7 @@
 # Copyright (c) 2005 Junio C Hamano
 #
 
-test_description='git-checkout-cache test.
+test_description='git-checkout-index test.
 
 This test registers the following filesystem structure in the cache:
 
@@ -36,8 +36,8 @@
 mkdir path0
 date >path0/file0
 test_expect_success \
-    'git-update-cache --add path0/file0' \
-    'git-update-cache --add path0/file0'
+    'git-update-index --add path0/file0' \
+    'git-update-index --add path0/file0'
 test_expect_success \
     'writing tree out with git-write-tree' \
     'tree1=$(git-write-tree)'
@@ -46,8 +46,8 @@
 mkdir path1
 date >path1/file1
 test_expect_success \
-    'git-update-cache --add path1/file1' \
-    'git-update-cache --add path1/file1'
+    'git-update-index --add path1/file1' \
+    'git-update-index --add path1/file1'
 test_expect_success \
     'writing tree out with git-write-tree' \
     'tree2=$(git-write-tree)'
@@ -56,13 +56,13 @@
 rm -fr path1
 test_expect_success \
     'read previously written tree and checkout.' \
-    'git-read-tree -m $tree1 && git-checkout-cache -f -a'
+    'git-read-tree -m $tree1 && git-checkout-index -f -a'
 test_debug 'show_files $tree1'
 
 ln -s path0 path1
 test_expect_success \
-    'git-update-cache --add a symlink.' \
-    'git-update-cache --add path1'
+    'git-update-index --add a symlink.' \
+    'git-update-index --add path1'
 test_expect_success \
     'writing tree out with git-write-tree' \
     'tree3=$(git-write-tree)'
@@ -73,7 +73,7 @@
 
 test_expect_success \
     'read previously written tree and checkout.' \
-    'git-read-tree $tree2 && git-checkout-cache -f -a'
+    'git-read-tree $tree2 && git-checkout-index -f -a'
 test_debug show_files $tree2
 
 test_expect_success \
diff --git a/t/t2002-checkout-cache-u.sh b/t/t2002-checkout-cache-u.sh
index 69146ac..4352ddb 100755
--- a/t/t2002-checkout-cache-u.sh
+++ b/t/t2002-checkout-cache-u.sh
@@ -3,31 +3,31 @@
 # Copyright (c) 2005 Junio C Hamano
 #
 
-test_description='git-checkout-cache -u test.
+test_description='git-checkout-index -u test.
 
-With -u flag, git-checkout-cache internally runs the equivalent of
-git-update-cache --refresh on the checked out entry.'
+With -u flag, git-checkout-index internally runs the equivalent of
+git-update-index --refresh on the checked out entry.'
 
 . ./test-lib.sh
 
 test_expect_success \
 'preparation' '
 echo frotz >path0 &&
-git-update-cache --add path0 &&
+git-update-index --add path0 &&
 t=$(git-write-tree)'
 
 test_expect_failure \
-'without -u, git-checkout-cache smudges stat information.' '
+'without -u, git-checkout-index smudges stat information.' '
 rm -f path0 &&
 git-read-tree $t &&
-git-checkout-cache -f -a &&
+git-checkout-index -f -a &&
 git-diff-files | diff - /dev/null'
 
 test_expect_success \
-'with -u, git-checkout-cache picks up stat information from new files.' '
+'with -u, git-checkout-index picks up stat information from new files.' '
 rm -f path0 &&
 git-read-tree $t &&
-git-checkout-cache -u -f -a &&
+git-checkout-index -u -f -a &&
 git-diff-files | diff - /dev/null'
 
 test_done
diff --git a/t/t2003-checkout-cache-mkdir.sh b/t/t2003-checkout-cache-mkdir.sh
index ed5e4ee..f9bc90a 100755
--- a/t/t2003-checkout-cache-mkdir.sh
+++ b/t/t2003-checkout-cache-mkdir.sh
@@ -3,7 +3,7 @@
 # Copyright (c) 2005 Junio C Hamano
 #
 
-test_description='git-checkout-cache --prefix test.
+test_description='git-checkout-index --prefix test.
 
 This test makes sure that --prefix option works as advertised, and
 also verifies that such leading path may contain symlinks, unlike
@@ -17,14 +17,14 @@
     'mkdir path1 &&
     echo frotz >path0 &&
     echo rezrov >path1/file1 &&
-    git-update-cache --add path0 path1/file1'
+    git-update-index --add path0 path1/file1'
 
 test_expect_success \
     'have symlink in place where dir is expected.' \
     'rm -fr path0 path1 &&
      mkdir path2 &&
      ln -s path2 path1 &&
-     git-checkout-cache -f -a &&
+     git-checkout-index -f -a &&
      test ! -h path1 && test -d path1 &&
      test -f path1/file1 && test ! -f path2/file1'
 
@@ -32,7 +32,7 @@
     'use --prefix=path2/' \
     'rm -fr path0 path1 path2 &&
      mkdir path2 &&
-     git-checkout-cache --prefix=path2/ -f -a &&
+     git-checkout-index --prefix=path2/ -f -a &&
      test -f path2/path0 &&
      test -f path2/path1/file1 &&
      test ! -f path0 &&
@@ -41,7 +41,7 @@
 test_expect_success \
     'use --prefix=tmp-' \
     'rm -fr path0 path1 path2 tmp* &&
-     git-checkout-cache --prefix=tmp- -f -a &&
+     git-checkout-index --prefix=tmp- -f -a &&
      test -f tmp-path0 &&
      test -f tmp-path1/file1 &&
      test ! -f path0 &&
@@ -52,7 +52,7 @@
     'rm -fr path0 path1 path2 tmp* &&
      echo nitfol >tmp-path1 &&
      mkdir tmp-path0 &&
-     git-checkout-cache --prefix=tmp- -f -a &&
+     git-checkout-index --prefix=tmp- -f -a &&
      test -f tmp-path0 &&
      test -f tmp-path1/file1 &&
      test ! -f path0 &&
@@ -64,7 +64,7 @@
     'rm -fr path0 path1 path2 tmp* &&
      mkdir tmp1 tmp1/orary &&
      ln -s tmp1 tmp &&
-     git-checkout-cache --prefix=tmp/orary/ -f -a &&
+     git-checkout-index --prefix=tmp/orary/ -f -a &&
      test -d tmp1/orary &&
      test -f tmp1/orary/path0 &&
      test -f tmp1/orary/path1/file1 &&
@@ -76,7 +76,7 @@
     'rm -fr path0 path1 path2 tmp* &&
      mkdir tmp1 &&
      ln -s tmp1 tmp &&
-     git-checkout-cache --prefix=tmp/orary- -f -a &&
+     git-checkout-index --prefix=tmp/orary- -f -a &&
      test -f tmp1/orary-path0 &&
      test -f tmp1/orary-path1/file1 &&
      test -h tmp'
@@ -87,7 +87,7 @@
     'rm -fr path0 path1 path2 tmp* &&
      mkdir tmp1 &&
      ln -s tmp1 tmp-path1 &&
-     git-checkout-cache --prefix=tmp- -f -a &&
+     git-checkout-index --prefix=tmp- -f -a &&
      test -f tmp-path0 &&
      test ! -h tmp-path1 &&
      test -d tmp-path1 &&
diff --git a/t/t2100-update-cache-badpath.sh b/t/t2100-update-cache-badpath.sh
index 86b7375..5bc0a3b 100755
--- a/t/t2100-update-cache-badpath.sh
+++ b/t/t2100-update-cache-badpath.sh
@@ -3,7 +3,7 @@
 # Copyright (c) 2005 Junio C Hamano
 #
 
-test_description='git-update-cache nonsense-path test.
+test_description='git-update-index nonsense-path test.
 
 This test creates the following structure in the cache:
 
@@ -12,7 +12,7 @@
     path2/file2 - a file in a directory
     path3/file3 - a file in a directory
 
-and tries to git-update-cache --add the following:
+and tries to git-update-index --add the following:
 
     path0/file0 - a file in a directory
     path1/file1 - a file in a directory
@@ -31,8 +31,8 @@
 date >path3/file3
 
 test_expect_success \
-    'git-update-cache --add to add various paths.' \
-    'git-update-cache --add -- path0 path1 path2/file2 path3/file3'
+    'git-update-index --add to add various paths.' \
+    'git-update-index --add -- path0 path1 path2/file2 path3/file3'
 
 rm -fr path?
 
@@ -45,7 +45,7 @@
 for p in path0/file0 path1/file1 path2 path3
 do
 	test_expect_failure \
-	    "git-update-cache to add conflicting path $p should fail." \
-	    "git-update-cache --add -- $p"
+	    "git-update-index to add conflicting path $p should fail." \
+	    "git-update-index --add -- $p"
 done
 test_done
diff --git a/t/t3010-ls-files-killed.sh b/t/t3010-ls-files-killed.sh
index c4d6d21..2e18baa 100755
--- a/t/t3010-ls-files-killed.sh
+++ b/t/t3010-ls-files-killed.sh
@@ -33,8 +33,8 @@
 date >path2/file2
 date >path3/file3
 test_expect_success \
-    'git-update-cache --add to add various paths.' \
-    "git-update-cache --add -- path0 path1 path?/file?"
+    'git-update-index --add to add various paths.' \
+    "git-update-index --add -- path0 path1 path?/file?"
 
 rm -fr path?
 date >path2
diff --git a/t/t3100-ls-tree-restrict.sh b/t/t3100-ls-tree-restrict.sh
index 61a7c7f..c6ce56c 100755
--- a/t/t3100-ls-tree-restrict.sh
+++ b/t/t3100-ls-tree-restrict.sh
@@ -27,7 +27,7 @@
      ln -s ../path1 path2/bazbo &&
      echo Mi >path2/baz/b &&
      find path? \( -type f -o -type l \) -print |
-     xargs git-update-cache --add &&
+     xargs git-update-index --add &&
      tree=`git-write-tree` &&
      echo $tree'
 
diff --git a/t/t4000-diff-format.sh b/t/t4000-diff-format.sh
index 3accb14..91015d7 100755
--- a/t/t4000-diff-format.sh
+++ b/t/t4000-diff-format.sh
@@ -16,7 +16,7 @@
 
 test_expect_success \
     'update-cache --add two files with and without +x.' \
-    'git-update-cache --add path0 path1'
+    'git-update-index --add path0 path1'
 
 mv path0 path0-
 sed -e 's/line/Line/' <path0- >path0
diff --git a/t/t4001-diff-rename.sh b/t/t4001-diff-rename.sh
index 80edae6..be47485 100755
--- a/t/t4001-diff-rename.sh
+++ b/t/t4001-diff-rename.sh
@@ -27,7 +27,7 @@
 
 test_expect_success \
     'update-cache --add a file.' \
-    'git-update-cache --add path0'
+    'git-update-index --add path0'
 
 test_expect_success \
     'write that tree.' \
@@ -37,11 +37,11 @@
 rm -f path0
 test_expect_success \
     'renamed and edited the file.' \
-    'git-update-cache --add --remove path0 path1'
+    'git-update-index --add --remove path0 path1'
 
 test_expect_success \
-    'git-diff-cache -p -M after rename and editing.' \
-    'git-diff-cache -p -M $tree >current'
+    'git-diff-index -p -M after rename and editing.' \
+    'git-diff-index -p -M $tree >current'
 cat >expected <<\EOF
 diff --git a/path0 b/path1
 rename from path0
diff --git a/t/t4002-diff-basic.sh b/t/t4002-diff-basic.sh
index 2ec2961..769274a 100755
--- a/t/t4002-diff-basic.sh
+++ b/t/t4002-diff-basic.sh
@@ -171,28 +171,28 @@
 test_expect_success \
     'diff-cache O with A in cache' \
     'git-read-tree $tree_A &&
-     git-diff-cache --cached $tree_O >.test-a &&
+     git-diff-index --cached $tree_O >.test-a &&
      cmp -s .test-a .test-recursive-OA'
 
 test_expect_success \
     'diff-cache O with B in cache' \
     'git-read-tree $tree_B &&
-     git-diff-cache --cached $tree_O >.test-a &&
+     git-diff-index --cached $tree_O >.test-a &&
      cmp -s .test-a .test-recursive-OB'
 
 test_expect_success \
     'diff-cache A with B in cache' \
     'git-read-tree $tree_B &&
-     git-diff-cache --cached $tree_A >.test-a &&
+     git-diff-index --cached $tree_A >.test-a &&
      cmp -s .test-a .test-recursive-AB'
 
 test_expect_success \
     'diff-files with O in cache and A checked out' \
     'rm -fr Z [A-Z][A-Z] &&
      git-read-tree $tree_A &&
-     git-checkout-cache -f -a &&
+     git-checkout-index -f -a &&
      git-read-tree -m $tree_O || return 1
-     git-update-cache --refresh >/dev/null ;# this can exit non-zero
+     git-update-index --refresh >/dev/null ;# this can exit non-zero
      git-diff-files >.test-a &&
      cmp_diff_files_output .test-a .test-recursive-OA'
 
@@ -200,9 +200,9 @@
     'diff-files with O in cache and B checked out' \
     'rm -fr Z [A-Z][A-Z] &&
      git-read-tree $tree_B &&
-     git-checkout-cache -f -a &&
+     git-checkout-index -f -a &&
      git-read-tree -m $tree_O || return 1
-     git-update-cache --refresh >/dev/null ;# this can exit non-zero
+     git-update-index --refresh >/dev/null ;# this can exit non-zero
      git-diff-files >.test-a &&
      cmp_diff_files_output .test-a .test-recursive-OB'
 
@@ -210,9 +210,9 @@
     'diff-files with A in cache and B checked out' \
     'rm -fr Z [A-Z][A-Z] &&
      git-read-tree $tree_B &&
-     git-checkout-cache -f -a &&
+     git-checkout-index -f -a &&
      git-read-tree -m $tree_A || return 1
-     git-update-cache --refresh >/dev/null ;# this can exit non-zero
+     git-update-index --refresh >/dev/null ;# this can exit non-zero
      git-diff-files >.test-a &&
      cmp_diff_files_output .test-a .test-recursive-AB'
 
diff --git a/t/t4003-diff-rename-1.sh b/t/t4003-diff-rename-1.sh
index 8e3091a..2751970 100755
--- a/t/t4003-diff-rename-1.sh
+++ b/t/t4003-diff-rename-1.sh
@@ -13,7 +13,7 @@
     'prepare reference tree' \
     'cat ../../COPYING >COPYING &&
      echo frotz >rezrov &&
-    git-update-cache --add COPYING rezrov &&
+    git-update-index --add COPYING rezrov &&
     tree=$(git-write-tree) &&
     echo $tree'
 
@@ -22,14 +22,14 @@
     'sed -e 's/HOWEVER/However/' <COPYING >COPYING.1 &&
     sed -e 's/GPL/G.P.L/g' <COPYING >COPYING.2 &&
     rm -f COPYING &&
-    git-update-cache --add --remove COPYING COPYING.?'
+    git-update-index --add --remove COPYING COPYING.?'
 
 # tree has COPYING and rezrov.  work tree has COPYING.1 and COPYING.2,
 # both are slightly edited, and unchanged rezrov.  So we say you
 # copy-and-edit one, and rename-and-edit the other.  We do not say
 # anything about rezrov.
 
-GIT_DIFF_OPTS=--unified=0 git-diff-cache -M -p $tree >current
+GIT_DIFF_OPTS=--unified=0 git-diff-index -M -p $tree >current
 cat >expected <<\EOF
 diff --git a/COPYING b/COPYING.1
 copy from COPYING
@@ -62,14 +62,14 @@
 test_expect_success \
     'prepare work tree again' \
     'mv COPYING.2 COPYING &&
-     git-update-cache --add --remove COPYING COPYING.1 COPYING.2'
+     git-update-index --add --remove COPYING COPYING.1 COPYING.2'
 
 # tree has COPYING and rezrov.  work tree has COPYING and COPYING.1,
 # both are slightly edited, and unchanged rezrov.  So we say you
 # edited one, and copy-and-edit the other.  We do not say
 # anything about rezrov.
 
-GIT_DIFF_OPTS=--unified=0 git-diff-cache -C -p $tree >current
+GIT_DIFF_OPTS=--unified=0 git-diff-index -C -p $tree >current
 cat >expected <<\EOF
 diff --git a/COPYING b/COPYING
 --- a/COPYING
@@ -100,16 +100,16 @@
 test_expect_success \
     'prepare work tree once again' \
     'cat ../../COPYING >COPYING &&
-     git-update-cache --add --remove COPYING COPYING.1'
+     git-update-index --add --remove COPYING COPYING.1'
 
 # tree has COPYING and rezrov.  work tree has COPYING and COPYING.1,
 # but COPYING is not edited.  We say you copy-and-edit COPYING.1; this
 # is only possible because -C mode now reports the unmodified file to
 # the diff-core.  Unchanged rezrov, although being fed to
-# git-diff-cache as well, should not be mentioned.
+# git-diff-index as well, should not be mentioned.
 
 GIT_DIFF_OPTS=--unified=0 \
-    git-diff-cache -C --find-copies-harder -p $tree >current
+    git-diff-index -C --find-copies-harder -p $tree >current
 cat >expected <<\EOF
 diff --git a/COPYING b/COPYING.1
 copy from COPYING
diff --git a/t/t4004-diff-rename-symlink.sh b/t/t4004-diff-rename-symlink.sh
index 010dd87..f59614a 100755
--- a/t/t4004-diff-rename-symlink.sh
+++ b/t/t4004-diff-rename-symlink.sh
@@ -15,7 +15,7 @@
     'prepare reference tree' \
     'echo xyzzy | tr -d '\\\\'012 >yomin &&
      ln -s xyzzy frotz &&
-    git-update-cache --add frotz yomin &&
+    git-update-index --add frotz yomin &&
     tree=$(git-write-tree) &&
     echo $tree'
 
@@ -25,7 +25,7 @@
      rm -f yomin &&
      ln -s xyzzy nitfol &&
      ln -s xzzzy bozbar &&
-    git-update-cache --add --remove frotz rezrov nitfol bozbar yomin'
+    git-update-index --add --remove frotz rezrov nitfol bozbar yomin'
 
 # tree has frotz pointing at xyzzy, and yomin that contains xyzzy to
 # confuse things.  work tree has rezrov (xyzzy) nitfol (xyzzy) and
@@ -33,7 +33,7 @@
 # rezrov and nitfol are rename/copy of frotz and bozbar should be
 # a new creation.
 
-GIT_DIFF_OPTS=--unified=0 git-diff-cache -M -p $tree >current
+GIT_DIFF_OPTS=--unified=0 git-diff-index -M -p $tree >current
 cat >expected <<\EOF
 diff --git a/bozbar b/bozbar
 new file mode 120000
diff --git a/t/t4005-diff-rename-2.sh b/t/t4005-diff-rename-2.sh
index cee06e4..5636f4f 100755
--- a/t/t4005-diff-rename-2.sh
+++ b/t/t4005-diff-rename-2.sh
@@ -13,7 +13,7 @@
     'prepare reference tree' \
     'cat ../../COPYING >COPYING &&
      echo frotz >rezrov &&
-    git-update-cache --add COPYING rezrov &&
+    git-update-index --add COPYING rezrov &&
     tree=$(git-write-tree) &&
     echo $tree'
 
@@ -22,14 +22,14 @@
     'sed -e 's/HOWEVER/However/' <COPYING >COPYING.1 &&
     sed -e 's/GPL/G.P.L/g' <COPYING >COPYING.2 &&
     rm -f COPYING &&
-    git-update-cache --add --remove COPYING COPYING.?'
+    git-update-index --add --remove COPYING COPYING.?'
 
 # tree has COPYING and rezrov.  work tree has COPYING.1 and COPYING.2,
 # both are slightly edited, and unchanged rezrov.  We say COPYING.1
 # and COPYING.2 are based on COPYING, and do not say anything about
 # rezrov.
 
-git-diff-cache -M $tree >current
+git-diff-index -M $tree >current
 
 cat >expected <<\EOF
 :100644 100644 6ff87c4664981e4397625791c8ea3bbb5f2279a3 0603b3238a076dc6c8022aedc6648fa523a17178 C1234	COPYING	COPYING.1
@@ -77,14 +77,14 @@
 test_expect_success \
     'prepare work tree again' \
     'mv COPYING.2 COPYING &&
-     git-update-cache --add --remove COPYING COPYING.1 COPYING.2'
+     git-update-index --add --remove COPYING COPYING.1 COPYING.2'
 
 # tree has COPYING and rezrov.  work tree has COPYING and COPYING.1,
 # both are slightly edited, and unchanged rezrov.  We say COPYING.1
 # is based on COPYING and COPYING is still there, and do not say anything
 # about rezrov.
 
-git-diff-cache -C $tree >current
+git-diff-index -C $tree >current
 cat >expected <<\EOF
 :100644 100644 6ff87c4664981e4397625791c8ea3bbb5f2279a3 06c67961bbaed34a127f76d261f4c0bf73eda471 M	COPYING
 :100644 100644 6ff87c4664981e4397625791c8ea3bbb5f2279a3 0603b3238a076dc6c8022aedc6648fa523a17178 C1234	COPYING	COPYING.1
@@ -134,9 +134,9 @@
 test_expect_success \
     'prepare work tree once again' \
     'cat ../../COPYING >COPYING &&
-     git-update-cache --add --remove COPYING COPYING.1'
+     git-update-index --add --remove COPYING COPYING.1'
 
-git-diff-cache -C --find-copies-harder $tree >current
+git-diff-index -C --find-copies-harder $tree >current
 cat >expected <<\EOF
 :100644 100644 6ff87c4664981e4397625791c8ea3bbb5f2279a3 0603b3238a076dc6c8022aedc6648fa523a17178 C1234	COPYING	COPYING.1
 EOF
diff --git a/t/t4006-diff-mode.sh b/t/t4006-diff-mode.sh
index 90fd21f..e2a67e9 100755
--- a/t/t4006-diff-mode.sh
+++ b/t/t4006-diff-mode.sh
@@ -11,15 +11,15 @@
 test_expect_success \
     'setup' \
     'echo frotz >rezrov &&
-     git-update-cache --add rezrov &&
+     git-update-index --add rezrov &&
      tree=`git-write-tree` &&
      echo $tree'
 
 test_expect_success \
     'chmod' \
     'chmod +x rezrov &&
-     git-update-cache rezrov &&
-     git-diff-cache $tree >current'
+     git-update-index rezrov &&
+     git-diff-index $tree >current'
 
 _x40='[0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f]'
 _x40="$_x40$_x40$_x40$_x40$_x40$_x40$_x40$_x40"
diff --git a/t/t4007-rename-3.sh b/t/t4007-rename-3.sh
index 042390a..bb6ba69 100755
--- a/t/t4007-rename-3.sh
+++ b/t/t4007-rename-3.sh
@@ -13,20 +13,20 @@
     'prepare reference tree' \
     'mkdir path0 path1 &&
      cp ../../COPYING path0/COPYING &&
-     git-update-cache --add path0/COPYING &&
+     git-update-index --add path0/COPYING &&
     tree=$(git-write-tree) &&
     echo $tree'
 
 test_expect_success \
     'prepare work tree' \
     'cp path0/COPYING path1/COPYING &&
-     git-update-cache --add --remove path0/COPYING path1/COPYING'
+     git-update-index --add --remove path0/COPYING path1/COPYING'
 
 # In the tree, there is only path0/COPYING.  In the cache, path0 and
 # path1 both have COPYING and the latter is a copy of path0/COPYING.
 # Comparing the full tree with cache should tell us so.
 
-git-diff-cache -C --find-copies-harder $tree >current
+git-diff-index -C --find-copies-harder $tree >current
 
 cat >expected <<\EOF
 :100644 100644 6ff87c4664981e4397625791c8ea3bbb5f2279a3 6ff87c4664981e4397625791c8ea3bbb5f2279a3 C100	path0/COPYING	path1/COPYING
@@ -42,7 +42,7 @@
 # path1/COPYING suddenly appearing from nowhere, not detected as
 # a copy from path0/COPYING.
 
-git-diff-cache -C $tree path1 >current
+git-diff-index -C $tree path1 >current
 
 cat >expected <<\EOF
 :000000 100644 0000000000000000000000000000000000000000 6ff87c4664981e4397625791c8ea3bbb5f2279a3 A	path1/COPYING
@@ -55,14 +55,14 @@
 test_expect_success \
     'tweak work tree' \
     'rm -f path0/COPYING &&
-     git-update-cache --remove path0/COPYING'
+     git-update-index --remove path0/COPYING'
 
 # In the tree, there is only path0/COPYING.  In the cache, path0 does
 # not have COPYING anymore and path1 has COPYING which is a copy of
 # path0/COPYING.  Showing the full tree with cache should tell us about
 # the rename.
 
-git-diff-cache -C $tree >current
+git-diff-index -C $tree >current
 
 cat >expected <<\EOF
 :100644 100644 6ff87c4664981e4397625791c8ea3bbb5f2279a3 6ff87c4664981e4397625791c8ea3bbb5f2279a3 R100	path0/COPYING	path1/COPYING
@@ -77,7 +77,7 @@
 # path0/COPYING.  When we say we care only about path1, we should just
 # see path1/COPYING appearing from nowhere.
 
-git-diff-cache -C $tree path1 >current
+git-diff-index -C $tree path1 >current
 
 cat >expected <<\EOF
 :000000 100644 0000000000000000000000000000000000000000 6ff87c4664981e4397625791c8ea3bbb5f2279a3 A	path1/COPYING
diff --git a/t/t4008-diff-break-rewrite.sh b/t/t4008-diff-break-rewrite.sh
index 4c971c9..263ac1e 100755
--- a/t/t4008-diff-break-rewrite.sh
+++ b/t/t4008-diff-break-rewrite.sh
@@ -28,7 +28,7 @@
     setup \
     'cat ../../README >file0 &&
      cat ../../COPYING >file1 &&
-    git-update-cache --add file0 file1 &&
+    git-update-index --add file0 file1 &&
     tree=$(git-write-tree) &&
     echo "$tree"'
 
@@ -36,11 +36,11 @@
     'change file1 with copy-edit of file0 and remove file0' \
     'sed -e "s/git/GIT/" file0 >file1 &&
      rm -f file0 &&
-    git-update-cache --remove file0 file1'
+    git-update-index --remove file0 file1'
 
 test_expect_success \
     'run diff with -B' \
-    'git-diff-cache -B --cached "$tree" >current'
+    'git-diff-index -B --cached "$tree" >current'
 
 cat >expected <<\EOF
 :100644 000000 f5deac7be59e7eeab8657fd9ae706fd6a57daed2 0000000000000000000000000000000000000000 D	file0
@@ -53,7 +53,7 @@
 
 test_expect_success \
     'run diff with -B and -M' \
-    'git-diff-cache -B -M "$tree" >current'
+    'git-diff-index -B -M "$tree" >current'
 
 cat >expected <<\EOF
 :100644 100644 f5deac7be59e7eeab8657fd9ae706fd6a57daed2 08bb2fb671deff4c03a4d4a0a1315dff98d5732c R100	file0	file1
@@ -67,15 +67,15 @@
     'swap file0 and file1' \
     'rm -f file0 file1 &&
      git-read-tree -m $tree &&
-     git-checkout-cache -f -u -a &&
+     git-checkout-index -f -u -a &&
      mv file0 tmp &&
      mv file1 file0 &&
      mv tmp file1 &&
-     git-update-cache file0 file1'
+     git-update-index file0 file1'
 
 test_expect_success \
     'run diff with -B' \
-    'git-diff-cache -B "$tree" >current'
+    'git-diff-index -B "$tree" >current'
 
 cat >expected <<\EOF
 :100644 100644 f5deac7be59e7eeab8657fd9ae706fd6a57daed2 6ff87c4664981e4397625791c8ea3bbb5f2279a3 M100	file0
@@ -88,7 +88,7 @@
 
 test_expect_success \
     'run diff with -B and -M' \
-    'git-diff-cache -B -M "$tree" >current'
+    'git-diff-index -B -M "$tree" >current'
 
 cat >expected <<\EOF
 :100644 100644 6ff87c4664981e4397625791c8ea3bbb5f2279a3 6ff87c4664981e4397625791c8ea3bbb5f2279a3 R100	file1	file0
@@ -103,11 +103,11 @@
     'make file0 into something completely different' \
     'rm -f file0 &&
      ln -s frotz file0 &&
-     git-update-cache file0 file1'
+     git-update-index file0 file1'
 
 test_expect_success \
     'run diff with -B' \
-    'git-diff-cache -B "$tree" >current'
+    'git-diff-index -B "$tree" >current'
 
 cat >expected <<\EOF
 :100644 120000 f5deac7be59e7eeab8657fd9ae706fd6a57daed2 67be421f88824578857624f7b3dc75e99a8a1481 T	file0
@@ -120,7 +120,7 @@
 
 test_expect_success \
     'run diff with -B' \
-    'git-diff-cache -B -M "$tree" >current'
+    'git-diff-index -B -M "$tree" >current'
 
 # This should not mistake file0 as the copy source of new file1
 # due to type differences.
@@ -135,7 +135,7 @@
 
 test_expect_success \
     'run diff with -M' \
-    'git-diff-cache -M "$tree" >current'
+    'git-diff-index -M "$tree" >current'
 
 # This should not mistake file0 as the copy source of new file1
 # due to type differences.
@@ -152,15 +152,15 @@
     'file1 edited to look like file0 and file0 rename-edited to file2' \
     'rm -f file0 file1 &&
      git-read-tree -m $tree &&
-     git-checkout-cache -f -u -a &&
+     git-checkout-index -f -u -a &&
      sed -e "s/git/GIT/" file0 >file1 &&
      sed -e "s/git/GET/" file0 >file2 &&
      rm -f file0
-     git-update-cache --add --remove file0 file1 file2'
+     git-update-index --add --remove file0 file1 file2'
 
 test_expect_success \
     'run diff with -B' \
-    'git-diff-cache -B "$tree" >current'
+    'git-diff-index -B "$tree" >current'
 
 cat >expected <<\EOF
 :100644 000000 f5deac7be59e7eeab8657fd9ae706fd6a57daed2 0000000000000000000000000000000000000000 D	file0
@@ -174,7 +174,7 @@
 
 test_expect_success \
     'run diff with -B -M' \
-    'git-diff-cache -B -M "$tree" >current'
+    'git-diff-index -B -M "$tree" >current'
 
 cat >expected <<\EOF
 :100644 100644 f5deac7be59e7eeab8657fd9ae706fd6a57daed2 08bb2fb671deff4c03a4d4a0a1315dff98d5732c C095	file0	file1
diff --git a/t/t4009-diff-rename-4.sh b/t/t4009-diff-rename-4.sh
index 6229a5b..ea81152 100755
--- a/t/t4009-diff-rename-4.sh
+++ b/t/t4009-diff-rename-4.sh
@@ -13,7 +13,7 @@
     'prepare reference tree' \
     'cat ../../COPYING >COPYING &&
      echo frotz >rezrov &&
-    git-update-cache --add COPYING rezrov &&
+    git-update-index --add COPYING rezrov &&
     tree=$(git-write-tree) &&
     echo $tree'
 
@@ -22,14 +22,14 @@
     'sed -e 's/HOWEVER/However/' <COPYING >COPYING.1 &&
     sed -e 's/GPL/G.P.L/g' <COPYING >COPYING.2 &&
     rm -f COPYING &&
-    git-update-cache --add --remove COPYING COPYING.?'
+    git-update-index --add --remove COPYING COPYING.?'
 
 # tree has COPYING and rezrov.  work tree has COPYING.1 and COPYING.2,
 # both are slightly edited, and unchanged rezrov.  We say COPYING.1
 # and COPYING.2 are based on COPYING, and do not say anything about
 # rezrov.
 
-git-diff-cache -z -M $tree >current
+git-diff-index -z -M $tree >current
 
 cat >expected <<\EOF
 :100644 100644 6ff87c4664981e4397625791c8ea3bbb5f2279a3 0603b3238a076dc6c8022aedc6648fa523a17178 C1234
@@ -81,14 +81,14 @@
 test_expect_success \
     'prepare work tree again' \
     'mv COPYING.2 COPYING &&
-     git-update-cache --add --remove COPYING COPYING.1 COPYING.2'
+     git-update-index --add --remove COPYING COPYING.1 COPYING.2'
 
 # tree has COPYING and rezrov.  work tree has COPYING and COPYING.1,
 # both are slightly edited, and unchanged rezrov.  We say COPYING.1
 # is based on COPYING and COPYING is still there, and do not say anything
 # about rezrov.
 
-git-diff-cache -z -C $tree >current
+git-diff-index -z -C $tree >current
 cat >expected <<\EOF
 :100644 100644 6ff87c4664981e4397625791c8ea3bbb5f2279a3 06c67961bbaed34a127f76d261f4c0bf73eda471 M
 COPYING
@@ -141,9 +141,9 @@
 test_expect_success \
     'prepare work tree once again' \
     'cat ../../COPYING >COPYING &&
-     git-update-cache --add --remove COPYING COPYING.1'
+     git-update-index --add --remove COPYING COPYING.1'
 
-git-diff-cache -z -C --find-copies-harder $tree >current
+git-diff-index -z -C --find-copies-harder $tree >current
 cat >expected <<\EOF
 :100644 100644 6ff87c4664981e4397625791c8ea3bbb5f2279a3 0603b3238a076dc6c8022aedc6648fa523a17178 C1234
 COPYING
diff --git a/t/t4010-diff-pathspec.sh b/t/t4010-diff-pathspec.sh
index 9f2c6f6..8db329d 100755
--- a/t/t4010-diff-pathspec.sh
+++ b/t/t4010-diff-pathspec.sh
@@ -17,18 +17,18 @@
     'echo frotz >file0 &&
      mkdir path1 &&
      echo rezrov >path1/file1 &&
-     git-update-cache --add file0 path1/file1 &&
+     git-update-index --add file0 path1/file1 &&
      tree=`git-write-tree` &&
      echo "$tree" &&
      echo nitfol >file0 &&
      echo yomin >path1/file1 &&
-     git-update-cache file0 path1/file1' 
+     git-update-index file0 path1/file1'
 
 cat >expected <<\EOF
 EOF
 test_expect_success \
     'limit to path should show nothing' \
-    'git-diff-cache --cached $tree path >current &&
+    'git-diff-index --cached $tree path >current &&
      compare_diff_raw current expected'
 
 cat >expected <<\EOF
@@ -36,7 +36,7 @@
 EOF
 test_expect_success \
     'limit to path1 should show path1/file1' \
-    'git-diff-cache --cached $tree path1 >current &&
+    'git-diff-index --cached $tree path1 >current &&
      compare_diff_raw current expected'
 
 cat >expected <<\EOF
@@ -44,7 +44,7 @@
 EOF
 test_expect_success \
     'limit to path1/ should show path1/file1' \
-    'git-diff-cache --cached $tree path1/ >current &&
+    'git-diff-index --cached $tree path1/ >current &&
      compare_diff_raw current expected'
 
 cat >expected <<\EOF
@@ -52,14 +52,14 @@
 EOF
 test_expect_success \
     'limit to file0 should show file0' \
-    'git-diff-cache --cached $tree file0 >current &&
+    'git-diff-index --cached $tree file0 >current &&
      compare_diff_raw current expected'
 
 cat >expected <<\EOF
 EOF
 test_expect_success \
     'limit to file0/ should emit nothing.' \
-    'git-diff-cache --cached $tree file0/ >current &&
+    'git-diff-index --cached $tree file0/ >current &&
      compare_diff_raw current expected'
 
 test_done
diff --git a/t/t4102-apply-rename.sh b/t/t4102-apply-rename.sh
index f591a56..530cc4d 100755
--- a/t/t4102-apply-rename.sh
+++ b/t/t4102-apply-rename.sh
@@ -26,7 +26,7 @@
 chmod +x foo
 
 test_expect_success setup \
-    'git-update-cache --add foo'
+    'git-update-index --add foo'
 
 test_expect_success apply \
     'git-apply --index --stat --summary --apply test-patch'
diff --git a/t/t4112-apply-renames.sh b/t/t4112-apply-renames.sh
index 906188c..a06f695 100755
--- a/t/t4112-apply-renames.sh
+++ b/t/t4112-apply-renames.sh
@@ -139,7 +139,7 @@
 +#endif /* _KLIBC_ARCHSETJMP_H */
 EOF
 
-find include klibc -type f -print | xargs git-update-cache --add --
+find include klibc -type f -print | xargs git-update-index --add --
 
 test_expect_success 'check rename/copy patch' 'git-apply --check patch'
 
diff --git a/t/t5000-tar-tree.sh b/t/t5000-tar-tree.sh
index abce669..6bf3406 100755
--- a/t/t5000-tar-tree.sh
+++ b/t/t5000-tar-tree.sh
@@ -37,8 +37,8 @@
 
 test_expect_success \
     'add files to repository' \
-    'find a -type f | xargs git-update-cache --add &&
-     find a -type l | xargs git-update-cache --add &&
+    'find a -type f | xargs git-update-index --add &&
+     find a -type l | xargs git-update-index --add &&
      treeid=`git-write-tree` &&
      echo $treeid >treeid &&
      TZ=GMT GIT_COMMITTER_DATE="2005-05-27 22:00:00" \
diff --git a/t/t5300-pack-object.sh b/t/t5300-pack-object.sh
index 0395124..bb62336 100755
--- a/t/t5300-pack-object.sh
+++ b/t/t5300-pack-object.sh
@@ -16,9 +16,9 @@
      for i in a b c
      do
 	     dd if=/dev/zero bs=4k count=1 | tr "\\0" $i >$i &&
-	     git-update-cache --add $i || return 1
+	     git-update-index --add $i || return 1
      done &&
-     cat c >d && echo foo >>d && git-update-cache --add d &&
+     cat c >d && echo foo >>d && git-update-index --add d &&
      tree=`git-write-tree` &&
      commit=`git-commit-tree $tree </dev/null` && {
 	 echo $tree &&
diff --git a/t/t5400-send-pack.sh b/t/t5400-send-pack.sh
index 2c142df..fb8320d 100755
--- a/t/t5400-send-pack.sh
+++ b/t/t5400-send-pack.sh
@@ -21,9 +21,9 @@
 	    parent=$commit || return 1
 	done &&
 	echo "$commit" >.git/HEAD &&
-	git clone -l ./. victim &&
+	git-clone.sh -l ./. victim &&
 	cd victim &&
-	git log &&
+	git-log.sh &&
 	cd .. &&
 	echo $zero >.git/HEAD &&
 	parent=$zero &&
@@ -35,7 +35,7 @@
 	done &&
 	echo "$commit" >.git/HEAD &&
 	echo Rebase &&
-	git log'
+	git-log.sh'
 
 test_expect_success \
         'pushing rewound head should not barf but require --force' ' 
diff --git a/t/t6001-rev-list-merge-order.sh b/t/t6001-rev-list-merge-order.sh
index 7fe744e..0101242 100755
--- a/t/t6001-rev-list-merge-order.sh
+++ b/t/t6001-rev-list-merge-order.sh
@@ -45,7 +45,7 @@
 }
 
 date >path0
-git-update-cache --add path0
+git-update-index --add path0
 save_tag tree git-write-tree
 on_committer_date "1971-08-16 00:00:00" hide_error save_tag root unique_commit root tree
 on_committer_date "1971-08-16 00:00:01" save_tag l0 unique_commit l0 tree -p root
diff --git a/t/t6002-rev-list-bisect.sh b/t/t6002-rev-list-bisect.sh
index 99d86ae..d0a4ff2 100755
--- a/t/t6002-rev-list-bisect.sh
+++ b/t/t6002-rev-list-bisect.sh
@@ -40,7 +40,7 @@
 }
 
 date >path0
-git-update-cache --add path0
+git-update-index --add path0
 save_tag tree git-write-tree
 on_committer_date "1971-08-16 00:00:00" hide_error save_tag root unique_commit root tree
 on_committer_date "1971-08-16 00:00:01" save_tag l0 unique_commit l0 tree -p root
diff --git a/t/t6003-rev-list-topo-order.sh b/t/t6003-rev-list-topo-order.sh
index eb41f86..88d14ee 100755
--- a/t/t6003-rev-list-topo-order.sh
+++ b/t/t6003-rev-list-topo-order.sh
@@ -14,7 +14,7 @@
 }
 
 date >path0
-git-update-cache --add path0
+git-update-index --add path0
 save_tag tree git-write-tree
 on_committer_date "1971-08-16 00:00:00" hide_error save_tag root unique_commit root tree
 on_committer_date "1971-08-16 00:00:01" save_tag l0 unique_commit l0 tree -p root
diff --git a/t/t6101-rev-parse-parents.sh b/t/t6101-rev-parse-parents.sh
index 4f57a28..1beab71 100644
--- a/t/t6101-rev-parse-parents.sh
+++ b/t/t6101-rev-parse-parents.sh
@@ -9,7 +9,7 @@
 . ../t6000lib.sh # t6xxx specific functions
 
 date >path0
-git-update-cache --add path0
+git-update-index --add path0
 save_tag tree git-write-tree
 hide_error save_tag start unique_commit "start" tree
 save_tag second unique_commit "second" tree -p start
diff --git a/templates/hooks--commit-msg b/templates/hooks--commit-msg
index 029f897..643822d 100644
--- a/templates/hooks--commit-msg
+++ b/templates/hooks--commit-msg
@@ -1,7 +1,7 @@
 #!/bin/sh
 #
 # An example hook script to check the commit log message.
-# Called by git-commit-script with one argument, the name of the file
+# Called by git-commit with one argument, the name of the file
 # that has the commit message.  The hook should exit with non-zero
 # status after issuing an appropriate message if it wants to stop the
 # commit.  The hook is allowed to edit the commit message file.
diff --git a/templates/hooks--pre-commit b/templates/hooks--pre-commit
index 075eb3c..4bb6803 100644
--- a/templates/hooks--pre-commit
+++ b/templates/hooks--pre-commit
@@ -1,7 +1,7 @@
 #!/bin/sh
 #
 # An example hook script to verify what is about to be committed.
-# Called by git-commit-script with no arguments.  The hook should
+# Called by git-commit with no arguments.  The hook should
 # exit with non-zero status after issuing an appropriate message if
 # it wants to stop the commit.
 #
@@ -31,7 +31,7 @@
 	print STDERR "* $why (line $lineno)\n";
 	print STDERR "$filename:$lineno:$line\n";
     }
-    open $fh, "-|", qw(git-diff-cache -p -M --cached HEAD);
+    open $fh, "-|", qw(git-diff-index -p -M --cached HEAD);
     while (<$fh>) {
 	if (m|^diff --git a/(.*) b/\1$|) {
 	    $filename = $1;
diff --git a/update-cache.c b/update-index.c
similarity index 96%
rename from update-cache.c
rename to update-index.c
index 3d1fd2b..d10dfd9 100644
--- a/update-cache.c
+++ b/update-index.c
@@ -9,7 +9,7 @@
  * Default to not allowing changes to the list of files. The
  * tool doesn't actually care, but this makes it harder to add
  * files to the revision control by mistake by doing something
- * like "git-update-cache *" and suddenly having all the object
+ * like "git-update-index *" and suddenly having all the object
  * files be revision controlled.
  */
 static int allow_add = 0, allow_remove = 0, allow_replace = 0, not_new = 0, quiet = 0, info_only = 0;
@@ -44,7 +44,7 @@
 		/* When we used to have "path" and now we want to add
 		 * "path/file", we need a way to remove "path" before
 		 * being able to add "path/file".  However,
-		 * "git-update-cache --remove path" would not work.
+		 * "git-update-index --remove path" would not work.
 		 * --force-remove can be used but this is more user
 		 * friendly, especially since we can do the opposite
 		 * case just fine without --force-remove.
@@ -365,9 +365,9 @@
 			}
 			if (!strcmp(path, "--cacheinfo")) {
 				if (i+3 >= argc)
-					die("git-update-cache: --cacheinfo <mode> <sha1> <path>");
+					die("git-update-index: --cacheinfo <mode> <sha1> <path>");
 				if (add_cacheinfo(argv[i+1], argv[i+2], argv[i+3]))
-					die("git-update-cache: --cacheinfo cannot add %s", argv[i+3]);
+					die("git-update-index: --cacheinfo cannot add %s", argv[i+3]);
 				i += 3;
 				continue;
 			}
@@ -393,7 +393,7 @@
 		}
 		if (force_remove) {
 			if (remove_file_from_cache(path))
-				die("git-update-cache: --force-remove cannot remove %s", path);
+				die("git-update-index: --force-remove cannot remove %s", path);
 			continue;
 		}
 		if (add_file_to_cache(path))