зеркало из https://github.com/microsoft/git.git
Merge fixes up to GIT 1.0.7
Signed-off-by: Junio C Hamano <junkio@cox.net>
This commit is contained in:
Коммит
5df466c507
|
@ -120,3 +120,4 @@ git-core.spec
|
|||
*.exe
|
||||
libgit.a
|
||||
*.o
|
||||
*.py[co]
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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>.
|
||||
|
|
|
@ -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:
|
||||
|
||||
|
|
|
@ -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]
|
||||
|
||||
|
|
|
@ -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
|
||||
-----------
|
||||
|
|
|
@ -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).
|
||||
|
||||
|
|
|
@ -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
|
||||
-----------
|
||||
|
|
|
@ -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
|
||||
-----------
|
||||
|
|
|
@ -8,7 +8,9 @@ git-clone - Clones a repository.
|
|||
|
||||
SYNOPSIS
|
||||
--------
|
||||
'git-clone' [-l [-s]] [-q] [-n] [-o <name>] [-u <upload-pack>] <repository> [<directory>]
|
||||
[verse]
|
||||
'git-clone' [-l [-s]] [-q] [-n] [-o <name>] [-u <upload-pack>]
|
||||
<repository> [<directory>]
|
||||
|
||||
DESCRIPTION
|
||||
-----------
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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
|
||||
-----------
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
-----------
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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::
|
||||
|
|
|
@ -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.
|
||||
------------
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
-----------
|
||||
|
|
|
@ -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`.
|
||||
|
||||
|
|
|
@ -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
|
||||
-----------
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -74,7 +74,7 @@ OPTIONS
|
|||
H:: cached
|
||||
M:: unmerged
|
||||
R:: removed/deleted
|
||||
C:: modifed/changed
|
||||
C:: modified/changed
|
||||
K:: to be killed
|
||||
? other
|
||||
|
||||
|
|
|
@ -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::
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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.
|
||||
|
||||
|
|
|
@ -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":
|
||||
|
|
|
@ -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>::
|
||||
|
|
|
@ -425,7 +425,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]::
|
||||
|
|
|
@ -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::
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
5
apply.c
5
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);
|
||||
}
|
||||
|
|
17
config.c
17
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);
|
||||
|
|
4
date.c
4
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);
|
||||
}
|
||||
|
|
|
@ -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.
|
||||
|
|
2
diff.c
2
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();
|
||||
}
|
||||
|
|
2
entry.c
2
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)
|
||||
|
|
2
epoch.c
2
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
|
||||
|
|
|
@ -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)) {
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
|
|
19
git-fetch.sh
19
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.
|
||||
|
|
|
@ -173,6 +173,7 @@ titleScript='
|
|||
|
||||
whosepatchScript='
|
||||
/^author /{
|
||||
s/'\''/'\''\\'\'\''/g
|
||||
s/author \(.*>\) \(.*\)$/au='\''\1'\'' ad='\''\2'\''/p
|
||||
q
|
||||
}'
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
|
|
5
git.c
5
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;
|
||||
|
||||
|
|
2
ident.c
2
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++) {
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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' \
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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 ]'
|
||||
|
|
|
@ -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?"
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче