gitweb.git
Merge branch 'tb/connect-ipv6-parse-fix'Junio C Hamano Thu, 5 Mar 2015 20:45:44 +0000 (12:45 -0800)

Merge branch 'tb/connect-ipv6-parse-fix'

We did not parse username followed by literal IPv6 address in SSH
transport URLs, e.g. ssh://user@[2001:db8::1]:22/repo.git
correctly.

* tb/connect-ipv6-parse-fix:
t5500: show user name and host in diag-url
t5601: add more test cases for IPV6
connect.c: allow ssh://user@[2001:db8::1]/repo.git

Merge branch 'jc/diff-test-updates'Junio C Hamano Thu, 5 Mar 2015 20:45:43 +0000 (12:45 -0800)

Merge branch 'jc/diff-test-updates'

Test clean-up.

* jc/diff-test-updates:
test_ln_s_add: refresh stat info of fake symbolic links
t4008: modernise style
t/diff-lib: check exact object names in compare_diff_raw
tests: do not borrow from COPYING and README from the real source
t4010: correct expected object names
t9300: correct expected object names
t4008: correct stale comments

Merge branch 'rs/simple-cleanups'Junio C Hamano Thu, 5 Mar 2015 20:45:42 +0000 (12:45 -0800)

Merge branch 'rs/simple-cleanups'

Code cleanups.

* rs/simple-cleanups:
sha1_name: use strlcpy() to copy strings
pretty: use starts_with() to check for a prefix
for-each-ref: use skip_prefix() to avoid duplicate string comparison
connect: use strcmp() for string comparison

Merge branch 'rj/no-xopen-source-for-cygwin'Junio C Hamano Thu, 5 Mar 2015 20:45:41 +0000 (12:45 -0800)

Merge branch 'rj/no-xopen-source-for-cygwin'

Code cleanups.

* rj/no-xopen-source-for-cygwin:
git-compat-util.h: remove redundant code

Merge branch 'mm/am-c-doc'Junio C Hamano Thu, 5 Mar 2015 20:45:40 +0000 (12:45 -0800)

Merge branch 'mm/am-c-doc'

The configuration variable 'mailinfo.scissors' was hard to
discover in the documentation.

* mm/am-c-doc:
Documentation/git-am.txt: mention mailinfo.scissors config variable
Documentation/config.txt: document mailinfo.scissors

Merge branch 'mh/refs-have-new'Junio C Hamano Thu, 5 Mar 2015 20:45:39 +0000 (12:45 -0800)

Merge branch 'mh/refs-have-new'

Simplify the ref transaction API around how "the ref should be
pointing at this object" is specified.

* mh/refs-have-new:
refs.h: remove duplication in function docstrings
update_ref(): improve documentation
ref_transaction_verify(): new function to check a reference's value
ref_transaction_delete(): check that old_sha1 is not null_sha1
ref_transaction_create(): check that new_sha1 is valid
commit: avoid race when creating orphan commits
commit: add tests of commit races
ref_transaction_delete(): remove "have_old" parameter
ref_transaction_update(): remove "have_old" parameter
struct ref_update: move "have_old" into "flags"
refs.c: change some "flags" to "unsigned int"
refs: remove the gap in the REF_* constant values
refs: move REF_DELETING to refs.c

Post 2.3 cycle (batch #6)Junio C Hamano Tue, 3 Mar 2015 22:39:10 +0000 (14:39 -0800)

Post 2.3 cycle (batch #6)

Signed-off-by: Junio C Hamano <gitster@pobox.com>

Merge branch 'jk/daemon-interpolate'Junio C Hamano Tue, 3 Mar 2015 22:37:05 +0000 (14:37 -0800)

Merge branch 'jk/daemon-interpolate'

The "interpolated-path" option of "git daemon" inserted any string
client declared on the "host=" capability request without checking.
Sanitize and limit %H and %CH to a saner and a valid DNS name.

* jk/daemon-interpolate:
daemon: sanitize incoming virtual hostname
t5570: test git-daemon's --interpolated-path option
git_connect: let user override virtual-host we send to daemon

Merge branch 'rs/daemon-interpolate'Junio C Hamano Tue, 3 Mar 2015 22:37:04 +0000 (14:37 -0800)

Merge branch 'rs/daemon-interpolate'

"git daemon" looked up the hostname even when "%CH" and "%IP"
interpolations are not requested, which was unnecessary.

* rs/daemon-interpolate:
daemon: use callback to build interpolated path
daemon: look up client-supplied hostname lazily

Merge branch 'km/send-email-getopt-long-workarounds'Junio C Hamano Tue, 3 Mar 2015 22:37:03 +0000 (14:37 -0800)

Merge branch 'km/send-email-getopt-long-workarounds'

Even though we officially haven't dropped Perl 5.8 support, the
Getopt::Long package that came with it does not support "--no-"
prefix to negate a boolean option; manually add support to help
people with older Getopt::Long package.

* km/send-email-getopt-long-workarounds:
git-send-email.perl: support no- prefix with older GetOptions

Merge branch 'jc/apply-ws-fix-expands-report'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

Merge branch 'jc/apply-beyond-symlink'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

Post 2.3 cyle (batch #5)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>

Merge branch 'ak/git-pm-typofix'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

Merge branch 'sb/plug-leak-in-make-cache-entry'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

Merge branch 'mh/transport-capabilities'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

Merge branch 'jc/send-email-sensible-encoding'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

Merge branch 'jk/sanity'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

Merge branch 'sb/hex-object-name-is-at-most-41-bytes... 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

Merge branch 'jk/fast-import-die-nicely-fix'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

Merge branch 'dp/remove-duplicated-header-inclusion'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

Merge branch 'jc/max-io-size-and-ssize-max'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

Merge branch 'tc/missing-http-proxyauth'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

Merge branch 'jk/strbuf-doc-to-header'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

Merge branch 'nd/attr-optim'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

Merge branch 'jn/doc-api-errors'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

Sync with 2.3.1Junio C Hamano Wed, 25 Feb 2015 06:15:49 +0000 (22:15 -0800)

Sync with 2.3.1

Git 2.3.1 v2.3.1Junio 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>

Merge branch 'ak/add-i-empty-candidates' into maintJunio 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

Merge branch 'jc/apply-ws-fix-expands' into maintJunio 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

Merge branch 'jc/doc-log-rev-list-options' into maintJunio 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?

Merge branch 'mg/commit-author-no-match-malformed-messa... 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

Merge branch 'jk/dumb-http-idx-fetch-fix' into maintJunio 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

Merge branch 'jc/diff-format-doc' into maintJunio 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

Merge branch 'jk/remote-curl-an-array-in-struct-cannot... 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

Merge branch 'jk/status-read-branch-name-fix' into... 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

Merge branch 'mg/push-repo-option-doc' into maintJunio 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

Merge branch 'bc/http-fallback-to-password-after-krb... 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

Merge branch 'dk/format-patch-ignore-diff-submodule... 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

Merge branch 'jn/rerere-fail-on-auto-update-failure... 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

Merge branch 'jk/blame-commit-label' into maintJunio 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

test_ln_s_add: refresh stat info of fake symbolic linksJohannes Sixt Mon, 23 Feb 2015 18:14:47 +0000 (19:14 +0100)

test_ln_s_add: refresh stat info of fake symbolic links

We have a helper function test_ln_s_add that inserts a symbolic link
into the index even if the file system does not support symbolic links.
There is a small flaw in the emulation path: the added entry does not
pick up stat information of the fake symbolic link from the file system,
as a consequence, the index is not exactly the same as for the "regular"
path (where symbolic links are available). To fix this, just call
git update-index again.

This flaw was revealed by the earlier change that tightened
compare_diff_raw(), because a test case in t4008 depends on the
correctly updated index.

Signed-off-by: Johannes Sixt <j6t@kdbg.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

git-compat-util.h: remove redundant codeRamsay Jones Mon, 23 Feb 2015 00:07:14 +0000 (00:07 +0000)

git-compat-util.h: remove redundant code

Since commit 3a0a3a89 ("git-compat-util.h: don't define _XOPEN_SOURCE
on cygwin", 23-11-2014) removed the definition of _XOPEN_SOURCE on
cygwin, the code within a pre-processor conditional further down the
file became redundant. Remove the redundant code.

This effectively reverts commit 41b20017 ("Fix an "implicit function
definition" warning", 03-03-2007).

Signed-off-by: Ramsay Jones <ramsay@ramsay1.demon.co.uk>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Post 2.3 cycle (batch #4)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>

Merge branch 'jc/conf-var-doc'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

Merge branch 'es/squelch-openssl-warnings-on-macosx'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

Merge branch 'tc/curl-vernum-output-broken-in-7.11'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

Merge branch 'jk/prune-mtime'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

Merge branch 'jc/diff-files-ita'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

Merge branch 'ps/submodule-sanitize-path-upon-add'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

Merge branch 'ab/merge-file-prefix'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

Merge branch 'es/blame-commit-info-fix'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

Merge branch 'ss/check-builtins-on-windows'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

t5500: show user name and host in diag-urlTorsten Bögershausen Sat, 21 Feb 2015 15:52:55 +0000 (16:52 +0100)

t5500: show user name and host in diag-url

The URL for ssh may have include a username before the hostname,
like ssh://user@host/repo.
When literal IPV6 addresses are used together with a username,
the substring "user@[::1]" must be converted into "user@::1".

Make that conversion visible for the user, and write userandhost
in the diagnostics

Signed-off-by: Torsten Bögershausen <tboegi@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

t5601: add more test cases for IPV6Torsten Bögershausen Sat, 21 Feb 2015 15:53:01 +0000 (16:53 +0100)

t5601: add more test cases for IPV6

Test the parsing of literall IPV6 addresses more systematically:
- with and without brackets (e.g. ::1 [::1])
- with brackets and port number: (e.g. [::1]:22)
- with username (e.g. user@::1)
- with username and brackets:
Because user@[::1] was not supported on older Git version,
[user@::1] had to be used as a workaround.
Test that user@::1 user@[::1] and [user@::1] all do the same.

Signed-off-by: Torsten Bögershausen <tboegi@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

connect.c: allow ssh://user@[2001:db8::1]/repo.gitTorsten Bögershausen Sat, 21 Feb 2015 15:52:48 +0000 (16:52 +0100)

connect.c: allow ssh://user@[2001:db8::1]/repo.git

The ssh:// syntax was added in 2386d658 (Add first cut at "git
protocol" connect logic., 2005-07-13), it accepted
ssh://user@2001:db8::1/repo.git, which is now legacy.

Over the years the parser was improved to support [] and port numbers,
but the combination of ssh://user@[2001:db8::1]:222/repo.git did
never work.

The only only way to use a user name, a literall IPV6 address and a port
number was ssh://[user@2001:db8::1]:222/repo.git

(Thanks to Christian Taube <lists@hcf.yourweb.de> for reporting this long
standing issue)

New users would use ssh://user@[2001:db8::1]:222/repo.git,
so change the parser to handle it correctly.

Support the old legacy URLs as well, to be backwards compatible,
and avoid regressions for users which upgrade an existing installation
to a later Git version.

Signed-off-by: Torsten Bögershausen <tboegi@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

sha1_name: use strlcpy() to copy stringsRené Scharfe Sat, 21 Feb 2015 19:55:22 +0000 (20:55 +0100)

sha1_name: use strlcpy() to copy strings

Use strlcpy() instead of calling strncpy() and then setting the last
byte of the target buffer to NUL explicitly. This shortens and
simplifies the code a bit.

Signed-of-by: Rene Scharfe <l.s.r@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

pretty: use starts_with() to check for a prefixRené Scharfe Sat, 21 Feb 2015 19:53:09 +0000 (20:53 +0100)

pretty: use starts_with() to check for a prefix

Simplify the code and avoid duplication by using starts_with() instead
of strlen() and strncmp() to check if a line starts with "encoding ".

Signed-off-by: Rene Scharfe <l.s.r@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

for-each-ref: use skip_prefix() to avoid duplicate... René Scharfe Sat, 21 Feb 2015 19:51:28 +0000 (20:51 +0100)

for-each-ref: use skip_prefix() to avoid duplicate string comparison

Use skip_prefix() to get the part after "color:" (if present) and only
compare it with "reset" instead of comparing the whole string again.
This gets rid of the duplicate "color:" part of the string constant.

Signed-off-by: Rene Scharfe <l.s.r@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

connect: use strcmp() for string comparisonRené Scharfe Sat, 21 Feb 2015 19:49:58 +0000 (20:49 +0100)

connect: use strcmp() for string comparison

Get rid of magic string length constants and simply compare the strings
using strcmp(). This makes the intent of the code a bit clearer.

Signed-off-by: Rene Scharfe <l.s.r@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Documentation/git-am.txt: mention mailinfo.scissors... Matthieu Moy Fri, 20 Feb 2015 19:32:21 +0000 (20:32 +0100)

Documentation/git-am.txt: mention mailinfo.scissors config variable

It was already documented, but the user had to follow the link to
git-mailinfo.txt to find it.

Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Documentation/config.txt: document mailinfo.scissorsMatthieu Moy Fri, 20 Feb 2015 19:32:20 +0000 (20:32 +0100)

Documentation/config.txt: document mailinfo.scissors

The variable was documented in git-mailinfo.txt, but not in config.txt.
The detailed documentation is still the one of --scissors in
git-mailinfo.txt, but we give enough information here to let the user
understand what it is about, and to make it easy to find it (e.g.
searching ">8" and "8<" finds it).

Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Git.pm: two minor typo fixesAlexander 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>

Post 2.3 cycle (batch #3)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>

Merge branch 'jc/push-cert'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

Merge branch 'jk/decimal-width-for-uintmax'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

Merge branch 'jk/config-no-ungetc-eof'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

Merge branch 'jk/pack-bitmap'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

Merge branch 'jc/remote-set-url-doc'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

Merge branch 'ch/new-gpg-drops-rfc-1991'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

Merge branch 'ye/http-accept-language'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

Merge branch 'av/wincred-with-at-in-username-fix'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 "@"

daemon: use callback to build interpolated pathRené Scharfe Sun, 15 Feb 2015 18:33:52 +0000 (19:33 +0100)

daemon: use callback to build interpolated path

Provide a callback function for strbuf_expand() instead of using the
helper strbuf_expand_dict_cb(). While the resulting code is longer, it
only looks up the canonical hostname and IP address if at least one of
the placeholders %CH and %IP are used with --interpolated-path.

Use a struct for passing the directory to the callback function instead
of passing it directly to avoid having to cast away its const qualifier.

Signed-off-by: Rene Scharfe <l.s.r@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

daemon: look up client-supplied hostname lazilyRené Scharfe Sun, 15 Feb 2015 18:31:41 +0000 (19:31 +0100)

daemon: look up client-supplied hostname lazily

Look up canonical hostname and IP address using getaddrinfo(3) or
gethostbyname(3) only if --interpolated-path or --access-hook were
specified.

Do that by introducing getter functions for canon_hostname and
ip_address and using them for all read accesses. These wrappers call
the new helper lookup_hostname(), which sets the variables only at its
first call.

Signed-off-by: Rene Scharfe <l.s.r@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

daemon: sanitize incoming virtual hostnameJeff King Tue, 17 Feb 2015 19:09:24 +0000 (14:09 -0500)

daemon: sanitize incoming virtual hostname

We use the daemon_avoid_alias function to make sure that the
pathname the user gives us is sane. However, after applying
that check, we might then interpolate the path using a
string given by the server admin, but which may contain more
untrusted data from the client. We should be sure to
sanitize this data, as well.

We cannot use daemon_avoid_alias here, as it is more strict
than we need in requiring a leading '/'. At the same time,
we can be much more strict here. We are interpreting a
hostname, which should not contain slashes or excessive runs
of dots, as those things are not allowed in DNS names.

Note that in addition to cleansing the hostname field, we
must check the "canonical hostname" (%CH) as well as the
port (%P), which we take as a raw string. For the canonical
hostname, this comes from an actual DNS lookup on the
accessed IP, which makes it a much less likely vector for
problems. But it does not hurt to sanitize it in the same
way. Unfortunately we cannot test this case easily, as it
would involve a custom hostname lookup.

We do not need to check %IP, as it comes straight from
inet_ntop, so must have a sane form.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

t5570: test git-daemon's --interpolated-path optionJeff King Tue, 17 Feb 2015 08:40:57 +0000 (03:40 -0500)

t5570: test git-daemon's --interpolated-path option

We did not test this at all; let's just give a basic sanity
check that we can find a path based on virtual hosting, and
that the downcase canonicalization works.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

git_connect: let user override virtual-host we send... Jeff King Tue, 17 Feb 2015 08:37:35 +0000 (03:37 -0500)

git_connect: let user override virtual-host we send to daemon

When we connect to a git-daemon at a given host and port, we
actually send the string "localhost:9418" to the other side,
which allows it to do virtual-hosting lookups. For testing
and debugging, we'd like to be able to send arbitrary
strings, rather than the hostname we actually connected to.

Using "insteadOf" config does not work for this purpose, as
the hostname determination happens at a very low level,
right before we feed the hostname to our lookup routines.
You could use /etc/hosts or similar to get around this, but
we cannot do that portably from our test suite.

Instead, this patch provides an environment variable that
can be used to send an arbitrary string.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

refs.h: remove duplication in function docstringsMichael Haggerty Tue, 17 Feb 2015 17:00:23 +0000 (18:00 +0100)

refs.h: remove duplication in function docstrings

Add more information to the comment introducing the four reference
transaction update functions, so that each function's docstring
doesn't have to repeat it. Add a pointer from the individual
functions' docstrings to the introductory comment.

Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

update_ref(): improve documentationMichael Haggerty Tue, 17 Feb 2015 17:00:22 +0000 (18:00 +0100)

update_ref(): improve documentation

Add a docstring for update_ref(), emphasizing its similarity to
ref_transaction_update(). Rename its parameters to match those of
ref_transaction_update().

Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Reviewed-by: Stefan Beller <sbeller@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

ref_transaction_verify(): new function to check a refer... Michael Haggerty Tue, 17 Feb 2015 17:00:21 +0000 (18:00 +0100)

ref_transaction_verify(): new function to check a reference's value

If NULL is passed to ref_transaction_update()'s new_sha1 parameter,
then just verify old_sha1 (under lock) without trying to change the
new value of the reference.

Use this functionality to add a new function ref_transaction_verify(),
which checks the current value of the reference under lock but doesn't
change it.

Use ref_transaction_verify() in the implementation of "git update-ref
--stdin"'s "verify" command to avoid the awkward need to "update" the
reference to its existing value.

Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Reviewed-by: Stefan Beller <sbeller@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

ref_transaction_delete(): check that old_sha1 is not... Michael Haggerty Tue, 17 Feb 2015 17:00:20 +0000 (18:00 +0100)

ref_transaction_delete(): check that old_sha1 is not null_sha1

It makes no sense to delete a reference that is already known not to
exist.

Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Reviewed-by: Stefan Beller <sbeller@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

ref_transaction_create(): check that new_sha1 is validMichael Haggerty Tue, 17 Feb 2015 17:00:19 +0000 (18:00 +0100)

ref_transaction_create(): check that new_sha1 is valid

Creating a reference requires a new_sha1 that is not NULL and not
null_sha1.

Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Reviewed-by: Stefan Beller <sbeller@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

commit: avoid race when creating orphan commitsMichael Haggerty Tue, 17 Feb 2015 17:00:18 +0000 (18:00 +0100)

commit: avoid race when creating orphan commits

If HEAD doesn't point at anything during the initial check, then we
should make sure that it *still* doesn't point at anything when we are
ready to update the reference. Otherwise, another process might commit
while we are working (e.g., while we are waiting for the user to edit
the commit message) and we will silently overwrite it.

This fixes a failing test in t7516.

Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Reviewed-by: Stefan Beller <sbeller@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

commit: add tests of commit racesMichael Haggerty Tue, 17 Feb 2015 17:00:17 +0000 (18:00 +0100)

commit: add tests of commit races

Committing involves the following steps:

1. Determine the current value of HEAD (if any).
2. Create the new commit object.
3. Update HEAD.

Please note that step 2 can take arbitrarily long, because it might
involve the user editing a commit message.

If a second process sneaks in a commit during step 2, then the first
commit process should fail. This is usually done correctly, because
step 3 verifies that HEAD still points at the same commit that it
pointed to during step 1.

However, if there is a race when creating an *orphan* commit, then the
test in step 3 is skipped.

Add tests for proper handling of such races. One of the new tests
fails. It will be fixed in a moment.

Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

ref_transaction_delete(): remove "have_old" parameterMichael Haggerty Tue, 17 Feb 2015 17:00:16 +0000 (18:00 +0100)

ref_transaction_delete(): remove "have_old" parameter

Instead, verify the reference's old value if and only if old_sha1 is
non-NULL.

Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Reviewed-by: Stefan Beller <sbeller@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

ref_transaction_update(): remove "have_old" parameterMichael Haggerty Tue, 17 Feb 2015 17:00:15 +0000 (18:00 +0100)

ref_transaction_update(): remove "have_old" parameter

Instead, verify the reference's old value if and only if old_sha1 is
non-NULL.

ref_transaction_delete() will get the same treatment in a moment.

Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Reviewed-by: Stefan Beller <sbeller@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

struct ref_update: move "have_old" into "flags"Michael Haggerty Tue, 17 Feb 2015 17:00:14 +0000 (18:00 +0100)

struct ref_update: move "have_old" into "flags"

Instead of having a separate have_old field, record this boolean value
as a bit in the "flags" field.

Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

refs.c: change some "flags" to "unsigned int"Michael Haggerty Tue, 17 Feb 2015 17:00:13 +0000 (18:00 +0100)

refs.c: change some "flags" to "unsigned int"

Change the following functions' "flags" arguments from "int" to
"unsigned int":

* ref_transaction_update()
* ref_transaction_create()
* ref_transaction_delete()
* update_ref()
* delete_ref()
* lock_ref_sha1_basic()

Also change the "flags" member in "struct ref_update" to unsigned.

Suggested-by: Junio C Hamano <gitster@pobox.com>
Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

read-cache.c: free cache entry when refreshing failsStefan 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>

Post 2.3 cycle (batch #2)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>

Merge branch 'mg/push-repo-option-doc'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

Merge branch 'jc/t4122-use-test-write-lines'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

Merge branch 'jk/status-read-branch-name-fix'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

Merge branch 'jk/remote-curl-an-array-in-struct-cannot... 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

Merge branch 'jc/diff-format-doc'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

Merge branch 'jk/dumb-http-idx-fetch-fix'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

Merge branch 'mg/commit-author-no-match-malformed-message'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

Merge branch 'jc/doc-log-rev-list-options'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?

Merge branch 'jc/apply-ws-fix-expands'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

Merge branch 'ak/add-i-empty-candidates'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