Merge branch 'maint'
authorJunio C Hamano <gitster@pobox.com>
Wed, 3 Sep 2008 23:08:23 +0000 (16:08 -0700)
committerJunio C Hamano <gitster@pobox.com>
Wed, 3 Sep 2008 23:08:23 +0000 (16:08 -0700)
* maint:
Start 1.6.0.2 maintenance cycle
tests: use "git xyzzy" form (t7200 - t9001)
tests: use "git xyzzy" form (t7000 - t7199)
Fix passwd(5) ref and reflect that commit doens't use commit-tree
improve handling of sideband message display
tests: use "git xyzzy" form (t3600 - t6999)
tests: use "git xyzzy" form (t0000 - t3599)
checkout: fix message when leaving detached HEAD
clone: fix creation of explicitly named target directory
'git foo' program identifies itself without dash in die() messages
setup_git_directory(): fix move to worktree toplevel directory
update-index: fix worktree setup
Start conforming code to "git subcmd" style
read-tree: setup worktree if merge is required
grep: fix worktree setup
diff*: fix worktree setup

Conflicts:
RelNotes
t/t3900-i18n-commit.sh
t/t7003-filter-branch.sh

17 files changed:
1  2 
builtin-blame.c
builtin-checkout.c
builtin-commit-tree.c
builtin-fetch-pack.c
builtin-update-index.c
t/t1007-hash-object.sh
t/t3900-i18n-commit.sh
t/t3901-i18n-patch.sh
t/t4012-diff-binary.sh
t/t5500-fetch-pack.sh
t/t7001-mv.sh
t/t7003-filter-branch.sh
t/t7004-tag.sh
t/t7101-reset.sh
t/t7201-co.sh
t/t7500-commit.sh
t/t7600-merge.sh
diff --combined builtin-blame.c
index e4d12de8a994434058745439a86929c0d556a3ec,d2fc68c68a02d87c1f61442f8bbbc66c07b5b8d0..adc3dc7270afd0dff8763d8c480c8ab98ee25b0d
@@@ -465,6 -465,7 +465,6 @@@ struct patch 
  };
  
  struct blame_diff_state {
 -      struct xdiff_emit_state xm;
        struct patch *ret;
        unsigned hunk_post_context;
        unsigned hunk_in_pre_context : 1;
@@@ -527,12 -528,15 +527,12 @@@ static struct patch *compare_buffer(mmf
        xpp.flags = xdl_opts;
        memset(&xecfg, 0, sizeof(xecfg));
        xecfg.ctxlen = context;
 -      ecb.outf = xdiff_outf;
 -      ecb.priv = &state;
        memset(&state, 0, sizeof(state));
 -      state.xm.consume = process_u_diff;
        state.ret = xmalloc(sizeof(struct patch));
        state.ret->chunks = NULL;
        state.ret->num = 0;
  
 -      xdi_diff(file_p, file_o, &xpp, &xecfg, &ecb);
 +      xdi_diff_outf(file_p, file_o, process_u_diff, &state, &xpp, &xecfg, &ecb);
  
        if (state.ret->num) {
                struct chunk *chunk;
@@@ -1787,7 -1791,7 +1787,7 @@@ static int prepare_lines(struct scorebo
  
  /*
   * Add phony grafts for use with -S; this is primarily to
-  * support git-cvsserver that wants to give a linear history
+  * support git's cvsserver that wants to give a linear history
   * to its clients.
   */
  static int read_ancestry(const char *graft_file)
diff --combined builtin-checkout.c
index b380ad6e80046e77ed78a438c26f507da2737b0e,f6f8f086de980b5bc19ca59985a2b0d8201831d9..efdb1e02bf21fb3b901d375a547d7fbf44e0894b
@@@ -157,7 -157,7 +157,7 @@@ struct checkout_opts 
        int force;
        int writeout_error;
  
 -      char *new_branch;
 +      const char *new_branch;
        int new_branch_log;
        enum branch_track track;
  };
@@@ -386,13 -386,11 +386,11 @@@ static int switch_branches(struct check
        }
  
        /*
-        * If the new thing isn't a branch and isn't HEAD and we're
-        * not starting a new branch, and we want messages, and we
-        * weren't on a branch, and we're moving to a new commit,
-        * describe the old commit.
+        * If we were on a detached HEAD, but we are now moving to
+        * a new commit, we want to mention the old commit once more
+        * to remind the user that it might be lost.
         */
-       if (!new->path && strcmp(new->name, "HEAD") && !opts->new_branch &&
-           !opts->quiet && !old.path && new->commit != old.commit)
+       if (!opts->quiet && !old.path && new->commit != old.commit)
                describe_detached_head("Previous HEAD position was", old.commit);
  
        if (!old.commit) {
@@@ -437,28 -435,13 +435,28 @@@ int cmd_checkout(int argc, const char *
  
        git_config(git_default_config, NULL);
  
 -      opts.track = git_branch_track;
 +      opts.track = BRANCH_TRACK_UNSPECIFIED;
  
        argc = parse_options(argc, argv, options, checkout_usage,
                             PARSE_OPT_KEEP_DASHDASH);
  
 -      if (!opts.new_branch && (opts.track != git_branch_track))
 -              die("git checkout: --track and --no-track require -b");
 +      /* --track without -b should DWIM */
 +      if (0 < opts.track && !opts.new_branch) {
 +              const char *argv0 = argv[0];
 +              if (!argc || !strcmp(argv0, "--"))
 +                      die ("--track needs a branch name");
 +              if (!prefixcmp(argv0, "refs/"))
 +                      argv0 += 5;
 +              if (!prefixcmp(argv0, "remotes/"))
 +                      argv0 += 8;
 +              argv0 = strchr(argv0, '/');
 +              if (!argv0 || !argv0[1])
 +                      die ("Missing branch name; try -b");
 +              opts.new_branch = argv0 + 1;
 +      }
 +
 +      if (opts.track == BRANCH_TRACK_UNSPECIFIED)
 +              opts.track = git_branch_track;
  
        if (opts.force && opts.merge)
                die("git checkout: -f and -m are incompatible");
diff --combined builtin-commit-tree.c
index f773db596c50430fa5223e3273b4fade32a0da34,291c43cf70d7906b770911a7bcb2cdff9c6182e7..8a5ba4c6671e426338eb0cb95bd92851bf24b452
@@@ -48,7 -48,6 +48,7 @@@ static const char commit_utf8_warn[] 
  int commit_tree(const char *msg, unsigned char *tree,
                struct commit_list *parents, unsigned char *ret)
  {
 +      int result;
        int encoding_is_utf8;
        struct strbuf buffer;
  
@@@ -87,9 -86,7 +87,9 @@@
        if (encoding_is_utf8 && !is_utf8(buffer.buf))
                fprintf(stderr, commit_utf8_warn);
  
 -      return write_sha1_file(buffer.buf, buffer.len, commit_type, ret);
 +      result = write_sha1_file(buffer.buf, buffer.len, commit_type, ret);
 +      strbuf_release(&buffer);
 +      return result;
  }
  
  int cmd_commit_tree(int argc, const char **argv, const char *prefix)
        }
  
        if (strbuf_read(&buffer, 0, 0) < 0)
-               die("git-commit-tree: read returned %s", strerror(errno));
+               die("git commit-tree: read returned %s", strerror(errno));
  
        if (!commit_tree(buffer.buf, tree_sha1, parents, commit_sha1)) {
                printf("%s\n", sha1_to_hex(commit_sha1));
diff --combined builtin-fetch-pack.c
index 17a5a422c27e898fb68e3d55a9a5d7e714a40ff6,6b37281a956892db676ad0b6e8c38b5d82316797..459c6f0da35ac0a4d6cc0a914f6aa905f8a94d42
@@@ -540,7 -540,7 +540,7 @@@ static int get_pack(int xd[2], char **p
                        *av++ = "--fix-thin";
                if (args.lock_pack || unpack_limit) {
                        int s = sprintf(keep_arg,
 -                                      "--keep=fetch-pack %d on ", getpid());
 +                                      "--keep=fetch-pack %"PRIuMAX " on ", (uintmax_t) getpid());
                        if (gethostname(keep_arg + s, sizeof(keep_arg) - s))
                                strcpy(keep_arg + s, "localhost");
                        *av++ = keep_arg;
@@@ -609,7 -609,7 +609,7 @@@ static struct ref *do_fetch_pack(int fd
                        fprintf(stderr, "warning: no common commits\n");
  
        if (get_pack(fd, pack_lockfile))
-               die("git-fetch-pack: fetch failed.");
+               die("git fetch-pack: fetch failed.");
  
   all_done:
        return ref;
diff --combined builtin-update-index.c
index 434cb8e4a00565c53587d89dd259ae63bc133de7,5637d417aac668a61af3c50d8b1acd2b31f5af8a..ce832247568de1b302395ce892f1433844fea187
@@@ -194,10 -194,6 +194,10 @@@ static int process_path(const char *pat
        int len;
        struct stat st;
  
 +      len = strlen(path);
 +      if (has_symlink_leading_path(len, path))
 +              return error("'%s' is beyond a symbolic link", path);
 +
        /*
         * First things first: get the stat information, to decide
         * what to do about the pathname!
        if (lstat(path, &st) < 0)
                return process_lstat_error(path, errno);
  
 -      len = strlen(path);
        if (S_ISDIR(st.st_mode))
                return process_directory(path, len, &st);
  
@@@ -265,7 -262,7 +265,7 @@@ static void chmod_path(int flip, const 
        report("chmod %cx '%s'", flip, path);
        return;
   fail:
-       die("git-update-index: cannot chmod %cx '%s'", flip, path);
+       die("git update-index: cannot chmod %cx '%s'", flip, path);
  }
  
  static void update_one(const char *path, const char *prefix, int prefix_length)
  
        if (force_remove) {
                if (remove_file_from_cache(p))
-                       die("git-update-index: unable to remove %s", path);
+                       die("git update-index: unable to remove %s", path);
                report("remove '%s'", path);
                goto free_return;
        }
@@@ -354,7 -351,7 +354,7 @@@ static void read_index_info(int line_te
                if (line_termination && path_name[0] == '"') {
                        strbuf_reset(&uq);
                        if (unquote_c_style(&uq, path_name, NULL)) {
-                               die("git-update-index: bad quoting of path name");
+                               die("git update-index: bad quoting of path name");
                        }
                        path_name = uq.buf;
                }
                if (!mode) {
                        /* mode == 0 means there is no such path -- remove */
                        if (remove_file_from_cache(path_name))
-                               die("git-update-index: unable to remove %s",
+                               die("git update-index: unable to remove %s",
                                    ptr);
                }
                else {
                         */
                        ptr[-42] = ptr[-1] = 0;
                        if (add_cacheinfo(mode, sha1, path_name, stage))
-                               die("git-update-index: unable to update %s",
+                               die("git update-index: unable to update %s",
                                    path_name);
                }
                continue;
@@@ -617,10 -614,12 +617,12 @@@ int cmd_update_index(int argc, const ch
                                continue;
                        }
                        if (!strcmp(path, "--refresh")) {
+                               setup_work_tree();
                                has_errors |= refresh_cache(refresh_flags);
                                continue;
                        }
                        if (!strcmp(path, "--really-refresh")) {
+                               setup_work_tree();
                                has_errors |= refresh_cache(REFRESH_REALLY | refresh_flags);
                                continue;
                        }
                                unsigned int mode;
  
                                if (i+3 >= argc)
-                                       die("git-update-index: --cacheinfo <mode> <sha1> <path>");
+                                       die("git update-index: --cacheinfo <mode> <sha1> <path>");
  
                                if (strtoul_ui(argv[i+1], 8, &mode) ||
                                    get_sha1_hex(argv[i+2], sha1) ||
                                    add_cacheinfo(mode, sha1, argv[i+3], 0))
-                                       die("git-update-index: --cacheinfo"
+                                       die("git update-index: --cacheinfo"
                                            " cannot add %s", argv[i+3]);
                                i += 3;
                                continue;
                        if (!strcmp(path, "--chmod=-x") ||
                            !strcmp(path, "--chmod=+x")) {
                                if (argc <= i+1)
-                                       die("git-update-index: %s <path>", path);
+                                       die("git update-index: %s <path>", path);
                                set_executable_bit = path[8];
                                continue;
                        }
                                goto finish;
                        }
                        if (!strcmp(path, "--again") || !strcmp(path, "-g")) {
+                               setup_work_tree();
                                has_errors = do_reupdate(argc - i, argv + i,
                                                         prefix, prefix_length);
                                if (has_errors)
                                usage(update_index_usage);
                        die("unknown option %s", path);
                }
+               setup_work_tree();
                p = prefix_path(prefix, prefix_length, path);
                update_one(p, NULL, 0);
                if (set_executable_bit)
  
                strbuf_init(&buf, 0);
                strbuf_init(&nbuf, 0);
+               setup_work_tree();
                while (strbuf_getline(&buf, stdin, line_termination) != EOF) {
                        const char *p;
                        if (line_termination && buf.buf[0] == '"') {
diff --combined t/t1007-hash-object.sh
index fcdd15a358f8a82b617f8ac7b22e5051975b1a4a,076b08292d9901bd5d47b5ac49216a448ef7ecb9..fd98e445bf2e74284709df54d2cd2d3f0006b19c
@@@ -1,6 -1,6 +1,6 @@@
  #!/bin/sh
  
- test_description="git-hash-object"
+ test_description="git hash-object"
  
  . ./test-lib.sh
  
@@@ -49,28 -49,16 +49,28 @@@ setup_rep
  # Argument checking
  
  test_expect_success "multiple '--stdin's are rejected" '
 -      test_must_fail git hash-object --stdin --stdin < example
 +      echo example | test_must_fail git hash-object --stdin --stdin
  '
  
  test_expect_success "Can't use --stdin and --stdin-paths together" '
 -      test_must_fail git hash-object --stdin --stdin-paths &&
 -      test_must_fail git hash-object --stdin-paths --stdin
 +      echo example | test_must_fail git hash-object --stdin --stdin-paths &&
 +      echo example | test_must_fail git hash-object --stdin-paths --stdin
  '
  
  test_expect_success "Can't pass filenames as arguments with --stdin-paths" '
 -      test_must_fail git hash-object --stdin-paths hello < example
 +      echo example | test_must_fail git hash-object --stdin-paths hello
 +'
 +
 +test_expect_success "Can't use --path with --stdin-paths" '
 +      echo example | test_must_fail git hash-object --stdin-paths --path=foo
 +'
 +
 +test_expect_success "Can't use --stdin-paths with --no-filters" '
 +      echo example | test_must_fail git hash-object --stdin-paths --no-filters
 +'
 +
 +test_expect_success "Can't use --path with --no-filters" '
 +      test_must_fail git hash-object --no-filters --path=foo
  '
  
  # Behavior
@@@ -105,42 -93,6 +105,42 @@@ test_expect_success 'git hash-object --
        test "$obname1" = "$obname1new"
  '
  
 +test_expect_success 'check that appropriate filter is invoke when --path is used' '
 +      echo fooQ | tr Q "\\015" >file0 &&
 +      cp file0 file1 &&
 +      echo "file0 -crlf" >.gitattributes &&
 +      echo "file1 crlf" >>.gitattributes &&
 +      git config core.autocrlf true &&
 +      file0_sha=$(git hash-object file0) &&
 +      file1_sha=$(git hash-object file1) &&
 +      test "$file0_sha" != "$file1_sha" &&
 +      path1_sha=$(git hash-object --path=file1 file0) &&
 +      path0_sha=$(git hash-object --path=file0 file1) &&
 +      test "$file0_sha" = "$path0_sha" &&
 +      test "$file1_sha" = "$path1_sha" &&
 +      path1_sha=$(cat file0 | git hash-object --path=file1 --stdin) &&
 +      path0_sha=$(cat file1 | git hash-object --path=file0 --stdin) &&
 +      test "$file0_sha" = "$path0_sha" &&
 +      test "$file1_sha" = "$path1_sha" &&
 +      git config --unset core.autocrlf
 +'
 +
 +test_expect_success 'check that --no-filters option works' '
 +      echo fooQ | tr Q "\\015" >file0 &&
 +      cp file0 file1 &&
 +      echo "file0 -crlf" >.gitattributes &&
 +      echo "file1 crlf" >>.gitattributes &&
 +      git config core.autocrlf true &&
 +      file0_sha=$(git hash-object file0) &&
 +      file1_sha=$(git hash-object file1) &&
 +      test "$file0_sha" != "$file1_sha" &&
 +      nofilters_file1=$(git hash-object --no-filters file1) &&
 +      test "$file0_sha" = "$nofilters_file1" &&
 +      nofilters_file1=$(cat file1 | git hash-object --stdin) &&
 +      test "$file0_sha" = "$nofilters_file1" &&
 +      git config --unset core.autocrlf
 +'
 +
  pop_repo
  
  for args in "-w --stdin" "--stdin -w"; do
diff --combined t/t3900-i18n-commit.sh
index f4f41847f32ca253d5b79a4dd3ff1e4a533d02e1,f31353323b92d6422f685ceb544c81760714500f..784c31aec99d90b69186079ddb66350d9f4a8827
@@@ -16,9 -16,9 +16,9 @@@ test_expect_success setup 
        : >F &&
        git add F &&
        T=$(git write-tree) &&
 -      C=$(git commit-tree $T <../t3900/1-UTF-8.txt) &&
 +      C=$(git commit-tree $T <"$TEST_DIRECTORY"/t3900/1-UTF-8.txt) &&
        git update-ref HEAD $C &&
-       git-tag C0
+       git tag C0
  '
  
  test_expect_success 'no encoding header for base case' '
@@@ -30,9 -30,9 +30,9 @@@ for H in ISO-8859-1 EUCJP ISO-2022-J
  do
        test_expect_success "$H setup" '
                git config i18n.commitencoding $H &&
-               git-checkout -b $H C0 &&
+               git checkout -b $H C0 &&
                echo $H >F &&
-               git-commit -a -F "$TEST_DIRECTORY"/t3900/$H.txt
 -              git commit -a -F ../t3900/$H.txt
++              git commit -a -F "$TEST_DIRECTORY"/t3900/$H.txt
        '
  done
  
@@@ -57,13 -57,13 +57,13 @@@ test_expect_success 'config to remove c
  '
  
  test_expect_success 'ISO-8859-1 should be shown in UTF-8 now' '
 -      compare_with ISO-8859-1 ../t3900/1-UTF-8.txt
 +      compare_with ISO-8859-1 "$TEST_DIRECTORY"/t3900/1-UTF-8.txt
  '
  
  for H in EUCJP ISO-2022-JP
  do
        test_expect_success "$H should be shown in UTF-8 now" '
 -              compare_with '$H' ../t3900/2-UTF-8.txt
 +              compare_with '$H' "$TEST_DIRECTORY"/t3900/2-UTF-8.txt
        '
  done
  
@@@ -82,7 -82,7 +82,7 @@@ for H in ISO-8859-1 EUCJP ISO-2022-J
  do
        test_expect_success "$H should be shown in itself now" '
                git config i18n.commitencoding '$H' &&
 -              compare_with '$H' ../t3900/'$H'.txt
 +              compare_with '$H' "$TEST_DIRECTORY"/t3900/'$H'.txt
        '
  done
  
@@@ -91,13 -91,13 +91,13 @@@ test_expect_success 'config to tweak cu
  '
  
  test_expect_success 'ISO-8859-1 should be shown in UTF-8 now' '
 -      compare_with ISO-8859-1 ../t3900/1-UTF-8.txt
 +      compare_with ISO-8859-1 "$TEST_DIRECTORY"/t3900/1-UTF-8.txt
  '
  
  for H in EUCJP ISO-2022-JP
  do
        test_expect_success "$H should be shown in UTF-8 now" '
 -              compare_with '$H' ../t3900/2-UTF-8.txt
 +              compare_with '$H' "$TEST_DIRECTORY"/t3900/2-UTF-8.txt
        '
  done
  
@@@ -107,7 -107,7 +107,7 @@@ d
        for H in EUCJP ISO-2022-JP
        do
                test_expect_success "$H should be shown in $J now" '
 -                      compare_with '$H' ../t3900/'$J'.txt
 +                      compare_with '$H' "$TEST_DIRECTORY"/t3900/'$J'.txt
                '
        done
  done
  for H in ISO-8859-1 EUCJP ISO-2022-JP
  do
        test_expect_success "No conversion with $H" '
 -              compare_with "--encoding=none '$H'" ../t3900/'$H'.txt
 +              compare_with "--encoding=none '$H'" "$TEST_DIRECTORY"/t3900/'$H'.txt
        '
  done
  
diff --combined t/t3901-i18n-patch.sh
index f68ff530513e09aefe8f1310d6b7509f22d1112a,567760e1d25f851ffecbb609d60419d2a601cb31..7655da3f8d5e68f293ae5afe2d58dd41b1396f37
@@@ -35,7 -35,7 +35,7 @@@ test_expect_success setup 
  
        # use UTF-8 in author and committer name to match the
        # i18n.commitencoding settings
 -      . ../t3901-utf8.txt &&
 +      . "$TEST_DIRECTORY"/t3901-utf8.txt &&
  
        test_tick &&
        echo "$GIT_AUTHOR_NAME" >mine &&
@@@ -57,7 -57,7 +57,7 @@@
        # the second one on the side branch is ISO-8859-1
        git config i18n.commitencoding ISO-8859-1 &&
        # use author and committer name in ISO-8859-1 to match it.
 -      . ../t3901-8859-1.txt &&
 +      . "$TEST_DIRECTORY"/t3901-8859-1.txt &&
        test_tick &&
        echo Yet another >theirs &&
        git add theirs &&
@@@ -101,9 -101,9 +101,9 @@@ test_expect_success 'rebase (U/U)' 
  
        # The result will be committed by GIT_COMMITTER_NAME --
        # we want UTF-8 encoded name.
 -      . ../t3901-utf8.txt &&
 +      . "$TEST_DIRECTORY"/t3901-utf8.txt &&
        git checkout -b test &&
-       git-rebase master &&
+       git rebase master &&
  
        check_encoding 2
  '
  test_expect_success 'rebase (U/L)' '
        git config i18n.commitencoding UTF-8 &&
        git config i18n.logoutputencoding ISO-8859-1 &&
 -      . ../t3901-utf8.txt &&
 +      . "$TEST_DIRECTORY"/t3901-utf8.txt &&
  
        git reset --hard side &&
-       git-rebase master &&
+       git rebase master &&
  
        check_encoding 2
  '
@@@ -123,10 -123,10 +123,10 @@@ test_expect_success 'rebase (L/L)' 
        # In this test we want ISO-8859-1 encoded commits as the result
        git config i18n.commitencoding ISO-8859-1 &&
        git config i18n.logoutputencoding ISO-8859-1 &&
 -      . ../t3901-8859-1.txt &&
 +      . "$TEST_DIRECTORY"/t3901-8859-1.txt &&
  
        git reset --hard side &&
-       git-rebase master &&
+       git rebase master &&
  
        check_encoding 2 8859
  '
@@@ -136,10 -136,10 +136,10 @@@ test_expect_success 'rebase (L/U)' 
        # to get ISO-8859-1 results.
        git config i18n.commitencoding ISO-8859-1 &&
        git config i18n.logoutputencoding UTF-8 &&
 -      . ../t3901-8859-1.txt &&
 +      . "$TEST_DIRECTORY"/t3901-8859-1.txt &&
  
        git reset --hard side &&
-       git-rebase master &&
+       git rebase master &&
  
        check_encoding 2 8859
  '
@@@ -149,7 -149,7 +149,7 @@@ test_expect_success 'cherry-pick(U/U)' 
  
        git config i18n.commitencoding UTF-8 &&
        git config i18n.logoutputencoding UTF-8 &&
 -      . ../t3901-utf8.txt &&
 +      . "$TEST_DIRECTORY"/t3901-utf8.txt &&
  
        git reset --hard master &&
        git cherry-pick side^ &&
@@@ -164,7 -164,7 +164,7 @@@ test_expect_success 'cherry-pick(L/L)' 
  
        git config i18n.commitencoding ISO-8859-1 &&
        git config i18n.logoutputencoding ISO-8859-1 &&
 -      . ../t3901-8859-1.txt &&
 +      . "$TEST_DIRECTORY"/t3901-8859-1.txt &&
  
        git reset --hard master &&
        git cherry-pick side^ &&
@@@ -179,7 -179,7 +179,7 @@@ test_expect_success 'cherry-pick(U/L)' 
  
        git config i18n.commitencoding UTF-8 &&
        git config i18n.logoutputencoding ISO-8859-1 &&
 -      . ../t3901-utf8.txt &&
 +      . "$TEST_DIRECTORY"/t3901-utf8.txt &&
  
        git reset --hard master &&
        git cherry-pick side^ &&
@@@ -195,7 -195,7 +195,7 @@@ test_expect_success 'cherry-pick(L/U)' 
  
        git config i18n.commitencoding ISO-8859-1 &&
        git config i18n.logoutputencoding UTF-8 &&
 -      . ../t3901-8859-1.txt &&
 +      . "$TEST_DIRECTORY"/t3901-8859-1.txt &&
  
        git reset --hard master &&
        git cherry-pick side^ &&
  test_expect_success 'rebase --merge (U/U)' '
        git config i18n.commitencoding UTF-8 &&
        git config i18n.logoutputencoding UTF-8 &&
 -      . ../t3901-utf8.txt &&
 +      . "$TEST_DIRECTORY"/t3901-utf8.txt &&
  
        git reset --hard side &&
-       git-rebase --merge master &&
+       git rebase --merge master &&
  
        check_encoding 2
  '
  test_expect_success 'rebase --merge (U/L)' '
        git config i18n.commitencoding UTF-8 &&
        git config i18n.logoutputencoding ISO-8859-1 &&
 -      . ../t3901-utf8.txt &&
 +      . "$TEST_DIRECTORY"/t3901-utf8.txt &&
  
        git reset --hard side &&
-       git-rebase --merge master &&
+       git rebase --merge master &&
  
        check_encoding 2
  '
@@@ -231,10 -231,10 +231,10 @@@ test_expect_success 'rebase --merge (L/
        # In this test we want ISO-8859-1 encoded commits as the result
        git config i18n.commitencoding ISO-8859-1 &&
        git config i18n.logoutputencoding ISO-8859-1 &&
 -      . ../t3901-8859-1.txt &&
 +      . "$TEST_DIRECTORY"/t3901-8859-1.txt &&
  
        git reset --hard side &&
-       git-rebase --merge master &&
+       git rebase --merge master &&
  
        check_encoding 2 8859
  '
@@@ -244,10 -244,10 +244,10 @@@ test_expect_success 'rebase --merge (L/
        # to get ISO-8859-1 results.
        git config i18n.commitencoding ISO-8859-1 &&
        git config i18n.logoutputencoding UTF-8 &&
 -      . ../t3901-8859-1.txt &&
 +      . "$TEST_DIRECTORY"/t3901-8859-1.txt &&
  
        git reset --hard side &&
-       git-rebase --merge master &&
+       git rebase --merge master &&
  
        check_encoding 2 8859
  '
diff --combined t/t4012-diff-binary.sh
index 69934991cb297ca817e9fdf254e70de15b607780,64c372a025bd78afc3d3a2ce13543561f9c97706..b8ec6e90afb970b1b2540e30901b2f058522544e
@@@ -12,7 -12,7 +12,7 @@@ test_expect_success 'prepare repository
        'echo AIT >a && echo BIT >b && echo CIT >c && echo DIT >d &&
         git update-index --add a b c d &&
         echo git >a &&
 -       cat ../test4012.png >b &&
 +       cat "$TEST_DIRECTORY"/test4012.png >b &&
         echo git >c &&
         cat b b >d'
  
@@@ -61,7 -61,7 +61,7 @@@ test_expect_success 'apply detecting co
         detected=`sed -ne "${detected}p" broken` &&
         test "$detected" = xCIT'
  
- test_expect_success 'initial commit' 'git-commit -a -m initial'
+ test_expect_success 'initial commit' 'git commit -a -m initial'
  
  # Try removal (b), modification (d), and creation (e).
  test_expect_success 'diff-index with --binary' \
@@@ -72,7 -72,7 +72,7 @@@
         git apply --stat --summary current'
  
  test_expect_success 'apply binary patch' \
-       'git-reset --hard &&
+       'git reset --hard &&
         git apply --binary --index <current &&
         tree1=`git write-tree` &&
         test "$tree1" = "$tree0"'
diff --combined t/t5500-fetch-pack.sh
index 7125baebb891d276ab2a9724b5a6801da7cfc884,448ec7156585a22f61943041dd8381f2cb7ec5d1..c450f33f333e6f1c367f8f350dfd78f8f44a0fee
@@@ -58,7 -58,7 +58,7 @@@ pull_to_client () 
  
        cd client
        test_expect_success "$number pull" \
-               "git-fetch-pack -k -v .. $heads"
+               "git fetch-pack -k -v .. $heads"
        case "$heads" in *A*) echo $ATIP > .git/refs/heads/A;; esac
        case "$heads" in *B*) echo $BTIP > .git/refs/heads/B;; esac
        git symbolic-ref HEAD refs/heads/`echo $heads | sed -e 's/^\(.\).*$/\1/'`
@@@ -129,7 -129,7 +129,7 @@@ pull_to_client 2nd "B" $((64*3)
  
  pull_to_client 3rd "A" $((1*3)) # old fails
  
- test_expect_success "clone shallow" 'git-clone --depth 2 "file://$(pwd)/." shallow'
+ test_expect_success "clone shallow" 'git clone --depth 2 "file://$(pwd)/." shallow'
  
  (cd shallow; git count-objects -v) > count.shallow
  
@@@ -137,7 -137,7 +137,7 @@@ test_expect_success "clone shallow obje
        "test \"in-pack: 18\" = \"$(grep in-pack count.shallow)\""
  
  count_output () {
 -      sed -e '/^in-pack:/d' -e '/^packs:/d' -e '/: 0$/d' "$1"
 +      sed -e '/^in-pack:/d' -e '/^packs:/d' -e '/^size-pack:/d' -e '/: 0$/d' "$1"
  }
  
  test_expect_success "clone shallow object count (part 2)" '
diff --combined t/t7001-mv.sh
index 78167980b31caa7d0da5e46337d6738ae473b940,66bb1264ff7f8528168ca82ba908cff29658fa9d..575ef5beb2bdd3a0814fb45010ae7889b936f543
@@@ -6,9 -6,9 +6,9 @@@ test_description='git mv in subdirs
  test_expect_success \
      'prepare reference tree' \
      'mkdir path0 path1 &&
 -     cp ../../COPYING path0/COPYING &&
 +     cp "$TEST_DIRECTORY"/../COPYING path0/COPYING &&
       git add path0/COPYING &&
-      git-commit -m add -a'
+      git commit -m add -a'
  
  test_expect_success \
      'moving the file out of subdirectory' \
@@@ -17,7 -17,7 +17,7 @@@
  # in path0 currently
  test_expect_success \
      'commiting the change' \
-     'cd .. && git-commit -m move-out -a'
+     'cd .. && git commit -m move-out -a'
  
  test_expect_success \
      'checking the commit' \
@@@ -31,7 -31,7 +31,7 @@@ test_expect_success 
  # in path0 currently
  test_expect_success \
      'commiting the change' \
-     'cd .. && git-commit -m move-in -a'
+     'cd .. && git commit -m move-in -a'
  
  test_expect_success \
      'checking the commit' \
@@@ -40,9 -40,9 +40,9 @@@
  
  test_expect_success \
      'adding another file' \
 -    'cp ../../README path0/README &&
 +    'cp "$TEST_DIRECTORY"/../README path0/README &&
       git add path0/README &&
-      git-commit -m add2 -a'
+      git commit -m add2 -a'
  
  test_expect_success \
      'moving whole subdirectory' \
@@@ -50,7 -50,7 +50,7 @@@
  
  test_expect_success \
      'commiting the change' \
-     'git-commit -m dir-move -a'
+     'git commit -m dir-move -a'
  
  test_expect_success \
      'checking the commit' \
@@@ -69,7 -69,7 +69,7 @@@ test_expect_success 
  
  test_expect_success \
      'commiting the change' \
-     'git-commit -m dir-move -a'
+     'git commit -m dir-move -a'
  
  test_expect_success \
      'checking the commit' \
diff --combined t/t7003-filter-branch.sh
index 95f13a8b2ba41b95f04d667ad18b4a07c8ee9d15,182aea4267c33fd0f737c9028cedcb635e3348e2..b0a9d7d536314ec842b141c09ba0d6f8b06b6288
@@@ -1,6 -1,6 +1,6 @@@
  #!/bin/sh
  
- test_description='git-filter-branch'
+ test_description='git filter-branch'
  . ./test-lib.sh
  
  make_commit () {
@@@ -32,14 -32,14 +32,14 @@@ test_expect_success 'setup' 
  H=$(git rev-parse H)
  
  test_expect_success 'rewrite identically' '
-       git-filter-branch branch
+       git filter-branch branch
  '
  test_expect_success 'result is really identical' '
        test $H = $(git rev-parse HEAD)
  '
  
  test_expect_success 'rewrite bare repository identically' '
-       (git config core.bare true && cd .git && git-filter-branch branch)
+       (git config core.bare true && cd .git && git filter-branch branch)
  '
  git config core.bare false
  test_expect_success 'result is really identical' '
@@@ -47,7 -47,7 +47,7 @@@
  '
  
  test_expect_success 'rewrite, renaming a specific file' '
-       git-filter-branch -f --tree-filter "mv d doh || :" HEAD
+       git filter-branch -f --tree-filter "mv d doh || :" HEAD
  '
  
  test_expect_success 'test that the file was renamed' '
@@@ -58,7 -58,7 +58,7 @@@
  '
  
  test_expect_success 'rewrite, renaming a specific directory' '
-       git-filter-branch -f --tree-filter "mv dir diroh || :" HEAD
+       git filter-branch -f --tree-filter "mv dir diroh || :" HEAD
  '
  
  test_expect_success 'test that the directory was renamed' '
@@@ -73,7 -73,7 +73,7 @@@
  git tag oldD HEAD~4
  test_expect_success 'rewrite one branch, keeping a side branch' '
        git branch modD oldD &&
-       git-filter-branch -f --tree-filter "mv b boh || :" D..modD
+       git filter-branch -f --tree-filter "mv b boh || :" D..modD
  '
  
  test_expect_success 'common ancestor is still common (unchanged)' '
@@@ -96,17 -96,13 +96,17 @@@ test_expect_success 'filter subdirector
        test_tick &&
        git commit -m "again not subdir" &&
        git branch sub &&
 -      git filter-branch -f --subdirectory-filter subdir refs/heads/sub
 +      git branch sub-earlier HEAD~2 &&
-       git-filter-branch -f --subdirectory-filter subdir \
++      git filter-branch -f --subdirectory-filter subdir \
 +              refs/heads/sub refs/heads/sub-earlier
  '
  
  test_expect_success 'subdirectory filter result looks okay' '
        test 2 = $(git rev-list sub | wc -l) &&
        git show sub:new &&
 -      test_must_fail git show sub:subdir
 +      test_must_fail git show sub:subdir &&
 +      git show sub-earlier:new &&
 +      test_must_fail git show sub-earlier:subdir
  '
  
  test_expect_success 'more setup' '
  
  test_expect_success 'use index-filter to move into a subdirectory' '
        git branch directorymoved &&
-       git-filter-branch -f --index-filter \
+       git filter-branch -f --index-filter \
                 "git ls-files -s | sed \"s-\\t-&newsubdir/-\" |
                  GIT_INDEX_FILE=\$GIT_INDEX_FILE.new \
                        git update-index --index-info &&
  
  test_expect_success 'stops when msg filter fails' '
        old=$(git rev-parse HEAD) &&
-       test_must_fail git-filter-branch -f --msg-filter false HEAD &&
+       test_must_fail git filter-branch -f --msg-filter false HEAD &&
        test $old = $(git rev-parse HEAD) &&
        rm -rf .git-rewrite
  '
@@@ -144,7 -140,7 +144,7 @@@ test_expect_success 'author informatio
        test_tick &&
        GIT_AUTHOR_NAME="B V Uips" git commit -m bvuips &&
        git branch preserved-author &&
-       git-filter-branch -f --msg-filter "cat; \
+       git filter-branch -f --msg-filter "cat; \
                        test \$GIT_COMMIT != $(git rev-parse master) || \
                        echo Hallo" \
                preserved-author &&
@@@ -156,7 -152,7 +156,7 @@@ test_expect_success "remove a certain a
        test_tick &&
        git commit -m i i &&
        git branch removed-author &&
-       git-filter-branch -f --commit-filter "\
+       git filter-branch -f --commit-filter "\
                if [ \"\$GIT_AUTHOR_NAME\" = \"B V Uips\" ];\
                then\
                        skip_commit \"\$@\";
@@@ -254,12 -250,4 +254,12 @@@ test_expect_success 'Tag name filterin
        test_cmp expect actual
  '
  
 +test_expect_success 'Tag name filtering allows slashes in tag names' '
 +      git tag -m tag-with-slash X/1 &&
 +      git cat-file tag X/1 | sed -e s,X/1,X/2, > expect &&
 +      git filter-branch -f --tag-name-filter "echo X/2" &&
 +      git cat-file tag X/2 > actual &&
 +      test_cmp expect actual
 +'
 +
  test_done
diff --combined t/t7004-tag.sh
index 198244c57d0adb7c7e6c698ff098ac19055d3d21,33cde705953acc9a30d8535da77fe0f90e2b3118..f0edbf1a76739177943006461b853ec17e8bbb2b
@@@ -3,7 -3,7 +3,7 @@@
  # Copyright (c) 2007 Carlos Rica
  #
  
- test_description='git-tag
+ test_description='git tag
  
  Tests for operations with tags.'
  
@@@ -22,25 -22,25 +22,25 @@@ test_expect_success 'listing all tags i
  '
  
  test_expect_success 'listing all tags in an empty tree should output nothing' '
-       test `git-tag -l | wc -l` -eq 0 &&
-       test `git-tag | wc -l` -eq 0
+       test `git tag -l | wc -l` -eq 0 &&
+       test `git tag | wc -l` -eq 0
  '
  
  test_expect_success 'looking for a tag in an empty tree should fail' \
        '! (tag_exists mytag)'
  
  test_expect_success 'creating a tag in an empty tree should fail' '
-       test_must_fail git-tag mynotag &&
+       test_must_fail git tag mynotag &&
        ! tag_exists mynotag
  '
  
  test_expect_success 'creating a tag for HEAD in an empty tree should fail' '
-       test_must_fail git-tag mytaghead HEAD &&
+       test_must_fail git tag mytaghead HEAD &&
        ! tag_exists mytaghead
  '
  
  test_expect_success 'creating a tag for an unknown revision should fail' '
-       test_must_fail git-tag mytagnorev aaaaaaaaaaa &&
+       test_must_fail git tag mytagnorev aaaaaaaaaaa &&
        ! tag_exists mytagnorev
  '
  
@@@ -54,32 -54,32 +54,32 @@@ test_expect_success 'creating a tag usi
  '
  
  test_expect_success 'listing all tags if one exists should succeed' '
-       git-tag -l &&
-       git-tag
+       git tag -l &&
+       git tag
  '
  
  test_expect_success 'listing all tags if one exists should output that tag' '
-       test `git-tag -l` = mytag &&
-       test `git-tag` = mytag
+       test `git tag -l` = mytag &&
+       test `git tag` = mytag
  '
  
  # pattern matching:
  
  test_expect_success 'listing a tag using a matching pattern should succeed' \
-       'git-tag -l mytag'
+       'git tag -l mytag'
  
  test_expect_success \
        'listing a tag using a matching pattern should output that tag' \
-       'test `git-tag -l mytag` = mytag'
+       'test `git tag -l mytag` = mytag'
  
  # todo: git tag -l now returns always zero, when fixed, change this test
  test_expect_success \
        'listing tags using a non-matching pattern should suceed' \
-       'git-tag -l xxx'
+       'git tag -l xxx'
  
  test_expect_success \
        'listing tags using a non-matching pattern should output nothing' \
-       'test `git-tag -l xxx | wc -l` -eq 0'
+       'test `git tag -l xxx | wc -l` -eq 0'
  
  # special cases for creating tags:
  
@@@ -89,13 -89,13 +89,13 @@@ test_expect_success 
  
  test_expect_success \
        'trying to create a tag with a non-valid name should fail' '
-       test `git-tag -l | wc -l` -eq 1 &&
+       test `git tag -l | wc -l` -eq 1 &&
        test_must_fail git tag "" &&
        test_must_fail git tag .othertag &&
        test_must_fail git tag "other tag" &&
        test_must_fail git tag "othertag^" &&
        test_must_fail git tag "other~tag" &&
-       test `git-tag -l | wc -l` -eq 1
+       test `git tag -l | wc -l` -eq 1
  '
  
  test_expect_success 'creating a tag using HEAD directly should succeed' '
  
  test_expect_success 'trying to delete an unknown tag should fail' '
        ! tag_exists unknown-tag &&
-       test_must_fail git-tag -d unknown-tag
+       test_must_fail git tag -d unknown-tag
  '
  
  cat >expect <<EOF
@@@ -117,7 -117,7 +117,7 @@@ EO
  test_expect_success \
        'trying to delete tags without params should succeed and do nothing' '
        git tag -l > actual && test_cmp expect actual &&
-       git-tag -d &&
+       git tag -d &&
        git tag -l > actual && test_cmp expect actual
  '
  
@@@ -125,7 -125,7 +125,7 @@@ test_expect_success 
        'deleting two existing tags in one command should succeed' '
        tag_exists mytag &&
        tag_exists myhead &&
-       git-tag -d mytag myhead &&
+       git tag -d mytag myhead &&
        ! tag_exists mytag &&
        ! tag_exists myhead
  '
  test_expect_success \
        'creating a tag with the name of another deleted one should succeed' '
        ! tag_exists mytag &&
-       git-tag mytag &&
+       git tag mytag &&
        tag_exists mytag
  '
  
@@@ -141,13 -141,13 +141,13 @@@ test_expect_success 
        'trying to delete two tags, existing and not, should fail in the 2nd' '
        tag_exists mytag &&
        ! tag_exists myhead &&
-       test_must_fail git-tag -d mytag anothertag &&
+       test_must_fail git tag -d mytag anothertag &&
        ! tag_exists mytag &&
        ! tag_exists myhead
  '
  
  test_expect_success 'trying to delete an already deleted tag should fail' \
-       'test_must_fail git-tag -d mytag'
+       'test_must_fail git tag -d mytag'
  
  # listing various tags with pattern matching:
  
@@@ -185,7 -185,7 +185,7 @@@ cb
  EOF
  test_expect_success \
        'listing tags with substring as pattern must print those matching' '
-       git-tag -l "*a*" > actual &&
+       git tag -l "*a*" > actual &&
        test_cmp expect actual
  '
  
@@@ -195,7 -195,7 +195,7 @@@ v1.0.
  EOF
  test_expect_success \
        'listing tags with a suffix as pattern must print those matching' '
-       git-tag -l "*.1" > actual &&
+       git tag -l "*.1" > actual &&
        test_cmp expect actual
  '
  
@@@ -205,7 -205,7 +205,7 @@@ t21
  EOF
  test_expect_success \
        'listing tags with a prefix as pattern must print those matching' '
-       git-tag -l "t21*" > actual &&
+       git tag -l "t21*" > actual &&
        test_cmp expect actual
  '
  
@@@ -214,7 -214,7 +214,7 @@@ a
  EOF
  test_expect_success \
        'listing tags using a name as pattern must print that one matching' '
-       git-tag -l a1 > actual &&
+       git tag -l a1 > actual &&
        test_cmp expect actual
  '
  
@@@ -223,7 -223,7 +223,7 @@@ v1.
  EOF
  test_expect_success \
        'listing tags using a name as pattern must print that one matching' '
-       git-tag -l v1.0 > actual &&
+       git tag -l v1.0 > actual &&
        test_cmp expect actual
  '
  
@@@ -233,14 -233,14 +233,14 @@@ v1.1.
  EOF
  test_expect_success \
        'listing tags with ? in the pattern should print those matching' '
-       git-tag -l "v1.?.?" > actual &&
+       git tag -l "v1.?.?" > actual &&
        test_cmp expect actual
  '
  
  >expect
  test_expect_success \
        'listing tags using v.* should print nothing because none have v.' '
-       git-tag -l "v.*" > actual &&
+       git tag -l "v.*" > actual &&
        test_cmp expect actual
  '
  
@@@ -252,7 -252,7 +252,7 @@@ v1.1.
  EOF
  test_expect_success \
        'listing tags using v* should print only those having v' '
-       git-tag -l "v*" > actual &&
+       git tag -l "v*" > actual &&
        test_cmp expect actual
  '
  
  
  test_expect_success \
        'a non-annotated tag created without parameters should point to HEAD' '
-       git-tag non-annotated-tag &&
+       git tag non-annotated-tag &&
        test $(git cat-file -t non-annotated-tag) = commit &&
        test $(git rev-parse non-annotated-tag) = $(git rev-parse HEAD)
  '
  
  test_expect_success 'trying to verify an unknown tag should fail' \
-       'test_must_fail git-tag -v unknown-tag'
+       'test_must_fail git tag -v unknown-tag'
  
  test_expect_success \
        'trying to verify a non-annotated and non-signed tag should fail' \
-       'test_must_fail git-tag -v non-annotated-tag'
+       'test_must_fail git tag -v non-annotated-tag'
  
  test_expect_success \
        'trying to verify many non-annotated or unknown tags, should fail' \
-       'test_must_fail git-tag -v unknown-tag1 non-annotated-tag unknown-tag2'
+       'test_must_fail git tag -v unknown-tag1 non-annotated-tag unknown-tag2'
  
  # creating annotated tags:
  
@@@ -300,7 -300,7 +300,7 @@@ get_tag_header annotated-tag $commit co
  echo "A message" >>expect
  test_expect_success \
        'creating an annotated tag with -m message should succeed' '
-       git-tag -m "A message" annotated-tag &&
+       git tag -m "A message" annotated-tag &&
        get_tag_msg annotated-tag >actual &&
        test_cmp expect actual
  '
@@@ -313,7 -313,7 +313,7 @@@ get_tag_header file-annotated-tag $comm
  cat msgfile >>expect
  test_expect_success \
        'creating an annotated tag with -F messagefile should succeed' '
-       git-tag -F msgfile file-annotated-tag &&
+       git tag -F msgfile file-annotated-tag &&
        get_tag_msg file-annotated-tag >actual &&
        test_cmp expect actual
  '
@@@ -325,7 -325,7 +325,7 @@@ EO
  get_tag_header stdin-annotated-tag $commit commit $time >expect
  cat inputmsg >>expect
  test_expect_success 'creating an annotated tag with -F - should succeed' '
-       git-tag -F - stdin-annotated-tag <inputmsg &&
+       git tag -F - stdin-annotated-tag <inputmsg &&
        get_tag_msg stdin-annotated-tag >actual &&
        test_cmp expect actual
  '
@@@ -334,7 -334,7 +334,7 @@@ test_expect_success 
        'trying to create a tag with a non-existing -F file should fail' '
        ! test -f nonexistingfile &&
        ! tag_exists notag &&
-       test_must_fail git-tag -F nonexistingfile notag &&
+       test_must_fail git tag -F nonexistingfile notag &&
        ! tag_exists notag
  '
  
@@@ -343,11 -343,11 +343,11 @@@ test_expect_success 
        echo "message file 1" >msgfile1 &&
        echo "message file 2" >msgfile2 &&
        ! tag_exists msgtag &&
-       test_must_fail git-tag -m "message 1" -F msgfile1 msgtag &&
+       test_must_fail git tag -m "message 1" -F msgfile1 msgtag &&
        ! tag_exists msgtag &&
-       test_must_fail git-tag -F msgfile1 -m "message 1" msgtag &&
+       test_must_fail git tag -F msgfile1 -m "message 1" msgtag &&
        ! tag_exists msgtag &&
-       test_must_fail git-tag -m "message 1" -F msgfile1 \
+       test_must_fail git tag -m "message 1" -F msgfile1 \
                -m "message 2" msgtag &&
        ! tag_exists msgtag
  '
  get_tag_header empty-annotated-tag $commit commit $time >expect
  test_expect_success \
        'creating a tag with an empty -m message should succeed' '
-       git-tag -m "" empty-annotated-tag &&
+       git tag -m "" empty-annotated-tag &&
        get_tag_msg empty-annotated-tag >actual &&
        test_cmp expect actual
  '
  get_tag_header emptyfile-annotated-tag $commit commit $time >expect
  test_expect_success \
        'creating a tag with an empty -F messagefile should succeed' '
-       git-tag -F emptyfile emptyfile-annotated-tag &&
+       git tag -F emptyfile emptyfile-annotated-tag &&
        get_tag_msg emptyfile-annotated-tag >actual &&
        test_cmp expect actual
  '
@@@ -387,7 -387,7 +387,7 @@@ Trailing blank line
  EOF
  test_expect_success \
        'extra blanks in the message for an annotated tag should be removed' '
-       git-tag -F blanksfile blanks-annotated-tag &&
+       git tag -F blanksfile blanks-annotated-tag &&
        get_tag_msg blanks-annotated-tag >actual &&
        test_cmp expect actual
  '
  get_tag_header blank-annotated-tag $commit commit $time >expect
  test_expect_success \
        'creating a tag with blank -m message with spaces should succeed' '
-       git-tag -m "     " blank-annotated-tag &&
+       git tag -m "     " blank-annotated-tag &&
        get_tag_msg blank-annotated-tag >actual &&
        test_cmp expect actual
  '
@@@ -406,7 -406,7 +406,7 @@@ echo '  '    >>blankfil
  get_tag_header blankfile-annotated-tag $commit commit $time >expect
  test_expect_success \
        'creating a tag with blank -F messagefile with spaces should succeed' '
-       git-tag -F blankfile blankfile-annotated-tag &&
+       git tag -F blankfile blankfile-annotated-tag &&
        get_tag_msg blankfile-annotated-tag >actual &&
        test_cmp expect actual
  '
@@@ -415,7 -415,7 +415,7 @@@ printf '      ' >blanknonlfil
  get_tag_header blanknonlfile-annotated-tag $commit commit $time >expect
  test_expect_success \
        'creating a tag with -F file of spaces and no newline should succeed' '
-       git-tag -F blanknonlfile blanknonlfile-annotated-tag &&
+       git tag -F blanknonlfile blanknonlfile-annotated-tag &&
        get_tag_msg blanknonlfile-annotated-tag >actual &&
        test_cmp expect actual
  '
@@@ -450,7 -450,7 +450,7 @@@ Last line
  EOF
  test_expect_success \
        'creating a tag using a -F messagefile with #comments should succeed' '
-       git-tag -F commentsfile comments-annotated-tag &&
+       git tag -F commentsfile comments-annotated-tag &&
        get_tag_msg comments-annotated-tag >actual &&
        test_cmp expect actual
  '
  get_tag_header comment-annotated-tag $commit commit $time >expect
  test_expect_success \
        'creating a tag with a #comment in the -m message should succeed' '
-       git-tag -m "#comment" comment-annotated-tag &&
+       git tag -m "#comment" comment-annotated-tag &&
        get_tag_msg comment-annotated-tag >actual &&
        test_cmp expect actual
  '
@@@ -469,7 -469,7 +469,7 @@@ echo '####'     >>commentfil
  get_tag_header commentfile-annotated-tag $commit commit $time >expect
  test_expect_success \
        'creating a tag with #comments in the -F messagefile should succeed' '
-       git-tag -F commentfile commentfile-annotated-tag &&
+       git tag -F commentfile commentfile-annotated-tag &&
        get_tag_msg commentfile-annotated-tag >actual &&
        test_cmp expect actual
  '
@@@ -478,7 -478,7 +478,7 @@@ printf '#comment' >commentnonlfil
  get_tag_header commentnonlfile-annotated-tag $commit commit $time >expect
  test_expect_success \
        'creating a tag with a file of #comment and no newline should succeed' '
-       git-tag -F commentnonlfile commentnonlfile-annotated-tag &&
+       git tag -F commentnonlfile commentnonlfile-annotated-tag &&
        get_tag_msg commentnonlfile-annotated-tag >actual &&
        test_cmp expect actual
  '
  
  test_expect_success \
        'listing the one-line message of a non-signed tag should succeed' '
-       git-tag -m "A msg" tag-one-line &&
+       git tag -m "A msg" tag-one-line &&
  
        echo "tag-one-line" >expect &&
-       git-tag -l | grep "^tag-one-line" >actual &&
+       git tag -l | grep "^tag-one-line" >actual &&
        test_cmp expect actual &&
-       git-tag -n0 -l | grep "^tag-one-line" >actual &&
+       git tag -n0 -l | grep "^tag-one-line" >actual &&
        test_cmp expect actual &&
-       git-tag -n0 -l tag-one-line >actual &&
+       git tag -n0 -l tag-one-line >actual &&
        test_cmp expect actual &&
  
        echo "tag-one-line    A msg" >expect &&
-       git-tag -n1 -l | grep "^tag-one-line" >actual &&
+       git tag -n1 -l | grep "^tag-one-line" >actual &&
        test_cmp expect actual &&
-       git-tag -n -l | grep "^tag-one-line" >actual &&
+       git tag -n -l | grep "^tag-one-line" >actual &&
        test_cmp expect actual &&
-       git-tag -n1 -l tag-one-line >actual &&
+       git tag -n1 -l tag-one-line >actual &&
        test_cmp expect actual &&
-       git-tag -n2 -l tag-one-line >actual &&
+       git tag -n2 -l tag-one-line >actual &&
        test_cmp expect actual &&
-       git-tag -n999 -l tag-one-line >actual &&
+       git tag -n999 -l tag-one-line >actual &&
        test_cmp expect actual
  '
  
  test_expect_success \
        'listing the zero-lines message of a non-signed tag should succeed' '
-       git-tag -m "" tag-zero-lines &&
+       git tag -m "" tag-zero-lines &&
  
        echo "tag-zero-lines" >expect &&
-       git-tag -l | grep "^tag-zero-lines" >actual &&
+       git tag -l | grep "^tag-zero-lines" >actual &&
        test_cmp expect actual &&
-       git-tag -n0 -l | grep "^tag-zero-lines" >actual &&
+       git tag -n0 -l | grep "^tag-zero-lines" >actual &&
        test_cmp expect actual &&
-       git-tag -n0 -l tag-zero-lines >actual &&
+       git tag -n0 -l tag-zero-lines >actual &&
        test_cmp expect actual &&
  
        echo "tag-zero-lines  " >expect &&
-       git-tag -n1 -l | grep "^tag-zero-lines" >actual &&
+       git tag -n1 -l | grep "^tag-zero-lines" >actual &&
        test_cmp expect actual &&
-       git-tag -n -l | grep "^tag-zero-lines" >actual &&
+       git tag -n -l | grep "^tag-zero-lines" >actual &&
        test_cmp expect actual &&
-       git-tag -n1 -l tag-zero-lines >actual &&
+       git tag -n1 -l tag-zero-lines >actual &&
        test_cmp expect actual &&
-       git-tag -n2 -l tag-zero-lines >actual &&
+       git tag -n2 -l tag-zero-lines >actual &&
        test_cmp expect actual &&
-       git-tag -n999 -l tag-zero-lines >actual &&
+       git tag -n999 -l tag-zero-lines >actual &&
        test_cmp expect actual
  '
  
@@@ -540,42 -540,42 +540,42 @@@ echo 'tag line two' >>annotagms
  echo 'tag line three' >>annotagmsg
  test_expect_success \
        'listing many message lines of a non-signed tag should succeed' '
-       git-tag -F annotagmsg tag-lines &&
+       git tag -F annotagmsg tag-lines &&
  
        echo "tag-lines" >expect &&
-       git-tag -l | grep "^tag-lines" >actual &&
+       git tag -l | grep "^tag-lines" >actual &&
        test_cmp expect actual &&
-       git-tag -n0 -l | grep "^tag-lines" >actual &&
+       git tag -n0 -l | grep "^tag-lines" >actual &&
        test_cmp expect actual &&
-       git-tag -n0 -l tag-lines >actual &&
+       git tag -n0 -l tag-lines >actual &&
        test_cmp expect actual &&
  
        echo "tag-lines       tag line one" >expect &&
-       git-tag -n1 -l | grep "^tag-lines" >actual &&
+       git tag -n1 -l | grep "^tag-lines" >actual &&
        test_cmp expect actual &&
-       git-tag -n -l | grep "^tag-lines" >actual &&
+       git tag -n -l | grep "^tag-lines" >actual &&
        test_cmp expect actual &&
-       git-tag -n1 -l tag-lines >actual &&
+       git tag -n1 -l tag-lines >actual &&
        test_cmp expect actual &&
  
        echo "    tag line two" >>expect &&
-       git-tag -n2 -l | grep "^ *tag.line" >actual &&
+       git tag -n2 -l | grep "^ *tag.line" >actual &&
        test_cmp expect actual &&
-       git-tag -n2 -l tag-lines >actual &&
+       git tag -n2 -l tag-lines >actual &&
        test_cmp expect actual &&
  
        echo "    tag line three" >>expect &&
-       git-tag -n3 -l | grep "^ *tag.line" >actual &&
+       git tag -n3 -l | grep "^ *tag.line" >actual &&
        test_cmp expect actual &&
-       git-tag -n3 -l tag-lines >actual &&
+       git tag -n3 -l tag-lines >actual &&
        test_cmp expect actual &&
-       git-tag -n4 -l | grep "^ *tag.line" >actual &&
+       git tag -n4 -l | grep "^ *tag.line" >actual &&
        test_cmp expect actual &&
-       git-tag -n4 -l tag-lines >actual &&
+       git tag -n4 -l tag-lines >actual &&
        test_cmp expect actual &&
-       git-tag -n99 -l | grep "^ *tag.line" >actual &&
+       git tag -n99 -l | grep "^ *tag.line" >actual &&
        test_cmp expect actual &&
-       git-tag -n99 -l tag-lines >actual &&
+       git tag -n99 -l tag-lines >actual &&
        test_cmp expect actual
  '
  
  test_expect_success \
        'trying to verify an annotated non-signed tag should fail' '
        tag_exists annotated-tag &&
-       test_must_fail git-tag -v annotated-tag
+       test_must_fail git tag -v annotated-tag
  '
  
  test_expect_success \
        'trying to verify a file-annotated non-signed tag should fail' '
        tag_exists file-annotated-tag &&
-       test_must_fail git-tag -v file-annotated-tag
+       test_must_fail git tag -v file-annotated-tag
  '
  
  test_expect_success \
        'trying to verify two annotated non-signed tags should fail' '
        tag_exists annotated-tag file-annotated-tag &&
-       test_must_fail git-tag -v annotated-tag file-annotated-tag
+       test_must_fail git tag -v annotated-tag file-annotated-tag
  '
  
  # creating and verifying signed tags:
@@@ -625,7 -625,7 +625,7 @@@ esa
  # Name and email: C O Mitter <committer@example.com>
  # No password given, to enable non-interactive operation.
  
 -cp -R ../t7004 ./gpghome
 +cp -R "$TEST_DIRECTORY"/t7004 ./gpghome
  chmod 0700 gpghome
  GNUPGHOME="$(pwd)/gpghome"
  export GNUPGHOME
@@@ -634,7 -634,7 +634,7 @@@ get_tag_header signed-tag $commit commi
  echo 'A signed tag message' >>expect
  echo '-----BEGIN PGP SIGNATURE-----' >>expect
  test_expect_success 'creating a signed tag with -m message should succeed' '
-       git-tag -s -m "A signed tag message" signed-tag &&
+       git tag -s -m "A signed tag message" signed-tag &&
        get_tag_msg signed-tag >actual &&
        test_cmp expect actual
  '
@@@ -675,7 -675,7 +675,7 @@@ get_tag_header implied-sign $commit com
  ./fakeeditor >>expect
  echo '-----BEGIN PGP SIGNATURE-----' >>expect
  test_expect_success '-u implies signed tag' '
-       GIT_EDITOR=./fakeeditor git-tag -u CDDE430D implied-sign &&
+       GIT_EDITOR=./fakeeditor git tag -u CDDE430D implied-sign &&
        get_tag_msg implied-sign >actual &&
        test_cmp expect actual
  '
@@@ -689,7 -689,7 +689,7 @@@ cat sigmsgfile >>expec
  echo '-----BEGIN PGP SIGNATURE-----' >>expect
  test_expect_success \
        'creating a signed tag with -F messagefile should succeed' '
-       git-tag -s -F sigmsgfile file-signed-tag &&
+       git tag -s -F sigmsgfile file-signed-tag &&
        get_tag_msg file-signed-tag >actual &&
        test_cmp expect actual
  '
@@@ -702,7 -702,7 +702,7 @@@ get_tag_header stdin-signed-tag $commi
  cat siginputmsg >>expect
  echo '-----BEGIN PGP SIGNATURE-----' >>expect
  test_expect_success 'creating a signed tag with -F - should succeed' '
-       git-tag -s -F - stdin-signed-tag <siginputmsg &&
+       git tag -s -F - stdin-signed-tag <siginputmsg &&
        get_tag_msg stdin-signed-tag >actual &&
        test_cmp expect actual
  '
@@@ -711,7 -711,7 +711,7 @@@ get_tag_header implied-annotate $commi
  ./fakeeditor >>expect
  echo '-----BEGIN PGP SIGNATURE-----' >>expect
  test_expect_success '-s implies annotated tag' '
-       GIT_EDITOR=./fakeeditor git-tag -s implied-annotate &&
+       GIT_EDITOR=./fakeeditor git tag -s implied-annotate &&
        get_tag_msg implied-annotate >actual &&
        test_cmp expect actual
  '
@@@ -720,23 -720,23 +720,23 @@@ test_expect_success 
        'trying to create a signed tag with non-existing -F file should fail' '
        ! test -f nonexistingfile &&
        ! tag_exists nosigtag &&
-       test_must_fail git-tag -s -F nonexistingfile nosigtag &&
+       test_must_fail git tag -s -F nonexistingfile nosigtag &&
        ! tag_exists nosigtag
  '
  
  test_expect_success 'verifying a signed tag should succeed' \
-       'git-tag -v signed-tag'
+       'git tag -v signed-tag'
  
  test_expect_success 'verifying two signed tags in one command should succeed' \
-       'git-tag -v signed-tag file-signed-tag'
+       'git tag -v signed-tag file-signed-tag'
  
  test_expect_success \
        'verifying many signed and non-signed tags should fail' '
-       test_must_fail git-tag -v signed-tag annotated-tag &&
-       test_must_fail git-tag -v file-annotated-tag file-signed-tag &&
-       test_must_fail git-tag -v annotated-tag \
+       test_must_fail git tag -v signed-tag annotated-tag &&
+       test_must_fail git tag -v file-annotated-tag file-signed-tag &&
+       test_must_fail git tag -v annotated-tag \
                file-signed-tag file-annotated-tag &&
-       test_must_fail git-tag -v signed-tag annotated-tag file-signed-tag
+       test_must_fail git tag -v signed-tag annotated-tag file-signed-tag
  '
  
  test_expect_success 'verifying a forged tag should fail' '
                sed -e "s/signed-tag/forged-tag/" |
                git mktag) &&
        git tag forged-tag $forged &&
-       test_must_fail git-tag -v forged-tag
+       test_must_fail git tag -v forged-tag
  '
  
  # blank and empty messages for signed tags:
@@@ -753,10 -753,10 +753,10 @@@ get_tag_header empty-signed-tag $commi
  echo '-----BEGIN PGP SIGNATURE-----' >>expect
  test_expect_success \
        'creating a signed tag with an empty -m message should succeed' '
-       git-tag -s -m "" empty-signed-tag &&
+       git tag -s -m "" empty-signed-tag &&
        get_tag_msg empty-signed-tag >actual &&
        test_cmp expect actual &&
-       git-tag -v empty-signed-tag
+       git tag -v empty-signed-tag
  '
  
  >sigemptyfile
@@@ -764,10 -764,10 +764,10 @@@ get_tag_header emptyfile-signed-tag $co
  echo '-----BEGIN PGP SIGNATURE-----' >>expect
  test_expect_success \
        'creating a signed tag with an empty -F messagefile should succeed' '
-       git-tag -s -F sigemptyfile emptyfile-signed-tag &&
+       git tag -s -F sigemptyfile emptyfile-signed-tag &&
        get_tag_msg emptyfile-signed-tag >actual &&
        test_cmp expect actual &&
-       git-tag -v emptyfile-signed-tag
+       git tag -v emptyfile-signed-tag
  '
  
  printf '\n\n  \n\t\nLeading blank lines\n' > sigblanksfile
@@@ -787,20 -787,20 +787,20 @@@ EO
  echo '-----BEGIN PGP SIGNATURE-----' >>expect
  test_expect_success \
        'extra blanks in the message for a signed tag should be removed' '
-       git-tag -s -F sigblanksfile blanks-signed-tag &&
+       git tag -s -F sigblanksfile blanks-signed-tag &&
        get_tag_msg blanks-signed-tag >actual &&
        test_cmp expect actual &&
-       git-tag -v blanks-signed-tag
+       git tag -v blanks-signed-tag
  '
  
  get_tag_header blank-signed-tag $commit commit $time >expect
  echo '-----BEGIN PGP SIGNATURE-----' >>expect
  test_expect_success \
        'creating a signed tag with a blank -m message should succeed' '
-       git-tag -s -m "     " blank-signed-tag &&
+       git tag -s -m "     " blank-signed-tag &&
        get_tag_msg blank-signed-tag >actual &&
        test_cmp expect actual &&
-       git-tag -v blank-signed-tag
+       git tag -v blank-signed-tag
  '
  
  echo '     ' >sigblankfile
@@@ -810,10 -810,10 +810,10 @@@ get_tag_header blankfile-signed-tag $co
  echo '-----BEGIN PGP SIGNATURE-----' >>expect
  test_expect_success \
        'creating a signed tag with blank -F file with spaces should succeed' '
-       git-tag -s -F sigblankfile blankfile-signed-tag &&
+       git tag -s -F sigblankfile blankfile-signed-tag &&
        get_tag_msg blankfile-signed-tag >actual &&
        test_cmp expect actual &&
-       git-tag -v blankfile-signed-tag
+       git tag -v blankfile-signed-tag
  '
  
  printf '      ' >sigblanknonlfile
@@@ -821,10 -821,10 +821,10 @@@ get_tag_header blanknonlfile-signed-ta
  echo '-----BEGIN PGP SIGNATURE-----' >>expect
  test_expect_success \
        'creating a signed tag with spaces and no newline should succeed' '
-       git-tag -s -F sigblanknonlfile blanknonlfile-signed-tag &&
+       git tag -s -F sigblanknonlfile blanknonlfile-signed-tag &&
        get_tag_msg blanknonlfile-signed-tag >actual &&
        test_cmp expect actual &&
-       git-tag -v signed-tag
+       git tag -v signed-tag
  '
  
  # messages with commented lines for signed tags:
@@@ -858,20 -858,20 +858,20 @@@ EO
  echo '-----BEGIN PGP SIGNATURE-----' >>expect
  test_expect_success \
        'creating a signed tag with a -F file with #comments should succeed' '
-       git-tag -s -F sigcommentsfile comments-signed-tag &&
+       git tag -s -F sigcommentsfile comments-signed-tag &&
        get_tag_msg comments-signed-tag >actual &&
        test_cmp expect actual &&
-       git-tag -v comments-signed-tag
+       git tag -v comments-signed-tag
  '
  
  get_tag_header comment-signed-tag $commit commit $time >expect
  echo '-----BEGIN PGP SIGNATURE-----' >>expect
  test_expect_success \
        'creating a signed tag with #commented -m message should succeed' '
-       git-tag -s -m "#comment" comment-signed-tag &&
+       git tag -s -m "#comment" comment-signed-tag &&
        get_tag_msg comment-signed-tag >actual &&
        test_cmp expect actual &&
-       git-tag -v comment-signed-tag
+       git tag -v comment-signed-tag
  '
  
  echo '#comment' >sigcommentfile
@@@ -881,10 -881,10 +881,10 @@@ get_tag_header commentfile-signed-tag $
  echo '-----BEGIN PGP SIGNATURE-----' >>expect
  test_expect_success \
        'creating a signed tag with #commented -F messagefile should succeed' '
-       git-tag -s -F sigcommentfile commentfile-signed-tag &&
+       git tag -s -F sigcommentfile commentfile-signed-tag &&
        get_tag_msg commentfile-signed-tag >actual &&
        test_cmp expect actual &&
-       git-tag -v commentfile-signed-tag
+       git tag -v commentfile-signed-tag
  '
  
  printf '#comment' >sigcommentnonlfile
@@@ -892,61 -892,61 +892,61 @@@ get_tag_header commentnonlfile-signed-t
  echo '-----BEGIN PGP SIGNATURE-----' >>expect
  test_expect_success \
        'creating a signed tag with a #comment and no newline should succeed' '
-       git-tag -s -F sigcommentnonlfile commentnonlfile-signed-tag &&
+       git tag -s -F sigcommentnonlfile commentnonlfile-signed-tag &&
        get_tag_msg commentnonlfile-signed-tag >actual &&
        test_cmp expect actual &&
-       git-tag -v commentnonlfile-signed-tag
+       git tag -v commentnonlfile-signed-tag
  '
  
  # listing messages for signed tags:
  
  test_expect_success \
        'listing the one-line message of a signed tag should succeed' '
-       git-tag -s -m "A message line signed" stag-one-line &&
+       git tag -s -m "A message line signed" stag-one-line &&
  
        echo "stag-one-line" >expect &&
-       git-tag -l | grep "^stag-one-line" >actual &&
+       git tag -l | grep "^stag-one-line" >actual &&
        test_cmp expect actual &&
-       git-tag -n0 -l | grep "^stag-one-line" >actual &&
+       git tag -n0 -l | grep "^stag-one-line" >actual &&
        test_cmp expect actual &&
-       git-tag -n0 -l stag-one-line >actual &&
+       git tag -n0 -l stag-one-line >actual &&
        test_cmp expect actual &&
  
        echo "stag-one-line   A message line signed" >expect &&
-       git-tag -n1 -l | grep "^stag-one-line" >actual &&
+       git tag -n1 -l | grep "^stag-one-line" >actual &&
        test_cmp expect actual &&
-       git-tag -n -l | grep "^stag-one-line" >actual &&
+       git tag -n -l | grep "^stag-one-line" >actual &&
        test_cmp expect actual &&
-       git-tag -n1 -l stag-one-line >actual &&
+       git tag -n1 -l stag-one-line >actual &&
        test_cmp expect actual &&
-       git-tag -n2 -l stag-one-line >actual &&
+       git tag -n2 -l stag-one-line >actual &&
        test_cmp expect actual &&
-       git-tag -n999 -l stag-one-line >actual &&
+       git tag -n999 -l stag-one-line >actual &&
        test_cmp expect actual
  '
  
  test_expect_success \
        'listing the zero-lines message of a signed tag should succeed' '
-       git-tag -s -m "" stag-zero-lines &&
+       git tag -s -m "" stag-zero-lines &&
  
        echo "stag-zero-lines" >expect &&
-       git-tag -l | grep "^stag-zero-lines" >actual &&
+       git tag -l | grep "^stag-zero-lines" >actual &&
        test_cmp expect actual &&
-       git-tag -n0 -l | grep "^stag-zero-lines" >actual &&
+       git tag -n0 -l | grep "^stag-zero-lines" >actual &&
        test_cmp expect actual &&
-       git-tag -n0 -l stag-zero-lines >actual &&
+       git tag -n0 -l stag-zero-lines >actual &&
        test_cmp expect actual &&
  
        echo "stag-zero-lines " >expect &&
-       git-tag -n1 -l | grep "^stag-zero-lines" >actual &&
+       git tag -n1 -l | grep "^stag-zero-lines" >actual &&
        test_cmp expect actual &&
-       git-tag -n -l | grep "^stag-zero-lines" >actual &&
+       git tag -n -l | grep "^stag-zero-lines" >actual &&
        test_cmp expect actual &&
-       git-tag -n1 -l stag-zero-lines >actual &&
+       git tag -n1 -l stag-zero-lines >actual &&
        test_cmp expect actual &&
-       git-tag -n2 -l stag-zero-lines >actual &&
+       git tag -n2 -l stag-zero-lines >actual &&
        test_cmp expect actual &&
-       git-tag -n999 -l stag-zero-lines >actual &&
+       git tag -n999 -l stag-zero-lines >actual &&
        test_cmp expect actual
  '
  
@@@ -955,42 -955,42 +955,42 @@@ echo 'stag line two' >>sigtagms
  echo 'stag line three' >>sigtagmsg
  test_expect_success \
        'listing many message lines of a signed tag should succeed' '
-       git-tag -s -F sigtagmsg stag-lines &&
+       git tag -s -F sigtagmsg stag-lines &&
  
        echo "stag-lines" >expect &&
-       git-tag -l | grep "^stag-lines" >actual &&
+       git tag -l | grep "^stag-lines" >actual &&
        test_cmp expect actual &&
-       git-tag -n0 -l | grep "^stag-lines" >actual &&
+       git tag -n0 -l | grep "^stag-lines" >actual &&
        test_cmp expect actual &&
-       git-tag -n0 -l stag-lines >actual &&
+       git tag -n0 -l stag-lines >actual &&
        test_cmp expect actual &&
  
        echo "stag-lines      stag line one" >expect &&
-       git-tag -n1 -l | grep "^stag-lines" >actual &&
+       git tag -n1 -l | grep "^stag-lines" >actual &&
        test_cmp expect actual &&
-       git-tag -n -l | grep "^stag-lines" >actual &&
+       git tag -n -l | grep "^stag-lines" >actual &&
        test_cmp expect actual &&
-       git-tag -n1 -l stag-lines >actual &&
+       git tag -n1 -l stag-lines >actual &&
        test_cmp expect actual &&
  
        echo "    stag line two" >>expect &&
-       git-tag -n2 -l | grep "^ *stag.line" >actual &&
+       git tag -n2 -l | grep "^ *stag.line" >actual &&
        test_cmp expect actual &&
-       git-tag -n2 -l stag-lines >actual &&
+       git tag -n2 -l stag-lines >actual &&
        test_cmp expect actual &&
  
        echo "    stag line three" >>expect &&
-       git-tag -n3 -l | grep "^ *stag.line" >actual &&
+       git tag -n3 -l | grep "^ *stag.line" >actual &&
        test_cmp expect actual &&
-       git-tag -n3 -l stag-lines >actual &&
+       git tag -n3 -l stag-lines >actual &&
        test_cmp expect actual &&
-       git-tag -n4 -l | grep "^ *stag.line" >actual &&
+       git tag -n4 -l | grep "^ *stag.line" >actual &&
        test_cmp expect actual &&
-       git-tag -n4 -l stag-lines >actual &&
+       git tag -n4 -l stag-lines >actual &&
        test_cmp expect actual &&
-       git-tag -n99 -l | grep "^ *stag.line" >actual &&
+       git tag -n99 -l | grep "^ *stag.line" >actual &&
        test_cmp expect actual &&
-       git-tag -n99 -l stag-lines >actual &&
+       git tag -n99 -l stag-lines >actual &&
        test_cmp expect actual
  '
  
@@@ -1005,7 -1005,7 +1005,7 @@@ echo "A message for a tree" >>expec
  echo '-----BEGIN PGP SIGNATURE-----' >>expect
  test_expect_success \
        'creating a signed tag pointing to a tree should succeed' '
-       git-tag -s -m "A message for a tree" tree-signed-tag HEAD^{tree} &&
+       git tag -s -m "A message for a tree" tree-signed-tag HEAD^{tree} &&
        get_tag_msg tree-signed-tag >actual &&
        test_cmp expect actual
  '
@@@ -1015,7 -1015,7 +1015,7 @@@ echo "A message for a blob" >>expec
  echo '-----BEGIN PGP SIGNATURE-----' >>expect
  test_expect_success \
        'creating a signed tag pointing to a blob should succeed' '
-       git-tag -s -m "A message for a blob" blob-signed-tag HEAD:foo &&
+       git tag -s -m "A message for a blob" blob-signed-tag HEAD:foo &&
        get_tag_msg blob-signed-tag >actual &&
        test_cmp expect actual
  '
@@@ -1025,7 -1025,7 +1025,7 @@@ echo "A message for another tag" >>expe
  echo '-----BEGIN PGP SIGNATURE-----' >>expect
  test_expect_success \
        'creating a signed tag pointing to another tag should succeed' '
-       git-tag -s -m "A message for another tag" tag-signed-tag signed-tag &&
+       git tag -s -m "A message for another tag" tag-signed-tag signed-tag &&
        get_tag_msg tag-signed-tag >actual &&
        test_cmp expect actual
  '
  # try to sign with bad user.signingkey
  git config user.signingkey BobTheMouse
  test_expect_success \
-       'git-tag -s fails if gpg is misconfigured' \
+       'git tag -s fails if gpg is misconfigured' \
        'test_must_fail git tag -s -m tail tag-gpg-failure'
  git config --unset user.signingkey
  
  rm -rf gpghome
  test_expect_success \
        'verify signed tag fails when public key is not present' \
-       'test_must_fail git-tag -v signed-tag'
+       'test_must_fail git tag -v signed-tag'
  
  test_expect_success \
-       'git-tag -a fails if tag annotation is empty' '
+       'git tag -a fails if tag annotation is empty' '
        ! (GIT_EDITOR=cat git tag -a initial-comment)
  '
  
diff --combined t/t7101-reset.sh
index ffaeb3983a2c393abdc77a35fa8546e20273f421,c4ef19e402c7f4097842b9902a751ead46703974..96e163f084f471ea75e6d5b927a5edc6462e54d4
@@@ -3,33 -3,33 +3,33 @@@
  # Copyright (c) 2006 Shawn Pearce
  #
  
- test_description='git-reset should cull empty subdirs'
+ test_description='git reset should cull empty subdirs'
  . ./test-lib.sh
  
  test_expect_success \
      'creating initial files' \
      'mkdir path0 &&
 -     cp ../../COPYING path0/COPYING &&
 +     cp "$TEST_DIRECTORY"/../COPYING path0/COPYING &&
       git add path0/COPYING &&
-      git-commit -m add -a'
+      git commit -m add -a'
  
  test_expect_success \
      'creating second files' \
      'mkdir path1 &&
       mkdir path1/path2 &&
 -     cp ../../COPYING path1/path2/COPYING &&
 -     cp ../../COPYING path1/COPYING &&
 -     cp ../../COPYING COPYING &&
 -     cp ../../COPYING path0/COPYING-TOO &&
 +     cp "$TEST_DIRECTORY"/../COPYING path1/path2/COPYING &&
 +     cp "$TEST_DIRECTORY"/../COPYING path1/COPYING &&
 +     cp "$TEST_DIRECTORY"/../COPYING COPYING &&
 +     cp "$TEST_DIRECTORY"/../COPYING path0/COPYING-TOO &&
       git add path1/path2/COPYING &&
       git add path1/COPYING &&
       git add COPYING &&
       git add path0/COPYING-TOO &&
-      git-commit -m change -a'
+      git commit -m change -a'
  
  test_expect_success \
      'resetting tree HEAD^' \
-     'git-reset --hard HEAD^'
+     'git reset --hard HEAD^'
  
  test_expect_success \
      'checking initial files exist after rewind' \
diff --combined t/t7201-co.sh
index 1dff84d2fd9ef665a9db314819152fcb94d17974,2e2b3bf53d75f587dd0823c8a82eaaf451c31607..543b1c289866d01f8aa3f931f3579565a963de9d
@@@ -3,7 -3,7 +3,7 @@@
  # Copyright (c) 2006 Junio C Hamano
  #
  
- test_description='git-checkout tests.
+ test_description='git checkout tests.
  
  Creates master, forks renamer and side branches from it.
  Test switching across them.
@@@ -337,36 -337,4 +337,36 @@@ test_expect_success 
      test refs/heads/delete-me = "$(git symbolic-ref HEAD)" &&
      test_must_fail git checkout --track -b track'
  
 +test_expect_success \
 +    'checkout with --track fakes a sensible -b <name>' '
 +    git update-ref refs/remotes/origin/koala/bear renamer &&
 +    git update-ref refs/new/koala/bear renamer &&
 +
 +    git checkout --track origin/koala/bear &&
 +    test "refs/heads/koala/bear" = "$(git symbolic-ref HEAD)" &&
 +    test "$(git rev-parse HEAD)" = "$(git rev-parse renamer)" &&
 +
 +    git checkout master && git branch -D koala/bear &&
 +
 +    git checkout --track refs/remotes/origin/koala/bear &&
 +    test "refs/heads/koala/bear" = "$(git symbolic-ref HEAD)" &&
 +    test "$(git rev-parse HEAD)" = "$(git rev-parse renamer)" &&
 +
 +    git checkout master && git branch -D koala/bear &&
 +
 +    git checkout --track remotes/origin/koala/bear &&
 +    test "refs/heads/koala/bear" = "$(git symbolic-ref HEAD)" &&
 +    test "$(git rev-parse HEAD)" = "$(git rev-parse renamer)" &&
 +
 +    git checkout master && git branch -D koala/bear &&
 +
 +    git checkout --track refs/new/koala/bear &&
 +    test "refs/heads/koala/bear" = "$(git symbolic-ref HEAD)" &&
 +    test "$(git rev-parse HEAD)" = "$(git rev-parse renamer)"
 +'
 +
 +test_expect_success \
 +    'checkout with --track, but without -b, fails with too short tracked name' '
 +    test_must_fail git checkout --track renamer'
 +
  test_done
diff --combined t/t7500-commit.sh
index 7ae0bd0e31f70271a18935be2ac1a929b5cda1bf,0fe745ea0dbfda5e72ee9ef1df0b32245812e268..6e18a96319bef5c4ddfbc86ce79b02b364f04387
@@@ -3,7 -3,7 +3,7 @@@
  # Copyright (c) 2007 Steven Grimm
  #
  
- test_description='git-commit
+ test_description='git commit
  
  Tests for selected commit options.'
  
@@@ -46,24 -46,15 +46,24 @@@ test_expect_success 'unedited template 
  '
  
  test_expect_success 'a Signed-off-by line by itself should not commit' '
 -      ! GIT_EDITOR=../t7500/add-signed-off git commit --template "$TEMPLATE"
 +      (
 +              test_set_editor "$TEST_DIRECTORY"/t7500/add-signed-off &&
 +              test_must_fail git commit --template "$TEMPLATE"
 +      )
  '
  
  test_expect_success 'adding comments to a template should not commit' '
 -      ! GIT_EDITOR=../t7500/add-comments git commit --template "$TEMPLATE"
 +      (
 +              test_set_editor "$TEST_DIRECTORY"/t7500/add-comments &&
 +              test_must_fail git commit --template "$TEMPLATE"
 +      )
  '
  
  test_expect_success 'adding real content to a template should commit' '
 -      GIT_EDITOR=../t7500/add-content git commit --template "$TEMPLATE" &&
 +      (
 +              test_set_editor "$TEST_DIRECTORY"/t7500/add-content &&
 +              git commit --template "$TEMPLATE"
 +      ) &&
        commit_msg_is "template linecommit message"
  '
  
@@@ -71,10 -62,7 +71,10 @@@ test_expect_success '-t option should b
        echo "short template" > "$TEMPLATE" &&
        echo "new content" >> foo &&
        git add foo &&
 -      GIT_EDITOR=../t7500/add-content git commit -t "$TEMPLATE" &&
 +      (
 +              test_set_editor "$TEST_DIRECTORY"/t7500/add-content &&
 +              git commit -t "$TEMPLATE"
 +      ) &&
        commit_msg_is "short templatecommit message"
  '
  
@@@ -83,10 -71,7 +83,10 @@@ test_expect_success 'config-specified t
        git config commit.template "$TEMPLATE" &&
        echo "more content" >> foo &&
        git add foo &&
 -      GIT_EDITOR=../t7500/add-content git commit &&
 +      (
 +              test_set_editor "$TEST_DIRECTORY"/t7500/add-content &&
 +              git commit
 +      ) &&
        git config --unset commit.template &&
        commit_msg_is "new templatecommit message"
  '
@@@ -94,7 -79,7 +94,7 @@@
  test_expect_success 'explicit commit message should override template' '
        echo "still more content" >> foo &&
        git add foo &&
 -      GIT_EDITOR=../t7500/add-content git commit --template "$TEMPLATE" \
 +      GIT_EDITOR="$TEST_DIRECTORY"/t7500/add-content git commit --template "$TEMPLATE" \
                -m "command line msg" &&
        commit_msg_is "command line msg"
  '
@@@ -103,10 -88,8 +103,10 @@@ test_expect_success 'commit message fro
        echo "content galore" >> foo &&
        git add foo &&
        echo "standard input msg" |
 -              GIT_EDITOR=../t7500/add-content git commit \
 -                      --template "$TEMPLATE" --file - &&
 +      (
 +              test_set_editor "$TEST_DIRECTORY"/t7500/add-content &&
 +              git commit --template "$TEMPLATE" --file -
 +      ) &&
        commit_msg_is "standard input msg"
  '
  
@@@ -149,12 -132,10 +149,12 @@@ EO
  
  test_expect_success '--signoff' '
        echo "yet another content *narf*" >> foo &&
 -      echo "zort" |
 -              GIT_EDITOR=../t7500/add-content git commit -s -F - foo &&
 +      echo "zort" | (
 +              test_set_editor "$TEST_DIRECTORY"/t7500/add-content &&
 +              git commit -s -F - foo
 +      ) &&
        git cat-file commit HEAD | sed "1,/^$/d" > output &&
 -      diff expect output
 +      test_cmp expect output
  '
  
  test_expect_success 'commit message from file (1)' '
diff --combined t/t7600-merge.sh
index 6a2b12558a85db2d522b3cc6047b1d5b1b7fb327,94bc556cb2ad5dd56be2aaed82cec8e2edde7265..9516f541e9c47f83fed2fc8d3baa065a9bb206de
@@@ -3,7 -3,7 +3,7 @@@
  # Copyright (c) 2007 Lars Hjemli
  #
  
- test_description='git-merge
+ test_description='git merge
  
  Testing basic merge operations/option parsing.'
  
@@@ -230,10 -230,6 +230,10 @@@ test_expect_success 'test option parsin
        test_must_fail git merge
  '
  
 +test_expect_success 'reject non-strategy with a git-merge-foo name' '
 +      test_must_fail git merge -s index c1
 +'
 +
  test_expect_success 'merge c0 with c1' '
        git reset --hard c0 &&
        git merge c1 &&