summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Documentation/CodingGuidelines12
-rw-r--r--Documentation/RelNotes/1.7.10.txt59
-rw-r--r--Documentation/RelNotes/1.7.8.5.txt19
-rw-r--r--Documentation/RelNotes/1.7.9.3.txt24
-rw-r--r--Documentation/config.txt27
-rw-r--r--Documentation/git-config.txt12
-rw-r--r--Documentation/git-fmt-merge-msg.txt5
-rw-r--r--Documentation/git-p4.txt15
-rw-r--r--Documentation/git-push.txt10
-rw-r--r--Documentation/git-remote.txt2
-rw-r--r--Documentation/git-send-email.txt4
-rw-r--r--Documentation/git.txt3
-rw-r--r--Documentation/gitattributes.txt41
-rw-r--r--Documentation/merge-options.txt22
-rw-r--r--Documentation/rev-list-options.txt12
-rw-r--r--Documentation/technical/api-config.txt140
-rw-r--r--Documentation/technical/api-strbuf.txt18
-rw-r--r--Makefile24
-rw-r--r--README10
-rw-r--r--bisect.h5
-rw-r--r--builtin/branch.c4
-rw-r--r--builtin/config.c96
-rw-r--r--builtin/merge.c2
-rw-r--r--builtin/pack-objects.c2
-rw-r--r--builtin/push.c2
-rw-r--r--builtin/remote.c2
-rw-r--r--builtin/rev-list.c38
-rw-r--r--bundle.c36
-rw-r--r--cache.h11
-rw-r--r--config.c127
-rw-r--r--configure.ac20
-rwxr-xr-xcontrib/completion/git-completion.bash54
-rwxr-xr-xcontrib/fast-import/git-p4217
-rwxr-xr-xcontrib/hooks/post-receive-email7
-rw-r--r--convert.c62
-rw-r--r--convert.h5
-rwxr-xr-xgit-am.sh2
-rw-r--r--git-rebase--merge.sh11
-rwxr-xr-xgit-svn.perl68
-rwxr-xr-xgitweb/gitweb.perl77
-rw-r--r--grep.c2
-rw-r--r--po/.gitignore1
-rw-r--r--po/README107
-rw-r--r--po/TEAMS15
-rw-r--r--po/git.pot3494
-rw-r--r--po/zh_CN.po3671
-rw-r--r--read-cache.c11
-rw-r--r--remote.c107
-rw-r--r--remote.h3
-rw-r--r--sequencer.c17
-rw-r--r--sha1_file.c14
-rw-r--r--strbuf.c16
-rw-r--r--strbuf.h1
-rw-r--r--t/Makefile43
-rw-r--r--t/perf/.gitignore2
-rw-r--r--t/perf/Makefile15
-rw-r--r--t/perf/README146
-rwxr-xr-xt/perf/aggregate.perl166
-rwxr-xr-xt/perf/min_time.perl21
-rwxr-xr-xt/perf/p0000-perf-lib-sanity.sh41
-rwxr-xr-xt/perf/p0001-rev-list.sh17
-rwxr-xr-xt/perf/p7810-grep.sh23
-rw-r--r--t/perf/perf-lib.sh198
-rwxr-xr-xt/perf/run82
-rwxr-xr-xt/t0021-conversion.sh37
-rwxr-xr-xt/t1051-large-conversion.sh86
-rwxr-xr-xt/t1300-repo-config.sh27
-rwxr-xr-xt/t1305-config-include.sh134
-rwxr-xr-xt/t3200-branch.sh4
-rwxr-xr-xt/t3507-cherry-pick-conflict.sh14
-rwxr-xr-xt/t3700-add.sh15
-rwxr-xr-xt/t4150-am.sh10
-rwxr-xr-xt/t5516-fetch-push.sh16
-rwxr-xr-xt/t5704-bundle.sh47
-rwxr-xr-xt/t7810-grep.sh23
-rwxr-xr-xt/t9100-git-svn-basic.sh45
-rwxr-xr-xt/t9501-gitweb-standalone-http-status.sh10
-rwxr-xr-xt/t9800-git-p4-basic.sh24
-rwxr-xr-xt/t9804-git-p4-label.sh2
-rwxr-xr-xt/t9809-git-p4-client-view.sh161
-rwxr-xr-xt/t9810-git-p4-rcs.sh388
-rw-r--r--t/test-lib-functions.sh565
-rw-r--r--t/test-lib.sh574
-rw-r--r--transport-helper.c13
-rw-r--r--transport.c2
-rw-r--r--transport.h1
86 files changed, 10715 insertions, 1003 deletions
diff --git a/Documentation/CodingGuidelines b/Documentation/CodingGuidelines
index 483008699f..45577117c2 100644
--- a/Documentation/CodingGuidelines
+++ b/Documentation/CodingGuidelines
@@ -35,10 +35,22 @@ For shell scripts specifically (not exhaustive):
- Case arms are indented at the same depth as case and esac lines.
+ - Redirection operators should be written with space before, but no
+ space after them. In other words, write 'echo test >"$file"'
+ instead of 'echo test> $file' or 'echo test > $file'. Note that
+ even though it is not required by POSIX to double-quote the
+ redirection target in a variable (as shown above), our code does so
+ because some versions of bash issue a warning without the quotes.
+
- We prefer $( ... ) for command substitution; unlike ``, it
properly nests. It should have been the way Bourne spelled
it from day one, but unfortunately isn't.
+ - If you want to find out if a command is available on the user's
+ $PATH, you should use 'type <command>', instead of 'which <command>'.
+ The output of 'which' is not machine parseable and its exit code
+ is not reliable across platforms.
+
- We use POSIX compliant parameter substitutions and avoid bashisms;
namely:
diff --git a/Documentation/RelNotes/1.7.10.txt b/Documentation/RelNotes/1.7.10.txt
index 4ea69322bf..70d76b5dc0 100644
--- a/Documentation/RelNotes/1.7.10.txt
+++ b/Documentation/RelNotes/1.7.10.txt
@@ -8,9 +8,24 @@ UI, Workflows & Features
* Improved handling of views, labels and branches in git-p4 (in contrib).
+ * "git-p4" (in contrib) suffered from unnecessary merge conflicts when
+ p4 expanded the embedded $RCS$-like keywords; it can be now told to
+ unexpand them.
+
+ * Some "git-svn" updates.
+
* "vcs-svn"/"svn-fe" learned to read dumps with svn-deltas and
support incremental imports.
+ * The configuration mechanism learned an "include" facility; an
+ assignment to the include.path pseudo-variable causes the named
+ file to be included in-place when Git looks up configuration
+ variables.
+
+ * A content filter (clean/smudge) used to be just a way to make the
+ recorded contents "more useful", and allowed to fail; a filter can
+ new optionally be marked as "required".
+
* "git am" learned to pass "-b" option to underlying "git mailinfo", so
that bracketed string other than "PATCH" at the beginning can be kept.
@@ -27,23 +42,30 @@ UI, Workflows & Features
* "diff-highlight" filter (in contrib/) was updated to produce more
aesthetically pleasing output.
- * "git tag --list" can be given "--points-at <object>" to limit its
- output to those that point at the given object.
-
* "git merge" in an interactive session learned to spawn the editor
by default to let the user edit the auto-generated merge message,
to encourage people to explain their merges better. Legacy scripts
- can export MERGE_AUTOEDIT=no to retain the historical behaviour.
+ can export GIT_MERGE_AUTOEDIT=no to retain the historical behavior.
Both "git merge" and "git pull" can be given --no-edit from the
command line to accept the auto-generated merge message.
+ * "git push" learned the "--prune" option, similar to "git fetch".
+
+ * "git tag --list" can be given "--points-at <object>" to limit its
+ output to those that point at the given object.
+
* "gitweb" allows intermediate entries in the directory hierarchy
that leads to a projects to be clicked, which in turn shows the
list of projects inside that directory.
+ * "gitweb" learned to read various pieces of information for the
+ repositories lazily, instead of reading everything that could be
+ needed (including the ones that are not necessary for a specific
+ task).
+
Performance
- * During "git upload-pack" in respose to "git fetch", unnecessary calls
+ * During "git upload-pack" in response to "git fetch", unnecessary calls
to parse_object() have been eliminated, to help performance in
repositories with excessive number of refs.
@@ -60,6 +82,9 @@ Internal Implementation (please report possible regressions)
* The test suite supports the new "test_pause" helper function.
+ * Parallel to the test suite, there is a beginning of performance
+ benchmarking framework.
+
* t/Makefile is adjusted to prevent newer versions of GNU make from
running tests in seemingly random order.
@@ -73,13 +98,35 @@ Unless otherwise noted, all the fixes since v1.7.9 in the maintenance
releases are contained in this release (see release notes to them for
details).
+ * The bulk check-in codepath streamed contents that needs
+ smudge/clean filters without running them, instead of punting and
+ delegating to the codepath to run filters after slurping everything
+ to core.
+ (merge 4f22b10 jk/maint-avoid-streaming-filtered-contents later to maint).
+
+ * When the filter driver exits before reading the content before the
+ main git process writes the contents to be filtered to the pipe to
+ it, the latter could be killed with SIGPIPE instead of ignoring
+ such an event as an error.
+ (merge 6424c2a jb/filter-ignore-sigpipe later to maint).
+
+ * When a remote helper exits before reading the blank line from the
+ main git process to signal the end of commands, the latter could be
+ killed with SIGPIPE. Instead we should ignore such event as a
+ non-error.
+ (merge c34fe63 sp/smart-http-failure-to-push later to maint).
+
+ * "git bundle create" produced a corrupt bundle file upon seeing
+ commits with excessively long subject line.
+ (merge 8a557bb tr/maint-bundle-long-subject later to maint).
+
* "gitweb" used to drop warnings in the log file when "heads" view is
accessed in a repository whose HEAD does not point at a valid
branch.
---
exec >/var/tmp/1
-O=v1.7.9.1-289-g5609586
+O=v1.7.9.2-322-g472fdee
echo O=$(git describe)
git log --first-parent --oneline ^maint $O..
echo
diff --git a/Documentation/RelNotes/1.7.8.5.txt b/Documentation/RelNotes/1.7.8.5.txt
new file mode 100644
index 0000000000..011fd2a428
--- /dev/null
+++ b/Documentation/RelNotes/1.7.8.5.txt
@@ -0,0 +1,19 @@
+Git v1.7.8.5 Release Notes
+==========================
+
+Fixes since v1.7.8.4
+--------------------
+
+ * Dependency on our thread-utils.h header file was missing for
+ objects that depend on it in the Makefile.
+
+ * "git am" when fed an empty file did not correctly finish reading it
+ when it attempts to guess the input format.
+
+ * "git grep -P" (when PCRE is enabled in the build) did not match the
+ beginning and the end of the line correctly with ^ and $.
+
+ * "git rebase -m" tried to run "git notes copy" needlessly when
+ nothing was rewritten.
+
+Also contains minor fixes and documentation updates.
diff --git a/Documentation/RelNotes/1.7.9.3.txt b/Documentation/RelNotes/1.7.9.3.txt
new file mode 100644
index 0000000000..d7be177681
--- /dev/null
+++ b/Documentation/RelNotes/1.7.9.3.txt
@@ -0,0 +1,24 @@
+Git v1.7.9.3 Release Notes
+==========================
+
+Fixes since v1.7.9.2
+--------------------
+
+ * "git p4" (in contrib/) submit the changes to a wrong place when the
+ "--use-client-spec" option is set.
+
+ * The config.mak.autogen generated by optional autoconf support tried
+ to link the binary with -lintl even when libintl.h is missing from
+ the system.
+
+ * "git add --refresh <pathspec>" used to warn about unmerged paths
+ outside the given pathspec.
+
+ * The commit log template given with "git merge --edit" did not have
+ a short instructive text like what "git commit" gives.
+
+ * "gitweb" used to drop warnings in the log file when "heads" view is
+ accessed in a repository whose HEAD does not point at a valid
+ branch.
+
+Also contains minor fixes and documentation updates.
diff --git a/Documentation/config.txt b/Documentation/config.txt
index abeb82b2c6..5367ba9cae 100644
--- a/Documentation/config.txt
+++ b/Documentation/config.txt
@@ -12,8 +12,9 @@ The configuration variables are used by both the git plumbing
and the porcelains. The variables are divided into sections, wherein
the fully qualified variable name of the variable itself is the last
dot-separated segment and the section name is everything before the last
-dot. The variable names are case-insensitive and only alphanumeric
-characters are allowed. Some variables may appear multiple times.
+dot. The variable names are case-insensitive, allow only alphanumeric
+characters and `-`, and must start with an alphabetic character. Some
+variables may appear multiple times.
Syntax
~~~~~~
@@ -54,9 +55,10 @@ All the other lines (and the remainder of the line after the section
header) are recognized as setting variables, in the form
'name = value'. If there is no equal sign on the line, the entire line
is taken as 'name' and the variable is recognized as boolean "true".
-The variable names are case-insensitive and only alphanumeric
-characters and `-` are allowed. There can be more than one value
-for a given variable; we say then that variable is multivalued.
+The variable names are case-insensitive, allow only alphanumeric characters
+and `-`, and must start with an alphabetic character. There can be more
+than one value for a given variable; we say then that the variable is
+multivalued.
Leading and trailing whitespace in a variable value is discarded.
Internal whitespace within a variable value is retained verbatim.
@@ -84,6 +86,17 @@ customary UNIX fashion.
Some variables may require a special value format.
+Includes
+~~~~~~~~
+
+You can include one config file from another by setting the special
+`include.path` variable to the name of the file to be included. The
+included file is expanded immediately, as if its contents had been
+found at the location of the include directive. If the value of the
+`include.path` variable is a relative path, the path is considered to be
+relative to the configuration file in which the include directive was
+found. See below for examples.
+
Example
~~~~~~~
@@ -106,6 +119,10 @@ Example
gitProxy="ssh" for "kernel.org"
gitProxy=default-proxy ; for the rest
+ [include]
+ path = /path/to/foo.inc ; include by absolute path
+ path = foo ; expand "foo" relative to the current file
+
Variables
~~~~~~~~~
diff --git a/Documentation/git-config.txt b/Documentation/git-config.txt
index e7ecf5d803..81b03982e3 100644
--- a/Documentation/git-config.txt
+++ b/Documentation/git-config.txt
@@ -85,8 +85,11 @@ OPTIONS
is not exactly one.
--get-regexp::
- Like --get-all, but interprets the name as a regular expression.
- Also outputs the key names.
+ Like --get-all, but interprets the name as a regular expression and
+ writes out the key names. Regular expression matching is currently
+ case-sensitive and done against a canonicalized version of the key
+ in which section and variable names are lowercased, but subsection
+ names are not.
--global::
For writing options: write to global ~/.gitconfig file rather than
@@ -178,6 +181,11 @@ See also <<FILES>>.
Opens an editor to modify the specified config file; either
'--system', '--global', or repository (default).
+--includes::
+--no-includes::
+ Respect `include.*` directives in config files when looking up
+ values. Defaults to on.
+
[[FILES]]
FILES
-----
diff --git a/Documentation/git-fmt-merge-msg.txt b/Documentation/git-fmt-merge-msg.txt
index 32aff954a2..3a0f55ec8e 100644
--- a/Documentation/git-fmt-merge-msg.txt
+++ b/Documentation/git-fmt-merge-msg.txt
@@ -53,6 +53,11 @@ OPTIONS
CONFIGURATION
-------------
+merge.branchdesc::
+ In addition to branch names, populate the log message with
+ the branch description text associated with them. Defaults
+ to false.
+
merge.log::
In addition to branch names, populate the log message with at
most the specified number of one-line descriptions from the
diff --git a/Documentation/git-p4.txt b/Documentation/git-p4.txt
index 8b92cc0f8d..b7c7929716 100644
--- a/Documentation/git-p4.txt
+++ b/Documentation/git-p4.txt
@@ -303,9 +303,13 @@ CLIENT SPEC
-----------
The p4 client specification is maintained with the 'p4 client' command
and contains among other fields, a View that specifies how the depot
-is mapped into the client repository. Git-p4 can consult the client
-spec when given the '--use-client-spec' option or useClientSpec
-variable.
+is mapped into the client repository. The 'clone' and 'sync' commands
+can consult the client spec when given the '--use-client-spec' option or
+when the useClientSpec variable is true. After 'git p4 clone', the
+useClientSpec variable is automatically set in the repository
+configuration file. This allows future 'git p4 submit' commands to
+work properly; the submit command looks only at the variable and does
+not have a command-line option.
The full syntax for a p4 view is documented in 'p4 help views'. Git-p4
knows only a subset of the view syntax. It understands multi-line
@@ -483,6 +487,11 @@ git-p4.skipUserNameCheck::
user map, 'git p4' exits. Th