Alban Gruin [Fri, 9 Nov 2018 21:19:23 +0000 (22:19 +0100)]
p3400: replace calls to `git checkout -b' by `git checkout -B'
p3400 makes a copy of the current repository to test git-rebase
performance, and creates new branches in the copy with `git checkout
-b'. If the original repository has branches with the same name as the
script is trying to create, this operation will fail.
This replaces these calls by `git checkout -B' to force the creation and
update of these branches.
Signed-off-by: Alban Gruin <alban.gruin@gmail.com>
Acked-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Tue, 6 Nov 2018 06:51:23 +0000 (15:51 +0900)]
Ninth batch for 2.20
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Tue, 6 Nov 2018 06:50:23 +0000 (15:50 +0900)]
Merge branch 'sg/test-verbose-log'
Our test scripts can now take the '-V' option as a synonym for the
'--verbose-log' option.
* sg/test-verbose-log:
test-lib: introduce the '-V' short option for '--verbose-log'
Junio C Hamano [Tue, 6 Nov 2018 06:50:23 +0000 (15:50 +0900)]
Merge branch 'rj/header-cleanup'
Code cleanup.
* rj/header-cleanup:
commit-reach.h: add missing declarations (hdr-check)
ewok_rlw.h: add missing 'inline' to function definition
fetch-object.h: add missing declaration (hdr-check)
Junio C Hamano [Tue, 6 Nov 2018 06:50:23 +0000 (15:50 +0900)]
Merge branch 'ss/travis-ci-force-vm-mode'
The "container" mode of TravisCI is going away. Our .travis.yml
file is getting prepared for the transition.
* ss/travis-ci-force-vm-mode:
travis-ci: no longer use containers
Junio C Hamano [Tue, 6 Nov 2018 06:50:22 +0000 (15:50 +0900)]
Merge branch 'sg/test-rebase-editor-fix'
* sg/test-rebase-editor-fix:
t3404-rebase-interactive: test abbreviated commands
Junio C Hamano [Tue, 6 Nov 2018 06:50:22 +0000 (15:50 +0900)]
Merge branch 'tb/char-may-be-unsigned'
Build portability fix.
* tb/char-may-be-unsigned:
path.c: char is not (always) signed
Junio C Hamano [Tue, 6 Nov 2018 06:50:21 +0000 (15:50 +0900)]
Merge branch 'js/mingw-ns-filetime'
Windows port learned to use nano-second resolution file timestamps.
* js/mingw-ns-filetime:
mingw: implement nanosecond-precision file times
mingw: replace MSVCRT's fstat() with a Win32-based implementation
mingw: factor out code to set stat() data
Junio C Hamano [Tue, 6 Nov 2018 06:50:21 +0000 (15:50 +0900)]
Merge branch 'md/exclude-promisor-objects-fix'
Operations on promisor objects make sense in the context of only a
small subset of the commands that internally use the revisions
machinery, but the "--exclude-promisor-objects" option were taken
and led to nonsense results by commands like "log", to which it
didn't make much sense. This has been corrected.
* md/exclude-promisor-objects-fix:
exclude-promisor-objects: declare when option is allowed
Documentation/git-log.txt: do not show --exclude-promisor-objects
Junio C Hamano [Tue, 6 Nov 2018 06:50:20 +0000 (15:50 +0900)]
Merge branch 'jw/send-email-no-auth'
"git send-email" learned to disable SMTP authentication via the
"--smtp-auth=none" option, even when the smtp username is given
(which turns the authentication on by default).
* jw/send-email-no-auth:
send-email: explicitly disable authentication
Junio C Hamano [Tue, 6 Nov 2018 06:50:20 +0000 (15:50 +0900)]
Merge branch 'nd/submodule-unused-vars'
Code clean-up.
* nd/submodule-unused-vars:
submodule.c: remove some of the_repository references
Junio C Hamano [Tue, 6 Nov 2018 06:50:20 +0000 (15:50 +0900)]
Merge branch 'nd/unpack-trees-with-cache-tree'
Trivial bugfix.
* nd/unpack-trees-with-cache-tree:
read-cache: use of memory after it is freed
Junio C Hamano [Tue, 6 Nov 2018 06:50:19 +0000 (15:50 +0900)]
Merge branch 'nd/completion-negation'
The command line completion machinery (in contrib/) has been
updated to allow the completion script to tweak the list of options
that are reported by the parse-options machinery correctly.
* nd/completion-negation:
completion: fix __gitcomp_builtin no longer consider extra options
Junio C Hamano [Tue, 6 Nov 2018 06:50:19 +0000 (15:50 +0900)]
Merge branch 'jt/upload-pack-v2-fix-shallow'
"git fetch" over protocol v2 into a shallow repository failed to
fetch full history behind a new tip of history that was diverged
before the cut-off point of the history that was previously fetched
shallowly.
* jt/upload-pack-v2-fix-shallow:
upload-pack: clear flags before each v2 request
upload-pack: make want_obj not global
upload-pack: make have_obj not global
Junio C Hamano [Tue, 6 Nov 2018 06:50:19 +0000 (15:50 +0900)]
Merge branch 'sb/submodule-url-to-absolute'
Some codepaths failed to form a proper URL when .gitmodules record
the URL to a submodule repository as relative to the repository of
superproject, which has been corrected.
* sb/submodule-url-to-absolute:
submodule helper: convert relative URL to absolute URL if needed
Junio C Hamano [Tue, 6 Nov 2018 06:50:18 +0000 (15:50 +0900)]
Merge branch 'js/shallow-and-fetch-prune'
"git repack" in a shallow clone did not correctly update the
shallow points in the repository, leading to a repository that
does not pass fsck.
* js/shallow-and-fetch-prune:
repack -ad: prune the list of shallow commits
shallow: offer to prune only non-existing entries
repack: point out a bug handling stale shallow info
Junio C Hamano [Tue, 6 Nov 2018 06:50:18 +0000 (15:50 +0900)]
Merge branch 'js/remote-archive-dwimfix'
The logic to determine the archive type "git archive" uses did not
correctly kick in for "git archive --remote", which has been
corrected.
* js/remote-archive-dwimfix:
archive: initialize archivers earlier
Junio C Hamano [Fri, 2 Nov 2018 15:53:59 +0000 (00:53 +0900)]
Merge branch 'jc/http-curlver-warnings'
Warning message fix.
* jc/http-curlver-warnings:
http: give curl version warnings consistently
Junio C Hamano [Fri, 2 Nov 2018 15:53:58 +0000 (00:53 +0900)]
Merge branch 'js/mingw-http-ssl'
On platforms with recent cURL library, http.sslBackend configuration
variable can be used to choose a different SSL backend at runtime.
The Windows port uses this mechanism to switch between OpenSSL and
Secure Channel while talking over the HTTPS protocol.
* js/mingw-http-ssl:
http: when using Secure Channel, ignore sslCAInfo by default
http: add support for disabling SSL revocation checks in cURL
http: add support for selecting SSL backends at runtime
Junio C Hamano [Fri, 2 Nov 2018 15:53:58 +0000 (00:53 +0900)]
Merge branch 'mg/gpg-fingerprint'
New "--pretty=format:" placeholders %GF and %GP that show the GPG
key fingerprints have been invented.
* mg/gpg-fingerprint:
gpg-interface.c: obtain primary key fingerprint as well
gpg-interface.c: support getting key fingerprint via %GF format
gpg-interface.c: use flags to determine key/signer info presence
Junio C Hamano [Fri, 2 Nov 2018 15:53:57 +0000 (00:53 +0900)]
Merge branch 'mg/gpg-parse-tighten'
Detect and reject a signature block that has more than one GPG
signature.
* mg/gpg-parse-tighten:
gpg-interface.c: detect and reject multiple signatures on commits
Junio C Hamano [Fri, 2 Nov 2018 15:53:57 +0000 (00:53 +0900)]
Merge branch 'en/merge-cleanup-more'
Further clean-up of merge-recursive machinery.
* en/merge-cleanup-more:
merge-recursive: avoid showing conflicts with merge branch before HEAD
merge-recursive: improve auto-merging messages with path collisions
Junio C Hamano [Thu, 1 Nov 2018 12:26:34 +0000 (21:26 +0900)]
Eighth batch for 2.20
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Thu, 1 Nov 2018 12:44:41 +0000 (21:44 +0900)]
rebase: apply cocci patch
Favor oideq() over !oidcmp() when checking for equality.
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Fri, 2 Nov 2018 02:04:59 +0000 (11:04 +0900)]
Merge branch 'js/rebase-i-shortopt'
"git rebase -i" learned to take 'b' as the short form of 'break'
option in the todo list.
* js/rebase-i-shortopt:
rebase -i: recognize short commands without arguments
Junio C Hamano [Fri, 2 Nov 2018 02:04:58 +0000 (11:04 +0900)]
Merge branch 'js/rebase-i-break'
"git rebase -i" learned a new insn, 'break', that the user can
insert in the to-do list. Upon hitting it, the command returns
control back to the user.
* js/rebase-i-break:
rebase -i: introduce the 'break' command
rebase -i: clarify what happens on a failed `exec`
Junio C Hamano [Fri, 2 Nov 2018 02:04:58 +0000 (11:04 +0900)]
Merge branch 'js/rebase-autostash-fix'
"git rebase" that has recently been rewritten in C had a few issues
in its "--autstash" feature, which have been corrected.
* js/rebase-autostash-fix:
rebase --autostash: fix issue with dirty submodules
rebase --autostash: demonstrate a problem with dirty submodules
rebase (autostash): use an explicit OID to apply the stash
rebase (autostash): store the full OID in <state-dir>/autostash
rebase (autostash): avoid duplicate call to state_dir_path()
Junio C Hamano [Fri, 2 Nov 2018 02:04:57 +0000 (11:04 +0900)]
Merge branch 'cb/printf-empty-format'
Build fix for a topic in flight.
* cb/printf-empty-format:
sequencer: cleanup for gcc warning in non developer mode
Junio C Hamano [Fri, 2 Nov 2018 02:04:57 +0000 (11:04 +0900)]
Merge branch 'jc/rebase-in-c-5-test-typofix'
Typofix.
* jc/rebase-in-c-5-test-typofix:
rebase: fix typoes in error messages
Junio C Hamano [Fri, 2 Nov 2018 02:04:56 +0000 (11:04 +0900)]
Merge branch 'pk/rebase-in-c-6-final'
The final step of rewriting "rebase -i" in C.
* pk/rebase-in-c-6-final:
rebase: default to using the builtin rebase
Junio C Hamano [Fri, 2 Nov 2018 02:04:56 +0000 (11:04 +0900)]
Merge branch 'js/rebase-in-c-5.5-work-with-rebase-i-in-c'
"rebase" that has been rewritten learns the new calling convention
used by "rebase -i" that was rewritten in C, tying the loose end
between two GSoC topics that stomped on each other's toes.
* js/rebase-in-c-5.5-work-with-rebase-i-in-c:
builtin rebase: prepare for builtin rebase -i
Junio C Hamano [Fri, 2 Nov 2018 02:04:55 +0000 (11:04 +0900)]
Merge branch 'pk/rebase-in-c-5-test'
Rewrite "git rebase" in C.
* pk/rebase-in-c-5-test:
builtin rebase: error out on incompatible option/mode combinations
builtin rebase: use no-op editor when interactive is "implied"
builtin rebase: show progress when connected to a terminal
builtin rebase: fast-forward to onto if it is a proper descendant
builtin rebase: optionally pass custom reflogs to reset_head()
builtin rebase: optionally auto-detect the upstream
Junio C Hamano [Fri, 2 Nov 2018 02:04:55 +0000 (11:04 +0900)]
Merge branch 'pk/rebase-in-c-4-opts'
Rewrite "git rebase" in C.
* pk/rebase-in-c-4-opts:
builtin rebase: support --root
builtin rebase: add support for custom merge strategies
builtin rebase: support `fork-point` option
merge-base --fork-point: extract libified function
builtin rebase: support --rebase-merges[=[no-]rebase-cousins]
builtin rebase: support `--allow-empty-message` option
builtin rebase: support `--exec`
builtin rebase: support `--autostash` option
builtin rebase: support `-C` and `--whitespace=<type>`
builtin rebase: support `--gpg-sign` option
builtin rebase: support `--autosquash`
builtin rebase: support `keep-empty` option
builtin rebase: support `ignore-date` option
builtin rebase: support `ignore-whitespace` option
builtin rebase: support --committer-date-is-author-date
builtin rebase: support --rerere-autoupdate
builtin rebase: support --signoff
builtin rebase: allow selecting the rebase "backend"
Junio C Hamano [Fri, 2 Nov 2018 02:04:54 +0000 (11:04 +0900)]
Merge branch 'pk/rebase-in-c-3-acts'
Rewrite "git rebase" in C.
* pk/rebase-in-c-3-acts:
builtin rebase: stop if `git am` is in progress
builtin rebase: actions require a rebase in progress
builtin rebase: support --edit-todo and --show-current-patch
builtin rebase: support --quit
builtin rebase: support --abort
builtin rebase: support --skip
builtin rebase: support --continue
Junio C Hamano [Fri, 2 Nov 2018 02:04:53 +0000 (11:04 +0900)]
Merge branch 'pk/rebase-in-c-2-basic'
Rewrite "git rebase" in C.
* pk/rebase-in-c-2-basic:
builtin rebase: support `git rebase <upstream> <switch-to>`
builtin rebase: only store fully-qualified refs in `options.head_name`
builtin rebase: start a new rebase only if none is in progress
builtin rebase: support --force-rebase
builtin rebase: try to fast forward when possible
builtin rebase: require a clean worktree
builtin rebase: support the `verbose` and `diffstat` options
builtin rebase: support --quiet
builtin rebase: handle the pre-rebase hook and --no-verify
builtin rebase: support `git rebase --onto A...B`
builtin rebase: support --onto
Junio C Hamano [Fri, 2 Nov 2018 02:04:53 +0000 (11:04 +0900)]
Merge branch 'ag/rebase-i-in-c'
Rewrite of the remaining "rebase -i" machinery in C.
* ag/rebase-i-in-c:
rebase -i: move rebase--helper modes to rebase--interactive
rebase -i: remove git-rebase--interactive.sh
rebase--interactive2: rewrite the submodes of interactive rebase in C
rebase -i: implement the main part of interactive rebase as a builtin
rebase -i: rewrite init_basic_state() in C
rebase -i: rewrite write_basic_state() in C
rebase -i: rewrite the rest of init_revisions_and_shortrevisions() in C
rebase -i: implement the logic to initialize $revisions in C
rebase -i: remove unused modes and functions
rebase -i: rewrite complete_action() in C
t3404: todo list with commented-out commands only aborts
sequencer: change the way skip_unnecessary_picks() returns its result
sequencer: refactor append_todo_help() to write its message to a buffer
rebase -i: rewrite checkout_onto() in C
rebase -i: rewrite setup_reflog_action() in C
sequencer: add a new function to silence a command, except if it fails
rebase -i: rewrite the edit-todo functionality in C
editor: add a function to launch the sequence editor
rebase -i: rewrite append_todo_help() in C
sequencer: make three functions and an enum from sequencer.c public
Junio C Hamano [Fri, 2 Nov 2018 02:04:52 +0000 (11:04 +0900)]
Merge branch 'pk/rebase-in-c'
Rewrite of the "rebase" machinery in C.
* pk/rebase-in-c:
builtin/rebase: support running "git rebase <upstream>"
rebase: refactor common shell functions into their own file
rebase: start implementing it as a builtin
Junio C Hamano [Tue, 30 Oct 2018 06:44:45 +0000 (15:44 +0900)]
Seventh batch for 2.20
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Tue, 30 Oct 2018 06:43:50 +0000 (15:43 +0900)]
Merge branch 'jk/uploadpack-packobjectshook-fix'
Code clean-up that results in a small bugfix.
* jk/uploadpack-packobjectshook-fix:
upload-pack: fix broken if/else chain in config callback
Junio C Hamano [Tue, 30 Oct 2018 06:43:49 +0000 (15:43 +0900)]
Merge branch 'uk/merge-subtree-doc-update'
Belated documentation update to adjust to a new world order that
happened a yew years ago.
* uk/merge-subtree-doc-update:
howto/using-merge-subtree: mention --allow-unrelated-histories
Junio C Hamano [Tue, 30 Oct 2018 06:43:49 +0000 (15:43 +0900)]
Merge branch 'cb/compat-mmap-is-private-read-only'
Code tightening.
* cb/compat-mmap-is-private-read-only:
compat: make sure git_mmap is not expected to write
Junio C Hamano [Tue, 30 Oct 2018 06:43:48 +0000 (15:43 +0900)]
Merge branch 'dl/mergetool-gui-option'
"git mergetool" learned to take the "--[no-]gui" option, just like
"git difftool" does.
* dl/mergetool-gui-option:
doc: document diff/merge.guitool config keys
completion: support `git mergetool --[no-]gui`
mergetool: accept -g/--[no-]gui as arguments
Junio C Hamano [Tue, 30 Oct 2018 06:43:48 +0000 (15:43 +0900)]
Merge branch 'js/mingw-load-sys-dll'
The way DLLs are loaded on the Windows port has been improved.
* js/mingw-load-sys-dll:
mingw: load system libraries the recommended way
Junio C Hamano [Tue, 30 Oct 2018 06:43:48 +0000 (15:43 +0900)]
Merge branch 'js/mingw-getcwd'
The way the Windows port figures out the current directory has been
improved.
* js/mingw-getcwd:
mingw: fix getcwd when the parent directory cannot be queried
mingw: ensure `getcwd()` reports the correct case
Junio C Hamano [Tue, 30 Oct 2018 06:43:48 +0000 (15:43 +0900)]
Merge branch 'cb/khash-maybe-unused-function'
Build fix.
* cb/khash-maybe-unused-function:
khash: silence -Wunused-function for delta-islands
commit-slabs: move MAYBE_UNUSED out
Junio C Hamano [Tue, 30 Oct 2018 06:43:48 +0000 (15:43 +0900)]
Merge branch 'jc/cocci-preincr'
Code cleanup.
* jc/cocci-preincr:
fsck: s/++i > 1/i++/
cocci: simplify "if (++u > 1)" to "if (u++)"
Junio C Hamano [Tue, 30 Oct 2018 06:43:47 +0000 (15:43 +0900)]
Merge branch 'ss/rename-tests'
Reorganize some tests and rename them; "ls t/" now gives a better
overview of what is tested for these scripts than before.
* ss/rename-tests:
t7501: rename commit test to comply with naming convention
t7500: rename commit tests script to comply with naming convention
t7502: rename commit test script to comply with naming convention
t7509: cleanup description and filename
t2000: rename and combine checkout clash tests
Junio C Hamano [Tue, 30 Oct 2018 06:43:47 +0000 (15:43 +0900)]
Merge branch 'ah/doc-updates'
Doc updates.
* ah/doc-updates:
doc: fix formatting in git-update-ref
doc: fix indentation of listing blocks in gitweb.conf.txt
doc: fix descripion for 'git tag --format'
doc: fix inappropriate monospace formatting
doc: fix ASCII art tab spacing
doc: clarify boundaries of 'git worktree list --porcelain'
Junio C Hamano [Tue, 30 Oct 2018 06:43:47 +0000 (15:43 +0900)]
Merge branch 'ds/reachable'
Trivial bugfix.
* ds/reachable:
commit-reach: fix cast in compare_commits_by_gen()
Junio C Hamano [Tue, 30 Oct 2018 06:43:46 +0000 (15:43 +0900)]
Merge branch 'jc/receive-deny-current-branch-fix'
The receive.denyCurrentBranch=updateInstead codepath kicked in even
when the push should have been rejected due to other reasons, such
as it does not fast-forward or the update-hook rejects it, which
has been corrected.
* jc/receive-deny-current-branch-fix:
receive: denyCurrentBranch=updateinstead should not blindly update
Junio C Hamano [Tue, 30 Oct 2018 06:43:46 +0000 (15:43 +0900)]
Merge branch 'ds/ci-commit-graph-and-midx'
One of our CI tests to run with "unusual/experimental/random"
settings now also uses commit-graph and midx.
* ds/ci-commit-graph-and-midx:
ci: add optional test variables
Junio C Hamano [Tue, 30 Oct 2018 06:43:46 +0000 (15:43 +0900)]
Merge branch 'jk/unused-function'
Developer support.
* jk/unused-function:
config.mak.dev: enable -Wunused-function
Junio C Hamano [Tue, 30 Oct 2018 06:43:45 +0000 (15:43 +0900)]
Merge branch 'cb/remove-dead-init'
Code clean-up.
* cb/remove-dead-init:
multi-pack-index: avoid dead store for struct progress
unpack-trees: avoid dead store for struct progress
Junio C Hamano [Tue, 30 Oct 2018 06:43:45 +0000 (15:43 +0900)]
Merge branch 'js/diff-notice-has-drive-prefix'
Under certain circumstances, "git diff D:/a/b/c D:/a/b/d" on
Windows would strip initial parts from the paths because they
were not recognized as absolute, which has been corrected.
* js/diff-notice-has-drive-prefix:
diff: don't attempt to strip prefix from absolute Windows paths
Junio C Hamano [Tue, 30 Oct 2018 06:43:44 +0000 (15:43 +0900)]
Merge branch 'ot/ref-filter-plug-leaks'
Plugging a handful of memory leaks in the ref-filter codepath.
* ot/ref-filter-plug-leaks:
ref-filter: free item->value and item->value->s
ls-remote: release memory instead of UNLEAK
ref-filter: free memory from used_atom
Junio C Hamano [Tue, 30 Oct 2018 06:43:44 +0000 (15:43 +0900)]
Merge branch 'ds/reachable-first-parent-fix'
Correct performance regression in commit ancestry computation when
generation numbers are involved.
* ds/reachable-first-parent-fix:
commit-reach: fix first-parent heuristic
Junio C Hamano [Tue, 30 Oct 2018 06:43:44 +0000 (15:43 +0900)]
Merge branch 'rj/header-guards'
Code clean-up.
* rj/header-guards:
headers: normalize the spelling of some header guards
Junio C Hamano [Tue, 30 Oct 2018 06:43:44 +0000 (15:43 +0900)]
Merge branch 'jk/test-tool-help'
Developer support.
* jk/test-tool-help:
test-tool: show tool list on error
Junio C Hamano [Tue, 30 Oct 2018 06:43:44 +0000 (15:43 +0900)]
Merge branch 'sg/doc-show-branch-typofix'
Docfix.
* sg/doc-show-branch-typofix:
doc: fix small typo in git show-branch
Junio C Hamano [Tue, 30 Oct 2018 06:43:43 +0000 (15:43 +0900)]
Merge branch 'sb/submodule-helper-remove-cruft'
Code clean-up.
* sb/submodule-helper-remove-cruft:
builtin/submodule--helper: remove debugging leftover tracing
Junio C Hamano [Tue, 30 Oct 2018 06:43:43 +0000 (15:43 +0900)]
Merge branch 'js/pack-objects-mutex-init-fix'
A mutex used in "git pack-objects" were not correctly initialized
and this caused "git repack" to dump core on Windows.
* js/pack-objects-mutex-init-fix:
pack-objects (mingw): initialize `packing_data` mutex in the correct spot
pack-objects (mingw): demonstrate a segmentation fault with large deltas
pack-objects: fix typo 'detla' -> 'delta'
Junio C Hamano [Tue, 30 Oct 2018 06:43:43 +0000 (15:43 +0900)]
Merge branch 'tq/branch-style-fix'
Code clean-up.
* tq/branch-style-fix:
branch: trivial style fix
Junio C Hamano [Tue, 30 Oct 2018 06:43:42 +0000 (15:43 +0900)]
Merge branch 'tq/branch-create-wo-branch-get'
Code clean-up.
* tq/branch-create-wo-branch-get:
builtin/branch.c: remove useless branch_get
Junio C Hamano [Tue, 30 Oct 2018 06:43:42 +0000 (15:43 +0900)]
Merge branch 'bc/hash-transition-part-15'
More codepaths are moving away from hardcoded hash sizes.
* bc/hash-transition-part-15:
rerere: convert to use the_hash_algo
submodule: make zero-oid comparison hash function agnostic
apply: rename new_sha1_prefix and old_sha1_prefix
apply: replace hard-coded constants
tag: express constant in terms of the_hash_algo
transport: use parse_oid_hex instead of a constant
upload-pack: express constants in terms of the_hash_algo
refs/packed-backend: express constants using the_hash_algo
packfile: express constants in terms of the_hash_algo
pack-revindex: express constants in terms of the_hash_algo
builtin/fetch-pack: remove constants with parse_oid_hex
builtin/mktree: remove hard-coded constant
builtin/repack: replace hard-coded constants
pack-bitmap-write: use GIT_MAX_RAWSZ for allocation
object_id.cocci: match only expressions of type 'struct object_id'
Junio C Hamano [Tue, 30 Oct 2018 06:43:41 +0000 (15:43 +0900)]
Merge branch 'sb/strbuf-h-update'
Code clean-up to serve as a BCP example.
* sb/strbuf-h-update:
strbuf.h: format according to coding guidelines
Junio C Hamano [Tue, 30 Oct 2018 06:43:41 +0000 (15:43 +0900)]
Merge branch 'jk/run-command-notdot'
The implementation of run_command() API on the UNIX platforms had a
bug that caused a command not on $PATH to be found in the current
directory.
* jk/run-command-notdot:
run-command: mark path lookup errors with ENOENT
Junio C Hamano [Tue, 30 Oct 2018 06:43:41 +0000 (15:43 +0900)]
Merge branch 'tb/filter-alternate-refs'
Test fix.
* tb/filter-alternate-refs:
t5410: use longer path for sample script
Documentation/config.txt: fix typo in core.alternateRefsCommand
Junio C Hamano [Tue, 30 Oct 2018 06:43:40 +0000 (15:43 +0900)]
Merge branch 'rv/send-email-cc-misc-by'
"git send-email" learned to grab address-looking string on any
trailer whose name ends with "-by"; --suppress-cc=misc-by on the
command line, or setting sendemail.suppresscc configuration
variable to "misc-by", can be used to disable this behaviour.
This is a backward-incompatible change that may surprise existing
users.
* rv/send-email-cc-misc-by:
send-email: also pick up cc addresses from -by trailers
send-email: only consider lines containing @ or <> for automatic Cc'ing
Documentation/git-send-email.txt: style fixes
Junio C Hamano [Tue, 30 Oct 2018 06:43:40 +0000 (15:43 +0900)]
Merge branch 'lm/range-diff-submodule-fix'
"git range-diff" did not work well when the compared ranges had
changes in submodules and the "--submodule=log" was used.
* lm/range-diff-submodule-fix:
range-diff: allow to diff files regardless of submodule config
Junio C Hamano [Tue, 30 Oct 2018 06:43:39 +0000 (15:43 +0900)]
Merge branch 'ch/subtree-build'
Build update for "git subtree" (in contrib/) documentation pages.
* ch/subtree-build:
Revert "subtree: make install targets depend on build targets"
subtree: make install targets depend on build targets
subtree: add build targets 'man' and 'html'
Junio C Hamano [Tue, 30 Oct 2018 06:43:39 +0000 (15:43 +0900)]
Merge branch 'md/filter-trees'
The "rev-list --filter" feature learned to exclude all trees via
"tree:0" filter.
* md/filter-trees:
list-objects: support for skipping tree traversal
filter-trees: code clean-up of tests
list-objects-filter: implement filter tree:0
list-objects-filter-options: do not over-strbuf_init
list-objects-filter: use BUG rather than die
revision: mark non-user-given objects instead
rev-list: handle missing tree objects properly
list-objects: always parse trees gently
list-objects: refactor to process_tree_contents
list-objects: store common func args in struct
SZEDER Gábor [Mon, 29 Oct 2018 12:13:59 +0000 (13:13 +0100)]
test-lib: introduce the '-V' short option for '--verbose-log'
'--verbose-log' is one of the most useful and thus most frequently
used test options, but due to its length it's a pain to type on the
command line.
Let's introduce the corresponding short option '-V' to save some
keystrokes.
Signed-off-by: SZEDER Gábor <szeder.dev@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Ramsay Jones [Sat, 27 Oct 2018 01:53:57 +0000 (02:53 +0100)]
commit-reach.h: add missing declarations (hdr-check)
Add the necessary #includes and forward declarations to allow the header
file to pass the 'hdr-check' target.
Note that, since this header includes the commit-slab implementation
header file (indirectly via commit-slab.h), some of the commit-slab
inline functions (e.g contains_cache_at_peek()) will not compile without
the complete type of 'struct commit'. Hence, we replace the forward
declaration of 'struct commit' with the an #include of the 'commit.h'
header file.
It is possible, using the 'commit-slab-{decl,impl}.h' files, to avoid
this inclusion of the 'commit.h' header. Commit
a9f1f1f9f8 ("commit-slab.h:
code split", 2018-05-19) separated the commit-slab interface from its
implementation, to allow for the definition of a public commit-slab data
structure. This enabled us to avoid including the commit-slab implementation
in a header file, which could result in the replication of the commit-slab
functions in each compilation unit in which it was included.
Indeed, if you compile with optimizations disabled, then run this script:
$ cat -n dup-static.sh
1 #!/bin/sh
2
3 nm $1 | grep ' t ' | cut -d' ' -f3 | sort | uniq -c |
4 sort -rn | grep -v ' 1'
$
$ ./dup-static.sh git | grep contains
24 init_contains_cache_with_stride
24 init_contains_cache
24 contains_cache_peek
24 contains_cache_at_peek
24 contains_cache_at
24 clear_contains_cache
$
you will find 24 copies of the commit-slab routines for the contains_cache.
Of course, when you enable optimizations again, these duplicate static
functions (mostly) disappear. Compiling with gcc at -O2, leaves two static
functions, thus:
$ nm commit-reach.o | grep contains_cache
0000000000000870 t contains_cache_at_peek.isra.1.constprop.6
$ nm ref-filter.o | grep contains_cache
00000000000002b0 t clear_contains_cache.isra.14
$
However, using a shared 'contains_cache' would result in all six of the
above functions as external public functions in the git binary. At present,
only three of these functions are actually called, so the trade-off
seems to favour letting the compiler inline the commit-slab functions.
Signed-off-by: Ramsay Jones <ramsay@ramsayjones.plus.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Ramsay Jones [Sat, 27 Oct 2018 01:52:05 +0000 (02:52 +0100)]
ewok_rlw.h: add missing 'inline' to function definition
The 'ewok_rlw.h' header file contains the rlw_get_run_bit() function
definition, which is marked as 'static' but not 'inline'. At least when
compiled by gcc, with the default -O2 optimization level, the function
is actually inlined and leaves no static version in the ewah_bitmap.o
and ewah_rlw.o object files. Despite this, add the missing 'inline'
keyword to better describe the intended behaviour.
Signed-off-by: Ramsay Jones <ramsay@ramsayjones.plus.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Ramsay Jones [Sat, 27 Oct 2018 01:50:02 +0000 (02:50 +0100)]
fetch-object.h: add missing declaration (hdr-check)
Signed-off-by: Ramsay Jones <ramsay@ramsayjones.plus.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Johannes Sixt [Sat, 27 Oct 2018 08:08:01 +0000 (10:08 +0200)]
t3404-rebase-interactive: test abbreviated commands
Make sure that each short command is tested at least once. To
not exacerbate the runtime of the test script, do not add new
tests, but modify existing ones according to these criteria:
- The test does not have a prerequisite.
- The 'git rebase' command is not guarded by test_must_fail.
The pick commands are optional in the FAKE_LINES variable, but
when used, they do end up in the insn sheet. Test them, too.
Signed-off-by: Johannes Sixt <j6t@kdbg.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Carlo Marcelo Arenas Belón [Thu, 25 Oct 2018 09:38:54 +0000 (02:38 -0700)]
sequencer: cleanup for gcc warning in non developer mode
as shown by:
sequencer.c: In function ‘write_basic_state’:
sequencer.c:2392:37: warning: zero-length gnu_printf format string [-Wformat-zero-length]
write_file(rebase_path_verbose(), "");
where write_file will create an empty file if told to write an empty string
as can be inferred by the previous call
the somehow more convoluted syntax works around the issue by providing a non
empty format string and is already being used for the abort safety file since
1e41229d96 ("sequencer: make sequencer abort safer", 2016-12-07)
Signed-off-by: Carlo Marcelo Arenas Belón <carenas@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Fri, 26 Oct 2018 05:53:16 +0000 (14:53 +0900)]
Sixth batch for 2.20
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Fri, 26 Oct 2018 05:22:15 +0000 (14:22 +0900)]
Merge branch 'js/mingw-default-ident'
The logic to select the default user name and e-mail on Windows has
been improved.
* js/mingw-default-ident:
mingw: use domain information for default email
getpwuid(mingw): provide a better default for the user name
getpwuid(mingw): initialize the structure only once
Junio C Hamano [Fri, 26 Oct 2018 05:22:15 +0000 (14:22 +0900)]
Merge branch 'ld/p4-unshelve'
"git p4 unshelve" improvements.
* ld/p4-unshelve:
git-p4: fully support unshelving changelists
git-p4: unshelve into refs/remotes/p4-unshelved, not refs/remotes/p4/unshelved
git-p4: do not fail in verbose mode for missing 'fileSize' key
Junio C Hamano [Fri, 26 Oct 2018 05:22:14 +0000 (14:22 +0900)]
Merge branch 'du/cherry-is-plumbing'
Doc update to mark "git cherry" as a plumbing command.
* du/cherry-is-plumbing:
doc: move git-cherry to plumbing
Junio C Hamano [Fri, 26 Oct 2018 05:22:14 +0000 (14:22 +0900)]
Merge branch 'ab/gc-doc-update'
The documentation of "git gc" has been updated to mention that it
is no longer limited to "pruning away crufts" but also updates
ancillary files like commit-graph as a part of repository
optimization.
* ab/gc-doc-update:
gc doc: mention the commit-graph in the intro
Junio C Hamano [Fri, 26 Oct 2018 05:22:13 +0000 (14:22 +0900)]
Merge branch 'js/fuzzer'
An experiment to fuzz test a few areas, hopefully we can gain more
coverage to various areas.
* js/fuzzer:
fuzz: add fuzz testing for packfile indices.
fuzz: add basic fuzz testing target.
Junio C Hamano [Fri, 26 Oct 2018 05:22:13 +0000 (14:22 +0900)]
Merge branch 'rv/alias-help'
"git cmd --help" when "cmd" is aliased used to only say "cmd is
aliased to ...". Now it shows that to the standard error stream
and runs "git $cmd --help" where $cmd is the first word of the
alias expansion.
This could be misleading for those who alias a command with options
(e.g. with "[alias] cpn = cherry-pick -n", "git cpn --help" would
show the manual of "cherry-pick", and the reader would not be told
to pay close attention to the part that describes the "--no-commit"
option until closing the pager that showed the contents of the
manual, if the pager is configured to restore the original screen,
or would not be told at all, if the pager simply makes the message
on the standard error scroll away.
* rv/alias-help:
git-help.txt: document "git help cmd" vs "git cmd --help" for aliases
git.c: handle_alias: prepend alias info when first argument is -h
help: redirect to aliased commands for "git cmd --help"
Junio C Hamano [Fri, 26 Oct 2018 05:22:13 +0000 (14:22 +0900)]
Merge branch 'sb/diff-emit-line-ws-markup-cleanup'
Code clean-up.
* sb/diff-emit-line-ws-markup-cleanup:
diff.c: pass sign_index to emit_line_ws_markup
Junio C Hamano [Fri, 26 Oct 2018 05:22:12 +0000 (14:22 +0900)]
Merge branch 'du/get-tar-commit-id-is-plumbing'
Doc update to mark "git get-tar-commit-id" as a plumbing command.
* du/get-tar-commit-id-is-plumbing:
doc: move git-get-tar-commit-id to plumbing
Junio C Hamano [Fri, 26 Oct 2018 05:22:12 +0000 (14:22 +0900)]
Merge branch 'mm/doc-no-dashed-git'
Doc update.
* mm/doc-no-dashed-git:
doc: fix a typo and clarify a sentence
Junio C Hamano [Fri, 26 Oct 2018 05:22:11 +0000 (14:22 +0900)]
Merge branch 'du/rev-parse-is-plumbing'
Doc update.
* du/rev-parse-is-plumbing:
doc: move git-rev-parse from porcelain to plumbing
Junio C Hamano [Fri, 26 Oct 2018 05:22:11 +0000 (14:22 +0900)]
Merge branch 'np/log-graph-octopus-fix'
"git log --graph" showing an octopus merge sometimes miscounted the
number of display columns it is consuming to show the merge and its
parent commits, which has been corrected.
* np/log-graph-octopus-fix:
log: fix coloring of certain octopus merge shapes
Junio C Hamano [Fri, 26 Oct 2018 05:22:10 +0000 (14:22 +0900)]
Merge branch 'sg/split-index-racefix'
The codepath to support the experimental split-index mode had
remaining "racily clean" issues fixed.
* sg/split-index-racefix:
split-index: BUG() when cache entry refers to non-existing shared entry
split-index: smudge and add racily clean cache entries to split index
split-index: don't compare cached data of entries already marked for split index
split-index: count the number of deleted entries
t1700-split-index: date back files to avoid racy situations
split-index: add tests to demonstrate the racy split index problem
t1700-split-index: document why FSMONITOR is disabled in this test script
Junio C Hamano [Fri, 26 Oct 2018 05:22:10 +0000 (14:22 +0900)]
Merge branch 'ds/coverage-diff'
The result of coverage test can be combined with "git blame" to
check the test coverage of code introduced recently with a new
'coverage-diff' tool (in contrib/).
* ds/coverage-diff:
contrib: add coverage-diff script
Junio C Hamano [Fri, 26 Oct 2018 05:22:09 +0000 (14:22 +0900)]
Merge branch 'bc/editorconfig'
To help developers, an EditorConfig file that attempts to follow
the project convention has been added.
* bc/editorconfig:
editorconfig: indicate settings should be kept in sync
editorconfig: provide editor settings for Git developers
Junio C Hamano [Fri, 26 Oct 2018 05:22:09 +0000 (14:22 +0900)]
Merge branch 'ma/t7005-bash-workaround'
Test fix.
* ma/t7005-bash-workaround:
t7005-editor: quote filename to fix whitespace-issue
Junio C Hamano [Fri, 26 Oct 2018 05:22:08 +0000 (14:22 +0900)]
Merge branch 'rs/subtree-fixes'
Various subtree fixes.
* rs/subtree-fixes:
subtree: performance improvement for finding unexpected parent commits
subtree: improve decision on merges kept in split
subtree: use commits before rejoins for splits
subtree: make --ignore-joins pay attention to adds
subtree: refactor split of a commit into standalone method
Sebastian Staudt [Thu, 25 Oct 2018 17:41:45 +0000 (19:41 +0200)]
travis-ci: no longer use containers
Travis CI will soon deprecate the container-based infrastructure
enabled by `sudo: false` in
ce59dffb34190e780be2fa9f449f842cadee9753.
More info:
https://blog.travis-ci.com/2018-10-04-combining-linux-infrastructures
Signed-off-by: Sebastian Staudt <koraktor@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Torsten Bögershausen [Thu, 25 Oct 2018 16:13:08 +0000 (18:13 +0200)]
path.c: char is not (always) signed
If a "char" in C is signed or unsigned is not specified, because it is
out of tradition "implementation dependent".
Therefore constructs like "if (name[i] < 0)" are not portable,
use "if (name[i] & 0x80)" instead.
Detected by "gcc (Raspbian 6.3.0-18+rpi1+deb9u1) 6.3.0
20170516" when
setting
DEVELOPER = 1
DEVOPTS = extra-all
Signed-off-by: Torsten Bögershausen <tboegi@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Thu, 25 Oct 2018 03:22:22 +0000 (12:22 +0900)]
http: give curl version warnings consistently
When a requested feature cannot be activated because the version of
cURL library used to build Git with is too old, most of the codepaths
give a warning like "$Feature is not supported with cURL < $Version",
marked for l10n. A few of them, however, did not follow that pattern
and said things like "$Feature is not activated, your curl version is
too old (>= $Version)", and without marking them for l10n.
Update these to match the style of the majority of warnings and mark
them for l10n.
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Johannes Schindelin [Thu, 25 Oct 2018 18:53:56 +0000 (11:53 -0700)]
http: when using Secure Channel, ignore sslCAInfo by default
As of cURL v7.60.0, the Secure Channel backend can use the certificate
bundle provided via `http.sslCAInfo`, but that would override the
Windows Certificate Store. Since this is not desirable by default, let's
tell Git to not ask cURL to use that bundle by default when the `schannel`
backend was configured via `http.sslBackend`, unless
`http.schannelUseSSLCAInfo` overrides this behavior.
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Brendan Forster [Thu, 25 Oct 2018 18:53:55 +0000 (11:53 -0700)]
http: add support for disabling SSL revocation checks in cURL
This adds support for a new http.schannelCheckRevoke config value.
This config value is only used if http.sslBackend is set to "schannel",
which forces cURL to use the Windows Certificate Store when validating
server certificates associated with a remote server.
This config value should only be set to "false" if you are in an
environment where revocation checks are blocked by the network, with
no alternative options.
This is only supported in cURL 7.44 or later.
Note: originally, we wanted to call the config setting
`http.schannel.checkRevoke`. This, however, does not work: the `http.*`
config settings can be limited to specific URLs via `http.<url>.*`
(and this feature would mistake `schannel` for a URL).
Helped by Agustín Martín Barbero.
Signed-off-by: Brendan Forster <github@brendanforster.com>
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Jeff King [Wed, 24 Oct 2018 07:27:52 +0000 (03:27 -0400)]
upload-pack: fix broken if/else chain in config callback
The upload_pack_config() callback uses an if/else chain
like:
if (!strcmp(var, "a"))
...
else if (!strcmp(var, "b"))
...
etc
This works as long as the conditions are mutually exclusive,
but one of them is not.
20b20a22f8 (upload-pack: provide a
hook for running pack-objects, 2016-05-18) added:
else if (current_config_scope() != CONFIG_SCOPE_REPO) {
... check some more options ...
}
That was fine in that commit, because it came at the end of
the chain. But later,
10ac85c785 (upload-pack: add object
filtering for partial clone, 2017-12-08) did this:
else if (current_config_scope() != CONFIG_SCOPE_REPO) {
... check some more options ...
} else if (!strcmp("uploadpack.allowfilter", var))
...
We'd always check the scope condition first, meaning we'd
_only_ respect allowfilter when it's in the repo config. You
can see this with:
git -c uploadpack.allowfilter=true upload-pack . | head -1
which will not advertise the filter capability (but will
after this patch). We never noticed because:
- our tests always set it in the repo config
- in protocol v2, we use a different code path that
actually calls repo_config_get_bool() separately, so
that _does_ work. Real-world people experimenting with
this may be using v2.
The more recent uploadpack.allowrefinwant option is in the
same boat.
There are a few possible fixes:
1. Bump the scope conditional back to the bottom of the
chain. But that just means somebody else is likely to
make the same mistake later.
2. Make the conditional more like the others. I.e.:
else if (!current_config_scope() != CONFIG_SCOPE_REPO &&
!strcmp(var, "uploadpack.notallowedinrepo"))
This works, but the idea of the original structure was
that we may grow multiple sensitive options like this.
3. Pull it out of the chain entirely. The chain mostly
serves to avoid extra strcmp() calls after we've found
a match. But it's not worth caring about those. In the
worst case, when there isn't a match, we're already
hitting every strcmp (and this happens regularly for
stuff like "core.bare", etc).
This patch does (3).
Signed-off-by: Jeff King <peff@peff.net>
Reviewed-by: Josh Steadmon <steadmon@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>