]> git.ipfire.org Git - thirdparty/git.git/commitdiff
What's cooking (2016/04 #07)
authorJunio C Hamano <gitster@pobox.com>
Mon, 25 Apr 2016 22:42:15 +0000 (15:42 -0700)
committerJunio C Hamano <gitster@pobox.com>
Mon, 25 Apr 2016 22:42:15 +0000 (15:42 -0700)
whats-cooking.txt

index 4136d9bb458df7a70f9544f8bc13f0bd7b9d119b..8232ada17ce685a2f734c6938fd0e10816a866a4 100644 (file)
@@ -1,10 +1,10 @@
 To: git@vger.kernel.org
 Bcc: lwn@lwn.net
-Subject: What's cooking in git.git (Apr 2016, #06; Thu, 21)
-X-master-at: e6ac6e1f7d54584c2b03f073b5f329a37f4a9561
-X-next-at: 1352ede9d7e10ec5ebc541fb841397c8b165343a
+Subject: What's cooking in git.git (Apr 2016, #07; Mon, 25)
+X-master-at: 3ad15fd5e17bbb73fb1161ff4e9c3ed254d5b243
+X-next-at: 47c30140aa02f0c43ba32e2926b716ce2e74b57d
 
-What's cooking in git.git (Apr 2016, #06; Thu, 21)
+What's cooking in git.git (Apr 2016, #07; Mon, 25)
 --------------------------------------------------
 
 Here are the topics that have been cooking.  Commits prefixed with
@@ -23,136 +23,295 @@ of the repositories listed at
     http://git-blame.blogspot.com/p/git-public-repositories.html
 
 --------------------------------------------------
-[New Topics]
+[Graduated to "master"]
 
-* jd/p4-jobs-in-commit (2016-04-19) 2 commits
- - git-p4: add P4 jobs to git commit message
- - git-p4: clean-up code style in tests
+* ad/commit-have-m-option (2016-04-07) 2 commits
+  (merged to 'next' on 2016-04-13 at 74088c2)
+ + commit: do not ignore an empty message given by -m ''
+ + commit: --amend -m '' silently fails to wipe message
 
- "git p4" learned to record P4 jobs in Git commit that imports from
the history in Perforce.
+ "git commit" misbehaved in a few minor ways when an empty message
is given via -m '', all of which has been corrected.
 
- Will merge to 'next'.
 
+* ad/cygwin-wants-rename (2015-08-07) 1 commit
+  (merged to 'next' on 2016-04-19 at 1352ede)
+ + config.mak.uname: Cygwin needs OBJECT_CREATION_USES_RENAMES
 
-* js/replace-edit-use-editor-configuration (2016-04-20) 1 commit
- - replace --edit: respect core.editor
+ On Cygwin, object creation uses the "create a temporary and then
+ rename it to the final name" pattern, not "create a temporary,
+ hardlink it to the final name and then unlink the temporary"
+ pattern.
 
- "git replace -e" did not honour "core.editor" configuration.
+ This is necessary to use Git on Windows shared directories, and is
+ already enabled for the MinGW and plain Windows builds.  It also
+ has been used in Cygwin packaged versions of Git for quite a while.
+ See http://thread.gmane.org/gmane.comp.version-control.git/291853
+ ($gmane/275680, $gmane/291853).
 
- Will merge to 'next'.
 
+* dt/pre-refs-backend (2016-04-10) 24 commits
+  (merged to 'next' on 2016-04-13 at 0a8f9dd)
+ + refs: on symref reflog expire, lock symref not referrent
+ + refs: move resolve_ref_unsafe into common code
+ + show_head_ref(): check the result of resolve_ref_namespace()
+ + check_aliased_update(): check that dst_name is non-NULL
+ + checkout_paths(): remove unneeded flag variable
+ + cmd_merge(): remove unneeded flag variable
+ + fsck_head_link(): remove unneeded flag variable
+ + read_raw_ref(): change flags parameter to unsigned int
+ + files-backend: inline resolve_ref_1() into resolve_ref_unsafe()
+ + read_raw_ref(): manage own scratch space
+ + files-backend: break out ref reading
+ + resolve_ref_1(): eliminate local variable "bad_name"
+ + resolve_ref_1(): reorder code
+ + resolve_ref_1(): eliminate local variable
+ + resolve_ref_unsafe(): ensure flags is always set
+ + resolve_ref_unsafe(): use for loop to count up to MAXDEPTH
+ + resolve_missing_loose_ref(): simplify semantics
+ + t1430: improve test coverage of deletion of badly-named refs
+ + t1430: test for-each-ref in the presence of badly-named refs
+ + t1430: don't rely on symbolic-ref for creating broken symrefs
+ + t1430: clean up broken refs/tags/shadow
+ + t1430: test the output and error of some commands more carefully
+ + refs: move for_each_*ref* functions into common code
+ + refs: move head_ref{,_submodule} to the common code
+
+ Code restructuring around the "refs" area to prepare for pluggable
+ refs backends.
 
-* ls/p4-lfs (2016-04-19) 2 commits
- - git-p4: fix Git LFS pointer parsing
- - travis-ci: update Git-LFS and P4 to the latest version
 
- Recent update to Git LFS broke "git p4" by changing the output from
- its "lfs pointer" subcommand.
+* en/merge-octopus-fix (2016-04-12) 2 commits
+  (merged to 'next' on 2016-04-13 at 600b479)
+ + merge-octopus: abort if index does not match HEAD
+ + t6044: new merge testcases for when index doesn't match HEAD
 
+ "merge-octopus" strategy did not ensure that the index is clean
+ when merge begins.
 
-* sb/mv-submodule-fix (2016-04-19) 1 commit
- - mv: allow moving nested submodules
 
- "git mv old new" did not adjust the path for a submodule that lives
- as a subdirectory inside old/ directory correctly.
+* en/merge-trivial-fix (2016-04-12) 2 commits
+  (merged to 'next' on 2016-04-13 at fb3ea86)
+ + builtin/merge.c: fix a bug with trivial merges
+ + t7605: add a testcase demonstrating a bug with trivial merges
 
- Will merge to 'next'.
+ When "git merge" notices that the merge can be resolved purely at
+ the tree level (without having to merge blobs) and the resulting
+ tree happens to already exist in the object store, it forgot to
+ update the index, which lead to an inconsistent state for later
+ operations.
 
 
-* tb/convert-eol-autocrlf (2016-04-19) 4 commits
- - convert.c: ident + core.autocrlf didn't work
- - t0027: test cases for combined attributes
- - convert: allow core.autocrlf=input and core.eol=crlf
- - t0027: avoid false "unchanged" due to lstat() matching after a change
+* ew/send-email-drop-data-dumper (2016-04-06) 1 commit
+  (merged to 'next' on 2016-04-13 at 180266c)
+ + send-email: do not load Data::Dumper
+
+ Code clean-up.
+
+
+* ew/send-email-readable-message-id (2016-04-06) 1 commit
+  (merged to 'next' on 2016-04-13 at 422959a)
+ + send-email: more meaningful Message-ID
+
+ "git send-email" now uses a more readable timestamps when
+ formulating a message ID.
+
+
+* jc/http-socks5h (2016-04-10) 1 commit
+  (merged to 'next' on 2016-04-13 at eb27afc)
+ + http: differentiate socks5:// and socks5h://
 
- Setting core.autocrlf to 'input' and core.eol to 'crlf' used to be
- rejected, but because the code gives precedence to core.autcrlf,
- there is no need to, hence we no longer reject the combination.
+ The socks5:// proxy support added back in 2.6.4 days was not aware
+ that socks5h:// proxies behave differently.
+
+
+* jc/rerere-multi (2016-04-06) 11 commits
+  (merged to 'next' on 2016-04-13 at 3db2753)
+ + rerere: adjust 'forget' to multi-variant world order
+ + rerere: split code to call ll_merge() further
+ + rerere: move code related to "forget" together
+ + rerere: gc and clear
+ + rerere: do use multiple variants
+ + t4200: rerere a merge with two identical conflicts
+ + rerere: allow multiple variants to exist
+ + rerere: delay the recording of preimage
+ + 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
+
+ "git rerere" can encounter two or more files with the same conflict
+ signature that have to be resolved in different ways, but there was
+ no way to record these separate resolutions.
+
+
+* jc/xstrfmt-null-with-prec-0 (2016-04-07) 1 commit
+  (merged to 'next' on 2016-04-13 at 2457462)
+ + setup.c: do not feed NULL to "%.*s" even with precision 0
+
+ Code cleanup.
+
+
+* jk/do-not-printf-NULL (2016-04-10) 3 commits
+  (merged to 'next' on 2016-04-13 at 60912e3)
+ + git_config_set_multivar_in_file: handle "unset" errors
+ + git_config_set_multivar_in_file: all non-zero returns are errors
+ + config: lower-case first word of error strings
+
+ "git config" had a codepath that tried to pass a NULL to
+ printf("%s"), which nobody seems to have noticed.
+
+
+* jk/use-write-script-more (2016-04-12) 3 commits
+  (merged to 'next' on 2016-04-13 at d6718bf)
+ + t3404: use write_script
+ + t1020: do not overuse printf and use write_script
+ + t5532: use write_script
+
+ Code clean-up.
+
+
+* ky/imap-send (2016-04-13) 2 commits
+  (merged to 'next' on 2016-04-13 at 52cf493)
+ + imap-send: fix CRAM-MD5 response calculation
+ + imap-send: check for NOLOGIN capability only when using LOGIN command
+
+ Support for CRAM-MD5 authentication method in "git imap-send" did
+ not work well.
+
+
+* ky/imap-send-openssl-1.1.0 (2016-04-08) 4 commits
+  (merged to 'next' on 2016-04-13 at 49d2643)
+ + configure: remove checking for HMAC_CTX_cleanup
+ + imap-send: avoid deprecated TLSv1_method()
+ + imap-send: check NULL return of SSL_CTX_new()
+ + imap-send: use HMAC() function provided by OpenSSL
+
+ Upcoming OpenSSL 1.1.0 will break compilation b updating a few APIs
+ we use in imap-send, which has been adjusted for the change.
+
+
+* sb/submodule-helper-clone-regression-fix (2016-04-01) 6 commits
+  (merged to 'next' on 2016-04-13 at c6584bb)
+ + submodule--helper, module_clone: catch fprintf failure
+ + submodule--helper: do not borrow absolute_path() result for too long
+ + submodule--helper, module_clone: always operate on absolute paths
+ + submodule--helper clone: create the submodule path just once
+ + submodule--helper: fix potential NULL-dereference
+ + recursive submodules: test for relative paths
+ (this branch is used by sb/submodule-init.)
+
+ A partial rewrite of "git submodule" in the 2.7 timeframe changed
+ the way the gitdir: pointer in the submodules point at the real
+ repository location to use absolute paths by accident.  This has
+ been corrected.
+
+
+* sb/submodule-path-misc-bugs (2016-03-30) 6 commits
+  (merged to 'next' on 2016-04-18 at 9daa5ce)
+ + t7407: make expectation as clear as possible
+ + submodule update: test recursive path reporting from subdirectory
+ + submodule update: align reporting path for custom command execution
+ + submodule status: correct path handling in recursive submodules
+ + submodule update --init: correct path handling in recursive submodules
+ + submodule foreach: correct path display in recursive submodules
+ (this branch is used by sb/submodule-init.)
+
+ "git submodule" reports the paths of submodules the command
+ recurses into, but this was incorrect when the command was not run
+ from the root level of the superproject.
+
+--------------------------------------------------
+[New Topics]
+
+* js/name-rev-use-oldest-ref (2016-04-22) 1 commit
+ - name-rev: include taggerdate in considering the best name
+
+ "git describe --contains" often made a hard-to-justify choice of
+ tag to give name to a given commit, because it tried to come up
+ with a name with smallest number of hops from a tag, causing an old
+ commit whose close descendant that is recently tagged were not
+ described with respect to an old tag but with a newer tag.  It did
+ not help that its computation of "hop" count was further tweaked to
+ penalize being on a side branch of a merge.  The logic has been
+ updated to favor using the tag with the oldest tagger date, which
+ is a lot easier to explain to the end users: "We describe a commit
+ in terms of the (chronologically) oldest tag that contains the
+ commit."
 
  Will merge to 'next'.
 
 
-* bc/object-id (2016-04-19) 6 commits
- - match-trees: convert several leaf functions to use struct object_id
- - tree-walk: convert tree_entry_extract() to use struct object_id
- - struct name_entry: use struct object_id instead of unsigned char sha1[20]
- - match-trees: convert shift_tree() and shift_tree_by() to use object_id
- - test-match-trees: convert to use struct object_id
- - sha1-name: introduce a get_oid() function
+* js/win32-mmap (2016-04-22) 3 commits
+  (merged to 'next' on 2016-04-22 at cd39c60)
+ + mmap(win32): avoid expensive fstat() call
+ + mmap(win32): avoid copy-on-write when it is unnecessary
+ + win32mmap: set errno appropriately
 
- Will be rerolled.
- ($gmane/291950)
+ mmap emulation on Windows has been optimized.
 
+ Will merge to 'master'.
 
-* ep/http-curl-trace (2016-04-20) 3 commits
- - git.txt: document the new GIT_TRACE_CURL environment variable
- - imap-send.c: introduce the GIT_TRACE_CURL enviroment variable
- - http.c: implement the GIT_TRACE_CURL environment variable
 
- HTTP transport gained an option to produce more detailed debugging
- trace.
+* nd/remove-unused (2016-04-22) 2 commits
+ - wrapper.c: delete dead function git_mkstemps()
+ - dir.c: remove dead function fnmatch_icase()
 
- Still under discussion.
- ($gmane/292074)
+ Code cleanup.
 
+ Will merge to 'next'.
 
-* nd/worktree-various-heads (2016-04-20) 13 commits
- - branch: do not rename a branch under bisect or rebase
- - worktree.c: test if branch being bisected in another worktree
- - wt-status.c: split bisect detection out of wt_status_get_state()
- - worktree.c: test if branch being rebased in another worktree
- - worktree.c: avoid referencing to worktrees[i] multiple times
- - wt-status.c: make wt_status_check_rebase() work on any worktree
- - SQUASH???
- - wt-status.c: split rebase detection out of wt_status_get_state()
- - path.c: refactor and add worktree_git_path()
- - worktree.c: mark current worktree
- - worktree.c: make find_shared_symref() return struct worktree *
- - worktree.c: store "id" instead of "git_dir"
- - path.c: add git_common_path() and strbuf_git_common_path()
 
- The experimental "multiple worktree" feature gains more safety to
- forbid operations on a branch that is checked out or being actively
- worked on elsewhere, by noticing that e.g. it is being rebased.
+* rt/string-list-lookup-cleanup (2016-04-25) 1 commit
+ - string_list: use string-list API in unsorted_string_list_lookup()
 
- Being reviewed.
- ($gmane/292050)
+ Code cleanup.
 
+ Will merge to 'next'.
 
-* bw/rebase-merge-entire-branch (2016-04-20) 1 commit
- - git-rebase--merge: don't include absent parent as a base
 
- "git rebase -m" could be asked to rebase an entire branch starting
- from the root, but failed by assuming that there always is a parent
- commit to the first commit on the branch.
+* sg/test-lib-simplify-expr-away (2016-04-22) 1 commit
+ - test-lib: simplify '--option=value' parsing
+
+ Code cleanup.
 
  Will merge to 'next'.
 
 
-* jk/push-client-deadlock-fix (2016-04-20) 5 commits
- - t5504: drop sigpipe=ok from push tests
- - fetch-pack: isolate sigpipe in demuxer thread
- - send-pack: isolate sigpipe in demuxer thread
- - run-command: teach async threads to ignore SIGPIPE
- - send-pack: close demux pipe before finishing async process
+* ew/fast-import-unpack-limit (2016-04-24) 1 commit
+ - fast-import: implement unpack limit
 
- "git push" from a corrupt repository that attempts to push a large
- number of refs deadlocked waiting for a rejection from the
- receiving end that will never come.
+ "git fast-import" learned the same performance trick to avoid
+ creating too small a packfile as "git fetch" and "git push" have,
+ using *.unpackLimit configuration.
+
+ Need to pick up the rerolled version.
+ ($gmane/292562)
+
+
+* jd/send-email-to-whom (2016-04-25) 1 commit
+ - send-email: fix grammo in the prompt that asks e-mail recipients
+
+ A question by "git send-email" to ask the identity of the sender
+ has been updated.
 
  Will merge to 'next'.
 
 
-* jc/merge-refuse-new-root (2016-04-21) 2 commits
- - pull: pass --allow-unrelated-histories to "git merge"
- - t3033: avoid 'ambiguous refs' warning
+* ld/p4-test-py3 (2016-04-25) 2 commits
+ - git-p4 tests: work with python3 as well as python2
+ - git-p4 tests: cd to testdir before running python
 
- "git pull" has been taught to pass --allow-unrelated-histories
- option to underlying "git merge".
+ The test scripts for "git p4" (but not "git p4" implementation
+ itself) has been updated so that they would work even on a system
+ where the installed version of Python is python 3.
+
+
+* ls/p4-lfs-test-fix-2.7.0 (2016-04-24) 1 commit
+ - t9824: fix broken &&-chain in a subshell
+
+ Fix a broken test.
 
  Will merge to 'next'.
 
 --------------------------------------------------
 [Stalled]
@@ -208,32 +367,6 @@ of the repositories listed at
  Needs review.
 
 
-* sb/clone-shallow-passthru (2016-04-13) 3 commits
- - clone: add t5614 to test cloning submodules with shallowness involved
- - clone: add `--shallow-submodules` flag
- - submodule clone: pass along `local` option
-
- "git clone" learned "--shallow-submodules" option.
-
- Needs review.
-
-
-* da/user-useconfigonly (2016-04-01) 2 commits
- - ident: give "please tell me" message upon useConfigOnly error
- - ident: check for useConfigOnly before auto-detection of name/email
-
- The "user.useConfigOnly" configuration variable makes it an error
- if users do not explicitly set user.name and user.email.  However,
- its check was not done early enough and allowed another error to
- trigger, reporting that the default value we guessed from the
- system setting was unusable.  This was a suboptimal end-user
- experience as we want the users to set user.name/user.email without
- relying on the auto-detection at all.
-
- Waiting for Acks.
- ($gmane/290340)
-
-
 * sg/completion-updates (2016-02-28) 21 commits
  - completion: cache the path to the repository
  - completion: extract repository discovery from __gitdir()
@@ -329,8 +462,6 @@ of the repositories listed at
  Being able to make a direct call would be good in general, but as a
  performance thing, the change needs to be backed up by numbers.
 
- Needs review.
-
  I haven't gone through the "gently" change with fine toothed comb;
  I can see that the change avoids calling die(), but I haven't made
  sure that the program states (e.g. what's in the in-core index) are
@@ -340,6 +471,9 @@ of the repositories listed at
  point of dying exactly because it knew it is going to exit, but now
  they have to care, and they need to be audited.
 
+ Will be rerolled.
+ ($gmane/292205)
+
 
 * dk/gc-more-wo-pack (2016-01-13) 4 commits
  - gc: clean garbage .bitmap files from pack dir
@@ -350,27 +484,201 @@ of the repositories listed at
  Follow-on to dk/gc-idx-wo-pack topic, to clean up stale
  .bitmap and .keep files.
 
- Waiting for a reroll.
- ($gmane/284368).
+ Waiting for a reroll.
+ ($gmane/284368).
+
+
+* jc/diff-b-m (2015-02-23) 5 commits
+ . WIPWIP
+ . WIP: diff-b-m
+ - diffcore-rename: allow easier debugging
+ - diffcore-rename.c: add locate_rename_src()
+ - diffcore-break: allow debugging
+
+ "git diff -B -M" produced incorrect patch when the postimage of a
+ completely rewritten file is similar to the preimage of a removed
+ file; such a resulting file must not be expressed as a rename from
+ other place.
+
+ The fix in this patch is broken, unfortunately.
+ Will discard.
+
+--------------------------------------------------
+[Cooking]
+
+* sb/clone-shallow-passthru (2016-04-25) 1 commit
+ - clone: add `--shallow-submodules` flag
+
+ "git clone" learned "--shallow-submodules" option.
+
+ Modulo minor nits, looked ready.
+ ($gmane/292539)
+
+
+* da/user-useconfigonly (2016-04-01) 2 commits
+  (merged to 'next' on 2016-04-22 at 26845a5)
+ + ident: give "please tell me" message upon useConfigOnly error
+ + ident: check for useConfigOnly before auto-detection of name/email
+
+ The "user.useConfigOnly" configuration variable makes it an error
+ if users do not explicitly set user.name and user.email.  However,
+ its check was not done early enough and allowed another error to
+ trigger, reporting that the default value we guessed from the
+ system setting was unusable.  This was a suboptimal end-user
+ experience as we want the users to set user.name/user.email without
+ relying on the auto-detection at all.
+
+ Will merge to 'master'.
+
+
+* jd/p4-jobs-in-commit (2016-04-19) 2 commits
+ - git-p4: add P4 jobs to git commit message
+ - git-p4: clean-up code style in tests
+
+ "git p4" learned to record P4 jobs in Git commit that imports from
+ the history in Perforce.
+
+ Will merge to 'next'.
+
+
+* js/replace-edit-use-editor-configuration (2016-04-20) 1 commit
+  (merged to 'next' on 2016-04-22 at 8df6d30)
+ + replace --edit: respect core.editor
+
+ "git replace -e" did not honour "core.editor" configuration.
+
+ Will merge to 'master'.
+
+
+* ls/p4-lfs (2016-04-19) 2 commits
+ - git-p4: fix Git LFS pointer parsing
+ - travis-ci: update Git-LFS and P4 to the latest version
+
+ Recent update to Git LFS broke "git p4" by changing the output from
+ its "lfs pointer" subcommand.
+
+
+* sb/mv-submodule-fix (2016-04-19) 1 commit
+  (merged to 'next' on 2016-04-22 at 089e788)
+ + mv: allow moving nested submodules
+
+ "git mv old new" did not adjust the path for a submodule that lives
+ as a subdirectory inside old/ directory correctly.
+
+ Will merge to 'master'.
+
+
+* tb/convert-eol-autocrlf (2016-04-25) 10 commits
+ - ce_compare_data() did not respect conversion
+ - t6038; use crlf on all platforms
+ - convert.c: more safer crlf handling with text attribute
+ - convert: unify the "auto" handling of CRLF
+ - convert.c: stream and early out
+ - read-cache: factor out get_sha1_from_index() helper
+ - convert.c: ident + core.autocrlf didn't work
+ - t0027: test cases for combined attributes
+ - convert: allow core.autocrlf=input and core.eol=crlf
+ - t0027: make commit_chk_wrnNNO() reliable
+
+ The combination of text=auto & eol=crlf (or eol=lf for that matter)
+ is taught to be much more useful; it used to be "auto detection"
+ was defeated as if setting eol declares that the file _is_ text,
+ but now text=auto is still in effect for such a path and the code
+ refrains from applying eol conversion if it found the path is not
+ text.  Also setting core.autocrlf to 'input' and core.eol to 'crlf'
+ used to be rejected, but because the code gives precedence to
+ core.autcrlf, there is no need to, hence we no longer reject the
+ combination.
+
+ Modulo minor nits, looked almost ready.
+ ($gmane/292521, $gmane/292550)
+
+
+* bc/object-id (2016-04-25) 6 commits
+ - match-trees: convert several leaf functions to use struct object_id
+ - tree-walk: convert tree_entry_extract() to use struct object_id
+ - struct name_entry: use struct object_id instead of unsigned char sha1[20]
+ - match-trees: convert shift_tree() and shift_tree_by() to use object_id
+ - test-match-trees: convert to use struct object_id
+ - sha1-name: introduce a get_oid() function
+
+ Move from unsigned char[20] to struct object_id continues.
+
+ Will merge to 'next'.
+
+
+* ep/http-curl-trace (2016-04-20) 3 commits
+ - git.txt: document the new GIT_TRACE_CURL environment variable
+ - imap-send.c: introduce the GIT_TRACE_CURL enviroment variable
+ - http.c: implement the GIT_TRACE_CURL environment variable
+
+ HTTP transport gained an option to produce more detailed debugging
+ trace.
+
+ Still under discussion.
+ ($gmane/292074)
+
+
+* nd/worktree-various-heads (2016-04-22) 13 commits
+ - branch: do not rename a branch under bisect or rebase
+ - worktree.c: check whether branch is bisected in another worktree
+ - wt-status.c: split bisect detection out of wt_status_get_state()
+ - worktree.c: check whether branch is rebased in another worktree
+ - worktree.c: avoid referencing to worktrees[i] multiple times
+ - wt-status.c: make wt_status_check_rebase() work on any worktree
+ - wt-status.c: split rebase detection out of wt_status_get_state()
+ - path.c: refactor and add worktree_git_path()
+ - worktree.c: mark current worktree
+ - worktree.c: make find_shared_symref() return struct worktree *
+ - worktree.c: store "id" instead of "git_dir"
+ - path.c: add git_common_path() and strbuf_git_common_path()
+ - dir.c: rename str(n)cmp_icase to fspath(n)cmp
+
+ The experimental "multiple worktree" feature gains more safety to
+ forbid operations on a branch that is checked out or being actively
+ worked on elsewhere, by noticing that e.g. it is being rebased.
+
+ Being reviewed.
+ ($gmane/292189)
+
+
+* bw/rebase-merge-entire-branch (2016-04-24) 1 commit
+ - git-rebase--merge: don't include absent parent as a base
+
+ "git rebase -m" could be asked to rebase an entire branch starting
+ from the root, but failed by assuming that there always is a parent
+ commit to the first commit on the branch.
+
+ Will merge to 'next'.
+
+
+* jk/push-client-deadlock-fix (2016-04-20) 5 commits
+  (merged to 'next' on 2016-04-22 at d59a2af)
+ + t5504: drop sigpipe=ok from push tests
+ + fetch-pack: isolate sigpipe in demuxer thread
+ + send-pack: isolate sigpipe in demuxer thread
+ + run-command: teach async threads to ignore SIGPIPE
+ + send-pack: close demux pipe before finishing async process
+
+ "git push" from a corrupt repository that attempts to push a large
+ number of refs deadlocked; the thread to relay rejection notices
+ for these ref updates blocked on writing them to the main thread,
+ after the main thread at the receiving end notices that the push
+ failed and decides not to read these notices and return a failure.
 
+ Will merge to 'master'.
 
-* jc/diff-b-m (2015-02-23) 5 commits
- . WIPWIP
- . WIP: diff-b-m
- - diffcore-rename: allow easier debugging
- - diffcore-rename.c: add locate_rename_src()
- - diffcore-break: allow debugging
 
- "git diff -B -M" produced incorrect patch when the postimage of a
- completely rewritten file is similar to the preimage of a removed
- file; such a resulting file must not be expressed as a rename from
- other place.
+* jc/merge-refuse-new-root (2016-04-21) 2 commits
+  (merged to 'next' on 2016-04-22 at 74eb957)
+ + pull: pass --allow-unrelated-histories to "git merge"
+ + t3033: avoid 'ambiguous refs' warning
 
- The fix in this patch is broken, unfortunately.
- Will discard.
+ "git pull" has been taught to pass --allow-unrelated-histories
+ option to underlying "git merge".
+
+ Will merge to 'master'.
 
---------------------------------------------------
-[Cooking]
 
 * pb/commit-verbose-config (2016-04-19) 6 commits
  - commit: add a commit.verbose config variable
@@ -384,8 +692,8 @@ of the repositories listed at
  configuration variable and act as if "--verbose" option was
  given from the command line.
 
- Is this going to be rerolled?
- ($gmane/291382)
+ Need a reroll but it will be some time before that happens.
+ ($gmane/292160).
 
 
 * en/merge-fixes (2016-04-12) 2 commits
@@ -398,31 +706,6 @@ of the repositories listed at
  Will merge to 'next'.
 
 
-* en/merge-octopus-fix (2016-04-12) 2 commits
-  (merged to 'next' on 2016-04-13 at 600b479)
- + merge-octopus: abort if index does not match HEAD
- + t6044: new merge testcases for when index doesn't match HEAD
-
- "merge-octopus" strategy did not ensure that the index is clean
- when merge begins.
-
- Will merge to 'master'.
-
-
-* en/merge-trivial-fix (2016-04-12) 2 commits
-  (merged to 'next' on 2016-04-13 at fb3ea86)
- + builtin/merge.c: fix a bug with trivial merges
- + t7605: add a testcase demonstrating a bug with trivial merges
-
- When "git merge" notices that the merge can be resolved purely at
- the tree level (without having to merge blobs) and the resulting
- tree happens to already exist in the object store, it forgot to
- update the index, which lead to an inconsistent state for later
- operations.
-
- Will merge to 'master'.
-
-
 * jc/fsck-nul-in-commit (2016-04-14) 2 commits
  - fsck: detect and warn a commit with embedded NUL
  - fsck_commit_buffer(): do not special case the last validation
@@ -439,25 +722,27 @@ of the repositories listed at
 
 
 * jk/diff-compact-heuristic (2016-04-19) 2 commits
- - xdiff: implement empty line chunk heuristic
- - xdiff: add recs_match helper function
+  (merged to 'next' on 2016-04-22 at 0c117ea)
+ + xdiff: implement empty line chunk heuristic
+ + xdiff: add recs_match helper function
 
  Patch output from "git diff" and friends has been tweaked to be
  more readable by using a blank line as a strong hint that the
  contents before and after it belong to a logically separate unit.
 
- Will merge to 'next'.
+ Will merge to 'master'.
 
 
 * nd/test-helpers (2016-04-15) 2 commits
- - test helpers: move test-* to t/helper/ subdirectory
- - Makefile: clean *.o files we create
+  (merged to 'next' on 2016-04-22 at 55ea5cd)
+ + test helpers: move test-* to t/helper/ subdirectory
+ + Makefile: clean *.o files we create
 
  Sources to many test helper binaries (and the generated helpers)
  have been moved to t/helper/ subdirectory to reduce clutter at the
  top level of the tree.
 
- Will merge to 'next'.
+ Will merge to 'master'.
 
 
 * sb/submodule-init (2016-04-16) 4 commits
@@ -465,98 +750,12 @@ of the repositories listed at
  - submodule: port resolve_relative_url from shell to C
  - Merge branch 'sb/submodule-path-misc-bugs' into sb/submodule-init
  - Merge branch 'sb/submodule-helper-clone-regression-fix' into sb/submodule-init
- (this branch uses sb/submodule-helper-clone-regression-fix and sb/submodule-path-misc-bugs.)
 
  Update of "git submodule" to move pieces of logic to C continues.
 
  Will merge to 'next'.
 
 
-* ad/commit-have-m-option (2016-04-07) 2 commits
-  (merged to 'next' on 2016-04-13 at 74088c2)
- + commit: do not ignore an empty message given by -m ''
- + commit: --amend -m '' silently fails to wipe message
-
- "git commit" misbehaved in a few minor ways when an empty message
- is given via -m '', all of which has been corrected.
-
- Will merge to 'master'.
-
-
-* jc/xstrfmt-null-with-prec-0 (2016-04-07) 1 commit
-  (merged to 'next' on 2016-04-13 at 2457462)
- + setup.c: do not feed NULL to "%.*s" even with precision 0
-
- Will merge to 'master'.
-
-
-* dt/pre-refs-backend (2016-04-10) 24 commits
-  (merged to 'next' on 2016-04-13 at 0a8f9dd)
- + refs: on symref reflog expire, lock symref not referrent
- + refs: move resolve_ref_unsafe into common code
- + show_head_ref(): check the result of resolve_ref_namespace()
- + check_aliased_update(): check that dst_name is non-NULL
- + checkout_paths(): remove unneeded flag variable
- + cmd_merge(): remove unneeded flag variable
- + fsck_head_link(): remove unneeded flag variable
- + read_raw_ref(): change flags parameter to unsigned int
- + files-backend: inline resolve_ref_1() into resolve_ref_unsafe()
- + read_raw_ref(): manage own scratch space
- + files-backend: break out ref reading
- + resolve_ref_1(): eliminate local variable "bad_name"
- + resolve_ref_1(): reorder code
- + resolve_ref_1(): eliminate local variable
- + resolve_ref_unsafe(): ensure flags is always set
- + resolve_ref_unsafe(): use for loop to count up to MAXDEPTH
- + resolve_missing_loose_ref(): simplify semantics
- + t1430: improve test coverage of deletion of badly-named refs
- + t1430: test for-each-ref in the presence of badly-named refs
- + t1430: don't rely on symbolic-ref for creating broken symrefs
- + t1430: clean up broken refs/tags/shadow
- + t1430: test the output and error of some commands more carefully
- + refs: move for_each_*ref* functions into common code
- + refs: move head_ref{,_submodule} to the common code
-
- Code restructuring around the "refs" area to prepare for pluggable
- refs backends.
-
- Will merge to 'master'.
-
-
-* ky/imap-send (2016-04-13) 2 commits
-  (merged to 'next' on 2016-04-13 at 52cf493)
- + imap-send: fix CRAM-MD5 response calculation
- + imap-send: check for NOLOGIN capability only when using LOGIN command
-
- Support for CRAM-MD5 authentication method in "git imap-send" did
- not work well.
-
- Will merge to 'master'.
-
-
-* ky/imap-send-openssl-1.1.0 (2016-04-08) 4 commits
-  (merged to 'next' on 2016-04-13 at 49d2643)
- + configure: remove checking for HMAC_CTX_cleanup
- + imap-send: avoid deprecated TLSv1_method()
- + imap-send: check NULL return of SSL_CTX_new()
- + imap-send: use HMAC() function provided by OpenSSL
-
- Upcoming OpenSSL 1.1.0 will break compilation b updating a few APIs
- we use in imap-send, which has been adjusted for the change.
-
- Will merge to 'master'.
-
-
-* jc/http-socks5h (2016-04-10) 1 commit
-  (merged to 'next' on 2016-04-13 at eb27afc)
- + http: differentiate socks5:// and socks5h://
-
- The socks5:// proxy support added back in 2.6.4 days was not aware
- that socks5h:// proxies behave differently.
-
- Will merge to 'master'.
-
-
 * jc/send-email-skip-backup (2016-04-12) 1 commit
  - send-email: detect and offer to skip backup files
 
@@ -569,35 +768,13 @@ of the repositories listed at
  Needs review.
 
 
-* jk/do-not-printf-NULL (2016-04-10) 3 commits
-  (merged to 'next' on 2016-04-13 at 60912e3)
- + git_config_set_multivar_in_file: handle "unset" errors
- + git_config_set_multivar_in_file: all non-zero returns are errors
- + config: lower-case first word of error strings
-
- "git config" had a codepath that tried to pass a NULL to
- printf("%s"), which nobody seems to have noticed.
-
- Will merge to 'master'.
-
-
-* jk/use-write-script-more (2016-04-12) 3 commits
-  (merged to 'next' on 2016-04-13 at d6718bf)
- + t3404: use write_script
- + t1020: do not overuse printf and use write_script
- + t5532: use write_script
-
- Code clean-up.
-
- Will merge to 'master'.
-
-
-* nf/mergetool-prompt (2016-04-12) 2 commits
- - SQUASH???
+* nf/mergetool-prompt (2016-04-25) 1 commit
  - difftool/mergetool: make the form of yes/no questions consistent
 
  UI consistency improvements.
 
+ Will merge to 'next'.
+
 
 * va/i18n-misc-updates (2016-04-19) 9 commits
  - i18n: builtin/pull.c: split strings marked for translation
@@ -616,119 +793,67 @@ of the repositories listed at
 
 
 * jc/drop-git-spec-in (2016-04-06) 1 commit
- - Makefile: stop pretending to support rpmbuild
+  (merged to 'next' on 2016-04-22 at 531583f)
+ + Makefile: stop pretending to support rpmbuild
 
  As nobody maintains our in-tree git.spec.in and distros use their
  own spec file, we stopped pretending that we support "make rpm".
 
- Will merge to 'next'.
-
-
-* ew/send-email-readable-message-id (2016-04-06) 1 commit
-  (merged to 'next' on 2016-04-13 at 422959a)
- + send-email: more meaningful Message-ID
-
- "git send-email" now uses a more readable timestamps when
- formulating a message ID.
-
  Will merge to 'master'.
 
 
-* st/verify-tag (2016-04-19) 6 commits
- - tag -v: verfy directly rather than exec-ing verify-tag
- - verify-tag: move tag verification code to tag.c
- - verify-tag: prepare verify_tag for libification
- - verify-tag: update variable name and type
- - t7030: test verifying multiple tags
- - builtin/verify-tag.c: ignore SIGPIPE in gpg-interface
+* st/verify-tag (2016-04-22) 6 commits
+  (merged to 'next' on 2016-04-22 at 98ba239)
+ + tag -v: verify directly rather than exec-ing verify-tag
+ + verify-tag: move tag verification code to tag.c
+ + verify-tag: prepare verify_tag for libification
+ + verify-tag: update variable name and type
+ + t7030: test verifying multiple tags
+ + builtin/verify-tag.c: ignore SIGPIPE in gpg-interface
 
  Unify internal logic between "git tag -v" and "git verify-tag"
  commands by making one directly call into the other.
 
- Will merge to 'next'.
-
-
-* ew/send-email-drop-data-dumper (2016-04-06) 1 commit
-  (merged to 'next' on 2016-04-13 at 180266c)
- + send-email: do not load Data::Dumper
-
- Code clean-up.
-
  Will merge to 'master'.
 
 
-* kn/ref-filter-branch-list (2016-04-12) 16 commits
- . branch: implement '--format' option
- . branch: use ref-filter printing APIs
- . branch, tag: use porcelain output
- . ref-filter: allow porcelain to translate messages in the output
- . ref-filter: add support for %(refname:dir) and %(refname:base)
- . ref-filter: introduce refname_atom_parser()
- . ref-filter: introduce symref_atom_parser()
- . ref-filter: make "%(symref)" atom work with the ':short' modifier
- . ref-filter: add support for %(upstream:track,nobracket)
- . ref-filter: make %(upstream:track) prints "[gone]" for invalid upstreams
- . ref-filter: introduce format_ref_array_item()
- . ref-filter: move get_head_description() from branch.c
- . ref-filter: modify "%(objectname:short)" to take length
- . ref-filter: implement %(if:equals=<string>) and %(if:notequals=<string>)
- . ref-filter: include reference to 'used_atom' within 'atom_value'
- . ref-filter: implement %(if), %(then), and %(else) atoms
+* kn/ref-filter-branch-list (2016-04-25) 17 commits
+ - branch: implement '--format' option
+ - branch: use ref-filter printing APIs
+ - branch, tag: use porcelain output
+ - ref-filter: allow porcelain to translate messages in the output
+ - ref-filter: add `:dir` and `:base` options for ref printing atoms
+ - ref-filter: make remote_ref_atom_parser() use refname_atom_parser_internal()
+ - ref-filter: introduce symref_atom_parser() and refname_atom_parser()
+ - ref-filter: introduce refname_atom_parser_internal()
+ - ref-filter: make "%(symref)" atom work with the ':short' modifier
+ - ref-filter: add support for %(upstream:track,nobracket)
+ - ref-filter: make %(upstream:track) prints "[gone]" for invalid upstreams
+ - ref-filter: introduce format_ref_array_item()
+ - ref-filter: move get_head_description() from branch.c
+ - ref-filter: modify "%(objectname:short)" to take length
+ - ref-filter: implement %(if:equals=<string>) and %(if:notequals=<string>)
+ - ref-filter: include reference to 'used_atom' within 'atom_value'
+ - ref-filter: implement %(if), %(then), and %(else) atoms
 
  The code to list branches in "git branch" has been consolidated
  with the more generic ref-filter API.
 
- Rerolled but seems to lack jk/branch-shortening-funny-symrefs aka
- $gmane/291295 yet.
-
-
-* sb/submodule-helper-clone-regression-fix (2016-04-01) 6 commits
-  (merged to 'next' on 2016-04-13 at c6584bb)
- + submodule--helper, module_clone: catch fprintf failure
- + submodule--helper: do not borrow absolute_path() result for too long
- + submodule--helper, module_clone: always operate on absolute paths
- + submodule--helper clone: create the submodule path just once
- + submodule--helper: fix potential NULL-dereference
- + recursive submodules: test for relative paths
- (this branch is used by sb/submodule-init.)
-
- A partial rewrite of "git submodule" in the 2.7 timeframe changed
- the way the gitdir: pointer in the submodules point at the real
- repository location to use absolute paths by accident.  This has
- been corrected.
-
- Will merge to 'master'.
-
-
-* sb/submodule-path-misc-bugs (2016-03-30) 6 commits
-  (merged to 'next' on 2016-04-18 at 9daa5ce)
- + t7407: make expectation as clear as possible
- + submodule update: test recursive path reporting from subdirectory
- + submodule update: align reporting path for custom command execution
- + submodule status: correct path handling in recursive submodules
- + submodule update --init: correct path handling in recursive submodules
- + submodule foreach: correct path display in recursive submodules
- (this branch is used by sb/submodule-init.)
-
- "git submodule" reports the paths of submodules the command
- recurses into, but this was incorrect when the command was not run
- from the root level of the superproject.
-
- Will merge to 'master'.
+ Needs review.
 
 
-* xy/format-patch-base (2016-04-12) 4 commits
- format-patch: introduce format.base configuration
- format-patch: introduce --base=auto option
- format-patch: add '--base' option to record base tree info
- patch-ids: make commit_patch_id() a public helper function
+* xy/format-patch-base (2016-04-22) 4 commits
. format-patch: introduce format.useAutoBase configuration
. format-patch: introduce --base=auto option
. format-patch: add '--base' option to record base tree info
. patch-ids: make commit_patch_id() a public helper function
 
  "git format-patch" learned a new "--base" option to record what
  (public, well-known) commit the original series was built on in
  its output.
 
  Review comments sent.
- ($gmane/291198)
+ ($gmane/292168)
 
 
 * dt/index-helper (2016-04-14) 16 commits
@@ -765,45 +890,6 @@ of the repositories listed at
  network to CDN.
 
 
-* ad/cygwin-wants-rename (2015-08-07) 1 commit
-  (merged to 'next' on 2016-04-19 at 1352ede)
- + config.mak.uname: Cygwin needs OBJECT_CREATION_USES_RENAMES
-
- On Cygwin, object creation uses the "create a temporary and then
- rename it to the final name" pattern, not "create a temporary,
- hardlink it to the final name and then unlink the temporary"
- pattern.
-
- This is necessary to use Git on Windows shared directories, and is
- already enabled for the MinGW and plain Windows builds.  It also
- has been used in Cygwin packaged versions of Git for quite a while.
- See http://thread.gmane.org/gmane.comp.version-control.git/291853
-
- Will merge to 'master'.
- ($gmane/275680, $gmane/291853).
-
-
-* jc/rerere-multi (2016-04-06) 11 commits
-  (merged to 'next' on 2016-04-13 at 3db2753)
- + rerere: adjust 'forget' to multi-variant world order
- + rerere: split code to call ll_merge() further
- + rerere: move code related to "forget" together
- + rerere: gc and clear
- + rerere: do use multiple variants
- + t4200: rerere a merge with two identical conflicts
- + rerere: allow multiple variants to exist
- + rerere: delay the recording of preimage
- + 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
-
- "git rerere" can encounter two or more files with the same conflict
- signature that have to be resolved in different ways, but there was
- no way to record these separate resolutions.
-
- Will merge to 'master'.
-
-
 * jc/merge-drop-old-syntax (2015-04-29) 1 commit
  - merge: drop 'git merge <message> HEAD <commit>' syntax