Junio C Hamano [Tue, 3 Mar 2015 22:37:02 +0000 (14:37 -0800)]
Merge branch 'jc/apply-ws-fix-expands-report'
"git apply --whitespace=fix" fixed whitespace errors in the common
context lines but did so without reporting.
* jc/apply-ws-fix-expands-report:
apply: detect and mark whitespace errors in context lines when fixing
Junio C Hamano [Tue, 3 Mar 2015 22:37:01 +0000 (14:37 -0800)]
Merge branch 'jc/apply-beyond-symlink'
"git apply" was not very careful about reading from, removing,
updating and creating paths outside the working tree (under
--index/--cached) or the current directory (when used as a
replacement for GNU patch).
* jc/apply-beyond-symlink:
apply: do not touch a file beyond a symbolic link
apply: do not read from beyond a symbolic link
apply: do not read from the filesystem under --index
apply: reject input that touches outside the working area
Junio C Hamano [Wed, 25 Feb 2015 23:44:04 +0000 (15:44 -0800)]
Post 2.3 cyle (batch #5)
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Wed, 25 Feb 2015 23:40:21 +0000 (15:40 -0800)]
Merge branch 'ak/git-pm-typofix'
Typofix in comments.
* ak/git-pm-typofix:
Git.pm: two minor typo fixes
Junio C Hamano [Wed, 25 Feb 2015 23:40:21 +0000 (15:40 -0800)]
Merge branch 'sb/plug-leak-in-make-cache-entry'
"update-index --refresh" used to leak when an entry cannot be
refreshed for whatever reason.
* sb/plug-leak-in-make-cache-entry:
read-cache.c: free cache entry when refreshing fails
Junio C Hamano [Wed, 25 Feb 2015 23:40:19 +0000 (15:40 -0800)]
Merge branch 'mh/transport-capabilities'
The transport-helper did not give 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.
* mh/transport-capabilities:
transport-helper: ask the helper to set the same options for import as for fetch
transport-helper: ask the helper to set progress and verbosity options after asking for its capabilities
Junio C Hamano [Wed, 25 Feb 2015 23:40:19 +0000 (15:40 -0800)]
Merge branch 'jc/send-email-sensible-encoding'
"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.
* jc/send-email-sensible-encoding:
send-email: ask confirmation if given encoding name is very short
Junio C Hamano [Wed, 25 Feb 2015 23:40:18 +0000 (15:40 -0800)]
Merge branch 'jk/sanity'
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.
* jk/sanity:
test-lib.sh: set prerequisite SANITY by testing what we really need
tests: correct misuses of POSIXPERM
t/lib-httpd: switch SANITY check for NOT_ROOT
Junio C Hamano [Wed, 25 Feb 2015 23:40:16 +0000 (15:40 -0800)]
Merge branch 'sb/hex-object-name-is-at-most-41-bytes-long'
Code clean-up.
* sb/hex-object-name-is-at-most-41-bytes-long:
hex.c: reduce memory footprint of sha1_to_hex static buffers
Junio C Hamano [Wed, 25 Feb 2015 23:40:15 +0000 (15:40 -0800)]
Merge branch 'jk/fast-import-die-nicely-fix'
"git fast-import" used to crash when it could not close and
conclude the resulting packfile cleanly.
* jk/fast-import-die-nicely-fix:
fast-import: avoid running end_packfile recursively
Junio C Hamano [Wed, 25 Feb 2015 23:40:14 +0000 (15:40 -0800)]
Merge branch 'dp/remove-duplicated-header-inclusion'
Code clean-up.
* dp/remove-duplicated-header-inclusion:
do not include the same header twice
Junio C Hamano [Wed, 25 Feb 2015 23:40:13 +0000 (15:40 -0800)]
Merge branch 'jc/max-io-size-and-ssize-max'
Our default I/O size (8 MiB) for large files was too large for some
platforms with smaller SSIZE_MAX, leading to read(2)/write(2)
failures.
* jc/max-io-size-and-ssize-max:
xread/xwrite: clip MAX_IO_SIZE to SSIZE_MAX
Junio C Hamano [Wed, 25 Feb 2015 23:40:12 +0000 (15:40 -0800)]
Merge branch 'tc/missing-http-proxyauth'
We did not check the curl library version before using
CURLOPT_PROXYAUTH feature that may not exist.
* tc/missing-http-proxyauth:
http: support curl < 7.10.7
Junio C Hamano [Wed, 25 Feb 2015 23:40:10 +0000 (15:40 -0800)]
Merge branch 'jk/strbuf-doc-to-header'
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.
* jk/strbuf-doc-to-header:
strbuf.h: group documentation for trim functions
strbuf.h: drop boilerplate descriptions of strbuf_split_*
strbuf.h: reorganize api function grouping headers
strbuf.h: format asciidoc code blocks as 4-space indent
strbuf.h: drop asciidoc list formatting from API docs
strbuf.h: unify documentation comments beginnings
strbuf.h: integrate api-strbuf.txt documentation
Junio C Hamano [Wed, 25 Feb 2015 23:40:10 +0000 (15:40 -0800)]
Merge branch 'nd/attr-optim'
Optimize attribute 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.
* nd/attr-optim:
attr: avoid heavy work when we know the specified attr is not defined
attr: do not attempt to expand when we know it's not a macro
attr.c: rename arg name attr_nr to avoid shadowing the global one
Junio C Hamano [Wed, 25 Feb 2015 23:40:09 +0000 (15:40 -0800)]
Merge branch 'jn/doc-api-errors'
The error handling functions and conventions are now documented in
the API manual.
* jn/doc-api-errors:
doc: document error handling functions and conventions
Junio C Hamano [Wed, 25 Feb 2015 06:15:49 +0000 (22:15 -0800)]
Sync with 2.3.1
Junio C Hamano [Wed, 25 Feb 2015 06:14:42 +0000 (22:14 -0800)]
Git 2.3.1
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Wed, 25 Feb 2015 06:10:42 +0000 (22:10 -0800)]
Merge branch 'ak/add-i-empty-candidates' into 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.
* ak/add-i-empty-candidates:
add -i: return from list_and_choose if there is no candidate
Junio C Hamano [Wed, 25 Feb 2015 06:10:41 +0000 (22:10 -0800)]
Merge branch 'jc/apply-ws-fix-expands' into maint
"git apply --whitespace=fix" used to under-allocate the memory
when the fix resulted in a longer text than the original patch.
* jc/apply-ws-fix-expands:
apply: count the size of postimage correctly
apply: make update_pre_post_images() sanity check the given postlen
apply.c: typofix
Junio C Hamano [Wed, 25 Feb 2015 06:10:39 +0000 (22:10 -0800)]
Merge branch 'jc/doc-log-rev-list-options' into maint
"git log --help" used to show rev-list options that are irrelevant
to the "log" command.
* jc/doc-log-rev-list-options:
Documentation: what does "git log --indexed-objects" even mean?
Junio C Hamano [Wed, 25 Feb 2015 06:10:38 +0000 (22:10 -0800)]
Merge branch 'mg/commit-author-no-match-malformed-message' into maint
The error message from "git commit", when a non-existing author
name was given as value to the "--author=" parameter, has been
reworded to avoid misunderstanding.
* mg/commit-author-no-match-malformed-message:
commit: reword --author error message
Junio C Hamano [Wed, 25 Feb 2015 06:10:37 +0000 (22:10 -0800)]
Merge branch 'jk/dumb-http-idx-fetch-fix' into maint
A broken pack .idx file in the receiving repository prevented the
dumb http transport from fetching a good copy of it from the other
side.
* jk/dumb-http-idx-fetch-fix:
dumb-http: do not pass NULL path to parse_pack_index
Junio C Hamano [Wed, 25 Feb 2015 06:10:36 +0000 (22:10 -0800)]
Merge branch 'jc/diff-format-doc' into 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.
* jc/diff-format-doc:
diff-format doc: a score can follow M for rewrite
Junio C Hamano [Wed, 25 Feb 2015 06:10:35 +0000 (22:10 -0800)]
Merge branch 'jk/remote-curl-an-array-in-struct-cannot-be-null' into maint
Fix a misspelled conditional that is always true.
* jk/remote-curl-an-array-in-struct-cannot-be-null:
do not check truth value of flex arrays
Junio C Hamano [Wed, 25 Feb 2015 06:10:21 +0000 (22:10 -0800)]
Merge branch 'jk/status-read-branch-name-fix' into 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.
* jk/status-read-branch-name-fix:
read_and_strip_branch: fix typo'd address-of operator
Junio C Hamano [Wed, 25 Feb 2015 06:10:19 +0000 (22:10 -0800)]
Merge branch 'mg/push-repo-option-doc' into maint
The "git push" documentation made the "--repo=<there>" option
easily misunderstood.
* mg/push-repo-option-doc:
git-push.txt: document the behavior of --repo
Junio C Hamano [Wed, 25 Feb 2015 06:10:17 +0000 (22:10 -0800)]
Merge branch 'bc/http-fallback-to-password-after-krb-fails' into 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.
* bc/http-fallback-to-password-after-krb-fails:
remote-curl: fall back to Basic auth if Negotiate fails
Junio C Hamano [Wed, 25 Feb 2015 06:10:15 +0000 (22:10 -0800)]
Merge branch 'dk/format-patch-ignore-diff-submodule' into maint
Setting diff.submodule to 'log' made "git format-patch" produce
broken patches.
* dk/format-patch-ignore-diff-submodule:
format-patch: ignore diff.submodule setting
t4255: test am submodule with diff.submodule
Junio C Hamano [Wed, 25 Feb 2015 06:10:13 +0000 (22:10 -0800)]
Merge branch 'jn/rerere-fail-on-auto-update-failure' into 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.
* jn/rerere-fail-on-auto-update-failure:
rerere: error out on autoupdate failure
Junio C Hamano [Wed, 25 Feb 2015 06:09:54 +0000 (22:09 -0800)]
Merge branch 'jk/blame-commit-label' into maint
"git blame HEAD -- missing" failed to correctly say "HEAD" when it
tried to say "No such path 'missing' in HEAD".
* jk/blame-commit-label:
blame.c: fix garbled error message
use xstrdup_or_null to replace ternary conditionals
builtin/commit.c: use xstrdup_or_null instead of envdup
builtin/apply.c: use xstrdup_or_null instead of null_strdup
git-compat-util: add xstrdup_or_null helper
Junio C Hamano [Sun, 22 Feb 2015 20:29:36 +0000 (12:29 -0800)]
Post 2.3 cycle (batch #4)
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Sun, 22 Feb 2015 20:28:31 +0000 (12:28 -0800)]
Merge branch 'jc/conf-var-doc'
Longstanding configuration variable naming rules has been added to
the documentation.
* jc/conf-var-doc:
CodingGuidelines: describe naming rules for configuration variables
config.txt: mark deprecated variables more prominently
config.txt: clarify that add.ignore-errors is deprecated
Junio C Hamano [Sun, 22 Feb 2015 20:28:30 +0000 (12:28 -0800)]
Merge branch 'es/squelch-openssl-warnings-on-macosx'
An earlier workaround to squelch unhelpful deprecation warnings
from the complier on Mac OSX unnecessarily set minimum required
version of the OS, which the user might want to raise (or lower)
for other reasons.
* es/squelch-openssl-warnings-on-macosx:
git-compat-util: do not step on MAC_OS_X_VERSION_MIN_REQUIRED
Junio C Hamano [Sun, 22 Feb 2015 20:28:29 +0000 (12:28 -0800)]
Merge branch 'tc/curl-vernum-output-broken-in-7.11'
Certain older vintages of cURL give irregular output from
"curl-config --vernum", which confused our build system.
* tc/curl-vernum-output-broken-in-7.11:
Makefile: handle broken curl version number in version check
Junio C Hamano [Sun, 22 Feb 2015 20:28:28 +0000 (12:28 -0800)]
Merge branch 'jk/prune-mtime'
In v2.2.0, we broke "git prune" that runs in a repository that
borrows from an alternate object store.
* jk/prune-mtime:
sha1_file: fix iterating loose alternate objects
for_each_loose_file_in_objdir: take an optional strbuf path
Junio C Hamano [Sun, 22 Feb 2015 20:28:27 +0000 (12:28 -0800)]
Merge branch 'jc/diff-files-ita'
Code cleanup.
* jc/diff-files-ita:
run_diff_files(): clarify computation of sha1 validity
Junio C Hamano [Sun, 22 Feb 2015 20:28:26 +0000 (12:28 -0800)]
Merge branch 'ps/submodule-sanitize-path-upon-add'
"git submodule add" failed to squash "path/to/././submodule" to
"path/to/submodule".
* ps/submodule-sanitize-path-upon-add:
git-submodule.sh: fix '/././' path normalization
Junio C Hamano [Sun, 22 Feb 2015 20:28:25 +0000 (12:28 -0800)]
Merge branch 'ab/merge-file-prefix'
"git merge-file" did not work correctly in a subdirectory.
* ab/merge-file-prefix:
merge-file: correctly open files when in a subdir
Junio C Hamano [Sun, 22 Feb 2015 20:28:24 +0000 (12:28 -0800)]
Merge branch 'es/blame-commit-info-fix'
"git blame" died, trying to free an uninitialized piece of memory.
* es/blame-commit-info-fix:
builtin/blame: destroy initialized commit_info only
Junio C Hamano [Sun, 22 Feb 2015 20:28:23 +0000 (12:28 -0800)]
Merge branch 'ss/check-builtins-on-windows'
* ss/check-builtins-on-windows:
check-builtins: strip executable suffix $X when enumerating builtins
Alexander Kuleshov [Wed, 18 Feb 2015 17:32:20 +0000 (23:32 +0600)]
Git.pm: two minor typo fixes
Signed-off-by: Alexander Kuleshov <kuleshovmail@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Wed, 18 Feb 2015 19:53:17 +0000 (11:53 -0800)]
Post 2.3 cycle (batch #3)
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Wed, 18 Feb 2015 19:45:03 +0000 (11:45 -0800)]
Merge branch 'jc/push-cert'
"git push --signed" gave an incorrectly worded error message when
the other side did not support the capability.
* jc/push-cert:
transport-helper: fix typo in error message when --signed is not supported
Junio C Hamano [Wed, 18 Feb 2015 19:45:02 +0000 (11:45 -0800)]
Merge branch 'jk/decimal-width-for-uintmax'
We didn't format an integer that wouldn't fit in "int" but in
"uintmax_t" correctly.
* jk/decimal-width-for-uintmax:
decimal_width: avoid integer overflow
Junio C Hamano [Wed, 18 Feb 2015 19:45:01 +0000 (11:45 -0800)]
Merge branch 'jk/config-no-ungetc-eof'
Reading configuration from a blob object, when it ends with a lone
CR, use to confuse the configuration parser.
* jk/config-no-ungetc-eof:
config_buf_ungetc: warn when pushing back a random character
config: do not ungetc EOF
Junio C Hamano [Wed, 18 Feb 2015 19:45:00 +0000 (11:45 -0800)]
Merge branch 'jk/pack-bitmap'
The pack bitmap support did not build with older versions of GCC.
* jk/pack-bitmap:
ewah: fix building with gcc < 3.4.0
Junio C Hamano [Wed, 18 Feb 2015 19:44:59 +0000 (11:44 -0800)]
Merge branch 'jc/remote-set-url-doc'
Clarify in the documentation that "remote.<nick>.pushURL" and
"remote.<nick>.URL" are there to name the same repository accessed
via different transports, not two separate repositories.
* jc/remote-set-url-doc:
Documentation/git-remote.txt: stress that set-url is not for triangular
Junio C Hamano [Wed, 18 Feb 2015 19:44:58 +0000 (11:44 -0800)]
Merge branch 'ch/new-gpg-drops-rfc-1991'
Older GnuPG implementations may not correctly import the keyring
material we prepare for the tests to use.
* ch/new-gpg-drops-rfc-1991:
t/lib-gpg: sanity-check that we can actually sign
t/lib-gpg: include separate public keys in keyring.gpg
Junio C Hamano [Wed, 18 Feb 2015 19:44:57 +0000 (11:44 -0800)]
Merge branch 'ye/http-accept-language'
Using environment variable LANGUAGE and friends on the client side,
HTTP-based transports now send Accept-Language when making requests.
* ye/http-accept-language:
http: add Accept-Language header if possible
Junio C Hamano [Wed, 18 Feb 2015 19:44:56 +0000 (11:44 -0800)]
Merge branch 'av/wincred-with-at-in-username-fix'
The credential helper for Windows (in contrib/) used to mishandle
a user name with an at-sign in it.
* av/wincred-with-at-in-username-fix:
wincred: fix get credential if username has "@"
Stefan Beller [Tue, 17 Feb 2015 18:06:14 +0000 (10:06 -0800)]
read-cache.c: free cache entry when refreshing fails
This fixes a memory leak when building the cache entries as
refresh_cache_entry may decide to return NULL, but it does not
free the cache entry structure which was passed in as an argument.
Signed-off-by: Stefan Beller <sbeller@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Tue, 17 Feb 2015 18:22:17 +0000 (10:22 -0800)]
Post 2.3 cycle (batch #2)
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Tue, 17 Feb 2015 18:15:30 +0000 (10:15 -0800)]
Merge branch 'mg/push-repo-option-doc'
The "git push" documentation made the "--repo=<there>" option
easily misunderstood.
* mg/push-repo-option-doc:
git-push.txt: document the behavior of --repo
Junio C Hamano [Tue, 17 Feb 2015 18:15:29 +0000 (10:15 -0800)]
Merge branch 'jc/t4122-use-test-write-lines'
* jc/t4122-use-test-write-lines:
t4122: use test_write_lines from test-lib-functions
Junio C Hamano [Tue, 17 Feb 2015 18:15:28 +0000 (10:15 -0800)]
Merge branch 'jk/status-read-branch-name-fix'
Code to read branch name from various files in .git/ directory
would have misbehaved if the code to write them left an empty file.
* jk/status-read-branch-name-fix:
read_and_strip_branch: fix typo'd address-of operator
Junio C Hamano [Tue, 17 Feb 2015 18:15:27 +0000 (10:15 -0800)]
Merge branch 'jk/remote-curl-an-array-in-struct-cannot-be-null'
Fix a misspelled conditional that is always true.
* jk/remote-curl-an-array-in-struct-cannot-be-null:
do not check truth value of flex arrays
Junio C Hamano [Tue, 17 Feb 2015 18:15:25 +0000 (10:15 -0800)]
Merge branch 'jc/diff-format-doc'
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.
* jc/diff-format-doc:
diff-format doc: a score can follow M for rewrite
Junio C Hamano [Tue, 17 Feb 2015 18:15:24 +0000 (10:15 -0800)]
Merge branch 'jk/dumb-http-idx-fetch-fix'
A broken pack .idx file in the receiving repository prevented the
dumb http transport from fetching a good copy of it from the other
side.
* jk/dumb-http-idx-fetch-fix:
dumb-http: do not pass NULL path to parse_pack_index
Junio C Hamano [Tue, 17 Feb 2015 18:15:23 +0000 (10:15 -0800)]
Merge branch 'mg/commit-author-no-match-malformed-message'
The error message from "git commit", when a non-existing author
name was given as value to the "--author=" parameter, has been
reworded to avoid misunderstanding.
* mg/commit-author-no-match-malformed-message:
commit: reword --author error message
Junio C Hamano [Tue, 17 Feb 2015 18:15:22 +0000 (10:15 -0800)]
Merge branch 'jc/doc-log-rev-list-options'
"git log --help" used to show rev-list options that are irrelevant
to the "log" command.
* jc/doc-log-rev-list-options:
Documentation: what does "git log --indexed-objects" even mean?
Junio C Hamano [Tue, 17 Feb 2015 18:15:20 +0000 (10:15 -0800)]
Merge branch 'jc/apply-ws-fix-expands'
"git apply --whitespace=fix" used to under-allocate the memory
when the fix resulted in a longer text than the original patch.
* jc/apply-ws-fix-expands:
apply: count the size of postimage correctly
apply: make update_pre_post_images() sanity check the given postlen
apply.c: typofix
Junio C Hamano [Tue, 17 Feb 2015 18:15:19 +0000 (10:15 -0800)]
Merge branch 'ak/add-i-empty-candidates'
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.
* ak/add-i-empty-candidates:
add -i: return from list_and_choose if there is no candidate
Junio C Hamano [Tue, 17 Feb 2015 18:15:18 +0000 (10:15 -0800)]
Merge branch 'ks/rebase-i-abbrev'
The insn sheet "git rebase -i" creates did not fully honor
core.abbrev settings.
* ks/rebase-i-abbrev:
rebase -i: use full object name internally throughout the script
Junio C Hamano [Tue, 17 Feb 2015 18:15:17 +0000 (10:15 -0800)]
Merge branch 'mh/deref-symref-over-helper-transport'
"git fetch" over a remote-helper that cannot respond to "list"
command could not fetch from a symbolic reference e.g. HEAD.
* mh/deref-symref-over-helper-transport:
transport-helper: do not request symbolic refs to remote helpers
Torsten Bögershausen [Tue, 27 Jan 2015 15:39:01 +0000 (16:39 +0100)]
test-lib.sh: set prerequisite SANITY by testing what we really need
What we wanted out of the SANITY precondition is that the filesystem
behaves sensibly with permission bits settings.
- You should not be able to remove a file in a read-only directory,
- You should not be able to tell if a file in a directory exists if
the directory lacks read or execute permission bits.
We used to cheat by approximating that condition with "is the /
writable?" test and/or "are we running as root?" test. Neither test
is sufficient or appropriate in environments like Cygwin.
Signed-off-by: Torsten Bögershausen <tboegi@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Stefan Beller [Fri, 13 Feb 2015 21:18:49 +0000 (13:18 -0800)]
hex.c: reduce memory footprint of sha1_to_hex static buffers
41 bytes is the exact number of bytes needed for having the returned
hex string represented. 50 seems to be an arbitrary number, such
that there are no benefits from alignment to certain address boundaries.
Signed-off-by: Stefan Beller <sbeller@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Дилян Палаузов [Fri, 13 Feb 2015 14:47:39 +0000 (14:47 +0000)]
do not include the same header twice
A few files include the same header file directly more than once.
As all these headers protect themselves against repeated inclusion
by the "#ifndef FOO_H / #define FOO_H / ... / #endif" idiom, leave
only the first inclusion and remove the later inclusion as a no-op
clean-up.
Signed-off-by: Дилян Палаузов <git-dpa@aegee.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Fri, 13 Feb 2015 20:20:25 +0000 (12:20 -0800)]
send-email: ask confirmation if given encoding name is very short
Sometimes people respond "y<ENTER>" (or "yes<ENTER>") when asked
this question:
Which 8bit encoding should I declare [UTF-8]?
We already have a mechanism to avoid accepting a mistyped e-mail
address (we ask to confirm when the given address lacks "@" in it);
reuse it to trigger the same confirmation when given a very short
answer. As a typical charset name is probably at least 4 chars or
longer (e.g. "UTF8" spelled without the dash, or "Big5"), this would
prevent such a mistake.
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Mike Hommey [Fri, 13 Feb 2015 05:24:46 +0000 (14:24 +0900)]
transport-helper: ask the helper to set the same options for import as for fetch
A remote helper is currently only told about the 'check-connectivity',
'cloning', and 'update-shallow' options when it supports the 'fetch'
command, but not when it supports 'import' instead.
This is especially important for the 'cloning' option, because it
means a remote helper that only supports 'import' can't distinguish
between a clone and a pull besides doing some assumptions from the
git directory state.
Signed-off-by: Mike Hommey <mh@glandium.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Mike Hommey [Fri, 13 Feb 2015 05:24:45 +0000 (14:24 +0900)]
transport-helper: ask the helper to set progress and verbosity options after asking for its capabilities
Currently, a remote helper is only told about the progress and verbosity
options for the 'fetch' and 'push' commands. This means a remote helper
that implements 'import' and 'export' can never know the user requested
progress or verbosity (or lack thereof) through the command line.
Telling the remote helper about those options after asking for its
capabilities ensures it can act accordingly for all commands.
Signed-off-by: Mike Hommey <mh@glandium.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Mike Hommey [Thu, 12 Feb 2015 10:10:01 +0000 (19:10 +0900)]
transport-helper: fix typo in error message when --signed is not supported
Signed-off-by: Mike Hommey <mh@glandium.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Wed, 11 Feb 2015 21:13:10 +0000 (13:13 -0800)]
xread/xwrite: clip MAX_IO_SIZE to SSIZE_MAX
Since
0b6806b9 (xread, xwrite: limit size of IO to 8MB, 2013-08-20),
we chomp our calls to read(2) and write(2) into chunks of
MAX_IO_SIZE bytes (8 MiB), because a large IO results in a bad
latency when the program needs to be killed. This also brought our
IO below SSIZE_MAX, which is a limit POSIX allows read(2) and
write(2) to fail when the IO size exceeds it, for OS X, where a
problem was originally reported.
However, there are other systems that define SSIZE_MAX smaller than
our default, and feeding 8 MiB to underlying read(2)/write(2) would
fail. Make sure we clip our calls to the lower limit as well.
Reported-by: Joachim Schmitz <jojo@schmitz-digital.de>
Helped-by: Torsten Bögershausen <tboegi@web.de>
Helped-by: Eric Sunshine <sunshine@sunshineco.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Wed, 11 Feb 2015 21:54:03 +0000 (13:54 -0800)]
Post 2.3 cycle (batch #1)
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Wed, 11 Feb 2015 21:44:19 +0000 (13:44 -0800)]
Merge branch 'ah/usage-strings'
* ah/usage-strings:
standardize usage info string format
Junio C Hamano [Wed, 11 Feb 2015 21:44:16 +0000 (13:44 -0800)]
Merge branch 'jc/pretty-format-doc'
* jc/pretty-format-doc:
"log --pretty" documentation: do not forget "tformat:"
Junio C Hamano [Wed, 11 Feb 2015 21:44:07 +0000 (13:44 -0800)]
Merge branch 'jc/unused-symbols'
Mark file-local symbols as "static", and drop functions that nobody
uses.
* jc/unused-symbols:
shallow.c: make check_shallow_file_for_update() static
remote.c: make clear_cas_option() static
urlmatch.c: make match_urls() static
revision.c: make save_parents() and free_saved_parents() static
line-log.c: make line_log_data_init() static
pack-bitmap.c: make pack_bitmap_filename() static
prompt.c: remove git_getpass() nobody uses
http.c: make finish_active_slot() and handle_curl_result() static
Junio C Hamano [Wed, 11 Feb 2015 21:43:56 +0000 (13:43 -0800)]
Merge branch 'jc/push-to-checkout'
Extending the js/push-to-deploy topic, the behaviour of "git push"
when updating the working tree and the index with an update to the
branch that is checked out can be tweaked by push-to-checkout hook.
* jc/push-to-checkout:
receive-pack: support push-to-checkout hook
receive-pack: refactor updateInstead codepath
Junio C Hamano [Wed, 11 Feb 2015 21:43:50 +0000 (13:43 -0800)]
Merge branch 'sb/atomic-push'
"git push" has been taught a "--atomic" option that makes push to
update more than one ref an "all-or-none" affair.
* sb/atomic-push:
Document receive.advertiseatomic
t5543-atomic-push.sh: add basic tests for atomic pushes
push.c: add an --atomic argument
send-pack.c: add --atomic command line argument
send-pack: rename ref_update_to_be_sent to check_to_send_update
receive-pack.c: negotiate atomic push support
receive-pack.c: add execute_commands_atomic function
receive-pack.c: move transaction handling in a central place
receive-pack.c: move iterating over all commands outside execute_commands
receive-pack.c: die instead of error in case of possible future bug
receive-pack.c: shorten the execute_commands loop over all commands
Junio C Hamano [Wed, 11 Feb 2015 21:43:38 +0000 (13:43 -0800)]
Merge branch 'mh/reflog-expire'
Restructure "reflog expire" to fit the reflogs better with the
recently updated ref API.
Looked reasonable (except that some shortlog entries stood out like
a sore thumb).
* mh/reflog-expire: (24 commits)
refs.c: let fprintf handle the formatting
refs.c: don't expose the internal struct ref_lock in the header file
lock_any_ref_for_update(): inline function
refs.c: remove unlock_ref/close_ref/commit_ref from the refs api
reflog_expire(): new function in the reference API
expire_reflog(): treat the policy callback data as opaque
Move newlog and last_kept_sha1 to "struct expire_reflog_cb"
expire_reflog(): move rewrite to flags argument
expire_reflog(): move verbose to flags argument
expire_reflog(): pass flags through to expire_reflog_ent()
struct expire_reflog_cb: a new callback data type
Rename expire_reflog_cb to expire_reflog_policy_cb
expire_reflog(): move updateref to flags argument
expire_reflog(): move dry_run to flags argument
expire_reflog(): add a "flags" argument
expire_reflog(): extract two policy-related functions
Extract function should_expire_reflog_ent()
expire_reflog(): use a lock_file for rewriting the reflog file
expire_reflog(): return early if the reference has no reflog
expire_reflog(): rename "ref" parameter to "refname"
...
Junio C Hamano [Wed, 11 Feb 2015 21:42:39 +0000 (13:42 -0800)]
Merge branch 'cj/log-invert-grep'
"git log --invert-grep --grep=WIP" will show only commits that do
not have the string "WIP" in their messages.
* cj/log-invert-grep:
log: teach --invert-grep option
Junio C Hamano [Wed, 11 Feb 2015 21:42:00 +0000 (13:42 -0800)]
Merge branch 'km/gettext-n'
* km/gettext-n:
gettext.h: add parentheses around N_ expansion if supported
Junio C Hamano [Wed, 11 Feb 2015 21:41:55 +0000 (13:41 -0800)]
Merge branch 'bc/http-fallback-to-password-after-krb-fails'
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.
* bc/http-fallback-to-password-after-krb-fails:
remote-curl: fall back to Basic auth if Negotiate fails
Junio C Hamano [Wed, 11 Feb 2015 21:41:51 +0000 (13:41 -0800)]
Merge branch 'dk/format-patch-ignore-diff-submodule'
Setting diff.submodule to 'log' made "git format-patch" produce
broken patches.
* dk/format-patch-ignore-diff-submodule:
format-patch: ignore diff.submodule setting
t4255: test am submodule with diff.submodule
Junio C Hamano [Wed, 11 Feb 2015 21:41:44 +0000 (13:41 -0800)]
Merge branch 'jn/rerere-fail-on-auto-update-failure'
"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.
* jn/rerere-fail-on-auto-update-failure:
rerere: error out on autoupdate failure
Junio C Hamano [Wed, 11 Feb 2015 21:39:50 +0000 (13:39 -0800)]
Merge branch 'jk/blame-commit-label'
"git blame HEAD -- missing" failed to correctly say "HEAD" when it
tried to say "No such path 'missing' in HEAD".
* jk/blame-commit-label:
blame.c: fix garbled error message
use xstrdup_or_null to replace ternary conditionals
builtin/commit.c: use xstrdup_or_null instead of envdup
builtin/apply.c: use xstrdup_or_null instead of null_strdup
git-compat-util: add xstrdup_or_null helper
Junio C Hamano [Wed, 11 Feb 2015 21:39:44 +0000 (13:39 -0800)]
Merge branch 'ld/p4-submit-hint'
* ld/p4-submit-hint:
git-p4: correct --prepare-p4-only instructions
Junio C Hamano [Wed, 11 Feb 2015 21:38:41 +0000 (13:38 -0800)]
Merge branch 'ld/p4-exclude-in-sync'
Like the "clone" subcommand, allow excluding subdirectories in the
"sync" subcommand.
* ld/p4-exclude-in-sync:
git-p4: support excluding paths on sync
Luke Diamand [Sat, 17 Jan 2015 20:56:38 +0000 (20:56 +0000)]
git-p4: support excluding paths on sync
The clone subcommand has long had support for excluding
subdirectories, but sync has not. This is a nuisance,
since as soon as you do a sync, any changed files that
were initially excluded start showing up.
Move the "exclude" command-line option into the parent
class; the actual behavior was already present there so
it simply had to be exposed.
Signed-off-by: Luke Diamand <luke@diamand.org>
Reviewed-by: Pete Wyckoff <pw@padd.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Wed, 11 Feb 2015 21:37:42 +0000 (13:37 -0800)]
Merge branch 'jc/coding-guidelines'
* jc/coding-guidelines:
CodingGuidelines: clarify C #include rules
Junio C Hamano [Wed, 11 Feb 2015 21:37:38 +0000 (13:37 -0800)]
Merge branch 'ak/typofixes'
* ak/typofixes:
t/lib-terminal.sh: fix typo
pack-bitmap: fix typo
Aleksander Boruch-Gruszecki [Sun, 8 Feb 2015 16:53:53 +0000 (17:53 +0100)]
merge-file: correctly open files when in a subdir
run_setup_gently() is called before merge-file. This may result in changing
current working directory, which wasn't taken into account when opening a file
for writing.
Fix by prepending the passed prefix. Previous var is left so that error
messages keep referring to the file from the user's working directory
perspective.
Signed-off-by: Aleksander Boruch-Gruszecki <aleksander.boruchgruszecki@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Thu, 29 Jan 2015 20:41:22 +0000 (12:41 -0800)]
apply: do not touch a file beyond a symbolic link
Because Git tracks symbolic links as symbolic links, a path that
has a symbolic link in its leading part (e.g. path/to/dir/file,
where path/to/dir is a symbolic link to somewhere else, be it
inside or outside the working tree) can never appear in a patch
that validly applies, unless the same patch first removes the
symbolic link to allow a directory to be created there.
Detect and reject such a patch.
Things to note:
- Unfortunately, we cannot reuse the has_symlink_leading_path()
from dir.c, as that is only about the working tree, but "git
apply" can be told to apply the patch only to the index or to
both the index and to the working tree.
- We cannot directly use has_symlink_leading_path() even when we
are applying only to the working tree, as an early patch of a
valid input may remove a symbolic link path/to/dir and then a
later patch of the input may create a path path/to/dir/file, but
"git apply" first checks the input without touching either the
index or the working tree. The leading symbolic link check must
be done on the interim result we compute in-core (i.e. after the
first patch, there is no path/to/dir symbolic link and it is
perfectly valid to create path/to/dir/file).
Similarly, when an input creates a symbolic link path/to/dir and
then creates a file path/to/dir/file, we need to flag it as an
error without actually creating path/to/dir symbolic link in the
filesystem.
Instead, for any patch in the input that leaves a path (i.e. a non
deletion) in the result, we check all leading paths against the
resulting tree that the patch would create by inspecting all the
patches in the input and then the target of patch application
(either the index or the working tree).
This way, we catch a mischief or a mistake to add a symbolic link
path/to/dir and a file path/to/dir/file at the same time, while
allowing a valid patch that removes a symbolic link path/to/dir and
then adds a file path/to/dir/file.
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Fri, 30 Jan 2015 23:34:13 +0000 (15:34 -0800)]
apply: do not read from beyond a symbolic link
We should reject a patch, whether it renames/copies dir/file to
elsewhere with or without modificiation, or updates dir/file in
place, if "dir/" part is actually a symbolic link to elsewhere,
by making sure that the code to read the preimage does not read
from a path that is beyond a symbolic link.
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Fri, 30 Jan 2015 23:15:59 +0000 (15:15 -0800)]
apply: do not read from the filesystem under --index
We currently read the preimage to apply a patch from the index only
when the --cached option is given. Do so also when the command is
running under the --index option. With --index, the index entry and
the working tree file for a path that is involved in a patch must be
identical, so this should not affect the result, but by reading from
the index, we will get the protection to avoid reading an unintended
path beyond a symbolic link automatically.
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Thu, 29 Jan 2015 23:35:24 +0000 (15:35 -0800)]
apply: reject input that touches outside the working area
By default, a patch that affects outside the working area (either a
Git controlled working tree, or the current working directory when
"git apply" is used as a replacement of GNU patch) is rejected as a
mistake (or a mischief). Git itself does not create such a patch,
unless the user bends over backwards and specifies a non-standard
prefix to "git diff" and friends.
When `git apply` is used as a "better GNU patch", the user can pass
the `--unsafe-paths` option to override this safety check. This
option has no effect when `--index` or `--cached` is in use.
The new test was stolen from Jeff King with slight enhancements.
Note that a few new tests for touching outside the working area by
following a symbolic link are still expected to fail at this step,
but will be fixed in later steps.
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Jeff King [Tue, 10 Feb 2015 01:07:19 +0000 (20:07 -0500)]
fast-import: avoid running end_packfile recursively
When an import has finished, we run end_packfile() to
finalize the data and move the packfile into place. If this
process fails, we call die() and end up in our die_nicely()
handler. Which unfortunately includes running end_packfile
to save any progress we made. We enter the function again,
and start operating on the pack_data struct while it is in
an inconsistent state, leading to a segfault.
One way to trigger this is to simply start two identical
fast-imports at the same time. They will both create the
same packfiles, which will then try to create identically
named ".keep" files. One will win the race, and the other
will die(), and end up with the segfault.
Since
3c078b9, we already reset the pack_data pointer to
NULL at the end of end_packfile. That covers the case of us
calling die() right after end_packfile, before we have
reinitialized the pack_data pointer. This new problem is
quite similar, except that we are worried about calling
die() _during_ end_packfile, not right after. Ideally we
would simply set pack_data to NULL as soon as we enter the
function, and operate on a copy of the pointer.
Unfortunately, it is not so easy. pack_data is a global, and
end_packfile calls into other functions which operate on the
global directly. We would have to teach each of these to
take an argument, and there is no guarantee that we would
catch all of the spots.
Instead, we can simply use a static flag to avoid
recursively entering the function. This is a little less
elegant, but it's short and fool-proof.
Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Eric Sunshine [Mon, 9 Feb 2015 21:28:07 +0000 (16:28 -0500)]
builtin/blame: destroy initialized commit_info only
Since
ea02ffa3 (mailmap: simplify map_user() interface, 2013-01-05),
find_alignment() has been invoking commit_info_destroy() on an
uninitialized auto 'struct commit_info' (when METAINFO_SHOWN is not
set). commit_info_destroy() calls strbuf_release() for each
'commit_info' strbuf member, which randomly invokes free() on
whatever random stack value happens to reside in strbuf.buf, thus
leading to periodic crashes.
Reported-by: Dilyan Palauzov <dilyan.palauzov@aegee.org>
Signed-off-by: Eric Sunshine <sunshine@sunshineco.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Jonathon Mah [Mon, 9 Feb 2015 01:15:39 +0000 (20:15 -0500)]
sha1_file: fix iterating loose alternate objects
The string in 'base' contains a path suffix to a specific object;
when its value is used, the suffix must either be filled (as in
stat_sha1_file, open_sha1_file, check_and_freshen_nonlocal) or
cleared (as in prepare_packed_git) to avoid junk at the end.
660c889e (sha1_file: add for_each iterators for loose and packed
objects, 2014-10-15) introduced loose_from_alt_odb(), but this did
neither and treated 'base' as a complete path to the "base" object
directory, instead of a pointer to the "base" of the full path
string.
The trailing path after 'base' is still initialized to NUL, hiding
the bug in some common cases. Additionally the descendent
for_each_file_in_obj_subdir() function swallows ENOENT, so an error
only shows if the alternate's path was last filled with a valid
object (where statting /path/to/existing/00/0bjectfile/00 fails).
Signed-off-by: Jonathon Mah <me@JonathonMah.com>
Helped-by: Kyle J. McKay <mackyle@gmail.com>
Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Jeff King [Mon, 9 Feb 2015 01:13:22 +0000 (20:13 -0500)]
for_each_loose_file_in_objdir: take an optional strbuf path
We feed a root "objdir" path to this iterator function,
which then copies the result into a strbuf, so that it can
repeatedly append the object sub-directories to it. Let's
make it easy for callers to just pass us a strbuf in the
first place.
We leave the original interface as a convenience for callers
who want to just pass a const string like the result of
get_object_directory().
Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>