diff options
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 @@ -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. @@ -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); } @@ -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); @@ -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. @@ -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(); } @@ -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) @@ -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; @@ -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; @@ -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?" |