summaryrefslogtreecommitdiff
path: root/Documentation
diff options
context:
space:
mode:
Diffstat (limited to 'Documentation')
-rw-r--r--Documentation/RelNotes/2.3.6.txt13
-rw-r--r--Documentation/RelNotes/2.3.7.txt21
-rw-r--r--Documentation/RelNotes/2.4.0.txt345
-rw-r--r--Documentation/RelNotes/2.5.0.txt86
-rw-r--r--Documentation/blame-options.txt2
-rw-r--r--Documentation/config.txt9
-rw-r--r--Documentation/git-checkout.txt78
-rw-r--r--Documentation/git-credential-store.txt35
-rw-r--r--Documentation/git-log.txt4
-rw-r--r--Documentation/git-prune.txt3
-rw-r--r--Documentation/git-rev-parse.txt10
-rw-r--r--Documentation/git-status.txt8
-rw-r--r--Documentation/git-tag.txt11
-rw-r--r--Documentation/git.txt18
-rw-r--r--Documentation/gitk.txt4
-rw-r--r--Documentation/gitrepository-layout.txt74
-rw-r--r--Documentation/line-range-format.txt11
-rw-r--r--Documentation/rev-list-options.txt4
18 files changed, 545 insertions, 191 deletions
diff --git a/Documentation/RelNotes/2.3.6.txt b/Documentation/RelNotes/2.3.6.txt
new file mode 100644
index 0000000000..432f770ef3
--- /dev/null
+++ b/Documentation/RelNotes/2.3.6.txt
@@ -0,0 +1,13 @@
+Git v2.3.6 Release Notes
+========================
+
+Fixes since v2.3.5
+------------------
+
+ * "diff-highlight" (in contrib/) used to show byte-by-byte
+ differences, which meant that multi-byte characters can be chopped
+ in the middle. It learned to pay attention to character boundaries
+ (assuming the UTF-8 payload).
+
+Also contains typofixes, documentation updates and trivial code
+clean-ups.
diff --git a/Documentation/RelNotes/2.3.7.txt b/Documentation/RelNotes/2.3.7.txt
new file mode 100644
index 0000000000..fc95812cb3
--- /dev/null
+++ b/Documentation/RelNotes/2.3.7.txt
@@ -0,0 +1,21 @@
+Git v2.3.7 Release Notes
+========================
+
+Fixes since v2.3.6
+------------------
+
+ * An earlier update to the parser that disects a URL broke an
+ address, followed by a colon, followed by an empty string (instead
+ of the port number), e.g. ssh://example.com:/path/to/repo.
+
+ * The completion script (in contrib/) contaminated global namespace
+ and clobbered on a shell variable $x.
+
+ * The "git push --signed" protocol extension did not limit what the
+ "nonce" that is a server-chosen string can contain or how long it
+ can be, which was unnecessarily lax. Limit both the length and the
+ alphabet to a reasonably small space that can still have enough
+ entropy.
+
+Also contains typofixes, documentation updates and trivial code
+clean-ups.
diff --git a/Documentation/RelNotes/2.4.0.txt b/Documentation/RelNotes/2.4.0.txt
index 0e70681828..cde64be535 100644
--- a/Documentation/RelNotes/2.4.0.txt
+++ b/Documentation/RelNotes/2.4.0.txt
@@ -6,19 +6,19 @@ Backward compatibility warning(s)
This release has a few changes in the user-visible output from
Porcelain commands. These are not meant to be parsed by scripts, but
-the users still may want to be aware of the changes:
+users still may want to be aware of the changes:
- * Output from "git log --decorate" (and "%d" format specifier used in
- the userformat "--format=<string>" parameter "git log" family of
- command takes) used to list "HEAD" just like other tips of branch
- names, separated with a comma in between. E.g.
+ * The output from "git log --decorate" (and, more generally, the "%d"
+ format specifier used in the "--format=<string>" parameter to the
+ "git log" family of commands) has changed. It used to list "HEAD"
+ just like other branches; e.g.,
$ git log --decorate -1 master
commit bdb0f6788fa5e3cacc4315e9ff318a27b2676ff4 (HEAD, master)
...
- This release updates the output slightly when HEAD refers to the tip
- of a branch whose name is also shown in the output. The above is
+ This release changes the output slightly when HEAD refers to a
+ branch whose name is also shown in the output. The above is now
shown as:
$ git log --decorate -1 master
@@ -26,15 +26,15 @@ the users still may want to be aware of the changes:
...
* The phrasing "git branch" uses to describe a detached HEAD has been
- updated to match that of "git status":
+ updated to agree with the phrasing used by "git status":
- - When the HEAD is at the same commit as it was originally
+ - When HEAD is at the same commit as when it was originally
detached, they now both show "detached at <commit object name>".
- - When the HEAD has moved since it was originally detached,
- they now both show "detached from <commit object name>".
+ - When HEAD has moved since it was originally detached, they now
+ both show "detached from <commit object name>".
- Earlier "git branch" always used "from"
+ Previously, "git branch" always used "from".
Updates since v2.3
@@ -46,8 +46,9 @@ Ports
platforms with smaller SSIZE_MAX, leading to read(2)/write(2)
failures.
- * We did not check the curl library version before using
- CURLOPT_PROXYAUTH feature that may not exist.
+ * We did not check the curl library version before using the
+ CURLOPT_PROXYAUTH feature, which did not exist in older versions of
+ the library.
* We now detect number of CPUs on older BSD-derived systems.
@@ -66,99 +67,105 @@ UI, Workflows & Features
* "git log --invert-grep --grep=WIP" will show only commits that do
not have the string "WIP" in their messages.
- * "git push" has been taught a "--atomic" option that makes push to
- update more than one ref an "all-or-none" affair.
+ * "git push" has been taught an "--atomic" option that makes a push
+ that updates more than one ref an "all-or-none" affair.
- * Extending the "push to deploy" added in 2.3, the behaviour of "git
- push" when updating the branch that is checked out can now be
- tweaked by push-to-checkout hook.
+ * Extending the "push to deploy" feature that was added in 2.3, the
+ behaviour of "git push" when updating the branch that is checked
+ out can now be tweaked by a "push-to-checkout" hook.
- * Using environment variable LANGUAGE and friends on the client side,
- HTTP-based transports now send Accept-Language when making requests.
+ * HTTP-based transports now send Accept-Language when making
+ requests. The languages to accept are inferred from environment
+ variables on the client side (LANGUAGE, etc).
* "git send-email" used to accept a mistaken "y" (or "yes") as an
- answer to "What encoding do you want to use [UTF-8]? " without
- questioning. Now it asks for confirmation when the answer looks
- too short to be a valid encoding name.
+ answer to "What encoding do you want to use [UTF-8]?" without
+ questioning. Now it asks for confirmation when the answer looks too
+ short to be a valid encoding name.
* When "git apply --whitespace=fix" fixed whitespace errors in the
common context lines, the command reports that it did so.
- * "git status" now allows the "-v" to be given twice to show the
- differences that are left in the working tree not to be committed.
+ * "git status" now allows the "-v" option to be given twice, in which
+ case it also shows the differences in the working tree that are not
+ staged to be committed.
- * "git cherry-pick" used to clean-up the log message even when it is
- merely replaying an existing commit. It now replays the message
- verbatim unless you are editing the message of resulting commits.
+ * "git cherry-pick" used to clean up the log message even when it is
+ merely replaying an existing commit. It now replays the message
+ verbatim unless you are editing the message of the resulting
+ commit.
* "git archive" can now be told to set the 'text' attribute in the
resulting zip archive.
- * Output from "git log --decorate" mentions HEAD when it points at a
- tip of an branch differently from a detached HEAD.
+ * Output from "git log --decorate" now distinguishes between a
+ detached HEAD vs. a HEAD that points at a branch.
- This is a potentially backward-incompatible change.
+ This is a potentially backward-incompatible change; see above for
+ more information.
- * "git branch" on a detached HEAD always said "(detached from xyz)",
- even when "git status" would report "detached at xyz". The HEAD is
- actually at xyz and haven't been moved since it was detached in
- such a case, but the user cannot read what the current value of
- HEAD is when "detached from" is used.
+ * When HEAD was detached when at commit xyz and hasn't been moved
+ since it was detached, "git status" would report "detached at xyz"
+ whereas "git branch" would report "detached from xyz". Now the
+ output of "git branch" agrees with that of "git status".
- * "git -C '' subcmd" refused to work in the current directory, unlike
- "cd ''" which silently behaves as a no-op.
+ This is a potentially backward-incompatible change; see above for
+ more information.
+
+ * "git -C '' subcmd" now works in the current directory (analogously
+ to "cd ''") rather than dying with an error message.
(merge 6a536e2 kn/git-cd-to-empty later to maint).
- * The versionsort.prerelease configuration variable can be used to
- specify that v1.0-pre1 comes before v1.0.
+ * The versionsort.prereleaseSuffix configuration variable can be used
+ to specify that, for example, v1.0-pre1 comes before v1.0.
* A new "push.followTags" configuration turns the "--follow-tags"
option on by default for the "git push" command.
- * "git log --graph --no-walk A B..." is a conflicting request that
- asks nonsense; no-walk tells us show discrete points in the
- history, while graph asks to draw connections between these
- discrete points. Forbid the combination.
+ * "git log --graph --no-walk A B..." is a nonsensical combination of
+ options: "--no-walk" requests discrete points in the history, while
+ "--graph" asks to draw connections between these discrete points.
+ Forbid the use of these options together.
* "git rev-list --bisect --first-parent" does not work (yet) and can
- even cause SEGV; forbid it. "git log --bisect --first-parent"
- would not be useful until "git bisect --first-parent" materializes,
- so it is also forbidden for now.
+ even cause SEGV; forbid it. "git log --bisect --first-parent" would
+ not be useful until "git bisect --first-parent" materializes, so
+ also forbid it for now.
Performance, Internal Implementation, Development Support etc.
- * Implementation of N_() macro has been updated slightly to help us
+ * Slightly change the implementation of the N_() macro to help us
detect mistakes.
- * Implementation of "reflog expire" has been restructured to fit the
- reflogs better with the recently updated ref API.
+ * Restructure the implementation of "reflog expire" to fit better
+ with the recently updated reference API.
- * The transport-helper did not give transport options such as
+ * The transport-helper did not pass transport options such as
verbosity, progress, cloning, etc. to import and export based
helpers, like it did for fetch and push based helpers, robbing them
- the chance to honor the wish of the end-users better.
-
- * The tests that wanted to see that file becomes unreadable after
- running "chmod a-r file", and the tests that wanted to make sure it
- is not run as root, we used "can we write into the / directory?" as
- a cheap substitute, but on some platforms that is not a good
- heuristics. The tests and their prerequisites have been updated to
- check what they really require.
+ of the chance to honor the wish of the end-users better.
+
+ * The tests that wanted to see that a file becomes unreadable after
+ running "chmod a-r file", and the tests that wanted to make sure
+ that they are not run as root, used "can we write into the /
+ directory?" as a cheap substitute. But on some platforms that is
+ not a good heuristic. The tests and their prerequisites have been
+ updated to check what they really require.
(merge f400e51 jk/sanity later to maint).
* Various issues around "reflog expire", e.g. using --updateref when
expiring a reflog for a symbolic reference, have been corrected
and/or made saner.
- * The strbuf API was explained between the API documentation and in
- the header file. Move missing bits to strbuf.h so that programmers
- can check only one place for all necessary information.
+ * The documentation for the strbuf API had been split between the API
+ documentation and the header file. Consolidate the documentation in
+ strbuf.h.
* The error handling functions and conventions are now documented in
- the API manual.
+ the API manual (in api-error-handling.txt).
- * Optimize attribute look-up, mostly useful in "git grep" on a
+ * Optimize gitattribute look-up, mostly useful in "git grep" on a
project that does not use many attributes, by avoiding it when we
(should) know that the attributes are not defined in the first
place.
@@ -170,26 +177,25 @@ Performance, Internal Implementation, Development Support etc.
(merge 0b868f0 sb/hex-object-name-is-at-most-41-bytes-long later to maint).
(merge 5d30851 dp/remove-duplicated-header-inclusion later to maint).
- * Simplify the ref transaction API around how "the ref should be
- pointing at this object" is specified.
+ * Simplify the ref transaction API for verifying that "the ref should
+ be pointing at this object".
- * Code in "git daemon" to parse out and hold hostnames used in
- request interpolation has been simplified.
+ * Simplify the code in "git daemon" that parses out and holds
+ hostnames used in request interpolation.
- * "git push" codepath has been restructured to make it easier to add
- new configuration bits.
+ * Restructure the "git push" codepath to make it easier to add new
+ configuration bits.
- * The run-command interface was easy to abuse and make a pipe for us
- to read from the process, wait for the process to finish and then
- attempt to read its output, which is a pattern that lead to a
- deadlock. Fix such uses by introducing a helper to do this
- correctly (i.e. we need to read first and then wait the process to
- finish) and also add code to prevent such abuse in the run-command
- helper.
+ * The run-command interface made it easy to make a pipe for us to
+ read from a process, wait for the process to finish, and then
+ attempt to read its output. But this pattern can lead to deadlock.
+ So introduce a helper to do this correctly (i.e., first read, and
+ then wait the process to finish) and also add code to prevent such
+ abuse in the run-command helper.
* People often forget to chain the commands in their test together
- with &&, leaving a failure from an earlier command in the test go
- unnoticed. The new GIT_TEST_CHAIN_LINT mechanism allows you to
+ with &&, letting a failure from an earlier command in the test go
+ unnoticed. The new GIT_TEST_CHAIN_LINT mechanism allows you to
catch such a mistake more easily.
@@ -208,33 +214,34 @@ notes for details).
(merge a46442f jk/blame-commit-label later to maint).
* "git rerere" (invoked internally from many mergy operations) did
- not correctly signal errors when told to update the working tree
- files and failed to do so for whatever reason.
+ not correctly signal errors when it attempted to update the working
+ tree files but failed for whatever reason.
(merge 89ea903 jn/rerere-fail-on-auto-update-failure later to maint).
* Setting diff.submodule to 'log' made "git format-patch" produce
broken patches.
(merge 339de50 dk/format-patch-ignore-diff-submodule later to maint).
- * After attempting and failing a password-less authentication
- (e.g. Kerberos), libcURL refuses to fall back to password based
- Basic authentication without a bit of help/encouragement.
+ * After attempting and failing a password-less authentication (e.g.,
+ Kerberos), libcURL refuses to fall back to password-based Basic
+ authentication without a bit of help/encouragement.
(merge 4dbe664 bc/http-fallback-to-password-after-krb-fails later to maint).
- * The "git push" documentation made the "--repo=<there>" option
+ * The "git push" documentation for the "--repo=<there>" option was
easily misunderstood.
(merge 57b92a7 mg/push-repo-option-doc later to maint).
- * Code to read branch name from various files in .git/ directory
- would have misbehaved if the code to write them left an empty file.
+ * Code to read a branch name from various files in the .git/
+ directory would have overrun array limits if asked to read an empty
+ file.
(merge 66ec904 jk/status-read-branch-name-fix later to maint).
- * A misspelled conditional that is always true has been fixed.
+ * Remove a superfluous conditional that is always true.
(merge 94ee8e2 jk/remote-curl-an-array-in-struct-cannot-be-null later to maint).
- * The documentation incorrectly said that C(opy) and R(ename) are the
- only ones that can be followed by the score number in the output in
- the --raw format.
+ * The "git diff --raw" documentation incorrectly implied that C(opy)
+ and R(ename) are the only statuses that can be followed by a score
+ number.
(merge ac1c2d9 jc/diff-format-doc later to maint).
* A broken pack .idx file in the receiving repository prevented the
@@ -251,34 +258,44 @@ notes for details).
to the "log" command.
(merge 3cab02d jc/doc-log-rev-list-options later to maint).
- * "git apply --whitespace=fix" used to under-allocate the memory when
- the fix resulted in a longer text than the original patch.
+ * "git apply --whitespace=fix" used to under-allocate memory when the
+ fix resulted in a longer text than the original patch.
(merge 407a792 jc/apply-ws-fix-expands later to maint).
* The interactive "show a list and let the user choose from it"
- interface "add -i" used showed and prompted to the user even when
- the candidate list was empty, against which the only "choice" the
- user could have made was to choose nothing.
+ interface used by "git add -i" unnecessarily prompted the user even
+ when the candidate list was empty, against which the only "choice"
+ the user could have made was to choose nothing.
(merge a9c4641 ak/add-i-empty-candidates later to maint).
- * The insn sheet "git rebase -i" creates did not fully honor
+ * The todo list created by "git rebase -i" did not fully honor
core.abbrev settings.
(merge edb72d5 ks/rebase-i-abbrev later to maint).
- * "git fetch" over a remote-helper that cannot respond to "list"
- command could not fetch from a symbolic reference e.g. HEAD.
+ * "git fetch" over a remote-helper that cannot respond to the "list"
+ command could not fetch from a symbolic reference (e.g., HEAD).
(merge 33cae54 mh/deref-symref-over-helper-transport later to maint).
* "git push --signed" gave an incorrectly worded error message when
the other side did not support the capability.
- (merge 45917f0 jc/push-cert later to maint).
- * We didn't format an integer that wouldn't fit in "int" but in
- "uintmax_t" correctly.
+ * The "git push --signed" protocol extension did not limit what the
+ "nonce" (a server-chosen string) could contain nor how long it
+ could be, which was unnecessarily lax. Limit both the length and
+ the alphabet to a reasonably small space that can still have enough
+ entropy.
+ (merge afcb6ee jc/push-cert later to maint).
+
+ * The completion script (in contrib/) clobbered the shell variable $x
+ in the global shell namespace.
+ (merge 852ff1c ma/bash-completion-leaking-x later to maint).
+
+ * We incorrectly formatted a "uintmax_t" integer that doesn't fit in
+ "int".
(merge d306f3d jk/decimal-width-for-uintmax later to maint).
- * Reading configuration from a blob object, when it ends with a lone
- CR, use to confuse the configuration parser.
+ * The configuration parser used to be confused when reading
+ configuration from a blob object that ends with a lone CR.
(merge 1d0655c jk/config-no-ungetc-eof later to maint).
* The pack bitmap support did not build with older versions of GCC.
@@ -294,25 +311,21 @@ notes for details).
(merge 1f985d6 ch/new-gpg-drops-rfc-1991 later to maint).
* The credential helper for Windows (in contrib/) used to mishandle
- a user name with an at-sign in it.
+ user names that contain an at-sign.
(merge 13d261e av/wincred-with-at-in-username-fix later to maint).
* "diff-highlight" (in contrib/) used to show byte-by-byte
- differences, which meant that multi-byte characters can be chopped
- in the middle. It learned to pay attention to character boundaries
- (assuming the UTF-8 payload).
+ differences, which could cause multi-byte characters to be chopped
+ in the middle. It learned to pay attention to character boundaries
+ (assuming UTF-8).
(merge 8d00662 jk/colors later to maint).
- * "git merge --quiet" did not squelch messages from the underlying
- merge-recursive strategy.
- (merge 2bf15a3 jk/merge-quiet later to maint).
-
- * Longstanding configuration variable naming rules has been added to
- the documentation.
+ * Document longstanding configuration variable naming rules in
+ CodingGuidelines.
(merge 35840a3 jc/conf-var-doc later to maint).
* An earlier workaround to squelch unhelpful deprecation warnings
- from the compiler on Mac OSX unnecessarily set minimum required
+ from the compiler on OS X unnecessarily set a minimum required
version of the OS, which the user might want to raise (or lower)
for other reasons.
(merge 88c03eb es/squelch-openssl-warnings-on-macosx later to maint).
@@ -329,33 +342,36 @@ notes for details).
"path/to/submodule".
(merge 8196e72 ps/submodule-sanitize-path-upon-add later to maint).
- * "git merge-file" did not work correctly in a subdirectory.
+ * "git merge-file" did not work correctly when invoked in a
+ subdirectory.
(merge 204a8ff ab/merge-file-prefix later to maint).
- * "git blame" died, trying to free an uninitialized piece of memory.
+ * "git blame" could die trying to free an uninitialized piece of
+ memory.
(merge e600592 es/blame-commit-info-fix later to maint).
* "git fast-import" used to crash when it could not close and
- conclude the resulting packfile cleanly.
+ finalize the resulting packfile cleanly.
(merge 5e915f3 jk/fast-import-die-nicely-fix later to maint).
- * "update-index --refresh" used to leak when an entry cannot be
- refreshed for whatever reason.
+ * "update-index --refresh" used to leak memory when an entry could
+ not be refreshed for whatever reason.
(merge bc1c2ca sb/plug-leak-in-make-cache-entry later to maint).
* The "interpolated-path" option of "git daemon" inserted any string
- client declared on the "host=" capability request without checking.
- Sanitize and limit %H and %CH to a saner and a valid DNS name.
+ the client declared on the "host=" capability request without
+ checking. Sanitize and limit %H and %CH to a saner and a valid DNS
+ name.
(merge b485373 jk/daemon-interpolate later to maint).
- * "git daemon" looked up the hostname even when "%CH" and "%IP"
- interpolations are not requested, which was unnecessary.
+ * "git daemon" unnecessarily looked up the hostname even when "%CH"
+ and "%IP" interpolations were not requested.
(merge dc8edc8 rs/daemon-interpolate later to maint).
- * Even though we officially haven't dropped Perl 5.8 support, the
- Getopt::Long package that came with it does not support "--no-"
- prefix to negate a boolean option; manually add support to help
- people with older Getopt::Long package.
+ * We relied on "--no-" prefix handling in Perl's Getopt::Long
+ package, even though that support didn't exist in Perl 5.8 (which
+ we still support). Manually add support to help people with older
+ Getopt::Long packages.
(merge f471494 km/send-email-getopt-long-workarounds later to maint).
* "git apply" was not very careful about reading from, removing,
@@ -364,13 +380,13 @@ notes for details).
replacement for GNU patch).
(merge e0d201b jc/apply-beyond-symlink later to maint).
- * A breakage to git-svn around v2.2 era that triggers premature
- closing of FileHandle has been corrected.
+ * Correct a breakage in git-svn, introduced around the v2.2 era, that
+ can cause FileHandles to be closed prematurely.
(merge e426311 ew/svn-maint-fixes later to maint).
- * We did not parse username followed by literal IPv6 address in SSH
- transport URLs, e.g. ssh://user@[2001:db8::1]:22/repo.git
- correctly.
+ * We did not parse usernames followed by literal IPv6 addresses
+ correctly in SSH transport URLs; e.g.,
+ ssh://user@[2001:db8::1]:22/repo.git.
(merge 6b6c5f7 tb/connect-ipv6-parse-fix later to maint).
* The configuration variable 'mailinfo.scissors' was hard to
@@ -381,28 +397,26 @@ notes for details).
submodule.*.update configuration was not clearly documented.
(merge 5c31acf ms/submodule-update-config-doc later to maint).
- * "git diff --shortstat --dirstat=changes" showed a dirstat based on
- lines that was never asked by the end user in addition to the
- dirstat that the user asked for.
+ * "git diff --shortstat" used together with "--dirstat=changes" or
+ "--dirstat=files" incorrectly output dirstat information twice.
(merge ab27389 mk/diff-shortstat-dirstat-fix later to maint).
- * "git remote add" mentioned "--tags" and "--no-tags" and was not
- clear that fetch from the remote in the future will use the default
- behaviour when neither is given to override it.
+ * The manpage for "git remote add" mentioned "--tags" and "--no-tags"
+ but did not explain what happens if neither option is provided.
(merge aaba0ab mg/doc-remote-tags-or-not later to maint).
- * Description given by "grep -h" for its --exclude-standard option
- was phrased poorly.
+ * The description of "--exclude-standard option" in the output of
+ "git grep -h" was phrased poorly.
(merge 77fdb8a nd/grep-exclude-standard-help-fix later to maint).
- * "git rebase -i" recently started to include the number of
- commits in the insn sheet to be processed, but on a platform
- that prepends leading whitespaces to "wc -l" output, the numbers
- are shown with extra whitespaces that aren't necessary.
+ * "git rebase -i" recently started to include the number of commits
+ in the todo list, but that output included extraneous whitespace on
+ a platform that prepends leading whitespaces to its "wc -l" output.
(merge 2185d3b es/rebase-i-count-todo later to maint).
- * The borrowed code in kwset API did not follow our usual convention
- to use "unsigned char" to store values that range from 0-255.
+ * The borrowed code in the kwset API did not follow our usual
+ convention to use "unsigned char" to store values that range from
+ 0-255.
(merge 189c860 bw/kwset-use-unsigned later to maint).
* A corrupt input to "git diff -M" used to cause it to segfault.
@@ -412,9 +426,8 @@ notes for details).
(merge 3f88c1b mg/verify-commit later to maint).
* "git imap-send" learned to optionally talk with an IMAP server via
- libcURL; because there is no other option when Git is built with
- NO_OPENSSL option, use that codepath by default under such
- configuration.
+ libcURL. Because there is no other option when Git is built with
+ the NO_OPENSSL option, use libcURL by default in that case.
(merge dcd01ea km/imap-send-libcurl-options later to maint).
* "git log --decorate" did not reset colors correctly around the
@@ -430,41 +443,47 @@ notes for details).
transport.
(merge 8ddf3ca jk/smart-http-hide-refs later to maint).
- * "git tag -h" used to show the "--column" and "--sort" options
- that are about listing in a wrong section.
+ * In the "git tag -h" output, move the documentation for the
+ "--column" and "--sort" options to the "Tag listing options"
+ section.
(merge dd059c6 jk/tag-h-column-is-a-listing-option later to maint).
* "git prune" used to largely ignore broken refs when deciding which
- objects are still being used, which could spread an existing small
- damage and make it a larger one.
+ objects are still being used, which could cause reference
+ corruption to lead to object loss.
(merge ea56c4e jk/prune-with-corrupt-refs later to maint).
- * The split-index mode introduced at v2.3.0-rc0~41 was broken in the
+ * The split-index mode introduced in v2.3.0-rc0~41 was broken in the
codepath to protect us against a broken reimplementation of Git
that writes an invalid index with duplicated index entries, etc.
(merge 03f15a7 tg/fix-check-order-with-split-index later to maint).
- * "git fetch" that fetches a commit using the allow-tip-sha1-in-want
- extension could have failed to fetch all the requested refs.
+ * "git fetch", when fetching a commit using the
+ allow-tip-sha1-in-want extension, could have failed to fetch all of
+ the requested refs.
(merge 32d0462 jk/fetch-pack later to maint).
* An failure early in the "git clone" that started creating the
- working tree and repository could have resulted in some directories
- and files left without getting cleaned up.
+ working tree and repository could have resulted in the failure to
+ clean up some directories and files.
(merge 16eff6c jk/cleanup-failed-clone later to maint).
* Recommend format-patch and send-email for those who want to submit
patches to this project.
(merge b25c469 jc/submitting-patches-mention-send-email later to maint).
- * Even though "git grep --quiet" is run merely to ask for the exit
- status, we spawned the pager regardless. Stop doing that.
+ * Do not spawn the pager when "git grep" is run with "--quiet".
(merge c2048f0 ws/grep-quiet-no-pager later to maint).
* The prompt script (in contrib/) did not show the untracked sign
when working in a subdirectory without any untracked files.
(merge 9bdc517 ct/prompt-untracked-fix later to maint).
+ * An earlier update to the URL parser broke an address that contains
+ a colon but an empty string for the port number, like
+ ssh://example.com:/path/to/repo.
+ (merge 6b6c5f7 tb/connect-ipv6-parse-fix later to maint).
+
* Code cleanups and documentation updates.
(merge 2ce63e9 rs/simple-cleanups later to maint).
(merge 33baa69 rj/no-xopen-source-for-cygwin later to maint).
@@ -491,3 +510,5 @@ notes for details).
(merge 6c3b2af jg/cguide-we-cannot-count later to maint).
(merge 2b8bd44 jk/pack-corruption-post-mortem later to maint).
(merge 9585cb8 jn/doc-fast-import-no-16-octopus-limit later to maint).
+ (merge 5dcd1b1 ps/grep-help-all-callback-arg later to maint).
+ (merge f1f4c84 va/fix-git-p4-tests later to maint).
diff --git a/Documentation/RelNotes/2.5.0.txt b/Documentation/RelNotes/2.5.0.txt
new file mode 100644
index 0000000000..24992b2879
--- /dev/null
+++ b/Documentation/RelNotes/2.5.0.txt
@@ -0,0 +1,86 @@
+Git 2.5 Release Notes
+=====================
+
+Updates since v2.4
+------------------
+
+Ports
+
+
+UI, Workflows & Features
+
+ * "git p4" now detects the filetype (e.g. binary) correctly even when
+ the files are opened exclusively.
+
+ * "git show-branch --topics HEAD" (with no other arguments) did not
+ do anything interesting. Instead, contrast the given revision
+ against all the local branches by default.
+
+
+Performance, Internal Implementation, Development Support etc.
+
+ * "unsigned char [20]" used thoughout the code to represent object
+ names are being converted into a semi-opaque "struct object_id".
+ This effort is expected to interfere with other topics in flight,
+ but hopefully will give us one extra level of abstraction in the
+ end, when completed.
+
+
+Also contains various documentation updates and code clean-ups.
+
+
+Fixes since v2.4
+----------------
+
+Unless otherwise noted, all the fixes since v2.4 in the maintenance
+track are contained in this release (see the maintenance releases'
+notes for details).
+
+ * We avoid setting core.worktree when the repository location is the
+ ".git" directory directly at the top level of the working tree, but
+ the code misdetected the case in which the working tree is at the
+ root level of the filesystem (which arguably is a silly thing to
+ do, but still valid).
+ (merge 84ccad8 jk/init-core-worktree-at-root later to maint).
+
+ * "git commit --date=now" or anything that relies on approxidate lost
+ the daylight-saving-time offset.
+ (merge f6e6362 jc/epochtime-wo-tz later to maint).
+
+ * Access to objects in repositories that borrow from another one on a
+ slow NFS server unnecessarily got more expensive due to recent code
+ becoming more cautious in a naive way not to lose objects to pruning.
+ (merge ee1c6c3 jk/prune-mtime later to maint).
+
+ * The codepaths that read .gitignore and .gitattributes files have been
+ taught that these files encoded in UTF-8 may have UTF-8 BOM marker at
+ the beginning; this makes it in line with what we do for configuration
+ files already.
+ (merge 27547e5 cn/bom-in-gitignore later to maint).
+
+ * a few helper scripts in the test suite did not report errors
+ correcty.
+ (merge de248e9 ep/fix-test-lib-functions-report later to maint).
+
+ * The default $HOME/.gitconfig file created upon "git config --global"
+ that edits it had incorrectly spelled user.name and user.email
+ entries in it.
+ (merge 7e11052 oh/fix-config-default-user-name-section later to maint).
+
+ * "git cat-file bl $blob" failed to barf even though there is no
+ object type that is "bl".
+ (merge b7994af jk/type-from-string-gently later to maint).
+
+ * The usual "git diff" when seeing a file turning into a directory
+ showed a patchset to remove the file and create all files in the
+ directory, but "git diff --no-index" simply refused to work. Also,
+ when asked to compare a file and a directory, imitate POSIX "diff"
+ and compare the file with the file with the same name in the
+ directory, instead of refusing to run.
+ (merge 0615173 jc/diff-no-index-d-f later to maint).
+
+ * Code cleanups and documentation updates.
+ (merge 0269f96 mm/usage-log-l-can-take-regex later to maint).
+ (merge 64f2589 nd/t1509-chroot-test later to maint).
+ (merge f86a374 sb/test-bitmap-free-at-end later to maint).
+ (merge 05bfc7d sb/line-log-plug-pairdiff-leak later to maint).
diff --git a/Documentation/blame-options.txt b/Documentation/blame-options.txt
index b299b59023..a09969ba08 100644
--- a/Documentation/blame-options.txt
+++ b/Documentation/blame-options.txt
@@ -10,7 +10,7 @@
Include additional statistics at the end of blame output.
-L <start>,<end>::
--L :<regex>::
+-L :<funcname>::
Annotate only the given line range. May be specified multiple times.
Overlapping ranges are allowed.
+
diff --git a/Documentation/config.txt b/Documentation/config.txt
index 2e5ceaf719..948b8b0e5c 100644
--- a/Documentation/config.txt
+++ b/Documentation/config.txt
@@ -453,6 +453,8 @@ false), while all other repositories are assumed to be bare (bare
core.worktree::
Set the path to the root of the working tree.
+ If GIT_COMMON_DIR environment variable is set, core.worktree
+ is ignored and not used for determining the root of working tree.
This can be overridden by the GIT_WORK_TREE environment
variable and the '--work-tree' command-line option.
The value can be an absolute path or relative to the path to
@@ -1274,6 +1276,13 @@ gc.pruneExpire::
"now" may be used to disable this grace period and always prune
unreachable objects immediately.
+gc.pruneWorktreesExpire::
+ When 'git gc' is run, it will call
+ 'prune --worktrees --expire 3.months.ago'.
+ Override the grace period with this config variable. The value
+ "now" may be used to disable the grace period and prune
+ $GIT_DIR/worktrees immediately.
+
gc.reflogExpire::
gc.<pattern>.reflogExpire::
'git reflog expire' removes reflog entries older than
diff --git a/Documentation/git-checkout.txt b/Documentation/git-checkout.txt
index d5041082e8..d263a5652f 100644
--- a/Documentation/git-checkout.txt
+++ b/Documentation/git-checkout.txt
@@ -225,6 +225,19 @@ This means that you can use `git checkout -p` to selectively discard
edits from your current working tree. See the ``Interactive Mode''
section of linkgit:git-add[1] to learn how to operate the `--patch` mode.
+--to=<path>::
+ Check out a branch in a separate working directory at
+ `<path>`. A new working directory is linked to the current
+ repository, sharing everything except working directory
+ specific files such as HEAD, index... See "MULTIPLE WORKING
+ TREES" section for more information.
+
+--ignore-other-worktrees::
+ `git checkout` refuses when the wanted ref is already checked
+ out by another worktree. This option makes it check the ref
+ out anyway. In other words, the ref can be held by more than one
+ worktree.
+
<branch>::
Branch to checkout; if it refers to a branch (i.e., a name that,
when prepended with "refs/heads/", is a valid ref), then that
@@ -388,6 +401,71 @@ $ git reflog -2 HEAD # or
$ git log -g -2 HEAD
------------
+MULTIPLE WORKING TREES
+----------------------
+
+A git repository can support multiple working trees, allowing you to check
+out more than one branch at a time. With `git checkout --to` a new working
+tree is associated with the repository. This new working tree is called a
+"linked working tree" as opposed to the "main working tree" prepared by "git
+init" or "git clone". A repository has one main working tree (if it's not a
+bare repository) and zero or more linked working trees.
+
+Each linked working tree has a private sub-directory in the repository's
+$GIT_DIR/worktrees directory. The private sub-directory's name is usually
+the base name of the linked working tree's path, possibly appended with a
+number to make it unique. For example, when `$GIT_DIR=/path/main/.git` the
+command `git checkout --to /path/other/test-next next` creates the linked
+working tree in `/path/other/test-next` and also creates a
+`$GIT_DIR/worktrees/test-next` directory (or `$GIT_DIR/worktrees/test-next1`
+if `test-next` is already taken).
+
+Within a linked working tree, $GIT_DIR is set to point to this private
+directory (e.g. `/path/main/.git/worktrees/test-next` in the example) and
+$GIT_COMMON_DIR is set to point back to the main working tree's $GIT_DIR
+(e.g. `/path/main/.git`). These settings are made in a `.git` file located at
+the top directory of the linked working tree.
+
+Path resolution via `git rev-parse --git-path` uses either
+$GIT_DIR or $GIT_COMMON_DIR depending on the path. For example, in the
+linked working tree `git rev-parse --git-path HEAD` returns
+`/path/main/.git/worktrees/test-next/HEAD` (not
+`/path/other/test-next/.git/HEAD` or `/path/main/.git/HEAD`) while `git
+rev-parse --git-path refs/heads/master` uses
+$GIT_COMMON_DIR and returns `/path/main/.git/refs/heads/master`,
+since refs are shared across all working trees.
+
+See linkgit:gitrepository-layout[5] for more information. The rule of
+thumb is do not make any assumption about whether a path belongs to
+$GIT_DIR or $GIT_COMMON_DIR when you need to directly access something
+inside $GIT_DIR. Use `git rev-parse --git-path` to get the final path.
+
+When you are done with a linked working tree you can simply delete it.
+The working tree's entry in the repository's $GIT_DIR/worktrees
+directory will eventually be removed automatically (see
+`gc.pruneworktreesexpire` in linkgit::git-config[1]), or you can run
+`git prune --worktrees` in the main or any linked working tree to
+clean up any stale entries in $GIT_DIR/worktrees.
+
+If you move a linked working directory to another file system, or
+within a file system that does not support hard links, you need to run
+at least one git command inside the linked working directory
+(e.g. `git status`) in order to update its entry in $GIT_DIR/worktrees
+so that it does not get automatically removed.
+
+To prevent a $GIT_DIR/worktrees entry from from being pruned (which
+can be useful in some situations, such as when the
+entry's working tree is stored on a portable device), add a file named
+'locked' to the entry's directory. The file contains the reason in
+plain text. For example, if a linked working tree's `.git` file points
+to `/path/main/.git/worktrees/test-next` then a file named
+`/path/main/.git/worktrees/test-next/locked` will prevent the
+`test-next` entry from being pruned. See
+linkgit:gitrepository-layout[5] for details.
+
+Multiple checkout support for submodules is incomplete. It is NOT
+recommended to make multiple checkouts of a superproject.
+
EXAMPLES
--------
diff --git a/Documentation/git-credential-store.txt b/Documentation/git-credential-store.txt
index bc97071e76..e3c8f276b1 100644
--- a/Documentation/git-credential-store.txt
+++ b/Documentation/git-credential-store.txt
@@ -31,10 +31,41 @@ OPTIONS
--file=<path>::
- Use `<path>` to store credentials. The file will have its
+ Use `<path>` to lookup and store credentials. The file will have its
filesystem permissions set to prevent other users on the system
from reading it, but will not be encrypted or otherwise
- protected. Defaults to `~/.git-credentials`.
+ protected. If not specified, credentials will be searched for from
+ `~/.git-credentials` and `$XDG_CONFIG_HOME/git/credentials`, and
+ credentials will be written to `~/.git-credentials` if it exists, or
+ `$XDG_CONFIG_HOME/git/credentials` if it exists and the former does
+ not. See also <<FILES>>.
+
+[[FILES]]
+FILES
+-----
+
+If not set explicitly with '--file', there are two files where
+git-credential-store will search for credentials in order of precedence:
+
+~/.git-credentials::
+ User-specific credentials file.
+
+$XDG_CONFIG_HOME/git/credentials::
+ Second user-specific credentials file. If '$XDG_CONFIG_HOME' is not set
+ or empty, `$HOME/.config/git/credentials` will be used. Any credentials
+ stored in this file will not be used if `~/.git-credentials` has a
+ matching credential as well. It is a good idea not to create this file
+ if you sometimes use older versions of Git that do not support it.
+
+For credential lookups, the files are read in the order given above, with the
+first matching credential found taking precedence over credentials found in
+files further down the list.
+
+Credential storage will by default write to the first existing file in the
+list. If none of these files exist, `~/.git-credentials` will be created and
+written to.
+
+When erasing credentials, matching credentials will be erased from all files.
EXAMPLES
--------
diff --git a/Documentation/git-log.txt b/Documentation/git-log.txt
index 18bc716a0c..5692945a0b 100644
--- a/Documentation/git-log.txt
+++ b/Documentation/git-log.txt
@@ -62,9 +62,9 @@ produced by `--stat`, etc.
output by allowing them to allocate space in advance.
-L <start>,<end>:<file>::
--L :<regex>:<file>::
+-L :<funcname>:<file>::
Trace the evolution of the line range given by "<start>,<end>"
- (or the funcname regex <regex>) within the <file>. You may
+ (or the function name regex <funcname>) within the <file>. You may
not give any pathspec limiters. This is currently limited to
a walk starting from a single revision, i.e., you may only
give zero or one positive revision arguments.
diff --git a/Documentation/git-prune.txt b/Documentation/git-prune.txt
index 7a493c80f7..1cf3bed4ab 100644
--- a/Documentation/git-prune.txt
+++ b/Documentation/git-prune.txt
@@ -48,6 +48,9 @@ OPTIONS
--expire <time>::
Only expire loose objects older than <time>.
+--worktrees::
+ Prune dead working tree information in $GIT_DIR/worktrees.
+
<head>...::
In addition to objects
reachable from any of our references, keep objects
diff --git a/Documentation/git-rev-parse.txt b/Documentation/git-rev-parse.txt
index d6de42f74e..97fc703f4c 100644
--- a/Documentation/git-rev-parse.txt
+++ b/Documentation/git-rev-parse.txt
@@ -216,6 +216,9 @@ If `$GIT_DIR` is not defined and the current directory
is not detected to lie in a Git repository or work tree
print a message to stderr and exit with nonzero status.
+--git-common-dir::
+ Show `$GIT_COMMON_DIR` if defined, else `$GIT_DIR`.
+
--is-inside-git-dir::
When the current working directory is below the repository
directory print "true", otherwise "false".
@@ -233,6 +236,13 @@ print a message to stderr and exit with nonzero status.
repository. If <path> is a gitfile then the resolved path
to the real repository is printed.
+--git-path <path>::
+ Resolve "$GIT_DIR/<path>" and takes other path relocation
+ variables such as $GIT_OBJECT_DIRECTORY,
+ $GIT_INDEX_FILE... into account. For example, if
+ $GIT_OBJECT_DIRECTORY is set to /foo/bar then "git rev-parse
+ --git-path objects/abc" returns /foo/bar/abc.
+
--show-cdup::
When the command is invoked from a subdirectory, show the
path of the top-level directory relative to the current
diff --git a/Documentation/git-status.txt b/Documentation/git-status.txt
index b3319f7c2a..5221f950ce 100644
--- a/Documentation/git-status.txt
+++ b/Documentation/git-status.txt
@@ -41,6 +41,14 @@ OPTIONS
--long::
Give the output in the long-format. This is the default.
+-v::
+--verbose::
+ In addition to the names of files that have been changed, also
+ show the textual changes that are staged to be committed
+ (i.e., like the output of `git diff --cached`). If `-v` is specified
+ twice, then also show the changes in the working tree that
+ have not yet been staged (i.e., like the output of `git diff`).
+
-u[<mode>]::
--untracked-files[=<mode>]::
Show untracked files.
diff --git a/Documentation/git-tag.txt b/Documentation/git-tag.txt
index bfba4ef078..f5b267e1e3 100644
--- a/Documentation/git-tag.txt
+++ b/Documentation/git-tag.txt
@@ -98,10 +98,13 @@ OPTIONS
--sort=<type>::
Sort in a specific order. Supported type is "refname"
(lexicographic order), "version:refname" or "v:refname" (tag
- names are treated as versions). Prepend "-" to reverse sort
- order. When this option is not given, the sort order defaults to the
- value configured for the 'tag.sort' variable if it exists, or
- lexicographic order otherwise. See linkgit:git-config[1].
+ names are treated as versions). The "version:refname" sort
+ order can also be affected by the
+ "versionsort.prereleaseSuffix" configuration variable. Prepend
+ "-" to reverse sort order. When this option is not given, the
+ sort order defaults to the value configured for the 'tag.sort'
+ variable if it exists, or lexicographic order otherwise. See
+ linkgit:git-config[1].
--column[=<options>]::
--no-column::
diff --git a/Documentation/git.txt b/Documentation/git.txt
index 59e8335055..2789da4f8f 100644
--- a/Documentation/git.txt
+++ b/Documentation/git.txt
@@ -43,9 +43,16 @@ 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.3.5/git.html[documentation for release 2.3.5]
+* link:v2.4.0/git.html[documentation for release 2.4]
* release notes for
+ link:RelNotes/2.4.0.txt[2.4].
+
+* link:v2.3.7/git.html[documentation for release 2.3.7]
+
+* release notes for
+ link:RelNotes/2.3.7.txt[2.3.7],
+ link:RelNotes/2.3.6.txt[2.3.6],
link:RelNotes/2.3.5.txt[2.3.5],
link:RelNotes/2.3.4.txt[2.3.4],
link:RelNotes/2.3.3.txt[2.3.3],
@@ -826,6 +833,15 @@ Git so take care if using Cogito etc.
an explicit repository directory set via 'GIT_DIR' or on the
command line.
+'GIT_COMMON_DIR'::
+ If this variable is set to a path, non-worktree files that are
+ normally in $GIT_DIR will be taken from this path
+ instead. Worktree-specific files such as HEAD or index are
+ taken from $GIT_DIR. See linkgit:gitrepository-layout[5] and
+ the section 'MULTIPLE CHECKOUT MODE' in linkgit:checkout[1]
+ details. This variable has lower precedence than other path
+ variables such as GIT_INDEX_FILE, GIT_OBJECT_DIRECTORY...
+
Git Commits
~~~~~~~~~~~
'GIT_AUTHOR_NAME'::
diff --git a/Documentation/gitk.txt b/Documentation/gitk.txt
index 7ae50aa26a..6ade002176 100644
--- a/Documentation/gitk.txt
+++ b/Documentation/gitk.txt
@@ -99,10 +99,10 @@ linkgit:git-rev-list[1] for a complete list.
detailed explanation.)
-L<start>,<end>:<file>::
--L:<regex>:<file>::
+-L:<funcname>:<file>::
Trace the evolution of the line range given by "<start>,<end>"
- (or the funcname regex <regex>) within the <file>. You may
+ (or the function name regex <funcname>) within the <file>. You may
not give any pathspec limiters. This is currently limited to
a walk starting from a single revision, i.e., you may only
give zero or one positive revision arguments.
diff --git a/Documentation/gitrepository-layout.txt b/Documentation/gitrepository-layout.txt
index 79653f3134..7173b38830 100644
--- a/Documentation/gitrepository-layout.txt
+++ b/Documentation/gitrepository-layout.txt
@@ -46,6 +46,9 @@ 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 object stores it
borrows from.
++
+This directory is ignored if $GIT_COMMON_DIR is set and
+"$GIT_COMMON_DIR/objects" will be used instead.
objects/[0-9a-f][0-9a-f]::
A newly created object is stored in its own file.
@@ -92,7 +95,8 @@ refs::
References are stored in subdirectories of this
directory. The 'git prune' command knows to preserve
objects reachable from refs found in this directory and
- its subdirectories.
+ its subdirectories. This directory is ignored if $GIT_COMMON_DIR
+ is set and "$GIT_COMMON_DIR/refs" will be used instead.
refs/heads/`name`::
records tip-of-the-tree commit objects of branch `name`
@@ -114,7 +118,8 @@ refs/replace/`<obj-sha1>`::
packed-refs::
records the same information as refs/heads/, refs/tags/,
and friends record in a more efficient way. See
- linkgit:git-pack-refs[1].
+ linkgit:git-pack-refs[1]. This file is ignored if $GIT_COMMON_DIR
+ is set and "$GIT_COMMON_DIR/packed-refs" will be used instead.
HEAD::
A symref (see glossary) to the `refs/heads/` namespace
@@ -133,6 +138,11 @@ being a symref to point at the current branch. Such a state
is often called 'detached HEAD.' See linkgit:git-checkout[1]
for details.
+config::
+ Repository specific configuration file. This file is ignored
+ if $GIT_COMMON_DIR is set and "$GIT_COMMON_DIR/config" will be
+ used instead.
+
branches::
A slightly deprecated way to store shorthands to be used
to specify a URL to 'git fetch', 'git pull' and 'git push'.
@@ -140,7 +150,10 @@ branches::
'name' can be given to these commands in place of
'repository' argument. See the REMOTES section in
linkgit:git-fetch[1] for details. This mechanism is legacy
- and not likely to be found in modern repositories.
+ and not likely to be found in modern repositories. This
+ directory is ignored if $GIT_COMMON_DIR is set and
+ "$GIT_COMMON_DIR/branches" will be used instead.
+
hooks::
Hooks are customization scripts used by various Git
@@ -149,7 +162,9 @@ hooks::
default. To enable, the `.sample` suffix has to be
removed from the filename by renaming.
Read linkgit:githooks[5] for more details about
- each hook.
+ each hook. This directory is ignored if $GIT_COMMON_DIR is set
+ and "$GIT_COMMON_DIR/hooks" will be used instead.
+
index::
The current index file for the repository. It is
@@ -161,7 +176,8 @@ sharedindex.<SHA-1>::
info::
Additional information about the repository is recorded
- in this directory.
+ in this directory. This directory is ignored if $GIT_COMMON_DIR
+ is set and "$GIT_COMMON_DIR/index" will be used instead.
info/refs::
This file helps dumb transports discover what refs are
@@ -201,12 +217,15 @@ remotes::
when interacting with remote repositories via 'git fetch',
'git pull' and 'git push' commands. See the REMOTES section
in linkgit:git-fetch[1] for details. This mechanism is legacy
- and not likely to be found in modern repositories.
+ and not likely to be found in modern repositories. This
+ directory is ignored if $GIT_COMMON_DIR is set and
+ "$GIT_COMMON_DIR/remotes" will be used instead.
logs::
- Records of changes made to refs are stored in this
- directory. See linkgit:git-update-ref[1]
- for more information.
+ Records of changes made to refs are stored in this directory.
+ See linkgit:git-update-ref[1] for more information. This
+ directory is ignored if $GIT_COMMON_DIR is set and
+ "$GIT_COMMON_DIR/logs" will be used instead.
logs/refs/heads/`name`::
Records all changes made to the branch tip named `name`.
@@ -217,11 +236,46 @@ logs/refs/tags/`name`::
shallow::
This is similar to `info/grafts` but is internally used
and maintained by shallow clone mechanism. See `--depth`
- option to linkgit:git-clone[1] and linkgit:git-fetch[1].
+ option to linkgit:git-clone[1] and linkgit:git-fetch[1]. This
+ file is ignored if $GIT_COMMON_DIR is set and
+ "$GIT_COMMON_DIR/shallow" will be used instead.
+
+commondir::
+ If this file exists, $GIT_COMMON_DIR (see linkgit:git[1]) will
+ be set to the path specified in this file if it is not
+ explicitly set. If the specified path is relative, it is
+ relative to $GIT_DIR. The repository with commondir is
+ incomplete without the repository pointed by "commondir".
modules::
Contains the git-repositories of the submodules.
+worktrees::
+ Contains worktree specific information of linked
+ checkouts. Each subdirectory contains the worktree-related
+ part of a linked checkout. This directory is ignored if
+ $GIT_COMMON_DIR is set and "$GIT_COMMON_DIR/worktrees" will be
+ used instead.
+
+worktrees/<id>/gitdir::
+ A text file containing the absolute path back to the .git file
+ that points to here. This is used to check if the linked
+ repository has been manually removed and there is no need to
+ keep this directory any more. mtime of this file should be
+ updated every time the linked repository is accessed.
+
+worktrees/<id>/locked::
+ If this file exists, the linked repository may be on a
+ portable device and not available. It does not mean that the
+ linked repository is gone and `worktrees/<id>` could be
+ removed. The file's content contains a reason string on why
+ the repository is locked.
+
+worktrees/<id>/link::
+ If this file exists, it is a hard link to the linked .git
+ file. It is used to detect if the linked repository is
+ manually removed.
+
SEE ALSO
--------
linkgit:git-init[1],
diff --git a/Documentation/line-range-format.txt b/Documentation/line-range-format.txt
index d7f26039ca..829676ff98 100644
--- a/Documentation/line-range-format.txt
+++ b/Documentation/line-range-format.txt
@@ -22,8 +22,9 @@ This is only valid for <end> and will specify a number
of lines before or after the line given by <start>.
+
-If ``:<regex>'' is given in place of <start> and <end>, it denotes the range
-from the first funcname line that matches <regex>, up to the next
-funcname line. ``:<regex>'' searches from the end of the previous `-L` range,
-if any, otherwise from the start of file.
-``^:<regex>'' searches from the start of file.
+If ``:<funcname>'' is given in place of <start> and <end>, it is a
+regular expression that denotes the range from the first funcname line
+that matches <funcname>, up to the next funcname line. ``:<funcname>''
+searches from the end of the previous `-L` range, if any, otherwise
+from the start of file. ``^:<funcname>'' searches from the start of
+file.
diff --git a/Documentation/rev-list-options.txt b/Documentation/rev-list-options.txt
index f620ee4e1c..77ac439234 100644
--- a/Documentation/rev-list-options.txt
+++ b/Documentation/rev-list-options.txt
@@ -59,8 +59,8 @@ endif::git-rev-list[]
matches any of the given patterns are chosen (but see
`--all-match`).
+
-When `--show-notes` is in effect, the message from the notes as
-if it is part of the log message.
+When `--show-notes` is in effect, the message from the notes is
+matched as if it were part of the log message.
--all-match::
Limit the commits output to ones that match all given `--grep`,