From bd8921cfec88fa1502bb65b68012c99a9d2c99aa Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Mon, 5 Oct 2015 15:58:18 -0700 Subject: [PATCH] What's cooking (2015/10 #01) --- whats-cooking.txt | 1134 ++++++++++++++++++++++++--------------------- 1 file changed, 602 insertions(+), 532 deletions(-) diff --git a/whats-cooking.txt b/whats-cooking.txt index f562c6c2e4..550a2bf756 100644 --- a/whats-cooking.txt +++ b/whats-cooking.txt @@ -1,19 +1,19 @@ To: git@vger.kernel.org Bcc: lwn@lwn.net -Subject: What's cooking in git.git (Sep 2015, #07; Wed, 30) -X-master-at: be08dee9738eaaa0423885ed189c2b6ad8368cf0 -X-next-at: dd5055040e51c9a129af659ad956353485c78698 +Subject: What's cooking in git.git (Oct 2015, #01; Mon, 5) +X-master-at: 24a00ef646974be49ef7138239c3803805400797 +X-next-at: 70ec07ec915776bb723966160671950e8d4a56c2 -What's cooking in git.git (Sep 2015, #07; Wed, 30) +What's cooking in git.git (Oct 2015, #01; Mon, 5) -------------------------------------------------- Here are the topics that have been cooking. Commits prefixed with '-' are only in 'pu' (proposed updates) while commits prefixed with '+' are in 'next'. -Git 2.6.0 was released a few days ago. I'll do 2.6.1 early next -week, together with updates to a few older maintenance tracks, and -we'll start the next cycle after that. +A set of releases for a handful of maintenance tracks have been +tagged (v2.6.1, v2.5.4, v2.4.10 and v2.3.10), thanks to Blake +Burkhart and Jeff King. With somewhat reduced review bandwidth, I'd expect that the upcoming cycle would be slower than usual. At tinyurl.com/gitCal, I @@ -27,177 +27,429 @@ of the repositories listed at http://git-blame.blogspot.com/p/git-public-repositories.html +-------------------------------------------------- +[Graduated to "master"] + +* ad/bisect-terms (2015-08-03) 4 commits + (merged to 'next' on 2015-09-01 at ede6e64) + + bisect: allow setting any user-specified in 'git bisect start' + + bisect: add 'git bisect terms' to view the current terms + + bisect: add the terms old/new + + bisect: sanity check on terms + + The use of 'good/bad' in "git bisect" made it confusing to use when + hunting for a state change that is not a regression (e.g. bugfix). + The command learned 'old/new' and then allows the end user to + say e.g. "bisect start --term-old=fast --term=new=slow" to find a + performance regression. + + Michael's idea to make 'good/bad' more intelligent does have + certain attractiveness ($gname/272867), and may make some of + the work on this topic a moot point, though. + + +* as/subtree-with-spaces (2015-09-08) 2 commits + (merged to 'next' on 2015-09-09 at f3d763d) + + contrib/subtree: respect spaces in a repository path + + t7900-subtree: test the "space in a subdirectory name" case + + Update "git subtree" (in contrib/) so that it can take whitespaces + in the pathnames, not only in the in-tree pathname but the name of + the directory that the repository is in. + + +* bb/remote-get-url (2015-09-17) 1 commit + (merged to 'next' on 2015-09-21 at c07a1e8) + + remote: add get-url subcommand + + "git remote" learned "get-url" subcommand to show the URL for a + given remote name used for fetching and pushing. + + +* dt/refs-bisection (2015-09-01) 3 commits + (merged to 'next' on 2015-09-08 at 2b66bad) + + refs: make refs/bisect/* per-worktree + + path: optimize common dir checking + + refs: clean up common_list + (this branch is used by dt/refs-backend-lmdb.) + + Move the refs used during a "git bisect" session to per-worktree + hierarchy refs/worktree/* so that independent bisect sessions can + be done in different worktrees. + + The second commit may or may not want to be reverted. + + +* jc/rerere (2015-07-24) 21 commits + (merged to 'next' on 2015-08-26 at 8ae15ef) + + rerere: un-nest merge() further + + rerere: use "struct rerere_id" instead of "char *" for conflict ID + + rerere: call conflict-ids IDs + + rerere: further clarify do_rerere_one_path() + + rerere: further de-dent do_plain_rerere() + + rerere: refactor "replay" part of do_plain_rerere() + + rerere: explain the remainder + + rerere: explain "rerere forget" codepath + + rerere: explain the primary codepath + + rerere: explain MERGE_RR management helpers + + rerere: fix benign off-by-one non-bug and clarify code + + rerere: explain the rerere I/O abstraction + + rerere: do not leak mmfile[] for a path with multiple stage #1 entries + + rerere: stop looping unnecessarily + + rerere: drop want_sp parameter from is_cmarker() + + rerere: report autoupdated paths only after actually updating them + + rerere: write out each record of MERGE_RR in one go + + rerere: lift PATH_MAX limitation + + rerere: plug conflict ID leaks + + rerere: handle conflicts with multiple stage #1 entries + + rerere: fix an off-by-one non-bug + (this branch is used by jc/rerere-multi.) + + Code clean-up and minor fixes. + + +* jh/quiltimport-explicit-series-file (2015-09-01) 1 commit + (merged to 'next' on 2015-09-02 at 1129ca4) + + git-quiltimport: add commandline option --series + + "quiltimport" allows to specify the series file by honoring the + $QUILT_SERIES environment and also --series command line option. + + +* jk/async-pkt-line (2015-09-01) 2 commits + (merged to 'next' on 2015-09-02 at e185717) + + pkt-line: show packets in async processes as "sideband" + + run-command: provide in_async query function + + The debugging infrastructure for pkt-line based communication has + been improved to mark the side-band communication specifically. + + +* jk/blame-first-parent (2015-09-16) 1 commit + (merged to 'next' on 2015-09-21 at 7580f6b) + + blame: handle --first-parent + + "git blame --first-parent v1.0..v2.0" was not rejected but did not + limit the blame to commits on the first parent chain. + + +* jk/connect-clear-env (2015-09-08) 2 commits + (merged to 'next' on 2015-09-08 at 86b64f7) + + git_connect: clarify conn->use_shell flag + (merged to 'next' on 2015-09-06 at 9ddbed8) + + git_connect: clear GIT_* environment for ssh + + The ssh transport, just like any other transport over the network, + did not clear GIT_* environment variables, but it is possible to + use SendEnv and AcceptEnv to leak them to the remote invocation of + Git, which is not a good idea at all. Explicitly clear them just + like we do for the local transport. + + +* jk/date-local (2015-09-03) 11 commits + (merged to 'next' on 2015-09-08 at 66781d9) + + t6300: add tests for "-local" date formats + + t6300: make UTC and local dates different + + date: make "local" orthogonal to date format + + date: check for "local" before anything else + + t6300: add test for "raw" date format + + t6300: introduce test_date() helper + + fast-import: switch crash-report date to iso8601 + + Documentation/rev-list: don't list date formats + + Documentation/git-for-each-ref: don't list date formats + + Documentation/config: don't list date formats + + Documentation/blame-options: don't list date formats + + "git log --date=local" used to only show the normal (default) + format in the local timezone. The command learned to take 'local' + as an instruction to use the local timezone with other formats, + e.g. "git show --date=rfc-local". + + +* jk/interpret-trailers-outside-a-repository (2015-09-08) 1 commit + (merged to 'next' on 2015-09-09 at a75fce3) + + interpret-trailers: allow running outside a repository + + Allow "git interpret-trailers" to run outside of a Git repository. + + +* jk/make-findstring-makeflags-fix (2015-09-10) 1 commit + (merged to 'next' on 2015-09-21 at 26ea6e0) + + Makefile: fix MAKEFLAGS tests with multiple flags + + Customization to change the behaviour with "make -w" and "make -s" + in our Makefile was broken when they were used together. + + +* jk/rebase-no-autostash (2015-09-10) 2 commits + (merged to 'next' on 2015-09-21 at 034d726) + + Documentation/git-rebase: fix --no-autostash formatting + + rebase: support --no-autostash + + There was no way to defeat a configured rebase.autostash variable + from the command line, as "git rebase --no-autostash" was missing. + + +* jk/test-lint-forbid-when-finished-in-subshell (2015-09-08) 5 commits + (merged to 'next' on 2015-09-09 at 74ede61) + + test-lib-functions: detect test_when_finished in subshell + + t7800: don't use test_config in a subshell + + test-lib-functions: support "test_config -C ..." + + t5801: don't use test_when_finished in a subshell + + t7610: don't use test_config in a subshell + + Because "test_when_finished" in our test framework queues the + clean-up tasks to be done in a shell variable, it should not be + used inside a subshell. Add a mechanism to allow 'bash' to catch + such uses, and fix the ones that were found. + + +* jw/make-arflags-customizable (2015-09-10) 1 commit + (merged to 'next' on 2015-09-21 at cb3892c1) + + Makefile: allow $(ARFLAGS) specified from the command line + + The Makefile always runs the library archiver with hardcoded "crs" + options, which was inconvenient for exotic platforms on which + people want to use programs with totally different set of command + line options. + + +* kn/for-each-tag (2015-09-17) 17 commits + (merged to 'next' on 2015-09-17 at 1980952) + + tag.c: implement '--merged' and '--no-merged' options + + tag.c: implement '--format' option + + tag.c: use 'ref-filter' APIs + + tag.c: use 'ref-filter' data structures + + ref-filter: add option to match literal pattern + + ref-filter: add support to sort by version + + ref-filter: add support for %(contents:lines=X) + + ref-filter: add option to filter out tags, branches and remotes + + ref-filter: implement an `align` atom + + ref-filter: introduce match_atom_name() + + ref-filter: introduce handler function for each atom + + utf8: add function to align a string into given strbuf + + ref-filter: introduce ref_formatting_state and ref_formatting_stack + + ref-filter: move `struct atom_value` to ref-filter.c + + strtoul_ui: reject negative values + + Merge 'jk/git-path' into kn/for-each-tag + + Merge 'kn/for-each-tag-branch' into kn/for-each-tag + (this branch is used by dt/refs-backend-lmdb, kn/for-each-branch and kn/for-each-branch-remainder; uses kn/for-each-tag-branch.) + + The "ref-filter" code was taught about many parts of what "tag -l" + does and then "tag -l" is being reimplemented in terms of "ref-filter". + + +* kn/for-each-tag-branch (2015-08-03) 11 commits + (merged to 'next' on 2015-08-03 at d9e94b9) + + for-each-ref: add '--contains' option + + ref-filter: implement '--contains' option + + parse-options.h: add macros for '--contains' option + + parse-option: rename parse_opt_with_commit() + + for-each-ref: add '--merged' and '--no-merged' options + + ref-filter: implement '--merged' and '--no-merged' options + + ref-filter: add parse_opt_merge_filter() + + for-each-ref: add '--points-at' option + + ref-filter: implement '--points-at' option + + tag: libify parse_opt_points_at() + + t6302: for-each-ref tests for ref-filter APIs + (this branch is used by dt/refs-backend-lmdb, kn/for-each-branch, kn/for-each-branch-remainder and kn/for-each-tag.) + + Originally merged to 'next' on 2015-07-15 + + Some features from "git tag -l" and "git branch -l" have been made + available to "git for-each-ref" so that eventually the unified + implementation can be shared across all three, in a follow-up + series or two. + + +* ld/p4-import-labels (2015-08-28) 3 commits + (merged to 'next' on 2015-09-01 at cf9f1d6) + + git-p4: fix P4 label import for unprocessed commits + + git-p4: do not terminate creating tag for unknown commit + + git-p4: failing test for ignoring invalid p4 labels + + Correct "git p4 --detect-labels" so that it does not fail to create + a tag that points at a commit that is also being imported. + + +* mm/keyid-docs (2015-09-21) 3 commits + (merged to 'next' on 2015-09-21 at f50ccab) + + Documentation: explain optional arguments better + + Documentation/grep: fix documentation of -O + + Documentation: use 'keyid' consistently, not 'key-id' + + Very small number of options take a parameter that is optional + (which is not a great UI element as they can only appear at the end + of the command line). Add notice to documentation of each and + every one of them. + + +* nk/stash-show-config (2015-08-31) 1 commit + (merged to 'next' on 2015-09-08 at 90dd06f) + + stash: allow "stash show" diff output configurable + + Users who are too busy to type three extra keystrokes to ask for + "git stash show -p" can now set stash.showPatch configuration + varible to true to always see the actual patch, not just the list + of paths affected with feel for the extent of damage via diffstat. + + +* sb/submodule-helper (2015-09-08) 4 commits + (merged to 'next' on 2015-09-21 at 9354b31) + + submodule: rewrite `module_clone` shell function in C + + submodule: rewrite `module_name` shell function in C + + submodule: rewrite `module_list` shell function in C + + Merge 'hv/submodule-config' to 'sb/submodule-helper' + (this branch is used by dt/refs-backend-lmdb and sb/submodule-parallel-fetch.) + + The infrastructure to rewrite "git submodule" in C is being built + incrementally. Let's polish these early parts well enough and make + them graduate to 'next' and 'master', so that the more involved + follow-up can start cooking on a solid ground. + -------------------------------------------------- [New Topics] -* jk/asciidoctor-section-heading-markup-fix (2015-09-25) 1 commit - - Documentation: fix section header mark-up +* dt/refs-backend-lmdb (2015-10-05) 45 commits + - SQUASH??? + - refs: tests for db backend + - refs: add LMDB refs backend + - refs: add register_refs_backend + - refs: allow ref backend to be set for clone + - refs: break out a ref conflict check + - refs: make some files backend functions public + - refs: move some defines from refs-be-files.c to refs.h + - run-command: track total number of commands run + - refs-be-files.c: add method to rename refs + - refs.c: make struct ref_transaction generic + - refs.c: add method for initializing refs db + - initdb: move safe_create_dir into common code + - refs.c: add method for initial ref transaction commit + - refs-be-files.c: add method to expire reflogs + - refs.c: add methods for reflog + - refs.c: add ref backend init function + - refs.c: move should_autocreate_reflog to common code + - refs.c: move peel_object to the common code + - refs.c: move copy_msg to the common code + - refs.h: document make refname_is_safe and add it to header + - refs.c: move refname_is_safe to the common code + - refs-be-files.c: add do_for_each_per_worktree_ref + - refs-be-files.c: add method for for_each_reftype_... + - refs-be-files.c: add methods for the ref iterators + - refs-be-files.c: add methods for misc ref operations + - refs-be-files.c: add a backend method structure with transaction functions + - refs.c: move head_ref_namespaced to the common code + - refs.c: move ref iterators to the common code + - refs.c: move prettify_refname to the common code + - refs.c: move is_branch to the common code + - refs.c: move check_refname_format to the common code + - refs.c: move resolve_refdup to common + - refs.c: move read_ref, read_ref_full and ref_exists to the common code + - refs.c: move warn_if_dangling_symref* to the common code + - refs.c: move dwim and friend functions to the common refs code + - refs.c: move the hidden refs functions to the common code + - refs.c: move read_ref_at to the common refs file + - refs.c: move delete_ref and delete_refs to the common code + - refs.c: move update_ref to refs.c + - refs.c: add a new refs.c file to hold all common refs code + - refs-be-files.c: rename refs to refs-be-files + - refs: make repack_without_refs and is_branch public + - refs.c: create a public version of verify_refname_available + - Merge branch 'jk/war-on-sprintf' into HEAD + (this branch uses jk/war-on-sprintf.) + + Pluggable ref backend. + + Expecting a reroll. + ($gmane/278757). + + +* gr/rebase-i-drop-warn (2015-10-02) 2 commits + - rebase-i: loosen over-eager check_bad_cmd check + - rebase-i: explicitly accept tab as separator in commands + + "git rebase -i" had a minor regression recently, which stopped + considering a line that begins with an indented '#' in its insn + sheet not a comment, which is now fixed. Will merge to 'next'. -* jk/war-on-sprintf (2015-09-28) 68 commits - - name-rev: use strip_suffix to avoid magic numbers - - use strbuf_complete to conditionally append slash - - fsck: use for_each_loose_file_in_objdir - - Makefile: drop D_INO_IN_DIRENT build knob - - fsck: drop inode-sorting code - - convert strncpy to memcpy - - notes: document length of fanout path with a constant - - color: add color_set helper for copying raw colors - - prefer memcpy to strcpy - - help: clean up kfmclient munging - - receive-pack: simplify keep_arg computation - - avoid sprintf and strcpy with flex arrays - - use alloc_ref rather than hand-allocating "struct ref" - - color: add overflow checks for parsing colors - - drop strcpy in favor of raw sha1_to_hex - - use sha1_to_hex_r() instead of strcpy - - daemon: use cld->env_array when re-spawning - - stat_tracking_info: convert to argv_array - - http-push: use an argv_array for setup_revisions - - fetch-pack: use argv_array for index-pack / unpack-objects - - diagnose_invalid_index_path: use strbuf to avoid strcpy/strcat - - write_loose_object: convert to strbuf - - remove_leading_path: use a strbuf for internal storage - - enter_repo: convert fixed-size buffers to strbufs - - merge-recursive: convert malloc / strcpy to strbuf - - transport: use strbufs for status table "quickref" strings - - apply: convert root string to strbuf - - init: use strbufs to store paths - - sha1_get_pack_name: use a strbuf - - http-walker: store url in a strbuf - - http-push: use strbuf instead of fwrite_buffer - - remote-ext: simplify git pkt-line generation - - upload-archive: convert sprintf to strbuf - - resolve_ref: use strbufs for internal buffers - - read_remotes_file: simplify string handling - - read_branches_file: simplify string handling - - mailmap: replace strcpy with xstrdup - - help: drop prepend function in favor of xstrfmt - - ref-filter: drop sprintf and strcpy calls - - use strip_suffix and xstrfmt to replace suffix - - fetch: replace static buffer with xstrfmt - - config: use xstrfmt in normalize_value - - replace trivial malloc + sprintf / strcpy calls with xstrfmt - - receive-pack: convert strncpy to xsnprintf - - http-push: replace strcat with xsnprintf - - add_packed_git: convert strcpy into xsnprintf - - entry.c: convert strcpy to xsnprintf - - grep: use xsnprintf to format failure message - - compat/hstrerror: convert sprintf to snprintf - - stop_progress_msg: convert sprintf to xsnprintf - - find_short_object_filename: convert sprintf to xsnprintf - - use xsnprintf for generating git object headers - - archive-tar: use xsnprintf for trivial formatting - - convert trivial sprintf / strcpy calls to xsnprintf - - compat/inet_ntop: fix off-by-one in inet_ntop4 - - test-dump-cache-tree: avoid overflow of cache-tree name - - progress: store throughput display in a strbuf - - trace: use strbuf for quote_crnl output - - mailsplit: make PATH_MAX buffers dynamic - - fsck: use strbuf to generate alternate directories - - add reentrant variants of sha1_to_hex and find_unique_abbrev - - strbuf: make strbuf_complete_line more generic - - add git_path_buf helper function - - add xsnprintf helper function - - fsck: don't fsck alternates for connectivity-only check - - archive-tar: fix minor indentation violation - - mailsplit: fix FILE* leak in split_maildir - - show-branch: avoid segfault with --reflog of unborn branch +* kn/for-each-branch-remainder (2015-10-02) 9 commits + - branch: implement '--format' option + - branch: use ref-filter printing APIs + - ref-filter: make %(upstream:track) prints "[gone]" for invalid upstreams + - ref-filter: introduce format_ref_array_item() + - ref-filter: adopt get_head_description() from branch.c + - ref-filter: modify "%(objectname:short)" to take length + - ref-filter: add support for %(path) atom + - ref-filter: implement %(if:equals=) and %(if:notequals=) + - ref-filter: implement %(if), %(then), and %(else) atoms + (this branch uses kn/for-each-branch.) - Needs further tweaking - ($gmane/278837) + More unification among "branch -l", "tag -l" and "for-each-ref --format". + Expecting a reroll. + ($gmane/278926) -* rp/link-curl-before-ssl (2015-09-25) 3 commits - - configure: make curl-config path configurable - - configure.ac: detect ssl need with libcurl - - Makefile: link libcurl before openssl and crypto - - Will merge to 'next'. - - -* sb/http-flaky-test-fix (2015-09-25) 1 commit - - t5561: get rid of racy appending to logfile - - Will merge to 'next'. - - -* sb/perf-without-installed-git (2015-09-25) 1 commit - - t/perf: make runner work even if Git is not installed - - Will merge to 'next'. - - -* tk/typofix-connect-unknown-proto-error (2015-09-25) 1 commit - - connect: fix typo in result string of prot_name() - - Will merge to 'next'. - - -* js/clone-dissociate (2015-09-28) 1 commit - - clone --dissociate: avoid locking pack files - - "git clone --dissociate" runs a big "git repack" process at the - end, and it helps to close file descriptors that are open on the - packs and their idx files before doing so on filesystems that - cannot remove a file that is still open. - - Needs more review discussion. - ($gmane/278859). - - -* js/gc-with-stale-symref (2015-09-28) 4 commits - - gc: remove broken symrefs - - mark_reachable_objects(): optionally collect broken symrefs - - pack-objects: do not get distracted by broken symrefs - - gc: demonstrate failure with stale remote HEAD - - The tip one both the original author and a reviewer felt iffy about. - - -* js/icase-wt-detection (2015-09-28) 1 commit - - setup: fix "inside work tree" detection on case-insensitive filesystems - - Will merge to 'next'. - - -* mm/detach-at-HEAD-reflog (2015-09-28) 2 commits - - status: don't say 'HEAD detached at HEAD' - - t3203: test 'detached at' after checkout --detach - - Will merge to 'next'. - - -* nd/ls-remote-does-not-have-u-option (2015-09-28) 1 commit - - ls-remote.txt: delete unsupported option - - Will merge to 'next'. - - -* pt/am-builtin (2015-09-30) 1 commit - - am: configure gpg at startup - - When "git am" was rewritten as a built-in, it stopped paying - attention to user.signingkey. - - Will merge to 'next'. - - -* sa/send-email-smtp-batch-data-limit (2015-09-30) 1 commit - - git-send-email.perl: Fixed sending of many/huge changes/patches - - When "git send-email" wanted to talk over Net::SMTP::SSL, - Net::Cmd::datasend() did not like to be fed too many bytes at the - same time and failed to send messages. Send the payload one line - at a time to work around the problem. +* pt/pull-builtin (2015-10-02) 1 commit + - merge: grammofix in please-commit-before-merge message Will merge to 'next'. -------------------------------------------------- [Stalled] +* dk/gc-idx-wo-pack (2015-08-17) 3 commits + - DONTMERGE: log message, grace-period and tests $gmane/276058 + - gc: remove stale .idx files without corresponding .pack file + - prepare_packed_git(): refactor garbage reporting in pack directory + + Having a leftover .idx file without correspoinding .pack file in + the repository hurts performance; "git gc" learned to prune them. + + Waiting for a reroll. + + +* nd/ita-cleanup (2015-09-06) 6 commits + - grep: make it clear i-t-a entries are ignored + - checkout(-index): do not checkout i-t-a entries + - apply: make sure check_preimage() does not leave empty file on error + - apply: fix adding new files on i-t-a entries + - add and use a convenience macro ce_intent_to_add() + - blame: remove obsolete comment + + Paths that have been told the index about with "add -N" are not yet + in the index, but various commands behaved as if they already are. + + Some commits need better explanation. + + Waiting for a reroll. + + +* ld/p4-detached-head (2015-09-09) 2 commits + - git-p4: work with a detached head + - git-p4: add failing test for submit from detached head + + Will be rerolled. + ($gmane/277574) + + +* mr/worktree-list (2015-10-02) 7 commits + - SQUASH??? + - worktree: add 'list' command + - worktree: add details to the worktree struct + - worktree: add a function to get worktree details + - SQUASH??? + - worktree: refactor find_linked_symref function + - worktree: add top-level worktree.c + + Add the "list" subcommand to "git worktree". + + Waiting for a reroll. + ($gmane/278529). + + * mg/httpd-tests-update-for-apache-2.4 (2015-04-08) 2 commits - t/lib-git-svn: check same httpd module dirs as lib-httpd - t/lib-httpd: load mod_unixd @@ -260,6 +512,187 @@ of the repositories listed at -------------------------------------------------- [Cooking] +* jk/asciidoctor-section-heading-markup-fix (2015-09-25) 1 commit + - Documentation: fix section header mark-up + + Will merge to 'next'. + + +* jk/war-on-sprintf (2015-10-05) 70 commits + - name-rev: use strip_suffix to avoid magic numbers + - use strbuf_complete to conditionally append slash + - fsck: use for_each_loose_file_in_objdir + - Makefile: drop D_INO_IN_DIRENT build knob + - fsck: drop inode-sorting code + - convert strncpy to memcpy + - notes: document length of fanout path with a constant + - color: add color_set helper for copying raw colors + - prefer memcpy to strcpy + - help: clean up kfmclient munging + - receive-pack: simplify keep_arg computation + - avoid sprintf and strcpy with flex arrays + - use alloc_ref rather than hand-allocating "struct ref" + - color: add overflow checks for parsing colors + - drop strcpy in favor of raw sha1_to_hex + - use sha1_to_hex_r() instead of strcpy + - daemon: use cld->env_array when re-spawning + - stat_tracking_info: convert to argv_array + - http-push: use an argv_array for setup_revisions + - fetch-pack: use argv_array for index-pack / unpack-objects + - diagnose_invalid_index_path: use strbuf to avoid strcpy/strcat + - write_loose_object: convert to strbuf + - remove_leading_path: use a strbuf for internal storage + - enter_repo: convert fixed-size buffers to strbufs + - merge-recursive: convert malloc / strcpy to strbuf + - transport: use strbufs for status table "quickref" strings + - apply: convert root string to strbuf + - init: use strbufs to store paths + - probe_utf8_pathname_composition: use internal strbuf + - precompose_utf8: drop unused variable + - sha1_get_pack_name: use a strbuf + - http-walker: store url in a strbuf + - http-push: use strbuf instead of fwrite_buffer + - remote-ext: simplify git pkt-line generation + - upload-archive: convert sprintf to strbuf + - resolve_ref: use strbufs for internal buffers + - read_remotes_file: simplify string handling + - read_branches_file: simplify string handling + - mailmap: replace strcpy with xstrdup + - help: drop prepend function in favor of xstrfmt + - ref-filter: drop sprintf and strcpy calls + - use strip_suffix and xstrfmt to replace suffix + - fetch: replace static buffer with xstrfmt + - config: use xstrfmt in normalize_value + - replace trivial malloc + sprintf / strcpy calls with xstrfmt + - receive-pack: convert strncpy to xsnprintf + - http-push: replace strcat with xsnprintf + - add_packed_git: convert strcpy into xsnprintf + - entry.c: convert strcpy to xsnprintf + - grep: use xsnprintf to format failure message + - compat/hstrerror: convert sprintf to snprintf + - stop_progress_msg: convert sprintf to xsnprintf + - find_short_object_filename: convert sprintf to xsnprintf + - use xsnprintf for generating git object headers + - archive-tar: use xsnprintf for trivial formatting + - convert trivial sprintf / strcpy calls to xsnprintf + - compat/inet_ntop: fix off-by-one in inet_ntop4 + - test-dump-cache-tree: avoid overflow of cache-tree name + - progress: store throughput display in a strbuf + - trace: use strbuf for quote_crnl output + - mailsplit: make PATH_MAX buffers dynamic + - fsck: use strbuf to generate alternate directories + - add reentrant variants of sha1_to_hex and find_unique_abbrev + - strbuf: make strbuf_complete_line more generic + - add git_path_buf helper function + - add xsnprintf helper function + - fsck: don't fsck alternates for connectivity-only check + - archive-tar: fix minor indentation violation + - mailsplit: fix FILE* leak in split_maildir + - show-branch: avoid segfault with --reflog of unborn branch + (this branch is used by dt/refs-backend-lmdb.) + + Many allocations that is manually counted (correctly) that are + followed by strcpy/sprintf have been replaced with a less error + prone constructs such as xstrfmt. + + Macintosh-specific breakage was noticed and corrected in this + reroll. + + Will wait for a week or so before merging to 'next'. + + +* rp/link-curl-before-ssl (2015-09-25) 3 commits + - configure: make curl-config path configurable + - configure.ac: detect ssl need with libcurl + - Makefile: link libcurl before openssl and crypto + + Rerolls exist, but are still being discussed. + + +* sb/http-flaky-test-fix (2015-09-25) 1 commit + - t5561: get rid of racy appending to logfile + + Will merge to 'next'. + + +* sb/perf-without-installed-git (2015-09-25) 1 commit + - t/perf: make runner work even if Git is not installed + + Performance-measurement tests did not work without an installed Git. + + Will merge to 'next'. + + +* tk/typofix-connect-unknown-proto-error (2015-09-25) 1 commit + - connect: fix typo in result string of prot_name() + + Will merge to 'next'. + + +* js/clone-dissociate (2015-10-05) 4 commits + - clone --dissociate: avoid locking pack files + - sha1_file.c: add a function to release all packs + - sha1_file: consolidate code to close a pack's file descriptor + - t5700: demonstrate a Windows file locking issue with `git clone --dissociate` + + "git clone --dissociate" runs a big "git repack" process at the + end, and it helps to close file descriptors that are open on the + packs and their idx files before doing so on filesystems that + cannot remove a file that is still open. + + Will merge to 'next'. + + +* js/gc-with-stale-symref (2015-10-05) 2 commits + - pack-objects: do not get distracted by broken symrefs + - gc: demonstrate failure with stale remote HEAD + + "git gc" used to barf when a symbolic ref has gone dangling + (e.g. the branch that used to be your upstream's default when you + cloned from it is now gone, and you did "fetch --prune"). + + Will merge to 'next'. + + +* js/icase-wt-detection (2015-09-28) 1 commit + - setup: fix "inside work tree" detection on case-insensitive filesystems + + Will merge to 'next'. + + +* mm/detach-at-HEAD-reflog (2015-10-02) 2 commits + - status: don't say 'HEAD detached at HEAD' + - t3203: test 'detached at' after checkout --detach + + Will merge to 'next'. + + +* nd/ls-remote-does-not-have-u-option (2015-09-28) 1 commit + - ls-remote.txt: delete unsupported option + + Will merge to 'next'. + + +* pt/am-builtin (2015-09-30) 1 commit + - am: configure gpg at startup + + When "git am" was rewritten as a built-in, it stopped paying + attention to user.signingkey. + + Will merge to 'next'. + + +* sa/send-email-smtp-batch-data-limit (2015-09-30) 1 commit + - git-send-email.perl: Fixed sending of many/huge changes/patches + + When "git send-email" wanted to talk over Net::SMTP::SSL, + Net::Cmd::datasend() did not like to be fed too many bytes at the + same time and failed to send messages. Send the payload one line + at a time to work around the problem. + + Will merge to 'next'. + + * ls/p4-translation-failure (2015-09-22) 2 commits - git-p4: handle "Translation of file content failed" - git-p4: add test case for "Translation of file content failed" error @@ -270,20 +703,6 @@ of the repositories listed at Will merge to 'next'. -* mr/worktree-list (2015-09-23) 6 commits - - SQUASH??? - - worktree: add 'list' command - - worktree: add functions to get worktree details - - worktree: refactor find_linked_symref function - - SQUASH??? - - worktree: add top-level worktree.c - - Add the "list" subcommand to "git worktree". - - Waiting for a reroll. - ($gmane/278529). - - * jk/notes-dwim-doc (2015-09-22) 1 commit - notes: correct documentation of DWIMery for notes references @@ -302,7 +721,7 @@ of the repositories listed at - branch: roll show_detached HEAD into regular ref_list - branch: bump get_head_description() to the top - branch: refactor width computation - (this branch uses kn/for-each-tag and kn/for-each-tag-branch.) + (this branch is used by kn/for-each-branch-remainder.) Update "git branch" that list existing branches, using the ref-filter API that is shared with "git tag" and "git @@ -320,20 +739,6 @@ of the repositories listed at Will merge to 'next'. -* mm/keyid-docs (2015-09-21) 3 commits - (merged to 'next' on 2015-09-21 at f50ccab) - + Documentation: explain optional arguments better - + Documentation/grep: fix documentation of -O - + Documentation: use 'keyid' consistently, not 'key-id' - - Very small number of options take a parameter that is optional - (which is not a great UI element as they can only appear at the end - of the command line). Add notice to documentation of each and - every one of them. - - Will merge to 'master'. - - * nd/gc-auto-background-fix (2015-09-21) 1 commit - gc: save log from daemonized gc --auto and print it next time @@ -344,24 +749,6 @@ of the repositories listed at Will merge to 'next'. -* jk/blame-first-parent (2015-09-16) 1 commit - (merged to 'next' on 2015-09-21 at 7580f6b) - + blame: handle --first-parent - - "git blame --first-parent v1.0..v2.0" was not rejected but did not - limit the blame to commits on the first parent chain. - - Will merge to 'master'. - - -* ld/p4-detached-head (2015-09-09) 2 commits - - git-p4: work with a detached head - - git-p4: add failing test for submit from detached head - - Will be rerolled. - ($gmane/277574) - - * jk/graph-format-padding (2015-09-14) 1 commit - pretty: pass graph width to pretty formatting for use in '%>|(N)' @@ -381,39 +768,6 @@ of the repositories listed at ($gmane/278326) -* jk/make-findstring-makeflags-fix (2015-09-10) 1 commit - (merged to 'next' on 2015-09-21 at 26ea6e0) - + Makefile: fix MAKEFLAGS tests with multiple flags - - Customization to change the behaviour with "make -w" and "make -s" - in our Makefile was broken when they were used together. - - Will merge to 'master'. - - -* jk/rebase-no-autostash (2015-09-10) 2 commits - (merged to 'next' on 2015-09-21 at 034d726) - + Documentation/git-rebase: fix --no-autostash formatting - + rebase: support --no-autostash - - There was no way to defeat a configured rebase.autostash variable - from the command line, as "git rebase --no-autostash" was missing. - - Will merge to 'master'. - - -* jw/make-arflags-customizable (2015-09-10) 1 commit - (merged to 'next' on 2015-09-21 at cb3892c1) - + Makefile: allow $(ARFLAGS) specified from the command line - - The Makefile always runs the library archiver with hardcoded "crs" - options, which was inconvenient for exotic platforms on which - people wants to use programs with totally different set of command - line options. - - Will merge to 'master'. - - * nd/ignore-then-not-ignore (2015-09-21) 2 commits (merged to 'next' on 2015-09-21 at 2182591) + dir.c: don't exclude whole dir prematurely if neg pattern may match @@ -426,22 +780,23 @@ of the repositories listed at Will merge to 'master'. -* sb/submodule-parallel-fetch (2015-09-30) 9 commits +* sb/submodule-parallel-fetch (2015-10-02) 8 commits - submodules: allow parallel fetching, add tests and documentation - fetch_populated_submodules: use new parallel job processing - - SQUASH??? return_value() is fed possibly uninitialized code - run-command: add an asynchronous parallel child processor - sigchain: add command to pop all common signals - strbuf: add strbuf_read_once to read without blocking - xread_nonblock: add functionality to read from fds without blocking - xread: poll on non blocking fds - submodule.c: write "Fetching submodule " to stderr - (this branch uses sb/submodule-helper.) Add a framework to spawn a group of processes in parallel, and use it to run "git fetch --recurse-submodules" in parallel. The overall structure seems more-or-less sensible. + ($gmane/278873) + + Will merge to 'next'. * mk/submodule-gitdir-path (2015-09-14) 2 commits @@ -454,21 +809,6 @@ of the repositories listed at Will merge to 'next'. -* jk/connect-clear-env (2015-09-08) 2 commits - (merged to 'next' on 2015-09-08 at 86b64f7) - + git_connect: clarify conn->use_shell flag - (merged to 'next' on 2015-09-06 at 9ddbed8) - + git_connect: clear GIT_* environment for ssh - - The ssh transport, just like any other transport over the network, - did not clear GIT_* environment variables, but it is possible to - use SendEnv and AcceptEnv to leak them to the remote invocation of - Git, which is not a good idea at all. Explicitly clear them just - like we do for the local transport. - - Will merge to 'master'. - - * ti/glibc-stdio-mutex-from-signal-handler (2015-09-04) 1 commit (merged to 'next' on 2015-09-08 at c8047ba) + pager: don't use unsafe functions in signal handlers @@ -479,18 +819,6 @@ of the repositories listed at tries to free() some data structures in wait_for_pager(). Reduce these unsafe calls. - Will merge to 'next'. - - -* as/subtree-with-spaces (2015-09-08) 2 commits - (merged to 'next' on 2015-09-09 at f3d763d) - + contrib/subtree: respect spaces in a repository path - + t7900-subtree: test the "space in a subdirectory name" case - - Update "git subtree" (in contrib/) so that it can take whitespaces - in the pathnames, not only in the in-tree pathname but the name of - the directory that the repository is in. - Will merge to 'master'. @@ -504,32 +832,7 @@ of the repositories listed at Will merge to 'master'. -* jk/interpret-trailers-outside-a-repository (2015-09-08) 1 commit - (merged to 'next' on 2015-09-09 at a75fce3) - + interpret-trailers: allow running outside a repository - - Allow "git interpret-trailers" to run outside of a Git repository. - - Will merge to 'master'. - - -* jk/test-lint-forbid-when-finished-in-subshell (2015-09-08) 5 commits - (merged to 'next' on 2015-09-09 at 74ede61) - + test-lib-functions: detect test_when_finished in subshell - + t7800: don't use test_config in a subshell - + test-lib-functions: support "test_config -C ..." - + t5801: don't use test_when_finished in a subshell - + t7610: don't use test_config in a subshell - - Because "test_when_finished" in our test framework queues the - clean-up tasks to be done in a shell variable, it should not be - used inside a subshell. Add a mechanism to allow 'bash' to catch - such uses, and fix the ones that were found. - - Will merge to 'master'. - - -* ls/p4-lfs (2015-09-28) 7 commits +* ls/p4-lfs (2015-10-03) 7 commits - git-p4: add Git LFS backend for large file system - git-p4: add support for large file systems - git-p4: check free space during streaming @@ -558,61 +861,6 @@ of the repositories listed at Will merge to 'next'. -* jh/quiltimport-explicit-series-file (2015-09-01) 1 commit - (merged to 'next' on 2015-09-02 at 1129ca4) - + git-quiltimport: add commandline option --series - - "quiltimport" allows to specify the series file by honoring the - $QUILT_SERIES environment and also --series command line option. - - Will merge to 'master'. - - -* jk/async-pkt-line (2015-09-01) 2 commits - (merged to 'next' on 2015-09-02 at e185717) - + pkt-line: show packets in async processes as "sideband" - + run-command: provide in_async query function - - The debugging infrastructure for pkt-line based communication has - been improved to mark the side-band communicatio specifically. - - Will merge to 'master'. - - -* jk/date-local (2015-09-03) 11 commits - (merged to 'next' on 2015-09-08 at 66781d9) - + t6300: add tests for "-local" date formats - + t6300: make UTC and local dates different - + date: make "local" orthogonal to date format - + date: check for "local" before anything else - + t6300: add test for "raw" date format - + t6300: introduce test_date() helper - + fast-import: switch crash-report date to iso8601 - + Documentation/rev-list: don't list date formats - + Documentation/git-for-each-ref: don't list date formats - + Documentation/config: don't list date formats - + Documentation/blame-options: don't list date formats - - "git log --date=local" used to only allow to show the normal - (default) format in the local timezone. The command learned to take - 'local' as an instruction to use the local timezone with other - formats, e.g. "git show --date=rfc-local". - - Will merge to 'master'. - - -* nk/stash-show-config (2015-08-31) 1 commit - (merged to 'next' on 2015-09-08 at 90dd06f) - + stash: allow "stash show" diff output configurable - - Users who are too busy to type three extra keystrokes to ask for - "git stash show -p" can now set stash.showPatch configuration - varible to true to always see the actual patch, not just the list - of paths affected with feel for the extent of damage via diffstat. - - Will merge to 'master'. - - * ls/p4-path-encoding (2015-09-21) 3 commits (merged to 'next' on 2015-09-21 at 0772d82) + git-p4: use replacement character for non UTF-8 characters in paths @@ -627,128 +875,6 @@ of the repositories listed at Will merge to 'master'. -* ad/bisect-terms (2015-08-03) 4 commits - (merged to 'next' on 2015-09-01 at ede6e64) - + bisect: allow setting any user-specified in 'git bisect start' - + bisect: add 'git bisect terms' to view the current terms - + bisect: add the terms old/new - + bisect: sanity check on terms - - The use of 'good/bad' in "git bisect" made it confusing to use when - hunting for a state change that is not a regression (e.g. bugfix). - The command learned 'old/new' and then allows the end user to - say e.g. "bisect start --term-old=fast --term=new=slow" to find a - performance regression. - - Michael's idea to make 'good/bad' more intelligent does have - certain attractiveness ($gname/272867), and makes some of the work - on this topic a moot point. - - Will merge to 'master'. - - -* dt/refs-bisection (2015-09-01) 3 commits - (merged to 'next' on 2015-09-08 at 2b66bad) - + refs: make refs/bisect/* per-worktree - + path: optimize common dir checking - + refs: clean up common_list - - Move the refs used during a "git bisect" session to per-worktree - hierarchy refs/worktree/* so that independent bisect sessions can - be done in different worktrees. - - Will merge to 'master'. - - -* ld/p4-import-labels (2015-08-28) 3 commits - (merged to 'next' on 2015-09-01 at cf9f1d6) - + git-p4: fix P4 label import for unprocessed commits - + git-p4: do not terminate creating tag for unknown commit - + git-p4: failing test for ignoring invalid p4 labels - - Will merge to 'master'. - - -* kn/for-each-tag (2015-09-17) 17 commits - (merged to 'next' on 2015-09-17 at 1980952) - + tag.c: implement '--merged' and '--no-merged' options - + tag.c: implement '--format' option - + tag.c: use 'ref-filter' APIs - + tag.c: use 'ref-filter' data structures - + ref-filter: add option to match literal pattern - + ref-filter: add support to sort by version - + ref-filter: add support for %(contents:lines=X) - + ref-filter: add option to filter out tags, branches and remotes - + ref-filter: implement an `align` atom - + ref-filter: introduce match_atom_name() - + ref-filter: introduce handler function for each atom - + utf8: add function to align a string into given strbuf - + ref-filter: introduce ref_formatting_state and ref_formatting_stack - + ref-filter: move `struct atom_value` to ref-filter.c - + strtoul_ui: reject negative values - + Merge 'jk/git-path' into kn/for-each-tag - + Merge 'kn/for-each-tag-branch' into kn/for-each-tag - (this branch is used by kn/for-each-branch; uses kn/for-each-tag-branch.) - - The "ref-filter" code was taught about many parts of what "tag -l" - does and then "tag -l" is reimplemented in terms of "ref-filter". - - Will merge to 'master'. - - -* nd/ita-cleanup (2015-09-06) 6 commits - - grep: make it clear i-t-a entries are ignored - - checkout(-index): do not checkout i-t-a entries - - apply: make sure check_preimage() does not leave empty file on error - - apply: fix adding new files on i-t-a entries - - add and use a convenience macro ce_intent_to_add() - - blame: remove obsolete comment - - Paths that have been told the index about with "add -N" are not yet - in the index, but various commands behaved as if they already are. - - Some commits need better explanation. - - Waiting for a reroll. - - -* dk/gc-idx-wo-pack (2015-08-17) 3 commits - - DONTMERGE: log message, grace-period and tests $gmane/276058 - - gc: remove stale .idx files without corresponding .pack file - - prepare_packed_git(): refactor garbage reporting in pack directory - - Having a leftover .idx file without correspoinding .pack file in - the repository hurts performance; "git gc" learned to prune them. - - Waiting for a reroll. - - -* bb/remote-get-url (2015-09-17) 1 commit - (merged to 'next' on 2015-09-21 at c07a1e8) - + remote: add get-url subcommand - - "git remote" learned "get-url" subcommand to show the URL for a - given remote name used for fetching and pushing. - - Will merge to 'master'. - - -* sb/submodule-helper (2015-09-08) 4 commits - (merged to 'next' on 2015-09-21 at 9354b31) - + submodule: rewrite `module_clone` shell function in C - + submodule: rewrite `module_name` shell function in C - + submodule: rewrite `module_list` shell function in C - + Merge 'hv/submodule-config' to 'sb/submodule-helper' - (this branch is used by sb/submodule-parallel-fetch.) - - The infrastructure to rewrite "git submodule" in C is being built - incrementally. Let's polish these early parts well enough and make - them graduate to 'next' and 'master', so that the more involved - follow-up can start cooking on a solid ground. - - Will merge to 'master'. - - * ad/cygwin-wants-rename (2015-08-07) 1 commit - config.mak.uname: Cygwin needs OBJECT_CREATION_USES_RENAMES @@ -756,61 +882,6 @@ of the repositories listed at ($gmane/275680). -* kn/for-each-tag-branch (2015-08-03) 11 commits - (merged to 'next' on 2015-08-03 at d9e94b9) - + for-each-ref: add '--contains' option - + ref-filter: implement '--contains' option - + parse-options.h: add macros for '--contains' option - + parse-option: rename parse_opt_with_commit() - + for-each-ref: add '--merged' and '--no-merged' options - + ref-filter: implement '--merged' and '--no-merged' options - + ref-filter: add parse_opt_merge_filter() - + for-each-ref: add '--points-at' option - + ref-filter: implement '--points-at' option - + tag: libify parse_opt_points_at() - + t6302: for-each-ref tests for ref-filter APIs - (this branch is used by kn/for-each-branch and kn/for-each-tag.) - - Originally merged to 'next' on 2015-07-15 - - Some features from "git tag -l" and "git branch -l" have been made - available to "git for-each-ref" so that eventually the unified - implementation can be shared across all three, in a follow-up - series or two. - - Will merge to 'master'. - - -* jc/rerere (2015-07-24) 21 commits - (merged to 'next' on 2015-08-26 at 8ae15ef) - + rerere: un-nest merge() further - + rerere: use "struct rerere_id" instead of "char *" for conflict ID - + rerere: call conflict-ids IDs - + rerere: further clarify do_rerere_one_path() - + rerere: further de-dent do_plain_rerere() - + rerere: refactor "replay" part of do_plain_rerere() - + rerere: explain the remainder - + rerere: explain "rerere forget" codepath - + rerere: explain the primary codepath - + rerere: explain MERGE_RR management helpers - + rerere: fix benign off-by-one non-bug and clarify code - + rerere: explain the rerere I/O abstraction - + rerere: do not leak mmfile[] for a path with multiple stage #1 entries - + rerere: stop looping unnecessarily - + rerere: drop want_sp parameter from is_cmarker() - + rerere: report autoupdated paths only after actually updating them - + rerere: write out each record of MERGE_RR in one go - + rerere: lift PATH_MAX limitation - + rerere: plug conflict ID leaks - + rerere: handle conflicts with multiple stage #1 entries - + rerere: fix an off-by-one non-bug - (this branch is used by jc/rerere-multi.) - - Code clean-up and minor fixes. - - Will merge to 'master'. - - * jc/rerere-multi (2015-09-14) 7 commits - rerere: do use multiple variants - t4200: rerere a merge with two identical conflicts @@ -819,7 +890,6 @@ of the repositories listed at - rerere: handle leftover rr-cache/$ID directory and postimage files - rerere: scan $GIT_DIR/rr-cache/$ID when instantiating a rerere_id - rerere: split conflict ID further - (this branch uses jc/rerere.) "git rerere" can encounter two or more files with the same conflict signature that have to be resolved in different ways, but there was @@ -835,7 +905,7 @@ of the repositories listed at Stop supporting "git merge HEAD " syntax that has been deprecated since October 2007. - Will keep in 'next' during the 2.6 cycle. + Will keep in 'next' during the 2.7 cycle. -------------------------------------------------- [Discarded]