summaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2018-06-01Merge branch 'cc/tests-without-assuming-ref-files-backend'Libravatar Junio C Hamano11-27/+28
Quite a many tests assumed that newly created refs are made as loose refs using the files backend, which have been updated to use proper plumbing like rev-parse and update-ref, to avoid breakage once we start using different ref backends. * cc/tests-without-assuming-ref-files-backend: t990X: use '.git/objects' as 'deep inside .git' path t: make many tests depend less on the refs being files
2018-06-01Merge branch 'rd/init-typo'Libravatar Junio C Hamano1-1/+1
Message fix. * rd/init-typo: init: fix grammar in "templates not found" msg
2018-06-01Merge branch 'js/rebase-recreate-merge'Libravatar Junio C Hamano3-2/+19
Hotfixes. * js/rebase-recreate-merge: sequencer: ensure labels that are object IDs are rewritten git-rebase--interactive: fix copy-paste mistake
2018-06-01Merge branch 'rd/tag-doc-lightweight'Libravatar Junio C Hamano1-2/+2
Docfix. * rd/tag-doc-lightweight: tag: clarify in the doc that a tag can refer to a non-commit object
2018-06-01Merge branch 'rd/doc-options-placeholder'Libravatar Junio C Hamano19-38/+38
Docfix. * rd/doc-options-placeholder: Use proper syntax for replaceables in command docs
2018-06-01Merge branch 'en/rev-parse-invalid-range'Libravatar Junio C Hamano2-2/+14
"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
2018-06-01Merge branch 'ld/p4-unshelve'Libravatar Junio C Hamano3-36/+347
"git p4" learned to "unshelve" shelved commit from P4. * ld/p4-unshelve: git-p4: add unshelve command
2018-06-01Merge branch 'nd/use-opt-int-set-f'Libravatar Junio C Hamano11-50/+47
Code simplification. * nd/use-opt-int-set-f: Use OPT_SET_INT_F() for cmdline option specification
2018-06-01Merge branch 'pa/import-tars-long-names'Libravatar Junio C Hamano1-2/+29
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
2018-06-01Merge branch 'nd/command-list'Libravatar Junio C Hamano25-313/+589
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
2018-06-01RelNotes: remove duplicate release noteLibravatar Elijah Newren1-11/+3
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>
2018-05-30Git 2.18-rc0Libravatar Junio C Hamano2-1/+37
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2018-05-30Merge branch 'bw/remote-curl-compressed-responses'Libravatar Junio C Hamano3-6/+12
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
2018-05-30Merge branch 'ma/unpack-trees-free-msgs'Libravatar Junio C Hamano7-37/+64
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()`
2018-05-30Merge branch 'bc/hash-independent-tests'Libravatar Junio C Hamano71-267/+338
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 ...
2018-05-30Merge branch 'ma/regex-no-regfree-after-comp-fail'Libravatar Junio C Hamano2-3/+0
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
2018-05-30Merge branch 'ma/config-store-data-clear'Libravatar Junio C Hamano1-18/+18
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`
2018-05-30Merge branch 'jk/snprintf-truncation'Libravatar Junio C Hamano6-50/+55
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
2018-05-30Merge branch 'jk/config-blob-sans-repo'Libravatar Junio C Hamano2-0/+7
Error codepath fix. * jk/config-blob-sans-repo: config: die when --blob is used outside a repository
2018-05-30Merge branch 'sb/submodule-merge-in-merge-recursive'Libravatar Junio C Hamano3-173/+186
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
2018-05-30Merge branch 'js/empty-config-section-fix'Libravatar Junio C Hamano1-1/+1
Error codepath fix. * js/empty-config-section-fix: config: a user-provided invalid section is not a BUG
2018-05-30Merge branch 'bw/ref-prefix-for-configured-refspec'Libravatar Junio C Hamano23-613/+570
"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 ...
2018-05-30Merge branch 'sb/grep-die-on-unreadable-index'Libravatar Junio C Hamano1-1/+2
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
2018-05-30The seventh batch for 2.18Libravatar Junio C Hamano1-0/+80
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2018-05-30Merge branch 'sb/submodule-update-try-harder'Libravatar Junio C Hamano1-1/+1
"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
2018-05-30Merge branch 'lm/credential-netrc'Libravatar Junio C Hamano7-50/+135
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
2018-05-30Merge branch 'ab/get-short-oid'Libravatar Junio C Hamano6-21/+101
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
2018-05-30Merge branch 'jt/partial-clone-proto-v2'Libravatar Junio C Hamano5-6/+171
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
2018-05-30Merge branch 'bc/object-id'Libravatar Junio C Hamano46-306/+348
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 ...
2018-05-30Merge branch 'sb/blame-color'Libravatar Junio C Hamano3-4/+200
"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
2018-05-30Merge branch 'cf/submodule-progress-dissociate'Libravatar Junio C Hamano5-9/+78
"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
2018-05-30Merge branch 'sg/complete-paths'Libravatar Junio C Hamano3-28/+362
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
2018-05-30Merge branch 'nd/travis-gcc-8'Libravatar Junio C Hamano2-0/+6
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
2018-05-30Merge branch 'nd/pack-struct-commit'Libravatar Junio C Hamano1-1/+1
Memory optimization. * nd/pack-struct-commit: commit.h: rearrange 'index' to shrink struct commit
2018-05-30Merge branch 'ma/create-pseudoref-with-null-old-oid'Libravatar Junio C Hamano2-5/+77
"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
2018-05-30Merge branch 'jk/unavailable-can-be-missing'Libravatar Junio C Hamano1-40/+50
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
2018-05-30Merge branch 'bp/status-rename-config'Libravatar Junio C Hamano6-1/+192
"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
2018-05-30Merge branch 'js/use-bug-macro'Libravatar Junio C Hamano69-206/+214
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
2018-05-30Merge branch 'rs/no-null-ptr-arith-in-fast-export'Libravatar Junio C Hamano1-4/+3
Code clean-up to avoid non-standard-conformant pointer arithmetic. * rs/no-null-ptr-arith-in-fast-export: fast-export: avoid NULL pointer arithmetic
2018-05-30Merge branch 'nd/repo-clear-keep-the-index'Libravatar Junio C Hamano1-1/+2
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)
2018-05-30Merge branch 'ma/lockfile-cleanup'Libravatar Junio C Hamano18-38/+32
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
2018-05-30Merge branch 'sg/t6500-no-redirect-of-stdin'Libravatar Junio C Hamano1-2/+0
Test cleanup. * sg/t6500-no-redirect-of-stdin: t6050-replace: don't disable stdin for the whole test script
2018-05-30Merge branch 'bp/merge-rename-config'Libravatar Junio C Hamano8-14/+69
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
2018-05-30Merge branch 'js/sequencer-and-root-commits'Libravatar Junio C Hamano6-35/+276
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
2018-05-30Merge branch 'dd/send-email-reedit'Libravatar Junio C Hamano1-7/+31
"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
2018-05-30init: fix grammar in "templates not found" msgLibravatar Robert P. J. Day1-1/+1
Signed-off-by: Robert P. J. Day <rpjday@crashcourse.ca> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2018-05-30sequencer: ensure labels that are object IDs are rewrittenLibravatar brian m. carlson2-1/+18
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>
2018-05-30t990X: use '.git/objects' as 'deep inside .git' pathLibravatar Christian Couder2-2/+2
Tests t9902-completion.sh and t9903-bash-prompt.sh each have tests that check what happens when we are "in the '.git' directory" and when we are "deep inside the '.git' directory". To test the case when we are "deep inside the '.git' directory" the test scripts used to perform a `cd .git/refs/heads`. As there are plans to implement other ref storage systems, let's use '.git/objects' instead of '.git/refs/heads' as the "deep inside the '.git' directory" path. This makes it clear to readers that these tests do not depend on which ref backend is used. The internals of the loose refs backend are still tested in t1400-update-ref.sh. Helped-by: SZEDER Gábor <szeder.dev@gmail.com> Signed-off-by: David Turner <dturner@twopensource.com> Signed-off-by: Christian Couder <chriscool@tuxfamily.org> Reviewed-by: Michael Haggerty <mhagger@alum.mit.edu> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2018-05-29Sync with Git 2.17.1Libravatar Junio C Hamano28-72/+794
* 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 ...
2018-05-29tag: clarify in the doc that a tag can refer to a non-commit objectLibravatar Robert P. J. Day1-2/+2
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>