gitweb.git
Merge branch 'bw/repo-object'Junio C Hamano Wed, 5 Jul 2017 20:32:55 +0000 (13:32 -0700)

Merge branch 'bw/repo-object'

Introduce a "repository" object to eventually make it easier to
work in multiple repositories (the primary focus is to work with
the superproject and its submodules) in a single process.

* bw/repo-object:
ls-files: use repository object
repository: enable initialization of submodules
submodule: convert is_submodule_initialized to work on a repository
submodule: add repo_read_gitmodules
submodule-config: store the_submodule_cache in the_repository
repository: add index_state to struct repo
config: read config from a repository object
path: add repo_worktree_path and strbuf_repo_worktree_path
path: add repo_git_path and strbuf_repo_git_path
path: worktree_git_path() should not use file relocation
path: convert do_git_path to take a 'struct repository'
path: convert strbuf_git_common_path to take a 'struct repository'
path: always pass in commondir to update_common_dir
path: create path.h
environment: store worktree in the_repository
environment: place key repository state in the_repository
repository: introduce the repository object
environment: remove namespace_len variable
setup: add comment indicating a hack
setup: don't perform lazy initialization of repository state

Thirteenth batch for 2.14Junio C Hamano Fri, 30 Jun 2017 20:47:49 +0000 (13:47 -0700)

Thirteenth batch for 2.14

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

Merge branch 'vs/typofixes'Junio C Hamano Fri, 30 Jun 2017 20:45:25 +0000 (13:45 -0700)

Merge branch 'vs/typofixes'

Many typofixes.

* vs/typofixes:
Spelling fixes

Merge branch 'rs/apply-validate-input'Junio C Hamano Fri, 30 Jun 2017 20:45:24 +0000 (13:45 -0700)

Merge branch 'rs/apply-validate-input'

Tighten error checks for invalid "git apply" input.

* rs/apply-validate-input:
apply: check git diffs for mutually exclusive header lines
apply: check git diffs for invalid file modes
apply: check git diffs for missing old filenames

Merge branch 'jc/pack-bitmap-unaligned'Junio C Hamano Fri, 30 Jun 2017 20:45:24 +0000 (13:45 -0700)

Merge branch 'jc/pack-bitmap-unaligned'

An unaligned 32-bit access in pack-bitmap code ahs been corrected.

* jc/pack-bitmap-unaligned:
pack-bitmap: don't perform unaligned memory access

Merge branch 'ah/doc-pretty-color-auto-prefix'Junio C Hamano Fri, 30 Jun 2017 20:45:23 +0000 (13:45 -0700)

Merge branch 'ah/doc-pretty-color-auto-prefix'

Doc update.

* ah/doc-pretty-color-auto-prefix:
doc: clarify syntax for %C(auto,...) in pretty formats

Merge branch 'ks/submodule-add-doc'Junio C Hamano Fri, 30 Jun 2017 20:45:22 +0000 (13:45 -0700)

Merge branch 'ks/submodule-add-doc'

Doc update.

* ks/submodule-add-doc:
Documentation/git-submodule: cleanup "add" section

Merge branch 'ks/status-initial-commit'Junio C Hamano Fri, 30 Jun 2017 20:45:22 +0000 (13:45 -0700)

Merge branch 'ks/status-initial-commit'

"git status" has long shown essentially the same message as "git
commit"; the message it gives while preparing for the root commit,
i.e. "Initial commit", was hard to understand for some new users.
Now it says "No commits yet" to stress more on the current status
(rather than the commit the user is preparing for, which is more in
line with the focus of "git commit").

* ks/status-initial-commit:
status: contextually notify user about an initial commit

Merge branch 'ab/die-errors-in-threaded'Junio C Hamano Fri, 30 Jun 2017 20:45:21 +0000 (13:45 -0700)

Merge branch 'ab/die-errors-in-threaded'

Traditionally, the default die() routine had a code to prevent it
from getting called multiple times, which interacted badly when a
threaded program used it (one downside is that the real error may
be hidden and instead the only error message given to the user may
end up being "die recursion detected", which is not very useful).

* ab/die-errors-in-threaded:
die(): stop hiding errors due to overzealous recursion guard

Merge branch 'pw/rebase-i-regression-fix-tests'Junio C Hamano Fri, 30 Jun 2017 20:45:21 +0000 (13:45 -0700)

Merge branch 'pw/rebase-i-regression-fix-tests'

Fix a recent regression to "git rebase -i" and add tests that would
have caught it and others.

* pw/rebase-i-regression-fix-tests:
t3420: fix under GETTEXT_POISON build
rebase: add more regression tests for console output
rebase: add regression tests for console output
rebase -i: add test for reflog message
sequencer: print autostash messages to stderr

apply: check git diffs for mutually exclusive header... René Scharfe Tue, 27 Jun 2017 17:03:39 +0000 (19:03 +0200)

apply: check git diffs for mutually exclusive header lines

A file can either be added, removed, copied, or renamed, but no two of
these actions can be done by the same patch. Some of these combinations
provoke error messages due to missing file names, and some are only
caught by an assertion. Check git patches already as they are parsed
and report conflicting lines on sight.

Found by Vegard Nossum using AFL.

Reported-by: Vegard Nossum <vegard.nossum@oracle.com>
Signed-off-by: Rene Scharfe <l.s.r@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

apply: check git diffs for invalid file modesRené Scharfe Tue, 27 Jun 2017 17:03:47 +0000 (19:03 +0200)

apply: check git diffs for invalid file modes

An empty string as mode specification is accepted silently by git apply,
as Vegard Nossum found out using AFL. It's interpreted as zero. Reject
such bogus file modes, and only accept ones consisting exclusively of
octal digits.

Reported-by: Vegard Nossum <vegard.nossum@oracle.com>
Signed-off-by: Rene Scharfe <l.s.r@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

apply: check git diffs for missing old filenamesRené Scharfe Tue, 27 Jun 2017 17:03:30 +0000 (19:03 +0200)

apply: check git diffs for missing old filenames

2c93286a (fix "git apply --index ..." not to deref NULL) added a check
for git patches missing a +++ line, preventing a segfault. Check for
missing --- lines as well, and add a test for each case.

Found by Vegard Nossum using AFL.

Original-patch-by: Vegard Nossum <vegard.nossum@oracle.com>
Signed-off-by: Rene Scharfe <l.s.r@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Spelling fixesVille Skyttä Sun, 25 Jun 2017 10:20:41 +0000 (13:20 +0300)

Spelling fixes

Signed-off-by: Ville Skyttä <ville.skytta@iki.fi>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Twelfth batch for 2.14Junio C Hamano Mon, 26 Jun 2017 21:12:46 +0000 (14:12 -0700)

Twelfth batch for 2.14

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

Merge branch 'mb/reword-autocomplete-message'Junio C Hamano Mon, 26 Jun 2017 21:09:33 +0000 (14:09 -0700)

Merge branch 'mb/reword-autocomplete-message'

Message update.

* mb/reword-autocomplete-message:
auto-correct: tweak phrasing

Merge branch 'ks/t7508-indent-fix'Junio C Hamano Mon, 26 Jun 2017 21:09:32 +0000 (14:09 -0700)

Merge branch 'ks/t7508-indent-fix'

Cosmetic update to a test.

* ks/t7508-indent-fix:
t7508: fix a broken indentation

Merge branch 'jk/add-p-commentchar-fix'Junio C Hamano Mon, 26 Jun 2017 21:09:31 +0000 (14:09 -0700)

Merge branch 'jk/add-p-commentchar-fix'

"git add -p" were updated in 2.12 timeframe to cope with custom
core.commentchar but the implementation was buggy and a
metacharacter like $ and * did not work.

* jk/add-p-commentchar-fix:
add--interactive: quote commentChar regex
add--interactive: handle EOF in prompt_yesno

Merge branch 'dt/raise-core-packed-git-limit'Junio C Hamano Mon, 26 Jun 2017 21:09:30 +0000 (14:09 -0700)

Merge branch 'dt/raise-core-packed-git-limit'

Doc update for a topic already in 'master'.

* dt/raise-core-packed-git-limit:
docs: update 64-bit core.packedGitLimit default

Merge branch 'mh/packed-ref-store-prep'Junio C Hamano Mon, 26 Jun 2017 21:09:29 +0000 (14:09 -0700)

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

Bugfix for a topic that is (only) in 'master'.

* mh/packed-ref-store-prep:
for_each_bisect_ref(): don't trim refnames
lock_packed_refs(): fix cache validity check

Merge branch 'lb/status-stash-count'Junio C Hamano Mon, 26 Jun 2017 21:09:29 +0000 (14:09 -0700)

Merge branch 'lb/status-stash-count'

"git status" learned to optionally give how many stash entries the
user has in its output.

* lb/status-stash-count:
glossary: define 'stash entry'
status: add optional stash count information
stash: update documentation to use 'stash entry'

pack-bitmap: don't perform unaligned memory accessJames Clarke Mon, 26 Jun 2017 15:16:12 +0000 (16:16 +0100)

pack-bitmap: don't perform unaligned memory access

The preceding bitmap entries have a 1-byte XOR-offset and 1-byte flags,
so their size is not a multiple of 4. Thus the name-hash cache is only
guaranteed to be 2-byte aligned and so we must use get_be32 rather than
indexing the array directly.

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

Sync with 2.13.2Junio C Hamano Sat, 24 Jun 2017 22:34:14 +0000 (15:34 -0700)

Sync with 2.13.2

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

Git 2.13.2 v2.13.2Junio C Hamano Sat, 24 Jun 2017 22:31:36 +0000 (15:31 -0700)

Git 2.13.2

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

Merge branch 'sn/reset-doc-typofix' into maintJunio C Hamano Sat, 24 Jun 2017 22:29:35 +0000 (15:29 -0700)

Merge branch 'sn/reset-doc-typofix' into maint

Doc update.

* sn/reset-doc-typofix:
doc: git-reset: fix a trivial typo

Merge branch 'sg/doc-pretty-formats' into maintJunio C Hamano Sat, 24 Jun 2017 22:29:35 +0000 (15:29 -0700)

Merge branch 'sg/doc-pretty-formats' into maint

Doc update.

* sg/doc-pretty-formats:
docs/pretty-formats: stress that %- removes all preceding line-feeds

Merge branch 'sd/t3200-branch-m-test' into maintJunio C Hamano Sat, 24 Jun 2017 22:29:34 +0000 (15:29 -0700)

Merge branch 'sd/t3200-branch-m-test' into maint

New test.

* sd/t3200-branch-m-test:
t3200: add test for single parameter passed to -m option

Merge branch 'sg/revision-parser-skip-prefix' into... Junio C Hamano Sat, 24 Jun 2017 22:29:34 +0000 (15:29 -0700)

Merge branch 'sg/revision-parser-skip-prefix' into maint

Code clean-up.

* sg/revision-parser-skip-prefix:
revision.c: use skip_prefix() in handle_revision_pseudo_opt()
revision.c: use skip_prefix() in handle_revision_opt()
revision.c: stricter parsing of '--early-output'
revision.c: stricter parsing of '--no-{min,max}-parents'
revision.h: turn rev_info.early_output back into an unsigned int

Merge branch 'km/test-mailinfo-b-failure' into maintJunio C Hamano Sat, 24 Jun 2017 22:29:33 +0000 (15:29 -0700)

Merge branch 'km/test-mailinfo-b-failure' into maint

New tests.

* km/test-mailinfo-b-failure:
t5100: add some more mailinfo tests

Merge branch 'sb/submodule-rm-absorb' into maintJunio C Hamano Sat, 24 Jun 2017 22:29:32 +0000 (15:29 -0700)

Merge branch 'sb/submodule-rm-absorb' into maint

Doc update to a recently graduated topic.

* sb/submodule-rm-absorb:
Documentation/git-rm: correct submodule description

Merge branch 'jc/diff-tree-stale-comment' into maintJunio C Hamano Sat, 24 Jun 2017 22:29:31 +0000 (15:29 -0700)

Merge branch 'jc/diff-tree-stale-comment' into maint

Comment fix.

* jc/diff-tree-stale-comment:
diff-tree: update stale in-code comments

Merge branch 'ps/stash-push-pathspec-fix' into maintJunio C Hamano Sat, 24 Jun 2017 22:29:30 +0000 (15:29 -0700)

Merge branch 'ps/stash-push-pathspec-fix' into maint

"git stash push <pathspec>" did not work from a subdirectory at all.
Bugfix for a topic in v2.13

* ps/stash-push-pathspec-fix:
git-stash: fix pushing stash with pathspec from subdir

Merge branch 'ls/github' into maintJunio C Hamano Sat, 24 Jun 2017 22:29:29 +0000 (15:29 -0700)

Merge branch 'ls/github' into maint

Help contributors that visit us at GitHub.

* ls/github:
Configure Git contribution guidelines for github.com

Merge branch 'jk/pack-idx-corruption-safety' into maintJunio C Hamano Sat, 24 Jun 2017 22:29:29 +0000 (15:29 -0700)

Merge branch 'jk/pack-idx-corruption-safety' into maint

A flaky test has been corrected.

* jk/pack-idx-corruption-safety:
t5313: make extended-table test more deterministic

Merge branch 'jk/diff-blob' into maintJunio C Hamano Sat, 24 Jun 2017 22:29:28 +0000 (15:29 -0700)

Merge branch 'jk/diff-blob' into maint

The result from "git diff" that compares two blobs, e.g. "git diff
$commit1:$path $commit2:$path", used to be shown with the full
object name as given on the command line, but it is more natural to
use the $path in the output and use it to look up .gitattributes.

* jk/diff-blob:
diff: use blob path for blob/file diffs
diff: use pending "path" if it is available
diff: use the word "path" instead of "name" for blobs
diff: pass whole pending entry in blobinfo
handle_revision_arg: record paths for pending objects
handle_revision_arg: record modes for "a..b" endpoints
t4063: add tests of direct blob diffs
get_sha1_with_context: dynamically allocate oc->path
get_sha1_with_context: always initialize oc->symlink_path
sha1_name: consistently refer to object_context as "oc"
handle_revision_arg: add handle_dotdot() helper
handle_revision_arg: hoist ".." check out of range parsing
handle_revision_arg: stop using "dotdot" as a generic pointer
handle_revision_arg: simplify commit reference lookups
handle_revision_arg: reset "dotdot" consistently

Merge branch 'jc/name-rev-lw-tag' into maintJunio C Hamano Sat, 24 Jun 2017 22:29:27 +0000 (15:29 -0700)

Merge branch 'jc/name-rev-lw-tag' into maint

"git describe --contains" penalized light-weight tags so much that
they were almost never considered. Instead, give them about the
same chance to be considered as an annotated tag that is the same
age as the underlying commit would.

* jc/name-rev-lw-tag:
name-rev: favor describing with tags and use committer date to tiebreak
name-rev: refactor logic to see if a new candidate is a better name

Eleventh batch for 2.14Junio C Hamano Sat, 24 Jun 2017 21:34:11 +0000 (14:34 -0700)

Eleventh batch for 2.14

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

Merge branch 'ab/free-and-null'Junio C Hamano Sat, 24 Jun 2017 21:28:41 +0000 (14:28 -0700)

Merge branch 'ab/free-and-null'

A common pattern to free a piece of memory and assign NULL to the
pointer that used to point at it has been replaced with a new
FREE_AND_NULL() macro.

* ab/free-and-null:
*.[ch] refactoring: make use of the FREE_AND_NULL() macro
coccinelle: make use of the "expression" FREE_AND_NULL() rule
coccinelle: add a rule to make "expression" code use FREE_AND_NULL()
coccinelle: make use of the "type" FREE_AND_NULL() rule
coccinelle: add a rule to make "type" code use FREE_AND_NULL()
git-compat-util: add a FREE_AND_NULL() wrapper around free(ptr); ptr = NULL

Merge branch 'jk/warn-add-gitlink'Junio C Hamano Sat, 24 Jun 2017 21:28:41 +0000 (14:28 -0700)

Merge branch 'jk/warn-add-gitlink'

Using "git add d/i/r" when d/i/r is the top of the working tree of
a separate repository would create a gitlink in the index, which
would appear as a not-quite-initialized submodule to others. We
learned to give warnings when this happens.

* jk/warn-add-gitlink:
t: move "git add submodule" into test blocks
add: warn when adding an embedded repository

Merge branch 'bw/config-h'Junio C Hamano Sat, 24 Jun 2017 21:28:40 +0000 (14:28 -0700)

Merge branch 'bw/config-h'

Fix configuration codepath to pay proper attention to commondir
that is used in multi-worktree situation, and isolate config API
into its own header file.

* bw/config-h:
config: don't implicitly use gitdir or commondir
config: respect commondir
setup: teach discover_git_directory to respect the commondir
config: don't include config.h by default
config: remove git_config_iter
config: create config.h

Merge branch 'bw/ls-files-sans-the-index'Junio C Hamano Sat, 24 Jun 2017 21:28:40 +0000 (14:28 -0700)

Merge branch 'bw/ls-files-sans-the-index'

Code clean-up.

* bw/ls-files-sans-the-index:
ls-files: factor out tag calculation
ls-files: factor out debug info into a function
ls-files: convert show_files to take an index
ls-files: convert show_ce_entry to take an index
ls-files: convert prune_cache to take an index
ls-files: convert ce_excluded to take an index
ls-files: convert show_ru_info to take an index
ls-files: convert show_other_files to take an index
ls-files: convert show_killed_files to take an index
ls-files: convert write_eolinfo to take an index
ls-files: convert overlay_tree_on_cache to take an index
tree: convert read_tree to take an index parameter
convert: convert renormalize_buffer to take an index
convert: convert convert_to_git to take an index
convert: convert convert_to_git_filter_fd to take an index
convert: convert crlf_to_git to take an index
convert: convert get_cached_convert_stats_ascii to take an index

Merge branch 'js/alias-early-config'Junio C Hamano Sat, 24 Jun 2017 21:28:39 +0000 (14:28 -0700)

Merge branch 'js/alias-early-config'

The code to pick up and execute command alias definition from the
configuration used to switch to the top of the working tree and
then come back when the expanded alias was executed, which was
unnecessarilyl complex. Attempt to simplify the logic by using the
early-config mechanism that does not chdir around.

* js/alias-early-config:
alias: use the early config machinery to expand aliases
t7006: demonstrate a problem with aliases in subdirectories
t1308: relax the test verifying that empty alias values are disallowed
help: use early config when autocorrecting aliases
config: report correct line number upon error
discover_git_directory(): avoid setting invalid git_dir

Merge branch 'sn/reset-doc-typofix'Junio C Hamano Sat, 24 Jun 2017 21:28:39 +0000 (14:28 -0700)

Merge branch 'sn/reset-doc-typofix'

Doc update.

* sn/reset-doc-typofix:
doc: git-reset: fix a trivial typo

Merge branch 'sg/doc-pretty-formats'Junio C Hamano Sat, 24 Jun 2017 21:28:39 +0000 (14:28 -0700)

Merge branch 'sg/doc-pretty-formats'

Doc update.

* sg/doc-pretty-formats:
docs/pretty-formats: stress that %- removes all preceding line-feeds

Merge branch 'rs/pretty-add-again'Junio C Hamano Sat, 24 Jun 2017 21:28:38 +0000 (14:28 -0700)

Merge branch 'rs/pretty-add-again'

The pretty-format specifiers like '%h', '%t', etc. had an
optimization that no longer works correctly. In preparation/hope
of getting it correctly implemented, first discard the optimization
that is broken.

* rs/pretty-add-again:
pretty: recalculate duplicate short hashes

Merge branch 'jk/diff-highlight-module'Junio C Hamano Sat, 24 Jun 2017 21:28:37 +0000 (14:28 -0700)

Merge branch 'jk/diff-highlight-module'

The 'diff-highlight' program (in contrib/) has been restructured
for easier reuse by an external project 'diff-so-fancy'.

* jk/diff-highlight-module:
diff-highlight: split code into module

Merge branch 'ah/doc-gitattributes-empty-index'Junio C Hamano Sat, 24 Jun 2017 21:28:37 +0000 (14:28 -0700)

Merge branch 'ah/doc-gitattributes-empty-index'

An example in documentation that does not work in multi worktree
configuration has been corrected.

* ah/doc-gitattributes-empty-index:
doc: do not use `rm .git/index` when normalizing line endings

Merge branch 'ab/wildmatch-glob-slash-test'Junio C Hamano Sat, 24 Jun 2017 21:28:37 +0000 (14:28 -0700)

Merge branch 'ab/wildmatch-glob-slash-test'

A new test to show the interaction between the pattern [^a-z]
(which matches '/') and a slash in a path has been added. The
pattern should not match the slash with "pathmatch", but should
with "wildmatch".

* ab/wildmatch-glob-slash-test:
wildmatch test: cover a blind spot in "/" matching

Merge branch 'ab/pcre-v2'Junio C Hamano Sat, 24 Jun 2017 21:28:36 +0000 (14:28 -0700)

Merge branch 'ab/pcre-v2'

Hotfix for a topic already in 'master'.

* ab/pcre-v2:
grep: fix erroneously copy/pasted variable in check/assert pattern

Merge branch 'da/mergetools-meld-output-opt-on-macos'Junio C Hamano Sat, 24 Jun 2017 21:28:36 +0000 (14:28 -0700)

Merge branch 'da/mergetools-meld-output-opt-on-macos'

"git mergetool" learned to work around a wrapper MacOS X adds
around underlying meld.

* da/mergetools-meld-output-opt-on-macos:
mergetools/meld: improve compatibiilty with Meld on macOS X

Merge branch 'nd/split-index-unshare'Junio C Hamano Sat, 24 Jun 2017 19:04:25 +0000 (12:04 -0700)

Merge branch 'nd/split-index-unshare'

* nd/split-index-unshare:
Revert "split-index: add and use unshare_split_index()"

Revert "split-index: add and use unshare_split_index()"Junio C Hamano Sat, 24 Jun 2017 19:02:39 +0000 (12:02 -0700)

Revert "split-index: add and use unshare_split_index()"

This reverts commit f9d7abec2ad2f9eb3d8873169cc28c34273df082;
see public-inbox.org/git/CAP8UFD0bOfzY-_hBDKddOcJdPUpP2KEVaX_SrCgvAMYAHtseiQ@mail.gmail.com

doc: clarify syntax for %C(auto,...) in pretty formatsAndreas Heiduk Sat, 24 Jun 2017 07:22:58 +0000 (09:22 +0200)

doc: clarify syntax for %C(auto,...) in pretty formats

The manual correctly describes the syntax with `auto,` but the
trailing `,` is hard to spot in a terminal. The HTML format does not
have this problem. Adding an example helps both worlds.

Signed-off-by: Andreas Heiduk <asheiduk@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

ls-files: use repository objectBrandon Williams Thu, 22 Jun 2017 18:43:48 +0000 (11:43 -0700)

ls-files: use repository object

Convert ls-files to use a repository struct and recurse submodules
inprocess.

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

repository: enable initialization of submodulesBrandon Williams Thu, 22 Jun 2017 18:43:47 +0000 (11:43 -0700)

repository: enable initialization of submodules

Introduce 'repo_submodule_init()' which performs initialization of a
'struct repository' as a submodule of another 'struct repository'.

The resulting submodule 'struct repository' can be in one of three states:

1. The submodule is initialized and has a worktree.

2. The submodule is initialized but does not have a worktree. This
would occur when the submodule's gitdir is present in the
superproject's 'gitdir/modules/' directory yet the submodule has not
been checked out in superproject's worktree.

3. The submodule remains uninitialized due to an error in the
initialization process or there is no matching submodule at the
provided path in the superproject.

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

submodule: convert is_submodule_initialized to work... Brandon Williams Thu, 22 Jun 2017 18:43:46 +0000 (11:43 -0700)

submodule: convert is_submodule_initialized to work on a repository

Convert 'is_submodule_initialized()' to take a repository object and
while we're at it, lets rename the function to 'is_submodule_active()'
and remove the NEEDSWORK comment.

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

submodule: add repo_read_gitmodulesBrandon Williams Thu, 22 Jun 2017 18:43:45 +0000 (11:43 -0700)

submodule: add repo_read_gitmodules

Teach the repo object to be able to populate the submodule_cache by
reading the repository's gitmodules file.

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

submodule-config: store the_submodule_cache in the_repo... Brandon Williams Thu, 22 Jun 2017 18:43:44 +0000 (11:43 -0700)

submodule-config: store the_submodule_cache in the_repository

Refactor how 'the_submodule_cache' is handled so that it can be stored
inside of a repository object. Also migrate 'the_submodule_cache' to be
stored in 'the_repository'.

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

repository: add index_state to struct repoBrandon Williams Thu, 22 Jun 2017 18:43:43 +0000 (11:43 -0700)

repository: add index_state to struct repo

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

config: read config from a repository objectBrandon Williams Thu, 22 Jun 2017 18:43:42 +0000 (11:43 -0700)

config: read config from a repository object

Teach the config machinery to read config information from a repository
object. This involves storing a 'struct config_set' inside the
repository object and adding a number of functions (repo_config*) to be
able to query a repository's config.

The current config API enables lazy-loading of the config. This means
that when 'git_config_get_int()' is called, if the_config_set hasn't
been populated yet, then it will be populated and properly initialized by
reading the necessary config files (system wide .gitconfig, user's home
.gitconfig, and the repository's config). To maintain this paradigm,
the new API to read from a repository object's config will also perform
this lazy-initialization.

Since both APIs (git_config_get* and repo_config_get*) have the same
semantics we can migrate the default config to be stored within
'the_repository' and just have the 'git_config_get*' family of functions
redirect to the 'repo_config_get*' functions.

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

path: add repo_worktree_path and strbuf_repo_worktree_pathBrandon Williams Thu, 22 Jun 2017 18:43:41 +0000 (11:43 -0700)

path: add repo_worktree_path and strbuf_repo_worktree_path

Introduce 'repo_worktree_path' and 'strbuf_repo_worktree_path' which
take a repository struct and constructs a path relative to the
repository's worktree.

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

path: add repo_git_path and strbuf_repo_git_pathBrandon Williams Thu, 22 Jun 2017 18:43:40 +0000 (11:43 -0700)

path: add repo_git_path and strbuf_repo_git_path

Introduce 'repo_git_path' and 'strbuf_repo_git_path' which take a
repository struct and constructs a path into the repository's git
directory.

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

path: worktree_git_path() should not use file relocationBrandon Williams Thu, 22 Jun 2017 18:43:39 +0000 (11:43 -0700)

path: worktree_git_path() should not use file relocation

git_path is a convenience function that usually produces a string
$GIT_DIR/<path>. Since v2.5.0-rc0~143^2~35 (git_path(): be aware of
file relocation in $GIT_DIR, 2014-11-30), as a side benefit callers
get support for path relocation variables like $GIT_OBJECT_DIRECTORY:

- git_path("index") is $GIT_INDEX_FILE when set
- git_path("info/grafts") is $GIT_GRAFTS_FILE when set
- git_path("objects/<foo>") is $GIT_OBJECT_DIRECTORY/<foo> when set
- git_path("hooks/<foo>") is <foo> under core.hookspath when set
- git_path("refs/<foo>") etc (see path.c::common_list) is relative
to $GIT_COMMON_DIR instead of $GIT_DIR

worktree_git_path, by comparison, is designed to resolve files in a
specific worktree's git dir. Unfortunately, it shares code with
git_path and performs the same relocation. The result is that paths
that are meant to be relative to the specified worktree's git dir end
up replaced by paths from environment variables within the current git
dir.

Luckily, no current callers pass such arguments. The relocation was
noticed when testing the result of merging two patches under review,
one of which introduces a caller:

* The first patch made git prune check the index file in each
worktree's git dir (using worktree_git_path(wt, "index")) for
objects not to prune. This would trigger the unwanted relocation
when GIT_INDEX_FILE is set, causing objects reachable from the
index to be pruned.

* The second patch simplified the relocation logic for index,
info/grafts, objects, and hooks to happen unconditionally instead of
based on whether environment or configuration variables are set.
This caused the relocation to trigger even when GIT_INDEX_FILE is
not set.

[jn: rewrote commit message; skipping all relocation instead of just
GIT_INDEX_FILE]

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

path: convert do_git_path to take a 'struct repository'Brandon Williams Thu, 22 Jun 2017 18:43:38 +0000 (11:43 -0700)

path: convert do_git_path to take a 'struct repository'

In preparation to adding 'git_path' like functions which operate on a
'struct repository' convert 'do_git_path' to take a 'struct repository'.

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

path: convert strbuf_git_common_path to take a 'struct... Brandon Williams Thu, 22 Jun 2017 18:43:37 +0000 (11:43 -0700)

path: convert strbuf_git_common_path to take a 'struct repository'

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

path: always pass in commondir to update_common_dirBrandon Williams Thu, 22 Jun 2017 18:43:36 +0000 (11:43 -0700)

path: always pass in commondir to update_common_dir

Instead of passing in 'NULL' and having 'update_common_dir()' query for
the commondir, have the callers of 'update_common_dir()' be responsible
for providing the commondir.

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

path: create path.hBrandon Williams Thu, 22 Jun 2017 18:43:35 +0000 (11:43 -0700)

path: create path.h

Move all path related declarations from cache.h to a new path.h header
file. This makes cache.h smaller and makes it easier to add new path
related functions.

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

environment: store worktree in the_repositoryBrandon Williams Thu, 22 Jun 2017 18:43:34 +0000 (11:43 -0700)

environment: store worktree in the_repository

Migrate 'work_tree' to be stored in 'the_repository'.

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

environment: place key repository state in the_repositoryBrandon Williams Thu, 22 Jun 2017 18:43:33 +0000 (11:43 -0700)

environment: place key repository state in the_repository

Migrate 'git_dir', 'git_common_dir', 'git_object_dir', 'git_index_file',
'git_graft_file', and 'namespace' to be stored in 'the_repository'.

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

repository: introduce the repository objectBrandon Williams Thu, 22 Jun 2017 18:43:32 +0000 (11:43 -0700)

repository: introduce the repository object

Introduce the repository object 'struct repository' which can be used to
hold all state pertaining to a git repository.

Some of the benefits of object-ifying a repository are:

1. Make the code base more readable and easier to reason about.

2. Allow for working on multiple repositories, specifically
submodules, within the same process. Currently the process for
working on a submodule involves setting up an argv_array of options
for a particular command and then launching a child process to
execute the command in the context of the submodule. This is
clunky and can require lots of little hacks in order to ensure
correctness. Ideally it would be nice to simply pass a repository
and an options struct to a command.

3. Eliminating reliance on global state will make it easier to
enable the use of threading to improve performance.

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

environment: remove namespace_len variableBrandon Williams Tue, 20 Jun 2017 19:19:34 +0000 (12:19 -0700)

environment: remove namespace_len variable

Use 'skip_prefix' instead of 'starts_with' so that we can drop the need
to keep around 'namespace_len'.

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

setup: add comment indicating a hackBrandon Williams Tue, 20 Jun 2017 19:19:33 +0000 (12:19 -0700)

setup: add comment indicating a hack

'GIT_TOPLEVEL_PREFIX_ENVIRONMENT' was added in (b58a68c1c setup: allow
for prefix to be passed to git commands) to aid in fixing a bug where
'ls-files' and 'grep' were not able to properly recurse when called from
within a subdirectory. Add a 'NEEDSWORK' comment indicating that this
envvar should be removed once 'ls-files' and 'grep' can recurse
in-process.

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

setup: don't perform lazy initialization of repository... Brandon Williams Tue, 20 Jun 2017 19:19:32 +0000 (12:19 -0700)

setup: don't perform lazy initialization of repository state

Under some circumstances (bogus GIT_DIR value or the discovered gitdir
is '.git') 'setup_git_directory()' won't initialize key repository
state. This leads to inconsistent state after running the setup code.
To account for this inconsistent state, lazy initialization is done once
a caller asks for the repository's gitdir or some other piece of
repository state. This is confusing and can be error prone.

Instead let's tighten the expected outcome of 'setup_git_directory()'
and ensure that it initializes repository state in all cases that would
have been handled by lazy initialization.

This also lets us drop the requirement to have 'have_git_dir()' check if
the environment variable GIT_DIR was set as that will be handled by the
end of the setup code.

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

Merge branches 'bw/ls-files-sans-the-index' and 'bw... Junio C Hamano Wed, 21 Jun 2017 22:20:44 +0000 (15:20 -0700)

Merge branches 'bw/ls-files-sans-the-index' and 'bw/config-h' into bw/repo-object

* bw/ls-files-sans-the-index:
ls-files: factor out tag calculation
ls-files: factor out debug info into a function
ls-files: convert show_files to take an index
ls-files: convert show_ce_entry to take an index
ls-files: convert prune_cache to take an index
ls-files: convert ce_excluded to take an index
ls-files: convert show_ru_info to take an index
ls-files: convert show_other_files to take an index
ls-files: convert show_killed_files to take an index
ls-files: convert write_eolinfo to take an index
ls-files: convert overlay_tree_on_cache to take an index
tree: convert read_tree to take an index parameter
convert: convert renormalize_buffer to take an index
convert: convert convert_to_git to take an index
convert: convert convert_to_git_filter_fd to take an index
convert: convert crlf_to_git to take an index
convert: convert get_cached_convert_stats_ascii to take an index

* bw/config-h:
config: don't implicitly use gitdir or commondir
config: respect commondir
setup: teach discover_git_directory to respect the commondir
config: don't include config.h by default
config: remove git_config_iter
config: create config.h
alias: use the early config machinery to expand aliases
t7006: demonstrate a problem with aliases in subdirectories
t1308: relax the test verifying that empty alias values are disallowed
help: use early config when autocorrecting aliases
config: report correct line number upon error
discover_git_directory(): avoid setting invalid git_dir

t3420: fix under GETTEXT_POISON buildJunio C Hamano Fri, 23 Jun 2017 18:56:25 +0000 (11:56 -0700)

t3420: fix under GETTEXT_POISON build

Newly added tests to t3420 in this series prepare expected
human-readable output from "git rebase -i" and then compare the
actual output with it. As the output from the command is designed
to go through i18n/l10n, we need to use test_i18ncmp to tell
GETTEXT_POISON build that it is OK the output does not match.

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

Tenth batch for 2.14Junio C Hamano Thu, 22 Jun 2017 21:18:02 +0000 (14:18 -0700)

Tenth batch for 2.14

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

Merge branch 'rs/strbuf-addftime-zZ'Junio C Hamano Thu, 22 Jun 2017 21:15:25 +0000 (14:15 -0700)

Merge branch 'rs/strbuf-addftime-zZ'

As there is no portable way to pass timezone information to
strftime, some output format from "git log" and friends are
impossible to produce. Teach our own strbuf_addftime to replace %z
and %Z with caller-supplied values to help working around this.

* rs/strbuf-addftime-zZ:
date: use localtime() for "-local" time formats
t0006: check --date=format zone offsets
strbuf: let strbuf_addftime handle %z and %Z itself

Merge branch 'sd/t3200-branch-m-test'Junio C Hamano Thu, 22 Jun 2017 21:15:25 +0000 (14:15 -0700)

Merge branch 'sd/t3200-branch-m-test'

New test.

* sd/t3200-branch-m-test:
t3200: add test for single parameter passed to -m option

Merge branch 'ps/stash-push-pathspec-fix'Junio C Hamano Thu, 22 Jun 2017 21:15:24 +0000 (14:15 -0700)

Merge branch 'ps/stash-push-pathspec-fix'

"git stash push <pathspec>" did not work from a subdirectory at all.
Bugfix for a topic in v2.13

* ps/stash-push-pathspec-fix:
git-stash: fix pushing stash with pathspec from subdir

Merge branch 'ls/github'Junio C Hamano Thu, 22 Jun 2017 21:15:24 +0000 (14:15 -0700)

Merge branch 'ls/github'

Help contributors that visit us at GitHub.

* ls/github:
Configure Git contribution guidelines for github.com

Merge branch 'sg/revision-parser-skip-prefix'Junio C Hamano Thu, 22 Jun 2017 21:15:23 +0000 (14:15 -0700)

Merge branch 'sg/revision-parser-skip-prefix'

Code clean-up.

* sg/revision-parser-skip-prefix:
revision.c: use skip_prefix() in handle_revision_pseudo_opt()
revision.c: use skip_prefix() in handle_revision_opt()
revision.c: stricter parsing of '--early-output'
revision.c: stricter parsing of '--no-{min,max}-parents'
revision.h: turn rev_info.early_output back into an unsigned int

Merge branch 'mh/fast-import-raise-default-depth'Junio C Hamano Thu, 22 Jun 2017 21:15:23 +0000 (14:15 -0700)

Merge branch 'mh/fast-import-raise-default-depth'

"fast-import" uses a default pack chain depth that is consistent
with other parts of the system.

* mh/fast-import-raise-default-depth:
fast-import: increase the default pack depth to 50

Merge branch 'km/test-mailinfo-b-failure'Junio C Hamano Thu, 22 Jun 2017 21:15:22 +0000 (14:15 -0700)

Merge branch 'km/test-mailinfo-b-failure'

New tests.

* km/test-mailinfo-b-failure:
t5100: add some more mailinfo tests

Merge branch 'ah/filter-branch-setup'Junio C Hamano Thu, 22 Jun 2017 21:15:21 +0000 (14:15 -0700)

Merge branch 'ah/filter-branch-setup'

"filter-branch" learned a pseudo filter "--setup" that can be used
to define a common function/variable that can be used by other
filters.

* ah/filter-branch-setup:
filter-branch: add [--] to usage
filter-branch: add `--setup` step

Merge branch 'pc/dir-count-slashes'Junio C Hamano Thu, 22 Jun 2017 21:15:21 +0000 (14:15 -0700)

Merge branch 'pc/dir-count-slashes'

Three instances of the same helper function have been consolidated
to one.

* pc/dir-count-slashes:
dir: create function count_slashes()

Merge branch 'sb/t4005-modernize'Junio C Hamano Thu, 22 Jun 2017 21:15:21 +0000 (14:15 -0700)

Merge branch 'sb/t4005-modernize'

Test clean-up.

* sb/t4005-modernize:
t4005: modernize style and drop hard coded sha1

Merge branch 'nd/fopen-errors'Junio C Hamano Thu, 22 Jun 2017 21:15:20 +0000 (14:15 -0700)

Merge branch 'nd/fopen-errors'

Hotfix for a topic that is already in 'master'.

* nd/fopen-errors:
configure.ac: loosen FREAD_READS_DIRECTORIES test program

Documentation/git-submodule: cleanup "add" sectionKaartic Sivaraam Thu, 22 Jun 2017 02:51:42 +0000 (02:51 +0000)

Documentation/git-submodule: cleanup "add" section

The "add" section for 'git-submodule' is redundant in its
description and the short synopsis line. Fix it.

Remove the redundant mentioning of the 'repository' argument
being mandatory.

The text is hard to read because of back-references, so remove
those.

Replace the word "humanish" by "canonical" as that conveys better
what we do to guess the path.

While at it, quote all occurrences of '.gitmodules' as that is an
important file in the submodule context, also link to it on its
first mention.

Helped-by: Stefan Beller <sbeller@google.com>
Signed-off-by: Kaartic Sivaraam <kaarticsivaraam91196@gmail.com>
Reviewed-by: Stefan Beller <sbeller@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

status: contextually notify user about an initial commitKaartic Sivaraam Wed, 21 Jun 2017 18:16:14 +0000 (23:46 +0530)

status: contextually notify user about an initial commit

The existing message, "Initial commit", makes sense for the commit template
notifying users that it's their initial commit, but is confusing when
merely checking the status of a fresh repository (or orphan branch)
without having any commits yet.

Change the output of "status" to say "No commits yet" when "git
status" is run on a fresh repo (or orphan branch), while retaining the
current "Initial commit" message displayed in the template that's
displayed in the editor when the initial commit is being authored.

Correspondingly change the output of "short status" to "No commits yet
on " when "git status -sb" is run on a fresh repo (or orphan branch).

A few alternatives considered were,

* Waiting for initial commit
* Your current branch does not have any commits
* Current branch waiting for initial commit

The most succint one among the alternatives was chosen.

[with help on tests from Ævar]

Helped-by: Junio C Hamano <gitster@pobox.com>
Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Signed-off-by: Kaartic Sivaraam <kaarticsivaraam91196@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

die(): stop hiding errors due to overzealous recursion... Ævar Arnfjörð Bjarmason Wed, 21 Jun 2017 20:47:42 +0000 (20:47 +0000)

die(): stop hiding errors due to overzealous recursion guard

Change the recursion limit for the default die routine from a *very*
low 1 to 1024. This ensures that infinite recursions are broken, but
doesn't lose the meaningful error messages under threaded execution
where threads concurrently start to die.

The intent of the existing code, as explained in commit
cd163d4b4e ("usage.c: detect recursion in die routines and bail out
immediately", 2012-11-14), is to break infinite recursion in cases
where the die routine itself calls die(), and would thus infinitely
recurse.

However, doing that very aggressively by immediately printing out
"recursion detected in die handler" if we've already called die() once
means that threaded invocations of git can end up only printing out
the "recursion detected" error, while hiding the meaningful error.

An example of this is running a threaded grep which dies on execution
against pretty much any repo, git.git will do:

git grep -P --threads=8 '(*LIMIT_MATCH=1)-?-?-?---$'

With the current version of git this will print some combination of
multiple PCRE failures that caused the abort and multiple "recursion
detected", some invocations will print out multiple "recursion
detected" errors with no PCRE error at all!

Before this change, running the above grep command 1000 times against
git.git[1] and taking the top 20 results will on my system yield the
following distribution of actual errors ("E") and recursion
errors ("R"):

322 E R
306 E
116 E R R
65 R R
54 R E
49 E E
44 R
15 E R R R
9 R R R
7 R E R
5 R R E
3 E R R R R
2 E E R
1 R R R R
1 R R R E
1 R E R R

The exact results are obviously random and system-dependent, but this
shows the race condition in this code. Some small part of the time
we're about to print out the actual error ("E") but another thread's
recursion error beats us to it, and sometimes we print out nothing but
the recursion error.

With this change we get, now with "W" to mean the new warning being
emitted indicating that we've called die() many times:

502 E
160 E W E
120 E E
53 E W
35 E W E E
34 W E E
29 W E E E
16 E E W
16 E E E
11 W E E E E
7 E E W E
4 W E
3 W W E E
2 E W E E E
1 W W E
1 W E W E
1 E W W E E E
1 E W W E E
1 E W W E
1 E W E E W

Which still sucks a bit, due to a still present race-condition in this
code we're sometimes going to print out several errors still, or
several warnings, or two duplicate errors without the warning.

But we will never have a case where we completely hide the actual
error as we do now.

Now, git-grep could make use of the pluggable error facility added in
commit c19a490e37 ("usage: allow pluggable die-recursion checks",
2013-04-16). There's other threaded code that calls set_die_routine()
or set_die_is_recursing_routine().

But this is about fixing the general die() behavior with threading
when we don't have such a custom routine yet. Right now the common
case is not an infinite recursion in the handler, but us losing error
messages by default because we're overly paranoid about our recursion
check.

So let's just set the recursion limit to a number higher than the
number of threads we're ever likely to spawn. Now we won't lose
errors, and if we have a recursing die handler we'll still die within
microseconds.

There are race conditions in this code itself, in particular the
"dying" variable is not thread mutexed, so we e.g. won't be dying at
exactly 1024, or for that matter even be able to accurately test
"dying == 2", see the cases where we print out more than one "W"
above.

But that doesn't really matter, for the recursion guard we just need
to die "soon", not at exactly 1024 calls, and for printing the correct
error and only one warning most of the time in the face of threaded
death this is good enough and a net improvement on the current code.

1. for i in {1..1000}; do git grep -P --threads=8 '(*LIMIT_MATCH=1)-?-?-?---$' 2>&1|perl -pe 's/^fatal: r.*/R/; s/^fatal: p.*/E/; s/^warning.*/W/' | tr '\n' ' '; echo; done | sort | uniq -c | sort -nr | head -n 20

Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

add--interactive: quote commentChar regexJeff King Wed, 21 Jun 2017 19:28:59 +0000 (15:28 -0400)

add--interactive: quote commentChar regex

Since c9d961647 (i18n: add--interactive: mark
edit_hunk_manually message for translation, 2016-12-14),
when the user asks to edit a hunk manually, we respect
core.commentChar in generating the edit instructions.
However, when we then strip out comment lines, we use a
simple regex like:

/^$commentChar/

If your chosen comment character is a regex metacharacter,
then that will behave in a confusing manner ("$", for
instance, would only eliminate blank lines, not actual
comment lines).

We can fix that by telling perl not to respect
metacharacters.

Reported-by: Christian Rösch <christian@croesch.de>
Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

add--interactive: handle EOF in prompt_yesnoJeff King Wed, 21 Jun 2017 19:26:36 +0000 (15:26 -0400)

add--interactive: handle EOF in prompt_yesno

The prompt_yesno function loops indefinitely waiting for a
"y" or "n" response. But it doesn't handle EOF, meaning
that we can end up in an infinite loop of reading EOF from
stdin. One way to simulate that is with:

echo e | GIT_EDITOR='echo corrupt >' git add -p

Let's break out of the loop and propagate the undef to the
caller. Without modifying the callers that effectively turns
it into a "no" response. This is reasonable for both of the
current callers, and it leaves room for any future caller to
check for undef explicitly.

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

auto-correct: tweak phrasingMarc Branchaud Wed, 21 Jun 2017 13:57:38 +0000 (09:57 -0400)

auto-correct: tweak phrasing

When help.autoCorrect is enabled, an invalid git command prints a
warning and a continuation message, which differs depending on
whether or not the value of help.autoCorrect is positive or
negative.

With help.autoCorrect = 15:

WARNING: You called a Git command named 'lgo', which does not exist.
Continuing under the assumption that you meant 'log'
in 1.5 seconds automatically...

With help.autoCorrect < 0:

WARNING: You called a Git command named 'lgo', which does not exist.
Continuing under the assumption that you meant 'log'

The continuation message's phrasing is awkward. This commit cleans it up.
As a bonus, we now use full-sentence strings which make translation easier.

With help.autoCorrect = 15:

WARNING: You called a Git command named 'lgo', which does not exist.
Continuing in 1.5 seconds, assuming that you meant 'log'.

With help.autoCorrect < 0:

WARNING: You called a Git command named 'lgo', which does not exist.
Continuing under the assumption that you meant 'log'.

Signed-off-by: Marc Branchaud <marcnarc@xiplink.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

docs: update 64-bit core.packedGitLimit defaultJeff King Wed, 21 Jun 2017 13:51:30 +0000 (09:51 -0400)

docs: update 64-bit core.packedGitLimit default

We bumped the default in be4ca2905 (Increase
core.packedGitLimit, 2017-04-20) but never adjusted the
documentation to match.

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

t7508: fix a broken indentationKaartic Sivaraam Wed, 21 Jun 2017 12:31:45 +0000 (18:01 +0530)

t7508: fix a broken indentation

Change the indentation from "\t " to "\t". This indenting issue was
introduced when the test was added in commit 1d2f393ac9
("status/commit: show staged submodules regardless of ignore
config", 2014-04-05).

Helped-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Signed-off-by: Kaartic Sivaraam <kaarticsivaraam91196@gmail.com>
Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

grep: fix erroneously copy/pasted variable in check... Ævar Arnfjörð Bjarmason Mon, 19 Jun 2017 22:01:48 +0000 (22:01 +0000)

grep: fix erroneously copy/pasted variable in check/assert pattern

Fix an erroneously copy/pasted check for the pcre2_jit_stack variable
to check pcre2_match_context instead. The former was already checked
in the preceding "if" statement.

This is a trivial and obvious error introduced in my commit
94da9193a6 ("grep: add support for PCRE v2", 2017-06-01).

In practice if pcre2_match_context_create() returned NULL we were
likely in a situation where malloc() was returning NULL, and were thus
screwed anyway, but if only the pcre2_match_context_create() call
returned NULL (through some transitory bug) PCRE v2 would just
allocate and supply its own context object when matching, and we'd run
normally at the trivial expense of not getting a slight speedup by
sharing the context object between successive matches.

Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>

Ninth batch for 2.14Junio C Hamano Mon, 19 Jun 2017 19:41:12 +0000 (12:41 -0700)

Ninth batch for 2.14

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

Merge branch 'jk/consistent-h'Junio C Hamano Mon, 19 Jun 2017 19:38:45 +0000 (12:38 -0700)

Merge branch 'jk/consistent-h'

"git $cmd -h" for builtin commands calls the implementation of the
command (i.e. cmd_$cmd() function) without doing any repository
set-up, and the commands that expect RUN_SETUP is done by the Git
potty needs to be prepared to show the help text without barfing.

* jk/consistent-h:
t0012: test "-h" with builtins
git: add hidden --list-builtins option
version: convert to parse-options
diff- and log- family: handle "git cmd -h" early
submodule--helper: show usage for "-h"
remote-{ext,fd}: print usage message on invalid arguments
upload-archive: handle "-h" option early
credential: handle invalid arguments earlier

Merge branch 'ab/perf-remove-index-lock'Junio C Hamano Mon, 19 Jun 2017 19:38:44 +0000 (12:38 -0700)

Merge branch 'ab/perf-remove-index-lock'

When an existing repository is used for t/perf testing, we first
create bit-for-bit copy of it, which may grab a transient state of
the repository and freeze it into the repository used for testing,
which then may cause Git operations to fail. Single out "the index
being locked" case and forcibly drop the lock from the copy.

* ab/perf-remove-index-lock:
perf: work around the tested repo having an index.lock

Merge branch 'bw/object-id'Junio C Hamano Mon, 19 Jun 2017 19:38:44 +0000 (12:38 -0700)

Merge branch 'bw/object-id'

Conversion from uchar[20] to struct object_id continues.

* bw/object-id: (33 commits)
diff: rename diff_fill_sha1_info to diff_fill_oid_info
diffcore-rename: use is_empty_blob_oid
tree-diff: convert path_appendnew to object_id
tree-diff: convert diff_tree_paths to struct object_id
tree-diff: convert try_to_follow_renames to struct object_id
builtin/diff-tree: cleanup references to sha1
diff-tree: convert diff_tree_sha1 to struct object_id
notes-merge: convert write_note_to_worktree to struct object_id
notes-merge: convert verify_notes_filepair to struct object_id
notes-merge: convert find_notes_merge_pair_ps to struct object_id
notes-merge: convert merge_from_diffs to struct object_id
notes-merge: convert notes_merge* to struct object_id
tree-diff: convert diff_root_tree_sha1 to struct object_id
combine-diff: convert find_paths_* to struct object_id
combine-diff: convert diff_tree_combined to struct object_id
diff: convert diff_flush_patch_id to struct object_id
patch-ids: convert to struct object_id
diff: finish conversion for prepare_temp_file to struct object_id
diff: convert reuse_worktree_file to struct object_id
diff: convert fill_filespec to struct object_id
...