summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Documentation/CodingGuidelines11
-rw-r--r--Documentation/Makefile2
-rw-r--r--Documentation/RelNotes/2.3.0.txt40
-rw-r--r--Documentation/config.txt32
-rw-r--r--Documentation/git-add.txt2
-rw-r--r--Documentation/git-p4.txt6
-rw-r--r--Documentation/git-push.txt7
-rw-r--r--Documentation/git-send-email.txt13
-rw-r--r--Documentation/git-send-pack.txt7
-rw-r--r--Documentation/git.txt5
-rw-r--r--Documentation/githooks.txt30
-rw-r--r--Documentation/pretty-options.txt10
-rw-r--r--Documentation/rev-list-options.txt4
-rw-r--r--Documentation/technical/protocol-capabilities.txt13
-rwxr-xr-xGIT-VERSION-GEN2
-rw-r--r--Makefile29
-rw-r--r--builtin/apply.c15
-rw-r--r--builtin/blame.c12
-rw-r--r--builtin/cat-file.c6
-rw-r--r--builtin/commit.c12
-rw-r--r--builtin/for-each-ref.c11
-rw-r--r--builtin/log.c6
-rw-r--r--builtin/push.c5
-rw-r--r--builtin/receive-pack.c235
-rw-r--r--builtin/reflog.c259
-rw-r--r--builtin/remote.c4
-rw-r--r--builtin/send-pack.c6
-rw-r--r--builtin/show-branch.c5
-rw-r--r--color.c1
-rw-r--r--commit.h1
-rw-r--r--config.c2
-rw-r--r--config.mak.uname1
-rw-r--r--configure.ac39
-rw-r--r--contrib/completion/git-completion.bash3
-rw-r--r--contrib/completion/git-prompt.sh32
-rw-r--r--contrib/subtree/git-subtree.txt194
-rw-r--r--gettext.h24
-rw-r--r--git-compat-util.h12
-rwxr-xr-xgit-p4.py22
-rwxr-xr-xgit-svn.perl6
-rw-r--r--git.c3
-rw-r--r--grep.c4
-rw-r--r--http-push.c3
-rw-r--r--http.c74
-rw-r--r--http.h2
-rw-r--r--imap-send.c6
-rw-r--r--line-log.c2
-rw-r--r--line-log.h2
-rw-r--r--notes.c2
-rw-r--r--pack-bitmap.c30
-rw-r--r--pack-bitmap.h1
-rw-r--r--perl/Git/SVN.pm2
-rw-r--r--po/ca.po3425
-rw-r--r--po/de.po1880
-rw-r--r--po/fr.po1813
-rw-r--r--po/git.pot1771
-rw-r--r--po/sv.po1815
-rw-r--r--po/vi.po2139
-rw-r--r--po/zh_CN.po1902
-rw-r--r--prompt.c5
-rw-r--r--prompt.h1
-rw-r--r--refs.c266
-rw-r--r--refs.h75
-rw-r--r--remote.c6
-rw-r--r--remote.h4
-rw-r--r--rerere.c16
-rw-r--r--revision.c110
-rw-r--r--revision.h14
-rw-r--r--send-pack.c65
-rw-r--r--send-pack.h3
-rw-r--r--server-info.c2
-rw-r--r--shallow.c4
-rw-r--r--t/lib-terminal.sh2
-rwxr-xr-xt/t1050-large.sh12
-rwxr-xr-xt/t1301-shared-repo.sh11
-rwxr-xr-xt/t3301-notes.sh2
-rwxr-xr-xt/t4026-color.sh4
-rwxr-xr-xt/t4202-log.sh15
-rwxr-xr-xt/t4255-am-submodule.sh72
-rwxr-xr-xt/t5505-remote.sh5
-rwxr-xr-xt/t5516-fetch-push.sh63
-rwxr-xr-xt/t5543-atomic-push.sh194
-rwxr-xr-xt/t6300-for-each-ref.sh13
-rwxr-xr-xt/t9817-git-p4-exclude.sh71
-rwxr-xr-xt/t9903-bash-prompt.sh106
-rw-r--r--t/test-lib.sh92
-rw-r--r--trace.c2
-rw-r--r--transport.c5
-rw-r--r--transport.h1
-rw-r--r--urlmatch.c6
-rw-r--r--urlmatch.h1
-rw-r--r--walker.c2
92 files changed, 9187 insertions, 8065 deletions
diff --git a/Documentation/CodingGuidelines b/Documentation/CodingGuidelines
index ad3b2adb60..49089de5c0 100644
--- a/Documentation/CodingGuidelines
+++ b/Documentation/CodingGuidelines
@@ -328,9 +328,14 @@ For C programs:
- When you come up with an API, document it.
- - The first #include in C files, except in platform specific
- compat/ implementations, should be git-compat-util.h or another
- header file that includes it, such as cache.h or builtin.h.
+ - The first #include in C files, except in platform specific compat/
+ implementations, must be either "git-compat-util.h", "cache.h" or
+ "builtin.h". You do not have to include more than one of these.
+
+ - A C file must directly include the header files that declare the
+ functions and the types it uses, except for the functions and types
+ that are made available to it by including one of the header files
+ it must include by the previous rule.
- If you are planning a new command, consider writing it in shell
or perl first, so that changes in semantics can be easily
diff --git a/Documentation/Makefile b/Documentation/Makefile
index 2f6b6aabd7..3e39e2815b 100644
--- a/Documentation/Makefile
+++ b/Documentation/Makefile
@@ -103,7 +103,7 @@ ASCIIDOC_HTML = xhtml11
ASCIIDOC_DOCBOOK = docbook
ASCIIDOC_CONF = -f asciidoc.conf
ASCIIDOC_COMMON = $(ASCIIDOC) $(ASCIIDOC_EXTRA) $(ASCIIDOC_CONF) \
- -agit-version=$(GIT_VERSION)
+ -agit_version=$(GIT_VERSION)
TXT_TO_HTML = $(ASCIIDOC_COMMON) -b $(ASCIIDOC_HTML)
TXT_TO_XML = $(ASCIIDOC_COMMON) -b $(ASCIIDOC_DOCBOOK)
MANPAGE_XSL = manpage-normal.xsl
diff --git a/Documentation/RelNotes/2.3.0.txt b/Documentation/RelNotes/2.3.0.txt
index 72db8d211f..e3c639c840 100644
--- a/Documentation/RelNotes/2.3.0.txt
+++ b/Documentation/RelNotes/2.3.0.txt
@@ -1,6 +1,12 @@
Git v2.3 Release Notes
======================
+This one ended up to be a release with lots of small corrections and
+improvements without big uncomfortably exciting features. The recent
+security fix that went to 2.2.1 and older maintenance tracks is also
+contained in this update.
+
+
Updates since v2.2
------------------
@@ -9,6 +15,10 @@ Ports
* Recent gcc toolchain on Cygwin started throwing compilation warning,
which has been squelched.
+ * A few updates to build on platforms that lack tv_nsec,
+ clock_gettime, CLOCK_MONOTONIC and HMAC_CTX_cleanup (e.g. older
+ RHEL) have been added.
+
UI, Workflows & Features
@@ -66,11 +76,21 @@ UI, Workflows & Features
* "git imap-send" learned to take "-v" (verbose) and "-q" (quiet)
command line options.
+ * "git remote add $name $URL" is now allowed when "url.$URL.insteadOf"
+ is already defined.
+
* "git imap-send" now can be built to use cURL library to talk to
IMAP servers (if the library is recent enough, of course).
This allows you to use authenticate method other than CRAM-MD5,
among other things.
+ * "git imap-send" now allows GIT_CURL_VERBOSE environment variable to
+ control the verbosity when talking via the cURL library.
+
+ * The prompt script (in contrib/) learned to optionally hide prompt
+ when in an ignored directory by setting GIT_PS1_HIDE_IF_PWD_IGNORED
+ shell variable.
+
Performance, Internal Implementation, Development Support etc.
@@ -122,6 +142,11 @@ Unless otherwise noted, all the fixes since v2.2 in the maintenance
track are contained in this release (see the maintenance releases'
notes for details).
+ * "git http-push" over WebDAV (aka dumb http-push) was broken in
+ v2.2.2 when parsing a symbolic ref, resulting in a bogus request
+ that gets rejected by recent versions of cURL library.
+ (merge f6786c8 jk/http-push-symref-fix later to maint).
+
* The logic in "git bisect bad HEAD" etc. to avoid forcing the test
of the common ancestor of bad and good commits was broken.
(merge 07913d5 cc/bisect-rev-parsing later to maint).
@@ -139,8 +164,7 @@ notes for details).
the last command in the prompt, e.g. PS1='$(__git_ps1) $? ', did
not work well, because the helper function stomped on the exit
status.
- (merge eb443e3 tf/prompt-preserve-exit-status later to maint).
-
+ (merge 6babe76 tf/prompt-preserve-exit-status later to maint).
* Recent update to "git commit" broke amending an existing commit
with bogus author/committer lines without a valid e-mail address.
@@ -249,6 +273,10 @@ notes for details).
configuration file .git/config with x-bit by mistake.
(merge 1f32ecf mh/config-flip-xbit-back-after-checking later to maint).
+ * Recent update in Git 2.2 started creating objects/info/packs and
+ info/refs files with permission bits tighter than user's umask.
+ (merge d91175b jk/prune-packed-server-info later to maint).
+
* Git 2.0 was supposed to make the "simple" mode for the default of
"git push", but it didn't.
(merge 00a6fa0 jk/push-simple later to maint).
@@ -262,3 +290,11 @@ notes for details).
* The build procedure did not bother fixing perl and python scripts
when NO_PERL and NO_PYTHON build-time configuration changed.
(merge ca2051d jk/rebuild-perl-scripts-with-no-perl-seting-change later to maint).
+
+ * The usage string of "git log" command was marked incorrectly for
+ l10n.
+ (merge e66dc0c km/log-usage-string-i18n later to maint).
+
+ * "git for-each-ref" mishandled --format="%(upstream:track)" when a
+ branch is marked to have forked from a non-existing branch.
+ (merge b6160d9 rc/for-each-ref-tracking later to maint).
diff --git a/Documentation/config.txt b/Documentation/config.txt
index cc887b1279..ae6791db12 100644
--- a/Documentation/config.txt
+++ b/Documentation/config.txt
@@ -375,14 +375,19 @@ This is useful for excluding servers inside a firewall from
proxy use, while defaulting to a common proxy for external domains.
core.ignoreStat::
- If true, commands which modify both the working tree and the index
- will mark the updated paths with the "assume unchanged" bit in the
- index. These marked files are then assumed to stay unchanged in the
- working tree, until you mark them otherwise manually - Git will not
- detect the file changes by lstat() calls. This is useful on systems
- where those are very slow, such as Microsoft Windows.
- See linkgit:git-update-index[1].
- False by default.
+ If true, Git will avoid using lstat() calls to detect if files have
+ changed by setting the "assume-unchanged" bit for those tracked files
+ which it has updated identically in both the index and working tree.
++
+When files are modified outside of Git, the user will need to stage
+the modified files explicitly (e.g. see 'Examples' section in
+linkgit:git-update-index[1]).
+Git will not normally detect changes to those files.
++
+This is useful on systems where lstat() calls are very slow, such as
+CIFS/Microsoft Windows.
++
+False by default.
core.preferSymlinkRefs::
Instead of the default "symref" format for HEAD
@@ -2089,6 +2094,11 @@ rebase.autostash::
successful rebase might result in non-trivial conflicts.
Defaults to false.
+receive.advertiseatomic::
+ By default, git-receive-pack will advertise the atomic push
+ capability to its clients. If you don't want to this capability
+ to be advertised, set this variable to false.
+
receive.autogc::
By default, git-receive-pack will run "git-gc --auto" after
receiving data from git-push and updating refs. You can stop
@@ -2148,11 +2158,15 @@ receive.denyCurrentBranch::
message. Defaults to "refuse".
+
Another option is "updateInstead" which will update the working
-directory (must be clean) if pushing into the current branch. This option is
+tree if pushing into the current branch. This option is
intended for synchronizing working directories when one side is not easily
accessible via interactive ssh (e.g. a live web site, hence the requirement
that the working directory be clean). This mode also comes in handy when
developing inside a VM to test and fix code on different Operating Systems.
++
+By default, "updateInstead" will refuse the push if the working tree or
+the index have any difference from the HEAD, but the `push-to-checkout`
+hook can be used to customize this. See linkgit:githooks[5].
receive.denyNonFastForwards::
If set to true, git-receive-pack will deny a ref update which is
diff --git a/Documentation/git-add.txt b/Documentation/git-add.txt
index 9631526110..1c74907dd4 100644
--- a/Documentation/git-add.txt
+++ b/Documentation/git-add.txt
@@ -8,7 +8,7 @@ git-add - Add file contents to the index
SYNOPSIS
--------
[verse]
-'git add' [-n] [-v] [--force | -f] [--interactive | -i] [--patch | -p]
+'git add' [--verbose | -v] [--dry-run | -n] [--force | -f] [--interactive | -i] [--patch | -p]
[--edit | -e] [--[no-]all | --[no-]ignore-removal | [--update | -u]]
[--intent-to-add | -N] [--refresh] [--ignore-errors] [--ignore-missing]
[--] [<pathspec>...]
diff --git a/Documentation/git-p4.txt b/Documentation/git-p4.txt
index 6ab5f9497a..a1664b9f68 100644
--- a/Documentation/git-p4.txt
+++ b/Documentation/git-p4.txt
@@ -241,6 +241,9 @@ Git repository:
Use a client spec to find the list of interesting files in p4.
See the "CLIENT SPEC" section below.
+-/ <path>::
+ Exclude selected depot paths when cloning or syncing.
+
Clone options
~~~~~~~~~~~~~
These options can be used in an initial 'clone', along with the 'sync'
@@ -254,9 +257,6 @@ options described above.
--bare::
Perform a bare clone. See linkgit:git-clone[1].
--/ <path>::
- Exclude selected depot paths when cloning.
-
Submit options
~~~~~~~~~~~~~~
These options can be used to modify 'git p4 submit' behavior.
diff --git a/Documentation/git-push.txt b/Documentation/git-push.txt
index b17283ab7a..ea9757692a 100644
--- a/Documentation/git-push.txt
+++ b/Documentation/git-push.txt
@@ -9,7 +9,7 @@ git-push - Update remote refs along with associated objects
SYNOPSIS
--------
[verse]
-'git push' [--all | --mirror | --tags] [--follow-tags] [-n | --dry-run] [--receive-pack=<git-receive-pack>]
+'git push' [--all | --mirror | --tags] [--follow-tags] [--atomic] [-n | --dry-run] [--receive-pack=<git-receive-pack>]
[--repo=<repository>] [-f | --force] [--prune] [-v | --verbose]
[-u | --set-upstream] [--signed]
[--force-with-lease[=<refname>[:<expect>]]]
@@ -136,6 +136,11 @@ already exists on the remote side.
logged. See linkgit:git-receive-pack[1] for the details
on the receiving end.
+--[no-]atomic::
+ Use an atomic transaction on the remote side if available.
+ Either all refs are updated, or on error, no refs are updated.
+ If the server does not support atomic pushes the push will fail.
+
--receive-pack=<git-receive-pack>::
--exec=<git-receive-pack>::
Path to the 'git-receive-pack' program on the remote
diff --git a/Documentation/git-send-email.txt b/Documentation/git-send-email.txt
index e04849e396..f248a8665e 100644
--- a/Documentation/git-send-email.txt
+++ b/Documentation/git-send-email.txt
@@ -214,10 +214,15 @@ must be used for each option.
Legacy alias for '--smtp-encryption ssl'.
--smtp-ssl-cert-path::
- Path to ca-certificates (either a directory or a single file).
- Set it to an empty string to disable certificate verification.
- Defaults to the value set to the 'sendemail.smtpsslcertpath'
- configuration variable, if set, or `/etc/ssl/certs` otherwise.
+ Path to a store of trusted CA certificates for SMTP SSL/TLS
+ certificate validation (either a directory that has been processed
+ by 'c_rehash', or a single file containing one or more PEM format
+ certificates concatenated together: see verify(1) -CAfile and
+ -CApath for more information on these). Set it to an empty string
+ to disable certificate verification. Defaults to the value of the
+ 'sendemail.smtpsslcertpath' configuration variable, if s