summaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2018-03-14cache-tree: convert remnants to struct object_idLibravatar brian m. carlson1-14/+15
Convert the remaining portions of cache-tree.c to use struct object_id. Convert several instances of 20 to use the_hash_algo instead. Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2018-03-14cache-tree: convert write_*_as_tree to object_idLibravatar brian m. carlson6-15/+15
Convert write_index_as_tree and write_cache_as_tree to use struct object_id. Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2018-03-14builtin/write-tree: convert to struct object_idLibravatar brian m. carlson1-3/+3
This is needed to convert parts of the cache-tree code. Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2018-03-14bulk-checkin: convert index_bulk_checkin to struct object_idLibravatar brian m. carlson3-11/+11
Convert the index_bulk_checkin function, and the static functions it calls, to use pointers to struct object_id. Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2018-03-08Eighth batch for 2.17Libravatar Junio C Hamano1-5/+40
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2018-03-08Merge branch 'ag/userdiff-go-funcname'Libravatar Junio C Hamano8-0/+37
"git diff" and friends learned funcname patterns for Go language source files. * ag/userdiff-go-funcname: userdiff: add built-in pattern for golang
2018-03-08Merge branch 'ab/gc-auto-in-commit'Libravatar Junio C Hamano1-0/+2
"git commit" used to run "gc --auto" near the end, which was lost when the command was reimplemented in C by mistake. * ab/gc-auto-in-commit: commit: run git gc --auto just before the post-commit hook
2018-03-08Merge branch 'bp/untracked-cache-noflush'Libravatar Junio C Hamano2-2/+16
Writing out the index file when the only thing that changed in it is the untracked cache information is often wasteful, and this has been optimized out. * bp/untracked-cache-noflush: untracked cache: use git_env_bool() not getenv() for customization dir.c: don't flag the index as dirty for changes to the untracked cache
2018-03-08Merge branch 'rs/perf-repeat-thrice-by-default'Libravatar Junio C Hamano1-5/+3
Perf test regression fix. * rs/perf-repeat-thrice-by-default: perf: use GIT_PERF_REPEAT_COUNT=3 by default even without config file
2018-03-08Merge branch 'mk/doc-pretty-fill'Libravatar Junio C Hamano1-1/+1
Docfix. * mk/doc-pretty-fill: docs/pretty-formats: fix typo '% <(<N>)' -> '%<|(<N>)'
2018-03-08Merge branch 'jc/test-must-be-empty'Libravatar Junio C Hamano1-1/+5
Test framework tweak to catch developer thinko. * jc/test-must-be-empty: test_must_be_empty: make sure the file exists, not just empty
2018-03-08Merge branch 'ds/mark-parents-uninteresting-optim'Libravatar Junio C Hamano1-1/+2
Micro optimization in revision traversal code. * ds/mark-parents-uninteresting-optim: revision.c: reduce object database queries
2018-03-08Merge branch 'ds/find-unique-abbrev-optim'Libravatar Junio C Hamano1-7/+7
While finding unique object name abbreviation, the code may accidentally have read beyond the end of the array of object names in a pack. * ds/find-unique-abbrev-optim: sha1_name: fix uninitialized memory errors
2018-03-08Merge branch 'sg/subtree-signed-commits'Libravatar Junio C Hamano1-6/+6
"git subtree" script (in contrib/) scripted around "git log", whose output got affected by end-user configuration like log.showsignature * sg/subtree-signed-commits: subtree: fix add and pull for GPG-signed commits
2018-03-08Merge branch 'rv/grep-cleanup'Libravatar Junio C Hamano1-13/+20
Threaded "git grep" has been optimized to avoid allocation in code section that is covered under a mutex. * rv/grep-cleanup: grep: simplify grep_oid and grep_file grep: move grep_source_init outside critical section
2018-03-08Merge branch 'ot/ref-filter-cleanup'Libravatar Junio C Hamano1-27/+24
Code cleanup. * ot/ref-filter-cleanup: ref-filter: get rid of goto ref-filter: get rid of duplicate code
2018-03-08Merge branch 'jh/status-no-ahead-behind'Libravatar Junio C Hamano10-35/+196
"git status" can spend a lot of cycles to compute the relation between the current branch and its upstream, which can now be disabled with "--no-ahead-behind" option. * jh/status-no-ahead-behind: status: support --no-ahead-behind in long format status: update short status to respect --no-ahead-behind status: add --[no-]ahead-behind to status and commit for V2 format. stat_tracking_info: return +1 when branches not equal
2018-03-08Merge branch 'sg/travis-build-during-script-phase'Libravatar Junio C Hamano3-15/+3
Build the executable in 'script' phase in Travis CI integration, to follow the established practice, rather than during 'before_script' phase. This allows the CI categorize the failures better ('failed' is project's fault, 'errored' is build environment's). * sg/travis-build-during-script-phase: travis-ci: build Git during the 'script' phase
2018-03-06Seventh batch for 2.17Libravatar Junio C Hamano1-0/+50
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2018-03-06Merge branch 'bw/perl-timegm-timelocal-fix'Libravatar Junio C Hamano4-4/+8
Y2k20 fix ;-) for our perl scripts. * bw/perl-timegm-timelocal-fix: perl: call timegm and timelocal with 4-digit year
2018-03-06Merge branch 'jk/strbuf-read-file-close-error'Libravatar Junio C Hamano1-1/+5
Code clean-up. * jk/strbuf-read-file-close-error: strbuf_read_file(): preserve errno across close() call
2018-03-06Merge branch 'bw/c-plus-plus'Libravatar Junio C Hamano63-662/+663
Avoid using identifiers that clash with C++ keywords. Even though it is not a goal to compile Git with C++ compilers, changes like this help use of code analysis tools that targets C++ on our codebase. * bw/c-plus-plus: (37 commits) replace: rename 'new' variables trailer: rename 'template' variables tempfile: rename 'template' variables wrapper: rename 'template' variables environment: rename 'namespace' variables diff: rename 'template' variables environment: rename 'template' variables init-db: rename 'template' variables unpack-trees: rename 'new' variables trailer: rename 'new' variables submodule: rename 'new' variables split-index: rename 'new' variables remote: rename 'new' variables ref-filter: rename 'new' variables read-cache: rename 'new' variables line-log: rename 'new' variables imap-send: rename 'new' variables http: rename 'new' variables entry: rename 'new' variables diffcore-delta: rename 'new' variables ...
2018-03-06Merge branch 'rs/strbuf-read-file-or-whine'Libravatar Junio C Hamano1-46/+28
Code clean-up. * rs/strbuf-read-file-or-whine: sequencer: factor out strbuf_read_file_or_whine()
2018-03-06Merge branch 'ms/non-ascii-ticks'Libravatar Junio C Hamano1-7/+7
Doc markup fix. * ms/non-ascii-ticks: Documentation/gitsubmodules.txt: avoid non-ASCII apostrophes
2018-03-06Merge branch 'jk/test-helper-v-output-fix'Libravatar Junio C Hamano1-10/+10
Test framework update. * jk/test-helper-v-output-fix: t: send verbose test-helper output to fd 4
2018-03-06Merge branch 'jk/cached-commit-buffer'Libravatar Junio C Hamano5-46/+1
Code clean-up. * jk/cached-commit-buffer: revision: drop --show-all option commit: drop uses of get_cached_commit_buffer()
2018-03-06Merge branch 'bw/doc-submodule-recurse-config-with-clone'Libravatar Junio C Hamano1-1/+2
Doc update. * bw/doc-submodule-recurse-config-with-clone: submodule: indicate that 'submodule.recurse' doesn't apply to clone
2018-03-06Merge branch 'jc/allow-ff-merging-kept-tags'Libravatar Junio C Hamano4-7/+79
Since Git 1.7.9, "git merge" defaulted to --no-ff (i.e. even when the side branch being merged is a descendant of the current commit, create a merge commit instead of fast-forwarding) when merging a tag object. This was appropriate default for integrators who pull signed tags from their downstream contributors, but caused an unnecessary merges when used by downstream contributors who habitually "catch up" their topic branches with tagged releases from the upstream. Update "git merge" to default to --no-ff only when merging a tag object that does *not* sit at its usual place in refs/tags/ hierarchy, and allow fast-forwarding otherwise, to mitigate the problem. * jc/allow-ff-merging-kept-tags: merge: allow fast-forward when merging a tracked tag
2018-03-06Merge branch 'ab/simplify-perl-makefile'Libravatar Junio C Hamano1-5/+7
Hotfix for a topic already in 'master'. * ab/simplify-perl-makefile: Makefile: generate Git(3pm) as dependency of the 'doc' and 'man' targets
2018-03-06Merge branch 'pw/add-p-single'Libravatar Junio C Hamano1-26/+48
"git add -p" used to offer "/" (look for a matching hunk) as a choice, even there was only one hunk, which has been corrected. Also the single-key help is now given only for keys that are enabled (e.g. help for '/' won't be shown when there is only one hunk). * pw/add-p-single: add -p: improve error messages add -p: only bind search key if there's more than one hunk add -p: only display help for active keys
2018-03-06Merge branch 'sg/t6300-modernize'Libravatar Junio C Hamano1-5/+2
Test update. * sg/t6300-modernize: t6300-for-each-ref: fix "more than one quoting style" tests
2018-03-06Merge branch 'sb/color-h-cleanup'Libravatar Junio C Hamano3-12/+34
Devdoc update. * sb/color-h-cleanup: color.h: document and modernize header
2018-03-06Merge branch 'nd/rebase-show-current-patch'Libravatar Junio C Hamano12-11/+130
The new "--show-current-patch" option gives an end-user facing way to get the diff being applied when "git rebase" (and "git am") stops with a conflict. * nd/rebase-show-current-patch: rebase: introduce and use pseudo-ref REBASE_HEAD rebase: add --show-current-patch am: add --show-current-patch
2018-03-06Merge branch 'xz/send-email-batch-size'Libravatar Junio C Hamano1-0/+4
"git send-email" learned to complain when the batch-size option is not defined when the relogin-delay option is, since these two are mutually required. * xz/send-email-batch-size: send-email: error out when relogin delay is missing
2018-03-06Merge branch 'ab/fetch-prune'Libravatar Junio C Hamano9-60/+392
Clarify how configured fetch refspecs interact with the "--prune" option of "git fetch", and also add a handy short-hand for getting rid of stale tags that are locally held. * ab/fetch-prune: fetch: make the --prune-tags work with <url> fetch: add a --prune-tags option and fetch.pruneTags config fetch tests: add scaffolding for the new fetch.pruneTags git-fetch & config doc: link to the new PRUNING section git remote doc: correct dangerous lies about what prune does git fetch doc: add a new section to explain the ins & outs of pruning fetch tests: fetch <url> <spec> as well as fetch [<remote>] fetch tests: expand case/esac for later change fetch tests: double quote a variable for interpolation fetch tests: test --prune and refspec interaction fetch tests: add a tag to be deleted to the pruning tests fetch tests: re-arrange arguments for future readability fetch tests: refactor in preparation for testing tag pruning remote: add a macro for "refs/tags/*:refs/tags/*" fetch: stop accessing "remote" variable indirectly fetch: trivially refactor assignment to ref_nr fetch: don't redundantly NULL something calloc() gave us
2018-03-06Merge branch 'sm/mv-dry-run-update'Libravatar Junio C Hamano2-2/+7
Code clean-up. * sm/mv-dry-run-update: mv: remove unneeded 'if (!show_only)' t7001: add test case for --dry-run
2018-03-06Merge branch 'nm/tag-edit'Libravatar Junio C Hamano3-3/+46
"git tag" learned an explicit "--edit" option that allows the message given via "-m" and "-F" to be further edited. * nm/tag-edit: tag: add --edit option
2018-03-01userdiff: add built-in pattern for golangLibravatar Alban Gruin8-0/+37
This adds xfuncname and word_regex patterns for golang, a quite popular programming language. It also includes test cases for the xfuncname regex (t4018) and updated documentation. The xfuncname regex finds functions, structs and interfaces. Although the Go language prohibits the opening brace from being on its own line, the regex does not makes it mandatory, to be able to match `func` statements like this: func foo(bar int, baz int) { } This is covered by the test case t4018/golang-long-func. The word_regex pattern finds identifiers, integers, floats, complex numbers and operators, according to the go specification. Signed-off-by: Alban Gruin <alban.gruin@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2018-03-01commit: run git gc --auto just before the post-commit hookLibravatar Ævar Arnfjörð Bjarmason1-0/+2
Change the behavior of git-commit back to what it was back in d4bb43ee27 ("Invoke "git gc --auto" from commit, merge, am and rebase.", 2007-09-05) when it was git-commit.sh. Shortly afterwards in f5bbc3225c ("Port git commit to C.", 2007-11-08) when it was ported to C, the "git gc --auto" invocation went away. Since that unintended regression, git gc --auto only ran for git-am, git-merge, git-fetch, and git-receive-pack. It was possible to write a script that would "git commit" a lot of data locally, and gc would never run. One such repository that was locally committing generated zone file changes had grown to a size of ~60GB before a daily cronjob was added to "git gc", bringing it down to less than 1GB. This will make such cases work without intervention. I think fixing such pathological cases where the repository will grow forever is a worthwhile trade-off for spending a couple of milliseconds calling "git gc --auto" (in the common cases where it doesn't do anything). Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2018-02-28Sixth batch for 2.17Libravatar Junio C Hamano1-5/+25
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2018-02-28Merge branch 'jk/push-options-via-transport-fix'Libravatar Junio C Hamano2-12/+39
"git push" over http transport did not unquote the push-options correctly. * jk/push-options-via-transport-fix: remote-curl: unquote incoming push-options t5545: factor out http repository setup
2018-02-28Merge branch 'tz/do-not-clean-spec-file'Libravatar Junio C Hamano1-1/+1
We no longer create any *.spec file, so "make clean" should not remove it. * tz/do-not-clean-spec-file: Makefile: remove *.spec from clean target
2018-02-28Merge branch 'tg/worktree-create-tracking'Libravatar Junio C Hamano1-2/+3
Hotfix for a recent topic. * tg/worktree-create-tracking: git-worktree.txt: fix indentation of example and text of 'add' command git-worktree.txt: fix missing ")" typo
2018-02-28Merge branch 'gs/test-unset-xdg-cache-home'Libravatar Junio C Hamano1-0/+1
Test update. * gs/test-unset-xdg-cache-home: test-lib.sh: unset XDG_CACHE_HOME
2018-02-28Merge branch 'tk/apply-dev-null-verify-name-fix'Libravatar Junio C Hamano2-1/+18
Many places in "git apply" knew that "/dev/null" that signals "there is no such file on this side of the diff" can be followed by whitespace and garbage when parsing a patch, except for one, which made an otherwise valid patch (e.g. ones from subversion) rejected. * tk/apply-dev-null-verify-name-fix: apply: handle Subversion diffs with /dev/null gracefully apply: demonstrate a problem applying svn diffs
2018-02-28Merge branch 'sb/status-doc-fix'Libravatar Junio C Hamano1-2/+2
Docfix. * sb/status-doc-fix: Documentation/git-status: clarify status table for porcelain mode
2018-02-28Merge branch 'es/worktree-add-post-checkout-hook'Libravatar Junio C Hamano2-12/+62
"git worktree add" learned to run the post-checkout hook, just like "git clone" runs it upon the initial checkout. * es/worktree-add-post-checkout-hook: worktree: add: fix 'post-checkout' not knowing new worktree location
2018-02-28Merge branch 'nd/am-quit'Libravatar Junio C Hamano4-4/+28
"git am" has learned the "--quit" option, in addition to the existing "--abort" option; having the pair mirrors a few other commands like "rebase" and "cherry-pick". * nd/am-quit: am: support --quit
2018-02-28untracked cache: use git_env_bool() not getenv() for customizationLibravatar Junio C Hamano2-4/+14
GIT_DISABLE_UNTRACKED_CACHE and GIT_TEST_UNTRACKED_CACHE are only sensed for their presense by using getenv(); use git_env_bool() instead so that GIT_DISABLE_UNTRACKED_CACHE=false would work as naïvely expected. Also rename GIT_TEST_UNTRACKED_CACHE to GIT_FORCE_UNTRACKED_CACHE to express what it does more honestly. Forcing its use may be one useful thing to do while testing the feature, but testing does not have to be the only use of the knob. While at it, avoid repeated calls to git_env_bool() by capturing the return value from the first call in a static variable. Signed-off-by: Junio C Hamano <gitster@pobox.com>
2018-02-27revision.c: reduce object database queriesLibravatar Derrick Stolee1-1/+2
In mark_parents_uninteresting(), we check for the existence of an object file to see if we should treat a commit as parsed. The result is to set the "parsed" bit on the commit. Modify the condition to only check has_object_file() if the result would change the parsed bit. When a local branch is different from its upstream ref, "git status" will compute ahead/behind counts. This uses paint_down_to_common() and hits mark_parents_uninteresting(). On a copy of the Linux repo with a local instance of "master" behind the remote branch "origin/master" by ~60,000 commits, we find the performance of "git status" went from 1.42 seconds to 1.32 seconds, for a relative difference of -7.0%. Signed-off-by: Derrick Stolee <dstolee@microsoft.com> Reviewed-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>