gitweb.git
sequencer: support amending commitsJohannes Schindelin Fri, 21 Oct 2016 12:25:17 +0000 (14:25 +0200)

sequencer: support amending commits

This teaches the run_git_commit() function to take an argument that will
allow us to implement "todo" commands that need to amend the commit
messages ("fixup", "squash" and "reword").

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

sequencer: allow editing the commit message on a case... Johannes Schindelin Fri, 21 Oct 2016 12:25:12 +0000 (14:25 +0200)

sequencer: allow editing the commit message on a case-by-case basis

In the upcoming commits, we will implement more and more of rebase -i's
functionality inside the sequencer. One particular feature of the
commands to come is that some of them allow editing the commit message
while others don't, i.e. we cannot define in the replay_opts whether the
commit message should be edited or not.

Let's add a new parameter to the run_git_commit() function. Previously,
it was the duty of the caller to ensure that the opts->edit setting
indicates whether to let the user edit the commit message or not,
indicating that it is an "all or nothing" setting, i.e. that the
sequencer wants to let the user edit *all* commit message, or none at
all. In the upcoming rebase -i mode, it will depend on the particular
command that is currently executed, though.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

sequencer: introduce a helper to read files written... Johannes Schindelin Fri, 21 Oct 2016 12:25:08 +0000 (14:25 +0200)

sequencer: introduce a helper to read files written by scripts

As we are slowly teaching the sequencer to perform the hard work for
the interactive rebase, we need to read files that were written by
shell scripts.

These files typically contain a single line and are invariably ended
by a line feed (and possibly a carriage return before that). Let's use
a helper to read such files and to remove the line ending.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

sequencer: prepare for rebase -i's commit functionalityJohannes Schindelin Fri, 21 Oct 2016 12:25:04 +0000 (14:25 +0200)

sequencer: prepare for rebase -i's commit functionality

In interactive rebases, we commit a little bit differently than the
sequencer did so far: we heed the "author-script", the "message" and the
"amend" files in the .git/rebase-merge/ subdirectory.

Likewise, we may want to edit the commit message *even* when providing a
file containing the suggested commit message. Therefore we change the
code to not even provide a default message when we do not want any, and
to call the editor explicitly.

Also, in "interactive rebase" mode we want to skip reading the options
in the state directory of the cherry-pick/revert commands.

Finally, as interactive rebase's GPG settings are configured differently
from how cherry-pick (and therefore sequencer) handles them, we will
leave support for that to the next commit.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

sequencer: remember the onelines when parsing the todo... Johannes Schindelin Fri, 21 Oct 2016 12:25:00 +0000 (14:25 +0200)

sequencer: remember the onelines when parsing the todo file

The `git-rebase-todo` file contains a list of commands. Most of those
commands have the form

<verb> <sha1> <oneline>

The <oneline> is displayed primarily for the user's convenience, as
rebase -i really interprets only the <verb> <sha1> part. However, there
are *some* places in interactive rebase where the <oneline> is used to
display messages, e.g. for reporting at which commit we stopped.

So let's just remember it when parsing the todo file; we keep a copy of
the entire todo file anyway (to write out the new `done` and
`git-rebase-todo` file just before processing each command), so all we
need to do is remember the begin offsets and lengths.

As we will have to parse and remember the command-line for `exec` commands
later, we do not call the field "oneline" but rather "arg" (and will reuse
that for exec's command-line).

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

sequencer: get rid of the subcommand fieldJohannes Schindelin Fri, 21 Oct 2016 12:24:55 +0000 (14:24 +0200)

sequencer: get rid of the subcommand field

The subcommands are used exactly once, at the very beginning of
sequencer_pick_revisions(), to determine what to do. This is an
unnecessary level of indirection: we can simply call the correct
function to begin with. So let's do that.

While at it, ensure that the subcommands return an error code so that
they do not have to die() all over the place (bad practice for library
functions...).

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

sequencer: avoid completely different messages for... Johannes Schindelin Fri, 21 Oct 2016 12:24:50 +0000 (14:24 +0200)

sequencer: avoid completely different messages for different actions

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

sequencer: strip CR from the todo scriptJohannes Schindelin Fri, 21 Oct 2016 12:24:46 +0000 (14:24 +0200)

sequencer: strip CR from the todo script

It is not unheard of that editors on Windows write CR/LF even if the
file originally had only LF. This is particularly awkward for exec lines
of a rebase -i todo sheet. Take for example the insn "exec echo": The
shell script parser splits at the LF and leaves the CR attached to
"echo", which leads to the unknown command "echo\r".

Work around that by stripping CR when reading the todo commands, as we
already do for LF.

This happens to fix t9903.14 and .15 in MSYS1 environments (with the
rebase--helper patches based on this patch series): the todo script
constructed in such a setup contains CR/LF thanks to MSYS1 runtime's
cleverness.

Based on a report and a patch by Johannes Sixt.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

sequencer: completely revamp the "todo" script parsingJohannes Schindelin Fri, 21 Oct 2016 12:24:41 +0000 (14:24 +0200)

sequencer: completely revamp the "todo" script parsing

When we came up with the "sequencer" idea, we really wanted to have
kind of a plumbing equivalent of the interactive rebase. Hence the
choice of words: the "todo" script, a "pick", etc.

However, when it came time to implement the entire shebang, somehow this
idea got lost and the sequencer was used as working horse for
cherry-pick and revert instead. So as not to interfere with the
interactive rebase, it even uses a separate directory to store its
state.

Furthermore, it also is stupidly strict about the "todo" script it
accepts: while it parses commands in a way that was *designed* to be
similar to the interactive rebase, it then goes on to *error out* if the
commands disagree with the overall action (cherry-pick or revert).

Finally, the sequencer code chose to deviate from the interactive rebase
code insofar that when it comes to writing the file with the remaining
commands, it *reformats* the "todo" script instead of just writing the
part of the parsed script that were not yet processed. This is not only
unnecessary churn, but might well lose information that is valuable to
the user (i.e. comments after the commands).

Let's just bite the bullet and rewrite the entire parser; the code now
becomes not only more elegant: it allows us to go on and teach the
sequencer how to parse *true* "todo" scripts as used by the interactive
rebase itself. In a way, the sequencer is about to grow up to do its
older brother's job. Better.

In particular, we choose to maintain the list of commands in an array
instead of a linked list: this is flexible enough to allow us later on to
even implement rebase -i's reordering of fixup!/squash! commits very
easily (and with a very nice speed bonus, at least on Windows).

While at it, do not stop at the first problem, but list *all* of the
problems. This will help the user when the sequencer will do `rebase
-i`'s work by allowing to address all issues in one go rather than going
back and forth until the todo list is valid.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

sequencer: refactor the code to obtain a short commit... Johannes Schindelin Fri, 21 Oct 2016 12:24:37 +0000 (14:24 +0200)

sequencer: refactor the code to obtain a short commit name

Not only does this DRY up the code (providing a better documentation what
the code is about, as well as allowing to change the behavior in a single
place), it also makes it substantially shorter to use the same
functionality in functions to be introduced when we teach the sequencer to
process interactive-rebase's git-rebase-todo file.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

sequencer: future-proof read_populate_todo()Johannes Schindelin Fri, 21 Oct 2016 12:24:32 +0000 (14:24 +0200)

sequencer: future-proof read_populate_todo()

Over the next commits, we will work on improving the sequencer to the
point where it can process the todo script of an interactive rebase. To
that end, we will need to teach the sequencer to read interactive
rebase's todo file. In preparation, we consolidate all places where
that todo file is needed to call a function that we will later extend.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

sequencer: plug memory leaks for the option valuesJohannes Schindelin Fri, 21 Oct 2016 12:24:13 +0000 (14:24 +0200)

sequencer: plug memory leaks for the option values

The sequencer is our attempt to lib-ify cherry-pick. Yet it behaves
like a one-shot command when it reads its configuration: memory is
allocated and released only when the command exits.

This is kind of okay for git-cherry-pick, which *is* a one-shot
command. All the work to make the sequencer its work horse was
done to allow using the functionality as a library function, though,
including proper clean-up after use.

To remedy that, take custody of the option values in question,
allocating and duping literal constants as needed and freeing them
at end.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

sequencer: future-proof remove_sequencer_state()Johannes Schindelin Fri, 14 Oct 2016 13:17:20 +0000 (15:17 +0200)

sequencer: future-proof remove_sequencer_state()

In a couple of commits, we will teach the sequencer to handle the
nitty gritty of the interactive rebase, which keeps its state in a
different directory.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

sequencer: avoid unnecessary indirectionJohannes Schindelin Fri, 14 Oct 2016 13:17:16 +0000 (15:17 +0200)

sequencer: avoid unnecessary indirection

We really do not need the *pointer to a* pointer to the options in
the read_populate_opts() function.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

sequencer: use memoized sequencer directory pathJohannes Schindelin Fri, 14 Oct 2016 13:17:12 +0000 (15:17 +0200)

sequencer: use memoized sequencer directory path

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

sequencer: use static initializers for replay_optsJohannes Schindelin Fri, 14 Oct 2016 13:15:56 +0000 (15:15 +0200)

sequencer: use static initializers for replay_opts

This change is not completely faithful: instead of initializing all fields
to 0, we choose to initialize command and subcommand to -1 (instead of
defaulting to REPLAY_REVERT and REPLAY_NONE, respectively). Practically,
it makes no difference at all, but future-proofs the code to require
explicit assignments for both fields.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Eighth batch for 2.11Junio C Hamano Thu, 6 Oct 2016 21:55:18 +0000 (14:55 -0700)

Eighth batch for 2.11

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

Merge branch 'sg/ref-filter-parse-optim'Junio C Hamano Thu, 6 Oct 2016 21:53:12 +0000 (14:53 -0700)

Merge branch 'sg/ref-filter-parse-optim'

The code that parses the format parameter of for-each-ref command
has seen a micro-optimization.

* sg/ref-filter-parse-optim:
ref-filter: strip format option after a field name only once while parsing

Merge branch 'rs/cocci'Junio C Hamano Thu, 6 Oct 2016 21:53:12 +0000 (14:53 -0700)

Merge branch 'rs/cocci'

Code clean-up with help from coccinelle tool continues.

* rs/cocci:
coccicheck: make transformation for strbuf_addf(sb, "...") more precise
use strbuf_add_unique_abbrev() for adding short hashes, part 2
use strbuf_addstr() instead of strbuf_addf() with "%s", part 2
gitignore: ignore output files of coccicheck make target

Merge branch 'rs/c-auto-resets-attributes'Junio C Hamano Thu, 6 Oct 2016 21:53:12 +0000 (14:53 -0700)

Merge branch 'rs/c-auto-resets-attributes'

When "%C(auto)" appears at the very beginning of the pretty format
string, it did not need to issue the reset sequence, but it did.

* rs/c-auto-resets-attributes:
pretty: avoid adding reset for %C(auto) if output is empty

Merge branch 'ps/http-gssapi-cred-delegation'Junio C Hamano Thu, 6 Oct 2016 21:53:11 +0000 (14:53 -0700)

Merge branch 'ps/http-gssapi-cred-delegation'

In recent versions of cURL, GSSAPI credential delegation is
disabled by default due to CVE-2011-2192; introduce a configuration
to selectively allow enabling this.

* ps/http-gssapi-cred-delegation:
http: control GSSAPI credential delegation

Merge branch 'jk/graph-padding-fix'Junio C Hamano Thu, 6 Oct 2016 21:53:11 +0000 (14:53 -0700)

Merge branch 'jk/graph-padding-fix'

The "graph" API used in "git log --graph" miscounted the number of
output columns consumed so far when drawing a padding line, which
has been fixed; this did not affect any existing code as nobody
tried to write anything after the padding on such a line, though.

* jk/graph-padding-fix:
graph: fix extra spaces in graph_padding_line

Merge branch 'jc/blame-abbrev'Junio C Hamano Thu, 6 Oct 2016 21:53:10 +0000 (14:53 -0700)

Merge branch 'jc/blame-abbrev'

Almost everybody uses DEFAULT_ABBREV to refer to the default
setting for the abbreviation, but "git blame" peeked into
underlying variable bypassing the macro for no good reason.

* jc/blame-abbrev:
blame: use DEFAULT_ABBREV macro

Merge branch 'vn/revision-shorthand-for-side-branch... Junio C Hamano Thu, 6 Oct 2016 21:53:10 +0000 (14:53 -0700)

Merge branch 'vn/revision-shorthand-for-side-branch-log'

"git log rev^..rev" is an often-used revision range specification
to show what was done on a side branch merged at rev. This has
gained a short-hand "rev^-1". In general "rev^-$n" is the same as
"^rev^$n rev", i.e. what has happened on other branches while the
history leading to nth parent was looking the other way.

* vn/revision-shorthand-for-side-branch-log:
revision: new rev^-n shorthand for rev^n..rev

Merge branch 'jk/ambiguous-short-object-names'Junio C Hamano Thu, 6 Oct 2016 21:53:10 +0000 (14:53 -0700)

Merge branch 'jk/ambiguous-short-object-names'

When given an abbreviated object name that is not (or more
realistically, "no longer") unique, we gave a fatal error
"ambiguous argument". This error is now accompanied by hints that
lists the objects that begins with the given prefix. During the
course of development of this new feature, numerous minor bugs were
uncovered and corrected, the most notable one of which is that we
gave "short SHA1 xxxx is ambiguous." twice without good reason.

* jk/ambiguous-short-object-names:
get_short_sha1: make default disambiguation configurable
get_short_sha1: list ambiguous objects on error
for_each_abbrev: drop duplicate objects
sha1_array: let callbacks interrupt iteration
get_short_sha1: mark ambiguity error for translation
get_short_sha1: NUL-terminate hex prefix
get_short_sha1: refactor init of disambiguation code
get_short_sha1: parse tags when looking for treeish
get_sha1: propagate flags to child functions
get_sha1: avoid repeating ourselves via ONLY_TO_DIE
get_sha1: detect buggy calls with multiple disambiguators

Sync with 2.10.1Junio C Hamano Mon, 3 Oct 2016 20:32:41 +0000 (13:32 -0700)

Sync with 2.10.1

* maint:
Git 2.10.1

Seventh batch for 2.11Junio C Hamano Mon, 3 Oct 2016 20:32:19 +0000 (13:32 -0700)

Seventh batch for 2.11

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

Merge branch 'pb/rev-list-reverse-with-count'Junio C Hamano Mon, 3 Oct 2016 20:30:39 +0000 (13:30 -0700)

Merge branch 'pb/rev-list-reverse-with-count'

Doc update to clarify what "log -3 --reverse" does.

* pb/rev-list-reverse-with-count:
rev-list-options: clarify the usage of --reverse

Merge branch 'dt/tree-fsck'Junio C Hamano Mon, 3 Oct 2016 20:30:38 +0000 (13:30 -0700)

Merge branch 'dt/tree-fsck'

The codepath in "git fsck" to detect malformed tree objects has
been updated not to die but keep going after detecting them.

* dt/tree-fsck:
fsck: handle bad trees like other errors
tree-walk: be more specific about corrupt tree errors

Merge branch 'kd/mailinfo-quoted-string'Junio C Hamano Mon, 3 Oct 2016 20:30:38 +0000 (13:30 -0700)

Merge branch 'kd/mailinfo-quoted-string'

An author name, that spelled a backslash-quoted double quote in the
human readable part "My \"double quoted\" name", was not unquoted
correctly while applying a patch from a piece of e-mail.

* kd/mailinfo-quoted-string:
mailinfo: unescape quoted-pair in header fields
t5100-mailinfo: replace common path prefix with variable

Merge branch 'mh/diff-indent-heuristic'Junio C Hamano Mon, 3 Oct 2016 20:30:38 +0000 (13:30 -0700)

Merge branch 'mh/diff-indent-heuristic'

Clean-up for a recently graduated topic.

* mh/diff-indent-heuristic:
xdiff: rename "struct group" to "struct xdlgroup"

Merge branch 'dt/mailinfo'Junio C Hamano Mon, 3 Oct 2016 20:30:37 +0000 (13:30 -0700)

Merge branch 'dt/mailinfo'

* dt/mailinfo:
add David Turner's Two Sigma address

Merge branch 'va/git-gui-i18n'Junio C Hamano Mon, 3 Oct 2016 20:30:37 +0000 (13:30 -0700)

Merge branch 'va/git-gui-i18n'

"git gui" l10n to Portuguese.

* va/git-gui-i18n:
git-gui: l10n: add Portuguese translation
git-gui i18n: mark strings for translation

Merge branch 'rs/git-gui-use-modern-git-merge-syntax'Junio C Hamano Mon, 3 Oct 2016 20:30:36 +0000 (13:30 -0700)

Merge branch 'rs/git-gui-use-modern-git-merge-syntax'

The original command line syntax for "git merge", which was "git
merge <msg> HEAD <parent>...", has been deprecated for quite some
time, and "git gui" was the last in-tree user of the syntax. This
is finally fixed, so that we can move forward with the deprecation.

* rs/git-gui-use-modern-git-merge-syntax:
git-gui: stop using deprecated merge syntax

Merge branch 'jc/verify-loose-object-header'Junio C Hamano Mon, 3 Oct 2016 20:30:36 +0000 (13:30 -0700)

Merge branch 'jc/verify-loose-object-header'

Codepaths that read from an on-disk loose object were too loose in
validating what they are reading is a proper object file and
sometimes read past the data they read from the disk, which has
been corrected. H/t to Gustavo Grieco for reporting.

* jc/verify-loose-object-header:
unpack_sha1_header(): detect malformed object header
streaming: make sure to notice corrupt object

Merge branch 'nd/init-core-worktree-in-multi-worktree... Junio C Hamano Mon, 3 Oct 2016 20:30:34 +0000 (13:30 -0700)

Merge branch 'nd/init-core-worktree-in-multi-worktree-world'

"git init" tried to record core.worktree in the repository's
'config' file when GIT_WORK_TREE environment variable was set and
it was different from where GIT_DIR appears as ".git" at its top,
but the logic was faulty when .git is a "gitdir:" file that points
at the real place, causing trouble in working trees that are
managed by "git worktree". This has been corrected.

* nd/init-core-worktree-in-multi-worktree-world:
init: kill git_link variable
init: do not set unnecessary core.worktree
init: kill set_git_dir_init()
init: call set_git_dir_init() from within init_db()
init: correct re-initialization from a linked worktree

Merge branch 'ik/gitweb-force-highlight'Junio C Hamano Mon, 3 Oct 2016 20:30:33 +0000 (13:30 -0700)

Merge branch 'ik/gitweb-force-highlight'

"gitweb" can spawn "highlight" to show blob contents with
(programming) language-specific syntax highlighting, but only
when the language is known. "highlight" can however be told
to make the guess itself by giving it "--force" option, which
has been enabled.

* ik/gitweb-force-highlight:
gitweb: use highlight's shebang detection
gitweb: remove unused guess_file_syntax() parameter

Merge branch 'rs/copy-array'Junio C Hamano Mon, 3 Oct 2016 20:30:33 +0000 (13:30 -0700)

Merge branch 'rs/copy-array'

Code cleanup.

* rs/copy-array:
use COPY_ARRAY
add COPY_ARRAY

Git 2.10.1 v2.10.1Junio C Hamano Mon, 3 Oct 2016 20:24:18 +0000 (13:24 -0700)

Git 2.10.1

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

Merge branch 'jk/ident-ai-canonname-could-be-null'... Junio C Hamano Mon, 3 Oct 2016 20:22:32 +0000 (13:22 -0700)

Merge branch 'jk/ident-ai-canonname-could-be-null' into maint

In the codepath that comes up with the hostname to be used in an
e-mail when the user didn't tell us, we looked at ai_canonname
field in struct addrinfo without making sure it is not NULL first.

* jk/ident-ai-canonname-could-be-null:
ident: handle NULL ai_canonname

Merge branch 'jk/doc-cvs-update' into maintJunio C Hamano Mon, 3 Oct 2016 20:22:25 +0000 (13:22 -0700)

Merge branch 'jk/doc-cvs-update' into maint

Documentation around tools to import from CVS was fairly outdated.

* jk/doc-cvs-update:
docs/cvs-migration: mention cvsimport caveats
docs/cvs-migration: update link to cvsps homepage
docs/cvsimport: prefer cvs-fast-export to parsecvs

Merge branch 'jk/pack-tag-of-tag' into maintJunio C Hamano Mon, 3 Oct 2016 20:22:13 +0000 (13:22 -0700)

Merge branch 'jk/pack-tag-of-tag' into maint

"git pack-objects --include-tag" was taught that when we know that
we are sending an object C, we want a tag B that directly points at
C but also a tag A that points at the tag B. We used to miss the
intermediate tag B in some cases.

* jk/pack-tag-of-tag:
pack-objects: walk tag chains for --include-tag
t5305: simplify packname handling
t5305: use "git -C"
t5305: drop "dry-run" of unpack-objects
t5305: move cleanup into test block

ref-filter: strip format option after a field name... SZEDER Gábor Sun, 2 Oct 2016 16:35:11 +0000 (18:35 +0200)

ref-filter: strip format option after a field name only once while parsing

When parse_ref_filter_atom() iterates over a list of valid atoms to
check that a field name is one of them, it has to strip the optional
colon-separated format option suffix that might follow the field name.
However, it does so inside the loop, i.e. it performs the exact same
stripping over and over again.

Move stripping the format option suffix out of that loop, so it's only
performed once for each parsed field name.

Signed-off-by: SZEDER Gábor <szeder@ira.uka.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

coccicheck: make transformation for strbuf_addf(sb... René Scharfe Sun, 2 Oct 2016 22:58:21 +0000 (00:58 +0200)

coccicheck: make transformation for strbuf_addf(sb, "...") more precise

We can replace strbuf_addf() calls that just add a simple string with
calls to strbuf_addstr() to make the intent clearer. We need to be
careful if that string contains printf format specifications like %%,
though, as a simple replacement would change the output.

Add checks to the semantic patch to make sure we only perform the
transformation if the second argument is a string constant (possibly
translated) that doesn't contain any percent signs.

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

pretty: avoid adding reset for %C(auto) if output is... René Scharfe Thu, 29 Sep 2016 18:13:05 +0000 (20:13 +0200)

pretty: avoid adding reset for %C(auto) if output is empty

We emit an escape sequence for resetting color and attribute for
%C(auto) to make sure automatic coloring is displayed as intended.
Stop doing that if the output strbuf is empty, i.e. when %C(auto)
appears at the start of the format string, because then there is no
need for a reset and we save a few bytes in the output.

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

http: control GSSAPI credential delegationPetr Stodulka Wed, 28 Sep 2016 18:01:34 +0000 (20:01 +0200)

http: control GSSAPI credential delegation

Delegation of credentials is disabled by default in libcurl since
version 7.21.7 due to security vulnerability CVE-2011-2192. Which
makes troubles with GSS/kerberos authentication when delegation
of credentials is required. This can be changed with option
CURLOPT_GSSAPI_DELEGATION in libcurl with set expected parameter
since libcurl version 7.22.0.

This patch provides new configuration variable http.delegation
which corresponds to curl parameter "--delegation" (see man 1 curl).

The following values are supported:

* none (default).
* policy
* always

Signed-off-by: Petr Stodulka <pstodulk@redhat.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Sync with maintJunio C Hamano Thu, 29 Sep 2016 23:58:29 +0000 (16:58 -0700)

Sync with maint

* maint:
Prepare for 2.10.1

Sixth batch for 2.11Junio C Hamano Thu, 29 Sep 2016 23:58:20 +0000 (16:58 -0700)

Sixth batch for 2.11

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

Merge branch 'jc/worktree-config'Junio C Hamano Thu, 29 Sep 2016 23:57:14 +0000 (16:57 -0700)

Merge branch 'jc/worktree-config'

"git worktree", even though it used the default_abbrev setting that
ought to be affected by core.abbrev configuration variable, ignored
the variable setting. The command has been taught to read the
default set of configuration variables to correct this.

* jc/worktree-config:
worktree: honor configuration variables

Merge branch 'jk/ident-ai-canonname-could-be-null'Junio C Hamano Thu, 29 Sep 2016 23:57:14 +0000 (16:57 -0700)

Merge branch 'jk/ident-ai-canonname-could-be-null'

In the codepath that comes up with the hostname to be used in an
e-mail when the user didn't tell us, we looked at ai_canonname
field in struct addrinfo without making sure it is not NULL first.

* jk/ident-ai-canonname-could-be-null:
ident: handle NULL ai_canonname

Merge branch 'jt/fetch-pack-in-vain-count-with-stateless'Junio C Hamano Thu, 29 Sep 2016 23:57:13 +0000 (16:57 -0700)

Merge branch 'jt/fetch-pack-in-vain-count-with-stateless'

When "git fetch" tries to find where the history of the repository
it runs in has diverged from what the other side has, it has a
mechanism to avoid digging too deep into irrelevant side branches.
This however did not work well over the "smart-http" transport due
to a design bug, which has been fixed.

* jt/fetch-pack-in-vain-count-with-stateless:
fetch-pack: do not reset in_vain on non-novel acks

Merge branch 'jk/verify-packfile-gently'Junio C Hamano Thu, 29 Sep 2016 23:57:13 +0000 (16:57 -0700)

Merge branch 'jk/verify-packfile-gently'

A low-level function verify_packfile() was meant to show errors
that were detected without dying itself, but under some conditions
it didn't and died instead, which has been fixed.

* jk/verify-packfile-gently:
verify_packfile: check pack validity before accessing data

Merge branch 'jt/mailinfo-fold-in-body-headers'Junio C Hamano Thu, 29 Sep 2016 23:57:12 +0000 (16:57 -0700)

Merge branch 'jt/mailinfo-fold-in-body-headers'

When "git format-patch --stdout" output is placed as an in-body
header and it uses the RFC2822 header folding, "git am" failed to
put the header line back into a single logical line. The
underlying "git mailinfo" was taught to handle this properly.

* jt/mailinfo-fold-in-body-headers:
mailinfo: handle in-body header continuations
mailinfo: make is_scissors_line take plain char *
mailinfo: separate in-body header processing

Prepare for 2.10.1Junio C Hamano Thu, 29 Sep 2016 23:51:09 +0000 (16:51 -0700)

Prepare for 2.10.1

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

Merge branch 'tg/add-chmod+x-fix' into maintJunio C Hamano Thu, 29 Sep 2016 23:49:47 +0000 (16:49 -0700)

Merge branch 'tg/add-chmod+x-fix' into maint

"git add --chmod=+x <pathspec>" added recently only toggled the
executable bit for paths that are either new or modified. This has
been corrected to flip the executable bit for all paths that match
the given pathspec.

* tg/add-chmod+x-fix:
t3700-add: do not check working tree file mode without POSIXPERM
t3700-add: create subdirectory gently
add: modify already added files when --chmod is given
read-cache: introduce chmod_index_entry
update-index: add test for chmod flags

Merge branch 'et/add-chmod-x' into maintJunio C Hamano Thu, 29 Sep 2016 23:49:46 +0000 (16:49 -0700)

Merge branch 'et/add-chmod-x' into maint

"git add --chmod=+x" added recently lacked documentation, which has
been corrected.

* et/add-chmod-x:
add: document the chmod option

Merge branch 'rt/rebase-i-broken-insn-advise' into... Junio C Hamano Thu, 29 Sep 2016 23:49:46 +0000 (16:49 -0700)

Merge branch 'rt/rebase-i-broken-insn-advise' into maint

When "git rebase -i" is given a broken instruction, it told the
user to fix it with "--edit-todo", but didn't say what the step
after that was (i.e. "--continue").

* rt/rebase-i-broken-insn-advise:
rebase -i: improve advice on bad instruction lines

Merge branch 'ls/travis-homebrew-path-fix' into maintJunio C Hamano Thu, 29 Sep 2016 23:49:45 +0000 (16:49 -0700)

Merge branch 'ls/travis-homebrew-path-fix' into maint

The procedure to build Git on Mac OS X for Travis CI hardcoded the
internal directory structure we assumed HomeBrew uses, which was a
no-no. The procedure has been updated to ask HomeBrew things we
need to know to fix this.

* ls/travis-homebrew-path-fix:
travis-ci: ask homebrew for its path instead of hardcoding it

Merge branch 'js/regexec-buf' into maintJunio C Hamano Thu, 29 Sep 2016 23:49:44 +0000 (16:49 -0700)

Merge branch 'js/regexec-buf' into maint

Some codepaths in "git diff" used regexec(3) on a buffer that was
mmap(2)ed, which may not have a terminating NUL, leading to a read
beyond the end of the mapped region. This was fixed by introducing
a regexec_buf() helper that takes a <ptr,len> pair with REG_STARTEND
extension.

* js/regexec-buf:
regex: use regexec_buf()
regex: add regexec_buf() that can work on a non NUL-terminated string
regex: -G<pattern> feeds a non NUL-terminated string to regexec() and fails

Merge branch 'nd/checkout-disambiguation' into maintJunio C Hamano Thu, 29 Sep 2016 23:49:43 +0000 (16:49 -0700)

Merge branch 'nd/checkout-disambiguation' into maint

"git checkout <word>" does not follow the usual disambiguation
rules when the <word> can be both a rev and a path, to allow
checking out a branch 'foo' in a project that happens to have a
file 'foo' in the working tree without having to disambiguate.
This was poorly documented and the check was incorrect when the
command was run from a subdirectory.

* nd/checkout-disambiguation:
checkout: fix ambiguity check in subdir
checkout.txt: document a common case that ignores ambiguation rules
checkout: add some spaces between code and comment

Merge branch 'ep/doc-check-ref-format-example' into... Junio C Hamano Thu, 29 Sep 2016 23:49:43 +0000 (16:49 -0700)

Merge branch 'ep/doc-check-ref-format-example' into maint

A shell script example in check-ref-format documentation has been
fixed.

* ep/doc-check-ref-format-example:
git-check-ref-format.txt: fixup documentation

Merge branch 'mm/config-color-ui-default-to-auto' into... Junio C Hamano Thu, 29 Sep 2016 23:49:42 +0000 (16:49 -0700)

Merge branch 'mm/config-color-ui-default-to-auto' into maint

Documentation for individual configuration variables to control use
of color (like `color.grep`) said that their default value is
'false', instead of saying their default is taken from `color.ui`.
When we updated the default value for color.ui from 'false' to
'auto' quite a while ago, all of them broke. This has been
corrected.

* mm/config-color-ui-default-to-auto:
Documentation/config: default for color.* is color.ui

Merge branch 'jk/reduce-gc-aggressive-depth' into maintJunio C Hamano Thu, 29 Sep 2016 23:49:42 +0000 (16:49 -0700)

Merge branch 'jk/reduce-gc-aggressive-depth' into maint

"git gc --aggressive" used to limit the delta-chain length to 250,
which is way too deep for gaining additional space savings and is
detrimental for runtime performance. The limit has been reduced to
50.

* jk/reduce-gc-aggressive-depth:
gc: default aggressive depth to 50

Merge branch 'jk/rebase-i-drop-ident-check' into maintJunio C Hamano Thu, 29 Sep 2016 23:49:41 +0000 (16:49 -0700)

Merge branch 'jk/rebase-i-drop-ident-check' into maint

Even when "git pull --rebase=preserve" (and the underlying "git
rebase --preserve") can complete without creating any new commit
(i.e. fast-forwards), it still insisted on having a usable ident
information (read: user.email is set correctly), which was less
than nice. As the underlying commands used inside "git rebase"
would fail with a more meaningful error message and advice text
when the bogus ident matters, this extra check was removed.

* jk/rebase-i-drop-ident-check:
rebase-interactive: drop early check for valid ident

Merge branch 'jt/format-patch-base-info-above-sig'... Junio C Hamano Thu, 29 Sep 2016 23:49:40 +0000 (16:49 -0700)

Merge branch 'jt/format-patch-base-info-above-sig' into maint

"git format-patch --base=..." feature that was recently added
showed the base commit information after "-- " e-mail signature
line, which turned out to be inconvenient. The base information
has been moved above the signature line.

* jt/format-patch-base-info-above-sig:
format-patch: show base info before email signature

Merge branch 'ks/perf-build-with-autoconf' into maintJunio C Hamano Thu, 29 Sep 2016 23:49:40 +0000 (16:49 -0700)

Merge branch 'ks/perf-build-with-autoconf' into maint

Performance tests done via "t/perf" did not use the same set of
build configuration if the user relied on autoconf generated
configuration.

* ks/perf-build-with-autoconf:
t/perf/run: copy config.mak.autogen & friends to build area

Merge branch 'rs/xdiff-merge-overlapping-hunks-for... Junio C Hamano Thu, 29 Sep 2016 23:49:39 +0000 (16:49 -0700)

Merge branch 'rs/xdiff-merge-overlapping-hunks-for-W-context' into maint

"git diff -W" output needs to extend the context backward to
include the header line of the current function and also forward to
include the body of the entire current function up to the header
line of the next one. This process may have to merge to adjacent
hunks, but the code forgot to do so in some cases.

* rs/xdiff-merge-overlapping-hunks-for-W-context:
xdiff: fix merging of hunks with -W context and -u context

Merge branch 'ew/http-do-not-forget-to-call-curl-multi... Junio C Hamano Thu, 29 Sep 2016 23:49:39 +0000 (16:49 -0700)

Merge branch 'ew/http-do-not-forget-to-call-curl-multi-remove-handle' into maint

The http transport (with curl-multi option, which is the default
these days) failed to remove curl-easy handle from a curlm session,
which led to unnecessary API failures.

* ew/http-do-not-forget-to-call-curl-multi-remove-handle:
http: always remove curl easy from curlm session on release
http: consolidate #ifdefs for curl_multi_remove_handle
http: warn on curl_multi_add_handle failures

Merge branch 'jk/patch-ids-no-merges' into maintJunio C Hamano Thu, 29 Sep 2016 23:49:38 +0000 (16:49 -0700)

Merge branch 'jk/patch-ids-no-merges' into maint

"git log --cherry-pick" used to include merge commits as candidates
to be matched up with other commits, resulting a lot of wasted time.
The patch-id generation logic has been updated to ignore merges to
avoid the wastage.

* jk/patch-ids-no-merges:
patch-ids: refuse to compute patch-id for merge commit
patch-ids: turn off rename detection

Merge branch 'js/git-gui-commit-gpgsign' into maintJunio C Hamano Thu, 29 Sep 2016 23:49:38 +0000 (16:49 -0700)

Merge branch 'js/git-gui-commit-gpgsign' into maint

"git commit-tree" stopped reading commit.gpgsign configuration
variable that was meant for Porcelain "git commit" in Git 2.9; we
forgot to update "git gui" to look at the configuration to match
this change.

* js/git-gui-commit-gpgsign:
git-gui: respect commit.gpgsign again

Merge branch 'jk/fix-remote-curl-url-wo-proto' into... Junio C Hamano Thu, 29 Sep 2016 23:49:38 +0000 (16:49 -0700)

Merge branch 'jk/fix-remote-curl-url-wo-proto' into maint

"git fetch http::/site/path" did not die correctly and segfaulted
instead.

* jk/fix-remote-curl-url-wo-proto:
remote-curl: handle URLs without protocol

Merge branch 'sy/git-gui-i18n-ja' into maintJunio C Hamano Thu, 29 Sep 2016 23:49:37 +0000 (16:49 -0700)

Merge branch 'sy/git-gui-i18n-ja' into maint

Update Japanese translation for "git-gui".

* sy/git-gui-i18n-ja:
git-gui: update Japanese information
git-gui: update Japanese translation
git-gui: add Japanese language code
git-gui: apply po template to Japanese translation
git-gui: consistently use the same word for "blame" in Japanese
git-gui: consistently use the same word for "remote" in Japanese

Merge branch 'mr/vcs-svn-printf-ulong' into maintJunio C Hamano Thu, 29 Sep 2016 23:49:37 +0000 (16:49 -0700)

Merge branch 'mr/vcs-svn-printf-ulong' into maint

Code cleanup.

* mr/vcs-svn-printf-ulong:
vcs-svn/fast_export: fix timestamp fmt specifiers

Merge branch 'rs/unpack-trees-reduce-file-scope-global... Junio C Hamano Thu, 29 Sep 2016 23:49:36 +0000 (16:49 -0700)

Merge branch 'rs/unpack-trees-reduce-file-scope-global' into maint

Code cleanup.

* rs/unpack-trees-reduce-file-scope-global:
unpack-trees: pass checkout state explicitly to check_updates()

Merge branch 'rs/strbuf-remove-fix' into maintJunio C Hamano Thu, 29 Sep 2016 23:49:35 +0000 (16:49 -0700)

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

Code cleanup.

* rs/strbuf-remove-fix:
strbuf: use valid pointer in strbuf_remove()

Merge branch 'rs/checkout-some-states-are-const' into... Junio C Hamano Thu, 29 Sep 2016 23:49:35 +0000 (16:49 -0700)

Merge branch 'rs/checkout-some-states-are-const' into maint

Code cleanup.

* rs/checkout-some-states-are-const:
checkout: constify parameters of checkout_stage() and checkout_merged()

Merge branch 'bw/pathspec-remove-unused-extern-decl... Junio C Hamano Thu, 29 Sep 2016 23:49:34 +0000 (16:49 -0700)

Merge branch 'bw/pathspec-remove-unused-extern-decl' into maint

Code cleanup.

* bw/pathspec-remove-unused-extern-decl:
pathspec: remove unnecessary function prototypes

graph: fix extra spaces in graph_padding_lineJeff King Thu, 29 Sep 2016 08:37:51 +0000 (04:37 -0400)

graph: fix extra spaces in graph_padding_line

The graph_padding_line() function outputs a series of "|"
columns, and then pads with spaces to graph->width by
calling graph_pad_horizontally(). However, we tell the
latter that we wrote graph->num_columns characters, which is
not true; we also needed spaces between the columns. Let's
keep a count of how many characters we've written, which is
what all the other callers of graph_pad_horizontally() do.

Without this, any output that is written at the end of a
padding line will be bumped out by at least an extra
graph->num_columns spaces. Presumably nobody ever noticed
the bug because there's no code path that actually writes to
the end of a padding line.

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

blame: use DEFAULT_ABBREV macroJunio C Hamano Wed, 28 Sep 2016 21:56:00 +0000 (14:56 -0700)

blame: use DEFAULT_ABBREV macro

This does not make any practical difference in today's code, but
everybody else accesses the default abbreviation length via the
DEFAULT_ABBREV macro. Make sure this oddball codepath does not
stray from the convention.

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

mailinfo: unescape quoted-pair in header fieldsKevin Daudt Wed, 28 Sep 2016 19:52:32 +0000 (21:52 +0200)

mailinfo: unescape quoted-pair in header fields

rfc2822 has provisions for quoted strings in structured header fields,
but also allows for escaping these with so-called quoted-pairs.

The only thing git currently does is removing exterior quotes, but
quotes within are left alone.

Remove exterior quotes and remove escape characters so that they don't
show up in the author field.

Signed-off-by: Kevin Daudt <me@ikke.info>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

t5100-mailinfo: replace common path prefix with variableKevin Daudt Wed, 28 Sep 2016 19:52:31 +0000 (21:52 +0200)

t5100-mailinfo: replace common path prefix with variable

Many tests need to store data in a file, and repeat the same pattern to
refer to that path:

"$TEST_DIRECTORY"/t5100/

Create a variable that contains this path, and use that instead.

While we're making this change, make sure the quotes are not just around
the variable, but around the entire string to not give the impression
we want shell splitting to affect the other variables.

Signed-off-by: Kevin Daudt <me@ikke.info>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

rev-list-options: clarify the usage of --reversePranit Bauva Tue, 27 Sep 2016 20:44:09 +0000 (20:44 +0000)

rev-list-options: clarify the usage of --reverse

Users often wonder if the oldest or the newest n commits are shown
by `log -n --reverse`. Clarify that --reverse kicks in only after
deciding which commits are to be shown to unconfuse them.

Reported-by: Ruediger Meier <sweet_f_a@gmx.de>
Signed-off-by: Pranit Bauva <pranit.bauva@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

fsck: handle bad trees like other errorsDavid Turner Tue, 27 Sep 2016 20:59:51 +0000 (16:59 -0400)

fsck: handle bad trees like other errors

Instead of dying when fsck hits a malformed tree object, log the error
like any other and continue. Now fsck can tell the user which tree is
bad, too.

Signed-off-by: David Turner <dturner@twosigma.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

tree-walk: be more specific about corrupt tree errorsJeff King Tue, 27 Sep 2016 20:59:50 +0000 (16:59 -0400)

tree-walk: be more specific about corrupt tree errors

When the tree-walker runs into an error, it just calls
die(), and the message is always "corrupt tree file".
However, we are actually covering several cases here; let's
give the user a hint about what happened.

Let's also avoid using the word "corrupt", which makes it
seem like the data bit-rotted on disk. Our sha1 check would
already have found that. These errors are ones of data that
is malformed in the first place.

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

use strbuf_add_unique_abbrev() for adding short hashes... René Scharfe Tue, 27 Sep 2016 19:11:58 +0000 (21:11 +0200)

use strbuf_add_unique_abbrev() for adding short hashes, part 2

Call strbuf_add_unique_abbrev() to add abbreviated hashes to strbufs
instead of taking detours through find_unique_abbrev() and its static
buffer. This is shorter and a bit more efficient.

1eb47f167d65d1d305b9c196a1bb40eb96117cb1 already converted six cases,
this patch covers three more.

A semantic patch for Coccinelle is included for easier checking for
new cases that might be introduced in the future.

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

use strbuf_addstr() instead of strbuf_addf() with ... René Scharfe Tue, 27 Sep 2016 19:08:21 +0000 (21:08 +0200)

use strbuf_addstr() instead of strbuf_addf() with "%s", part 2

Replace uses of strbuf_addf() for adding strings with more lightweight
strbuf_addstr() calls. This is shorter and makes the intent clearer.

bc57b9c0cc5a123365a922fa1831177e3fd607ed already converted three cases,
this patch covers two more.

A semantic patch for Coccinelle is included for easier checking for
new cases that might be introduced in the future.

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

gitignore: ignore output files of coccicheck make targetRené Scharfe Tue, 27 Sep 2016 20:12:33 +0000 (22:12 +0200)

gitignore: ignore output files of coccicheck make target

Helped-by: Jakub Narębski <jnareb@gmail.com>
Signed-off-by: Rene Scharfe <l.s.r@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

revision: new rev^-n shorthand for rev^n..revVegard Nossum Tue, 27 Sep 2016 08:32:49 +0000 (10:32 +0200)

revision: new rev^-n shorthand for rev^n..rev

"git log rev^..rev" is commonly used to show all work done on and merged
from a side branch. This patch introduces a shorthand "rev^-" for this
and additionally allows "rev^-$n" to mean "reachable from rev, excluding
what is reachable from the nth parent of rev". For example, for a
two-parent merge, you can use rev^-2 to get the set of commits which were
made to the main branch while the topic branch was prepared.

Signed-off-by: Vegard Nossum <vegard.nossum@oracle.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

worktree: honor configuration variablesJunio C Hamano Tue, 27 Sep 2016 06:49:39 +0000 (23:49 -0700)

worktree: honor configuration variables

The command accesses default_abbrev (defined in environment.c and is
updated via core.abbrev configuration), but never makes any call to
git_config(). The output from "worktree list" ignores the abbrev
setting for this reason.

Make a call to git_config() to read the default set of configuration
variables at the beginning of the command.

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

get_short_sha1: make default disambiguation configurableJeff King Tue, 27 Sep 2016 12:38:01 +0000 (08:38 -0400)

get_short_sha1: make default disambiguation configurable

When we find ambiguous short sha1s, we may get a
disambiguation rule from our caller's context. But if we
don't, we fall back to treating all sha1s the same, even
though most projects will tend to refer only to commits by
their short sha1s.

This patch introduces a configuration option that lets the
user pick a different fallback (e.g., only commits). It's
possible that we may want to make this the default, but it's
a good idea to start as a config option for two reasons:

1. It lets people experiment with this and see if it's a
good idea (i.e., the "tend to" above is an assumption;
we don't really know if this will break some obscure
cases).

2. Even if we do flip the default, it gives people an
escape hatch if it causes problems (you can sometimes
override it by asking for "1234^{tree}", but not all
combinations are possible).

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

xdiff: rename "struct group" to "struct xdlgroup"Jeff King Tue, 27 Sep 2016 04:37:33 +0000 (00:37 -0400)

xdiff: rename "struct group" to "struct xdlgroup"

Commit e8adf23 (xdl_change_compact(): introduce the concept
of a change group, 2016-08-22) added a "struct group" type
to xdiff/xdiffi.c. But the POSIX system header "grp.h"
already defines "struct group" (it is part of the getgrnam
interface). This happens to work because the new type is
local to xdiffi.c, and the xdiff code includes a relatively
small set of system headers. But it will break compilation
if xdiff ever switches to using git-compat-util.h. It can
also probably cause confusion with tools that look at the
whole code base, like coccinelle or ctags.

Let's resolve by giving the xdiff variant a scoped name,
which is closer to other xdiff types anyway (e.g.,
xdlfile_t, though note that xdiff is fond if typedefs when
Git usually is not).

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

add David Turner's Two Sigma addressDavid Turner Tue, 27 Sep 2016 00:11:33 +0000 (20:11 -0400)

add David Turner's Two Sigma address

Signed-off-by: David Turner <novalis@novalis.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Fifth batch for 2.11Junio C Hamano Mon, 26 Sep 2016 23:11:46 +0000 (16:11 -0700)

Fifth batch for 2.11

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

Merge branch 'jk/clone-recursive-progress'Junio C Hamano Mon, 26 Sep 2016 23:09:22 +0000 (16:09 -0700)

Merge branch 'jk/clone-recursive-progress'

"git clone --recurse-submodules" lost the progress eye-candy in
recent update, which has been corrected.

* jk/clone-recursive-progress:
clone: pass --progress decision to recursive submodules

Merge branch 'jk/doc-cvs-update'Junio C Hamano Mon, 26 Sep 2016 23:09:22 +0000 (16:09 -0700)

Merge branch 'jk/doc-cvs-update'

Documentation around tools to import from CVS was fairly outdated.

* jk/doc-cvs-update:
docs/cvs-migration: mention cvsimport caveats
docs/cvs-migration: update link to cvsps homepage
docs/cvsimport: prefer cvs-fast-export to parsecvs

Merge branch 'rt/rebase-i-broken-insn-advise'Junio C Hamano Mon, 26 Sep 2016 23:09:21 +0000 (16:09 -0700)

Merge branch 'rt/rebase-i-broken-insn-advise'

When "git rebase -i" is given a broken instruction, it told the
user to fix it with "--edit-todo", but didn't say what the step
after that was (i.e. "--continue").

* rt/rebase-i-broken-insn-advise:
rebase -i: improve advice on bad instruction lines

Merge branch 'rs/checkout-init-macro'Junio C Hamano Mon, 26 Sep 2016 23:09:21 +0000 (16:09 -0700)

Merge branch 'rs/checkout-init-macro'

Code cleanup.

* rs/checkout-init-macro:
introduce CHECKOUT_INIT

Merge branch 'ls/travis-homebrew-path-fix'Junio C Hamano Mon, 26 Sep 2016 23:09:20 +0000 (16:09 -0700)

Merge branch 'ls/travis-homebrew-path-fix'

The procedure to build Git on Mac OS X for Travis CI hardcoded the
internal directory structure we assumed HomeBrew uses, which was a
no-no. The procedure has been updated to ask HomeBrew things we
need to know to fix this.

* ls/travis-homebrew-path-fix:
travis-ci: ask homebrew for its path instead of hardcoding it

Merge branch 'tg/add-chmod+x-fix'Junio C Hamano Mon, 26 Sep 2016 23:09:20 +0000 (16:09 -0700)

Merge branch 'tg/add-chmod+x-fix'

"git add --chmod=+x <pathspec>" added recently only toggled the
executable bit for paths that are either new or modified. This has
been corrected to flip the executable bit for all paths that match
the given pathspec.

* tg/add-chmod+x-fix:
t3700-add: do not check working tree file mode without POSIXPERM
t3700-add: create subdirectory gently
add: modify already added files when --chmod is given
read-cache: introduce chmod_index_entry
update-index: add test for chmod flags

Merge branch 'js/regexec-buf'Junio C Hamano Mon, 26 Sep 2016 23:09:19 +0000 (16:09 -0700)

Merge branch 'js/regexec-buf'

Some codepaths in "git diff" used regexec(3) on a buffer that was
mmap(2)ed, which may not have a terminating NUL, leading to a read
beyond the end of the mapped region. This was fixed by introducing
a regexec_buf() helper that takes a <ptr,len> pair with REG_STARTEND
extension.

* js/regexec-buf:
regex: use regexec_buf()
regex: add regexec_buf() that can work on a non NUL-terminated string
regex: -G<pattern> feeds a non NUL-terminated string to regexec() and fails