summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLibravatar Junio C Hamano <junkio@cox.net>2006-01-05 20:52:50 -0800
committerLibravatar Junio C Hamano <junkio@cox.net>2006-01-05 20:52:50 -0800
commit92e802c6ccb96d1b5e8561b0a136d43d82253293 (patch)
tree9b6c265d69d1dc8bcce36c86a44674cfb010a6d7
parentGIT 1.0.6 (diff)
parentFix git-symbolic-ref typo in git.txt. (diff)
downloadtgif-92e802c6ccb96d1b5e8561b0a136d43d82253293.tar.xz
GIT 1.0.7
Signed-off-by: Junio C Hamano <junkio@cox.net>
-rw-r--r--.gitignore1
-rw-r--r--Documentation/cvs-migration.txt2
-rw-r--r--Documentation/diff-format.txt2
-rw-r--r--Documentation/diff-options.txt2
-rw-r--r--Documentation/git-add.txt2
-rw-r--r--Documentation/git-am.txt1
-rw-r--r--Documentation/git-apply.txt5
-rw-r--r--Documentation/git-archimport.txt8
-rw-r--r--Documentation/git-cat-file.txt2
-rw-r--r--Documentation/git-checkout-index.txt3
-rw-r--r--Documentation/git-clone.txt4
-rw-r--r--Documentation/git-commit-tree.txt3
-rw-r--r--Documentation/git-commit.txt4
-rw-r--r--Documentation/git-cvsexportcommit.txt3
-rw-r--r--Documentation/git-cvsimport.txt8
-rw-r--r--Documentation/git-daemon.txt3
-rw-r--r--Documentation/git-diff-index.txt4
-rw-r--r--Documentation/git-diff-tree.txt6
-rw-r--r--Documentation/git-diff.txt2
-rw-r--r--Documentation/git-format-patch.txt6
-rw-r--r--Documentation/git-fsck-objects.txt4
-rw-r--r--Documentation/git-grep.txt3
-rw-r--r--Documentation/git-http-fetch.txt4
-rw-r--r--Documentation/git-init-db.txt16
-rw-r--r--Documentation/git-ls-files.txt2
-rw-r--r--Documentation/git-pack-objects.txt2
-rw-r--r--Documentation/git-repo-config.txt4
-rw-r--r--Documentation/git-rev-list.txt25
-rw-r--r--Documentation/git-show-branch.txt2
-rw-r--r--Documentation/git-svnimport.txt8
-rw-r--r--Documentation/git.txt2
-rw-r--r--Documentation/glossary.txt2
-rw-r--r--Documentation/howto/isolate-bugs-with-bisect.txt2
-rw-r--r--Documentation/repository-layout.txt4
-rw-r--r--Makefile2
-rw-r--r--apply.c5
-rw-r--r--config.c17
-rw-r--r--date.c4
-rw-r--r--diff-index.c2
-rw-r--r--diff.c2
-rw-r--r--entry.c2
-rw-r--r--epoch.c2
-rw-r--r--fetch-clone.c2
-rwxr-xr-xgit-commit.sh3
-rw-r--r--git-compat-util.h6
-rwxr-xr-xgit-fetch.sh19
-rwxr-xr-xgit-format-patch.sh1
-rwxr-xr-xgit-merge-one-file.sh4
-rwxr-xr-xgit-reset.sh2
-rwxr-xr-xgit-svnimport.perl6
-rw-r--r--git.c5
-rw-r--r--ident.c2
-rw-r--r--ls-files.c2
-rw-r--r--pack-objects.c2
-rw-r--r--repo-config.c16
-rwxr-xr-xt/t3300-funny-names.sh9
-rwxr-xr-xt/t4000-diff-format.sh8
-rwxr-xr-xt/t4006-diff-mode.sh20
-rwxr-xr-xt/t4102-apply-rename.sh9
-rwxr-xr-xt/t6001-rev-list-merge-order.sh14
-rwxr-xr-xt/test-lib.sh2
61 files changed, 203 insertions, 116 deletions
diff --git a/.gitignore b/.gitignore
index 6bd508e4be..dbbef06c0a 100644
--- a/.gitignore
+++ b/.gitignore
@@ -119,3 +119,4 @@ git-core.spec
*.exe
libgit.a
*.o
+*.py[co]
diff --git a/Documentation/cvs-migration.txt b/Documentation/cvs-migration.txt
index dc9387b697..8fd1a33499 100644
--- a/Documentation/cvs-migration.txt
+++ b/Documentation/cvs-migration.txt
@@ -138,7 +138,7 @@ mailing list archives for details).
git has a couple of alternatives, though, that you may find sufficient
or even superior depending on your use. One is called "git-whatchanged"
(for obvious reasons) and the other one is called "pickaxe" ("a tool for
-the software archeologist").
+the software archaeologist").
The "git-whatchanged" script is a truly trivial script that can give you
a good overview of what has changed in a file or a directory (or an
diff --git a/Documentation/diff-format.txt b/Documentation/diff-format.txt
index 97756ec030..0398b408c0 100644
--- a/Documentation/diff-format.txt
+++ b/Documentation/diff-format.txt
@@ -117,7 +117,7 @@ git specific extension to diff format
What -p option produces is slightly different from the
traditional diff format.
-1. It is preceeded with a "git diff" header, that looks like
+1. It is preceded with a "git diff" header, that looks like
this:
diff --git a/file1 b/file2
diff --git a/Documentation/diff-options.txt b/Documentation/diff-options.txt
index 9e574a04d3..5c85167ff2 100644
--- a/Documentation/diff-options.txt
+++ b/Documentation/diff-options.txt
@@ -21,7 +21,7 @@
--abbrev[=<n>]::
Instead of showing the full 40-byte hexadecimal object
name in diff-raw format output and diff-tree header
- lines, show only handful dhexigits prefix. This is
+ lines, show only handful hexdigits prefix. This is
independent of --full-index option above, which controls
the diff-patch output format. Non default number of
digits can be specified with --abbrev=<n>.
diff --git a/Documentation/git-add.txt b/Documentation/git-add.txt
index 4cae41267a..89e461402e 100644
--- a/Documentation/git-add.txt
+++ b/Documentation/git-add.txt
@@ -31,7 +31,7 @@ DISCUSSION
----------
The list of <file> given to the command is fed to `git-ls-files`
-command to list files that are not registerd in the index and
+command to list files that are not registered in the index and
are not ignored/excluded by `$GIT_DIR/info/exclude` file or
`.gitignore` file in each directory. This means two things:
diff --git a/Documentation/git-am.txt b/Documentation/git-am.txt
index a415fe24c3..02cabc935e 100644
--- a/Documentation/git-am.txt
+++ b/Documentation/git-am.txt
@@ -8,6 +8,7 @@ git-am - Apply a series of patches in a mailbox
SYNOPSIS
--------
+[verse]
'git-am' [--signoff] [--dotest=<dir>] [--utf8] [--binary] [--3way] <mbox>...
'git-am' [--skip | --resolved]
diff --git a/Documentation/git-apply.txt b/Documentation/git-apply.txt
index 626e281596..51c7d47092 100644
--- a/Documentation/git-apply.txt
+++ b/Documentation/git-apply.txt
@@ -8,7 +8,10 @@ git-apply - Apply patch on a git index file and a work tree
SYNOPSIS
--------
-'git-apply' [--stat] [--numstat] [--summary] [--check] [--index] [--apply] [--no-add] [--index-info] [--allow-binary-replacement] [-z] [<patch>...]
+[verse]
+'git-apply' [--stat] [--numstat] [--summary] [--check] [--index] [--apply]
+ [--no-add] [--index-info] [--allow-binary-replacement] [-z]
+ [<patch>...]
DESCRIPTION
-----------
diff --git a/Documentation/git-archimport.txt b/Documentation/git-archimport.txt
index a2bd788f37..023d3ae7b9 100644
--- a/Documentation/git-archimport.txt
+++ b/Documentation/git-archimport.txt
@@ -8,15 +8,15 @@ git-archimport - Import an Arch repository into git
SYNOPSIS
--------
-`git-archimport` [ -h ] [ -v ] [ -o ] [ -a ] [ -f ] [ -T ]
- [ -D depth ] [ -t tempdir ]
- <archive/branch> [ <archive/branch> ]
+[verse]
+`git-archimport` [-h] [-v] [-o] [-a] [-f] [-T] [-D depth] [-t tempdir]
+ <archive/branch> [ <archive/branch> ]
DESCRIPTION
-----------
Imports a project from one or more Arch repositories. It will follow branches
and repositories within the namespaces defined by the <archive/branch>
-parameters suppplied. If it cannot find the remote branch a merge comes from
+parameters supplied. If it cannot find the remote branch a merge comes from
it will just import it as a regular commit. If it can find it, it will mark it
as a merge whenever possible (see discussion below).
diff --git a/Documentation/git-cat-file.txt b/Documentation/git-cat-file.txt
index 9a7700fa7f..504eb1b16a 100644
--- a/Documentation/git-cat-file.txt
+++ b/Documentation/git-cat-file.txt
@@ -8,7 +8,7 @@ git-cat-file - Provide content or type information for repository objects
SYNOPSIS
--------
-'git-cat-file' (-t | -s | -e | <type>) <object>
+'git-cat-file' [-t | -s | -e | <type>] <object>
DESCRIPTION
-----------
diff --git a/Documentation/git-checkout-index.txt b/Documentation/git-checkout-index.txt
index 9f32c65aab..2a1e526c6a 100644
--- a/Documentation/git-checkout-index.txt
+++ b/Documentation/git-checkout-index.txt
@@ -8,8 +8,9 @@ git-checkout-index - Copy files from the index to the working directory
SYNOPSIS
--------
+[verse]
'git-checkout-index' [-u] [-q] [-a] [-f] [-n] [--prefix=<string>]
- [--stage=<number>] [--] <file>...
+ [--stage=<number>] [--] <file>...
DESCRIPTION
-----------
diff --git a/Documentation/git-clone.txt b/Documentation/git-clone.txt
index 8410a6d381..ffa4fb0a03 100644
--- a/Documentation/git-clone.txt
+++ b/Documentation/git-clone.txt
@@ -8,7 +8,9 @@ git-clone - Clones a repository.
SYNOPSIS
--------
-'git-clone' [-l [-s]] [-q] [-n] [-u <upload-pack>] <repository> [<directory>]
+[verse]
+'git-clone' [-l [-s]] [-q] [-n] [-u <upload-pack>]
+ <repository> [<directory>]
DESCRIPTION
-----------
diff --git a/Documentation/git-commit-tree.txt b/Documentation/git-commit-tree.txt
index a794192d7b..41d1a1c4b3 100644
--- a/Documentation/git-commit-tree.txt
+++ b/Documentation/git-commit-tree.txt
@@ -60,7 +60,8 @@ either `.git/config` file, or using the following environment variables.
(nb "<", ">" and "\n"s are stripped)
-In `.git/config` file, the following items are used:
+In `.git/config` file, the following items are used for GIT_AUTHOR_NAME and
+GIT_AUTHOR_EMAIL:
[user]
name = "Your Name"
diff --git a/Documentation/git-commit.txt b/Documentation/git-commit.txt
index 8b91f221fe..e0ff74f648 100644
--- a/Documentation/git-commit.txt
+++ b/Documentation/git-commit.txt
@@ -7,7 +7,9 @@ git-commit - Record your changes
SYNOPSIS
--------
-'git-commit' [-a] [-s] [-v] [(-c | -C) <commit> | -F <file> | -m <msg>] [-e] [--] <file>...
+[verse]
+'git-commit' [-a] [-s] [-v] [(-c | -C) <commit> | -F <file> | -m <msg>]
+ [-e] [--] <file>...
DESCRIPTION
-----------
diff --git a/Documentation/git-cvsexportcommit.txt b/Documentation/git-cvsexportcommit.txt
index 91def2b515..13cbf3ba67 100644
--- a/Documentation/git-cvsexportcommit.txt
+++ b/Documentation/git-cvsexportcommit.txt
@@ -8,8 +8,7 @@ git-cvsexportcommit - Export a commit to a CVS checkout
SYNOPSIS
--------
-git-cvsexportcommmit.perl
- [ -h ] [ -v ] [ -c ] [ -p ] [PARENTCOMMIT] COMMITID
+'git-cvsexportcommmit' [-h] [-v] [-c] [-p] [PARENTCOMMIT] COMMITID
DESCRIPTION
diff --git a/Documentation/git-cvsimport.txt b/Documentation/git-cvsimport.txt
index f89b251e1e..01ca7ef96f 100644
--- a/Documentation/git-cvsimport.txt
+++ b/Documentation/git-cvsimport.txt
@@ -8,10 +8,10 @@ git-cvsimport - Import a CVS repository into git
SYNOPSIS
--------
-'git-cvsimport' [ -o <branch-for-HEAD> ] [ -h ] [ -v ]
- [ -d <CVSROOT> ] [ -p <options-for-cvsps> ]
- [ -C <git_repository> ] [ -i ] [ -P <file> ] [ -k ]
- [ -s <subst> ] [ -m ] [ -M regex ] [ <CVS_module> ]
+[verse]
+'git-cvsimport' [-o <branch-for-HEAD>] [-h] [-v] [-d <CVSROOT>] [-s <subst>]
+ [-p <options-for-cvsps>] [-C <git_repository>] [-i] [-P <file>]
+ [-m] [-M regex] [<CVS_module>]
DESCRIPTION
diff --git a/Documentation/git-daemon.txt b/Documentation/git-daemon.txt
index 2a8f371ec9..33f3320e28 100644
--- a/Documentation/git-daemon.txt
+++ b/Documentation/git-daemon.txt
@@ -7,8 +7,9 @@ git-daemon - A really simple server for git repositories.
SYNOPSIS
--------
+[verse]
'git-daemon' [--verbose] [--syslog] [--inetd | --port=n] [--export-all]
- [--timeout=n] [--init-timeout=n] [--strict-paths] [directory...]
+ [--timeout=n] [--init-timeout=n] [--strict-paths] [directory...]
DESCRIPTION
-----------
diff --git a/Documentation/git-diff-index.txt b/Documentation/git-diff-index.txt
index dba6d30fcf..5d2096a4c6 100644
--- a/Documentation/git-diff-index.txt
+++ b/Documentation/git-diff-index.txt
@@ -53,7 +53,7 @@ If '--cached' is specified, it allows you to ask:
contents (the ones I'd write with a "git-write-tree")
For example, let's say that you have worked on your working directory, updated
-some files in the index and are ready to commit. You want to see eactly
+some files in the index and are ready to commit. You want to see exactly
*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
@@ -110,7 +110,7 @@ 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
-"git-upate-index" it to make the index be in sync.
+"git-update-index" it to make the index be in sync.
NOTE: You can have a mixture of files show up as "has been updated"
and "is still dirty in the working directory" together. You can always
diff --git a/Documentation/git-diff-tree.txt b/Documentation/git-diff-tree.txt
index 9a2947e27d..91fb130497 100644
--- a/Documentation/git-diff-tree.txt
+++ b/Documentation/git-diff-tree.txt
@@ -8,7 +8,9 @@ git-diff-tree - Compares the content and mode of blobs found via two tree object
SYNOPSIS
--------
-'git-diff-tree' [--stdin] [-m] [-s] [-v] [--no-commit-id] [--pretty] [-t] [-r] [--root] [<common diff options>] <tree-ish> [<tree-ish>] [<path>...]
+[verse]
+'git-diff-tree' [--stdin] [-m] [-s] [-v] [--no-commit-id] [--pretty] [-t] [-r]
+ [--root] [<common diff options>] <tree-ish> [<tree-ish>] [<path>...]
DESCRIPTION
-----------
@@ -62,7 +64,7 @@ separated with a single space are given.
-s::
By default, "git-diff-tree --stdin" shows differences,
either in machine-readable form (without '-p') or in patch
- form (with '-p'). This output can be supressed. It is
+ form (with '-p'). This output can be suppressed. It is
only useful with '-v' flag.
-v::
diff --git a/Documentation/git-diff.txt b/Documentation/git-diff.txt
index b04f393bc4..ca41634022 100644
--- a/Documentation/git-diff.txt
+++ b/Documentation/git-diff.txt
@@ -67,7 +67,7 @@ $ git diff HEAD^ HEAD <3>
<1> instead of using the tip of the current branch, compare with the
tip of "test" branch.
<2> instead of comparing with the tip of "test" branch, compare with
-the tip of the curren branch, but limit the comparison to the
+the tip of the current branch, but limit the comparison to the
file "test".
<3> compare the version before the last commit and the last commit.
------------
diff --git a/Documentation/git-format-patch.txt b/Documentation/git-format-patch.txt
index d7ca2dbb22..47705de4fc 100644
--- a/Documentation/git-format-patch.txt
+++ b/Documentation/git-format-patch.txt
@@ -8,7 +8,9 @@ git-format-patch - Prepare patches for e-mail submission.
SYNOPSIS
--------
-'git-format-patch' [-n | -k] [-o <dir> | --stdout] [-s] [-c] [--mbox] [--diff-options] <his> [<mine>]
+[verse]
+'git-format-patch' [-n | -k] [-o <dir> | --stdout] [-s] [-c] [--mbox]
+ [--diff-options] <his> [<mine>]
DESCRIPTION
-----------
@@ -96,7 +98,7 @@ git-format-patch -M -B origin::
See Also
--------
-gitlink:git-am[1], gitlink:git-send-email
+gitlink:git-am[1], gitlink:git-send-email[1]
Author
diff --git a/Documentation/git-fsck-objects.txt b/Documentation/git-fsck-objects.txt
index bab1f6080c..387b435484 100644
--- a/Documentation/git-fsck-objects.txt
+++ b/Documentation/git-fsck-objects.txt
@@ -8,7 +8,9 @@ git-fsck-objects - Verifies the connectivity and validity of the objects in the
SYNOPSIS
--------
-'git-fsck-objects' [--tags] [--root] [--unreachable] [--cache] [--standalone | --full] [--strict] [<object>*]
+[verse]
+'git-fsck-objects' [--tags] [--root] [--unreachable] [--cache]
+ [--standalone | --full] [--strict] [<object>*]
DESCRIPTION
-----------
diff --git a/Documentation/git-grep.txt b/Documentation/git-grep.txt
index 0175793483..2bfd8edbc8 100644
--- a/Documentation/git-grep.txt
+++ b/Documentation/git-grep.txt
@@ -8,7 +8,7 @@ git-grep - print lines matching a pattern
SYNOPSIS
--------
-'git-grep' <option>... <pattern> <path>...
+'git-grep' [<option>...] <pattern> [<path>...]
DESCRIPTION
-----------
@@ -27,7 +27,6 @@ OPTIONS
The pattern to look for.
<path>...::
-
Optional paths to limit the set of files to be searched;
passed to `git-ls-files`.
diff --git a/Documentation/git-http-fetch.txt b/Documentation/git-http-fetch.txt
index 1116e855d6..bc1a132891 100644
--- a/Documentation/git-http-fetch.txt
+++ b/Documentation/git-http-fetch.txt
@@ -3,12 +3,12 @@ git-http-fetch(1)
NAME
----
-git-http-fetch - Downloads a remote git repository via HTTP
+git-http-fetch - downloads a remote git repository via HTTP
SYNOPSIS
--------
-'git-http-fetch' [-c] [-t] [-a] [-d] [-v] [-w filename] [--recover] commit-id url
+'git-http-fetch' [-c] [-t] [-a] [-d] [-v] [-w filename] [--recover] <commit> <url>
DESCRIPTION
-----------
diff --git a/Documentation/git-init-db.txt b/Documentation/git-init-db.txt
index 6deef92508..ea4d849aa3 100644
--- a/Documentation/git-init-db.txt
+++ b/Documentation/git-init-db.txt
@@ -8,7 +8,7 @@ git-init-db - Creates an empty git repository
SYNOPSIS
--------
-'git-init-db' [--template=<template_directory>]
+'git-init-db' [--template=<template_directory>] [--shared]
OPTIONS
@@ -16,6 +16,9 @@ OPTIONS
--template=<template_directory>::
Provide the directory in from which templates will be used.
+--shared::
+ Specify that the git repository is to be shared amongst several users.
+
DESCRIPTION
-----------
@@ -30,7 +33,16 @@ If the object storage directory is specified via the `$GIT_OBJECT_DIRECTORY`
environment variable then the sha1 directories are created underneath -
otherwise the default `$GIT_DIR/objects` directory is used.
-`git-init-db` won't hurt an existing repository.
+A shared repository allows users belonging to the same group to push into that
+repository. When specifying `--shared` the config variable "core.sharedRepository"
+is set to 'true' so that directories under `$GIT_DIR` are made group writable
+(and g+sx, since the git group may be not the primary group of all users).
+
+
+Running `git-init-db` in an existing repository is safe. It will not overwrite
+things that are already there. The primary reason for rerunning `git-init-db`
+is to pick up newly added templates.
+
EXAMPLES
diff --git a/Documentation/git-ls-files.txt b/Documentation/git-ls-files.txt
index 186f3bb57a..e42af5ebe2 100644
--- a/Documentation/git-ls-files.txt
+++ b/Documentation/git-ls-files.txt
@@ -74,7 +74,7 @@ OPTIONS
H:: cached
M:: unmerged
R:: removed/deleted
- C:: modifed/changed
+ C:: modified/changed
K:: to be killed
? other
diff --git a/Documentation/git-pack-objects.txt b/Documentation/git-pack-objects.txt
index 009ec5ab37..2d67d3911e 100644
--- a/Documentation/git-pack-objects.txt
+++ b/Documentation/git-pack-objects.txt
@@ -46,7 +46,7 @@ base-name::
output of the command.
--stdout::
- Write the pack contents (what would have been writtin to
+ Write the pack contents (what would have been written to
.pack file) out to the standard output.
--window and --depth::
diff --git a/Documentation/git-repo-config.txt b/Documentation/git-repo-config.txt
index 5eefe02437..306946412f 100644
--- a/Documentation/git-repo-config.txt
+++ b/Documentation/git-repo-config.txt
@@ -21,9 +21,9 @@ You can query/set/replace/unset options with this command. The name is
actually the section and the key separated by a dot, and the value will be
escaped.
-If you want to set/unset an option which can occor on multiple lines, you
+If you want to set/unset an option which can occur on multiple lines, you
should provide a POSIX regex for the value. If you want to handle the lines
-*not* matching the regex, just prepend a single exlamation mark in front
+*not* matching the regex, just prepend a single exclamation mark in front
(see EXAMPLES).
This command will fail if
diff --git a/Documentation/git-rev-list.txt b/Documentation/git-rev-list.txt
index 064ccb1f87..f9146f1900 100644
--- a/Documentation/git-rev-list.txt
+++ b/Documentation/git-rev-list.txt
@@ -8,18 +8,19 @@ git-rev-list - Lists commit objects in reverse chronological order
SYNOPSIS
--------
+[verse]
'git-rev-list' [ \--max-count=number ]
- [ \--max-age=timestamp ]
- [ \--min-age=timestamp ]
- [ \--sparse ]
- [ \--no-merges ]
- [ \--all ]
- [ [ \--merge-order [ \--show-breaks ] ] | [ \--topo-order ] | ]
- [ \--parents ]
- [ \--objects [ \--unpacked ] ]
- [ \--pretty | \--header | ]
- [ \--bisect ]
- <commit>... [ \-- <paths>... ]
+ [ \--max-age=timestamp ]
+ [ \--min-age=timestamp ]
+ [ \--sparse ]
+ [ \--no-merges ]
+ [ \--all ]
+ [ [ \--merge-order [ \--show-breaks ] ] | [ \--topo-order ] ]
+ [ \--parents ]
+ [ \--objects [ \--unpacked ] ]
+ [ \--pretty | \--header ]
+ [ \--bisect ]
+ <commit>... [ \-- <paths>... ]
DESCRIPTION
-----------
@@ -129,7 +130,7 @@ the marked commit in the list.
+
Commits marked with (^) are not parents of the immediately preceding commit.
These "breaks" represent necessary discontinuities implied by trying to
-represent an arbtirary DAG in a linear form.
+represent an arbitrary DAG in a linear form.
+
`--show-breaks` is only valid if `--merge-order` is also specified.
diff --git a/Documentation/git-show-branch.txt b/Documentation/git-show-branch.txt
index ffe64d8353..5b76f3b99e 100644
--- a/Documentation/git-show-branch.txt
+++ b/Documentation/git-show-branch.txt
@@ -85,7 +85,7 @@ Following these N lines, one-line log for each commit is
displayed, indented N places. If a commit is on the I-th
branch, the I-th indentation character shows a '+' sign;
otherwise it shows a space. Each commit shows a short name that
-can be used as an exended SHA1 to name that commit.
+can be used as an extended SHA1 to name that commit.
The following example shows three branches, "master", "fixes"
and "mhf":
diff --git a/Documentation/git-svnimport.txt b/Documentation/git-svnimport.txt
index f8dbee7096..db1ce38daf 100644
--- a/Documentation/git-svnimport.txt
+++ b/Documentation/git-svnimport.txt
@@ -11,7 +11,7 @@ SYNOPSIS
--------
'git-svnimport' [ -o <branch-for-HEAD> ] [ -h ] [ -v ] [ -d | -D ]
[ -C <GIT_repository> ] [ -i ] [ -u ] [-l limit_rev]
- [ -b branch_subdir ] [ -t trunk_subdir ] [ -T tag_subdir ]
+ [ -b branch_subdir ] [ -T trunk_subdir ] [ -t tag_subdir ]
[ -s start_chg ] [ -m ] [ -M regex ]
<SVN_repository_URL> [ <path> ]
@@ -40,17 +40,17 @@ OPTIONS
-s <start_rev>::
Start importing at this SVN change number. The default is 1.
+
-When importing incementally, you might need to edit the .git/svn2git file.
+When importing incrementally, you might need to edit the .git/svn2git file.
-i::
Import-only: don't perform a checkout after importing. This option
ensures the working directory and index remain untouched and will
not create them if they do not exist.
--t <trunk_subdir>::
+-T <trunk_subdir>::
Name the SVN trunk. Default "trunk".
--T <tag_subdir>::
+-t <tag_subdir>::
Name the SVN subdirectory for tags. Default "tags".
-b <branch_subdir>::
diff --git a/Documentation/git.txt b/Documentation/git.txt
index 5f068c2a1a..875d487766 100644
--- a/Documentation/git.txt
+++ b/Documentation/git.txt
@@ -422,7 +422,7 @@ gitlink:git-rev-parse[1]::
gitlink:git-send-email[1]::
Send patch e-mails out of "format-patch --mbox" output.
-gitlink:git-symbolic-refs[1]::
+gitlink:git-symbolic-ref[1]::
Read and modify symbolic refs.
gitlink:git-stripspace[1]::
diff --git a/Documentation/glossary.txt b/Documentation/glossary.txt
index 520f4c50fc..2331be5a71 100644
--- a/Documentation/glossary.txt
+++ b/Documentation/glossary.txt
@@ -19,7 +19,7 @@ hash::
In git's context, synonym to object name.
object database::
- Stores a set of "objects", and an individial object is identified
+ Stores a set of "objects", and an individual object is identified
by its object name. The objects usually live in `$GIT_DIR/objects/`.
blob object::
diff --git a/Documentation/howto/isolate-bugs-with-bisect.txt b/Documentation/howto/isolate-bugs-with-bisect.txt
index 400949564d..edbcd4c661 100644
--- a/Documentation/howto/isolate-bugs-with-bisect.txt
+++ b/Documentation/howto/isolate-bugs-with-bisect.txt
@@ -24,7 +24,7 @@ Then do
git bisect bad master <- mark "master" as the bad state
git bisect good ORIG_HEAD <- mark ORIG_HEAD as good (or
whatever other known-good
- thing you booted laste)
+ thing you booted last)
and at this point "git bisect" will churn for a while, and tell you what
the mid-point between those two commits are, and check that state out as
diff --git a/Documentation/repository-layout.txt b/Documentation/repository-layout.txt
index 1b5f228241..0347cabbb3 100644
--- a/Documentation/repository-layout.txt
+++ b/Documentation/repository-layout.txt
@@ -21,7 +21,7 @@ outside world but sometimes useful for private repository.
. You can be using `objects/info/alternates` mechanism, or
`$GIT_ALTERNATE_OBJECT_DIRECTORIES` mechanism to 'borrow'
objects from other object stores. A repository with this kind
-of incompete object store is not suitable to be published for
+of incomplete object store is not suitable to be published for
use with dumb transports but otherwise is OK as long as
`objects/info/alternates` points at the right object stores
it borrows from.
@@ -106,7 +106,7 @@ info/refs::
up-to-date if the repository is published for dumb
transports. The `git-receive-pack` command, which is
run on a remote repository when you `git push` into it,
- runs `hooks/update` hook to help you achive this.
+ runs `hooks/update` hook to help you achieve this.
info/grafts::
This file records fake commit ancestry information, to
diff --git a/Makefile b/Makefile
index 4ff85fc49a..cfb793b829 100644
--- a/Makefile
+++ b/Makefile
@@ -55,7 +55,7 @@ all:
# Define USE_STDEV below if you want git to care about the underlying device
# change being considered an inode change from the update-cache perspective.
-GIT_VERSION = 1.0.6
+GIT_VERSION = 1.0.7
# CFLAGS and LDFLAGS are for the users to override from the command line.
diff --git a/apply.c b/apply.c
index d5e7bfdb4d..c471a82e83 100644
--- a/apply.c
+++ b/apply.c
@@ -1588,7 +1588,7 @@ static int try_create_file(const char *path, unsigned int mode, const char *buf,
if (S_ISLNK(mode))
return symlink(buf, path);
- fd = open(path, O_CREAT | O_EXCL | O_WRONLY | O_TRUNC, (mode & 0100) ? 0777 : 0666);
+ fd = open(path, O_CREAT | O_EXCL | O_WRONLY, (mode & 0100) ? 0777 : 0666);
if (fd < 0)
return -1;
while (size) {
@@ -1635,7 +1635,8 @@ static void create_one_file(const char *path, unsigned mode, const char *buf, un
}
if (errno != EEXIST)
break;
- }
+ ++nr;
+ }
}
die("unable to write file %s mode %o", path, mode);
}
diff --git a/config.c b/config.c
index 992e988407..8355224bb1 100644
--- a/config.c
+++ b/config.c
@@ -409,8 +409,7 @@ int git_config_set_multivar(const char* key, const char* value,
const char* value_regex, int multi_replace)
{
int i;
- struct stat st;
- int fd;
+ int fd, in_fd;
char* config_filename = strdup(git_path("config"));
char* lock_file = strdup(git_path("config.lock"));
const char* last_dot = strrchr(key, '.');
@@ -457,9 +456,17 @@ int git_config_set_multivar(const char* key, const char* value,
/*
* If .git/config does not exist yet, write a minimal version.
*/
- if (stat(config_filename, &st)) {
+ in_fd = open(config_filename, O_RDONLY);
+ if ( in_fd < 0 ) {
free(store.key);
+ if ( ENOENT != errno ) {
+ error("opening %s: %s", config_filename,
+ strerror(errno));
+ close(fd);
+ unlink(lock_file);
+ return 3; /* same as "invalid config file" */
+ }
/* if nothing to unset, error out */
if (value == NULL) {
close(fd);
@@ -471,7 +478,7 @@ int git_config_set_multivar(const char* key, const char* value,
store_write_section(fd, key);
store_write_pair(fd, key, value);
} else{
- int in_fd;
+ struct stat st;
char* contents;
int i, copy_begin, copy_end, new_line = 0;
@@ -528,7 +535,7 @@ int git_config_set_multivar(const char* key, const char* value,
return 5;
}
- in_fd = open(config_filename, O_RDONLY, 0666);
+ fstat(in_fd, &st);
contents = mmap(NULL, st.st_size, PROT_READ,
MAP_PRIVATE, in_fd, 0);
close(in_fd);
diff --git a/date.c b/date.c
index 3e11500eda..416ea579a3 100644
--- a/date.c
+++ b/date.c
@@ -326,7 +326,7 @@ static int match_digit(const char *date, struct tm *tm, int *offset, int *tm_gmt
/*
* NOTE! We will give precedence to day-of-month over month or
- * year numebers in the 1-12 range. So 05 is always "mday 5",
+ * year numbers in the 1-12 range. So 05 is always "mday 5",
* unless we already have a mday..
*
* IOW, 01 Apr 05 parses as "April 1st, 2005".
@@ -640,7 +640,7 @@ unsigned long approxidate(const char *date)
}
if (number > 0 && number < 32)
tm.tm_mday = number;
- if (tm.tm_mon > now.tm_mon)
+ if (tm.tm_mon > now.tm_mon && tm.tm_year == now.tm_year)
tm.tm_year--;
return mktime(&tm);
}
diff --git a/diff-index.c b/diff-index.c
index 0054883a5e..87e1061983 100644
--- a/diff-index.c
+++ b/diff-index.c
@@ -116,7 +116,7 @@ static int diff_cache(struct cache_entry **ac, int entries, const char **pathspe
/* We come here with ce pointing at stage 1
* (original tree) and ac[1] pointing at stage
* 3 (unmerged). show-modified with
- * report-mising set to false does not say the
+ * report-missing set to false does not say the
* file is deleted but reports true if work
* tree does not have it, in which case we
* fall through to report the unmerged state.
diff --git a/diff.c b/diff.c
index 66057e5d61..17d68fa699 100644
--- a/diff.c
+++ b/diff.c
@@ -787,7 +787,7 @@ int diff_setup_done(struct diff_options *options)
* so it is safe for us to do this here. Also
* it does not smudge active_cache or active_nr
* when it fails, so we do not have to worry about
- * cleaning it up oufselves either.
+ * cleaning it up ourselves either.
*/
read_cache();
}
diff --git a/entry.c b/entry.c
index 15b34eb6f9..410b758aab 100644
--- a/entry.c
+++ b/entry.c
@@ -60,7 +60,7 @@ static void remove_subtree(const char *path)
static int create_file(const char *path, unsigned int mode)
{
mode = (mode & 0100) ? 0777 : 0666;
- return open(path, O_WRONLY | O_TRUNC | O_CREAT | O_EXCL, mode);
+ return open(path, O_WRONLY | O_CREAT | O_EXCL, mode);
}
static int write_entry(struct cache_entry *ce, const char *path, struct checkout *state)
diff --git a/epoch.c b/epoch.c
index db44f5ca9f..3a767486da 100644
--- a/epoch.c
+++ b/epoch.c
@@ -190,7 +190,7 @@ static void free_mass_counter(struct mass_counter *counter)
* enqueued, enqueuing the commit in a list of pending commits, in latest
* commit date first order.
*
- * The algorithm then preceeds to visit each commit in the pending queue.
+ * The algorithm then proceeds to visit each commit in the pending queue.
* Upon each visit, the pending mass is added to the mass already seen for that
* commit and then divided into N equal portions, where N is the number of
* parents of the commit being visited. The divided portions are then injected
diff --git a/fetch-clone.c b/fetch-clone.c
index 2b2aa15ea7..f46fe6ecbb 100644
--- a/fetch-clone.c
+++ b/fetch-clone.c
@@ -47,7 +47,7 @@ static int finish_pack(const char *pack_tmp_name, const char *me)
if (retval < 0) {
if (errno == EINTR)
continue;
- error("waitpid failed (%s)", strerror(retval));
+ error("waitpid failed (%s)", strerror(errno));
goto error_die;
}
if (WIFSIGNALED(status)) {
diff --git a/git-commit.sh b/git-commit.sh
index 7e39c107cf..193feeb5e4 100755
--- a/git-commit.sh
+++ b/git-commit.sh
@@ -148,7 +148,7 @@ esac
if [ -f "$GIT_DIR/MERGE_HEAD" ]; then
echo "#"
- echo "# It looks like your may be committing a MERGE."
+ echo "# It looks like you may be committing a MERGE."
echo "# If this is not correct, please remove the file"
echo "# $GIT_DIR/MERGE_HEAD"
echo "# and try again"
@@ -165,6 +165,7 @@ then
then
pick_author_script='
/^author /{
+ s/'\''/'\''\\'\'\''/g
h
s/^author \([^<]*\) <[^>]*> .*$/\1/
s/'\''/'\''\'\'\''/g
diff --git a/git-compat-util.h b/git-compat-util.h
index 0c98c9937d..c353b276f0 100644
--- a/git-compat-util.h
+++ b/git-compat-util.h
@@ -63,6 +63,8 @@ extern char *gitstrcasestr(const char *haystack, const char *needle);
static inline void *xmalloc(size_t size)
{
void *ret = malloc(size);
+ if (!ret && !size)
+ ret = malloc(1);
if (!ret)
die("Out of memory, malloc failed");
return ret;
@@ -71,6 +73,8 @@ static inline void *xmalloc(size_t size)
static inline void *xrealloc(void *ptr, size_t size)
{
void *ret = realloc(ptr, size);
+ if (!ret && !size)
+ ret = realloc(ptr, 1);
if (!ret)
die("Out of memory, realloc failed");
return ret;
@@ -79,6 +83,8 @@ static inline void *xrealloc(void *ptr, size_t size)
static inline void *xcalloc(size_t nmemb, size_t size)
{
void *ret = calloc(nmemb, size);
+ if (!ret && (!nmemb || !size))
+ ret = calloc(1, 1);
if (!ret)
die("Out of memory, calloc failed");
return ret;
diff --git a/git-fetch.sh b/git-fetch.sh
index 125bcea1b6..b46b3e5589 100755
--- a/git-fetch.sh
+++ b/git-fetch.sh
@@ -188,11 +188,20 @@ esac
reflist=$(get_remote_refs_for_fetch "$@")
if test "$tags"
then
- taglist=$(git-ls-remote --tags "$remote" |
- sed -e '
- /\^/d
- s/^[^ ]* //
- s/.*/.&:&/')
+ taglist=$(IFS=" " &&
+ git-ls-remote --tags "$remote" |
+ while read sha1 name
+ do
+ case "$name" in
+ (*^*) continue ;;
+ esac
+ if git-check-ref-format "$name"
+ then
+ echo ".${name}:${name}"
+ else
+ echo >&2 "warning: tag ${name} ignored"
+ fi
+ done)
if test "$#" -gt 1
then
# remote URL plus explicit refspecs; we need to merge them.
diff --git a/git-format-patch.sh b/git-format-patch.sh
index daa3caea77..818059f242 100755
--- a/git-format-patch.sh
+++ b/git-format-patch.sh
@@ -173,6 +173,7 @@ titleScript='
whosepatchScript='
/^author /{
+ s/'\''/'\''\\'\'\''/g
s/author \(.*>\) \(.*\)$/au='\''\1'\'' ad='\''\2'\''/p
q
}'
diff --git a/git-merge-one-file.sh b/git-merge-one-file.sh
index 7dee88a733..5349a1c0fc 100755
--- a/git-merge-one-file.sh
+++ b/git-merge-one-file.sh
@@ -82,7 +82,7 @@ case "${1:-.}${2:-.}${3:-.}" in
expr "$sz0" \< "$sz1" \* 2 >/dev/null || : >$orig
;;
*)
- echo "Auto-merging $4."
+ echo "Auto-merging $4"
orig=`git-unpack-file $1`
;;
esac
@@ -107,7 +107,7 @@ case "${1:-.}${2:-.}${3:-.}" in
fi
if [ $ret -ne 0 ]; then
- echo "ERROR: Merge conflict in $4."
+ echo "ERROR: Merge conflict in $4"
exit 1
fi
exec git-update-index -- "$4"
diff --git a/git-reset.sh b/git-reset.sh
index eb44ee8cc1..6c9e58ad9a 100755
--- a/git-reset.sh
+++ b/git-reset.sh
@@ -3,7 +3,7 @@
USAGE='[--mixed | --soft | --hard] [<commit-ish>]'
. git-sh-setup
-tmp=/var/tmp/reset.$$
+tmp=${GIT_DIR}/reset.$$
trap 'rm -f $tmp-*' 0 1 2 3 15
reset_type=--mixed
diff --git a/git-svnimport.perl b/git-svnimport.perl
index cb241d1b51..6e3a44a2bc 100755
--- a/git-svnimport.perl
+++ b/git-svnimport.perl
@@ -96,8 +96,10 @@ sub new {
sub conn {
my $self = shift;
my $repo = $self->{'fullrep'};
- my $s = SVN::Ra->new($repo);
-
+ my $auth = SVN::Core::auth_open ([SVN::Client::get_simple_provider,
+ SVN::Client::get_ssl_server_trust_file_provider,
+ SVN::Client::get_username_provider]);
+ my $s = SVN::Ra->new(url => $repo, auth => $auth);
die "SVN connection to $repo: $!\n" unless defined $s;
$self->{'svn'} = $s;
$self->{'repo'} = $repo;
diff --git a/git.c b/git.c
index e795ddb810..5e7da74b68 100644
--- a/git.c
+++ b/git.c
@@ -244,6 +244,11 @@ int main(int argc, char **argv, char **envp)
for (i = 1; i < argc; i++) {
char *arg = argv[i];
+ if (!strcmp(arg, "help")) {
+ show_help = 1;
+ continue;
+ }
+
if (strncmp(arg, "--", 2))
break;
diff --git a/ident.c b/ident.c
index ac1c27f199..0461b8b2f8 100644
--- a/ident.c
+++ b/ident.c
@@ -140,7 +140,7 @@ static int copy(char *buf, int size, int offset, const char *src)
/*
* Copy the rest to the buffer, but avoid the special
- * characters '\n' '<' and '>' that act as delimeters on
+ * characters '\n' '<' and '>' that act as delimiters on
* a identification line
*/
for (i = 0; i < len; i++) {
diff --git a/ls-files.c b/ls-files.c
index 5e9ac712af..cd87430127 100644
--- a/ls-files.c
+++ b/ls-files.c
@@ -169,7 +169,7 @@ static int excluded_1(const char *pathname,
}
else {
/* match with FNM_PATHNAME:
- * exclude has base (baselen long) inplicitly
+ * exclude has base (baselen long) implicitly
* in front of it.
*/
int baselen = x->baselen;
diff --git a/pack-objects.c b/pack-objects.c
index caf3b6be5a..c3f25317bb 100644
--- a/pack-objects.c
+++ b/pack-objects.c
@@ -119,7 +119,7 @@ static unsigned long write_one(struct sha1file *f,
return offset;
e->offset = offset;
offset += write_object(f, e);
- /* if we are delitified, write out its base object. */
+ /* if we are deltified, write out its base object. */
if (e->delta)
offset = write_one(f, e->delta, offset);
return offset;
diff --git a/repo-config.c b/repo-config.c
index b2569b7901..c31e441a3d 100644
--- a/repo-config.c
+++ b/repo-config.c
@@ -6,7 +6,7 @@ static const char git_config_set_usage[] =
static char* key = NULL;
static char* value = NULL;
-static regex_t* regex = NULL;
+static regex_t* regexp = NULL;
static int do_all = 0;
static int do_not_match = 0;
static int seen = 0;
@@ -14,9 +14,9 @@ static int seen = 0;
static int show_config(const char* key_, const char* value_)
{
if (!strcmp(key_, key) &&
- (regex == NULL ||
+ (regexp == NULL ||
(do_not_match ^
- !regexec(regex, value_, 0, NULL, 0)))) {
+ !regexec(regexp, value_, 0, NULL, 0)))) {
if (do_all) {
printf("%s\n", value_);
return 0;
@@ -46,8 +46,8 @@ static int get_value(const char* key_, const char* regex_)
regex_++;
}
- regex = (regex_t*)malloc(sizeof(regex_t));
- if (regcomp(regex, regex_, REG_EXTENDED)) {
+ regexp = (regex_t*)malloc(sizeof(regex_t));
+ if (regcomp(regexp, regex_, REG_EXTENDED)) {
fprintf(stderr, "Invalid pattern: %s\n", regex_);
return -1;
}
@@ -59,9 +59,9 @@ static int get_value(const char* key_, const char* regex_)
free(value);
}
free(key);
- if (regex) {
- regfree(regex);
- free(regex);
+ if (regexp) {
+ regfree(regexp);
+ free(regexp);
}
if (do_all)
diff --git a/t/t3300-funny-names.sh b/t/t3300-funny-names.sh
index 6a85d67c57..72a93da08c 100755
--- a/t/t3300-funny-names.sh
+++ b/t/t3300-funny-names.sh
@@ -9,9 +9,6 @@ This test tries pathnames with funny characters in the working
tree, index, and tree objects.
'
-# since FAT/NTFS does not allow tabs in filenames, skip this test
-test "$(uname -o 2>/dev/null)" = Cygwin && exit 0
-
. ./test-lib.sh
p0='no-funny'
@@ -27,6 +24,12 @@ EOF
cat >"$p1" "$p0"
echo 'Foo Bar Baz' >"$p2"
+test -f "$p1" && cmp "$p0" "$p1" || {
+ # since FAT/NTFS does not allow tabs in filenames, skip this test
+ say 'Your filesystem does not allow tabs in filenames, test skipped.'
+ test_done
+}
+
echo 'just space
no-funny' >expected
test_expect_success 'git-ls-files no-funny' \
diff --git a/t/t4000-diff-format.sh b/t/t4000-diff-format.sh
index beb6d8f487..67b9681d36 100755
--- a/t/t4000-diff-format.sh
+++ b/t/t4000-diff-format.sh
@@ -26,6 +26,14 @@ rm -f path1
test_expect_success \
'git-diff-files -p after editing work tree.' \
'git-diff-files -p >current'
+
+# that's as far as it comes
+if [ "$(git repo-config --get core.filemode)" = false ]
+then
+ say 'filemode disabled on the filesystem'
+ test_done
+fi
+
cat >expected <<\EOF
diff --git a/path0 b/path0
old mode 100644
diff --git a/t/t4006-diff-mode.sh b/t/t4006-diff-mode.sh
index e2a67e9633..8ad69d1115 100755
--- a/t/t4006-diff-mode.sh
+++ b/t/t4006-diff-mode.sh
@@ -15,11 +15,21 @@ test_expect_success \
tree=`git-write-tree` &&
echo $tree'
-test_expect_success \
- 'chmod' \
- 'chmod +x rezrov &&
- git-update-index rezrov &&
- git-diff-index $tree >current'
+if [ "$(git repo-config --get core.filemode)" = false ]
+then
+ say 'filemode disabled on the filesystem, using update-index --chmod=+x'
+ test_expect_success \
+ 'git-update-index --chmod=+x' \
+ 'git-update-index rezrov &&
+ git-update-index --chmod=+x rezrov &&
+ git-diff-index $tree >current'
+else
+ test_expect_success \
+ 'chmod' \
+ 'chmod +x rezrov &&
+ git-update-index rezrov &&
+ git-diff-index $tree >current'
+fi
_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/t4102-apply-rename.sh b/t/t4102-apply-rename.sh
index 0401d7bbc6..fbb508d389 100755
--- a/t/t4102-apply-rename.sh
+++ b/t/t4102-apply-rename.sh
@@ -31,7 +31,12 @@ test_expect_success setup \
test_expect_success apply \
'git-apply --index --stat --summary --apply test-patch'
-test_expect_success validate \
- 'test -f bar && ls -l bar | grep "^-..x......"'
+if [ "$(git repo-config --get core.filemode)" = false ]
+then
+ say 'filemode disabled on the filesystem'
+else
+ test_expect_success validate \
+ 'test -f bar && ls -l bar | grep "^-..x......"'
+fi
test_done
diff --git a/t/t6001-rev-list-merge-order.sh b/t/t6001-rev-list-merge-order.sh
index 368b8d9e02..7724e8a8c5 100755
--- a/t/t6001-rev-list-merge-order.sh
+++ b/t/t6001-rev-list-merge-order.sh
@@ -8,13 +8,6 @@ test_description='Tests git-rev-list --merge-order functionality'
. ./test-lib.sh
. ../t6000lib.sh # t6xxx specific functions
-if git-rev-list --merge-order 2>&1 | grep 'OpenSSL not linked' >/dev/null
-then
- test_expect_success 'skipping merge-order test' :
- test_done
- exit
-fi
-
# test-case specific test function
check_adjacency()
{
@@ -114,6 +107,13 @@ test_output_expect_success 'rev-list has correct number of entries' 'git-rev-lis
19
EOF
+if git-rev-list --merge-order HEAD 2>&1 | grep 'OpenSSL not linked' >/dev/null
+then
+ test_expect_success 'skipping merge-order test' :
+ test_done
+ exit
+fi
+
normal_adjacency_count=$(git-rev-list HEAD | check_adjacency | grep -c "\^" | tr -d ' ')
merge_order_adjacency_count=$(git-rev-list --merge-order HEAD | check_adjacency | grep -c "\^" | tr -d ' ')
test_expect_success '--merge-order produces as many or fewer discontinuities' '[ $merge_order_adjacency_count -le $normal_adjacency_count ]'
diff --git a/t/test-lib.sh b/t/test-lib.sh
index a97d259e26..7534a76208 100755
--- a/t/test-lib.sh
+++ b/t/test-lib.sh
@@ -195,7 +195,7 @@ test -d ../templates/blt || {
test=trash
rm -fr "$test"
mkdir "$test"
-cd "$test"
+cd "$test" || error "Cannot setup test environment"
"$GIT_EXEC_PATH/git" init-db --template=../../templates/blt/ 2>/dev/null ||
error "cannot run git init-db -- have you built things yet?"