git/mjg.git
9 years agoInterested in helping open source friends on HP-UX?HP-UX
Jeff King [Thu, 19 Feb 2015 12:54:33 +0000 (19 07:54 -0500)]
Interested in helping open source friends on HP-UX?

On Thu, Feb 19, 2015 at 12:20:02PM +0100, Michael J Gruber wrote:

> OK, so we should use NO_ICONV on HP_UX then.
>
> >> Failing so many tests with NO_ICONV is certainly not ideal, but I'm not
> >> sure we should care to protect so many tests with a prerequisite.
> >
> > How feasible is it to isolate those tests into separate test files that
> > people that know to not use e.g. Asian can safely ignore them?
>
> We have the prerequisite mechanism for that, and most probably, the
> tests are "isolated" already, in the sense that with NO_ICONV, only
> trivial setup tests succeed for those test files but all "proper" tests
> fail. But I'll check. Need a good test to set the prerequisite, though.

I took a first pass at this. The results are below (and I am hoping one
of you can use it as a base to build on, as I do not want to commit to
doing the second half, as you will see :) ).

It passes NO_ICONV through to the test suite, sets up a prerequisite,
disables some test scripts which are purely about i18n (e.g.,
t3900-i18n-commit), and marks some of the scripts with one-off tests
using the ICONV prereq.

Note that it also has some code changes around reencode_string_len.
These aren't strictly necessary, but they silence gcc warnings when
compiled with NO_ICONV. In that case we do:

  #define reencode_string_len(a,b,c,d,e) NULL

but "e" is an out-parameter. We don't promise it is valid if the
function returns NULL (which it does here). I'm kind of surprised the
compiler doesn't realize that:

  foo = reencode_string_len(...);
  if (foo)
bar();

is dead code, since the first line becomes "foo = NULL". So that's
optional.

So, on to the tricky parts. Here are the failures that remain:

  1. The script builds up a commit history through the script, and later
     tests depend on this for things like commit timestamps or the exact
     shape of history. t9350 is an example of this (it has one failing
     test which can be marked, but then other tests later fail in
     confusing ways).

  2. The script creates commits with encoded commit messages, then uses
     those both for cases that care about the encoding, and those that
     do not. t4041 is an example here. I think it would be best to use
     vanilla commit mesages for the main body of tests, and then
     explicitly test the encoding-related features separately. I think
     t4205 and t6006 are in this boat, too.

I also tested this on a system with a working "iconv". If we are
building with NO_ICONV, I am tempted to say that there should be no need
to run the "iconv" command-line program at all. But t6006, for example,
does it a lot outside of any test_expect_*. Probably it should be:

  test_lazy_prereq ICONV '
test -z "$NO_ICONV" &&
utf8_o=$(printf "\303\263") &&
latin1_o=$(printf "\363") &&
test "$(echo $utf8_o | iconv -f UTF-8 -t ISO-8559-1)" = "$latin1_o"
  '

or something, and all of that setup should be wrapped in a
"test_expect_success ICONV ...". Of course that is the easy part. The
hard part is splitting the ICONV setup from the vanilla commit setup so
that the other tests can run.

9 years agotests: avoid cp -P
Michael J Gruber [Thu, 19 Feb 2015 10:22:53 +0000 (19 11:22 +0100)]
tests: avoid cp -P

Some cp implementations do not understand -P for preserving symlinks.
Use tar instead.

9 years agotests: use $TAR, not tar
Michael J Gruber [Thu, 19 Feb 2015 10:06:20 +0000 (19 11:06 +0100)]
tests: use $TAR, not tar

Some of our tests use $TAR (which defaults to "tar"), some tar. make all
of them use $TAR consistently.

9 years agotests: avoid z option to tar
Michael J Gruber [Thu, 19 Feb 2015 09:29:19 +0000 (19 10:29 +0100)]
tests: avoid z option to tar

Some versions of tar don't have the z option for compression,
and we don't really need it. So avoid it.

9 years agoMerge branch 'master' into next
Junio C Hamano [Tue, 17 Feb 2015 19:29:29 +0000 (17 11:29 -0800)]
Merge branch 'master' into next

* master:
  Post 2.3 cycle (batch #2)

9 years agoPost 2.3 cycle (batch #2)
Junio C Hamano [Tue, 17 Feb 2015 18:22:17 +0000 (17 10:22 -0800)]
Post 2.3 cycle (batch #2)

Signed-off-by: Junio C Hamano <gitster@pobox.com>
9 years agoMerge branch 'mg/push-repo-option-doc'
Junio C Hamano [Tue, 17 Feb 2015 18:15:30 +0000 (17 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

9 years agoMerge branch 'jc/t4122-use-test-write-lines'
Junio C Hamano [Tue, 17 Feb 2015 18:15:29 +0000 (17 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

9 years agoMerge branch 'jk/status-read-branch-name-fix'
Junio C Hamano [Tue, 17 Feb 2015 18:15:28 +0000 (17 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

9 years agoMerge branch 'jk/remote-curl-an-array-in-struct-cannot-be-null'
Junio C Hamano [Tue, 17 Feb 2015 18:15:27 +0000 (17 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

9 years agoMerge branch 'jc/diff-format-doc'
Junio C Hamano [Tue, 17 Feb 2015 18:15:25 +0000 (17 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

9 years agoMerge branch 'jk/dumb-http-idx-fetch-fix'
Junio C Hamano [Tue, 17 Feb 2015 18:15:24 +0000 (17 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

9 years agoMerge branch 'mg/commit-author-no-match-malformed-message'
Junio C Hamano [Tue, 17 Feb 2015 18:15:23 +0000 (17 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

9 years agoMerge branch 'jc/doc-log-rev-list-options'
Junio C Hamano [Tue, 17 Feb 2015 18:15:22 +0000 (17 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?

9 years agoMerge branch 'jc/apply-ws-fix-expands'
Junio C Hamano [Tue, 17 Feb 2015 18:15:20 +0000 (17 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

9 years agoMerge branch 'ak/add-i-empty-candidates'
Junio C Hamano [Tue, 17 Feb 2015 18:15:19 +0000 (17 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

9 years agoMerge branch 'ks/rebase-i-abbrev'
Junio C Hamano [Tue, 17 Feb 2015 18:15:18 +0000 (17 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

9 years agoMerge branch 'mh/deref-symref-over-helper-transport'
Junio C Hamano [Tue, 17 Feb 2015 18:15:17 +0000 (17 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

9 years agoMerge branch 'jc/diff-files-ita' into next
Junio C Hamano [Mon, 16 Feb 2015 23:10:20 +0000 (16 15:10 -0800)]
Merge branch 'jc/diff-files-ita' into next

Code cleanup.

* jc/diff-files-ita:
  run_diff_files(): clarify computation of sha1 validity

9 years agoMerge branch 'jc/conf-var-doc' into next
Junio C Hamano [Mon, 16 Feb 2015 23:10:19 +0000 (16 15:10 -0800)]
Merge branch 'jc/conf-var-doc' into next

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

9 years agoMerge branch 'ps/submodule-sanitize-path-upon-add' into next
Junio C Hamano [Mon, 16 Feb 2015 23:10:18 +0000 (16 15:10 -0800)]
Merge branch 'ps/submodule-sanitize-path-upon-add' into next

"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

9 years agoMerge branch 'jc/remote-set-url-doc' into next
Junio C Hamano [Mon, 16 Feb 2015 23:10:17 +0000 (16 15:10 -0800)]
Merge branch 'jc/remote-set-url-doc' into next

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

9 years agoMerge branch 'ch/new-gpg-drops-rfc-1991' into next
Junio C Hamano [Mon, 16 Feb 2015 23:10:16 +0000 (16 15:10 -0800)]
Merge branch 'ch/new-gpg-drops-rfc-1991' into next

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

9 years agoMerge branch 'ye/http-accept-language' into next
Junio C Hamano [Mon, 16 Feb 2015 23:10:15 +0000 (16 15:10 -0800)]
Merge branch 'ye/http-accept-language' into next

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

9 years agoMerge branch 'av/wincred-with-at-in-username-fix' into next
Junio C Hamano [Mon, 16 Feb 2015 23:10:14 +0000 (16 15:10 -0800)]
Merge branch 'av/wincred-with-at-in-username-fix' into next

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 "@"

9 years agoMerge branch 'tc/curl-vernum-output-broken-in-7.11' into next
Junio C Hamano [Mon, 16 Feb 2015 23:10:13 +0000 (16 15:10 -0800)]
Merge branch 'tc/curl-vernum-output-broken-in-7.11' into next

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

9 years agoMerge branch 'ab/merge-file-prefix' into next
Junio C Hamano [Mon, 16 Feb 2015 23:10:12 +0000 (16 15:10 -0800)]
Merge branch 'ab/merge-file-prefix' into next

"git merge-file" did not work correctly in a subdirectory.

* ab/merge-file-prefix:
  merge-file: correctly open files when in a subdir

9 years agoMerge branch 'es/blame-commit-info-fix' into next
Junio C Hamano [Mon, 16 Feb 2015 23:10:11 +0000 (16 15:10 -0800)]
Merge branch 'es/blame-commit-info-fix' into next

"git blame" died, trying to free an uninitialized piece of memory.

* es/blame-commit-info-fix:
  builtin/blame: destroy initialized commit_info only

9 years agoMerge branch 'es/squelch-openssl-warnings-on-macosx' into next
Junio C Hamano [Mon, 16 Feb 2015 23:10:10 +0000 (16 15:10 -0800)]
Merge branch 'es/squelch-openssl-warnings-on-macosx' into next

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

9 years agoMerge branch 'ss/check-builtins-on-windows' into next
Junio C Hamano [Mon, 16 Feb 2015 23:10:09 +0000 (16 15:10 -0800)]
Merge branch 'ss/check-builtins-on-windows' into next

* ss/check-builtins-on-windows:
  check-builtins: strip executable suffix $X when enumerating builtins

9 years agoMerge branch 'jc/push-cert' into next
Junio C Hamano [Mon, 16 Feb 2015 23:10:07 +0000 (16 15:10 -0800)]
Merge branch 'jc/push-cert' into next

"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

9 years agoMerge branch 'jk/prune-mtime' into next
Junio C Hamano [Mon, 16 Feb 2015 23:10:06 +0000 (16 15:10 -0800)]
Merge branch 'jk/prune-mtime' into next

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

9 years agoMerge branch 'jk/decimal-width-for-uintmax' into next
Junio C Hamano [Mon, 16 Feb 2015 23:10:05 +0000 (16 15:10 -0800)]
Merge branch 'jk/decimal-width-for-uintmax' into next

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

9 years agoMerge branch 'jk/config-no-ungetc-eof' into next
Junio C Hamano [Mon, 16 Feb 2015 23:10:04 +0000 (16 15:10 -0800)]
Merge branch 'jk/config-no-ungetc-eof' into next

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

9 years agoMerge branch 'jk/pack-bitmap' into next
Junio C Hamano [Mon, 16 Feb 2015 23:10:03 +0000 (16 15:10 -0800)]
Merge branch 'jk/pack-bitmap' into next

The pack bitmap support did not build with older versions of GCC.

* jk/pack-bitmap:
  ewah: fix building with gcc < 3.4.0

9 years agoMerge branch 'mg/push-repo-option-doc' into next
Junio C Hamano [Thu, 12 Feb 2015 21:57:01 +0000 (12 13:57 -0800)]
Merge branch 'mg/push-repo-option-doc' into next

The "git push" documentation made the "--repo=<there>" option
easily misunderstood.

* mg/push-repo-option-doc:
  git-push.txt: document the behavior of --repo

9 years agoMerge branch 'jc/t4122-use-test-write-lines' into next
Junio C Hamano [Thu, 12 Feb 2015 21:57:00 +0000 (12 13:57 -0800)]
Merge branch 'jc/t4122-use-test-write-lines' into next

* jc/t4122-use-test-write-lines:
  t4122: use test_write_lines from test-lib-functions

9 years agoMerge branch 'jk/status-read-branch-name-fix' into next
Junio C Hamano [Thu, 12 Feb 2015 21:56:59 +0000 (12 13:56 -0800)]
Merge branch 'jk/status-read-branch-name-fix' into next

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

9 years agoMerge branch 'jk/remote-curl-an-array-in-struct-cannot-be-null' into next
Junio C Hamano [Thu, 12 Feb 2015 21:56:57 +0000 (12 13:56 -0800)]
Merge branch 'jk/remote-curl-an-array-in-struct-cannot-be-null' into next

* jk/remote-curl-an-array-in-struct-cannot-be-null:
  do not check truth value of flex arrays

9 years agoMerge branch 'jc/diff-format-doc' into next
Junio C Hamano [Thu, 12 Feb 2015 21:56:56 +0000 (12 13:56 -0800)]
Merge branch 'jc/diff-format-doc' into next

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

9 years agoMerge branch 'jk/dumb-http-idx-fetch-fix' into next
Junio C Hamano [Thu, 12 Feb 2015 21:56:55 +0000 (12 13:56 -0800)]
Merge branch 'jk/dumb-http-idx-fetch-fix' into next

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

9 years agoMerge branch 'mg/commit-author-no-match-malformed-message' into next
Junio C Hamano [Thu, 12 Feb 2015 21:56:54 +0000 (12 13:56 -0800)]
Merge branch 'mg/commit-author-no-match-malformed-message' into next

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

9 years agoMerge branch 'jc/doc-log-rev-list-options' into next
Junio C Hamano [Thu, 12 Feb 2015 21:56:52 +0000 (12 13:56 -0800)]
Merge branch 'jc/doc-log-rev-list-options' into next

"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?

9 years agoMerge branch 'jc/apply-ws-fix-expands' into next
Junio C Hamano [Thu, 12 Feb 2015 21:56:51 +0000 (12 13:56 -0800)]
Merge branch 'jc/apply-ws-fix-expands' into next

"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

9 years agoMerge branch 'ak/add-i-empty-candidates' into next
Junio C Hamano [Thu, 12 Feb 2015 21:56:50 +0000 (12 13:56 -0800)]
Merge branch 'ak/add-i-empty-candidates' into next

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

9 years agoMerge branch 'ks/rebase-i-abbrev' into next
Junio C Hamano [Thu, 12 Feb 2015 21:56:49 +0000 (12 13:56 -0800)]
Merge branch 'ks/rebase-i-abbrev' into next

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

9 years agoMerge branch 'mh/deref-symref-over-helper-transport' into next
Junio C Hamano [Thu, 12 Feb 2015 21:56:48 +0000 (12 13:56 -0800)]
Merge branch 'mh/deref-symref-over-helper-transport' into next

"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

9 years agotransport-helper: fix typo in error message when --signed is not supported
Mike Hommey [Thu, 12 Feb 2015 10:10:01 +0000 (12 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>
9 years agoPost 2.3 cycle (batch #1)
Junio C Hamano [Wed, 11 Feb 2015 21:54:03 +0000 (11 13:54 -0800)]
Post 2.3 cycle (batch #1)

Signed-off-by: Junio C Hamano <gitster@pobox.com>
9 years agoMerge branch 'ah/usage-strings'
Junio C Hamano [Wed, 11 Feb 2015 21:44:19 +0000 (11 13:44 -0800)]
Merge branch 'ah/usage-strings'

* ah/usage-strings:
  standardize usage info string format

9 years agoMerge branch 'jc/pretty-format-doc'
Junio C Hamano [Wed, 11 Feb 2015 21:44:16 +0000 (11 13:44 -0800)]
Merge branch 'jc/pretty-format-doc'

* jc/pretty-format-doc:
  "log --pretty" documentation: do not forget "tformat:"

9 years agoMerge branch 'jc/unused-symbols'
Junio C Hamano [Wed, 11 Feb 2015 21:44:07 +0000 (11 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

9 years agoMerge branch 'jc/push-to-checkout'
Junio C Hamano [Wed, 11 Feb 2015 21:43:56 +0000 (11 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

9 years agoMerge branch 'sb/atomic-push'
Junio C Hamano [Wed, 11 Feb 2015 21:43:50 +0000 (11 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

9 years agoMerge branch 'mh/reflog-expire'
Junio C Hamano [Wed, 11 Feb 2015 21:43:38 +0000 (11 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"
  ...

9 years agoMerge branch 'cj/log-invert-grep'
Junio C Hamano [Wed, 11 Feb 2015 21:42:39 +0000 (11 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

9 years agoMerge branch 'km/gettext-n'
Junio C Hamano [Wed, 11 Feb 2015 21:42:00 +0000 (11 13:42 -0800)]
Merge branch 'km/gettext-n'

* km/gettext-n:
  gettext.h: add parentheses around N_ expansion if supported

9 years agoMerge branch 'bc/http-fallback-to-password-after-krb-fails'
Junio C Hamano [Wed, 11 Feb 2015 21:41:55 +0000 (11 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

9 years agoMerge branch 'dk/format-patch-ignore-diff-submodule'
Junio C Hamano [Wed, 11 Feb 2015 21:41:51 +0000 (11 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

9 years agoMerge branch 'jn/rerere-fail-on-auto-update-failure'
Junio C Hamano [Wed, 11 Feb 2015 21:41:44 +0000 (11 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

9 years agoMerge branch 'jk/blame-commit-label'
Junio C Hamano [Wed, 11 Feb 2015 21:39:50 +0000 (11 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

9 years agoMerge branch 'ld/p4-submit-hint'
Junio C Hamano [Wed, 11 Feb 2015 21:39:44 +0000 (11 13:39 -0800)]
Merge branch 'ld/p4-submit-hint'

* ld/p4-submit-hint:
  git-p4: correct --prepare-p4-only instructions

9 years agoMerge branch 'ld/p4-exclude-in-sync'
Junio C Hamano [Wed, 11 Feb 2015 21:38:41 +0000 (11 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

9 years agogit-p4: support excluding paths on sync
Luke Diamand [Sat, 17 Jan 2015 20:56:38 +0000 (17 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>
9 years agoMerge branch 'jc/coding-guidelines'
Junio C Hamano [Wed, 11 Feb 2015 21:37:42 +0000 (11 13:37 -0800)]
Merge branch 'jc/coding-guidelines'

* jc/coding-guidelines:
  CodingGuidelines: clarify C #include rules

9 years agoMerge branch 'ak/typofixes'
Junio C Hamano [Wed, 11 Feb 2015 21:37:38 +0000 (11 13:37 -0800)]
Merge branch 'ak/typofixes'

* ak/typofixes:
  t/lib-terminal.sh: fix typo
  pack-bitmap: fix typo

9 years agomerge-file: correctly open files when in a subdir
Aleksander Boruch-Gruszecki [Sun, 8 Feb 2015 16:53:53 +0000 (8 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>
9 years agobuiltin/blame: destroy initialized commit_info only
Eric Sunshine [Mon, 9 Feb 2015 21:28:07 +0000 (9 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>
9 years agosha1_file: fix iterating loose alternate objects
Jonathon Mah [Mon, 9 Feb 2015 01:15:39 +0000 (8 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>
9 years agofor_each_loose_file_in_objdir: take an optional strbuf path
Jeff King [Mon, 9 Feb 2015 01:13:22 +0000 (8 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>
9 years agogit-compat-util: do not step on MAC_OS_X_VERSION_MIN_REQUIRED
Kyle J. McKay [Fri, 6 Feb 2015 09:35:31 +0000 (6 01:35 -0800)]
git-compat-util: do not step on MAC_OS_X_VERSION_MIN_REQUIRED

MAC_OS_X_VERSION_MIN_REQUIRED may be defined by the builder to a
specific version in order to produce compatible binaries for a
particular system.  Blindly defining it to MAC_OS_X_VERSION_10_6
is bad.

Additionally MAC_OS_X_VERSION_10_6 will not be defined on older
systems and should AvailabilityMacros.h be included on such as
system an error will result.  However, using the explicit value
of 1060 (which is what MAC_OS_X_VERSION_10_6 is defined to) does
not solve the problem.

The changes that introduced stepping on MAC_OS_X_VERSION_MIN were
made in b195aa00 (git-compat-util: suppress unavoidable
Apple-specific deprecation warnings) to avoid deprecation
warnings.

Instead of blindly setting MAC_OS_X_VERSION_MIN to 1060 change
the definition of DEPRECATED_ATTRIBUTE to empty to avoid the
warnings.  This preserves any MAC_OS_X_VERSION_MIN_REQUIRED
setting while avoiding the warnings as intended by b195aa00.

Signed-off-by: Kyle J. McKay <mackyle@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
9 years agoGit 2.3
Junio C Hamano [Thu, 5 Feb 2015 21:23:56 +0000 (5 13:23 -0800)]
Git 2.3

Signed-off-by: Junio C Hamano <gitster@pobox.com>
9 years agoconfig_buf_ungetc: warn when pushing back a random character
Jeff King [Thu, 5 Feb 2015 21:00:24 +0000 (5 16:00 -0500)]
config_buf_ungetc: warn when pushing back a random character

Our config code simulates a stdio stream around a buffer,
but our fake ungetc() does not behave quite like the real
one. In particular, we only rewind the position by one
character, but do _not_ actually put the character from the
caller into position.

It turns out that this does not matter, because we only ever
push back the character we just read. In other words, such
an assignment would be a noop. But because the function is
called ungetc, and because it takes a character parameter,
it is a mistake waiting to happen.

Actually assigning the character into the buffer would be
ideal, but our pointer is actually a "const" copy of the
buffer. We do not know who the real owner of the buffer is
in this code, and would not want to munge their contents.

Instead, we can simply add an assertion that matches what
the current caller does, and will let us know if new callers
are added that violate the contract.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
9 years agodecimal_width: avoid integer overflow
Jeff King [Thu, 5 Feb 2015 08:14:19 +0000 (5 03:14 -0500)]
decimal_width: avoid integer overflow

The decimal_width function originally appeared in blame.c as
"lineno_width", and was designed for calculating the
print-width of small-ish integer values (line numbers in
text files). In ec7ff5b, it was made into a reusable
function, and in dc801e7, we started using it to align
diffstats.

Binary files in a diffstat show byte counts rather than line
numbers, meaning they can be quite large (e.g., consider
adding or removing a 2GB file). decimal_width is not up to
the challenge for two reasons:

  1. It takes the value as an "int", whereas large files may
     easily surpass this. The value may be truncated, in
     which case we will produce an incorrect value.

  2. It counts "up" by repeatedly multiplying another
     integer by 10 until it surpasses the value.  This can
     cause an infinite loop when the value is close to the
     largest representable integer.

     For example, consider using a 32-bit signed integer,
     and a value of 2,140,000,000 (just shy of 2^31-1).
     We will count up and eventually see that 1,000,000,000
     is smaller than our value. The next step would be to
     multiply by 10 and see that 10,000,000,000 is too
     large, ending the loop. But we can't represent that
     value, and we have signed overflow.

     This is technically undefined behavior, but a common
     behavior is to lose the high bits, in which case our
     iterator will certainly be less than the number. So
     we'll keep multiplying, overflow again, and so on.

This patch changes the argument to a uintmax_t (the same
type we use to store the diffstat information for binary
filese), and counts "down" by repeatedly dividing our value
by 10.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
9 years agoconfig: do not ungetc EOF
Jeff King [Thu, 5 Feb 2015 06:53:28 +0000 (5 01:53 -0500)]
config: do not ungetc EOF

When we are parsing a config value, if we see a carriage
return, we fgetc the next character to see if it is a
line feed (in which case we silently drop the CR). If it
isn't, we then ungetc the character, and take the literal
CR.

But we never check whether we in fact got a character at
all. If the config file ends in CR, we will get EOF here,
and try to ungetc EOF. This works OK for a real stdio
stream. The ungetc returns an error, and the next fgetc will
then return EOF again.

However, our custom buffer-based stream is not so fortunate.
It happily rewinds the position of the stream by one
character, ignoring the fact that we fed it EOF. The next
fgetc call returns the final CR again, over and over, and we
end up in an infinite loop.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
9 years agocheck-builtins: strip executable suffix $X when enumerating builtins
Sebastian Schuberth [Thu, 5 Feb 2015 13:28:04 +0000 (5 14:28 +0100)]
check-builtins: strip executable suffix $X when enumerating builtins

On Windows, the builtin executable names are suffixed with $X.

Signed-off-by: Sebastian Schuberth <sschuberth@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
9 years agorun_diff_files(): clarify computation of sha1 validity
Junio C Hamano [Thu, 11 Dec 2014 21:11:06 +0000 (11 13:11 -0800)]
run_diff_files(): clarify computation of sha1 validity

Remove the need to have duplicated "if there is a change then feed
null_sha1 and otherwise sha1 from the cache entry" for the "new"
side of the diff by introducing two temporary variables to point
at the object name of the old and the new side of the blobs.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
9 years agoewah: fix building with gcc < 3.4.0
Tom G. Christensen [Wed, 4 Feb 2015 08:23:16 +0000 (4 09:23 +0100)]
ewah: fix building with gcc < 3.4.0

The __builtin_ctzll function was added in gcc 3.4.0.
This extends the check for gcc so that use of __builtin_ctzll is only
enabled if gcc >= 3.4.0.

Signed-off-by: Tom G. Christensen <tgc@statsbiblioteket.dk>
Reviewed-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
9 years agoMakefile: handle broken curl version number in version check
Tom G. Christensen [Fri, 30 Jan 2015 09:52:34 +0000 (30 10:52 +0100)]
Makefile: handle broken curl version number in version check

curl 7.11.0 through 7.12.2 when built from their official release
archives will present a 5 digit version number instead of the documented
6 digits which breaks the version check in the Makefile.
Correct these broken version numbers on the fly when extracting them to
ensure the comparison works correctly.

[jc: shortened the new sed scripts a bit]

Signed-off-by: Tom G. Christensen <tgc@statsbiblioteket.dk>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
9 years agogit-submodule.sh: fix '/././' path normalization
Patrick Steinhardt [Fri, 30 Jan 2015 15:14:03 +0000 (30 16:14 +0100)]
git-submodule.sh: fix '/././' path normalization

When we add a new submodule the path of the submodule is being
normalized. We fail to normalize multiple adjacent '/./', though.
Thus 'path/to/././submodule' will become 'path/to/./submodule' where
it should be 'path/to/submodule' instead.

Signed-off-by: Patrick Steinhardt <ps@pks.im>
Acked-by: Jens Lehmann <Jens.Lehmann@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
9 years agoMerge git://github.com/git-l10n/git-po
Junio C Hamano [Mon, 2 Feb 2015 20:05:56 +0000 (2 12:05 -0800)]
Merge git://github.com/git-l10n/git-po

* git://github.com/git-l10n/git-po:
  l10n: ca.po: Fix trailing whitespace

9 years agoCodingGuidelines: describe naming rules for configuration variables
Junio C Hamano [Tue, 27 Jan 2015 20:26:03 +0000 (27 12:26 -0800)]
CodingGuidelines: describe naming rules for configuration variables

We may want to say something about command line option names in the
new section as well, but for now, let's make sure everybody is clear
on how to structure and name their configuration variables.

The text for the rules are partly taken from the log message of
Jonathan's 6b3020a2 (add: introduce add.ignoreerrors synonym for
add.ignore-errors, 2010-12-01).

Signed-off-by: Junio C Hamano <gitster@pobox.com>
9 years agol10n: ca.po: Fix trailing whitespace
Alex Henrie [Fri, 30 Jan 2015 22:02:34 +0000 (30 15:02 -0700)]
l10n: ca.po: Fix trailing whitespace

Signed-off-by: Alex Henrie <alexhenrie24@gmail.com>
9 years agoDocumentation/git-remote.txt: stress that set-url is not for triangular
Junio C Hamano [Thu, 29 Jan 2015 20:26:09 +0000 (29 12:26 -0800)]
Documentation/git-remote.txt: stress that set-url is not for triangular

It seems to be a common mistake to try using a single remote
(e.g. 'origin') to fetch from one place (i.e. upstream) while
pushing to another (i.e. your publishing point).

That will never work satisfactorily, and it is easy to understand
why if you think about what refs/remotes/origin/* would mean in such
a world.  It fundamentally cannot reflect the reality.  If it
follows the state of your upstream, it cannot match what you have
published, and vice versa.

It may be that misinformation is spread by some people.  Let's
counter them by adding a few words to our documentation.

 - The description was referring to <oldurl> and <newurl>, but never
   mentioned <name> argument you give from the command line.  By
   mentioning "remote <name>", stress the fact that it is configuring
   a single remote.

 - Add a reminder that explicitly states that this is about a single
   remote, which the triangular workflow is not about.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
9 years agot/lib-gpg: sanity-check that we can actually sign
Jeff King [Thu, 29 Jan 2015 15:51:11 +0000 (29 10:51 -0500)]
t/lib-gpg: sanity-check that we can actually sign

Some older versions of gpg (reportedly v1.2.6 from RHEL4) cannot
import the keyrings found in our test suite, and thus cannot even
make a signature.  The previous change works it around, but we
cannot anticipate breakages update to GPG would cause in the future.

Do a test-sign before declaring the GPG prerequisite fulfilled
to future-proof our tests.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
9 years agot/lib-gpg: include separate public keys in keyring.gpg
Jeff King [Thu, 29 Jan 2015 15:43:20 +0000 (29 10:43 -0500)]
t/lib-gpg: include separate public keys in keyring.gpg

Since 1e3eefb (tests: replace binary GPG keyrings with
ASCII-armored keys, 2014-12-12), we import our test GPG keys
from a single file. Each keypair in the import stream
contains both the secret and public keys. However, older
versions of gpg reportedly fail to import the public half of
the key. We can solve this by including duplicates of the
public keys separately. The duplicates are ignored by modern
gpg, and this makes older versions work.

Reported by Tom G. Christensen <tgc@statsbiblioteket.dk> on
gpg 1.2.6 (from RHEL4).

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
9 years agot4122: use test_write_lines from test-lib-functions
Junio C Hamano [Thu, 29 Jan 2015 05:15:24 +0000 (28 21:15 -0800)]
t4122: use test_write_lines from test-lib-functions

Instead of using a custom lecho function, just use what the test
framework already gives us.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
9 years agodiff-format doc: a score can follow M for rewrite
Junio C Hamano [Wed, 28 Jan 2015 21:17:19 +0000 (28 13:17 -0800)]
diff-format doc: a score can follow M for rewrite

b6d8f309 (diff-raw format update take #2., 2005-05-23) started
documenting the diff format, and it said

 ...
 (8) sha1 for "dst"; 0{40} if creation, unmerged or "look at work tree".
 (9) status, followed by similarlity index number only for C and R.
 (10) a tab or a NUL when '-z' option is used.
 ...

because C and R _were_ the only ones that came with a number back
then.  This was corrected by ddafa7e9 (diff-helper: Fix R/C score
parsing under -z flag., 2005-05-29) and we started saying "score"
instead of "similarlity index" (because we can have other kind of
score there), and stopped saying "only for C and R" (because Git is
an ever evolving system).  Later f345b0a0 (Add -B flag to diff-*
brothers., 2005-05-30) introduced a new concept, "dissimilarity"
score; it did not have to fix any documentation.

The current text that says only C and R can have scores came
independently from a5a323f3 (Add reference for status letters in
documentation., 2008-11-02) and it was wrong from the day one.

Noticed-by: Mike Hommey
Signed-off-by: Junio C Hamano <gitster@pobox.com>
9 years agogit-push.txt: document the behavior of --repo
Michael J Gruber [Tue, 27 Jan 2015 12:35:53 +0000 (27 13:35 +0100)]
git-push.txt: document the behavior of --repo

As per the code, the --repo <repo> option is equivalent to the
<repo> argument to 'git push', but somehow it was documented as
something that is more than that.  [It exists for historical
reasons, back from the time when options had to come before
arguments.]

Say so. [But not that.]

Signed-off-by: Michael J Gruber <git@drmicha.warpmail.net>
Helped-by: Eric Sunshine <sunshine@sunshineco.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
9 years agodo not check truth value of flex arrays
Jeff King [Wed, 28 Jan 2015 17:58:50 +0000 (28 12:58 -0500)]
do not check truth value of flex arrays

There is no point in checking "!ref->name" when ref is a
"struct ref". The name field is a flex-array, and there
always has a non-zero address. This is almost certainly not
hurting anything, but it does cause clang-3.6 to complain.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
9 years agoread_and_strip_branch: fix typo'd address-of operator
Jeff King [Wed, 28 Jan 2015 17:57:35 +0000 (28 12:57 -0500)]
read_and_strip_branch: fix typo'd address-of operator

When we are chomping newlines from the end of a strbuf, we
must check "sb.len != 0" before accessing "sb.buf[sb.len - 1]".
However, this code mistakenly checks "&sb.len", which is
always true (it is a part of an auto struct, so the address
is always non-zero). This could lead to us accessing memory
outside the strbuf when we read an empty file.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
9 years agoconfig.txt: mark deprecated variables more prominently
Junio C Hamano [Tue, 27 Jan 2015 20:25:48 +0000 (27 12:25 -0800)]
config.txt: mark deprecated variables more prominently

Signed-off-by: Junio C Hamano <gitster@pobox.com>
9 years agoconfig.txt: clarify that add.ignore-errors is deprecated
Junio C Hamano [Tue, 27 Jan 2015 20:19:11 +0000 (27 12:19 -0800)]
config.txt: clarify that add.ignore-errors is deprecated

The old text gave an impression that even in a new repository using
old form might be safer.  Only Git from pre 1.7.0 days choke on the
correctly named variable, which is ancient by today's standard.

We have no intention to remove the support for deprecated ones, but
let's make sure that we do not give room for confused questions such
as "why does core.sparse-checkout not work, when add.ignore-errors
does?"

Signed-off-by: Junio C Hamano <gitster@pobox.com>
9 years agohttp: add Accept-Language header if possible
Yi EungJun [Wed, 28 Jan 2015 12:04:37 +0000 (28 21:04 +0900)]
http: add Accept-Language header if possible

Add an Accept-Language header which indicates the user's preferred
languages defined by $LANGUAGE, $LC_ALL, $LC_MESSAGES and $LANG.

Examples:
  LANGUAGE= -> ""
  LANGUAGE=ko:en -> "Accept-Language: ko, en;q=0.9, *;q=0.1"
  LANGUAGE=ko LANG=en_US.UTF-8 -> "Accept-Language: ko, *;q=0.1"
  LANGUAGE= LANG=en_US.UTF-8 -> "Accept-Language: en-US, *;q=0.1"

This gives git servers a chance to display remote error messages in
the user's preferred language.

Limit the number of languages to 1,000 because q-value must not be
smaller than 0.001, and limit the length of Accept-Language header to
4,000 bytes for some HTTP servers which cannot accept such long header.

Signed-off-by: Yi EungJun <eungjun.yi@navercorp.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
9 years agoGit 2.3.0-rc2
Junio C Hamano [Tue, 27 Jan 2015 22:39:53 +0000 (27 14:39 -0800)]
Git 2.3.0-rc2

Signed-off-by: Junio C Hamano <gitster@pobox.com>
9 years agodumb-http: do not pass NULL path to parse_pack_index
Jeff King [Tue, 27 Jan 2015 20:02:27 +0000 (27 15:02 -0500)]
dumb-http: do not pass NULL path to parse_pack_index

Once upon a time, dumb http always fetched .idx files
directly into their final location, and then checked their
validity with parse_pack_index. This was refactored in
commit 750ef42 (http-fetch: Use temporary files for
pack-*.idx until verified, 2010-04-19), which uses the
following logic:

  1. If we have the idx already in place, see if it's
     valid (using parse_pack_index). If so, use it.

  2. Otherwise, fetch the .idx to a tempfile, check
     that, and if so move it into place.

  3. Either way, fetch the pack itself if necessary.

However, it got step 1 wrong. We pass a NULL path parameter
to parse_pack_index, so an existing .idx file always looks
broken. Worse, we do not treat this broken .idx as an
opportunity to re-fetch, but instead return an error,
ignoring the pack entirely. This can lead to a dumb-http
fetch failing to retrieve the necessary objects.

This doesn't come up much in practice, because it must be a
packfile that we found out about (and whose .idx we stored)
during an earlier dumb-http fetch, but whose packfile we
_didn't_ fetch. I.e., we did a partial clone of a
repository, didn't need some packfiles, and now a followup
fetch needs them.

Discovery and tests by Charles Bailey <charles@hashpling.org>.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
9 years agoMerge git://github.com/git-l10n/git-po
Junio C Hamano [Tue, 27 Jan 2015 19:01:05 +0000 (27 11:01 -0800)]
Merge git://github.com/git-l10n/git-po

* git://github.com/git-l10n/git-po:
  l10n: de.po: correct singular form
  l10n: de.po: translate "leave behind" correctly
  l10n: de.po: fix typo
  l10n: ca.po: update translation

9 years agoMerge branch 'master' of git://github.com/alexhenrie/git-po
Jiang Xin [Tue, 27 Jan 2015 07:00:48 +0000 (27 15:00 +0800)]
Merge branch 'master' of git://github.com/alexhenrie/git-po

* 'master' of git://github.com/alexhenrie/git-po:
  l10n: ca.po: update translation

9 years agocommit: reword --author error message
Michael J Gruber [Mon, 26 Jan 2015 15:48:33 +0000 (26 16:48 +0100)]
commit: reword --author error message

If an --author argument is specified but does not contain a '>' then git tries
to find the argument within the existing authors; and gives the error
message "No existing author found with '%s'" if there is no match.

This is confusing for users who try to specify a valid complete author
name.

Rename the error message to make it clearer that the failure has two
reasons in this case.

(This codepath is touched only when we know already that the argument
cannot be a completely wellformed author ident.)

Signed-off-by: Michael J Gruber <git@drmicha.warpmail.net>
Helped-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
9 years agol10n: de.po: correct singular form
Michael J Gruber [Mon, 26 Jan 2015 15:34:32 +0000 (26 16:34 +0100)]
l10n: de.po: correct singular form

Signed-off-by: Michael J Gruber <git@drmicha.warpmail.net>
Signed-off-by: Ralf Thielow <ralf.thielow@gmail.com>