Junio C Hamano [Fri, 1 Jun 2018 06:06:40 +0000 (15:06 +0900)]
Merge branch 'js/rebase-recreate-merge'
Hotfixes.
* js/rebase-recreate-merge:
sequencer: ensure labels that are object IDs are rewritten
git-rebase--interactive: fix copy-paste mistake
Junio C Hamano [Fri, 1 Jun 2018 06:06:39 +0000 (15:06 +0900)]
Merge branch 'rd/tag-doc-lightweight'
Docfix.
* rd/tag-doc-lightweight:
tag: clarify in the doc that a tag can refer to a non-commit object
Junio C Hamano [Fri, 1 Jun 2018 06:06:39 +0000 (15:06 +0900)]
Merge branch 'rd/doc-options-placeholder'
Docfix.
* rd/doc-options-placeholder:
Use proper syntax for replaceables in command docs
Junio C Hamano [Fri, 1 Jun 2018 06:06:39 +0000 (15:06 +0900)]
Merge branch 'en/rev-parse-invalid-range'
"git rev-parse Y..." etc. misbehaved when given endpoints were
not committishes.
* en/rev-parse-invalid-range:
rev-parse: check lookup'ed commit references for NULL
Junio C Hamano [Fri, 1 Jun 2018 06:06:38 +0000 (15:06 +0900)]
Merge branch 'ld/p4-unshelve'
"git p4" learned to "unshelve" shelved commit from P4.
* ld/p4-unshelve:
git-p4: add unshelve command
Junio C Hamano [Fri, 1 Jun 2018 06:06:38 +0000 (15:06 +0900)]
Merge branch 'nd/use-opt-int-set-f'
Code simplification.
* nd/use-opt-int-set-f:
Use OPT_SET_INT_F() for cmdline option specification
Junio C Hamano [Fri, 1 Jun 2018 06:06:38 +0000 (15:06 +0900)]
Merge branch 'pa/import-tars-long-names'
The import-tars script (in contrib/) has been taught to handle
tarballs with overly long paths that use PAX extended headers.
* pa/import-tars-long-names:
import-tars: read overlong names from pax extended header
Junio C Hamano [Fri, 1 Jun 2018 06:06:37 +0000 (15:06 +0900)]
Merge branch 'nd/command-list'
The list of commands with their various attributes were spread
across a few places in the build procedure, but it now is getting a
bit more consolidated to allow more automation.
* nd/command-list:
completion: allow to customize the completable command list
completion: add and use --list-cmds=alias
completion: add and use --list-cmds=nohelpers
Move declaration for alias.c to alias.h
completion: reduce completable command list
completion: let git provide the completable command list
command-list.txt: documentation and guide line
help: use command-list.txt for the source of guides
help: add "-a --verbose" to list all commands with synopsis
git: support --list-cmds=list-<category>
completion: implement and use --list-cmds=main,others
git --list-cmds: collect command list in a string_list
git.c: convert --list-* to --list-cmds=*
Remove common-cmds.h
help: use command-list.h for common command list
generate-cmds.sh: export all commands to command-list.h
generate-cmds.sh: factor out synopsis extract code
Elijah Newren [Thu, 31 May 2018 03:24:14 +0000 (20:24 -0700)]
RelNotes: remove duplicate release note
In the 2.18 cycle, directory rename detection was merged, then reverted,
then reworked in such a way to fix another prominent bug in addition to
the original problem causing it to be reverted. When the reworked series
was merged, we ended up with two nearly duplicate release notes. Remove
the second copy, but preserve the information about the extra bug fix.
Signed-off-by: Elijah Newren <newren@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Wed, 30 May 2018 12:51:57 +0000 (21:51 +0900)]
Git 2.18-rc0
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Wed, 30 May 2018 12:51:29 +0000 (21:51 +0900)]
Merge branch 'bw/remote-curl-compressed-responses'
Our HTTP client code used to advertise that we accept gzip encoding
from the other side; instead, just let cURL library to advertise
and negotiate the best one.
* bw/remote-curl-compressed-responses:
remote-curl: accept compressed responses with protocol v2
remote-curl: accept all encodings supported by curl
Junio C Hamano [Wed, 30 May 2018 12:51:29 +0000 (21:51 +0900)]
Merge branch 'ma/unpack-trees-free-msgs'
Leak plugging.
* ma/unpack-trees-free-msgs:
unpack_trees_options: free messages when done
argv-array: return the pushed string from argv_push*()
merge-recursive: provide pair of `unpack_trees_{start,finish}()`
merge: setup `opts` later in `checkout_fast_forward()`
Junio C Hamano [Wed, 30 May 2018 12:51:28 +0000 (21:51 +0900)]
Merge branch 'bc/hash-independent-tests'
Many tests hardcode the raw object names, which would change once
we migrate away from SHA-1. While some of them must test against
exact object names, most of them do not have to use hardcoded
constants in the test. The latter kind of tests have been updated
to test the moral equivalent of the original without hardcoding the
actual object names.
* bc/hash-independent-tests: (28 commits)
t5300: abstract away SHA-1-specific constants
t4208: abstract away SHA-1-specific constants
t4045: abstract away SHA-1-specific constants
t4042: abstract away SHA-1-specific constants
t4205: sort log output in a hash-independent way
t/lib-diff-alternative: abstract away SHA-1-specific constants
t4030: abstract away SHA-1-specific constants
t4029: abstract away SHA-1-specific constants
t4029: fix test indentation
t4022: abstract away SHA-1-specific constants
t4020: abstract away SHA-1-specific constants
t4014: abstract away SHA-1-specific constants
t4008: abstract away SHA-1-specific constants
t4007: abstract away SHA-1-specific constants
t3905: abstract away SHA-1-specific constants
t3702: abstract away SHA-1-specific constants
t3103: abstract away SHA-1-specific constants
t2203: abstract away SHA-1-specific constants
t: skip pack tests if not using SHA-1
t4044: skip test if not using SHA-1
...
Junio C Hamano [Wed, 30 May 2018 12:51:28 +0000 (21:51 +0900)]
Merge branch 'ma/regex-no-regfree-after-comp-fail'
We used to call regfree() after regcomp() failed in some codepaths,
which have been corrected.
* ma/regex-no-regfree-after-comp-fail:
regex: do not call `regfree()` if compilation fails
Junio C Hamano [Wed, 30 May 2018 12:51:28 +0000 (21:51 +0900)]
Merge branch 'ma/config-store-data-clear'
Leak plugging.
* ma/config-store-data-clear:
config: let `config_store_data_clear()` handle `key`
config: let `config_store_data_clear()` handle `value_regex`
config: free resources of `struct config_store_data`
Junio C Hamano [Wed, 30 May 2018 12:51:27 +0000 (21:51 +0900)]
Merge branch 'jk/snprintf-truncation'
Avoid unchecked snprintf() to make future code auditing easier.
* jk/snprintf-truncation:
fmt_with_err: add a comment that truncation is OK
shorten_unambiguous_ref: use xsnprintf
fsmonitor: use internal argv_array of struct child_process
log_write_email_headers: use strbufs
http: use strbufs instead of fixed buffers
Junio C Hamano [Wed, 30 May 2018 12:51:27 +0000 (21:51 +0900)]
Merge branch 'jk/config-blob-sans-repo'
Error codepath fix.
* jk/config-blob-sans-repo:
config: die when --blob is used outside a repository
Junio C Hamano [Wed, 30 May 2018 12:51:27 +0000 (21:51 +0900)]
Merge branch 'sb/submodule-merge-in-merge-recursive'
By code restructuring of submodule merge in merge-recursive,
informational messages from the codepath are now given using the
same mechanism as other output, and honor the merge.verbosity
configuration. The code also learned to give a few new messages
when a submodule three-way merge resolves cleanly when one side
records a descendant of the commit chosen by the other side.
* sb/submodule-merge-in-merge-recursive:
merge-recursive: give notice when submodule commit gets fast-forwarded
merge-recursive: i18n submodule merge output and respect verbosity
submodule.c: move submodule merging to merge-recursive.c
Junio C Hamano [Wed, 30 May 2018 12:51:26 +0000 (21:51 +0900)]
Merge branch 'js/empty-config-section-fix'
Error codepath fix.
* js/empty-config-section-fix:
config: a user-provided invalid section is not a BUG
Junio C Hamano [Wed, 30 May 2018 12:51:26 +0000 (21:51 +0900)]
Merge branch 'bw/ref-prefix-for-configured-refspec'
"git fetch $there $refspec" that talks over protocol v2 can take
advantage of server-side ref filtering; the code has been extended
so that this mechanism triggers also when fetching with configured
refspec.
* bw/ref-prefix-for-configured-refspec: (38 commits)
fetch: generate ref-prefixes when using a configured refspec
refspec: consolidate ref-prefix generation logic
submodule: convert push_unpushed_submodules to take a struct refspec
remote: convert check_push_refs to take a struct refspec
remote: convert match_push_refs to take a struct refspec
http-push: store refspecs in a struct refspec
transport: remove transport_verify_remote_names
send-pack: store refspecs in a struct refspec
transport: convert transport_push to take a struct refspec
push: convert to use struct refspec
push: check for errors earlier
remote: convert match_explicit_refs to take a struct refspec
remote: convert get_ref_match to take a struct refspec
remote: convert query_refspecs to take a struct refspec
remote: convert apply_refspecs to take a struct refspec
remote: convert get_stale_heads to take a struct refspec
fetch: convert prune_refs to take a struct refspec
fetch: convert get_ref_map to take a struct refspec
fetch: convert do_fetch to take a struct refspec
refspec: remove the deprecated functions
...
Junio C Hamano [Wed, 30 May 2018 12:51:26 +0000 (21:51 +0900)]
Merge branch 'sb/grep-die-on-unreadable-index'
Error behaviour of "git grep" when it cannot read the index was
inconsistent with other commands that uses the index, which has
been corrected to error out early.
* sb/grep-die-on-unreadable-index:
grep: handle corrupt index files early
Junio C Hamano [Wed, 30 May 2018 05:10:34 +0000 (14:10 +0900)]
The seventh batch for 2.18
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Wed, 30 May 2018 05:04:12 +0000 (14:04 +0900)]
Merge branch 'sb/submodule-update-try-harder'
"git submodule update" attempts two different kinds of "git fetch"
against the upstream repository to grab a commit bound at the
submodule's path, but it incorrectly gave up if the first kind
(i.e. a normal fetch) failed, making the second "last resort" one
(i.e. fetching an exact commit object by object name) ineffective.
This has been corrected.
* sb/submodule-update-try-harder:
git-submodule.sh: try harder to fetch a submodule
Junio C Hamano [Wed, 30 May 2018 05:04:11 +0000 (14:04 +0900)]
Merge branch 'lm/credential-netrc'
Update credential-netrc helper (in contrib/) to allow customizing
the GPG used to decrypt the encrypted .netrc file.
* lm/credential-netrc:
git-credential-netrc: accept gpg option
git-credential-netrc: adapt to test framework for git
Junio C Hamano [Wed, 30 May 2018 05:04:11 +0000 (14:04 +0900)]
Merge branch 'ab/get-short-oid'
When a short hexadecimal string is used to name an object but there
are multiple objects that share the string as the prefix of their
names, the code lists these ambiguous candidates in a help message.
These object names are now sorted according to their types for
easier eyeballing.
* ab/get-short-oid:
get_short_oid: sort ambiguous objects by type, then SHA-1
sha1-name.c: move around the collect_ambiguous() function
git-p4: change "commitish" typo to "committish"
sha1-array.h: align function arguments
sha1-name.c: remove stray newline
Junio C Hamano [Wed, 30 May 2018 05:04:10 +0000 (14:04 +0900)]
Merge branch 'jt/partial-clone-proto-v2'
Transfer protocol v2 learned to support the partial clone.
* jt/partial-clone-proto-v2:
{fetch,upload}-pack: support filter in protocol v2
upload-pack: read config when serving protocol v2
upload-pack: fix error message typo
Junio C Hamano [Wed, 30 May 2018 05:04:10 +0000 (14:04 +0900)]
Merge branch 'bc/object-id'
Conversion from uchar[20] to struct object_id continues.
* bc/object-id: (42 commits)
merge-one-file: compute empty blob object ID
add--interactive: compute the empty tree value
Update shell scripts to compute empty tree object ID
sha1_file: only expose empty object constants through git_hash_algo
dir: use the_hash_algo for empty blob object ID
sequencer: use the_hash_algo for empty tree object ID
cache-tree: use is_empty_tree_oid
sha1_file: convert cached object code to struct object_id
builtin/reset: convert use of EMPTY_TREE_SHA1_BIN
builtin/receive-pack: convert one use of EMPTY_TREE_SHA1_HEX
wt-status: convert two uses of EMPTY_TREE_SHA1_HEX
submodule: convert several uses of EMPTY_TREE_SHA1_HEX
sequencer: convert one use of EMPTY_TREE_SHA1_HEX
merge: convert empty tree constant to the_hash_algo
builtin/merge: switch tree functions to use object_id
builtin/am: convert uses of EMPTY_TREE_SHA1_BIN to the_hash_algo
sha1-file: add functions for hex empty tree and blob OIDs
builtin/receive-pack: avoid hard-coded constants for push certs
diff: specify abbreviation size in terms of the_hash_algo
upload-pack: replace use of several hard-coded constants
...
Junio C Hamano [Wed, 30 May 2018 05:04:09 +0000 (14:04 +0900)]
Merge branch 'sb/blame-color'
"git blame" learns to unhighlight uninteresting metadata from the
originating commit on lines that are the same as the previous one,
and also paint lines in different colors depending on the age of
the commit.
* sb/blame-color:
builtin/blame: add new coloring scheme config
builtin/blame: highlight recently changed lines
builtin/blame: dim uninteresting metadata lines
Junio C Hamano [Wed, 30 May 2018 05:04:09 +0000 (14:04 +0900)]
Merge branch 'cf/submodule-progress-dissociate'
"git submodule update" and "git submodule add" supported the
"--reference" option to borrow objects from a neighbouring local
repository like "git clone" does, but lacked the more recent
invention "--dissociate". Also "git submodule add" has been taught
to take the "--progress" option.
* cf/submodule-progress-dissociate:
submodule: add --dissociate option to add/update commands
submodule: add --progress option to add command
submodule: clean up substitutions in script
Junio C Hamano [Wed, 30 May 2018 05:04:08 +0000 (14:04 +0900)]
Merge branch 'sg/complete-paths'
Command line completion (in contrib/) learned to complete pathnames
for various commands better.
* sg/complete-paths:
t9902-completion: exercise __git_complete_index_file() directly
completion: don't return with error from __gitcomp_file_direct()
completion: fill COMPREPLY directly when completing paths
completion: improve handling quoted paths in 'git ls-files's output
completion: remove repeated dirnames with 'awk' during path completion
t9902-completion: ignore COMPREPLY element order in some tests
completion: use 'awk' to strip trailing path components
completion: let 'ls-files' and 'diff-index' filter matching paths
completion: improve handling quoted paths on the command line
completion: support completing non-ASCII pathnames
completion: simplify prefix path component handling during path completion
completion: move __git_complete_index_file() next to its helpers
t9902-completion: add tests demonstrating issues with quoted pathnames
Junio C Hamano [Wed, 30 May 2018 05:04:08 +0000 (14:04 +0900)]
Merge branch 'nd/travis-gcc-8'
Developer support. Use newer GCC on one of the builds done at
TravisCI.org to get more warnings and errors diagnosed.
* nd/travis-gcc-8:
travis-ci: run gcc-8 on linux-gcc jobs
Junio C Hamano [Wed, 30 May 2018 05:04:08 +0000 (14:04 +0900)]
Merge branch 'nd/pack-struct-commit'
Memory optimization.
* nd/pack-struct-commit:
commit.h: rearrange 'index' to shrink struct commit
Junio C Hamano [Wed, 30 May 2018 05:04:08 +0000 (14:04 +0900)]
Merge branch 'ma/create-pseudoref-with-null-old-oid'
"git update-ref A B" is supposed to ensure that ref A does not yet
exist when B is a NULL OID, but this check was not done correctly
for pseudo-refs outside refs/ hierarchy, e.g. MERGE_HEAD.
* ma/create-pseudoref-with-null-old-oid:
refs: handle zero oid for pseudorefs
t1400: add tests around adding/deleting pseudorefs
refs.c: refer to "object ID", not "sha1", in error messages
Junio C Hamano [Wed, 30 May 2018 05:04:07 +0000 (14:04 +0900)]
Merge branch 'jk/unavailable-can-be-missing'
Code clean-up to turn history traversal more robust in a
semi-corrupt repository.
* jk/unavailable-can-be-missing:
mark_parents_uninteresting(): avoid most allocation
mark_parents_uninteresting(): replace list with stack
mark_parents_uninteresting(): drop missing object check
mark_tree_contents_uninteresting(): drop missing object check
Junio C Hamano [Wed, 30 May 2018 05:04:07 +0000 (14:04 +0900)]
Merge branch 'bp/status-rename-config'
"git status" learned to honor a new status.renames configuration to
skip rename detection, which could be useful for those who want to
do so without disabling the default rename detection done by the
"git diff" command.
* bp/status-rename-config:
add status config and command line options for rename detection
Junio C Hamano [Wed, 30 May 2018 05:04:07 +0000 (14:04 +0900)]
Merge branch 'js/use-bug-macro'
Developer support update, by using BUG() macro instead of die() to
mark codepaths that should not happen more clearly.
* js/use-bug-macro:
BUG_exit_code: fix sparse "symbol not declared" warning
Convert remaining die*(BUG) messages
Replace all die("BUG: ...") calls by BUG() ones
run-command: use BUG() to report bugs, not die()
test-tool: help verifying BUG() code paths
Junio C Hamano [Wed, 30 May 2018 05:04:06 +0000 (14:04 +0900)]
Merge branch 'rs/no-null-ptr-arith-in-fast-export'
Code clean-up to avoid non-standard-conformant pointer arithmetic.
* rs/no-null-ptr-arith-in-fast-export:
fast-export: avoid NULL pointer arithmetic
Junio C Hamano [Wed, 30 May 2018 05:04:05 +0000 (14:04 +0900)]
Merge branch 'nd/repo-clear-keep-the-index'
the_repository->index is not a allocated piece of memory but
repo_clear() indiscriminately attempted to free(3) it, which has
been corrected.
* nd/repo-clear-keep-the-index:
repository: fix free problem with repo_clear(the_repository)
Junio C Hamano [Wed, 30 May 2018 05:04:05 +0000 (14:04 +0900)]
Merge branch 'ma/lockfile-cleanup'
Code clean-up to adjust to a more recent lockfile API convention that
allows lockfile instances kept on the stack.
* ma/lockfile-cleanup:
lock_file: move static locks into functions
lock_file: make function-local locks non-static
refs.c: do not die if locking fails in `delete_pseudoref()`
refs.c: do not die if locking fails in `write_pseudoref()`
t/helper/test-write-cache: clean up lock-handling
Junio C Hamano [Wed, 30 May 2018 05:04:04 +0000 (14:04 +0900)]
Merge branch 'sg/t6500-no-redirect-of-stdin'
Test cleanup.
* sg/t6500-no-redirect-of-stdin:
t6050-replace: don't disable stdin for the whole test script
Junio C Hamano [Wed, 30 May 2018 05:04:04 +0000 (14:04 +0900)]
Merge branch 'bp/merge-rename-config'
With merge.renames configuration set to false, the recursive merge
strategy can be told not to spend cycles trying to find renamed
paths and merge them accordingly.
* bp/merge-rename-config:
merge: pass aggressive when rename detection is turned off
merge: add merge.renames config setting
merge: update documentation for {merge,diff}.renameLimit
Junio C Hamano [Wed, 30 May 2018 05:04:04 +0000 (14:04 +0900)]
Merge branch 'js/sequencer-and-root-commits'
The implementation of "git rebase -i --root" has been updated to use
the sequencer machinery more.
* js/sequencer-and-root-commits:
rebase --rebase-merges: root commits can be cousins, too
rebase --rebase-merges: a "merge" into a new root is a fast-forward
sequencer: allow introducing new root commits
rebase -i --root: let the sequencer handle even the initial part
sequencer: learn about the special "fake root commit" handling
sequencer: extract helper to update active_cache_tree
Junio C Hamano [Wed, 30 May 2018 05:04:03 +0000 (14:04 +0900)]
Merge branch 'dd/send-email-reedit'
"git send-email" can sometimes offer confirmation dialog "Send this
email?" with choices 'Yes', 'No', 'Quit', and 'All'. A new action
'Edit' has been added to this dialog's choice.
* dd/send-email-reedit:
git-send-email: allow re-editing of message
brian m. carlson [Tue, 29 May 2018 16:32:36 +0000 (16:32 +0000)]
sequencer: ensure labels that are object IDs are rewritten
When writing the todo script for --rebase-merges, we try to find a label
for certain commits. If the label ends up being a valid object ID, such
as when we merge a detached commit, we want to rewrite it so it is no
longer a valid object ID.
However, the code path that does this checks for its length to be
equivalent to GIT_SHA1_RAWSZ, which isn't correct, since what we are
reading is a hex object ID. Instead, check for the length being
equivalent to that of a hex object ID. Use the_hash_algo so this code
works regardless of the hash size.
Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Tue, 29 May 2018 08:09:58 +0000 (17:09 +0900)]
Sync with Git 2.17.1
* maint: (25 commits)
Git 2.17.1
Git 2.16.4
Git 2.15.2
Git 2.14.4
Git 2.13.7
fsck: complain when .gitmodules is a symlink
index-pack: check .gitmodules files with --strict
unpack-objects: call fsck_finish() after fscking objects
fsck: call fsck_finish() after fscking objects
fsck: check .gitmodules content
fsck: handle promisor objects in .gitmodules check
fsck: detect gitmodules files
fsck: actually fsck blob data
fsck: simplify ".git" check
index-pack: make fsck error message more specific
verify_path: disallow symlinks in .gitmodules
update-index: stat updated files earlier
verify_dotfile: mention case-insensitivity in comment
verify_path: drop clever fallthrough
skip_prefix: add case-insensitive variant
...
Robert P. J. Day [Fri, 25 May 2018 09:45:09 +0000 (05:45 -0400)]
tag: clarify in the doc that a tag can refer to a non-commit object
Reword "man git-tag" to clarify that a tag can refer directly to an
arbitrary object, not just a commit object.
Signed-off-by: Robert P. J. Day <rpjday@crashcourse.ca>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Orgad Shaneh [Sun, 27 May 2018 06:51:27 +0000 (09:51 +0300)]
git-rebase--interactive: fix copy-paste mistake
exec argument is a command, not a commit.
Signed-off-by: Orgad Shaneh <orgads@gmail.com>
Acked-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Robert P. J. Day [Thu, 24 May 2018 20:11:39 +0000 (16:11 -0400)]
Use proper syntax for replaceables in command docs
The standard for command documentation synopses appears to be:
[...] means optional
<...> means replaceable
[<...>] means both optional and replaceable
So fix a number of doc pages that use incorrect variations of the
above.
Signed-off-by: Robert P. J. Day <rpjday@crashcourse.ca>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Elijah Newren [Thu, 24 May 2018 06:27:33 +0000 (23:27 -0700)]
rev-parse: check lookup'ed commit references for NULL
Commits
2122f8b963d4 ("rev-parse: Add support for the ^! and ^@ syntax",
2008-07-26) and
3dd4e7320d ("Teach rev-parse the ... syntax.", 2006-07-04)
taught rev-parse new syntax, and used lookup_commit_reference() as part of
their logic. Neither usage checked the returned commit to see if it was
non-NULL before using it. Check for NULL and ensure an appropriate error
is reported to the user.
Reported by Florian Weimer and Todd Zullinger.
Helped-by: Jeff King <peff@peff.net>
Signed-off-by: Elijah Newren <newren@gmail.com>
Reviewed-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Nguyễn Thái Ngọc Duy [Sun, 20 May 2018 15:42:58 +0000 (17:42 +0200)]
Use OPT_SET_INT_F() for cmdline option specification
The only thing these commands need is extra parseopt flag which can be
passed in by OPT_SET_INT_F() and it is a bit more compact than full
struct initialization.
Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Luke Diamand [Wed, 23 May 2018 22:20:26 +0000 (23:20 +0100)]
git-p4: add unshelve command
This can be used to "unshelve" a shelved P4 commit into
a git commit.
For example:
$ git p4 unshelve 12345
The resulting commit ends up in the branch:
refs/remotes/p4/unshelved/12345
If that branch already exists, it is renamed - for example
the above branch would be saved as p4/unshelved/12345.1.
git-p4 checks that the shelved changelist is based on files
which are at the same Perforce revision as the origin branch
being used for the unshelve (HEAD by default). If they are not,
it will refuse to unshelve. This is to ensure that the unshelved
change does not contain other changes mixed-in.
The reference branch can be changed manually with the "--origin"
option.
The change adds a new Unshelve command class. This just runs the
existing P4Sync code tweaked to handle a shelved changelist.
Signed-off-by: Luke Diamand <luke@diamand.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Pedro Alvarez Piedehierro [Wed, 23 May 2018 22:54:17 +0000 (23:54 +0100)]
import-tars: read overlong names from pax extended header
Importing gcc tarballs[1] with import-tars script (in contrib) fails
when hitting a pax extended header.
Make sure we always read the extended attributes from the pax entries,
and store the 'path' value if found to be used in the next ustar entry.
The code to parse pax extended headers was written consulting the Pax
Pax Interchange Format documentation [2].
[1] http://ftp.gnu.org/gnu/gcc/gcc-7.3.0/gcc-7.3.0.tar.xz
[2] https://www.freebsd.org/cgi/man.cgi?manpath=FreeBSD+8-current&query=tar&sektion=5
Signed-off-by: Pedro Alvarez <palvarez89@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Wed, 23 May 2018 05:45:34 +0000 (14:45 +0900)]
The sixth batch for 2.18
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Wed, 23 May 2018 05:38:25 +0000 (14:38 +0900)]
Merge branch 'fg/completion-external'
The command line completion mechanism (in contrib/) learned to load
custom completion file for "git $command" where $command is a
custom "git-$command" that the end user has on the $PATH when using
newer version of bash.
* fg/completion-external:
completion: load completion file for external subcommand
Junio C Hamano [Wed, 23 May 2018 05:38:25 +0000 (14:38 +0900)]
Merge branch 'bc/asciidoctor-tab-width'
Asciidoctor gives a reasonable imitation for AsciiDoc, but does not
render illustration in a literal block correctly when indented with
HT by default. The problem is fixed by forcing 8-space tabs.
* bc/asciidoctor-tab-width:
Documentation: render revisions correctly under Asciidoctor
Documentation: use 8-space tabs with Asciidoctor
Junio C Hamano [Wed, 23 May 2018 05:38:24 +0000 (14:38 +0900)]
Merge branch 'nd/pack-unreachable-objects-doc'
Doc update.
* nd/pack-unreachable-objects-doc:
pack-objects: validation and documentation about unreachable options
Junio C Hamano [Wed, 23 May 2018 05:38:24 +0000 (14:38 +0900)]
Merge branch 'nd/completion-aliasfiletype-typofix'
Typofix.
* nd/completion-aliasfiletype-typofix:
completion: fix misspelled config key aliasesfiletype
Junio C Hamano [Wed, 23 May 2018 05:38:23 +0000 (14:38 +0900)]
Merge branch 'em/status-rename-config'
"git status" learned to pay attention to UI related diff
configuration variables such as diff.renames.
* em/status-rename-config:
wt-status: use settings from git_diff_ui_config
Junio C Hamano [Wed, 23 May 2018 05:38:23 +0000 (14:38 +0900)]
Merge branch 'cc/perf-bisect'
Performance test updates.
* cc/perf-bisect:
perf/bisect_run_script: disable codespeed
Junio C Hamano [Wed, 23 May 2018 05:38:23 +0000 (14:38 +0900)]
Merge branch 'ah/misc-doc-updates'
Misc doc fixes.
* ah/misc-doc-updates:
doc: normalize [--options] to [options] in git-diff
doc: add note about shell quoting to revision.txt
git-svn: remove ''--add-author-from' for 'commit-diff'
doc: add '-d' and '-o' for 'git push'
doc: clarify ignore rules for git ls-files
doc: align 'diff --no-index' in text and synopsis
doc: improve formatting in githooks.txt
Junio C Hamano [Wed, 23 May 2018 05:38:22 +0000 (14:38 +0900)]
Merge branch 'bp/test-drop-caches'
Code simplification.
* bp/test-drop-caches:
test-drop-caches: simplify delay loading of NtSetSystemInformation
Junio C Hamano [Wed, 23 May 2018 05:38:22 +0000 (14:38 +0900)]
Merge branch 'en/unpack-trees-split-index-fix'
The split-index feature had a long-standing and dormant bug in
certain use of the in-core merge machinery, which has been fixed.
* en/unpack-trees-split-index-fix:
unpack_trees: fix breakage when o->src_index != o->dst_index
Junio C Hamano [Wed, 23 May 2018 05:38:21 +0000 (14:38 +0900)]
Merge branch 'nd/doc-header'
Doc formatting fix.
* nd/doc-header:
doc: keep first level section header in upper case
Junio C Hamano [Wed, 23 May 2018 05:38:21 +0000 (14:38 +0900)]
Merge branch 'bc/format-patch-cover-no-attach'
"git format-patch --cover --attach" created a broken MIME multipart
message for the cover letter, which has been fixed by keeping the
cover letter as plain text file.
* bc/format-patch-cover-no-attach:
format-patch: make cover letters always text/plain
Junio C Hamano [Wed, 23 May 2018 05:38:21 +0000 (14:38 +0900)]
Merge branch 'tb/test-apfs-utf8-normalization'
A test to see if the filesystem normalizes UTF-8 filename has been
updated to check what we need to know in a more direct way, i.e. a
path created in NFC form can be accessed with NFD form (or vice
versa) to cope with APFS as well as HFS.
* tb/test-apfs-utf8-normalization:
test: correct detection of UTF8_NFD_TO_NFC for APFS
Junio C Hamano [Wed, 23 May 2018 05:38:20 +0000 (14:38 +0900)]
Merge branch 'js/rebase-recreate-merge'
"git rebase" learned "--rebase-merges" to transplant the whole
topology of commit graph elsewhere.
* js/rebase-recreate-merge:
rebase -i --rebase-merges: add a section to the man page
rebase -i: introduce --rebase-merges=[no-]rebase-cousins
pull: accept --rebase=merges to recreate the branch topology
rebase --rebase-merges: avoid "empty merges"
sequencer: handle post-rewrite for merge commands
sequencer: make refs generated by the `label` command worktree-local
rebase --rebase-merges: add test for --keep-empty
rebase: introduce the --rebase-merges option
rebase-helper --make-script: introduce a flag to rebase merges
sequencer: fast-forward `merge` commands, if possible
sequencer: introduce the `merge` command
sequencer: introduce new commands to reset the revision
git-rebase--interactive: clarify arguments
sequencer: offer helpful advice when a command was rescheduled
sequencer: refactor how original todo list lines are accessed
sequencer: make rearrange_squash() a bit more obvious
sequencer: avoid using errno clobbered by rollback_lock_file()
Junio C Hamano [Wed, 23 May 2018 05:38:19 +0000 (14:38 +0900)]
Merge branch 'nd/pack-objects-pack-struct'
"git pack-objects" needs to allocate tons of "struct object_entry"
while doing its work, and shrinking its size helps the performance
quite a bit.
* nd/pack-objects-pack-struct:
ci: exercise the whole test suite with uncommon code in pack-objects
pack-objects: reorder members to shrink struct object_entry
pack-objects: shrink delta_size field in struct object_entry
pack-objects: shrink size field in struct object_entry
pack-objects: clarify the use of object_entry::size
pack-objects: don't check size when the object is bad
pack-objects: shrink z_delta_size field in struct object_entry
pack-objects: refer to delta objects by index instead of pointer
pack-objects: move in_pack out of struct object_entry
pack-objects: move in_pack_pos out of struct object_entry
pack-objects: use bitfield for object_entry::depth
pack-objects: use bitfield for object_entry::dfs_state
pack-objects: turn type and in_pack_type to bitfields
pack-objects: a bit of document about struct object_entry
read-cache.c: make $GIT_TEST_SPLIT_INDEX boolean
Junio C Hamano [Wed, 23 May 2018 05:38:19 +0000 (14:38 +0900)]
Merge branch 'en/rename-directory-detection-reboot'
Rename detection logic in "diff" family that is used in "merge" has
learned to guess when all of x/a, x/b and x/c have moved to z/a,
z/b and z/c, it is likely that x/d added in the meantime would also
want to move to z/d by taking the hint that the entire directory
'x' moved to 'z'. A bug causing dirty files involved in a rename
to be overwritten during merge has also been fixed as part of this
work. Incidentally, this also avoids updating a file in the
working tree after a (non-trivial) merge whose result matches what
our side originally had.
* en/rename-directory-detection-reboot: (36 commits)
merge-recursive: fix check for skipability of working tree updates
merge-recursive: make "Auto-merging" comment show for other merges
merge-recursive: fix remainder of was_dirty() to use original index
merge-recursive: fix was_tracked() to quit lying with some renamed paths
t6046: testcases checking whether updates can be skipped in a merge
merge-recursive: avoid triggering add_cacheinfo error with dirty mod
merge-recursive: move more is_dirty handling to merge_content
merge-recursive: improve add_cacheinfo error handling
merge-recursive: avoid spurious rename/rename conflict from dir renames
directory rename detection: new testcases showcasing a pair of bugs
merge-recursive: fix remaining directory rename + dirty overwrite cases
merge-recursive: fix overwriting dirty files involved in renames
merge-recursive: avoid clobbering untracked files with directory renames
merge-recursive: apply necessary modifications for directory renames
merge-recursive: when comparing files, don't include trees
merge-recursive: check for file level conflicts then get new name
merge-recursive: add computation of collisions due to dir rename & merging
merge-recursive: check for directory level conflicts
merge-recursive: add get_directory_renames()
merge-recursive: make a helper function for cleanup for handle_renames
...
Junio C Hamano [Wed, 23 May 2018 05:38:18 +0000 (14:38 +0900)]
Merge branch 'js/no-pager-shorthand'
"git --no-pager cmd" did not have short-and-sweet single letter
option. Now it does.
* js/no-pager-shorthand:
git: add -P as a short option for --no-pager
Junio C Hamano [Wed, 23 May 2018 05:38:18 +0000 (14:38 +0900)]
Merge branch 'js/rebase-i-clean-msg-after-fixup-continue'
"git rebase -i" sometimes left intermediate "# This is a
combination of N commits" message meant for the human consumption
inside an editor in the final result in certain corner cases, which
has been fixed.
* js/rebase-i-clean-msg-after-fixup-continue:
rebase --skip: clean up commit message after a failed fixup/squash
sequencer: always commit without editing when asked for
rebase -i: Handle "combination of <n> commits" with GETTEXT_POISON
rebase -i: demonstrate bugs with fixup!/squash! commit messages
Junio C Hamano [Wed, 23 May 2018 05:38:18 +0000 (14:38 +0900)]
Merge branch 'tg/worktree-add-existing-branch'
"git worktree add" learned to check out an existing branch.
* tg/worktree-add-existing-branch:
worktree: teach "add" to check out existing branches
worktree: factor out dwim_branch function
worktree: improve message when creating a new worktree
worktree: remove extra members from struct add_opts
Junio C Hamano [Wed, 23 May 2018 05:38:17 +0000 (14:38 +0900)]
Merge branch 'js/deprecate-grafts'
The functionality of "$GIT_DIR/info/grafts" has been superseded by
the "refs/replace/" mechanism for some time now, but the internal
code had support for it in many places, which has been cleaned up
in order to drop support of the "grafts" mechanism.
* js/deprecate-grafts:
Remove obsolete script to convert grafts to replace refs
technical/shallow: describe why shallow cannot use replace refs
technical/shallow: stop referring to grafts
filter-branch: stop suggesting to use grafts
Deprecate support for .git/info/grafts
Add a test for `git replace --convert-graft-file`
replace: introduce --convert-graft-file
replace: prepare create_graft() for converting graft files wholesale
replace: "libify" create_graft() and callees
replace: avoid using die() to indicate a bug
commit: Let the callback of for_each_mergetag return on error
argv_array: offer to split a string by whitespace
Junio C Hamano [Wed, 23 May 2018 05:38:17 +0000 (14:38 +0900)]
Merge branch 'js/test-unset-prereq'
Test debugging aid.
* js/test-unset-prereq:
tests: introduce test_unset_prereq, for debugging
Junio C Hamano [Wed, 23 May 2018 05:38:16 +0000 (14:38 +0900)]
Merge branch 'ab/perl-python-attrs'
We learned that our source files with ".pl" and ".py" extensions
are Perl and Python files respectively and changes to them are
better viewed as such with appropriate diff drivers.
* ab/perl-python-attrs:
.gitattributes: add a diff driver for Python
.gitattributes: use the "perl" differ for Perl
.gitattributes: add *.pl extension for Perl
Junio C Hamano [Wed, 23 May 2018 05:38:16 +0000 (14:38 +0900)]
Merge branch 'sb/oid-object-info'
The codepath around object-info API has been taught to take the
repository object (which in turn tells the API which object store
the objects are to be located).
* sb/oid-object-info:
cache.h: allow oid_object_info to handle arbitrary repositories
packfile: add repository argument to cache_or_unpack_entry
packfile: add repository argument to unpack_entry
packfile: add repository argument to read_object
packfile: add repository argument to packed_object_info
packfile: add repository argument to packed_to_object_type
packfile: add repository argument to retry_bad_packed_offset
cache.h: add repository argument to oid_object_info
cache.h: add repository argument to oid_object_info_extended
Junio C Hamano [Wed, 23 May 2018 05:38:15 +0000 (14:38 +0900)]
Merge branch 'cc/perf-aggregate-unknown-option'
Perf-test helper updates.
* cc/perf-aggregate-unknown-option:
perf/aggregate: use Getopt::Long for option parsing
Junio C Hamano [Wed, 23 May 2018 05:38:15 +0000 (14:38 +0900)]
Merge branch 'en/git-debugger'
Dev support.
* en/git-debugger:
Make running git under other debugger-like programs easy
Junio C Hamano [Wed, 23 May 2018 05:38:15 +0000 (14:38 +0900)]
Merge branch 'bw/server-options'
The transport protocol v2 is getting updated further.
* bw/server-options:
fetch: send server options when using protocol v2
ls-remote: send server options when using protocol v2
serve: introduce the server-option capability
Junio C Hamano [Wed, 23 May 2018 05:38:14 +0000 (14:38 +0900)]
Merge branch 'nd/repack-keep-pack'
"git gc" in a large repository takes a lot of time as it considers
to repack all objects into one pack by default. The command has
been taught to pretend as if the largest existing packfile is
marked with ".keep" so that it is left untouched while objects in
other packs and loose ones are repacked.
* nd/repack-keep-pack:
pack-objects: show some progress when counting kept objects
gc --auto: exclude base pack if not enough mem to "repack -ad"
gc: handle a corner case in gc.bigPackThreshold
gc: add gc.bigPackThreshold config
gc: add --keep-largest-pack option
repack: add --keep-pack option
t7700: have closing quote of a test at the beginning of line
Junio C Hamano [Wed, 23 May 2018 05:38:13 +0000 (14:38 +0900)]
Merge branch 'ds/lazy-load-trees'
The code has been taught to use the duplicated information stored
in the commit-graph file to learn the tree object name for a commit
to avoid opening and parsing the commit object when it makes sense
to do so.
* ds/lazy-load-trees:
coccinelle: avoid wrong transformation suggestions from commit.cocci
commit-graph: lazy-load trees for commits
treewide: replace maybe_tree with accessor methods
commit: create get_commit_tree() method
treewide: rename tree to maybe_tree
Junio C Hamano [Wed, 23 May 2018 05:38:13 +0000 (14:38 +0900)]
Merge branch 'nd/term-columns'
The code did not propagate the terminal width to subprocesses via
COLUMNS environment variable, which it now does. This caused
trouble to "git column" helper subprocess when "git tag --column=row"
tried to list the existing tags on a display with non-default width.
* nd/term-columns:
column: fix off-by-one default width
pager: set COLUMNS to term_columns()
Junio C Hamano [Wed, 23 May 2018 05:38:12 +0000 (14:38 +0900)]
Merge branch 'sg/t7005-spaces-in-filenames-cleanup'
Test update.
* sg/t7005-spaces-in-filenames-cleanup:
t7005-editor: get rid of the SPACES_IN_FILENAMES prereq
Junio C Hamano [Wed, 23 May 2018 05:38:12 +0000 (14:38 +0900)]
Merge branch 'sg/t5516-fixes'
Test fixes.
* sg/t5516-fixes:
t5516-fetch-push: fix broken &&-chain
t5516-fetch-push: fix 'push with dry-run' test
Junio C Hamano [Wed, 23 May 2018 05:38:11 +0000 (14:38 +0900)]
Merge branch 'sg/t5310-jgit-bitmap-test'
Test update.
* sg/t5310-jgit-bitmap-test:
t5310-pack-bitmaps: make JGit tests work with GIT_TEST_SPLIT_INDEX
Junio C Hamano [Wed, 23 May 2018 05:38:11 +0000 (14:38 +0900)]
Merge branch 'nd/pack-format-doc'
Doc update.
* nd/pack-format-doc:
pack-format.txt: more details on pack file format
Junio C Hamano [Wed, 23 May 2018 05:38:11 +0000 (14:38 +0900)]
Merge branch 'jk/apply-p-doc'
Doc update.
* jk/apply-p-doc:
apply: clarify "-p" documentation
Junio C Hamano [Wed, 23 May 2018 05:38:10 +0000 (14:38 +0900)]
Merge branch 'ao/config-api-doc'
Doc update.
* ao/config-api-doc:
doc: fix config API documentation about config_with_options
Junio C Hamano [Wed, 23 May 2018 05:38:10 +0000 (14:38 +0900)]
Merge branch 'bc/mailmap-self'
* bc/mailmap-self:
mailmap: update brian m. carlson's email address
Junio C Hamano [Wed, 23 May 2018 05:38:09 +0000 (14:38 +0900)]
Merge branch 'sb/object-store-replace'
Hotfix.
* sb/object-store-replace:
get_main_ref_store: BUG() when outside a repository
object.c: clear replace map before freeing it
replace-object.c: remove the_repository from prepare_replace_object
object.c: free replace map in raw_object_store_clear
Junio C Hamano [Wed, 23 May 2018 05:38:09 +0000 (14:38 +0900)]
Merge branch 'hn/sort-ls-remote'
Hotfix.
* hn/sort-ls-remote:
t5512: run git fetch inside test
Brandon Williams [Tue, 22 May 2018 18:42:04 +0000 (11:42 -0700)]
remote-curl: accept compressed responses with protocol v2
Configure curl to accept compressed responses when using protocol v2 by
setting `CURLOPT_ENCODING` to "", which indicates that curl should send
an "Accept-Encoding" header with all supported compression encodings.
Signed-off-by: Brandon Williams <bmwill@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Brandon Williams [Tue, 22 May 2018 18:42:03 +0000 (11:42 -0700)]
remote-curl: accept all encodings supported by curl
Configure curl to accept all encodings which curl supports instead of
only accepting gzip responses.
This fixes an issue when using an installation of curl which is built
without the "zlib" feature. Since
aa90b9697 (Enable info/refs gzip
decompression in HTTP client, 2012-09-19) we end up requesting "gzip"
encoding anyway despite libcurl not being able to decode it. Worse,
instead of getting a clear error message indicating so, we end up
falling back to "dumb" http, producing a confusing and difficult to
debug result.
Since curl doesn't do any checking to verify that it supports the a
requested encoding, instead set the curl option `CURLOPT_ENCODING` with
an empty string indicating that curl should send an "Accept-Encoding"
header containing only the encodings supported by curl.
Reported-by: Anton Golubev <anton.golubev@gmail.com>
Signed-off-by: Brandon Williams <bmwill@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Tue, 22 May 2018 05:28:26 +0000 (14:28 +0900)]
Git 2.17.1
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Tue, 22 May 2018 05:26:05 +0000 (14:26 +0900)]
Merge branch 'jk/submodule-fsck-loose' into maint
* jk/submodule-fsck-loose:
fsck: complain when .gitmodules is a symlink
index-pack: check .gitmodules files with --strict
unpack-objects: call fsck_finish() after fscking objects
fsck: call fsck_finish() after fscking objects
fsck: check .gitmodules content
fsck: handle promisor objects in .gitmodules check
fsck: detect gitmodules files
fsck: actually fsck blob data
fsck: simplify ".git" check
index-pack: make fsck error message more specific
Junio C Hamano [Tue, 22 May 2018 05:25:26 +0000 (14:25 +0900)]
Sync with Git 2.16.4
* maint-2.16:
Git 2.16.4
Git 2.15.2
Git 2.14.4
Git 2.13.7
verify_path: disallow symlinks in .gitmodules
update-index: stat updated files earlier
verify_dotfile: mention case-insensitivity in comment
verify_path: drop clever fallthrough
skip_prefix: add case-insensitive variant
is_{hfs,ntfs}_dotgitmodules: add tests
is_ntfs_dotgit: match other .git files
is_hfs_dotgit: match other .git files
is_ntfs_dotgit: use a size_t for traversing string
submodule-config: verify submodule names as paths
Junio C Hamano [Tue, 22 May 2018 05:18:51 +0000 (14:18 +0900)]
Git 2.16.4
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Tue, 22 May 2018 05:18:06 +0000 (14:18 +0900)]
Sync with Git 2.15.2
* maint-2.15:
Git 2.15.2
Git 2.14.4
Git 2.13.7
verify_path: disallow symlinks in .gitmodules
update-index: stat updated files earlier
verify_dotfile: mention case-insensitivity in comment
verify_path: drop clever fallthrough
skip_prefix: add case-insensitive variant
is_{hfs,ntfs}_dotgitmodules: add tests
is_ntfs_dotgit: match other .git files
is_hfs_dotgit: match other .git files
is_ntfs_dotgit: use a size_t for traversing string
submodule-config: verify submodule names as paths
Junio C Hamano [Tue, 22 May 2018 05:15:59 +0000 (14:15 +0900)]
Git 2.15.2
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Junio C Hamano [Tue, 22 May 2018 05:15:14 +0000 (14:15 +0900)]
Sync with Git 2.14.4
* maint-2.14:
Git 2.14.4
Git 2.13.7
verify_path: disallow symlinks in .gitmodules
update-index: stat updated files earlier
verify_dotfile: mention case-insensitivity in comment
verify_path: drop clever fallthrough
skip_prefix: add case-insensitive variant
is_{hfs,ntfs}_dotgitmodules: add tests
is_ntfs_dotgit: match other .git files
is_hfs_dotgit: match other .git files
is_ntfs_dotgit: use a size_t for traversing string
submodule-config: verify submodule names as paths
Junio C Hamano [Tue, 22 May 2018 05:12:02 +0000 (14:12 +0900)]
Git 2.14.4
Signed-off-by: Junio C Hamano <gitster@pobox.com>