From 1d5745d8b3fa1306358c8358338ea64a0da82577 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Tue, 11 Oct 2016 14:02:30 -0700 Subject: [PATCH] What's cooking (2016/10 #03) --- whats-cooking.txt | 987 +++++++++++++++++++++++++--------------------- 1 file changed, 529 insertions(+), 458 deletions(-) diff --git a/whats-cooking.txt b/whats-cooking.txt index a652b871ed..4822c338fb 100644 --- a/whats-cooking.txt +++ b/whats-cooking.txt @@ -1,10 +1,10 @@ To: git@vger.kernel.org Bcc: lwn@lwn.net -Subject: What's cooking in git.git (Oct 2016, #02; Thu, 6) -X-master-at: a23ca1b8dc42ffd4de2ef30d67ce1e21ded29886 -X-next-at: d4ef1078455682bd5fab0e8b62e2351d25268477 +Subject: What's cooking in git.git (Oct 2016, #03; Tue, 11) +X-master-at: 8a36cd87b7c85a651ab388d403629865ffa3ba0d +X-next-at: 28fc3e53f99219d01faa8a76452eac5ca9d631c2 -What's cooking in git.git (Oct 2016, #02; Thu, 6) +What's cooking in git.git (Oct 2016, #03; Tue, 11) -------------------------------------------------- Here are the topics that have been cooking. Commits prefixed with @@ -12,11 +12,11 @@ Here are the topics that have been cooking. Commits prefixed with '+' are in 'next'. The ones marked with '.' do not appear in any of the integration branches, but I am still holding onto them. -With fixes since 2.10 accumulated on the 'master' front, the first -maintenance release 2.10.1 has been tagged. The auto-abbreviation -by Linus and Peff is now in 'next'. The tip of 'master' has quite a -many topics merged since the last report. Pat is back and hopefully -be more active as the git-gui maintainer. Life is good ;-) +A handful of topics have been merged to 'master' and the upcoming +release started to take shape. Quite a few topics that no longer +merge cleanly to 'pu' and have been excluded from 'pu' for some time +have finally been moved to the Discarded section (many of them are +expected to be updated and return). You can find the changes described here in the integration branches of the repositories listed at @@ -26,169 +26,257 @@ of the repositories listed at -------------------------------------------------- [Graduated to "master"] -* jc/blame-abbrev (2016-09-28) 1 commit - (merged to 'next' on 2016-10-03 at 8ec86ff1e1) - + blame: use DEFAULT_ABBREV macro - - Almost everybody uses DEFAULT_ABBREV to refer to the default - setting for the abbreviation, but "git blame" peeked into - underlying variable bypassing the macro for no good reason. - +* ak/curl-imap-send-explicit-scheme (2016-08-17) 1 commit + (merged to 'next' on 2016-09-22 at 4449584c26) + + imap-send: Tell cURL to use imap:// or imaps:// -* jk/ambiguous-short-object-names (2016-09-27) 11 commits - (merged to 'next' on 2016-09-28 at 1b85295323) - + get_short_sha1: make default disambiguation configurable - + get_short_sha1: list ambiguous objects on error - + for_each_abbrev: drop duplicate objects - + sha1_array: let callbacks interrupt iteration - + get_short_sha1: mark ambiguity error for translation - + get_short_sha1: NUL-terminate hex prefix - + get_short_sha1: refactor init of disambiguation code - + get_short_sha1: parse tags when looking for treeish - + get_sha1: propagate flags to child functions - + get_sha1: avoid repeating ourselves via ONLY_TO_DIE - + get_sha1: detect buggy calls with multiple disambiguators - (this branch is used by jk/abbrev-auto and lt/abbrev-auto.) + When we started cURL to talk to imap server when a new enough + version of cURL library is available, we forgot to explicitly add + imap(s):// before the destination. To some folks, that didn't work + and the library tried to make HTTP(s) requests instead. - When given an abbreviated object name that is not (or more - realistically, "no longer") unique, we gave a fatal error - "ambiguous argument". This error is now accompanied by hints that - lists the objects that begins with the given prefix. During the - course of development of this new feature, numerous minor bugs were - uncovered and corrected, the most notable one of which is that we - gave "short SHA1 xxxx is ambiguous." twice without good reason. +* cp/completion-negative-refs (2016-08-24) 1 commit + (merged to 'next' on 2016-09-22 at abd1585aa6) + + completion: support excluding refs -* jk/graph-padding-fix (2016-09-29) 1 commit - (merged to 'next' on 2016-10-03 at 3f526e0f38) - + graph: fix extra spaces in graph_padding_line + The command-line completion script (in contrib/) learned to + complete "git cmd ^mas" to complete the negative end of + reference to "git cmd ^master". - The "graph" API used in "git log --graph" miscounted the number of - output columns consumed so far when drawing a padding line, which - has been fixed; this did not affect any existing code as nobody - tried to write anything after the padding on such a line, though. +* dp/autoconf-curl-ssl (2016-06-28) 1 commit + (merged to 'next' on 2016-09-22 at 9c5aeeced9) + + ./configure.ac: detect SSL in libcurl using curl-config -* ps/http-gssapi-cred-delegation (2016-09-29) 1 commit - (merged to 'next' on 2016-10-03 at 310fbe8f24) - + http: control GSSAPI credential delegation + The ./configure script generated from configure.ac was taught how + to detect support of SSL by libcurl better. - In recent versions of cURL, GSSAPI credential delegation is - disabled by default due to CVE-2011-2192; introduce a configuration - to selectively allow enabling this. +* jc/blame-reverse (2016-06-14) 2 commits + (merged to 'next' on 2016-09-22 at d1a8e9ce99) + + blame: dwim "blame --reverse OLD" as "blame --reverse OLD.." + + blame: improve diagnosis for "--reverse NEW" -* rs/c-auto-resets-attributes (2016-09-29) 1 commit - (merged to 'next' on 2016-10-03 at 6a0b946a79) - + pretty: avoid adding reset for %C(auto) if output is empty + It is a common mistake to say "git blame --reverse OLD path", + expecting that the command line is dwimmed as if asking how lines + in path in an old revision OLD have survived up to the current + commit. - When "%C(auto)" appears at the very beginning of the pretty format - string, it did not need to issue the reset sequence, but it did. - This is a small optimization to already graduated topic. +* jk/pack-objects-optim-mru (2016-08-11) 4 commits + (merged to 'next' on 2016-09-21 at 97b919bdbd) + + pack-objects: use mru list when iterating over packs + + pack-objects: break delta cycles before delta-search phase + + sha1_file: make packed_object_info public + + provide an initializer for "struct object_info" -* rs/cocci (2016-10-03) 4 commits - (merged to 'next' on 2016-10-03 at 758cc6de9c) - + coccicheck: make transformation for strbuf_addf(sb, "...") more precise - (merged to 'next' on 2016-09-28 at 26462645f9) - + use strbuf_add_unique_abbrev() for adding short hashes, part 2 - + use strbuf_addstr() instead of strbuf_addf() with "%s", part 2 - + gitignore: ignore output files of coccicheck make target + Originally merged to 'next' on 2016-08-11 - Code clean-up with help from coccinelle tool continues. + "git pack-objects" in a repository with many packfiles used to + spend a lot of time looking for/at objects in them; the accesses to + the packfiles are now optimized by checking the most-recently-used + packfile first. -* sg/ref-filter-parse-optim (2016-10-03) 1 commit - (merged to 'next' on 2016-10-03 at 9af6bb63e9) - + ref-filter: strip format option after a field name only once while parsing +* nd/shallow-deepen (2016-06-13) 27 commits + (merged to 'next' on 2016-09-22 at f0cf3e3385) + + fetch, upload-pack: --deepen=N extends shallow boundary by N commits + + upload-pack: add get_reachable_list() + + upload-pack: split check_unreachable() in two, prep for get_reachable_list() + + t5500, t5539: tests for shallow depth excluding a ref + + clone: define shallow clone boundary with --shallow-exclude + + fetch: define shallow boundary with --shallow-exclude + + upload-pack: support define shallow boundary by excluding revisions + + refs: add expand_ref() + + t5500, t5539: tests for shallow depth since a specific date + + clone: define shallow clone boundary based on time with --shallow-since + + fetch: define shallow boundary with --shallow-since + + upload-pack: add deepen-since to cut shallow repos based on time + + shallow.c: implement a generic shallow boundary finder based on rev-list + + fetch-pack: use a separate flag for fetch in deepening mode + + fetch-pack.c: mark strings for translating + + fetch-pack: use a common function for verbose printing + + fetch-pack: use skip_prefix() instead of starts_with() + + upload-pack: move rev-list code out of check_non_tip() + + upload-pack: make check_non_tip() clean things up on error + + upload-pack: tighten number parsing at "deepen" lines + + upload-pack: use skip_prefix() instead of starts_with() + + upload-pack: move "unshallow" sending code out of deepen() + + upload-pack: remove unused variable "backup" + + upload-pack: move "shallow" sending code out of deepen() + + upload-pack: move shallow deepen code out of receive_needs() + + transport-helper.c: refactor set_helper_option() + + remote-curl.c: convert fetch_git() to use argv_array - The code that parses the format parameter of for-each-ref command - has seen a micro-optimization. + The existing "git fetch --depth=" option was hard to use + correctly when making the history of an existing shallow clone + deeper. A new option, "--deepen=", has been added to make this + easier to use. "git clone" also learned "--shallow-since=" + and "--shallow-exclude=" options to make it easier to specify + "I am interested only in the recent N months worth of history" and + "Give me only the history since that version". -* vn/revision-shorthand-for-side-branch-log (2016-09-27) 1 commit - (merged to 'next' on 2016-09-28 at c1237b24f6) - + revision: new rev^-n shorthand for rev^n..rev +* rs/qsort (2016-10-03) 6 commits + (merged to 'next' on 2016-10-06 at 32a5bd3c88) + + show-branch: use QSORT + + use QSORT, part 2 + + coccicheck: use --all-includes by default + + remove unnecessary check before QSORT + + use QSORT + + add QSORT - "git log rev^..rev" is an often-used revision range specification - to show what was done on a side branch merged at rev. This has - gained a short-hand "rev^-1". In general "rev^-$n" is the same as - "^rev^$n rev", i.e. what has happened on other branches while the - history leading to nth parent was looking the other way. + We call "qsort(array, nelem, sizeof(array[0]), fn)", and most of + the time third parameter is redundant. A new QSORT() macro lets us + omit it. -------------------------------------------------- [New Topics] -* jc/ws-error-highlight (2016-10-04) 4 commits - - diff: introduce diff.wsErrorHighlight option - - diff.c: move ws-error-highlight parsing helpers up - - diff.c: refactor parse_ws_error_highlight() - - t4015: split out the "setup" part of ws-error-highlight test +* ab/gitweb-abbrev-links (2016-10-06) 3 commits + - gitweb: link to "git describe"'d commits in log messages + - gitweb: link to 7-char+ SHA-1s, not only 8-char+ + - gitweb: fix a typo in a comment - "git diff/log --ws-error-highlight=" lacked the corresponding - configuration variable to set it by default. + In addition to purely abbreviated commit object names, "gitweb" + learned to turn "git describe" output (e.g. v2.9.3-599-g2376d31787) + into clickable links in its output. - Undecided. + Waiting for review. -* jk/abbrev-auto (2016-10-03) 1 commit - - find_unique_abbrev: move logic out of get_short_sha1() - (this branch uses lt/abbrev-auto.) +* da/mergetool-diff-order (2016-10-11) 4 commits + (merged to 'next' on 2016-10-11 at 3d1b98c16d) + + mergetool: honor -O + + mergetool: honor diff.orderFile + + mergetool: move main program flow into a main() function + + mergetool: add copyright - Updates the way approximate count of total objects is computed - while attempting to come up with a unique abbreviated object name, - which in turn needs to estimate how many hexdigits are necessary to - ensure uniqueness. + "git mergetool" learned to honor "-O" to control the + order of paths to present to the end user. - Undecided. + Will merge to 'master'. -* jk/clone-copy-alternates-fix (2016-10-05) 1 commit - - clone: detect errors in normalize_path_copy +* jk/ref-symlink-loop (2016-10-10) 2 commits + (merged to 'next' on 2016-10-11 at ac5c35f87f) + + files_read_raw_ref: prevent infinite retry loops in general + + files_read_raw_ref: avoid infinite loop on broken symlinks - "git clone" of a local repository can be done at the filesystem - level, but the codepath did not check errors while copying and - adjusting the file that lists alternate object stores. + A stray symbolic link in $GIT_DIR/refs/ directory could make name + resolution loop forever, which has been corrected. - Will merge to 'next'. + Will merge to 'master'. -* nd/commit-p-doc (2016-10-05) 1 commit - - git-commit.txt: clarify --patch mode with pathspec +* js/prepare-sequencer (2016-10-10) 26 commits + - SQUASH: nobody uses this function yet + - sequencer: mark all error messages for translation + - sequencer: start error messages consistently with lower case + - sequencer: quote filenames in error messages + - sequencer: mark action_name() for translation + - sequencer: remove overzealous assumption in rebase -i mode + - sequencer: refactor write_message() + - sequencer: left-trim lines read from the script + - sequencer: do not try to commit when there were merge conflicts + - sequencer: support cleaning up commit messages + - sequencer: support amending commits + - sequencer: allow editing the commit message on a case-by-case basis + - sequencer: introduce a helper to read files written by scripts + - sequencer: prepare for rebase -i's commit functionality + - sequencer: remember the onelines when parsing the todo file + - sequencer: refactor the code to obtain a short commit name + - sequencer: get rid of the subcommand field + - sequencer: avoid completely different messages for different actions + - sequencer: strip CR from the todo script + - sequencer: completely revamp the "todo" script parsing + - sequencer: future-proof read_populate_todo() + - sequencer: eventually release memory allocated for the option values + - sequencer: future-proof remove_sequencer_state() + - sequencer: avoid unnecessary indirection + - sequencer: use memoized sequencer directory path + - sequencer: use static initializers for replay_opts + + Update of the sequencer codebase to make it reusable to reimplement + "rebase -i" continues. + + Waiting for review. + + +* js/regexec-buf (2016-10-10) 1 commit + (merged to 'next' on 2016-10-11 at 466a26548c) + + configure.ac: improve description of NO_REGEX test - Documentation for "git commit" was updated to clarify that "commit - -p " adds to the current contents of the index to come up - with what to commit. + Will merge to 'master'. - Will merge to 'next'. --------------------------------------------------- -[Stalled] +* rs/cocci (2016-10-10) 2 commits + (merged to 'next' on 2016-10-11 at bbd6a88402) + + use strbuf_add_unique_abbrev() for adding short hashes, part 3 + + remove unnecessary NULL check before free(3) -* jc/bundle (2016-03-03) 6 commits - - index-pack: --clone-bundle option - - Merge branch 'jc/index-pack' into jc/bundle - - bundle v3: the beginning - - bundle: keep a copy of bundle file name in the in-core bundle header - - bundle: plug resource leak - - bundle doc: 'verify' is not about verifying the bundle + Code cleanup. - The beginning of "split bundle", which could be one of the - ingredients to allow "git clone" traffic off of the core server - network to CDN. + Will merge to 'master'. - While I think it would make it easier for people to experiment and - build on if the topic is merged to 'next', I am at the same time a - bit reluctant to merge an unproven new topic that introduces a new - file format, which we may end up having to support til the end of - time. It is likely that to support a "prime clone from CDN", it - would need a lot more than just "these are the heads and the pack - data is over there", so this may not be sufficient. - Will discard. +* sb/submodule-ignore-trailing-slash (2016-10-10) 2 commits + (merged to 'next' on 2016-10-11 at e37425ed17) + + submodule: ignore trailing slash in relative url + + submodule: ignore trailing slash on superproject URL + A minor regression fix for "git submodule". -* jc/attr (2016-05-25) 18 commits + Will merge to 'master'. + + +* st/verify-tag (2016-10-10) 7 commits + - t/t7004-tag: Add --format specifier tests + - t/t7030-verify-tag: Add --format specifier tests + - builtin/tag: add --format argument for tag -v + - builtin/verify-tag: add --format to verify-tag + - tag: add format specifier to gpg_verify_tag + - ref-filter: add function to print single ref_array_item + - gpg-interface, tag: add GPG_VERIFY_QUIET flag + + "git tag" and "git verify-tag" learned to put GPG verification + status in their "--format=" output format. + + Is this ready for 'next'? + + +* js/reset-usage (2016-10-11) 1 commit + (merged to 'next' on 2016-10-11 at 61ad4a7c0e) + + reset: fix usage + + Will merge to 'master'. + + +* mm/credential-libsecret (2016-10-11) 1 commit + - contrib: add credential helper for libsecret + + Will merge to 'next'. + + +* rs/pretty-format-color-doc-fix (2016-10-11) 1 commit + (merged to 'next' on 2016-10-11 at f0ae64bcbd) + + pretty: fix document link for color specification + + Will merge to 'master'. + + +* sb/attr (2016-10-11) 28 commits + - attr: convert to new threadsafe API + - attr: make git_check_attr_counted static + - attr: make git_attr_counted static + - attr.c: outline the future plans by heavily commenting + - attr.c: always pass check[] to collect_some_attrs() + - attr.c: introduce empty_attr_check_elems() + - attr.c: correct ugly hack for git_all_attrs() + - attr.c: rename a local variable check + - attr.c: pass struct git_attr_check down the callchain + - attr.c: add push_stack() helper - attr: support quoting pathname patterns in C style - attr: expose validity check for attribute names - attr: add counted string version of git_attr() @@ -207,68 +295,44 @@ of the repositories listed at - attr.c: update a stale comment on "struct match_attr" - attr.c: use strchrnul() to scan for one line - commit.c: use strchrnul() to scan for one line - (this branch is used by jc/attr-more, sb/pathspec-label and sb/submodule-default-paths.) The attributes API has been updated so that it can later be optimized using the knowledge of which attributes are queried. - I wanted to polish this topic further to make the attribute - subsystem thread-ready, but because other topics depend on this - topic and they do not (yet) need it to be thread-ready. - - As the authors of topics that depend on this seem not in a hurry, - let's discard this and dependent topics and restart them some other - day. - Will discard. +* sb/submodule-config-doc-drop-path (2016-10-11) 1 commit + (merged to 'next' on 2016-10-11 at 28fc3e53f9) + + documentation: improve submodule..{url, path} description + The "submodule..path" stored in .gitmodules is never copied + to .git/config and such a key in .git/config has no meaning, but + the documentation described it and submodule..url next to + each other as if both belong to .git/config. This has been fixed. -* jc/attr-more (2016-06-09) 8 commits - - attr.c: outline the future plans by heavily commenting - - attr.c: always pass check[] to collect_some_attrs() - - attr.c: introduce empty_attr_check_elems() - - attr.c: correct ugly hack for git_all_attrs() - - attr.c: rename a local variable check - - fixup! d5ad6c13 - - attr.c: pass struct git_attr_check down the callchain - - attr.c: add push_stack() helper - (this branch uses jc/attr; is tangled with sb/pathspec-label and sb/submodule-default-paths.) - - The beginning of long and tortuous journey to clean-up attribute - subsystem implementation. - - Needs to be redone. - Will discard. - - -* sb/submodule-default-paths (2016-06-20) 5 commits - - completion: clone can recurse into submodules - - clone: add --init-submodule= switch - - submodule update: add `--init-default-path` switch - - Merge branch 'sb/pathspec-label' into sb/submodule-default-paths - - Merge branch 'jc/attr' into sb/submodule-default-paths - (this branch uses jc/attr and sb/pathspec-label; is tangled with jc/attr-more.) - - Allow specifying the set of submodules the user is interested in on - the command line of "git clone" that clones the superproject. + Will merge to 'master'. - Will discard. +-------------------------------------------------- +[Stalled] +* jc/bundle (2016-03-03) 6 commits + - index-pack: --clone-bundle option + - Merge branch 'jc/index-pack' into jc/bundle + - bundle v3: the beginning + - bundle: keep a copy of bundle file name in the in-core bundle header + - bundle: plug resource leak + - bundle doc: 'verify' is not about verifying the bundle -* sb/pathspec-label (2016-06-03) 6 commits - - pathspec: disable preload-index when attribute pathspec magic is in use - - pathspec: allow escaped query values - - pathspec: allow querying for attributes - - pathspec: move prefix check out of the inner loop - - pathspec: move long magic parsing out of prefix_pathspec - - Documentation: fix a typo - (this branch is used by sb/submodule-default-paths; uses jc/attr; is tangled with jc/attr-more.) + The beginning of "split bundle", which could be one of the + ingredients to allow "git clone" traffic off of the core server + network to CDN. - The pathspec mechanism learned ":(attr:X)$pattern" pathspec magic - to limit paths that match $pattern further by attribute settings. - The preload-index mechanism is disabled when the new pathspec magic - is in use (at least for now), because the attribute subsystem is - not thread-ready. + While I think it would make it easier for people to experiment and + build on if the topic is merged to 'next', I am at the same time a + bit reluctant to merge an unproven new topic that introduces a new + file format, which we may end up having to support til the end of + time. It is likely that to support a "prime clone from CDN", it + would need a lot more than just "these are the heads and the pack + data is over there", so this may not be sufficient. Will discard. @@ -292,42 +356,6 @@ of the repositories listed at this. -* pb/bisect (2016-08-23) 27 commits - . bisect--helper: remove the dequote in bisect_start() - . bisect--helper: retire `--bisect-auto-next` subcommand - . bisect--helper: retire `--bisect-autostart` subcommand - . bisect--helper: retire `--check-and-set-terms` subcommand - . bisect--helper: retire `--bisect-write` subcommand - . bisect--helper: `bisect_replay` shell function in C - . bisect--helper: `bisect_log` shell function in C - . bisect--helper: retire `--write-terms` subcommand - . bisect--helper: retire `--check-expected-revs` subcommand - . bisect--helper: `bisect_state` & `bisect_head` shell function in C - . bisect--helper: `bisect_autostart` shell function in C - . bisect--helper: retire `--next-all` subcommand - . bisect--helper: retire `--bisect-clean-state` subcommand - . bisect--helper: `bisect_next` and `bisect_auto_next` shell function in C - . bisect--helper: `bisect_start` shell function partially in C - . bisect--helper: `get_terms` & `bisect_terms` shell function in C - . bisect--helper: `bisect_next_check` & bisect_voc shell function in C - . bisect--helper: `check_and_set_terms` shell function in C - . bisect--helper: `bisect_write` shell function in C - . bisect--helper: `is_expected_rev` & `check_expected_revs` shell function in C - . bisect--helper: `bisect_reset` shell function in C - . wrapper: move is_empty_file() and rename it as is_empty_or_missing_file() - . t6030: explicitly test for bisection cleanup - . bisect--helper: `bisect_clean_state` shell function in C - . bisect--helper: `write_terms` shell function in C - . bisect: rewrite `check_term_format` shell function in C - . bisect--helper: use OPT_CMDMODE instead of OPT_BOOL - - GSoC "bisect" topic. - - I'd prefer to see early part solidified so that reviews can focus - on the later part that is still in flux. We are almost there but - not quite yet. - - * kn/ref-filter-branch-list (2016-05-17) 17 commits - branch: implement '--format' option - branch: use ref-filter printing APIs @@ -354,70 +382,6 @@ of the repositories listed at Needs review. -* sb/bisect (2016-04-15) 22 commits - . SQUASH??? - . bisect: get back halfway shortcut - . bisect: compute best bisection in compute_relevant_weights() - . bisect: use a bottom-up traversal to find relevant weights - . bisect: prepare for different algorithms based on find_all - . bisect: rename count_distance() to compute_weight() - . bisect: make total number of commits global - . bisect: introduce distance_direction() - . bisect: extract get_distance() function from code duplication - . bisect: use commit instead of commit list as arguments when appropriate - . bisect: replace clear_distance() by unique markers - . bisect: use struct node_data array instead of int array - . bisect: get rid of recursion in count_distance() - . bisect: make algorithm behavior independent of DEBUG_BISECT - . bisect: make bisect compile if DEBUG_BISECT is set - . bisect: plug the biggest memory leak - . bisect: add test for the bisect algorithm - . t6030: generalize test to not rely on current implementation - . t: use test_cmp_rev() where appropriate - . t/test-lib-functions.sh: generalize test_cmp_rev - . bisect: allow 'bisect run' if no good commit is known - . bisect: write about `bisect next` in documentation - - The internal algorithm used in "git bisect" to find the next commit - to check has been optimized greatly. - - Was expecting a reroll, but now pb/bisect topic starts removinging - more and more parts from git-bisect.sh, this needs to see a fresh - reroll. - - Will discard. - cf. <1460294354-7031-1-git-send-email-s-beyer@gmx.net> - - -* sg/completion-updates (2016-02-28) 21 commits - . completion: cache the path to the repository - . completion: extract repository discovery from __gitdir() - . completion: don't guard git executions with __gitdir() - . completion: consolidate silencing errors from git commands - . completion: don't use __gitdir() for git commands - . completion: respect 'git -C ' - . completion: fix completion after 'git -C ' - . completion: don't offer commands when 'git --opt' needs an argument - . rev-parse: add '--absolute-git-dir' option - . completion: list short refs from a remote given as a URL - . completion: don't list 'HEAD' when trying refs completion outside of a repo - . completion: list refs from remote when remote's name matches a directory - . completion: respect 'git --git-dir=' when listing remote refs - . completion: fix most spots not respecting 'git --git-dir=' - . completion: ensure that the repository path given on the command line exists - . completion tests: add tests for the __git_refs() helper function - . completion tests: check __gitdir()'s output in the error cases - . completion tests: consolidate getting path of current working directory - . completion tests: make the $cur variable local to the test helper functions - . completion tests: don't add test cruft to the test repository - . completion: improve __git_refs()'s in-code documentation - - Has been waiting for a reroll for too long. - cf. <1456754714-25237-1-git-send-email-szeder@ira.uka.de> - - Will discard. - - * ec/annotate-deleted (2015-11-20) 1 commit - annotate: skip checking working tree if a revision is provided @@ -463,6 +427,52 @@ of the repositories listed at -------------------------------------------------- [Cooking] +* jc/ws-error-highlight (2016-10-04) 4 commits + - diff: introduce diff.wsErrorHighlight option + - diff.c: move ws-error-highlight parsing helpers up + - diff.c: refactor parse_ws_error_highlight() + - t4015: split out the "setup" part of ws-error-highlight test + + "git diff/log --ws-error-highlight=" lacked the corresponding + configuration variable to set it by default. + + Will merge to 'next'. + + +* jk/abbrev-auto (2016-10-03) 1 commit + - find_unique_abbrev: move logic out of get_short_sha1() + (this branch uses lt/abbrev-auto.) + + Updates the way approximate count of total objects is computed + while attempting to come up with a unique abbreviated object name, + which in turn needs to estimate how many hexdigits are necessary to + ensure uniqueness. + + Undecided. + + +* jk/clone-copy-alternates-fix (2016-10-05) 1 commit + (merged to 'next' on 2016-10-10 at 8154134c8c) + + clone: detect errors in normalize_path_copy + + "git clone" of a local repository can be done at the filesystem + level, but the codepath did not check errors while copying and + adjusting the file that lists alternate object stores. + + Will merge to 'master'. + + +* nd/commit-p-doc (2016-10-05) 1 commit + (merged to 'next' on 2016-10-10 at 5a9996dd7b) + + git-commit.txt: clarify --patch mode with pathspec + + Documentation for "git commit" was updated to clarify that "commit + -p " adds to the current contents of the index to come up + with what to commit. + + Will merge to 'master'. + + * nd/ita-empty-commit (2016-09-28) 3 commits - commit: don't be fooled by ita entries when creating initial commit - diff-lib.c: enable --shift-ita in index_differs_from() @@ -494,7 +504,8 @@ of the repositories listed at * dt/http-empty-auth (2016-10-04) 1 commit - - http: http.emptyauth should allow empty (not just NULL) usernames + (merged to 'next' on 2016-10-10 at 10b7b0a6a5) + + http: http.emptyauth should allow empty (not just NULL) usernames http.emptyauth configuration is a way to allow an empty username to pass when attempting to authenticate using mechanisms like @@ -502,92 +513,88 @@ of the repositories listed at (i.e. no username, no password) to CURLOPT_USERPWD, but did not do the same when the username is explicitly set to an empty string. - Will merge to 'next'. + Will merge to 'master'. * jc/diff-unique-abbrev-comments (2016-09-30) 1 commit - diff_unique_abbrev(): document its assumption and limitation + A bit more comments in a tricky code. -* jk/quarantine-received-objects (2016-10-05) 5 commits - - tmp-objdir: do not migrate files starting with '.' - - tmp-objdir: put quarantine information in the environment - - receive-pack: quarantine objects until pre-receive accepts - - tmp-objdir: introduce API for temporary object directories - - check_connected: accept an env argument - (this branch uses jk/alt-odb-cleanup.) - - In order for the receiving end of "git push" to inspect the - received history and decide to reject the push, the objects sent - from the sending end need to be made available to the hook and - the mechanism for the connectivity check, and this was done - traditionally by storing the objects in the receiving repository - and letting "git gc" to expire it. Instead, store the newly - received objects in a temporary area, and make them available by - reusing the alternate object store mechanism to them only while we - decide if we accept the check, and once we decide, either migrate - them to the repository or purge them immediately. - - Will merge to 'next' after whipping jk/alt-odb-cleanup into shape. + Will merge to 'next'. -* rs/qsort (2016-10-03) 6 commits - (merged to 'next' on 2016-10-06 at 32a5bd3c88) - + show-branch: use QSORT - + use QSORT, part 2 - + coccicheck: use --all-includes by default - + remove unnecessary check before QSORT - + use QSORT - + add QSORT +* jk/quarantine-received-objects (2016-10-10) 5 commits + (merged to 'next' on 2016-10-10 at 0fd3e3b2ef) + + tmp-objdir: do not migrate files starting with '.' + + tmp-objdir: put quarantine information in the environment + + receive-pack: quarantine objects until pre-receive accepts + + tmp-objdir: introduce API for temporary object directories + + check_connected: accept an env argument + (this branch uses jk/alt-odb-cleanup.) - We call "qsort(array, nelem, sizeof(array[0]), fn)", and most of - the time third parameter is redundant. A new QSORT() macro lets us - omit it. + In order for the receiving end of "git push" to inspect the + received history and decide to reject the push, the objects sent + from the sending end need to be made available to the hook and + the mechanism for the connectivity check, and this was done + traditionally by storing the objects in the receiving repository + and letting "git gc" to expire it. Instead, store the newly + received objects in a temporary area, and make them available by + reusing the alternate object store mechanism to them only while we + decide if we accept the check, and once we decide, either migrate + them to the repository or purge them immediately. Will merge to 'master'. -* jk/alt-odb-cleanup (2016-10-05) 19 commits - - alternates: use fspathcmp to detect duplicates - - sha1_file: always allow relative paths to alternates - - count-objects: report alternates via verbose mode - - fill_sha1_file: write into a strbuf - - alternates: store scratch buffer as strbuf - - fill_sha1_file: write "boring" characters - - alternates: use a separate scratch space - - alternates: encapsulate alt->base munging - - alternates: provide helper for allocating alternate - - alternates: provide helper for adding to alternates list - - link_alt_odb_entry: refactor string handling - - link_alt_odb_entry: handle normalize_path errors - - fixup! t5613: clarify "too deep" recursion tests - - t5613: clarify "too deep" recursion tests - - t5613: do not chdir in main process - - t5613: whitespace/style cleanups - - t5613: use test_must_fail - - t5613: drop test_valid_repo function - - t5613: drop reachable_via function +* jk/alt-odb-cleanup (2016-10-10) 18 commits + (merged to 'next' on 2016-10-10 at d2ed6b6d21) + + alternates: use fspathcmp to detect duplicates + + sha1_file: always allow relative paths to alternates + + count-objects: report alternates via verbose mode + + fill_sha1_file: write into a strbuf + + alternates: store scratch buffer as strbuf + + fill_sha1_file: write "boring" characters + + alternates: use a separate scratch space + + alternates: encapsulate alt->base munging + + alternates: provide helper for allocating alternate + + alternates: provide helper for adding to alternates list + + link_alt_odb_entry: refactor string handling + + link_alt_odb_entry: handle normalize_path errors + + t5613: clarify "too deep" recursion tests + + t5613: do not chdir in main process + + t5613: whitespace/style cleanups + + t5613: use test_must_fail + + t5613: drop test_valid_repo function + + t5613: drop reachable_via function (this branch is used by jk/quarantine-received-objects.) - Will merge to 'next' after squashing the fixup! in. + Codepaths involved in interacting alternate object store have + been cleaned up. + + Will merge to 'master'. -* va/i18n-perl-scripts (2016-09-25) 11 commits +* va/i18n-perl-scripts (2016-10-10) 14 commits - i18n: difftool: mark warnings for translation - i18n: send-email: mark string with interpolation for translation - i18n: send-email: mark warnings and errors for translation - i18n: send-email: mark strings for translation + - i18n: add--interactive: mark status words for translation + - i18n: add--interactive: remove %patch_modes entries - i18n: add--interactive: mark edit_hunk_manually message for translation - i18n: add--interactive: i18n of help_patch_cmd - - i18n: add--interactive: mark message for translation + - i18n: add--interactive: mark patch prompt for translation - i18n: add--interactive: mark plural strings + - i18n: clean.c: match string with git-add--interactive.perl - i18n: add--interactive: mark strings with interpolation for translation - - i18n: add--interactive: mark simple here documents for translation + - i18n: add--interactive: mark simple here-documents for translation - i18n: add--interactive: mark strings for translation Porcelain scripts written in Perl are getting internationalized. - Waiting for comments. + Waiting for review. + cf. <20161010125449.7929-1-vascomalmeida@sapo.pt> * jc/latin-1 (2016-09-26) 2 commits @@ -614,23 +621,10 @@ of the repositories listed at Waiting for a response to ping/squash. -* jc/blame-reverse (2016-06-14) 2 commits - (merged to 'next' on 2016-09-22 at d1a8e9ce99) - + blame: dwim "blame --reverse OLD" as "blame --reverse OLD.." - + blame: improve diagnosis for "--reverse NEW" - - It is a common mistake to say "git blame --reverse OLD path", - expecting that the command line is dwimmed as if asking how lines - in path in an old revision OLD have survived up to the current - commit. - - Will merge to 'master'. - - -* js/libify-require-clean-work-tree (2016-10-05) 6 commits +* js/libify-require-clean-work-tree (2016-10-07) 6 commits - wt-status: begin error messages with lower-case - wt-status: teach has_{unstaged,uncommitted}_changes() about submodules - - wt-status: export also the has_un{staged,committed}_changed() + - wt-status: export also the has_un{staged,committed}_changes() functions - wt-status: make the require_clean_work_tree() function reusable - pull: make code more similar to the shell script again - pull: drop confusing prefix parameter of die_on_unclean_work_tree() @@ -642,7 +636,7 @@ of the repositories listed at Will merge to 'next'. -* bw/ls-files-recurse-submodules (2016-10-03) 4 commits +* bw/ls-files-recurse-submodules (2016-10-10) 4 commits - ls-files: add pathspec matching for submodules - ls-files: pass through safe options for --recurse-submodules - ls-files: optionally recurse into submodules @@ -655,10 +649,10 @@ of the repositories listed at side of a pipe that is read with xargs to work on all working tree files from the top-level superproject. - Looking good. Is this ready for 'next'? + Will merge to 'next'. -* ls/filter-process (2016-10-04) 14 commits +* ls/filter-process (2016-10-10) 14 commits - contrib/long-running-filter: add long running filter example - convert: add filter..process option - convert: prepare filter..process option @@ -669,7 +663,7 @@ of the repositories listed at - pkt-line: add packet_write_fmt_gently() - pkt-line: extract set_packet_header() - pkt-line: rename packet_write() to packet_write_fmt() - - run-command: add wait_on_exit + - run-command: add clean_on_exit_handler - run-command: move check_pipe() from write_or_die to run_command - convert: modernize tests - convert: quote filter names in error messages @@ -682,7 +676,8 @@ of the repositories listed at paths, reducing the process creation overhead. -* hv/submodule-not-yet-pushed-fix (2016-09-14) 2 commits +* hv/submodule-not-yet-pushed-fix (2016-10-10) 3 commits + - batch check whether submodule needs pushing into one call - serialize collection of refs that contain submodule changes - serialize collection of changed submodules @@ -692,10 +687,8 @@ of the repositories listed at project that does not have any submodule but have a reasonable number of refs. - The last two in the original series seem to break a few tests when - queued to 'pu', and dropped for now. - - Waiting for a reroll. + Waiting for review. + cf. * sg/fix-versioncmp-with-common-suffix (2016-09-08) 5 commits @@ -714,18 +707,7 @@ of the repositories listed at cf. <20160908223727.Horde.jVOOJ278ssZ3qkyjkmyqZD-@webmail.informatik.kit.edu> -* cp/completion-negative-refs (2016-08-24) 1 commit - (merged to 'next' on 2016-09-22 at abd1585aa6) - + completion: support excluding refs - - The command-line completion script (in contrib/) learned to - complete "git cmd ^mas" to complete the negative end of - reference to "git cmd ^master". - - Will merge to 'master'. - - -* sb/push-make-submodule-check-the-default (2016-10-06) 2 commits +* sb/push-make-submodule-check-the-default (2016-10-10) 2 commits - push: change submodule default to check when submodules exist - submodule add: extend force flag to add existing repos @@ -735,45 +717,6 @@ of the repositories listed at Will hold to wait for hv/submodule-not-yet-pushed-fix -* ak/curl-imap-send-explicit-scheme (2016-08-17) 1 commit - (merged to 'next' on 2016-09-22 at 4449584c26) - + imap-send: Tell cURL to use imap:// or imaps:// - - When we started cURL to talk to imap server when a new enough - version of cURL library is available, we forgot to explicitly add - imap(s):// before the destination. To some folks, that didn't work - and the library tried to make HTTP(s) requests instead. - - Will merge to 'master'. - - -* jk/pack-objects-optim-mru (2016-08-11) 4 commits - (merged to 'next' on 2016-09-21 at 97b919bdbd) - + pack-objects: use mru list when iterating over packs - + pack-objects: break delta cycles before delta-search phase - + sha1_file: make packed_object_info public - + provide an initializer for "struct object_info" - - Originally merged to 'next' on 2016-08-11 - - "git pack-objects" in a repository with many packfiles used to - spend a lot of time looking for/at objects in them; the accesses to - the packfiles are now optimized by checking the most-recently-used - packfile first. - - Will merge to 'master'. - - -* dp/autoconf-curl-ssl (2016-06-28) 1 commit - (merged to 'next' on 2016-09-22 at 9c5aeeced9) - + ./configure.ac: detect SSL in libcurl using curl-config - - The ./configure script generated from configure.ac was taught how - to detect support of SSL by libcurl better. - - Will merge to 'master'. - - * jc/pull-rebase-ff (2016-07-28) 1 commit - pull: fast-forward "pull --rebase=true" @@ -804,49 +747,9 @@ of the repositories listed at Will hold to see if people scream. -* nd/shallow-deepen (2016-06-13) 27 commits - (merged to 'next' on 2016-09-22 at f0cf3e3385) - + fetch, upload-pack: --deepen=N extends shallow boundary by N commits - + upload-pack: add get_reachable_list() - + upload-pack: split check_unreachable() in two, prep for get_reachable_list() - + t5500, t5539: tests for shallow depth excluding a ref - + clone: define shallow clone boundary with --shallow-exclude - + fetch: define shallow boundary with --shallow-exclude - + upload-pack: support define shallow boundary by excluding revisions - + refs: add expand_ref() - + t5500, t5539: tests for shallow depth since a specific date - + clone: define shallow clone boundary based on time with --shallow-since - + fetch: define shallow boundary with --shallow-since - + upload-pack: add deepen-since to cut shallow repos based on time - + shallow.c: implement a generic shallow boundary finder based on rev-list - + fetch-pack: use a separate flag for fetch in deepening mode - + fetch-pack.c: mark strings for translating - + fetch-pack: use a common function for verbose printing - + fetch-pack: use skip_prefix() instead of starts_with() - + upload-pack: move rev-list code out of check_non_tip() - + upload-pack: make check_non_tip() clean things up on error - + upload-pack: tighten number parsing at "deepen" lines - + upload-pack: use skip_prefix() instead of starts_with() - + upload-pack: move "unshallow" sending code out of deepen() - + upload-pack: remove unused variable "backup" - + upload-pack: move "shallow" sending code out of deepen() - + upload-pack: move shallow deepen code out of receive_needs() - + transport-helper.c: refactor set_helper_option() - + remote-curl.c: convert fetch_git() to use argv_array - - The existing "git fetch --depth=" option was hard to use - correctly when making the history of an existing shallow clone - deeper. A new option, "--deepen=", has been added to make this - easier to use. "git clone" also learned "--shallow-since=" - and "--shallow-exclude=" options to make it easier to specify - "I am interested only in the recent N months worth of history" and - "Give me only the history since that version". - - Will merge to 'master'. - - * jc/merge-drop-old-syntax (2015-04-29) 1 commit - - merge: drop 'git merge HEAD ' syntax + (merged to 'next' on 2016-10-11 at 8928c8b9b3) + + merge: drop 'git merge HEAD ' syntax Stop supporting "git merge HEAD " syntax that has been deprecated since October 2007, and issues a deprecation @@ -856,13 +759,181 @@ of the repositories listed at which needs to be fixed before this final step can proceed. cf. <5671DB28.8020901@kdbg.org> - Will merge to 'next'. + Will merge to 'master'. -------------------------------------------------- [Discarded] -* jn/fix-connect-unexpected-hangup-diag (2016-09-08) 1 commit - . connect: tighten check for unexpected early hang up +* jc/attr (2016-05-25) 18 commits + . attr: support quoting pathname patterns in C style + . attr: expose validity check for attribute names + . attr: add counted string version of git_attr() + . attr: add counted string version of git_check_attr() + . attr: retire git_check_attrs() API + . attr: convert git_check_attrs() callers to use the new API + . attr: convert git_all_attrs() to use "struct git_attr_check" + . attr: (re)introduce git_check_attr() and struct git_attr_check + . attr: rename function and struct related to checking attributes + . attr.c: plug small leak in parse_attr_line() + . attr.c: tighten constness around "git_attr" structure + . attr.c: simplify macroexpand_one() + . attr.c: mark where #if DEBUG ends more clearly + . attr.c: complete a sentence in a comment + . attr.c: explain the lack of attr-name syntax check in parse_attr() + . attr.c: update a stale comment on "struct match_attr" + . attr.c: use strchrnul() to scan for one line + . commit.c: use strchrnul() to scan for one line + (this branch is used by jc/attr-more, sb/pathspec-label and sb/submodule-default-paths.) + + The attributes API has been updated so that it can later be + optimized using the knowledge of which attributes are queried. + + I wanted to polish this topic further to make the attribute + subsystem thread-ready, but because other topics depend on this + topic and they do not (yet) need it to be thread-ready. + + As the authors of topics that depend on this seem not in a hurry, + let's discard this and dependent topics and restart them some other + day. + + +* jc/attr-more (2016-06-09) 8 commits + . attr.c: outline the future plans by heavily commenting + . attr.c: always pass check[] to collect_some_attrs() + . attr.c: introduce empty_attr_check_elems() + . attr.c: correct ugly hack for git_all_attrs() + . attr.c: rename a local variable check + . fixup! d5ad6c13 + . attr.c: pass struct git_attr_check down the callchain + . attr.c: add push_stack() helper + (this branch uses jc/attr; is tangled with sb/pathspec-label and sb/submodule-default-paths.) + + The beginning of long and tortuous journey to clean-up attribute + subsystem implementation. + + Needs to be redone. + + +* sb/submodule-default-paths (2016-06-20) 5 commits + . completion: clone can recurse into submodules + . clone: add --init-submodule= switch + . submodule update: add `--init-default-path` switch + . Merge branch 'sb/pathspec-label' into sb/submodule-default-paths + . Merge branch 'jc/attr' into sb/submodule-default-paths + (this branch uses jc/attr and sb/pathspec-label; is tangled with jc/attr-more.) + + Allow specifying the set of submodules the user is interested in on + the command line of "git clone" that clones the superproject. + + +* sb/pathspec-label (2016-06-03) 6 commits + . pathspec: disable preload-index when attribute pathspec magic is in use + . pathspec: allow escaped query values + . pathspec: allow querying for attributes + . pathspec: move prefix check out of the inner loop + . pathspec: move long magic parsing out of prefix_pathspec + . Documentation: fix a typo + (this branch is used by sb/submodule-default-paths; uses jc/attr; is tangled with jc/attr-more.) + + The pathspec mechanism learned ":(attr:X)$pattern" pathspec magic + to limit paths that match $pattern further by attribute settings. + The preload-index mechanism is disabled when the new pathspec magic + is in use (at least for now), because the attribute subsystem is + not thread-ready. + + +* sb/bisect (2016-04-15) 22 commits + . SQUASH??? + . bisect: get back halfway shortcut + . bisect: compute best bisection in compute_relevant_weights() + . bisect: use a bottom-up traversal to find relevant weights + . bisect: prepare for different algorithms based on find_all + . bisect: rename count_distance() to compute_weight() + . bisect: make total number of commits global + . bisect: introduce distance_direction() + . bisect: extract get_distance() function from code duplication + . bisect: use commit instead of commit list as arguments when appropriate + . bisect: replace clear_distance() by unique markers + . bisect: use struct node_data array instead of int array + . bisect: get rid of recursion in count_distance() + . bisect: make algorithm behavior independent of DEBUG_BISECT + . bisect: make bisect compile if DEBUG_BISECT is set + . bisect: plug the biggest memory leak + . bisect: add test for the bisect algorithm + . t6030: generalize test to not rely on current implementation + . t: use test_cmp_rev() where appropriate + . t/test-lib-functions.sh: generalize test_cmp_rev + . bisect: allow 'bisect run' if no good commit is known + . bisect: write about `bisect next` in documentation + + The internal algorithm used in "git bisect" to find the next commit + to check has been optimized greatly. + + Was expecting a reroll, but now pb/bisect topic starts removinging + more and more parts from git-bisect.sh, this needs to see a fresh + reroll. + + cf. <1460294354-7031-1-git-send-email-s-beyer@gmx.net> + + +* sg/completion-updates (2016-02-28) 21 commits + . completion: cache the path to the repository + . completion: extract repository discovery from __gitdir() + . completion: don't guard git executions with __gitdir() + . completion: consolidate silencing errors from git commands + . completion: don't use __gitdir() for git commands + . completion: respect 'git -C ' + . completion: fix completion after 'git -C ' + . completion: don't offer commands when 'git --opt' needs an argument + . rev-parse: add '--absolute-git-dir' option + . completion: list short refs from a remote given as a URL + . completion: don't list 'HEAD' when trying refs completion outside of a repo + . completion: list refs from remote when remote's name matches a directory + . completion: respect 'git --git-dir=' when listing remote refs + . completion: fix most spots not respecting 'git --git-dir=' + . completion: ensure that the repository path given on the command line exists + . completion tests: add tests for the __git_refs() helper function + . completion tests: check __gitdir()'s output in the error cases + . completion tests: consolidate getting path of current working directory + . completion tests: make the $cur variable local to the test helper functions + . completion tests: don't add test cruft to the test repository + . completion: improve __git_refs()'s in-code documentation + + Has been waiting for a reroll for too long. + cf. <1456754714-25237-1-git-send-email-szeder@ira.uka.de> + + +* pb/bisect (2016-08-23) 27 commits + . bisect--helper: remove the dequote in bisect_start() + . bisect--helper: retire `--bisect-auto-next` subcommand + . bisect--helper: retire `--bisect-autostart` subcommand + . bisect--helper: retire `--check-and-set-terms` subcommand + . bisect--helper: retire `--bisect-write` subcommand + . bisect--helper: `bisect_replay` shell function in C + . bisect--helper: `bisect_log` shell function in C + . bisect--helper: retire `--write-terms` subcommand + . bisect--helper: retire `--check-expected-revs` subcommand + . bisect--helper: `bisect_state` & `bisect_head` shell function in C + . bisect--helper: `bisect_autostart` shell function in C + . bisect--helper: retire `--next-all` subcommand + . bisect--helper: retire `--bisect-clean-state` subcommand + . bisect--helper: `bisect_next` and `bisect_auto_next` shell function in C + . bisect--helper: `bisect_start` shell function partially in C + . bisect--helper: `get_terms` & `bisect_terms` shell function in C + . bisect--helper: `bisect_next_check` & bisect_voc shell function in C + . bisect--helper: `check_and_set_terms` shell function in C + . bisect--helper: `bisect_write` shell function in C + . bisect--helper: `is_expected_rev` & `check_expected_revs` shell function in C + . bisect--helper: `bisect_reset` shell function in C + . wrapper: move is_empty_file() and rename it as is_empty_or_missing_file() + . t6030: explicitly test for bisection cleanup + . bisect--helper: `bisect_clean_state` shell function in C + . bisect--helper: `write_terms` shell function in C + . bisect: rewrite `check_term_format` shell function in C + . bisect--helper: use OPT_CMDMODE instead of OPT_BOOL + + GSoC "bisect" topic. - Now part of jt/accept-capability-advertisement-when-fetching-from-void - topic. + I'd prefer to see early part solidified so that reviews can focus + on the later part that is still in flux. We are almost there but + not quite yet. -- 2.47.3