summaryrefslogtreecommitdiff
path: root/Documentation
diff options
context:
space:
mode:
Diffstat (limited to 'Documentation')
-rw-r--r--Documentation/RelNotes/2.12.2.txt83
-rw-r--r--Documentation/RelNotes/2.13.0.txt70
-rw-r--r--Documentation/config.txt78
-rw-r--r--Documentation/git-commit.txt2
-rw-r--r--Documentation/git-credential-cache.txt11
-rw-r--r--Documentation/git-format-patch.txt2
-rw-r--r--Documentation/git-send-email.txt2
-rw-r--r--Documentation/git.txt3
8 files changed, 214 insertions, 37 deletions
diff --git a/Documentation/RelNotes/2.12.2.txt b/Documentation/RelNotes/2.12.2.txt
new file mode 100644
index 0000000000..441939709c
--- /dev/null
+++ b/Documentation/RelNotes/2.12.2.txt
@@ -0,0 +1,83 @@
+Git v2.12.2 Release Notes
+=========================
+
+Fixes since v2.12.1
+-------------------
+
+ * "git status --porcelain" is supposed to give a stable output, but a
+ few strings were left as translatable by mistake.
+
+ * "Dumb http" transport used to misparse a nonsense http-alternates
+ response, which has been fixed.
+
+ * "git diff --quiet" relies on the size field in diff_filespec to be
+ correctly populated, but diff_populate_filespec() helper function
+ made an incorrect short-cut when asked only to populate the size
+ field for paths that need to go through convert_to_git() (e.g. CRLF
+ conversion).
+
+ * There is no need for Python only to give a few messages to the
+ standard error stream, but we somehow did.
+
+ * A leak in a codepath to read from a packed object in (rare) cases
+ has been plugged.
+
+ * "git upload-pack", which is a counter-part of "git fetch", did not
+ report a request for a ref that was not advertised as invalid.
+ This is generally not a problem (because "git fetch" will stop
+ before making such a request), but is the right thing to do.
+
+ * A "gc.log" file left by a backgrounded "gc --auto" disables further
+ automatic gc; it has been taught to run at least once a day (by
+ default) by ignoring a stale "gc.log" file that is too old.
+
+ * "git remote rm X", when a branch has remote X configured as the
+ value of its branch.*.remote, tried to remove branch.*.remote and
+ branch.*.merge and failed if either is unset.
+
+ * A caller of tempfile API that uses stdio interface to write to
+ files may ignore errors while writing, which is detected when
+ tempfile is closed (with a call to ferror()). By that time, the
+ original errno that may have told us what went wrong is likely to
+ be long gone and was overwritten by an irrelevant value.
+ close_tempfile() now resets errno to EIO to make errno at least
+ predictable.
+
+ * "git show-branch" expected there were only very short branch names
+ in the repository and used a fixed-length buffer to hold them
+ without checking for overflow.
+
+ * The code that parses header fields in the commit object has been
+ updated for (micro)performance and code hygiene.
+
+ * A test that creates a confusing branch whose name is HEAD has been
+ corrected not to do so.
+
+ * "Cc:" on the trailer part does not have to conform to RFC strictly,
+ unlike in the e-mail header. "git send-email" has been updated to
+ ignore anything after '>' when picking addresses, to allow non-address
+ cruft like " # stable 4.4" after the address.
+
+ * "git push" had a handful of codepaths that could lead to a deadlock
+ when unexpected error happened, which has been fixed.
+
+ * Code to read submodule.<name>.ignore config did not state the
+ variable name correctly when giving an error message diagnosing
+ misconfiguration.
+
+ * "git ls-remote" and "git archive --remote" are designed to work
+ without being in a directory under Git's control. However, recent
+ updates revealed that we randomly look into a directory called
+ .git/ without actually doing necessary set-up when working in a
+ repository. Stop doing so.
+
+ * The code to parse the command line "git grep <patterns>... <rev>
+ [[--] <pathspec>...]" has been cleaned up, and a handful of bugs
+ have been fixed (e.g. we used to check "--" if it is a rev).
+
+ * The code to parse "git -c VAR=VAL cmd" and set configuration
+ variable for the duration of cmd had two small bugs, which have
+ been fixed.
+ This supersedes jc/config-case-cmdline topic that has been discarded.
+
+Also contains various documentation updates and code clean-ups.
diff --git a/Documentation/RelNotes/2.13.0.txt b/Documentation/RelNotes/2.13.0.txt
index 0d4a3ef931..5b934b77b5 100644
--- a/Documentation/RelNotes/2.13.0.txt
+++ b/Documentation/RelNotes/2.13.0.txt
@@ -15,6 +15,10 @@ Backward compatibility notes.
has been deprecated for quite some time, and will be removed in a
future release.
+ * The default location "~/.git-credential-cache/socket" for the
+ socket used to communicate with the credential-cache daemon has
+ been moved to "~/.cache/git/credential/socket".
+
Updates since v2.12
-------------------
@@ -77,7 +81,6 @@ UI, Workflows & Features
unlike in the e-mail header. "git send-email" has been updated to
ignore anything after '>' when picking addresses, to allow non-address
cruft like " # stable 4.4" after the address.
- (merge 9d3343961b jh/send-email-one-cc later to maint).
* When "git submodule init" decides that the submodule in the working
tree is its upstream, it now gives a warning as it is not a very
@@ -113,6 +116,18 @@ UI, Workflows & Features
repository and was quite messy due to its "chicken-and-egg" nature.
The code has been restructured.
+ * The command line prompt (in contrib/) learned a new 'tag' style
+ that can be specified with GIT_PS1_DESCRIBE_STYLE, to describe a
+ detached HEAD with "git describe --tags".
+
+ * The configuration file learned a new "includeIf.<condition>.path"
+ that includes the contents of the given path only when the
+ condition holds. This allows you to say "include this work-related
+ bit only in the repositories under my ~/work/ directory".
+
+ * Recent update to "rebase -i" started showing a message that is not
+ a warning with "warning:" prefix by mistake. This has been fixed.
+
Performance, Internal Implementation, Development Support etc.
@@ -141,11 +156,9 @@ Performance, Internal Implementation, Development Support etc.
* A test that creates a confusing branch whose name is HEAD has been
corrected not to do so.
- (merge f0252ca23c jk/t6300-cleanup later to maint).
* The code that parses header fields in the commit object has been
updated for (micro)performance and code hygiene.
- (merge b072504ce1 rs/commit-parsing-optim later to maint).
* An helper function to make it easier to append the result from
real_path() to a strbuf has been added.
@@ -186,6 +199,13 @@ Performance, Internal Implementation, Development Support etc.
use; this has been cleaned up and made to use the newer commit-slab
facility.
+ * The "debug" helper used in the test framework learned to run
+ a command under "gdb" interactively.
+ (merge 59210dd56c sg/test-with-stdin later to maint).
+
+ * The "detect attempt to create collisions" variant of SHA-1
+ implementation by Marc Stevens (CWI) and Dan Shumow (Microsoft)
+ has been integrated and made the default.
Also contains various documentation updates and code clean-ups.
@@ -193,7 +213,7 @@ Also contains various documentation updates and code clean-ups.
Fixes since v2.12
-----------------
-Unless otherwise noted, all the fixes since v2.9 in the maintenance
+Unless otherwise noted, all the fixes since v2.12 in the maintenance
track are contained in this release (see the maintenance releases'
notes for details).
@@ -204,19 +224,16 @@ notes for details).
* The code to parse the command line "git grep <patterns>... <rev>
[[--] <pathspec>...]" has been cleaned up, and a handful of bugs
have been fixed (e.g. we used to check "--" if it is a rev).
- (merge 131f3c96d2 jk/grep-no-index-fix later to maint).
* "git ls-remote" and "git archive --remote" are designed to work
without being in a directory under Git's control. However, recent
updates revealed that we randomly look into a directory called
.git/ without actually doing necessary set-up when working in a
repository. Stop doing so.
- (merge 4b0c3c7735 jn/remote-helpers-with-git-dir later to maint).
* "git show-branch" expected there were only very short branch names
in the repository and used a fixed-length buffer to hold them
without checking for overflow.
- (merge d3cc5f4c44 jk/show-branch-lift-name-len-limit later to maint).
* A caller of tempfile API that uses stdio interface to write to
files may ignore errors while writing, which is detected when
@@ -225,22 +242,18 @@ notes for details).
be long gone and was overwritten by an irrelevant value.
close_tempfile() now resets errno to EIO to make errno at least
predictable.
- (merge 7e8c9355b7 jk/tempfile-ferror-fclose-confusion later to maint).
* "git remote rm X", when a branch has remote X configured as the
value of its branch.*.remote, tried to remove branch.*.remote and
branch.*.merge and failed if either is unset.
- (merge 20690b2139 rl/remote-allow-missing-branch-name-merge later to maint).
* A "gc.log" file left by a backgrounded "gc --auto" disables further
automatic gc; it has been taught to run at least once a day (by
default) by ignoring a stale "gc.log" file that is too old.
- (merge a831c06a2b dt/gc-ignore-old-gc-logs later to maint).
* The code to parse "git -c VAR=VAL cmd" and set configuration
variable for the duration of cmd had two small bugs, which have
been fixed.
- (merge 1274a155af jc/config-case-cmdline-take-2 later to maint).
* user.email that consists of only cruft chars should consistently
error out, but didn't.
@@ -250,11 +263,9 @@ notes for details).
report a request for a ref that was not advertised as invalid.
This is generally not a problem (because "git fetch" will stop
before making such a request), but is the right thing to do.
- (merge bdb31eada7 jt/upload-pack-error-report later to maint).
* A leak in a codepath to read from a packed object in (rare) cases
has been plugged.
- (merge 886ddf4777 rs/sha1-file-plug-fallback-base-leak later to maint).
* When a redirected http transport gets an error during the
redirected request, we ignored the error we got from the server,
@@ -272,7 +283,6 @@ notes for details).
* There is no need for Python only to give a few messages to the
standard error stream, but we somehow did.
- (merge b8686c661d ss/remote-bzr-hg-placeholder-wo-python later to maint).
* The code to parse "git log -L..." command line was buggy when there
are many ranges specified with -L; overrun of the allocated buffer
@@ -286,7 +296,6 @@ notes for details).
made an incorrect short-cut when asked only to populate the size
field for paths that need to go through convert_to_git() (e.g. CRLF
conversion).
- (merge 12426e114b jc/diff-populate-filespec-size-only-fix later to maint).
* A few tests were run conditionally under (rare) conditions where
they cannot be run (like running cvs tests under 'root' account).
@@ -314,11 +323,9 @@ notes for details).
* "git push" had a handful of codepaths that could lead to a deadlock
when unexpected error happened, which has been fixed.
- (merge d1a13d3fcb jk/push-deadlock-regression-fix later to maint).
* "Dumb http" transport used to misparse a nonsense http-alternates
response, which has been fixed.
- (merge d61434ae81 jk/http-walker-buffer-underflow-fix later to maint).
* "git add -p <pathspec>" unnecessarily expanded the pathspec to a
list of individual files that matches the pathspec by running "git
@@ -332,11 +339,30 @@ notes for details).
* "git status --porcelain" is supposed to give a stable output, but a
few strings were left as translatable by mistake.
- (merge b9e2bc560a mg/status-porcelain-no-i18n later to maint).
+
+ * "git revert -m 0 $merge_commit" complained that reverting a merge
+ needs to say relative to which parent the reversion needs to
+ happen, as if "-m 0" weren't given. The correct diagnosis is that
+ "-m 0" does not refer to the first parent ("-m 1" does). This has
+ been fixed.
+
+ * Code to read submodule.<name>.ignore config did not state the
+ variable name correctly when giving an error message diagnosing
+ misconfiguration.
+
+ * Fix for NO_PTHREADS build.
+ (merge 7b91929ba0 jk/execv-dashed-external later to maint).
+
+ * Fix for potential segv introduced in v2.11.0 and later (also
+ v2.10.2) to "git log --pickaxe-regex -S".
+ (merge f53c5de29c js/regexec-buf later to maint).
* Other minor doc, test and build updates and code cleanups.
- (merge b803ae4427 ps/docs-diffcore later to maint).
- (merge bcd886d897 ew/markdown-url-in-readme later to maint).
- (merge b2d593a779 rj/remove-unused-mktemp later to maint).
- (merge 3255e512a8 jk/ewah-use-right-type-in-sizeof later to maint).
(merge dfa3ad3238 rs/blame-code-cleanup later to maint).
+ (merge ffddfc6328 jk/rev-parse-cleanup later to maint).
+ (merge f20754802a jk/pack-name-cleanups later to maint).
+ (merge d4aae459cd sb/wt-status-cleanup later to maint).
+ (merge e94eac49e6 rs/http-push-cleanup later to maint).
+ (merge ba6746c08f rs/path-name-safety-cleanup later to maint).
+ (merge d41626ff9e rs/shortlog-cleanup later to maint).
+ (merge dce96c41f9 rs/update-hook-optim later to maint).
diff --git a/Documentation/config.txt b/Documentation/config.txt
index eccc012672..0d8df5a9f9 100644
--- a/Documentation/config.txt
+++ b/Documentation/config.txt
@@ -79,18 +79,69 @@ escape sequences) are invalid.
Includes
~~~~~~~~
-You can include one config file from another by setting the special
+You can include a config file from another by setting the special
`include.path` variable to the name of the file to be included. The
variable takes a pathname as its value, and is subject to tilde
-expansion.
+expansion. `include.path` can be given multiple times.
-The
-included file is expanded immediately, as if its contents had been
+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.
+`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.
+Conditional includes
+~~~~~~~~~~~~~~~~~~~~
+
+You can include a config file from another conditionally by setting a
+`includeIf.<condition>.path` variable to the name of the file to be
+included. The variable's value is treated the same way as
+`include.path`. `includeIf.<condition>.path` can be given multiple times.
+
+The condition starts with a keyword followed by a colon and some data
+whose format and meaning depends on the keyword. Supported keywords
+are:
+
+`gitdir`::
+
+ The data that follows the keyword `gitdir:` is used as a glob
+ pattern. If the location of the .git directory matches the
+ pattern, the include condition is met.
++
+The .git location may be auto-discovered, or come from `$GIT_DIR`
+environment variable. If the repository is auto discovered via a .git
+file (e.g. from submodules, or a linked worktree), the .git location
+would be the final location where the .git directory is, not where the
+.git file is.
++
+The pattern can contain standard globbing wildcards and two additional
+ones, `**/` and `/**`, that can match multiple path components. Please
+refer to linkgit:gitignore[5] for details. For convenience:
+
+ * If the pattern starts with `~/`, `~` will be substituted with the
+ content of the environment variable `HOME`.
+
+ * If the pattern starts with `./`, it is replaced with the directory
+ containing the current config file.
+
+ * If the pattern does not start with either `~/`, `./` or `/`, `**/`
+ will be automatically prepended. For example, the pattern `foo/bar`
+ becomes `**/foo/bar` and would match `/any/path/to/foo/bar`.
+
+ * If the pattern ends with `/`, `**` will be automatically added. For
+ example, the pattern `foo/` becomes `foo/**`. In other words, it
+ matches "foo" and everything inside, recursively.
+
+`gitdir/i`::
+ This is the same as `gitdir` except that matching is done
+ case-insensitively (e.g. on case-insensitive file sytems)
+
+A few more notes on matching via `gitdir` and `gitdir/i`:
+
+ * Symlinks in `$GIT_DIR` are not resolved before matching.
+
+ * Note that "../" is not special and will match literally, which is
+ unlikely what you want.
Example
~~~~~~~
@@ -119,6 +170,17 @@ Example
path = foo ; expand "foo" relative to the current file
path = ~/foo ; expand "foo" in your `$HOME` directory
+ ; include if $GIT_DIR is /path/to/foo/.git
+ [includeIf "gitdir:/path/to/foo/.git"]
+ path = /path/to/foo.inc
+
+ ; include for all repositories inside /path/to/group
+ [includeIf "gitdir:/path/to/group/"]
+ path = /path/to/foo.inc
+
+ ; include for all repositories inside $HOME/to/group
+ [includeIf "gitdir:~/to/group/"]
+ path = /path/to/foo.inc
Values
~~~~~~
@@ -2459,6 +2521,8 @@ push.default::
pushing to the same repository you would normally pull from
(i.e. central workflow).
+* `tracking` - This is a deprecated synonym for `upstream`.
+
* `simple` - in centralized workflow, work like `upstream` with an
added safety to refuse to push if the upstream branch's name is
different from the local one.
diff --git a/Documentation/git-commit.txt b/Documentation/git-commit.txt
index 25dcdcc289..ed0f5b94b3 100644
--- a/Documentation/git-commit.txt
+++ b/Documentation/git-commit.txt
@@ -463,7 +463,7 @@ order). See linkgit:git-var[1] for details.
HOOKS
-----
This command can run `commit-msg`, `prepare-commit-msg`, `pre-commit`,
-and `post-commit` hooks. See linkgit:githooks[5] for more
+`post-commit` and `post-rewrite` hooks. See linkgit:githooks[5] for more
information.
FILES
diff --git a/Documentation/git-credential-cache.txt b/Documentation/git-credential-cache.txt
index 96208f822e..2b85826393 100644
--- a/Documentation/git-credential-cache.txt
+++ b/Documentation/git-credential-cache.txt
@@ -33,10 +33,13 @@ OPTIONS
--socket <path>::
Use `<path>` to contact a running cache daemon (or start a new
- cache daemon if one is not started). Defaults to
- `~/.git-credential-cache/socket`. If your home directory is on a
- network-mounted filesystem, you may need to change this to a
- local filesystem. You must specify an absolute path.
+ cache daemon if one is not started).
+ Defaults to `$XDG_CACHE_HOME/git/credential/socket` unless
+ `~/.git-credential-cache/` exists in which case
+ `~/.git-credential-cache/socket` is used instead.
+ If your home directory is on a network-mounted filesystem, you
+ may need to change this to a local filesystem. You must specify
+ an absolute path.
CONTROLLING THE DAEMON
----------------------
diff --git a/Documentation/git-format-patch.txt b/Documentation/git-format-patch.txt
index 9b200b379b..f7a069bb92 100644
--- a/Documentation/git-format-patch.txt
+++ b/Documentation/git-format-patch.txt
@@ -239,7 +239,7 @@ keeping them as Git notes allows them to be maintained between versions
of the patch series (but see the discussion of the `notes.rewrite`
configuration options in linkgit:git-notes[1] to use this workflow).
---[no]-signature=<signature>::
+--[no-]signature=<signature>::
Add a signature to each message produced. Per RFC 3676 the signature
is separated from the body by a line with '-- ' on it. If the
signature option is omitted the signature defaults to the Git version
diff --git a/Documentation/git-send-email.txt b/Documentation/git-send-email.txt
index 642d0ef199..9d66166f69 100644
--- a/Documentation/git-send-email.txt
+++ b/Documentation/git-send-email.txt
@@ -89,7 +89,7 @@ See the CONFIGURATION section for `sendemail.multiEdit`.
reply to the given Message-Id, which avoids breaking threads to
provide a new patch series.
The second and subsequent emails will be sent as replies according to
- the `--[no]-chain-reply-to` setting.
+ the `--[no-]chain-reply-to` setting.
+
So for example when `--thread` and `--no-chain-reply-to` are specified, the
second and subsequent patches will be replies to the first one like in the
diff --git a/Documentation/git.txt b/Documentation/git.txt
index 3f75af872c..ecc1bb4bd7 100644
--- a/Documentation/git.txt
+++ b/Documentation/git.txt
@@ -44,9 +44,10 @@ unreleased) version of Git, that is available from the 'master'
branch of the `git.git` repository.
Documentation for older releases are available here:
-* link:v2.12.1/git.html[documentation for release 2.12.1]
+* link:v2.12.2/git.html[documentation for release 2.12.2]
* release notes for
+ link:RelNotes/2.12.2.txt[2.12.2].
link:RelNotes/2.12.1.txt[2.12.1].
link:RelNotes/2.12.0.txt[2.12].