gitweb.git
Merge branch 'ks/doc-use-camelcase-for-config-name... Junio C Hamano Wed, 18 Oct 2017 05:19:12 +0000 (14:19 +0900)

Merge branch 'ks/doc-use-camelcase-for-config-name' into maint

Doc update.

* ks/doc-use-camelcase-for-config-name:
doc: camelCase the config variables to improve readability

Merge branch 'jk/doc-read-tree-table-asciidoctor-fix... Junio C Hamano Wed, 18 Oct 2017 05:19:11 +0000 (14:19 +0900)

Merge branch 'jk/doc-read-tree-table-asciidoctor-fix' into maint

A docfix.

* jk/doc-read-tree-table-asciidoctor-fix:
doc: put literal block delimiter around table

Merge branch 'hn/typofix' into maintJunio C Hamano Wed, 18 Oct 2017 05:19:11 +0000 (14:19 +0900)

Merge branch 'hn/typofix' into maint

* hn/typofix:
submodule.h: typofix

Merge branch 'ks/test-readme-phrasofix' into maintJunio C Hamano Wed, 18 Oct 2017 05:19:10 +0000 (14:19 +0900)

Merge branch 'ks/test-readme-phrasofix' into maint

Doc updates.

* ks/test-readme-phrasofix:
t/README: fix typo and grammatically improve a sentence

Merge branch 'ez/doc-duplicated-words-fix' into maintJunio C Hamano Wed, 18 Oct 2017 05:19:10 +0000 (14:19 +0900)

Merge branch 'ez/doc-duplicated-words-fix' into maint

Typofix.

* ez/doc-duplicated-words-fix:
doc: fix minor typos (extra/duplicated words)

Merge branch 'kd/doc-for-each-ref' into maintJunio C Hamano Wed, 18 Oct 2017 05:19:10 +0000 (14:19 +0900)

Merge branch 'kd/doc-for-each-ref' into maint

Doc update.

* kd/doc-for-each-ref:
doc/for-each-ref: explicitly specify option names
doc/for-each-ref: consistently use '=' to between argument names and values

Merge branch 'cc/subprocess-handshake-missing-capabilit... Junio C Hamano Wed, 18 Oct 2017 05:19:10 +0000 (14:19 +0900)

Merge branch 'cc/subprocess-handshake-missing-capabilities' into maint

Finishing touches to a topic already in 'master'.

* cc/subprocess-handshake-missing-capabilities:
subprocess: loudly die when subprocess asks for an unsupported capability

Merge branch 'jk/system-path-cleanup' into maintJunio C Hamano Wed, 18 Oct 2017 05:19:10 +0000 (14:19 +0900)

Merge branch 'jk/system-path-cleanup' into maint

Code clean-up.

* jk/system-path-cleanup:
git_extract_argv0_path: do nothing without RUNTIME_PREFIX
system_path: move RUNTIME_PREFIX to a sub-function

Merge branch 'bb/doc-eol-dirty' into maintJunio C Hamano Wed, 18 Oct 2017 05:19:09 +0000 (14:19 +0900)

Merge branch 'bb/doc-eol-dirty' into maint

Doc update.

* bb/doc-eol-dirty:
Documentation: mention that `eol` can change the dirty status of paths

Merge branch 'mg/timestamp-t-fix' into maintJunio C Hamano Wed, 18 Oct 2017 05:19:09 +0000 (14:19 +0900)

Merge branch 'mg/timestamp-t-fix' into maint

A mismerge fix.

* mg/timestamp-t-fix:
name-rev: change ULONG_MAX to TIME_MAX

Merge branch 'ma/pkt-line-leakfix' into maintJunio C Hamano Wed, 18 Oct 2017 05:19:08 +0000 (14:19 +0900)

Merge branch 'ma/pkt-line-leakfix' into maint

A leakfix.

* ma/pkt-line-leakfix:
pkt-line: re-'static'-ify buffer in packet_write_fmt_1()

Merge branch 'jk/config-lockfile-leak-fix' into maintJunio C Hamano Wed, 18 Oct 2017 05:19:07 +0000 (14:19 +0900)

Merge branch 'jk/config-lockfile-leak-fix' into maint

A leakfix.

* jk/config-lockfile-leak-fix:
config: use a static lock_file struct

Merge branch 'dw/diff-highlight-makefile-fix' into... Junio C Hamano Wed, 18 Oct 2017 05:19:07 +0000 (14:19 +0900)

Merge branch 'dw/diff-highlight-makefile-fix' into maint

Build clean-up.

* dw/diff-highlight-makefile-fix:
diff-highlight: add clean target to Makefile

Merge branch 'jk/drop-sha1-entry-pos' into maintJunio C Hamano Wed, 18 Oct 2017 05:19:06 +0000 (14:19 +0900)

Merge branch 'jk/drop-sha1-entry-pos' into maint

Code clean-up.

* jk/drop-sha1-entry-pos:
sha1-lookup: remove sha1_entry_pos() from header file
sha1_file: drop experimental GIT_USE_LOOKUP search

Merge branch 'tb/ref-filter-empty-modifier' into maintJunio C Hamano Wed, 18 Oct 2017 05:19:06 +0000 (14:19 +0900)

Merge branch 'tb/ref-filter-empty-modifier' into maint

In the "--format=..." option of the "git for-each-ref" command (and
its friends, i.e. the listing mode of "git branch/tag"), "%(atom:)"
(e.g. "%(refname:)", "%(body:)" used to error out. Instead, treat
them as if the colon and an empty string that follows it were not
there.

* tb/ref-filter-empty-modifier:
ref-filter.c: pass empty-string as NULL to atom parsers

Merge branch 'rb/compat-poll-fix' into maintJunio C Hamano Wed, 18 Oct 2017 05:19:05 +0000 (14:19 +0900)

Merge branch 'rb/compat-poll-fix' into maint

Backports a moral equivalent of 2015 fix to the poll emulation from
the upstream gnulib to fix occasional breakages on HPE NonStop.

* rb/compat-poll-fix:
poll.c: always set revents, even if to zero

Merge branch 'tg/memfixes' into maintJunio C Hamano Wed, 18 Oct 2017 05:19:04 +0000 (14:19 +0900)

Merge branch 'tg/memfixes' into maint

Fixes for a handful memory access issues identified by valgrind.

* tg/memfixes:
sub-process: use child_process.args instead of child_process.argv
http-push: fix construction of hex value from path
path.c: fix uninitialized memory access

Merge branch 'ar/request-pull-phrasofix' into maintJunio C Hamano Wed, 18 Oct 2017 05:19:04 +0000 (14:19 +0900)

Merge branch 'ar/request-pull-phrasofix' into maint

Spell the name of our system as "Git" in the output from
request-pull script.

* ar/request-pull-phrasofix:
request-pull: capitalise "Git" to make it a proper noun

Merge branch 'jc/merge-x-theirs-docfix' into maintJunio C Hamano Wed, 18 Oct 2017 05:19:03 +0000 (14:19 +0900)

Merge branch 'jc/merge-x-theirs-docfix' into maint

The documentation for '-X<option>' for merges was misleadingly
written to suggest that "-s theirs" exists, which is not the case.

* jc/merge-x-theirs-docfix:
merge-strategies: avoid implying that "-s theirs" exists

Merge branch 'rs/mailinfo-qp-decode-fix' into maintJunio C Hamano Wed, 18 Oct 2017 05:19:03 +0000 (14:19 +0900)

Merge branch 'rs/mailinfo-qp-decode-fix' into maint

"git mailinfo" was loose in decoding quoted printable and produced
garbage when the two letters after the equal sign are not
hexadecimal. This has been fixed.

* rs/mailinfo-qp-decode-fix:
mailinfo: don't decode invalid =XY quoted-printable sequences

Merge branch 'ik/userdiff-html-h-element-fix' into... Junio C Hamano Wed, 18 Oct 2017 05:19:02 +0000 (14:19 +0900)

Merge branch 'ik/userdiff-html-h-element-fix' into maint

The built-in pattern to detect the "function header" for HTML did
not match <H1>..<H6> elements without any attributes, which has
been fixed.

* ik/userdiff-html-h-element-fix:
userdiff: fix HTML hunk header regexp

Merge branch 'jk/diff-blob' into maintJunio C Hamano Wed, 18 Oct 2017 05:19:01 +0000 (14:19 +0900)

Merge branch 'jk/diff-blob' into maint

"git cat-file --textconv" started segfaulting recently, which
has been corrected.

* jk/diff-blob:
cat-file: handle NULL object_context.path

Merge branch 'jk/describe-omit-some-refs' into maintJunio C Hamano Wed, 18 Oct 2017 05:19:01 +0000 (14:19 +0900)

Merge branch 'jk/describe-omit-some-refs' into maint

"git describe --match" learned to take multiple patterns in v2.13
series, but the feature ignored the patterns after the first one
and did not work at all. This has been fixed.

* jk/describe-omit-some-refs:
describe: fix matching to actually match all patterns

Merge branch 'mh/for-each-string-list-item-empty-fix... Junio C Hamano Wed, 18 Oct 2017 05:19:00 +0000 (14:19 +0900)

Merge branch 'mh/for-each-string-list-item-empty-fix' into maint

Code cmp.std.c nitpick.

* mh/for-each-string-list-item-empty-fix:
for_each_string_list_item: avoid undefined behavior for empty list

Merge branch 'tb/test-lint-echo-e' into maintJunio C Hamano Wed, 18 Oct 2017 05:18:59 +0000 (14:18 +0900)

Merge branch 'tb/test-lint-echo-e' into maint

The test linter has been taught that we do not like "echo -e".

* tb/test-lint-echo-e:
test-lint: echo -e (or -E) is not portable

Merge branch 'aw/gc-lockfile-fscanf-fix' into maintJunio C Hamano Wed, 18 Oct 2017 05:18:59 +0000 (14:18 +0900)

Merge branch 'aw/gc-lockfile-fscanf-fix' into maint

"git gc" tries to avoid running two instances at the same time by
reading and writing pid/host from and to a lock file; it used to
use an incorrect fscanf() format when reading, which has been
corrected.

* aw/gc-lockfile-fscanf-fix:
gc: call fscanf() with %<len>s, not %<len>c, when reading hostname

Merge branch 'tg/refs-allowed-flags' into maintJunio C Hamano Wed, 18 Oct 2017 05:18:58 +0000 (14:18 +0900)

Merge branch 'tg/refs-allowed-flags' into maint

API error-proofing which happens to also squelch warnings from GCC.

* tg/refs-allowed-flags:
refs: strip out not allowed flags from ref_transaction_update

Merge branch 'rs/archive-excluded-directory' into maintJunio C Hamano Wed, 18 Oct 2017 05:18:58 +0000 (14:18 +0900)

Merge branch 'rs/archive-excluded-directory' into maint

"git archive", especially when used with pathspec, stored an empty
directory in its output, even though Git itself never does so.
This has been fixed.

* rs/archive-excluded-directory:
archive: don't add empty directories to archives

Merge branch 'rk/commit-tree-make-F-verbatim' into... Junio C Hamano Wed, 18 Oct 2017 05:18:58 +0000 (14:18 +0900)

Merge branch 'rk/commit-tree-make-F-verbatim' into maint

Unlike "git commit-tree < file", "git commit-tree -F file" did not
pass the contents of the file verbatim and instead completed an
incomplete line at the end, if exists. The latter has been updated
to match the behaviour of the former.

* rk/commit-tree-make-F-verbatim:
commit-tree: do not complete line in -F input

Merge branch 'mh/packed-ref-store-prep' into maintJunio C Hamano Wed, 18 Oct 2017 05:18:58 +0000 (14:18 +0900)

Merge branch 'mh/packed-ref-store-prep' into maint

Fix regression to "gitk --bisect" by a recent update.

* mh/packed-ref-store-prep:
rev-parse: don't trim bisect refnames

Merge branch 'mm/send-email-cc-cruft' into maintJunio C Hamano Wed, 18 Oct 2017 05:18:58 +0000 (14:18 +0900)

Merge branch 'mm/send-email-cc-cruft' into maint

In addition to "cc: <a@dd.re.ss> # cruft", "cc: a@dd.re.ss # cruft"
was taught to "git send-email" as a valid way to tell it that it
needs to also send a carbon copy to <a@dd.re.ss> in the trailer
section.

* mm/send-email-cc-cruft:
send-email: don't use Mail::Address, even if available
send-email: fix garbage removal after address

Merge branch 'rs/strbuf-getwholeline-fix' into maintJunio C Hamano Wed, 18 Oct 2017 05:18:57 +0000 (14:18 +0900)

Merge branch 'rs/strbuf-getwholeline-fix' into maint

A helper function to read a single whole line into strbuf
mistakenly triggered OOM error at EOF under certain conditions,
which has been fixed.

* rs/strbuf-getwholeline-fix:
strbuf: clear errno before calling getdelim(3)

branch doc: sprinkle a few commas for readabilityJunio C Hamano Wed, 18 Oct 2017 02:34:31 +0000 (11:34 +0900)

branch doc: sprinkle a few commas for readability

The "--force" option can also be used when the named branch does not
yet exist, and the point of the option is the user can (re)point the
branch to the named commit even if it does. Add 'even' before 'if'
to clarify. Also, insert another comma after "Without -f" before
"the command refuses..." to make the text easier to parse.

Incidentally, this change should help certain versions of
docbook-xsl-stylesheets that render the original without any
whitespace between "-f" and "git".

Noticed-by: Lars Schneider <larsxschneider@gmail.com>
Helped-by: Jeff King <peff@peff.net>
Helped-by: Andreas Schwab <schwab@suse.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Preparing for rc2 continuesJunio C Hamano Wed, 18 Oct 2017 01:27:06 +0000 (10:27 +0900)

Preparing for rc2 continues

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

Merge branch 'jk/ref-filter-colors-fix'Junio C Hamano Wed, 18 Oct 2017 01:19:08 +0000 (10:19 +0900)

Merge branch 'jk/ref-filter-colors-fix'

This is the "theoretically more correct" approach of simply
stepping back to the state before plumbing commands started paying
attention to "color.ui" configuration variable.

Let's run with this one.

* jk/ref-filter-colors-fix:
tag: respect color.ui config
Revert "color: check color.ui in git_default_config()"
Revert "t6006: drop "always" color config tests"
Revert "color: make "always" the same as "auto" in config"

Merge branch 'js/rebase-i-final'Junio C Hamano Wed, 18 Oct 2017 01:19:07 +0000 (10:19 +0900)

Merge branch 'js/rebase-i-final'

Error message fix.

* js/rebase-i-final:
sequencer.c: unify an error message

doc: list filter-branch subdirectory-filter firstDavid Glasser Tue, 17 Oct 2017 09:45:15 +0000 (09:45 +0000)

doc: list filter-branch subdirectory-filter first

The docs claim that filters are applied in the listed order, so
subdirectory-filter should come first.

For consistency, apply the same order to the SYNOPSIS and the script's usage, as
well as the switch while parsing arguments.

Add missing --prune-empty to the script's usage.

Signed-off-by: David Glasser <glasser@davidglasser.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

check-ref-format doc: --branch validates and expands... Junio C Hamano Tue, 17 Oct 2017 07:12:34 +0000 (00:12 -0700)

check-ref-format doc: --branch validates and expands <branch>

"git check-ref-format --branch $name" feature was originally
introduced (and was advertised) as a way for scripts to take any
end-user supplied string (like "master", "@{-1}" etc.) and see if it
is usable when Git expects to see a branch name, and also obtain the
concrete branch name that the at-mark magic expands to.

Emphasize that "see if it is usable" role in the description and
clarify that the @{...} expansion only occurs when run from within a
repository.

[jn: split out from a larger patch]

Helped-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

check-ref-format --branch: strip refs/heads/ using... Junio C Hamano Tue, 17 Oct 2017 07:10:00 +0000 (00:10 -0700)

check-ref-format --branch: strip refs/heads/ using skip_prefix

The expansion returned from strbuf_check_branch_ref always starts with
"refs/heads/" by construction, but there is nothing about its name or
advertised API making that obvious. This command is used to process
human-supplied input from the command line and is usually not the
inner loop, so we can spare some cycles to be more defensive. Instead
of hard-coding the offset strlen("refs/heads/") to skip, verify that
the expansion actually starts with refs/heads/.

[jn: split out from a larger patch, added explanation]

Signed-off-by: Junio C Hamano <gitster@pobox.com>
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

check-ref-format --branch: do not expand @{...} outside... Junio C Hamano Tue, 17 Oct 2017 07:08:08 +0000 (00:08 -0700)

check-ref-format --branch: do not expand @{...} outside repository

Running "git check-ref-format --branch @{-1}" from outside any
repository produces

$ git check-ref-format --branch @{-1}
BUG: environment.c:182: git environment hasn't been setup

This is because the expansion of @{-1} must come from the HEAD reflog,
which involves opening the repository. @{u} and @{push} (which are
more unusual because they typically would not expand to a local
branch) trigger the same assertion.

This has been broken since day one. Before v2.13.0-rc0~48^2
(setup_git_env: avoid blind fall-back to ".git", 2016-10-02), the
breakage was more subtle: Git would read reflogs from ".git" within
the current directory even if it was not a valid repository. Usually
that is harmless because Git is not being run from the root directory
of an invalid repository, but in edge cases such accesses can be
confusing or harmful. Since v2.13.0, the problem is easier to
diagnose because Git aborts with a BUG message.

Erroring out is the right behavior: when asked to interpret a branch
name like "@{-1}", there is no reasonable answer in this context.
But we should print a message saying so instead of an assertion failure.

We do not forbid "check-ref-format --branch" from outside a repository
altogether because it is ok for a script to pre-process branch
arguments without @{...} in such a context. For example, with
pre-2.13 Git, a script that does

branch='master'; # default value
parse_options
branch=$(git check-ref-format --branch "$branch")

to normalize an optional branch name provided by the user would work
both inside a repository (where the user could provide '@{-1}') and
outside (where '@{-1}' should not be accepted).

So disable the "expand @{...}" half of the feature when run outside a
repository, but keep the check of the syntax of a proposed branch
name. This way, when run from outside a repository, "git
check-ref-format --branch @{-1}" will gracefully fail:

$ git check-ref-format --branch @{-1}
fatal: '@{-1}' is not a valid branch name

and "git check-ref-format --branch master" will succeed as before:

$ git check-ref-format --branch master
master

restoring the usual pre-2.13 behavior.

[jn: split out from a larger patch; moved conditional to
strbuf_check_branch_ref instead of its caller; fleshed out commit
message; some style tweaks in tests]

Reported-by: Marko Kungla <marko.kungla@gmail.com>
Helped-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

sequencer.c: unify an error messageRalf Thielow Tue, 17 Oct 2017 16:20:50 +0000 (18:20 +0200)

sequencer.c: unify an error message

Change an error message in sequencer.c for the case that
we could not write to a file to match other instances.

Signed-off-by: Ralf Thielow <ralf.thielow@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

fetch doc: src side of refspec could be full SHA-1Junio C Hamano Tue, 17 Oct 2017 02:31:06 +0000 (11:31 +0900)

fetch doc: src side of refspec could be full SHA-1

Since a9d34933 ("Merge branch 'fm/fetch-raw-sha1'", 2015-06-01) we
allow to fetch by an object name when the other side accepts such a
request, but we never updated the documentation to match.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
Reviewed-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

l10n: Update Catalan translationJordi Mas Tue, 17 Oct 2017 12:28:23 +0000 (13:28 +0100)

l10n: Update Catalan translation

Signed-off-by: Jordi Mas <jmas@softcatala.org>

l10n: ko.po: Update Korean translationChangwoo Ryu Tue, 17 Oct 2017 07:20:34 +0000 (16:20 +0900)

l10n: ko.po: Update Korean translation

Signed-off-by: Changwoo Ryu <cwryu@debian.org>

tag: respect color.ui configJeff King Fri, 13 Oct 2017 17:26:02 +0000 (13:26 -0400)

tag: respect color.ui config

Since 11b087adfd (ref-filter: consult want_color() before
emitting colors, 2017-07-13), we expect that setting
"color.ui" to "always" will enable color tag formats even
without a tty. As that commit was built on top of
136c8c8b8f (color: check color.ui in git_default_config(),
2017-07-13) from the same series, we didn't need to touch
tag's config parsing at all.

However, since we reverted 136c8c8b8f, we now need to
explicitly call git_color_default_config() to make this
work.

Let's do so, and also restore the test dropped in 0c88bf5050
(provide --color option for all ref-filter users,
2017-10-03). That commit swapped out our "color.ui=always"
test for "--color" in preparation for "always" going away.
But since it is here to stay, we should test both cases.

Note that for-each-ref also lost its color.ui support as
part of reverting 136c8c8b8f. But as a plumbing command, it
should _not_ respect the color.ui config. Since it also
gained a --color option in 0c88bf5050, that's the correct
way to ask it for color. We'll continue to test that, and
confirm that "color.ui" is not respected.

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

Revert "color: check color.ui in git_default_config()"Jeff King Fri, 13 Oct 2017 17:24:31 +0000 (13:24 -0400)

Revert "color: check color.ui in git_default_config()"

This reverts commit 136c8c8b8fa39f1315713248473dececf20f8fe7.

That commit was trying to address a bug caused by 4c7f1819b3
(make color.ui default to 'auto', 2013-06-10), in which
plumbing like diff-tree defaulted to "auto" color, but did
not respect a "color.ui" directive to disable it.

But it also meant that we started respecting "color.ui" set
to "always". This was a known problem, but 4c7f1819b3 argued
that nobody ought to be doing that. However, that turned out
to be wrong, and we got a number of bug reports related to
"add -p" regressing in v2.14.2.

Let's revert 136c8c8b8, fixing the regression to "add -p".
This leaves the problem from 4c7f1819b3 unfixed, but:

1. It's a pretty obscure problem in the first place. I
only noticed it while working on the color code, and we
haven't got a single bug report or complaint about it.

2. We can make a more moderate fix on top by respecting
"never" but not "always" for plumbing commands. This
is just the minimal fix to go back to the working state
we had before v2.14.2.

Note that this isn't a pure revert. We now have a test in
t3701 which shows off the "add -p" regression. This can be
flipped to success.

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

Revert "t6006: drop "always" color config tests"Jeff King Fri, 13 Oct 2017 17:23:41 +0000 (13:23 -0400)

Revert "t6006: drop "always" color config tests"

This reverts commit c5bdfe677cfab5b2e87771c35565d44d3198efda.

That commit was done primarily to prepare for the weakening
of "always" in 6be4595edb (color: make "always" the same as
"auto" in config, 2017-10-03). But since we've now reverted
6be4595edb, there's no need for us to remove "-c
color.ui=always" from the tests. And in fact it's a good
idea to restore these tests, to make sure that "always"
continues to work.

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

Revert "color: make "always" the same as "auto" in... Jeff King Fri, 13 Oct 2017 17:23:24 +0000 (13:23 -0400)

Revert "color: make "always" the same as "auto" in config"

This reverts commit 6be4595edb8e5b616c6e8b9fbc78b0f831fa2a87.

That commit weakened the "always" setting of color config so
that it acted as "auto". This was meant to solve regressions
in v2.14.2 in which setting "color.ui=always" in the on-disk
config broke scripts like add--interactive, because the
plumbing diff commands began to generate color output.

This was due to 136c8c8b8f (color: check color.ui in
git_default_config(), 2017-07-13), which was in turn trying
to fix issues caused by 4c7f1819b3 (make color.ui default to
'auto', 2013-06-10). But in weakening "always", we created
even more problems, as people expect to be able to use "git
-c color.ui=always" to force color (especially because some
commands don't have their own --color flag). We can fix that
by special-casing the command-line "-c", but now things are
getting pretty confusing.

Instead of piling hacks upon hacks, let's start peeling off
the hacks. The first step is dropping the weakening of
"always", which this revert does.

Note that we could actually revert the whole series merged
in by da15b78e52642bd45fd5513ab0000fdf2e58a6f4. Most of that
series consists of preparations to the tests to handle the
weakening of "-c color.ui=always". But it's worth keeping
for a few reasons:

- there are some other preparatory cleanups, like
e433749d86 (test-terminal: set TERM=vt100, 2017-10-03)

- it adds "--color" options more consistently in
0c88bf5050 (provide --color option for all ref-filter
users, 2017-10-03)

- some of the cases dropping "-c" end up being more robust
and realistic tests, as in 01c94e9001 (t7508: use
test_terminal for color output, 2017-10-03)

- the preferred tool for overriding config is "--color",
and we should be modeling that consistently

We can individually revert the few commits necessary to
restore some useful tests (which will be done on top of this
patch).

Note that this isn't a pure revert; we'll keep the test
added in t3701, but mark it as failure for now.

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

Merge branch 'jk/ui-color-always-to-auto-maint' (early... Junio C Hamano Tue, 17 Oct 2017 06:08:31 +0000 (15:08 +0900)

Merge branch 'jk/ui-color-always-to-auto-maint' (early part) into jk/ref-filter-colors-fix-maint

* 'jk/ui-color-always-to-auto-maint' (early part):
color: make "always" the same as "auto" in config
provide --color option for all ref-filter users
t3205: use --color instead of color.branch=always
t3203: drop "always" color test
t6006: drop "always" color config tests
t7502: use diff.noprefix for --verbose test
t7508: use test_terminal for color output
t3701: use test-terminal to collect color output
t4015: prefer --color to -c color.diff=always
test-terminal: set TERM=vt100

t5601: rm the target file of cp that could still be... Junio C Hamano Tue, 17 Oct 2017 05:04:43 +0000 (14:04 +0900)

t5601: rm the target file of cp that could still be executing

"while sh t5601-clone.sh; do :; done" seems to fail sporadically at
around test #45 where fake-ssh wrapper is copied create plink.exe,
with an error message that says the "text is busy".

I have a mild suspicion that the root cause of the bug is that the
fake SSH process from the previous test is still running by the time
the next test wants to replace it with a new binary, but in the
meantime, removing the target that could still be executing before
copying something else over seems to work it around.

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

Crawling towards -rc2Junio C Hamano Tue, 17 Oct 2017 04:31:31 +0000 (13:31 +0900)

Crawling towards -rc2

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

Merge branch 'sb/diff-color-move'Junio C Hamano Tue, 17 Oct 2017 04:29:19 +0000 (13:29 +0900)

Merge branch 'sb/diff-color-move'

A recently added "--color-moved" feature of "diff" fell into
infinite loop when ignoring whitespace changes, which has been
fixed.

* sb/diff-color-move:
diff: fix infinite loop with --color-moved --ignore-space-change

Merge branch 'js/rebase-i-final'Junio C Hamano Tue, 17 Oct 2017 04:29:19 +0000 (13:29 +0900)

Merge branch 'js/rebase-i-final'

Error message fix.

* js/rebase-i-final:
sequencer.c: fix and unify error messages in rearrange_squash()

Merge branch 'jc/doc-checkout'Junio C Hamano Tue, 17 Oct 2017 04:29:19 +0000 (13:29 +0900)

Merge branch 'jc/doc-checkout'

Doc update.

* jc/doc-checkout:
checkout doc: clarify command line args for "checkout paths" mode

column: show auto columns when pager is activeKevin Daudt Mon, 16 Oct 2017 18:35:11 +0000 (20:35 +0200)

column: show auto columns when pager is active

When columns are set to automatic for git tag and the output is
paginated by git, the output is a single column instead of multiple
columns.

Standard behaviour in git is to honor auto values when the pager is
active, which happens for example with commands like git log showing
colors when being paged.

Since ff1e72483 (tag: change default of `pager.tag` to "on",
2017-08-02), the pager has been enabled by default, exposing this
problem to more people.

finalize_colopts in column.c only checks whether the output is a TTY to
determine if columns should be enabled with columns set to auto. Also
check if the pager is active.

Adding a test for git column is possible but requires some care to work
around a race on stdin. See commit 18d8c2693 (test_terminal: redirect
child process' stdin to a pty, 2015-08-04). Test git tag instead, since
that does not involve stdin, and since that was the original motivation
for this patch.

Helped-by: Rafael Ascensão <rafa.almas@gmail.com>
Signed-off-by: Kevin Daudt <me@ikke.info>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

l10n: es.po: v2.15.0 round 2Christopher Díaz Riveros Tue, 17 Oct 2017 02:17:30 +0000 (21:17 -0500)

l10n: es.po: v2.15.0 round 2

Spanish translation for v2.15.0

Signed-off-by: Christopher Díaz Riveros <chrisadr@gentoo.org>

Documentation: document Extra ParametersJonathan Tan Mon, 16 Oct 2017 17:55:32 +0000 (10:55 -0700)

Documentation: document Extra Parameters

Document the server support for Extra Parameters, additional information
that the client can send in its first message to the server during a
Git client-server interaction.

Signed-off-by: Jonathan Tan <jonathantanmy@google.com>
Signed-off-by: Brandon Williams <bmwill@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

ssh: introduce a 'simple' ssh variantBrandon Williams Mon, 16 Oct 2017 17:55:31 +0000 (10:55 -0700)

ssh: introduce a 'simple' ssh variant

When using the 'ssh' transport, the '-o' option is used to specify an
environment variable which should be set on the remote end. This allows
git to send additional information when contacting the server,
requesting the use of a different protocol version via the
'GIT_PROTOCOL' environment variable like so: "-o SendEnv=GIT_PROTOCOL".

Unfortunately not all ssh variants support the sending of environment
variables to the remote end. To account for this, only use the '-o'
option for ssh variants which are OpenSSH compliant. This is done by
checking that the basename of the ssh command is 'ssh' or the ssh
variant is overridden to be 'ssh' (via the ssh.variant config).

Other options like '-p' and '-P', which are used to specify a specific
port to use, or '-4' and '-6', which are used to indicate that IPV4 or
IPV6 addresses should be used, may also not be supported by all ssh
variants.

Currently if an ssh command's basename wasn't 'plink' or
'tortoiseplink' git assumes that the command is an OpenSSH variant.
Since user configured ssh commands may not be OpenSSH compliant, tighten
this constraint and assume a variant of 'simple' if the basename of the
command doesn't match the variants known to git. The new ssh variant
'simple' will only have the host and command to execute ([username@]host
command) passed as parameters to the ssh command.

Update the Documentation to better reflect the command-line options sent
to ssh commands based on their variant.

Reported-by: Jeffrey Yasskin <jyasskin@google.com>
Signed-off-by: Brandon Williams <bmwill@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

i5700: add interop test for protocol transitionBrandon Williams Mon, 16 Oct 2017 17:55:30 +0000 (10:55 -0700)

i5700: add interop test for protocol transition

Signed-off-by: Brandon Williams <bmwill@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

http: tell server that the client understands v1Brandon Williams Mon, 16 Oct 2017 17:55:29 +0000 (10:55 -0700)

http: tell server that the client understands v1

Tell a server that protocol v1 can be used by sending the http header
'Git-Protocol' with 'version=1' indicating this.

Also teach the apache http server to pass through the 'Git-Protocol'
header as an environment variable 'GIT_PROTOCOL'.

Signed-off-by: Brandon Williams <bmwill@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

connect: tell server that the client understands v1Brandon Williams Mon, 16 Oct 2017 17:55:28 +0000 (10:55 -0700)

connect: tell server that the client understands v1

Teach the connection logic to tell a serve that it understands protocol
v1. This is done in 2 different ways for the builtin transports, both
of which ultimately set 'GIT_PROTOCOL' to 'version=1' on the server.

1. git://
A normal request to git-daemon is structured as
"command path/to/repo\0host=..\0" and due to a bug introduced in
49ba83fb6 (Add virtualization support to git-daemon, 2006-09-19) we
aren't able to place any extra arguments (separated by NULs) besides
the host otherwise the parsing of those arguments would enter an
infinite loop. This bug was fixed in 73bb33a94 (daemon: Strictly
parse the "extra arg" part of the command, 2009-06-04) but a check
was put in place to disallow extra arguments so that new clients
wouldn't trigger this bug in older servers.

In order to get around this limitation git-daemon was taught to
recognize additional request arguments hidden behind a second
NUL byte. Requests can then be structured like:
"command path/to/repo\0host=..\0\0version=1\0key=value\0".
git-daemon can then parse out the extra arguments and set
'GIT_PROTOCOL' accordingly.

By placing these extra arguments behind a second NUL byte we can
skirt around both the infinite loop bug in 49ba83fb6 (Add
virtualization support to git-daemon, 2006-09-19) as well as the
explicit disallowing of extra arguments introduced in 73bb33a94
(daemon: Strictly parse the "extra arg" part of the command,
2009-06-04) because both of these versions of git-daemon check for a
single NUL byte after the host argument before terminating the
argument parsing.

2. ssh://, file://
Set 'GIT_PROTOCOL' environment variable with the desired protocol
version. With the file:// transport, 'GIT_PROTOCOL' can be set
explicitly in the locally running git-upload-pack or git-receive-pack
processes. With the ssh:// transport and OpenSSH compliant ssh
programs, 'GIT_PROTOCOL' can be sent across ssh by using '-o
SendEnv=GIT_PROTOCOL' and having the server whitelist this
environment variable.

Signed-off-by: Brandon Williams <bmwill@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

connect: teach client to recognize v1 server responseBrandon Williams Mon, 16 Oct 2017 17:55:27 +0000 (10:55 -0700)

connect: teach client to recognize v1 server response

Teach a client to recognize that a server understands protocol v1 by
looking at the first pkt-line the server sends in response. This is
done by looking for the response "version 1" send by upload-pack or
receive-pack.

Signed-off-by: Brandon Williams <bmwill@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

upload-pack, receive-pack: introduce protocol version 1Brandon Williams Mon, 16 Oct 2017 17:55:26 +0000 (10:55 -0700)

upload-pack, receive-pack: introduce protocol version 1

Teach upload-pack and receive-pack to understand and respond using
protocol version 1, if requested.

Protocol version 1 is simply the original and current protocol (what I'm
calling version 0) with the addition of a single packet line, which
precedes the ref advertisement, indicating the protocol version being
spoken.

Signed-off-by: Brandon Williams <bmwill@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

daemon: recognize hidden request argumentsBrandon Williams Mon, 16 Oct 2017 17:55:25 +0000 (10:55 -0700)

daemon: recognize hidden request arguments

A normal request to git-daemon is structured as
"command path/to/repo\0host=..\0" and due to a bug introduced in
49ba83fb6 (Add virtualization support to git-daemon, 2006-09-19) we
aren't able to place any extra arguments (separated by NULs) besides the
host otherwise the parsing of those arguments would enter an infinite
loop. This bug was fixed in 73bb33a94 (daemon: Strictly parse the
"extra arg" part of the command, 2009-06-04) but a check was put in
place to disallow extra arguments so that new clients wouldn't trigger
this bug in older servers.

In order to get around this limitation teach git-daemon to recognize
additional request arguments hidden behind a second NUL byte. Requests
can then be structured like:
"command path/to/repo\0host=..\0\0version=1\0key=value\0". git-daemon
can then parse out the extra arguments and set 'GIT_PROTOCOL'
accordingly.

By placing these extra arguments behind a second NUL byte we can skirt
around both the infinite loop bug in 49ba83fb6 (Add virtualization
support to git-daemon, 2006-09-19) as well as the explicit disallowing
of extra arguments introduced in 73bb33a94 (daemon: Strictly parse the
"extra arg" part of the command, 2009-06-04) because both of these
versions of git-daemon check for a single NUL byte after the host
argument before terminating the argument parsing.

Signed-off-by: Brandon Williams <bmwill@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

protocol: introduce protocol extension mechanismsBrandon Williams Mon, 16 Oct 2017 17:55:24 +0000 (10:55 -0700)

protocol: introduce protocol extension mechanisms

Create protocol.{c,h} and provide functions which future servers and
clients can use to determine which protocol to use or is being used.

Also introduce the 'GIT_PROTOCOL' environment variable which will be
used to communicate a colon separated list of keys with optional values
to a server. Unknown keys and values must be tolerated. This mechanism
is used to communicate which version of the wire protocol a client would
like to use with a server.

Signed-off-by: Brandon Williams <bmwill@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

pkt-line: add packet_write functionBrandon Williams Mon, 16 Oct 2017 17:55:23 +0000 (10:55 -0700)

pkt-line: add packet_write function

Add a function which can be used to write the contents of an arbitrary
buffer. This makes it easy to build up data in a buffer before writing
the packet instead of formatting the entire contents of the packet using
'packet_write_fmt()'.

Signed-off-by: Brandon Williams <bmwill@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

l10n: git.pot: v2.15.0 round 2 (2 new, 2 removed)Jiang Xin Tue, 17 Oct 2017 01:49:23 +0000 (09:49 +0800)

l10n: git.pot: v2.15.0 round 2 (2 new, 2 removed)

Generate po/git.pot from v2.15.0-rc1 for git v2.15.0 l10n round 2.

Signed-off-by: Jiang Xin <worldhello.net@gmail.com>

Merge branch 'master' of git://github.com/git-l10n... Jiang Xin Tue, 17 Oct 2017 01:44:24 +0000 (09:44 +0800)

Merge branch 'master' of git://github.com/git-l10n/git-po

* 'master' of git://github.com/git-l10n/git-po:
l10n: ru.po: update Russian translation
l10n: bg.po: Updated Bulgarian translation (3245t)
l10n: sv.po: Update Swedish translation (3245t0f0u)
l10n: vi.po(3245t): Updated Vietnamese translation for v2.15.0
l10n: es.po: Update translation v2.15.0 round 1
l10n: git.pot: v2.15.0 round 1 (68 new, 36 removed)
l10n: es.po: spanish added to TEAMS
l10n: es.po: initial Spanish version git 2.14.0

submodule: simplify decision tree whether to or not... Heiko Voigt Mon, 16 Oct 2017 13:59:05 +0000 (15:59 +0200)

submodule: simplify decision tree whether to or not to fetch

To make extending this logic later easier.

Signed-off-by: Heiko Voigt <hvoigt@hvoigt.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

implement fetching of moved submodulesHeiko Voigt Mon, 16 Oct 2017 13:58:27 +0000 (15:58 +0200)

implement fetching of moved submodules

We store the changed submodules paths to calculate which submodule needs
fetching. This does not work for moved submodules since their paths do
not stay the same in case of a moved submodules. In case of new
submodules we do not have a path in the current checkout, since they
just appeared in this fetch.

It is more general to collect the submodule names for changes instead of
their paths to include the above cases. If we do not have a
configuration for a gitlink we rely on constructing a default name from
the path if a git repository can be found at its path. We skip
non-configured gitlinks whose default name collides with a configured
one.

With the change described above we implement 'on-demand' fetching of
changes in moved submodules.

Signed-off-by: Heiko Voigt <hvoigt@hvoigt.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

diff: fix infinite loop with --color-moved --ignore... Jeff King Fri, 13 Oct 2017 00:18:37 +0000 (20:18 -0400)

diff: fix infinite loop with --color-moved --ignore-space-change

The --color-moved code uses next_byte() to advance through
the blob contents. When the user has asked to ignore
whitespace changes, we try to collapse any whitespace change
down to a single space.

However, we enter the conditional block whenever we see the
IGNORE_WHITESPACE_CHANGE flag, even if the next byte isn't
whitespace.

This means that the combination of "--color-moved and
--ignore-space-change" was completely broken. Worse, because
we return from next_byte() without having advanced our
pointer, the function makes no forward progress in the
buffer and loops infinitely.

Fix this by entering the conditional only when we actually
see whitespace. We can apply this also to the
IGNORE_WHITESPACE change. That code path isn't buggy
(because it falls through to returning the next
non-whitespace byte), but it makes the logic more clear if
we only bother to look at whitespace flags after seeing that
the next byte is whitespace.

Reported-by: Orgad Shaneh <orgads@gmail.com>
Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

refs/files-backend: convert static functions to object_idbrian m. carlson Sun, 15 Oct 2017 22:07:12 +0000 (22:07 +0000)

refs/files-backend: convert static functions to object_id

Convert several static functions to take pointers to struct object_id.
Change the relevant parameters to write_packed_entry to be const, as we
don't modify them. Rename lock_ref_sha1_basic to lock_ref_oid_basic to
reflect its new argument. Update the docstring for verify lock to
account for the new parameter name, and note additionally that the
old_oid may be NULL.

Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

refs: convert read_raw_ref backends to struct object_idbrian m. carlson Sun, 15 Oct 2017 22:07:11 +0000 (22:07 +0000)

refs: convert read_raw_ref backends to struct object_id

Convert the unsigned char * parameter to struct object_id * for
files_read_raw_ref and packed_read_raw_ref. Update the documentation.
Switch from using get_sha1_hex and a hard-coded 40 to using
parse_oid_hex.

Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

refs: convert peel_object to struct object_idbrian m. carlson Sun, 15 Oct 2017 22:07:10 +0000 (22:07 +0000)

refs: convert peel_object to struct object_id

Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

refs: convert resolve_ref_unsafe to struct object_idbrian m. carlson Sun, 15 Oct 2017 22:07:09 +0000 (22:07 +0000)

refs: convert resolve_ref_unsafe to struct object_id

Convert resolve_ref_unsafe to take a pointer to struct object_id by
converting one remaining caller to use struct object_id, removing the
temporary NULL pointer check in expand_ref, converting the declaration
and definition, and applying the following semantic patch:

@@
expression E1, E2, E3, E4;
@@
- resolve_ref_unsafe(E1, E2, E3.hash, E4)
+ resolve_ref_unsafe(E1, E2, &E3, E4)

@@
expression E1, E2, E3, E4;
@@
- resolve_ref_unsafe(E1, E2, E3->hash, E4)
+ resolve_ref_unsafe(E1, E2, E3, E4)

Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

worktree: convert struct worktree to object_idbrian m. carlson Sun, 15 Oct 2017 22:07:08 +0000 (22:07 +0000)

worktree: convert struct worktree to object_id

Convert the head_sha1 member to be head_oid instead. This is required
to convert resolve_ref_unsafe.

Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

refs: convert resolve_gitlink_ref to struct object_idbrian m. carlson Sun, 15 Oct 2017 22:07:07 +0000 (22:07 +0000)

refs: convert resolve_gitlink_ref to struct object_id

Convert the declaration and definition of resolve_gitlink_ref to use
struct object_id and apply the following semantic patch:

@@
expression E1, E2, E3;
@@
- resolve_gitlink_ref(E1, E2, E3.hash)
+ resolve_gitlink_ref(E1, E2, &E3)

@@
expression E1, E2, E3;
@@
- resolve_gitlink_ref(E1, E2, E3->hash)
+ resolve_gitlink_ref(E1, E2, E3)

Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Convert remaining callers of resolve_gitlink_ref to... brian m. carlson Sun, 15 Oct 2017 22:07:06 +0000 (22:07 +0000)

Convert remaining callers of resolve_gitlink_ref to object_id

Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

sha1_file: convert index_path and index_fd to struct... brian m. carlson Sun, 15 Oct 2017 22:07:05 +0000 (22:07 +0000)

sha1_file: convert index_path and index_fd to struct object_id

Convert these two functions and the functions that underlie them to take
pointers to struct object_id. This is a prerequisite to convert
resolve_gitlink_ref. Fix a stray tab in the middle of the index_mem
call in index_pipe by converting it to a space.

Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

refs: convert reflog_expire parameter to struct object_idbrian m. carlson Sun, 15 Oct 2017 22:07:04 +0000 (22:07 +0000)

refs: convert reflog_expire parameter to struct object_id

reflog_expire already used struct object_id internally, but it did not
take it as a parameter. Adjust the parameter (and the callers) to pass
a pointer to struct object_id instead of a pointer to unsigned char.
Remove the temporary inserted earlier as it is no longer required.

Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

refs: convert read_ref_at to struct object_idbrian m. carlson Sun, 15 Oct 2017 22:07:03 +0000 (22:07 +0000)

refs: convert read_ref_at to struct object_id

Convert the callers and internals, including struct read_ref_at_cb, of
read_ref_at to use struct object_id.

Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

refs: convert peel_ref to struct object_idbrian m. carlson Sun, 15 Oct 2017 22:07:02 +0000 (22:07 +0000)

refs: convert peel_ref to struct object_id

Convert peel_ref (and its corresponding backend) to struct object_id.

This transformation was done with an update to the declaration,
definition, comments, and test helper and the following semantic patch:

@@
expression E1, E2;
@@
- peel_ref(E1, E2.hash)
+ peel_ref(E1, &E2)

@@
expression E1, E2;
@@
- peel_ref(E1, E2->hash)
+ peel_ref(E1, E2)

Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

builtin/pack-objects: convert to struct object_idbrian m. carlson Sun, 15 Oct 2017 22:07:01 +0000 (22:07 +0000)

builtin/pack-objects: convert to struct object_id

This is one of the last unconverted callers to peel_ref. While we're
fixing that, convert the rest of the file, since it will need to be
converted at some point anyway.

Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

pack-bitmap: convert traverse_bitmap_commit_list to... brian m. carlson Sun, 15 Oct 2017 22:07:00 +0000 (22:07 +0000)

pack-bitmap: convert traverse_bitmap_commit_list to object_id

Convert traverse_bitmap_commit_list and the callbacks it takes to use a
pointer to struct object_id.

Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

refs: convert dwim_log to struct object_idbrian m. carlson Sun, 15 Oct 2017 22:06:59 +0000 (22:06 +0000)

refs: convert dwim_log to struct object_id

Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

builtin/reflog: convert remaining unsigned char uses... brian m. carlson Sun, 15 Oct 2017 22:06:58 +0000 (22:06 +0000)

builtin/reflog: convert remaining unsigned char uses to object_id

Convert the remaining uses of unsigned char [20] to struct object_id.
This conversion is needed for dwim_log.

Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

refs: convert dwim_ref and expand_ref to struct object_idbrian m. carlson Sun, 15 Oct 2017 22:06:57 +0000 (22:06 +0000)

refs: convert dwim_ref and expand_ref to struct object_id

All of the callers of these functions just pass the hash member of a
struct object_id, so convert them to use a pointer to struct object_id
directly. Insert a check for NULL in expand_ref on a temporary basis;
this check can be removed when resolve_ref_unsafe is converted as well.

Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

refs: convert read_ref and read_ref_full to object_idbrian m. carlson Sun, 15 Oct 2017 22:06:56 +0000 (22:06 +0000)

refs: convert read_ref and read_ref_full to object_id

All but two of the call sites already have parameters using the hash
parameter of struct object_id, so convert them to take a pointer to the
struct directly. Also convert refs_read_refs_full, the underlying
implementation.

Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

refs: convert resolve_refdup and refs_resolve_refdup... brian m. carlson Sun, 15 Oct 2017 22:06:55 +0000 (22:06 +0000)

refs: convert resolve_refdup and refs_resolve_refdup to struct object_id

All of the callers already pass the hash member of struct object_id, so
update them to pass a pointer to the struct directly,

This transformation was done with an update to declaration and
definition and the following semantic patch:

@@
expression E1, E2, E3, E4;
@@
- resolve_refdup(E1, E2, E3.hash, E4)
+ resolve_refdup(E1, E2, &E3, E4)

@@
expression E1, E2, E3, E4;
@@
- resolve_refdup(E1, E2, E3->hash, E4)
+ resolve_refdup(E1, E2, E3, E4)

Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Convert check_connected to use struct object_idbrian m. carlson Sun, 15 Oct 2017 22:06:54 +0000 (22:06 +0000)

Convert check_connected to use struct object_id

Convert check_connected and the callbacks it takes to use struct
object_id.

Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

refs: update ref transactions to use struct object_idbrian m. carlson Sun, 15 Oct 2017 22:06:53 +0000 (22:06 +0000)

refs: update ref transactions to use struct object_id

Update the ref transaction code to use struct object_id. Remove one
NULL pointer check which was previously inserted around a dereference;
since we now pass a pointer to struct object_id directly through, the
code we're calling handles this for us.

Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

refs: prevent accidental NULL dereference in write_pseu... brian m. carlson Sun, 15 Oct 2017 22:06:52 +0000 (22:06 +0000)

refs: prevent accidental NULL dereference in write_pseudoref

Several of the refs functions take NULL to indicate that the ref is not
to be updated. If refs_update_ref were called with a NULL new object
ID, we could pass that NULL pointer to write_pseudoref, which would then
segfault when it dereferenced it. Instead, simply return successfully,
since if we don't want to update the pseudoref, there's nothing to do.

Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

refs: convert update_ref and refs_update_ref to use... brian m. carlson Sun, 15 Oct 2017 22:06:51 +0000 (22:06 +0000)

refs: convert update_ref and refs_update_ref to use struct object_id

Convert update_ref, refs_update_ref, and write_pseudoref to use struct
object_id. Update the existing callers as well. Remove update_ref_oid,
as it is no longer needed.

Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

refs: convert delete_ref and refs_delete_ref to struct... brian m. carlson Sun, 15 Oct 2017 22:06:50 +0000 (22:06 +0000)

refs: convert delete_ref and refs_delete_ref to struct object_id

Convert delete_ref and refs_delete_ref to take a pointer to struct
object_id. Update the documentation accordingly, including referring to
null_oid in lowercase, as it is not a #define constant.

Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

refs/files-backend: convert struct ref_to_prune to... brian m. carlson Sun, 15 Oct 2017 22:06:49 +0000 (22:06 +0000)

refs/files-backend: convert struct ref_to_prune to object_id

Change the member of this struct to be a struct object_id.

Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

walker: convert to struct object_idbrian m. carlson Sun, 15 Oct 2017 22:06:48 +0000 (22:06 +0000)

walker: convert to struct object_id

Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

sequencer.c: fix and unify error messages in rearrange_... Ralf Thielow Sun, 15 Oct 2017 17:07:42 +0000 (19:07 +0200)

sequencer.c: fix and unify error messages in rearrange_squash()

When the write opertion fails, we write that we could
not read. Change the error message to match the operation
and remove the full stop at the end.

When ftruncate() fails, we write that we couldn't finish
the operation on the todo file. It is more accurate to write
that we couldn't truncate as we do in other calls of ftruncate().

Signed-off-by: Ralf Thielow <ralf.thielow@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

l10n: ru.po: update Russian translationDimitriy Ryazantcev Sun, 15 Oct 2017 10:14:45 +0000 (13:14 +0300)

l10n: ru.po: update Russian translation

Signed-off-by: Dimitriy Ryazantcev <dimitriy.ryazantcev@gmail.com>

Merge branch 'master' of git://github.com/alshopov... Jiang Xin Sat, 14 Oct 2017 13:24:21 +0000 (21:24 +0800)

Merge branch 'master' of git://github.com/alshopov/git-po

* 'master' of git://github.com/alshopov/git-po:
l10n: bg.po: Updated Bulgarian translation (3245t)

l10n: bg.po: Updated Bulgarian translation (3245t)Alexander Shopov Sat, 14 Oct 2017 09:45:28 +0000 (11:45 +0200)

l10n: bg.po: Updated Bulgarian translation (3245t)

Signed-off-by: Alexander Shopov <ash@kambanaria.org>