OSDN Git Service
Junio C Hamano [Fri, 17 Mar 2017 17:00:15 +0000 (10:00 -0700)]
Makefile: make DC_SHA1 the default
We used to use the SHA1 implementation from the OpenSSL library by
default. As we are trying to be careful against collision attacks
after the recent "shattered" announcement, switch the default to
encourage people to use DC_SHA1 implementation instead. Those who
want to use the implementation from OpenSSL can explicitly ask for
it by OPENSSL_SHA1=YesPlease when running "make".
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Jeff King [Thu, 16 Mar 2017 22:09:36 +0000 (18:09 -0400)]
t0013: add a basic sha1 collision detection test
We don't actually have a Git-object collision, so the best
we can do is to run one of the shattered PDFs through
test-sha1. This should trigger the collision check and die.
In a sense this isn't really checking anything that the
upstream sha1collisiondetection project doesn't cover
already. But it at least makes sure that our build correctly
uses the library.
Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Jeff King [Thu, 16 Mar 2017 22:09:12 +0000 (18:09 -0400)]
Makefile: add DC_SHA1 knob
This knob lets you use the sha1dc implementation from:
https://github.com/cr-marcstevens/sha1collisiondetection
which can detect certain types of collision attacks (even
when we only see half of the colliding pair). So it
mitigates any attack which consists of getting the "good"
half of a collision into a trusted repository, and then
later replacing it with the "bad" half. The "good" half is
rejected by the victim's version of Git (and even if they
run an old version of Git, any sha1dc-enabled git will
complain loudly if it ever has to interact with the object).
The big downside is that it's slower than either the openssl
or block-sha1 implementations.
Here are some timings based off of linux.git:
- compute sha1 over whole packfile
sha1dc: 3.580s
blk-sha1: 2.046s (-43%)
openssl: 1.335s (-62%)
- rev-list --all --objects
sha1dc: 33.512s
blk-sha1: 33.514s (+0.0%)
openssl: 33.650s (+0.4%)
- git log --no-merges -10000 -p
sha1dc: 8.124s
blk-sha1: 7.986s (-1.6%)
openssl: 8.203s (+0.9%)
- index-pack --verify
sha1dc: 4m19s
blk-sha1: 2m57s (-32%)
openssl: 2m19s (-42%)
So overall the sha1 computation with collision detection is
about 1.75x slower than block-sha1, and 2.7x slower than
sha1. But of course most operations do more than just sha1.
Normal object access isn't really slowed at all (both the
+/- changes there are well within the run-to-run noise); any
changes are drowned out by the other work Git is doing.
The most-affected operation is `index-pack --verify`, which
is essentially just computing the sha1 on every object. This
is similar to the `index-pack` invocation that the receiver
of a push or fetch would perform. So clearly there's some
extra CPU load here.
There will also be some latency for the user, though keep in
mind that such an operation will generally be network bound
(this is about a 1.2GB packfile). Some of that extra CPU is
"free" in the sense that we use it while the pack is
streaming in anyway. But most of it comes during the
delta-resolution phase, after the whole pack has been
received. So we can imagine that for this (quite large)
push, the user might have to wait an extra 100 seconds over
openssl (which is what we use now). If we assume they can
push to us at 20Mbit/s, that's 480s for a 1.2GB pack, which
is only 20% slower.
Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Jeff King [Thu, 16 Mar 2017 22:08:49 +0000 (18:08 -0400)]
sha1dc: disable safe_hash feature
The safe_hash feature is designed to make sha1dc a drop-in
replacement for sha1, where colliding entries will get a
permuted hash to un-collide them. However, since we're
handling the collision case ourselves, this isn't helpful
(and is actually harmful, as it means you get the wrong
object id if you want to show it in a log message).
Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Jeff King [Thu, 16 Mar 2017 22:08:10 +0000 (18:08 -0400)]
sha1dc: adjust header includes for git
We can replace system includes with git-compat-util.h or
cache.h (and should make sure it is included first in all C
files). And we can drop includes from headers entirely, as
every C file should include git-compat-util.h itself.
We will add in new include guards around the header files,
though (otherwise you get into trouble including both
sha1dc/sha1.h and cache.h).
And finally, we'll use the full "sha1dc/" path for including
related files. This isn't strictly necessary, but makes the
expected resolution more obvious.
Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Jeff King [Thu, 16 Mar 2017 22:07:31 +0000 (18:07 -0400)]
sha1dc: add collision-detecting sha1 implementation
This is pulled straight from:
https://github.com/cr-marcstevens/sha1collisiondetection
with no modifications yet (though I've pulled in only the
subset of files necessary for Git to use).
This is commit
007905a93c973f55b2daed6585f9f6c23545bf66.
Further updates can be done like:
git checkout -b vendor-sha1dc $this_commit
cp /path/to/sha1dc/{LICENSE.txt,lib/*} sha1dc/
git add -A sha1dc
git commit -m "update sha1dc"
git checkout -b update-sha1dc origin
git merge vendor-sha1dc
Thanks to both Marc and Dan for making the code fit our
needs by doing both optimization work, cutting down on the
object size, and doing some syntactic changes to work better
with git. And to Linus for kicking off the "diet" work that
removed some of the unused code.
The license of the sha1dc code is the MIT license, which is
obviously compatible with the GPLv2 of git.
Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
brian m. carlson [Sat, 11 Mar 2017 22:28:18 +0000 (22:28 +0000)]
hash.h: move SHA-1 implementation selection into a header file
Many developers use functionality in their editors that allows for quick
syntax checks, including warning about questionable constructs. This
functionality allows rapid development with fewer errors. However, such
functionality generally does not allow the specification of
project-specific defines or command-line options.
Since the SHA1_HEADER include is not defined in such a case,
developers see spurious errors when using these tools. Furthermore,
there are known implementations of "cc" whose '#include' is unhappy
with this construct.
Instead of using SHA1_HEADER, create a hash.h header and use #if
and #elif to select the desired header. Have the Makefile pass an
appropriate option to help the header select the right implementation to
use.
[jc: make BLK_SHA1 the fallback default as discussed on list,
e.g. <
20170314201424.vccij5z2ortq4a4o@sigill.intra.peff.net>; also
remove SHA1_HEADER and SHA1_HEADER_SQ that are no longer used].
Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Reviewed-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Fri, 24 Feb 2017 18:49:58 +0000 (10:49 -0800)]
Git 2.12
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Fri, 24 Feb 2017 18:48:10 +0000 (10:48 -0800)]
Merge branch 'ps/doc-gc-aggressive-depth-update'
Doc update.
* ps/doc-gc-aggressive-depth-update:
docs/git-gc: fix default value for `--aggressiveDepth`
Junio C Hamano [Fri, 24 Feb 2017 18:48:10 +0000 (10:48 -0800)]
Merge branch 'bc/worktree-doc-fix-detached'
Doc update.
* bc/worktree-doc-fix-detached:
Documentation: correctly spell git worktree --detach
Junio C Hamano [Fri, 24 Feb 2017 18:48:09 +0000 (10:48 -0800)]
Merge branch 'dr/doc-check-ref-format-normalize'
Doc update.
* dr/doc-check-ref-format-normalize:
git-check-ref-format: clarify documentation for --normalize
Junio C Hamano [Fri, 24 Feb 2017 18:48:09 +0000 (10:48 -0800)]
Merge branch 'gp/document-dotfiles-in-templates-are-not-copied'
Doc update.
* gp/document-dotfiles-in-templates-are-not-copied:
init: document dotfiles exclusion on template copy
Junio C Hamano [Fri, 24 Feb 2017 18:48:08 +0000 (10:48 -0800)]
Merge branch 'rt/align-add-i-help-text'
Doc update.
* rt/align-add-i-help-text:
git add -i: replace \t with blanks in the help message
Junio C Hamano [Fri, 24 Feb 2017 18:48:07 +0000 (10:48 -0800)]
Merge branch 'bc/blame-doc-fix'
Doc update.
* bc/blame-doc-fix:
Documentation: use brackets for optional arguments
Patrick Steinhardt [Fri, 24 Feb 2017 08:46:45 +0000 (09:46 +0100)]
docs/git-gc: fix default value for `--aggressiveDepth`
In commit
07e7dbf0d (gc: default aggressive depth to 50, 2016-08-11),
the default aggressive depth of git-gc has been changed to 50. While
git-config(1) has been updated to represent the new default value,
git-gc(1) still mentions the old value. This patch fixes it.
Signed-off-by: Patrick Steinhardt <ps@pks.im>
Reviewed-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Fri, 24 Feb 2017 17:55:41 +0000 (09:55 -0800)]
Merge tag 'l10n-2.12.0-rnd2' of git://github.com/git-l10n/git-po
l10n-2.12.0-rnd2
* tag 'l10n-2.12.0-rnd2' of git://github.com/git-l10n/git-po: (22 commits)
l10n: zh_CN: for git v2.12.0 l10n round 2
l10n: Update Catalan translation
l10n: pt_PT: update Portuguese tranlation
l10n: sv.po: Update Swedish translation (3139t0f0u)
l10n: de.po: translate 241 messages
l10n: ko.po: Update Korean translation
l10n: vi.po (3139t): Updated 2 new messages for rc1
l10n: fr.po: v2.12.0 round 2 3139t
l10n: git.pot: v2.12.0 round 2 (2 new)
l10n: vi.po: Updated Vietnamese translation (3137t)
l10n: update Catalan translation
l10n: sv.po: Update Swedish translation (3137t0f0u)
l10n: fr.po: v2.11-rc0 first round
l10n: ko.po: Update Korean translation
l10n: fr.po: Fix a typo in the French translation
l10n: fr.po: Remove gender specific adjectives
l10n: fr.po: Fix typos
l10n: git.pot: v2.12.0 round 1 (239 new, 15 removed)
l10n: bg: Updated Bulgarian translation (2913t+0f+0u)
l10n: fixes to Catalan translation
...
Jiang Xin [Fri, 27 Jan 2017 14:50:57 +0000 (22:50 +0800)]
l10n: zh_CN: for git v2.12.0 l10n round 2
Translate 241 messages (3139t0f0u) for git v2.12.0-rc1.
Signed-off-by: Jiang Xin <worldhello.net@gmail.com>
Jordi Mas [Tue, 21 Feb 2017 17:32:29 +0000 (18:32 +0100)]
l10n: Update Catalan translation
Signed-off-by: Jordi Mas <jmas@softcatala.org>
Vasco Almeida [Sun, 5 Feb 2017 18:43:34 +0000 (17:43 -0100)]
l10n: pt_PT: update Portuguese tranlation
Signed-off-by: Vasco Almeida <vascomalmeida@sapo.pt>
Ralf Thielow [Wed, 22 Feb 2017 18:46:27 +0000 (19:46 +0100)]
git add -i: replace \t with blanks in the help message
Within the help message of 'git add -i', the 'diff' command uses one
tab character and blanks to create the space between the name and the
description while the others use blanks only. So if the tab size is
not at 4 characters, this description will not be in range.
Replace the tab character with blanks.
Signed-off-by: Ralf Thielow <ralf.thielow@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
brian m. carlson [Wed, 22 Feb 2017 12:25:46 +0000 (12:25 +0000)]
Documentation: use brackets for optional arguments
The documentation for git blame used vertical bars for optional
arguments to -M and -C, which is unusual and potentially confusing.
Since most man pages use brackets for optional items, and that's
consistent with how we document the same options for git diff and
friends, use brackets here, too.
Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
brian m. carlson [Wed, 22 Feb 2017 12:34:42 +0000 (12:34 +0000)]
Documentation: correctly spell git worktree --detach
The option is “--detach”, but we accidentally spelled it “--detached” at
one point in the man page.
Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
Reported-by: Casey Rodarmor <casey@rodarmor.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Damien Regad [Sun, 19 Feb 2017 22:32:32 +0000 (23:32 +0100)]
git-check-ref-format: clarify documentation for --normalize
Use of 'iff' may be confusing to people not familiar with this term.
Improving the --normalize option's documentation to remove the use of
'iff', and clearly describe what happens when the condition is not met.
Signed-off-by: Damien Regad <dregad@mantisbt.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Jiang Xin [Tue, 21 Feb 2017 16:06:44 +0000 (00:06 +0800)]
Merge branch 'master' of git://github.com/nafmo/git-l10n-sv
* 'master' of git://github.com/nafmo/git-l10n-sv:
l10n: sv.po: Update Swedish translation (3139t0f0u)
Junio C Hamano [Tue, 21 Feb 2017 06:01:59 +0000 (22:01 -0800)]
Merge branch 'svn-escape-backslash' of git://bogomips.org/git-svn
* 'svn-escape-backslash' of git://bogomips.org/git-svn:
git-svn: escape backslashes in refnames
Peter Krefting [Mon, 20 Feb 2017 18:40:11 +0000 (19:40 +0100)]
l10n: sv.po: Update Swedish translation (3139t0f0u)
Signed-off-by: Peter Krefting <peter@softwolves.pp.se>
Ralf Thielow [Mon, 20 Feb 2017 17:40:36 +0000 (18:40 +0100)]
l10n: de.po: translate 241 messages
Translate 241 messages came from git.pot update in
673bfad09
(l10n: git.pot: v2.12.0 round 1 (239 new, 15 removed)) and
a4d94835a
(l10n: git.pot: v2.12.0 round 2 (2 new)).
Signed-off-by: Ralf Thielow <ralf.thielow@gmail.com>
Acked-by: Phillip Sz <phillip.szelat@gmail.com>
Jiang Xin [Sun, 19 Feb 2017 14:08:05 +0000 (22:08 +0800)]
Merge branch 'ko/merge-l10n' of https://github.com/changwoo/git-l10n-ko
* 'ko/merge-l10n' of https://github.com/changwoo/git-l10n-ko:
l10n: ko.po: Update Korean translation
Jiang Xin [Sun, 19 Feb 2017 14:04:41 +0000 (22:04 +0800)]
Merge branch 'master' of https://github.com/vnwildman/git
* 'master' of https://github.com/vnwildman/git:
l10n: vi.po (3139t): Updated 2 new messages for rc1
Changwoo Ryu [Sun, 19 Feb 2017 10:34:24 +0000 (19:34 +0900)]
l10n: ko.po: Update Korean translation
Signed-off-by: Changwoo Ryu <cwryu@debian.org>
Tran Ngoc Quan [Sat, 18 Feb 2017 00:18:54 +0000 (07:18 +0700)]
l10n: vi.po (3139t): Updated 2 new messages for rc1
Signed-off-by: Tran Ngoc Quan <vnwildman@gmail.com>
Grégoire Paris [Fri, 17 Feb 2017 23:37:00 +0000 (00:37 +0100)]
init: document dotfiles exclusion on template copy
Not just . and .., but any path that begins with dot is not copied
when copying the template directory to a new repository. You can
customize the template directory, copying some dotfiles might make
sense, but it's actually a good thing not to, because you would not
want to have your git directory copied in every git directory that
is created should you decide to put your template directory under
version control, for example. Plus, it might be used as a feature
by people who would want to exclude some files.
Signed-off-by: Grégoire Paris <postmaster@greg0ire.fr>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Jean-Noel Avila [Fri, 17 Feb 2017 23:10:04 +0000 (00:10 +0100)]
l10n: fr.po: v2.12.0 round 2 3139t
Signed-off-by: Jean-Noel Avila <jn.avila@free.fr>
Junio C Hamano [Fri, 17 Feb 2017 22:00:19 +0000 (14:00 -0800)]
Git 2.12-rc2
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Jiang Xin [Fri, 17 Feb 2017 17:00:54 +0000 (01:00 +0800)]
l10n: git.pot: v2.12.0 round 2 (2 new)
Generate po/git.pot from v2.12.0-rc1 for git v2.12.0 l10n round 2.
Signed-off-by: Jiang Xin <worldhello.net@gmail.com>
Jiang Xin [Fri, 17 Feb 2017 16:59:51 +0000 (00:59 +0800)]
Merge branch 'master' of git://github.com/git-l10n/git-po
* 'master' of git://github.com/git-l10n/git-po:
l10n: vi.po: Updated Vietnamese translation (3137t)
l10n: update Catalan translation
l10n: sv.po: Update Swedish translation (3137t0f0u)
l10n: fr.po: v2.11-rc0 first round
l10n: ko.po: Update Korean translation
l10n: fr.po: Fix a typo in the French translation
l10n: fr.po: Remove gender specific adjectives
l10n: fr.po: Fix typos
l10n: git.pot: v2.12.0 round 1 (239 new, 15 removed)
l10n: bg: Updated Bulgarian translation (2913t+0f+0u)
l10n: fixes to Catalan translation
l10n: zh_CN: review for git v2.11.0 l10n
l10n: New Catalan translation maintainer
Jiang Xin [Fri, 17 Feb 2017 16:54:49 +0000 (00:54 +0800)]
Merge branch 'master' of https://github.com/vnwildman/git
* 'master' of https://github.com/vnwildman/git:
l10n: vi.po: Updated Vietnamese translation (3137t)
Jiang Xin [Fri, 17 Feb 2017 16:49:06 +0000 (00:49 +0800)]
Merge branch 'master' of https://github.com/Softcatala/git-po
* 'master' of https://github.com/Softcatala/git-po:
l10n: update Catalan translation
Tran Ngoc Quan [Fri, 17 Feb 2017 06:51:34 +0000 (13:51 +0700)]
l10n: vi.po: Updated Vietnamese translation (3137t)
Signed-off-by: Tran Ngoc Quan <vnwildman@gmail.com>
Junio C Hamano [Thu, 16 Feb 2017 22:46:35 +0000 (14:46 -0800)]
Hopefully the final batch of mini-topics before the final
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Thu, 16 Feb 2017 22:45:15 +0000 (14:45 -0800)]
Merge branch 'jk/tempfile-ferror-fclose-confusion'
Code clean-up.
* jk/tempfile-ferror-fclose-confusion:
tempfile: avoid "ferror | fclose" trick
Junio C Hamano [Thu, 16 Feb 2017 22:45:15 +0000 (14:45 -0800)]
Merge branch 'dp/submodule-doc-markup-fix'
Doc fix.
* dp/submodule-doc-markup-fix:
config.txt: fix formatting of submodule.alternateErrorStrategy section
Junio C Hamano [Thu, 16 Feb 2017 22:45:14 +0000 (14:45 -0800)]
Merge branch 'jk/reset-to-break-a-commit-doc-updated'
Doc update.
* jk/reset-to-break-a-commit-doc-updated:
reset: add an example of how to split a commit into two
Junio C Hamano [Thu, 16 Feb 2017 22:45:14 +0000 (14:45 -0800)]
Merge branch 'jk/reset-to-break-a-commit-doc'
Doc update.
* jk/reset-to-break-a-commit-doc:
Revert "reset: add an example of how to split a commit into two"
Junio C Hamano [Thu, 16 Feb 2017 22:45:13 +0000 (14:45 -0800)]
Merge branch 'js/mingw-isatty'
A hotfix for a topic already in 'master'.
* js/mingw-isatty:
mingw: make stderr unbuffered again
Junio C Hamano [Thu, 16 Feb 2017 22:45:13 +0000 (14:45 -0800)]
Merge branch 'rs/strbuf-cleanup-in-rmdir-recursively'
Code clean-up.
* rs/strbuf-cleanup-in-rmdir-recursively:
rm: reuse strbuf for all remove_dir_recursively() calls, again
Junio C Hamano [Thu, 16 Feb 2017 22:45:13 +0000 (14:45 -0800)]
Merge branch 'rs/ls-files-partial-optim'
"ls-files" run with pathspec has been micro-optimized to avoid
having to memmove(3) unnecessary bytes.
* rs/ls-files-partial-optim:
ls-files: move only kept cache entries in prune_cache()
ls-files: pass prefix length explicitly to prune_cache()
Junio C Hamano [Thu, 16 Feb 2017 22:45:13 +0000 (14:45 -0800)]
Merge branch 'rs/cocci-check-free-only-null'
A new coccinelle rule that catches a check of !pointer before the
pointer is free(3)d, which most likely is a bug.
* rs/cocci-check-free-only-null:
cocci: detect useless free(3) calls
Junio C Hamano [Thu, 16 Feb 2017 22:45:12 +0000 (14:45 -0800)]
Merge branch 'ls/p4-path-encoding'
When "git p4" imports changelist that removes paths, it failed to
convert pathnames when the p4 used encoding different from the one
used on the Git side. This has been corrected.
* ls/p4-path-encoding:
git-p4: fix git-p4.pathEncoding for removed files
Jeff King [Thu, 16 Feb 2017 21:31:40 +0000 (16:31 -0500)]
tempfile: avoid "ferror | fclose" trick
The current code wants to record an error condition from
either ferror() or fclose(), but makes sure that we always
call both functions. So it can't use logical-OR "||", which
would short-circuit when ferror() is true. Instead, it uses
bitwise-OR "|" to evaluate both functions and set one or
more bits in the "err" flag if they reported a failure.
Unlike logical-OR, though, bitwise-OR does not introduce a
sequence point, and the order of evaluation for its operands
is unspecified. So a compiler would be free to generate code
which calls fclose() first, and then ferror() on the
now-freed filehandle.
There's no indication that this has happened in practice,
but let's write it out in a way that follows the standard.
Noticed-by: Andreas Schwab <schwab@linux-m68k.org>
Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
David Pursehouse [Thu, 16 Feb 2017 05:05:35 +0000 (14:05 +0900)]
config.txt: fix formatting of submodule.alternateErrorStrategy section
Add missing `::` after the title.
Signed-off-by: David Pursehouse <dpursehouse@collab.net>
Acked-by: Stefan Beller <sbeller@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Jacob Keller [Thu, 16 Feb 2017 00:22:12 +0000 (16:22 -0800)]
reset: add an example of how to split a commit into two
It is often useful to break a commit into multiple parts that are more
logical separations. This can be tricky to learn how to do without the
brute-force method if re-writing code or commit messages from scratch.
Add a section to the git-reset documentation which shows an example
process for how to use git add -p and git commit -c HEAD@{1} to
interactively break a commit apart and re-use the original commit
message as a starting point when making the new commit message.
Signed-off-by: Jacob Keller <jacob.keller@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Thu, 16 Feb 2017 21:35:50 +0000 (13:35 -0800)]
Revert "reset: add an example of how to split a commit into two"
This reverts commit
7326451bedaa67d29afe02184b166e28d9393c91; a
better rewrite will be queued separately.
Jordi Mas [Thu, 16 Feb 2017 04:10:04 +0000 (05:10 +0100)]
l10n: update Catalan translation
Signed-off-by: Jordi Mas <jmas@softcatala.org>
Junio C Hamano [Wed, 15 Feb 2017 22:58:25 +0000 (14:58 -0800)]
A bit more for -rc2
Junio C Hamano [Wed, 15 Feb 2017 22:56:41 +0000 (14:56 -0800)]
Merge branch 'tg/stash-doc-cleanup'
The documentation explained what "git stash" does to the working
tree (after stashing away the local changes) in terms of "reset
--hard", which was exposing an unnecessary implementation detail.
* tg/stash-doc-cleanup:
Documentation/stash: remove mention of git reset --hard
Junio C Hamano [Wed, 15 Feb 2017 22:56:40 +0000 (14:56 -0800)]
Merge branch 'jk/doc-submodule-markup-fix'
Doc markup fix.
* jk/doc-submodule-markup-fix:
docs/git-submodule: fix unbalanced quote
Junio C Hamano [Wed, 15 Feb 2017 22:56:40 +0000 (14:56 -0800)]
Merge branch 'jk/doc-remote-helpers-markup-fix'
Doc markup fix.
* jk/doc-remote-helpers-markup-fix:
docs/gitremote-helpers: fix unbalanced quotes
Junio C Hamano [Wed, 15 Feb 2017 20:54:20 +0000 (12:54 -0800)]
Merge branch 'sb/doc-unify-bottom'
Doc clean-up.
* sb/doc-unify-bottom:
Documentation: unify bottom "part of git suite" lines
Junio C Hamano [Wed, 15 Feb 2017 20:54:19 +0000 (12:54 -0800)]
Merge branch 'sb/push-options-via-transport'
The push-options given via the "--push-options" option were not
passed through to external remote helpers such as "smart HTTP" that
are invoked via the transport helper.
* sb/push-options-via-transport:
push options: pass push options to the transport helper
Junio C Hamano [Wed, 15 Feb 2017 20:54:19 +0000 (12:54 -0800)]
Merge branch 'cw/completion'
More command line completion (in contrib/) for recent additions.
* cw/completion:
completion: recognize more long-options
completion: teach remote subcommands to complete options
completion: teach replace to complete options
completion: teach ls-remote to complete options
completion: improve bash completion for git-add
completion: add subcommand completion for rerere
completion: teach submodule subcommands to complete options
Junio C Hamano [Wed, 15 Feb 2017 20:54:19 +0000 (12:54 -0800)]
Merge branch 'rs/swap'
Code clean-up.
* rs/swap:
graph: use SWAP macro
diff: use SWAP macro
use SWAP macro
apply: use SWAP macro
add SWAP macro
Junio C Hamano [Wed, 15 Feb 2017 20:54:18 +0000 (12:54 -0800)]
Merge branch 'sb/submodule-doc'
Doc updates.
* sb/submodule-doc:
submodule update documentation: don't repeat ourselves
submodule documentation: add options to the subcommand
Johannes Schindelin [Mon, 13 Feb 2017 22:34:06 +0000 (23:34 +0100)]
mingw: make stderr unbuffered again
When removing the hack for isatty(), we actually removed more than just
an isatty() hack: we removed the hack where internal data structures of
the MSVC runtime are modified in order to redirect stdout/stderr.
Instead of using that hack (that does not work with newer versions of
the runtime, anyway), we replaced it by reopening the respective file
descriptors.
What we forgot was to mark stderr as unbuffered again.
Reported by Hannes Sixt. Fixed with Jeff Hostetler's assistance.
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Tested-by: Johannes Sixt <j6t@kdbg.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
René Scharfe [Sat, 11 Feb 2017 19:51:08 +0000 (20:51 +0100)]
rm: reuse strbuf for all remove_dir_recursively() calls, again
Don't throw the memory allocated for remove_dir_recursively() away after
a single call, use it for the other entries as well instead.
This change was done before in
deb8e15a (rm: reuse strbuf for all
remove_dir_recursively() calls), but was reverted as a side-effect of
55856a35 (rm: absorb a submodules git dir before deletion). Reinstate
the optimization.
Signed-off-by: Rene Scharfe <l.s.r@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Thomas Gummerer [Sun, 12 Feb 2017 21:54:14 +0000 (21:54 +0000)]
Documentation/stash: remove mention of git reset --hard
Don't mention git reset --hard in the documentation for git stash save.
It's an implementation detail that doesn't matter to the end user and
thus shouldn't be exposed to them. In addition it's not quite true for
git stash -p, and will not be true when a filename argument to limit the
stash to a few files is introduced.
Signed-off-by: Thomas Gummerer <t.gummerer@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Jeff King [Mon, 13 Feb 2017 21:05:49 +0000 (16:05 -0500)]
docs/git-submodule: fix unbalanced quote
The documentation gives an example of the submodule foreach
command that uses both backticks and single-quotes. We stick
the whole thing inside "+" markers to make it monospace, but
the inside punctuation still needs escaping. We handle the
backticks with "{backtick}", and use backslash-escaping for
the single-quotes.
But we missed the escaping on the second quote. Fortunately,
asciidoc renders this unbalanced quote as we want (showing
the quote), but asciidoctor does not. We could fix it by
adding the missing backslash.
However, let's take a step back. Even when rendered
correctly, it's hard to read a long command stuck into the
middle of a paragraph, and the important punctuation is hard
to notice. Let's instead bump it into its own single-line
code block. That makes both the source and the rendered
result more readable, and as a bonus we don't have to worry
about quoting at all.
Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Jeff King [Mon, 13 Feb 2017 20:38:35 +0000 (15:38 -0500)]
docs/gitremote-helpers: fix unbalanced quotes
Each of these options is missing the closing single-quote on
the option name. This understandably confuses asciidoc,
which ends up rendering a stray quote, like:
option cloning {'true|false}
Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
René Scharfe [Fri, 10 Feb 2017 20:03:30 +0000 (21:03 +0100)]
ls-files: move only kept cache entries in prune_cache()
prune_cache() first identifies those entries at the start of the sorted
array that can be discarded. Then it moves the rest of the entries up.
Last it identifies the unwanted trailing entries among the moved ones
and cuts them off.
Change the order: Identify both start *and* end of the range to keep
first and then move only those entries to the top. The resulting code
is slightly shorter and a bit more efficient.
Signed-off-by: Rene Scharfe <l.s.r@web.de>
Reviewed-by: Brandon Williams <bmwill@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
René Scharfe [Fri, 10 Feb 2017 19:42:28 +0000 (20:42 +0100)]
ls-files: pass prefix length explicitly to prune_cache()
The function prune_cache() relies on the fact that it is only called on
max_prefix and sneakily uses the matching global variable max_prefix_len
directly. Tighten its interface by passing both the string and its
length as parameters. While at it move the NULL check into the function
to collect all cache-pruning related logic in one place.
Signed-off-by: Rene Scharfe <l.s.r@web.de>
Reviewed-by: Brandon Williams <bmwill@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Jiang Xin [Mon, 13 Feb 2017 16:19:11 +0000 (00:19 +0800)]
Merge branch 'master' of git://github.com/nafmo/git-l10n-sv
* 'master' of git://github.com/nafmo/git-l10n-sv:
l10n: sv.po: Update Swedish translation (3137t0f0u)
Jiang Xin [Mon, 13 Feb 2017 16:17:21 +0000 (00:17 +0800)]
Merge branch 'fr_v2.11.0_rnd1' of git://github.com/jnavila/git
* 'fr_v2.11.0_rnd1' of git://github.com/jnavila/git:
l10n: fr.po: v2.11-rc0 first round
l10n: fr.po: Fix a typo in the French translation
l10n: fr.po: Remove gender specific adjectives
l10n: fr.po: Fix typos
René Scharfe [Sat, 11 Feb 2017 13:58:44 +0000 (14:58 +0100)]
cocci: detect useless free(3) calls
Add a semantic patch for removing checks that cause free(3) to only be
called with a NULL pointer, as that must be a programming mistake.
Signed-off-by: Rene Scharfe <l.s.r@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Peter Krefting [Sat, 11 Feb 2017 19:19:48 +0000 (20:19 +0100)]
l10n: sv.po: Update Swedish translation (3137t0f0u)
Signed-off-by: Peter Krefting <peter@softwolves.pp.se>
Jean-Noel Avila [Wed, 8 Feb 2017 20:36:33 +0000 (21:36 +0100)]
l10n: fr.po: v2.11-rc0 first round
Signed-off-by: Jean-Noel Avila <jn.avila@free.fr>
Changwoo Ryu [Sat, 11 Feb 2017 02:29:32 +0000 (11:29 +0900)]
l10n: ko.po: Update Korean translation
Signed-off-by: Changwoo Ryu <cwryu@debian.org>
Lars Schneider [Thu, 9 Feb 2017 15:06:56 +0000 (16:06 +0100)]
git-p4: fix git-p4.pathEncoding for removed files
In
a9e38359e3 we taught git-p4 a way to re-encode path names from what
was used in Perforce to UTF-8. This path re-encoding worked properly for
"added" paths. "Removed" paths were not re-encoded and therefore
different from the "added" paths. Consequently, these files were not
removed in a git-p4 cloned Git repository because the path names did not
match.
Fix this by moving the re-encoding to a place that affects "added" and
"removed" paths. Add a test to demonstrate the issue.
Signed-off-by: Lars Schneider <larsxschneider@gmail.com>
Reviewed-by: Luke Diamand <luke@diamand.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Fri, 10 Feb 2017 20:54:23 +0000 (12:54 -0800)]
Git 2.12-rc1
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Fri, 10 Feb 2017 20:52:27 +0000 (12:52 -0800)]
Merge branch 'nd/rev-list-all-includes-HEAD-doc'
Doc update.
* nd/rev-list-all-includes-HEAD-doc:
rev-list-options.txt: update --all about HEAD
Junio C Hamano [Fri, 10 Feb 2017 20:52:27 +0000 (12:52 -0800)]
Merge branch 'rs/fill-directory-optim'
Code clean-up.
* rs/fill-directory-optim:
dir: avoid allocation in fill_directory()
Junio C Hamano [Fri, 10 Feb 2017 20:52:26 +0000 (12:52 -0800)]
Merge branch 'jk/log-graph-name-only'
"git log --graph" did not work well with "--name-only", even though
other forms of "diff" output were handled correctly.
* jk/log-graph-name-only:
diff: print line prefix for --name-only output
Junio C Hamano [Fri, 10 Feb 2017 20:52:26 +0000 (12:52 -0800)]
Merge branch 'da/t7800-cleanup'
Test updates.
* da/t7800-cleanup:
t7800: replace "wc -l" with test_line_count
Junio C Hamano [Fri, 10 Feb 2017 20:52:26 +0000 (12:52 -0800)]
Merge branch 'dl/difftool-doc-no-gui-option'
Doc update.
* dl/difftool-doc-no-gui-option:
Document the --no-gui option in difftool
Junio C Hamano [Fri, 10 Feb 2017 20:52:25 +0000 (12:52 -0800)]
Merge branch 'js/difftool-builtin'
A few hot-fixes to C-rewrite of "git difftool".
* js/difftool-builtin:
t7800: simplify basic usage test
difftool: fix bug when printing usage
Junio C Hamano [Fri, 10 Feb 2017 20:52:25 +0000 (12:52 -0800)]
Merge branch 'rs/p5302-create-repositories-before-tests'
Adjust a perf test to new world order where commands that do
require a repository are really strict about having a repository.
* rs/p5302-create-repositories-before-tests:
p5302: create repositories for index-pack results explicitly
Junio C Hamano [Fri, 10 Feb 2017 20:52:25 +0000 (12:52 -0800)]
Merge branch 'ps/worktree-prune-help-fix'
Incorrect usage help message for "git worktree prune" has been fixed.
* ps/worktree-prune-help-fix:
worktree: fix option descriptions for `prune`
Junio C Hamano [Fri, 10 Feb 2017 20:52:24 +0000 (12:52 -0800)]
Merge branch 'ew/complete-svn-authorship-options'
Correct command line completion (in contrib/) on "git svn"
* ew/complete-svn-authorship-options:
completion: fix git svn authorship switches
Junio C Hamano [Fri, 10 Feb 2017 20:52:23 +0000 (12:52 -0800)]
Merge branch 'jk/reset-to-break-a-commit-doc'
A minor doc update.
* jk/reset-to-break-a-commit-doc:
reset: add an example of how to split a commit into two
Junio C Hamano [Fri, 10 Feb 2017 20:52:23 +0000 (12:52 -0800)]
Merge branch 'bw/push-submodule-only'
Add missing documentation update to a recent topic.
* bw/push-submodule-only:
completion: add completion for --recurse-submodules=only
doc: add doc for git-push --recurse-submodules=only
Stefan Beller [Thu, 9 Feb 2017 01:29:30 +0000 (17:29 -0800)]
Documentation: unify bottom "part of git suite" lines
We currently have 168 man pages that mention they are part of Git, you
can check yourself easily via:
$ git grep "Part of the linkgit:git\[1\] suite" |wc -l
168
However some have a trailing period, i.e.
$ git grep "Part of the linkgit:git\[1\] suite." |wc -l
8
Unify the bottom line in all man pages to not end with a period.
Signed-off-by: Stefan Beller <sbeller@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Stefan Beller [Wed, 8 Feb 2017 22:04:00 +0000 (14:04 -0800)]
push options: pass push options to the transport helper
When using non-builtin protocols relying on a transport helper
(such as http), push options are not propagated to the helper.
The user could ask for push options and a push would seemingly succeed,
but the push options would never be transported to the server,
misleading the users expectation.
Fix this by propagating the push options to the transport helper.
This is only addressing the first issue of
(1) the helper protocol does not propagate push-option
(2) the http helper is not prepared to handle push-option
Once we fix (2), the http transport helper can make use of push options
as well, but that happens as a follow up. (1) is a bug fix, whereas (2)
is a feature, which is why we only do (1) here.
Signed-off-by: Stefan Beller <sbeller@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Jeff King [Wed, 8 Feb 2017 20:31:15 +0000 (15:31 -0500)]
diff: print line prefix for --name-only output
If you run "git log --graph --name-only", the pathnames are
not indented to go along with their matching commits (unlike
all of the other diff formats). We need to output the line
prefix for each item before writing it.
The tests cover both --name-status and --name-only. The
former actually gets this right already, because it builds
on the --raw format functions. It's only --name-only which
uses its own code (and this fix mirrors the code in
diff_flush_raw()).
Note that the tests don't follow our usual style of setting
up the "expect" output inside the test block. This matches
the surrounding style, but more importantly it is easier to
read: we don't have to worry about embedded single-quotes,
and the leading indentation is more obvious.
Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
René Scharfe [Tue, 7 Feb 2017 22:04:25 +0000 (23:04 +0100)]
dir: avoid allocation in fill_directory()
Pass the match member of the first pathspec item directly to
read_directory() instead of using common_prefix() to duplicate it first,
thus avoiding memory duplication, strlen(3) and free(3).
Signed-off-by: Rene Scharfe <l.s.r@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Nguyễn Thái Ngọc Duy [Wed, 8 Feb 2017 06:06:41 +0000 (13:06 +0700)]
rev-list-options.txt: update --all about HEAD
This is the document patch for
f0298cf1c6 (revision walker: include a
detached HEAD in --all - 2009-01-16).
Even though that commit is about detached HEAD, as Jeff pointed out,
always adding HEAD in that case may have subtle differences with
--source or --exclude. So the document mentions nothing about the
detached-ness.
Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
David Aguilar [Tue, 7 Feb 2017 09:17:00 +0000 (01:17 -0800)]
t7800: replace "wc -l" with test_line_count
Make t7800 easier to debug by capturing output into temporary files and
using test_line_count to make assertions on those files.
Signed-off-by: David Aguilar <davvid@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Wed, 8 Feb 2017 21:36:03 +0000 (13:36 -0800)]
Merge branch 'da/difftool-dir-diff-fix' into da/t7800-cleanup
* da/difftool-dir-diff-fix:
difftool: fix dir-diff index creation when in a subdirectory
David Aguilar [Tue, 7 Feb 2017 09:16:59 +0000 (01:16 -0800)]
t7800: simplify basic usage test
Use "test_line_count" instead of "wc -l", use "git -C" instead of a
subshell, and use test_expect_code when calling difftool. Ease
debugging by capturing output into temporary files.
Suggested-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: David Aguilar <davvid@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Denton Liu [Tue, 7 Feb 2017 06:32:07 +0000 (22:32 -0800)]
Document the --no-gui option in difftool
Prior to this, the `--no-gui` option was not documented in the manpage.
This commit introduces this into the manpage
Signed-off-by: Denton Liu <liu.denton@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Patrick Steinhardt [Mon, 6 Feb 2017 13:13:59 +0000 (14:13 +0100)]
worktree: fix option descriptions for `prune`
The `verbose` and `expire` options of the `git worktree prune`
subcommand have wrong descriptions in that they pretend to relate to
objects. But as the git-worktree(1) correctly states, these options have
nothing to do with objects but only with worktrees. Fix the description
accordingly.
Signed-off-by: Patrick Steinhardt <patrick.steinhardt@elego.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
René Scharfe [Sun, 5 Feb 2017 11:43:29 +0000 (12:43 +0100)]
p5302: create repositories for index-pack results explicitly
Before
7176a314 (index-pack: complain when --stdin is used outside of a
repo) index-pack silently created a non-existing target directory; now
the command refuses to work unless it's used against a valid repository.
That causes p5302 to fail, which relies on the former behavior. Fix it
by setting up the destinations for its performance tests using git init.
Signed-off-by: Rene Scharfe <l.s.r@web.de>
Acked-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>