git/git.git
3 years agounpack-trees: oneway_merge to update submodules
Stefan Beller [Fri, 5 Jan 2018 20:03:03 +0000 (12:03 -0800)]
unpack-trees: oneway_merge to update submodules

When there is a one way merge, each submodule needs to be one way merged
as well, if we're asked to recurse into submodules.

In case of a submodule, check if it is up-to-date, otherwise set the
flag CE_UPDATE, which will trigger an update of it in the phase updating
the tree later.

Signed-off-by: Stefan Beller <sbeller@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
3 years agot/lib-submodule-update.sh: fix test ignoring ignored files in submodules
Stefan Beller [Fri, 5 Jan 2018 20:03:02 +0000 (12:03 -0800)]
t/lib-submodule-update.sh: fix test ignoring ignored files in submodules

It turns out that the test replacing a submodule with a file with
the submodule containing an ignored file is incorrectly titled,
because the test put the file in place, but never ignored that file.
When having an untracked file Instead of an ignored file in the
submodule, git should refuse to remove the submodule, but that is
a bug in the implementation of recursing into submodules, such that
the test just passed, removing the untracked file.

Fix the test first; in a later patch we'll fix gits behavior,
that will make sure untracked files are not deleted.

Signed-off-by: Stefan Beller <sbeller@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
3 years agot/lib-submodule-update.sh: clarify test
Stefan Beller [Fri, 5 Jan 2018 20:03:01 +0000 (12:03 -0800)]
t/lib-submodule-update.sh: clarify test

Keep the local branch name as the upstream branch name to avoid confusion.

Signed-off-by: Stefan Beller <sbeller@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
3 years agoGit 2.16-rc0 v2.16.0-rc0
Junio C Hamano [Thu, 28 Dec 2017 22:12:06 +0000 (14:12 -0800)]
Git 2.16-rc0

Signed-off-by: Junio C Hamano <gitster@pobox.com>
3 years agoMerge branch 'sb/describe-blob'
Junio C Hamano [Thu, 28 Dec 2017 22:08:50 +0000 (14:08 -0800)]
Merge branch 'sb/describe-blob'

"git describe" was taught to dig trees deeper to find a
<commit-ish>:<path> that refers to a given blob object.

* sb/describe-blob:
  builtin/describe.c: describe a blob
  builtin/describe.c: factor out describe_commit
  builtin/describe.c: print debug statements earlier
  builtin/describe.c: rename `oid` to avoid variable shadowing
  revision.h: introduce blob/tree walking in order of the commits
  list-objects.c: factor out traverse_trees_and_blobs
  t6120: fix typo in test name

3 years agoMerge branch 'hi/merge-verify-sig-config'
Junio C Hamano [Thu, 28 Dec 2017 22:08:50 +0000 (14:08 -0800)]
Merge branch 'hi/merge-verify-sig-config'

"git merge" learned to pay attention to merge.verifySignatures
configuration variable and pretend as if '--verify-signatures'
option was given from the command line.

* hi/merge-verify-sig-config:
  t5573, t7612: clean up after unexpected success of 'pull' and 'merge'
  t: add tests for pull --verify-signatures
  merge: add config option for verifySignatures

3 years agoMerge branch 'ws/curl-http-proxy-over-https'
Junio C Hamano [Thu, 28 Dec 2017 22:08:50 +0000 (14:08 -0800)]
Merge branch 'ws/curl-http-proxy-over-https'

Git has been taught to support an https:// URL used for http.proxy
when using recent versions of libcurl.

* ws/curl-http-proxy-over-https:
  http: support CURLPROXY_HTTPS

3 years agoMerge branch 'ks/doc-previous-checkout'
Junio C Hamano [Thu, 28 Dec 2017 22:08:49 +0000 (14:08 -0800)]
Merge branch 'ks/doc-previous-checkout'

Doc update.

* ks/doc-previous-checkout:
  Doc/check-ref-format: clarify information about @{-N} syntax

3 years agoMerge branch 'ks/rebase-error-messages'
Junio C Hamano [Thu, 28 Dec 2017 22:08:49 +0000 (14:08 -0800)]
Merge branch 'ks/rebase-error-messages'

Error messages from "git rebase" have been somewhat cleaned up.

* ks/rebase-error-messages:
  rebase: rebasing can also be done when HEAD is detached
  rebase: distinguish user input by quoting it
  rebase: consistently use branch_name variable

3 years agoMerge branch 'sr/http-sslverify-config-doc'
Junio C Hamano [Thu, 28 Dec 2017 22:08:49 +0000 (14:08 -0800)]
Merge branch 'sr/http-sslverify-config-doc'

Docfix.

* sr/http-sslverify-config-doc:
  config: document default value of http.sslVerify

3 years agoMerge branch 'nm/imap-send-quote-server-folder-name'
Junio C Hamano [Thu, 28 Dec 2017 22:08:48 +0000 (14:08 -0800)]
Merge branch 'nm/imap-send-quote-server-folder-name'

"git imap-send" did not correctly quote the folder name when
making a request to the server, which has been corrected.

* nm/imap-send-quote-server-folder-name:
  imap-send: URI encode server folder

3 years agoMerge branch 'bp/fsmonitor'
Junio C Hamano [Thu, 28 Dec 2017 22:08:48 +0000 (14:08 -0800)]
Merge branch 'bp/fsmonitor'

Test fix.

* bp/fsmonitor:
  p7519: improve check for prerequisite WATCHMAN

3 years agoMerge branch 'jh/partial-clone-doc'
Junio C Hamano [Thu, 28 Dec 2017 22:08:47 +0000 (14:08 -0800)]
Merge branch 'jh/partial-clone-doc'

* jh/partial-clone-doc:
  partial-clone: design doc

3 years agoMerge branch 'jt/transport-hide-vtable'
Junio C Hamano [Thu, 28 Dec 2017 22:08:47 +0000 (14:08 -0800)]
Merge branch 'jt/transport-hide-vtable'

Code clean-up.

* jt/transport-hide-vtable:
  transport: make transport vtable more private
  clone, fetch: remove redundant transport check

3 years agoMerge branch 'js/enhanced-version-info'
Junio C Hamano [Thu, 28 Dec 2017 22:08:47 +0000 (14:08 -0800)]
Merge branch 'js/enhanced-version-info'

"git version --build-options" learned to report the host CPU and
the exact commit object name the binary was built from.

* js/enhanced-version-info:
  version --build-options: report commit, too, if possible
  version --build-options: also report host CPU

3 years agoMerge branch 'tz/lib-git-svn-svnserve-tests'
Junio C Hamano [Thu, 28 Dec 2017 22:08:46 +0000 (14:08 -0800)]
Merge branch 'tz/lib-git-svn-svnserve-tests'

* tz/lib-git-svn-svnserve-tests:
  t/lib-git-svn.sh: improve svnserve tests with parallel make test
  t/lib-git-svn: cleanup inconsistent tab/space usage

3 years agoMerge branch 'ew/svn-crlf'
Junio C Hamano [Thu, 28 Dec 2017 22:08:46 +0000 (14:08 -0800)]
Merge branch 'ew/svn-crlf'

"git svn" has been updated to strip CRs in the commit messages, as
recent versions of Subversion rejects them.

* ew/svn-crlf:
  git-svn: convert CRLF to LF in commit message to SVN

3 years agoMerge branch 'cc/skip-to-optional-val'
Junio C Hamano [Thu, 28 Dec 2017 22:08:46 +0000 (14:08 -0800)]
Merge branch 'cc/skip-to-optional-val'

Introduce a helper to simplify code to parse a common pattern that
expects either "--key" or "--key=<something>".

* cc/skip-to-optional-val:
  t4045: reindent to make helpers readable
  diff: add tests for --relative without optional prefix value
  diff: use skip_to_optional_arg_default() in parsing --relative
  diff: use skip_to_optional_arg_default()
  diff: use skip_to_optional_arg()
  index-pack: use skip_to_optional_arg()
  git-compat-util: introduce skip_to_optional_arg()

3 years agoMerge branch 'ra/prompt-eread-fix'
Junio C Hamano [Thu, 28 Dec 2017 22:08:45 +0000 (14:08 -0800)]
Merge branch 'ra/prompt-eread-fix'

Update the shell prompt script (in contrib/) to strip trailing CR
from strings read from various "state" files.

* ra/prompt-eread-fix:
  git-prompt: fix reading files with windows line endings
  git-prompt: make __git_eread intended use explicit

3 years agoMerge branch 'bw/path-doc'
Junio C Hamano [Thu, 28 Dec 2017 22:08:45 +0000 (14:08 -0800)]
Merge branch 'bw/path-doc'

Doc updates.

* bw/path-doc:
  path: document path functions

3 years agoRelNotes: the eleventh batch
Junio C Hamano [Wed, 27 Dec 2017 19:20:27 +0000 (11:20 -0800)]
RelNotes: the eleventh batch

Hopefully the last one before -rc0

Signed-off-by: Junio C Hamano <gitster@pobox.com>
3 years agoMerge branch 'rb/quick-install-doc'
Junio C Hamano [Wed, 27 Dec 2017 19:16:30 +0000 (11:16 -0800)]
Merge branch 'rb/quick-install-doc'

The build procedure now allows not just the repositories but also
the refs to be used to take pre-formatted manpages and html
documents to install.

* rb/quick-install-doc:
  install-doc-quick: allow specifying what ref to install

3 years agoMerge branch 'jt/transport-no-more-rsync'
Junio C Hamano [Wed, 27 Dec 2017 19:16:30 +0000 (11:16 -0800)]
Merge branch 'jt/transport-no-more-rsync'

Code clean-up.

* jt/transport-no-more-rsync:
  transport: remove unused "push" in vtable

3 years agoMerge branch 'sg/travis-fixes'
Junio C Hamano [Wed, 27 Dec 2017 19:16:30 +0000 (11:16 -0800)]
Merge branch 'sg/travis-fixes'

Assorted updates for TravisCI integration.

* sg/travis-fixes:
  travis-ci: use 'set -x' in 'ci/*' scripts for extra tracing output
  travis-ci: set GIT_TEST_HTTPD in 'ci/lib-travisci.sh'
  travis-ci: move setting environment variables to 'ci/lib-travisci.sh'
  travis-ci: introduce a $jobname variable for 'ci/*' scripts

3 years agoMerge branch 'sb/test-helper-excludes'
Junio C Hamano [Wed, 27 Dec 2017 19:16:29 +0000 (11:16 -0800)]
Merge branch 'sb/test-helper-excludes'

Simplify the ignore rules for t/helper directory.

* sb/test-helper-excludes:
  t/helper: ignore everything but sources

3 years agoMerge branch 'ot/pretty'
Junio C Hamano [Wed, 27 Dec 2017 19:16:29 +0000 (11:16 -0800)]
Merge branch 'ot/pretty'

Code clean-up.

* ot/pretty:
  format: create docs for pretty.h
  format: create pretty.h file

3 years agoMerge branch 'bw/submodule-sans-cache-compat'
Junio C Hamano [Wed, 27 Dec 2017 19:16:28 +0000 (11:16 -0800)]
Merge branch 'bw/submodule-sans-cache-compat'

Code clean-up.

* bw/submodule-sans-cache-compat:
  submodule: convert get_next_submodule to not rely on the_index
  submodule: used correct index in is_staging_gitmodules_ok
  submodule: convert stage_updated_gitmodules to take a struct index_state

3 years agoMerge branch 'es/clone-shared-worktree'
Junio C Hamano [Wed, 27 Dec 2017 19:16:28 +0000 (11:16 -0800)]
Merge branch 'es/clone-shared-worktree'

"git clone --shared" to borrow from a (secondary) worktree did not
work, even though "git clone --local" did.  Both are now accepted.

* es/clone-shared-worktree:
  clone: support 'clone --shared' from a worktree

3 years agoMerge branch 'tb/delimit-pretty-trailers-args-with-comma'
Junio C Hamano [Wed, 27 Dec 2017 19:16:27 +0000 (11:16 -0800)]
Merge branch 'tb/delimit-pretty-trailers-args-with-comma'

Doc updates.

* tb/delimit-pretty-trailers-args-with-comma:
  docs/pretty-formats: mention commas in %(trailers) syntax

3 years agoMerge branch 'rs/fmt-merge-msg-leakfix'
Junio C Hamano [Wed, 27 Dec 2017 19:16:26 +0000 (11:16 -0800)]
Merge branch 'rs/fmt-merge-msg-leakfix'

Leakfix.

* rs/fmt-merge-msg-leakfix:
  transport-helper: plug strbuf and string_list leaks

3 years agoMerge branch 'jt/decorate-api'
Junio C Hamano [Wed, 27 Dec 2017 19:16:26 +0000 (11:16 -0800)]
Merge branch 'jt/decorate-api'

A few structures and variables that are implementation details of
the decorate API have been renamed and then the API got documented
better.

* jt/decorate-api:
  decorate: clean up and document API

3 years agoMerge branch 'jk/cvsimport-quoting'
Junio C Hamano [Wed, 27 Dec 2017 19:16:26 +0000 (11:16 -0800)]
Merge branch 'jk/cvsimport-quoting'

Typo/Logico fix.

* jk/cvsimport-quoting:
  cvsimport: apply shell-quoting regex globally

3 years agoMerge branch 'db/doc-workflows-neuter-the-maintainer'
Junio C Hamano [Wed, 27 Dec 2017 19:16:25 +0000 (11:16 -0800)]
Merge branch 'db/doc-workflows-neuter-the-maintainer'

Docfix.

* db/doc-workflows-neuter-the-maintainer:
  doc: reword gitworkflows.txt for neutrality

3 years agoMerge branch 'ks/branch-cleanup'
Junio C Hamano [Wed, 27 Dec 2017 19:16:25 +0000 (11:16 -0800)]
Merge branch 'ks/branch-cleanup'

Code clean-up.

* ks/branch-cleanup:
  builtin/branch: strip refs/heads/ using skip_prefix
  branch: update warning message shown when copying a misnamed branch
  branch: group related arguments of create_branch()
  branch: improve documentation and naming of create_branch() parameters

3 years agoMerge branch 'rs/strbuf-read-once-reset-length'
Junio C Hamano [Wed, 27 Dec 2017 19:16:24 +0000 (11:16 -0800)]
Merge branch 'rs/strbuf-read-once-reset-length'

Leakfix.

* rs/strbuf-read-once-reset-length:
  strbuf: release memory on read error in strbuf_read_once()

3 years agoMerge branch 'rs/fmt-merge-msg-string-leak-fix'
Junio C Hamano [Wed, 27 Dec 2017 19:16:23 +0000 (11:16 -0800)]
Merge branch 'rs/fmt-merge-msg-string-leak-fix'

Leakfix.

* rs/fmt-merge-msg-string-leak-fix:
  fmt-merge-msg: avoid leaking strbuf in shortlog()

3 years agoMerge branch 'rs/am-builtin-leakfix'
Junio C Hamano [Wed, 27 Dec 2017 19:16:22 +0000 (11:16 -0800)]
Merge branch 'rs/am-builtin-leakfix'

Leakfix.

* rs/am-builtin-leakfix:
  am: release strbuf after use in split_mail_mbox()

3 years agoMerge branch 'es/worktree-checkout-hook'
Junio C Hamano [Wed, 27 Dec 2017 19:16:21 +0000 (11:16 -0800)]
Merge branch 'es/worktree-checkout-hook'

"git worktree add" learned to run the post-checkout hook, just like
"git checkout" does, after the initial checkout.

* es/worktree-checkout-hook:
  worktree: invoke post-checkout hook (unless --no-checkout)

3 years agoMerge branch 'lb/rebase-i-short-command-names'
Junio C Hamano [Wed, 27 Dec 2017 19:16:21 +0000 (11:16 -0800)]
Merge branch 'lb/rebase-i-short-command-names'

With a configuration variable rebase.abbreviateCommands set,
"git rebase -i" produces the todo list with a single-letter
command names.

* lb/rebase-i-short-command-names:
  sequencer.c: drop 'const' from function return type
  t3404: add test case for abbreviated commands
  rebase -i: learn to abbreviate command names
  rebase -i -x: add exec commands via the rebase--helper
  rebase -i: update functions to use a flags parameter
  rebase -i: replace reference to sha1 with oid
  rebase -i: refactor transform_todo_ids
  rebase -i: set commit to null in exec commands
  Documentation: use preferred name for the 'todo list' script
  Documentation: move rebase.* configs to new file

3 years agoMerge branch 'tb/check-crlf-for-safe-crlf'
Junio C Hamano [Wed, 27 Dec 2017 19:16:21 +0000 (11:16 -0800)]
Merge branch 'tb/check-crlf-for-safe-crlf'

The "safe crlf" check incorrectly triggered for contents that does
not use CRLF as line endings, which has been corrected.

* tb/check-crlf-for-safe-crlf:
  t0027: Adapt the new MIX tests to Windows
  convert: tighten the safe autocrlf handling

3 years agoMerge branch 'jh/object-filtering'
Junio C Hamano [Wed, 27 Dec 2017 19:16:20 +0000 (11:16 -0800)]
Merge branch 'jh/object-filtering'

In preparation for implementing narrow/partial clone, the object
walking machinery has been taught a way to tell it to "filter" some
objects from enumeration.

* jh/object-filtering:
  rev-list: support --no-filter argument
  list-objects-filter-options: support --no-filter
  list-objects-filter-options: fix 'keword' typo in comment
  pack-objects: add list-objects filtering
  rev-list: add list-objects filtering support
  list-objects: filter objects in traverse_commit_list
  oidset: add iterator methods to oidset
  oidmap: add oidmap iterator methods
  dir: allow exclusions from blob in addition to file

3 years agosequencer.c: drop 'const' from function return type
Junio C Hamano [Wed, 27 Dec 2017 19:12:45 +0000 (11:12 -0800)]
sequencer.c: drop 'const' from function return type

With -Werror=ignored-qualifiers, a function that claims to return
"const char" gets this error:

    CC sequencer.o
sequencer.c:798:19: error: type qualifiers ignored on function return
type [-Werror=ignored-qualifiers]
 static const char command_to_char(const enum todo_command command)
                   ^

Reported-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
3 years agot5573, t7612: clean up after unexpected success of 'pull' and 'merge'
Junio C Hamano [Fri, 15 Dec 2017 19:42:36 +0000 (11:42 -0800)]
t5573, t7612: clean up after unexpected success of 'pull' and 'merge'

The previous steps added test_when_finished to tests that run 'git
pull' or 'git merge' with expectation of success, so that the test
after them can start from a known state even when their 'git pull'
invocation unexpectedly fails.  However, tests that run 'git pull'
or 'git merge' expecting it not to succeed forgot to protect later
tests the same way---if they unexpectedly succeed, the test after
them would start from an unexpected state.

Reset and checkout the initial commit after all these tests, whether
they expect their invocations to succeed or fail.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
3 years agoRelNotes: the tenth batch
Junio C Hamano [Tue, 19 Dec 2017 19:34:35 +0000 (11:34 -0800)]
RelNotes: the tenth batch

Signed-off-by: Junio C Hamano <gitster@pobox.com>
3 years agoMerge branch 'ls/editor-waiting-message'
Junio C Hamano [Tue, 19 Dec 2017 19:33:59 +0000 (11:33 -0800)]
Merge branch 'ls/editor-waiting-message'

Git shows a message to tell the user that it is waiting for the
user to finish editing when spawning an editor, in case the editor
opens to a hidden window or somewhere obscure and the user gets
lost.

* ls/editor-waiting-message:
  launch_editor(): indicate that Git waits for user input
  refactor "dumb" terminal determination

3 years agoMerge branch 'sg/setup-doc-update'
Junio C Hamano [Tue, 19 Dec 2017 19:33:58 +0000 (11:33 -0800)]
Merge branch 'sg/setup-doc-update'

Comment update.

* sg/setup-doc-update:
  setup.c: fix comment about order of .git directory discovery

3 years agoMerge branch 'ar/unconfuse-three-dots'
Junio C Hamano [Tue, 19 Dec 2017 19:33:58 +0000 (11:33 -0800)]
Merge branch 'ar/unconfuse-three-dots'

Ancient part of codebase still shows dots after an abbreviated
object name just to show that it is not a full object name, but
these ellipses are confusing to people who newly discovered Git
who are used to seeing abbreviated object names and find them
confusing with the range syntax.

* ar/unconfuse-three-dots:
  t2020: test variations that matter
  t4013: test new output from diff --abbrev --raw
  diff: diff_aligned_abbrev: remove ellipsis after abbreviated SHA-1 value
  t4013: prepare for upcoming "diff --raw --abbrev" output format change
  checkout: describe_detached_head: remove ellipsis after committish
  print_sha1_ellipsis: introduce helper
  Documentation: user-manual: limit usage of ellipsis
  Documentation: revisions: fix typo: "three dot" ---> "three-dot" (in line with "two-dot").

3 years agoMerge branch 'tg/worktree-create-tracking'
Junio C Hamano [Tue, 19 Dec 2017 19:33:57 +0000 (11:33 -0800)]
Merge branch 'tg/worktree-create-tracking'

The way "git worktree add" determines what branch to create from
where and checkout in the new worktree has been updated a bit.

* tg/worktree-create-tracking:
  add worktree.guessRemote config option
  worktree: add --guess-remote flag to add subcommand
  worktree: make add <path> <branch> dwim
  worktree: add --[no-]track option to the add subcommand
  worktree: add can be created from any commit-ish
  checkout: factor out functions to new lib file

3 years agoMerge branch 'gk/tracing-optimization'
Junio C Hamano [Tue, 19 Dec 2017 19:33:57 +0000 (11:33 -0800)]
Merge branch 'gk/tracing-optimization'

The tracing infrastructure has been optimized for cases where no
tracing is requested.

* gk/tracing-optimization:
  trace: improve performance while category is disabled
  trace: remove trace key normalization

3 years agoMerge branch 'bw/submodule-config-cleanup'
Junio C Hamano [Tue, 19 Dec 2017 19:33:57 +0000 (11:33 -0800)]
Merge branch 'bw/submodule-config-cleanup'

Recent update to the submodule configuration code broke "diff-tree"
by accidentally stopping to read from the index upfront.

* bw/submodule-config-cleanup:
  diff-tree: read the index so attribute checks work in bare repositories

3 years agoMerge branch 'sb/clone-recursive-submodule-doc'
Junio C Hamano [Tue, 19 Dec 2017 19:33:56 +0000 (11:33 -0800)]
Merge branch 'sb/clone-recursive-submodule-doc'

Doc update.

* sb/clone-recursive-submodule-doc:
  Documentation/git-clone: improve description for submodule recursing

3 years agoMerge branch 'ls/git-gui-no-double-utf8-author-name'
Junio C Hamano [Tue, 19 Dec 2017 19:33:56 +0000 (11:33 -0800)]
Merge branch 'ls/git-gui-no-double-utf8-author-name'

Amending commits in git-gui broke the author name that is non-ascii
due to incorrect enconding conversion.

* ls/git-gui-no-double-utf8-author-name:
  git-gui: prevent double UTF-8 conversion

3 years agoMerge branch 'bw/pathspec-match-submodule-boundary'
Junio C Hamano [Tue, 19 Dec 2017 19:33:56 +0000 (11:33 -0800)]
Merge branch 'bw/pathspec-match-submodule-boundary'

An v2.12-era regression in pathspec match logic, which made it look
into submodule tree even when it is not desired, has been fixed.

* bw/pathspec-match-submodule-boundary:
  pathspec: only match across submodule boundaries when requested

3 years agoMerge branch 'jt/diff-anchored-patience'
Junio C Hamano [Tue, 19 Dec 2017 19:33:56 +0000 (11:33 -0800)]
Merge branch 'jt/diff-anchored-patience'

"git diff" learned a variant of the "--patience" algorithm, to
which the user can specify which 'unique' line to be used as
anchoring points.

* jt/diff-anchored-patience:
  diff: support anchoring line(s)

3 years agoMerge branch 'en/merge-recursive-icase-removal'
Junio C Hamano [Tue, 19 Dec 2017 19:33:55 +0000 (11:33 -0800)]
Merge branch 'en/merge-recursive-icase-removal'

The code internal to the recursive merge strategy was not fully
prepared to see a path that is renamed to try overwriting another
path that is only different in case on case insensitive systems.
This does not matter in the current code, but will start to matter
once the rename detection logic starts taking hints from nearby
paths moving to some directory and moves a new path along with them.

* en/merge-recursive-icase-removal:
  merge-recursive: ignore_case shouldn't reject intentional removals

3 years agoMerge branch 'en/rename-progress'
Junio C Hamano [Tue, 19 Dec 2017 19:33:55 +0000 (11:33 -0800)]
Merge branch 'en/rename-progress'

Historically, the diff machinery for rename detection had a
hardcoded limit of 32k paths; this is being lifted to allow users
trade cycles with a (possibly) easier to read result.

* en/rename-progress:
  diffcore-rename: make diff-tree -l0 mean -l<large>
  sequencer: show rename progress during cherry picks
  diff: remove silent clamp of renameLimit
  progress: fix progress meters when dealing with lots of work
  sequencer: warn when internal merge may be suboptimal due to renameLimit

3 years agobuiltin/describe.c: describe a blob
Stefan Beller [Thu, 16 Nov 2017 02:00:39 +0000 (18:00 -0800)]
builtin/describe.c: describe a blob

Sometimes users are given a hash of an object and they want to
identify it further (ex.: Use verify-pack to find the largest blobs,
but what are these? or [1])

When describing commits, we try to anchor them to tags or refs, as these
are conceptually on a higher level than the commit. And if there is no ref
or tag that matches exactly, we're out of luck.  So we employ a heuristic
to make up a name for the commit. These names are ambiguous, there might
be different tags or refs to anchor to, and there might be different
path in the DAG to travel to arrive at the commit precisely.

When describing a blob, we want to describe the blob from a higher layer
as well, which is a tuple of (commit, deep/path) as the tree objects
involved are rather uninteresting.  The same blob can be referenced by
multiple commits, so how we decide which commit to use?  This patch
implements a rather naive approach on this: As there are no back pointers
from blobs to commits in which the blob occurs, we'll start walking from
any tips available, listing the blobs in-order of the commit and once we
found the blob, we'll take the first commit that listed the blob. For
example

  git describe --tags v0.99:Makefile
  conversion-901-g7672db20c2:Makefile

tells us the Makefile as it was in v0.99 was introduced in commit 7672db20.

The walking is performed in reverse order to show the introduction of a
blob rather than its last occurrence.

[1] https://stackoverflow.com/questions/223678/which-commit-has-this-blob

Signed-off-by: Stefan Beller <sbeller@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
3 years agohttp: support CURLPROXY_HTTPS
Wei Shuyu [Tue, 19 Dec 2017 17:24:01 +0000 (01:24 +0800)]
http: support CURLPROXY_HTTPS

HTTP proxy over SSL is supported by curl since 7.52.0.
This is very useful for networks with protocol whitelist.

Signed-off-by: Wei Shuyu <wsy@dogben.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
3 years agorebase: rebasing can also be done when HEAD is detached
Kaartic Sivaraam [Sat, 16 Dec 2017 09:03:19 +0000 (14:33 +0530)]
rebase: rebasing can also be done when HEAD is detached

Attempting to rebase when the HEAD is detached and is already
up to date with upstream (so there's nothing to do), the
following message is shown

        Current branch HEAD is up to date.

which is clearly wrong as HEAD is not a branch.

Handle the special case of HEAD correctly to give a more precise
error message.

Signed-off-by: Kaartic Sivaraam <kaartic.sivaraam@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Signed-off-by: Kaartic Sivaraam <kaartic.sivaraam@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
3 years agorebase: distinguish user input by quoting it
Kaartic Sivaraam [Sat, 16 Dec 2017 09:03:18 +0000 (14:33 +0530)]
rebase: distinguish user input by quoting it

Signed-off-by: Kaartic Sivaraam <kaartic.sivaraam@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Signed-off-by: Kaartic Sivaraam <kaartic.sivaraam@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
3 years agorebase: consistently use branch_name variable
Kaartic Sivaraam [Sat, 16 Dec 2017 09:03:17 +0000 (14:33 +0530)]
rebase: consistently use branch_name variable

The variable "branch_name" holds the <branch> parameter in "git
rebase <upstream> <branch>", but one codepath did not use it after
assigning $1 to it (instead it kept using $1).  Make it use the
variable consistently.

Also, update an error message to say there is no such branch or
commit, as we are expecting either of them, and not limiting
ourselves to a branch name.

Signed-off-by: Kaartic Sivaraam <kaartic.sivaraam@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Signed-off-by: Kaartic Sivaraam <kaartic.sivaraam@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
3 years agoDoc/check-ref-format: clarify information about @{-N} syntax
Kaartic Sivaraam [Sat, 16 Dec 2017 08:13:49 +0000 (13:43 +0530)]
Doc/check-ref-format: clarify information about @{-N} syntax

When the N-th previous thing checked out syntax (@{-N}) is used
with '--branch' option of check-ref-format the result may not be
the name of a branch that currently exists or ever existed. This
is because @{-N} is used to refer to the N-th last checked out
"thing", which might be a commit object name if the previous check
out was a detached HEAD state; or a branch name, otherwise. The
documentation thus does a wrong thing by promoting it as the
"previous branch syntax".

State that @{-N} is the syntax for specifying "N-th last thing
checked out" and also state that the result of using @{-N} might
also result in an commit object name.

Signed-off-by: Kaartic Sivaraam <kaartic.sivaraam@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
3 years agoconfig: document default value of http.sslVerify
Simon Ruderich [Sat, 16 Dec 2017 12:32:02 +0000 (13:32 +0100)]
config: document default value of http.sslVerify

Remove any doubt that certificates might not be verified by
default.

Signed-off-by: Simon Ruderich <simon@ruderich.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
3 years agop7519: improve check for prerequisite WATCHMAN
René Scharfe [Sat, 16 Dec 2017 12:12:23 +0000 (13:12 +0100)]
p7519: improve check for prerequisite WATCHMAN

The return code of command -v with a non-existing command is 1 in bash
and 127 in dash.  Use that return code directly to allow the script to
work with dash and without watchman (e.g. on Debian).

While at it stop redirecting the output.  stderr is redirected to
/dev/null by test_lazy_prereq already, and stdout can actually be
useful -- the path of the found watchman executable is sent there, but
it's shown only if the script was run with --verbose.

Signed-off-by: Rene Scharfe <l.s.r@web.de>
Acked-by: Ben Peart <benpeart@microsoft.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
3 years agoimap-send: URI encode server folder
Nicolas Morey-Chaisemartin [Mon, 18 Dec 2017 19:11:13 +0000 (00:41 +0530)]
imap-send: URI encode server folder

When trying to send a patch using 'imap-send' with 'curl' and the
following configuration:

[imap]
folder = "[Gmail]/Drafts"
host = imaps://imap.gmail.com
port = 993
sslverify = false

results in the following error,

    curl_easy_perform() failed: URL using bad/illegal format or missing URL

This is a consequence of not URI-encoding the folder portion of
the URL which contains characters such as '[' which are not
allowed in a URI. According to RFC3986, these characters should be
URI-encoded.

So, URI-encode the folder before adding it to the URI to ensure it doesn't
contain characters that aren't allowed in a URI.

Reported-by: Doron Behar <doron.behar@gmail.com>
Signed-off-by: Nicolas Morey-Chaisemartin <NMoreyChaisemartin@suse.com>
Signed-off-by: Kaartic Sivaraam <kaartic.sivaraam@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
3 years agoversion --build-options: report commit, too, if possible
Johannes Schindelin [Thu, 14 Dec 2017 23:34:38 +0000 (00:34 +0100)]
version --build-options: report commit, too, if possible

In particular when local tags are used (or tags that are pushed to some
fork) to build Git, it is very hard to figure out from which particular
revision a particular Git executable was built. It gets worse when those
tags are deleted, or even updated.

Let's just report an exact, unabbreviated commit name in our build
options.

We need to be careful, though, to report when the current commit cannot
be determined, e.g. when building from a tarball without any associated
Git repository. This could be the case also when extracting Git's source
code into an unrelated Git worktree.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
3 years agoversion --build-options: also report host CPU
Eric Sunshine [Thu, 14 Dec 2017 23:34:34 +0000 (00:34 +0100)]
version --build-options: also report host CPU

It can be helpful for bug reports to include information about the
environment in which the bug occurs. "git version --build-options" can
help to supplement this information. In addition to the size of 'long'
already reported by --build-options, also report the host's CPU type.
Example output:

   $ git version --build-options
   git version 2.9.3.windows.2.826.g06c0f2f
   cpu: x86_64
   sizeof-long: 4

New Makefile variable HOST_CPU supports cross-compiling.

Suggested-by: Adric Norris <landstander668@gmail.com>
Signed-off-by: Eric Sunshine <sunshine@sunshineco.com>
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
3 years agotransport: make transport vtable more private
Jonathan Tan [Thu, 14 Dec 2017 21:44:45 +0000 (13:44 -0800)]
transport: make transport vtable more private

Move the definition of the transport-specific functions provided by
transports, whether declared in transport.c or transport-helper.c, into
an internal header. This means that transport-using code (as opposed to
transport-declaring code) can no longer access these functions (without
importing the internal header themselves), making it clear that they
should use the transport_*() functions instead, and also allowing the
interface between the transport mechanism and an individual transport to
independently evolve.

This is superficially a reversal of commit 824d5776c3f2 ("Refactor
struct transport_ops inlined into struct transport", 2007-09-19).
However, the scope of the involved variables was neither affected nor
discussed in that commit, and I think that the advantages in making
those functions more private outweigh the advantages described in that
commit's commit message. A minor additional point is that the code has
gotten more complicated since then, in that the function-pointer
variables are potentially mutated twice (once initially and once if
transport_take_over() is invoked), increasing the value of corralling
them into their own struct.

Signed-off-by: Jonathan Tan <jonathantanmy@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
3 years agoclone, fetch: remove redundant transport check
Jonathan Tan [Thu, 14 Dec 2017 21:44:44 +0000 (13:44 -0800)]
clone, fetch: remove redundant transport check

Prior to commit a2d725b7bdf7 ("Use an external program to implement
fetching with curl", 2009-08-05), if Git was compiled with NO_CURL, the
get_refs_list and fetch methods in struct transport might not be
populated, hence the checks in clone and fetch. After that commit, all
transports populate get_refs_list and fetch, making the checks in clone
and fetch redundant. Remove those checks.

Signed-off-by: Jonathan Tan <jonathantanmy@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
3 years agopartial-clone: design doc
Jeff Hostetler [Thu, 14 Dec 2017 21:09:23 +0000 (21:09 +0000)]
partial-clone: design doc

Design document for partial clone feature.

Signed-off-by: Jeff Hostetler <jeffhost@microsoft.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
3 years agoRelNotes: minor typo fixes in 2.16.0 draft
Todd Zullinger [Thu, 14 Dec 2017 02:42:44 +0000 (21:42 -0500)]
RelNotes: minor typo fixes in 2.16.0 draft

Signed-off-by: Todd Zullinger <tmz@pobox.com>
3 years agot/lib-git-svn.sh: improve svnserve tests with parallel make test
Todd Zullinger [Fri, 1 Dec 2017 15:56:53 +0000 (10:56 -0500)]
t/lib-git-svn.sh: improve svnserve tests with parallel make test

Setting SVNSERVE_PORT enables several tests which require a local
svnserve daemon to be run (in t9113 & t9126).  The tests share setup of
the local svnserve via `start_svnserve()`.  The function uses svnserve's
`--listen-once` option, which causes svnserve to accept one connection
on the port, serve it, and exit.  When running the tests in parallel
this fails if one test tries to start svnserve while the other is still
running.

Use the test number as the svnserve port (similar to httpd tests) to
avoid port conflicts.  Developers can set GIT_TEST_SVNSERVE to any value
other than 'false' or 'auto' to enable these tests.

Acked-by: Eric Wong <e@80x24.org>
Reviewed-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Todd Zullinger <tmz@pobox.com>
3 years agot/lib-git-svn: cleanup inconsistent tab/space usage
Todd Zullinger [Fri, 1 Dec 2017 15:56:52 +0000 (10:56 -0500)]
t/lib-git-svn: cleanup inconsistent tab/space usage

Acked-by: Eric Wong <e@80x24.org>
Reviewed-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Todd Zullinger <tmz@pobox.com>
3 years agoMerge branch 'svn-crlf' of git://bogomips.org/git-svn into ew/svn-crlf
Junio C Hamano [Thu, 14 Dec 2017 17:26:32 +0000 (09:26 -0800)]
Merge branch 'svn-crlf' of git://bogomips.org/git-svn into ew/svn-crlf

* 'svn-crlf' of git://bogomips.org/git-svn:
  git-svn: convert CRLF to LF in commit message to SVN

3 years agogit-svn: convert CRLF to LF in commit message to SVN
Eric Wong [Thu, 14 Dec 2017 00:05:08 +0000 (00:05 +0000)]
git-svn: convert CRLF to LF in commit message to SVN

Subversion since 1.6 does not accept CR characters in the commit
message, so filter it out on our end before 'git svn dcommit' sets
the svn:log property.

Reported-by: Brian Bennett <Brian.Bennett@Transamerica.com>
Signed-off-by: Eric Wong <e@80x24.org>
3 years agoRelNotes: the ninth batch
Junio C Hamano [Wed, 13 Dec 2017 21:32:34 +0000 (13:32 -0800)]
RelNotes: the ninth batch

Signed-off-by: Junio C Hamano <gitster@pobox.com>
3 years agoMerge branch 'js/hashmap-update-sample'
Junio C Hamano [Wed, 13 Dec 2017 21:28:58 +0000 (13:28 -0800)]
Merge branch 'js/hashmap-update-sample'

Code comment update.

* js/hashmap-update-sample:
  hashmap: adjust documentation to reflect reality

3 years agoMerge branch 'en/remove-stripspace'
Junio C Hamano [Wed, 13 Dec 2017 21:28:58 +0000 (13:28 -0800)]
Merge branch 'en/remove-stripspace'

An internal function that was left for backward compatibility has
been removed, as there is no remaining callers.

* en/remove-stripspace:
  strbuf: remove unused stripspace function alias

3 years agoMerge branch 'jk/no-optional-locks'
Junio C Hamano [Wed, 13 Dec 2017 21:28:58 +0000 (13:28 -0800)]
Merge branch 'jk/no-optional-locks'

Doc update for a feature available in Git v2.14 and upwards.

* jk/no-optional-locks:
  git-status.txt: mention --no-optional-locks

3 years agoMerge branch 'ds/for-each-file-in-obj-micro-optim'
Junio C Hamano [Wed, 13 Dec 2017 21:28:57 +0000 (13:28 -0800)]
Merge branch 'ds/for-each-file-in-obj-micro-optim'

The code to iterate over loose object files got optimized.

* ds/for-each-file-in-obj-micro-optim:
  sha1_file: use strbuf_add() instead of strbuf_addf()

3 years agoMerge branch 'jk/progress-delay-fix'
Junio C Hamano [Wed, 13 Dec 2017 21:28:57 +0000 (13:28 -0800)]
Merge branch 'jk/progress-delay-fix'

A regression in the progress eye-candy was fixed.

* jk/progress-delay-fix:
  progress: drop delay-threshold code
  progress: set default delay threshold to 100%, not 0%

3 years agoMerge branch 'ks/doc-checkout-previous'
Junio C Hamano [Wed, 13 Dec 2017 21:28:57 +0000 (13:28 -0800)]
Merge branch 'ks/doc-checkout-previous'

@{-N} in "git checkout @{-N}" may refer to a detached HEAD state,
but the documentation was not clear about it, which has been fixed.

* ks/doc-checkout-previous:
  Doc/checkout: checking out using @{-N} can lead to detached state

3 years agoMerge branch 'fk/sendmail-from-path'
Junio C Hamano [Wed, 13 Dec 2017 21:28:56 +0000 (13:28 -0800)]
Merge branch 'fk/sendmail-from-path'

"git send-email" tries to see if the sendmail program is available
in /usr/lib and /usr/sbin; extend the list of locations to be
checked to also include directories on $PATH.

* fk/sendmail-from-path:
  git-send-email: honor $PATH for sendmail binary

3 years agoMerge branch 'tg/t-readme-updates'
Junio C Hamano [Wed, 13 Dec 2017 21:28:56 +0000 (13:28 -0800)]
Merge branch 'tg/t-readme-updates'

Developer doc updates.

* tg/t-readme-updates:
  t/README: document test_cmp_rev
  t/README: remove mention of adding copyright notices

3 years agoMerge branch 'pc/submodule-helper'
Junio C Hamano [Wed, 13 Dec 2017 21:28:56 +0000 (13:28 -0800)]
Merge branch 'pc/submodule-helper'

A message fix.

* pc/submodule-helper:
  submodule--helper.c: i18n: add a missing space in message

3 years agoMerge branch 'jc/receive-pack-hook-doc'
Junio C Hamano [Wed, 13 Dec 2017 21:28:55 +0000 (13:28 -0800)]
Merge branch 'jc/receive-pack-hook-doc'

Doc update.

* jc/receive-pack-hook-doc:
  hooks doc: clarify when receive-pack invokes its hooks

3 years agoMerge branch 'ab/pcre2-grep'
Junio C Hamano [Wed, 13 Dec 2017 21:28:54 +0000 (13:28 -0800)]
Merge branch 'ab/pcre2-grep'

"git grep" compiled with libpcre2 sometimes triggered a segfault,
which is being fixed.

* ab/pcre2-grep:
  grep: fix segfault under -P + PCRE2 <=10.30 + (*NO_JIT)
  test-lib: add LIBPCRE1 & LIBPCRE2 prerequisites

3 years agoMerge branch 'ra/decorate-limit-refs'
Junio C Hamano [Wed, 13 Dec 2017 21:28:54 +0000 (13:28 -0800)]
Merge branch 'ra/decorate-limit-refs'

The tagnames "git log --decorate" uses to annotate the commits can
now be limited to subset of available refs with the two additional
options, --decorate-refs[-exclude]=<pattern>.

* ra/decorate-limit-refs:
  log: add option to choose which refs to decorate

3 years agoMerge branch 'bc/hash-algo'
Junio C Hamano [Wed, 13 Dec 2017 21:28:54 +0000 (13:28 -0800)]
Merge branch 'bc/hash-algo'

An infrastructure to define what hash function is used in Git is
introduced, and an effort to plumb that throughout various
codepaths has been started.

* bc/hash-algo:
  repository: fix a sparse 'using integer as NULL pointer' warning
  Switch empty tree and blob lookups to use hash abstraction
  Integrate hash algorithm support with repo setup
  Add structure representing hash algorithm
  setup: expose enumerated repo info

3 years agopath: document path functions
Brandon Williams [Wed, 13 Dec 2017 18:28:02 +0000 (10:28 -0800)]
path: document path functions

Signed-off-by: Brandon Williams <bmwill@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
3 years agotransport: remove unused "push" in vtable
Jonathan Tan [Tue, 12 Dec 2017 23:10:56 +0000 (15:10 -0800)]
transport: remove unused "push" in vtable

After commit 0d0bac67ce3b ("transport: drop support for git-over-rsync",
2016-02-01), no transport in Git populates the "push" entry in the
transport vtable. Remove this entry.

Signed-off-by: Jonathan Tan <jonathantanmy@google.com>
Reviewed-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
3 years agoinstall-doc-quick: allow specifying what ref to install
Randall S. Becker [Sat, 9 Dec 2017 22:07:57 +0000 (17:07 -0500)]
install-doc-quick: allow specifying what ref to install

We allow the builders, who want to install the preformatted manpages
and html documents, to specify where in their filesystem these two
repositories are stored.  Let them also specify which ref (or even a
revision) to grab the preformatted material from.

Signed-off-by: Randall S. Becker <rsbecker@nexbridge.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
3 years agot/helper: ignore everything but sources
Stefan Beller [Tue, 12 Dec 2017 20:56:06 +0000 (12:56 -0800)]
t/helper: ignore everything but sources

Compiled test helpers in t/helper are out of sync with the .gitignore
files quite frequently. This can happen when new test helpers are added,
but the explicit .gitignore file is not updated in the same commit, or
when you forget to 'make clean' before checking out a different version
of git, as the different version may have a different explicit list of
test helpers to ignore.

Fix this by having an overly broad ignore pattern in that directory:
Anything, except C and shell source, will be ignored.

Signed-off-by: Stefan Beller <sbeller@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
3 years agotravis-ci: use 'set -x' in 'ci/*' scripts for extra tracing output
SZEDER Gábor [Mon, 11 Dec 2017 23:34:43 +0000 (00:34 +0100)]
travis-ci: use 'set -x' in 'ci/*' scripts for extra tracing output

While the build logic was embedded in our '.travis.yml', Travis CI
used to produce a nice trace log including all commands executed in
those embedded scriptlets.  Since 657343a60 (travis-ci: move Travis CI
code into dedicated scripts, 2017-09-10), however, we only see the
name of the dedicated scripts, but not what those scripts are actually
doing, resulting in a less useful trace log.  A patch later in this
series will move setting environment variables from '.travis.yml' to
the 'ci/*' scripts, so not even those will be included in the trace
log.

Use 'set -x' in 'ci/lib-travisci.sh', which is sourced in most other
'ci/*' scripts, so we get trace log about the commands executed in all
of those scripts.

Signed-off-by: SZEDER Gábor <szeder.dev@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
3 years agotravis-ci: set GIT_TEST_HTTPD in 'ci/lib-travisci.sh'
SZEDER Gábor [Mon, 11 Dec 2017 23:34:46 +0000 (00:34 +0100)]
travis-ci: set GIT_TEST_HTTPD in 'ci/lib-travisci.sh'

Commit 657343a60 (travis-ci: move Travis CI code into dedicated
scripts, 2017-09-10) converted '.travis.yml's default 'before_install'
scriptlet to the 'ci/install-dependencies.sh' script, and while doing
so moved setting GIT_TEST_HTTPD=YesPlease for the 64-bit GCC and Clang
Linux build jobs to that script.  This is wrong for two reasons:

 - The purpose of that script is, as its name suggests, to install
   dependencies, not to set any environment variables influencing
   which tests should be run (though, arguably, this was already an
   issue with the original 'before_install' scriptlet).

 - Setting the variable has no effect anymore, because that script is
   run in a separate shell process, and the variable won't be visible
   in any of the other scripts, notably in 'ci/run-tests.sh'
   responsible for, well, running the tests.

Luckily, this didn't have a negative effect on our Travis CI build
jobs, because GIT_TEST_HTTPD is a tri-state variable defaulting to
"auto" and a functioning web server was installed in those Linux build
jobs, so the httpd tests were run anyway.

Apparently the httpd tests run just fine without GIT_TEST_HTTPD being
set, therefore we could simply remove this environment variable.
However, if a bug were to creep in to change the Travis CI build
environment to run the tests as root or to not install Apache, then
the httpd tests would be skipped and the build job would still
succeed.  We would only notice if someone actually were to look
through the build job's trace log; but who would look at the trace log
of a successful build job?!

Since httpd tests are important, we do want to run them and we want to
be loudly reminded if they can't be run.  Therefore, move setting
GIT_TEST_HTTPD=YesPlease for the 64-bit GCC and Clang Linux build jobs
to 'ci/lib-travisci.sh' to ensure that the build job fails when the
httpd tests can't be run.  (We could set it in 'ci/run-tests.sh' just
as well, but it's better to keep all environment variables in one
place in 'ci/lib-travisci.sh'.)

Signed-off-by: SZEDER Gábor <szeder.dev@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
3 years agotravis-ci: move setting environment variables to 'ci/lib-travisci.sh'
SZEDER Gábor [Mon, 11 Dec 2017 23:34:45 +0000 (00:34 +0100)]
travis-ci: move setting environment variables to 'ci/lib-travisci.sh'

Our '.travis.yml's 'env.global' section sets a bunch of environment
variables for all build jobs, though none of them actually affects all
build jobs.  It's convenient for us, and in most cases it works just
fine, because irrelevant environment variables are simply ignored.

However, $GIT_SKIP_TESTS is an exception: it tells the test harness to
skip the two test scripts that are prone to occasional failures on
OSX, but as it's set for all build jobs those tests are not run in any
of the build jobs that are capable to run them reliably, either.

Therefore $GIT_SKIP_TESTS should only be set in the OSX build jobs,
but those build jobs are included in the build matrix implicitly (i.e.
by combining the matrix keys 'os' and 'compiler'), and there is no way
to set an environment variable only for a subset of those implicit
build jobs.  (Unless we were to add new scriptlets to '.travis.yml',
which is exactly the opposite direction that we took with commit
657343a60 (travis-ci: move Travis CI code into dedicated scripts,
2017-09-10)).

So move setting $GIT_SKIP_TESTS to 'ci/lib-travisci.sh', where it can
trivially be set only for the OSX build jobs.

Furthermore, move setting all other environment variables from
'.travis.yml' to 'ci/lib-travisci.sh', too, because a couple of
environment variables are already set there, and this way all
environment variables will be set in the same place.  All the logic
controlling our builds is already in the 'ci/*' scripts anyway, so
there is really no good reason to keep the environment variables
separately.

Signed-off-by: SZEDER Gábor <szeder.dev@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
3 years agotravis-ci: introduce a $jobname variable for 'ci/*' scripts
SZEDER Gábor [Mon, 11 Dec 2017 23:34:44 +0000 (00:34 +0100)]
travis-ci: introduce a $jobname variable for 'ci/*' scripts

A couple of 'ci/*' scripts are shared between different build jobs:
'ci/lib-travisci.sh', being a common library, is sourced from almost
every script, while 'ci/install-dependencies.sh', 'ci/run-build.sh'
and 'ci/run-tests.sh' are shared between the "regular" GCC and Clang
Linux and OSX build jobs, and the latter two scripts are used in the
GETTEXT_POISON Linux build job as well.

Our builds could benefit from these shared scripts being able to
easily tell which build job they are taking part in.  Now, it's
already quite easy to tell apart Linux vs OSX and GCC vs Clang build
jobs, but it gets trickier with all the additional Linux-based build
jobs included explicitly in the build matrix.

Unfortunately, Travis CI doesn't provide much help in this regard.
The closest we've got is the $TRAVIS_JOB_NUMBER variable, the value of
which is two dot-separated integers, where the second integer
indicates a particular build job.  While it would be possible to use
that second number to identify the build job in our shared scripts, it
doesn't seem like a good idea to rely on that:

  - Though the build job numbering sequence seems to be stable so far,
    Travis CI's documentation doesn't explicitly states that it is
    indeed stable and will remain so in the future.  And even if it
    were stable,

  - if we were to remove or insert a build job in the middle, then the
    job numbers of all subsequent build jobs would change accordingly.

So roll our own means of simple build job identification and introduce
the $jobname environment variable in our builds, setting it in the
environments of the explicitly included jobs in '.travis.yml', while
constructing one in 'ci/lib-travisci.sh' as the combination of the OS
and compiler name for the GCC and Clang Linux and OSX build jobs.  Use
$jobname instead of $TRAVIS_OS_NAME in scripts taking different
actions based on the OS and build job (when installing P4 and Git LFS
dependencies and including them in $PATH).  The following two patches
will also rely on $jobname.

Signed-off-by: SZEDER Gábor <szeder.dev@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
3 years agosubmodule: convert get_next_submodule to not rely on the_index
Brandon Williams [Tue, 12 Dec 2017 19:53:52 +0000 (11:53 -0800)]
submodule: convert get_next_submodule to not rely on the_index

Instead of implicitly relying on the global 'the_index', convert
'get_next_submodule()' to use the index of the repository stored in the
callback data 'struct submodule_parallel_fetch'.

Since this removes the last user of the index compatibility macros,
define 'NO_THE_INDEX_COMPATIBILITY_MACROS' to prevent future users of
these macros in submodule.c.

Signed-off-by: Brandon Williams <bmwill@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
3 years agosubmodule: used correct index in is_staging_gitmodules_ok
Brandon Williams [Tue, 12 Dec 2017 19:53:51 +0000 (11:53 -0800)]
submodule: used correct index in is_staging_gitmodules_ok

Commit 883e248b8 (fsmonitor: teach git to optionally utilize a file
system monitor to speed up detecting new or changed files., 2017-09-22)
introduced a call to 'ce_match_stat()' in 'is_staging_gitmodules_ok()'
which implicitly relys on the the global 'the_index' instead of the
passed in 'struct index_state'.  Fix this by changing the call to
'ie_match_stat()' and using the passed in index_state struct.

Signed-off-by: Brandon Williams <bmwill@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
3 years agosubmodule: convert stage_updated_gitmodules to take a struct index_state
Brandon Williams [Tue, 12 Dec 2017 19:53:50 +0000 (11:53 -0800)]
submodule: convert stage_updated_gitmodules to take a struct index_state

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