]> git.ipfire.org Git - thirdparty/git.git/commitdiff
What's cooking (2015/05 #05)
authorJunio C Hamano <gitster@pobox.com>
Tue, 19 May 2015 21:21:02 +0000 (14:21 -0700)
committerJunio C Hamano <gitster@pobox.com>
Tue, 19 May 2015 21:21:02 +0000 (14:21 -0700)
whats-cooking.txt

index 01f8aec8a481fcc1999a2143387066ae855ca7c2..4f4945c43100c5c7586162fffa0ce52d1aaa7123 100644 (file)
@@ -1,19 +1,21 @@
 To: git@vger.kernel.org
 Bcc: lwn@lwn.net
-Subject: What's cooking in git.git (May 2015, #04; Mon, 11)
-X-master-at: c518059b263bb506b96a0ae90c4d40408c760cb0
-X-next-at: 91e4f9ead74701a5690c950e19c8b631ee8c7a4b
+Subject: What's cooking in git.git (May 2015, #05; Tue, 19)
+X-master-at: 6c1249c503f39ca45ca5b183527b22192cdaf7a7
+X-next-at: 3179493ddf99afea85d647dbfa9ebe48a70b9cc0
 
-What's cooking in git.git (May 2015, #04; Mon, 11)
+What's cooking in git.git (May 2015, #05; Tue, 19)
 --------------------------------------------------
 
 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.3.8 has been tagged; it contains Linus's favorite fix for "git
-commit --date=now", among other things, and it will be the last for
-2.3.x series for now.
+The "untracked cache" series is in 'next', to give it a wider
+exposure.  I do not use it personally, but it is meant to make life
+easier for those with large amount of untracked cruft in their
+working trees.  Please try it out and report successes (and of
+course breakages, too).
 
 You can find the changes described here in the integration branches
 of the repositories listed at
@@ -23,443 +25,451 @@ of the repositories listed at
 --------------------------------------------------
 [Graduated to "master"]
 
-* ep/do-not-feed-a-pointer-to-array-size (2015-05-05) 1 commit
-  (merged to 'next' on 2015-05-07 at 64d9a20)
- + git-compat-util.h: implement a different ARRAY_SIZE macro for for safely deriving the size of array
+* bc/connect-plink (2015-04-28) 3 commits
+  (merged to 'next' on 2015-05-05 at 9def2e1)
+ + connect: improve check for plink to reduce false positives
+ + t5601: fix quotation error leading to skipped tests
+ + connect: simplify SSH connection code path
 
- Catch a programmer mistake to feed a pointer not an array to
- ARRAY_SIZE() macro, by using a couple of GCC extensions.
+ The connection initiation code for "ssh" transport tried to absorb
+ differences between the stock "ssh" and Putty-supplied "plink" and
+ its derivatives, but the logic to tell that we are using "plink"
+ variants were too loose and falsely triggered when "plink" appeared
+ anywhere in the path (e.g. "/home/me/bin/uplink/ssh").
 
 
-* jc/daemon-no-ipv6-for-2.4.1 (2015-05-05) 1 commit
-  (merged to 'next' on 2015-05-05 at 1eb279f)
- + daemon: unbreak NO_IPV6 build regression
+* fg/document-commit-message-stripping (2015-04-27) 1 commit
+  (merged to 'next' on 2015-05-05 at 1892a99)
+ + Documentation: clarify how "git commit" cleans up the edited log message
 
- "git daemon" fails to build from the source under NO_IPV6
- configuration (regression in 2.4).
 
+* jc/gitignore-precedence (2015-04-22) 1 commit
+  (merged to 'next' on 2015-05-05 at 6ef85da)
+ + ignore: info/exclude should trump core.excludesfile
 
-* jc/hash-object (2015-05-05) 4 commits
-  (merged to 'next' on 2015-05-07 at 9b81a06)
- + write_sha1_file(): do not use a separate sha1[] array
- + t1007: add hash-object --literally tests
- + hash-object --literally: fix buffer overrun with extra-long object type
- + git-hash-object.txt: document --literally option
+ core.excludesfile (defaulting to $XDG_HOME/git/ignore) is supposed
+ to be overridden by repository-specific .git/info/exclude file, but
+ the order was swapped from the beginning. This belatedly fixes it.
 
- "hash-object --literally" introduced in v2.2 was not prepared to
- take a really long object type name.
 
+* jc/merge (2015-04-29) 15 commits
+  (merged to 'next' on 2015-05-07 at 1c56512)
+ + merge: deprecate 'git merge <message> HEAD <commit>' syntax
+ + merge: handle FETCH_HEAD internally
+ + merge: decide if we auto-generate the message early in collect_parents()
+ + merge: make collect_parents() auto-generate the merge message
+ + merge: extract prepare_merge_message() logic out
+ + merge: narrow scope of merge_names
+ + merge: split reduce_parents() out of collect_parents()
+ + merge: clarify collect_parents() logic
+ + merge: small leakfix and code simplification
+ + merge: do not check argc to determine number of remote heads
+ + merge: clarify "pulling into void" special case
+ + t5520: test pulling an octopus into an unborn branch
+ + t5520: style fixes
+ + merge: simplify code flow
+ + merge: test the top-level merge driver
+ (this branch is used by jc/merge-drop-old-syntax and pt/pull-tests.)
 
-* jc/plug-fmt-merge-msg-leak (2015-04-20) 1 commit
-  (merged to 'next' on 2015-05-05 at bd94828)
- + fmt-merge-msg: plug small leak of commit buffer
+ "git merge FETCH_HEAD" learned that the previous "git fetch" could
+ be to create an Octopus merge, i.e. recording multiple branches
+ that are not marked as "not-for-merge"; this allows us to lose an
+ old style invocation "git merge <msg> HEAD $commits..." in the
+ implementation of "git pull" script; the old style syntax can now
+ be deprecated.
 
- Originally merged to 'next' on 2015-04-21
 
+* jc/test-prereq-validate (2015-04-28) 1 commit
+  (merged to 'next' on 2015-05-05 at a30464c)
+ + test: validate prerequistes syntax
 
-* jk/filter-branch-use-of-sed-on-incomplete-line (2015-04-29) 1 commit
-  (merged to 'next' on 2015-05-07 at 849a24d)
- + filter-branch: avoid passing commit message through sed
+ Help us to find broken test script that splits the body part of the
+ test by mistaken use of wrong kind of quotes.
 
- "filter-branch" corrupted commit log message that ends with an
- incomplete line on platforms with some "sed" implementations that
- munge such a line.  Work it around by avoiding to use "sed".
 
+* jk/git-no-more-argv0-path-munging (2015-04-22) 1 commit
+  (merged to 'next' on 2015-05-05 at b3f9a45)
+ + stop putting argv[0] dirname at front of PATH
 
-* jk/reading-packed-refs (2015-04-16) 9 commits
-  (merged to 'next' on 2015-05-05 at 89b5694)
- + t1430: add another refs-escape test
- + read_packed_refs: avoid double-checking sane refs
- + strbuf_getwholeline: use getdelim if it is available
- + strbuf_getwholeline: avoid calling strbuf_grow
- + strbuf_addch: avoid calling strbuf_grow
- + config: use getc_unlocked when reading from file
- + strbuf_getwholeline: use getc_unlocked
- + git-compat-util: add fallbacks for unlocked stdio
- + strbuf_getwholeline: use getc macro
+ We have prepended $GIT_EXEC_PATH and the path "git" is installed in
+ (typically "/usr/bin") to $PATH when invoking subprograms and hooks
+ for almost eternity, but the original use case the latter tried to
+ support was semi-bogus (i.e. install git to /opt/foo/git and run it
+ without having /opt/foo on $PATH), and more importantly it has
+ become less and less relevant as Git grew more mainstream (i.e. the
+ users would _want_ to have it on their $PATH).  Stop prepending the
+ path in which "git" is installed to users' $PATH, as that would
+ interfere the command search order people depend on (e.g. they may
+ not like versions of programs that are unrelated to Git in /usr/bin
+ and want to override them by having different ones in /usr/local/bin
+ and have the latter directory earlier in their $PATH).
 
- Originally merged to 'next' on 2015-04-21
 
- An earlier rewrite to use strbuf_getwholeline() instead of fgets(3)
- to read packed-refs file revealed that the former is unacceptably
- inefficient.
+* jk/stash-require-clean-index (2015-04-22) 3 commits
+  (merged to 'next' on 2015-05-05 at b5f6c32)
+ + stash: require a clean index to apply
+ + t3903: avoid applying onto dirty index
+ + t3903: stop hard-coding commit sha1s
 
+ "git stash pop/apply" forgot to make sure that not just the working
+ tree is clean but also the index is clean. The latter is important
+ as a stash application can conflict and the index will be used for
+ conflict resolution.
 
-* jk/rebase-quiet-noop (2015-04-28) 1 commit
-  (merged to 'next' on 2015-05-05 at 82780b9)
- + rebase: silence "git checkout" for noop rebase
 
- "git rebase --quiet" was not quite quiet when there is nothing to
- do.
+* jk/test-chain-lint (2015-04-28) 2 commits
+  (merged to 'next' on 2015-05-05 at e6f0290)
+ + test-lib: turn on GIT_TEST_CHAIN_LINT by default
+ + t7502-commit.sh: fix a broken and-chain
 
+ Developer support to automatically detect broken &&-chain in the
+ test scripts is now turned on by default.
 
-* jk/sha1-file-reduce-useless-warnings (2015-03-30) 1 commit
-  (merged to 'next' on 2015-05-05 at a8de68e)
- + sha1_file: squelch "packfile cannot be accessed" warnings
 
- Originally merged to 'next' on 2015-04-21
+* kn/cat-file-literally (2015-05-06) 4 commits
+  (merged to 'next' on 2015-05-12 at 04b29b5)
+ + t1006: add tests for git cat-file --allow-unknown-type
+ + cat-file: teach cat-file a '--allow-unknown-type' option
+ + cat-file: make the options mutually exclusive
+ + sha1_file: support reading from a loose object of unknown type
 
+ Add the "--allow-unknown-type" option to "cat-file" to allow
+ inspecting loose objects of an experimental or a broken type.
 
-* jk/still-interesting (2015-04-17) 1 commit
-  (merged to 'next' on 2015-05-05 at 6a5c89c)
- + limit_list: avoid quadratic behavior from still_interesting
 
- Originally merged to 'next' on 2015-04-21
+* nd/diff-i-t-a (2015-03-23) 1 commit
+  (merged to 'next' on 2015-05-05 at cba9cd9)
+ + diff-lib.c: adjust position of i-t-a entries in diff
 
- "git rev-list --objects $old --not --all" to see if everything that
- is reachable from $old is already connected to the existing refs
- was very inefficient.
+ Originally merged to 'next' on 2015-03-24
 
+ After "git add -N", the path appeared in output of "git diff HEAD"
+ and "git diff --cached HEAD", leading "git status" to classify it
+ as "Changes to be committed".  Such a path, however, is not yet to
+ be scheduled to be committed.  "git diff" showed the change to the
+ path as modification, not as a "new file", in the header of its
+ output.
 
-* jn/clean-use-error-not-fprintf-on-stderr (2015-05-04) 1 commit
-  (merged to 'next' on 2015-05-05 at 12391f1)
- + config: use error() instead of fprintf(stderr, ...)
+ Treat such paths as "yet to be added to the index but Git already
+ know about them"; "git diff HEAD" and "git diff --cached HEAD"
+ should not talk about them, and "git diff" should show them as new
+ files yet to be added to the index.
 
- Some error messages in "git config" were emitted without calling
- the usual error() facility.
 
+* nd/dwim-wildcards-as-pathspecs (2015-05-03) 1 commit
+  (merged to 'next' on 2015-05-07 at 8176de7)
+ + pathspec: avoid the need of "--" when wildcard is used
 
-* ld/p4-case-fold (2015-04-28) 1 commit
-  (merged to 'next' on 2015-05-05 at 03ecbd0)
- + git-p4: add failing tests for case-folding p4d
+ A heuristic to help the "git <cmd> <revs> <pathspec>" command line
+ convention to catch mistyped paths is to make sure all the non-rev
+ parameters in the later part of the command line are names of the
+ files in the working tree, but that means "git grep $str -- \*.c"
+ must always be disambiguated with "--", because nobody sane will
+ create a file whose name literally is asterisk-dot-see.  Loosen the
+ heuristic to declare that with a wildcard string the user likely
+ meant to give us a pathspec.
 
 
-* lm/squelch-bg-progress (2015-04-15) 2 commits
-  (merged to 'next' on 2015-05-05 at a2fe74d)
- + compat/mingw: stubs for getpgid() and tcgetpgrp()
- + progress: no progress in background
+* ph/rebase-i-redo (2015-04-29) 1 commit
+  (merged to 'next' on 2015-05-07 at 8fc1f52)
+ + rebase -i: redo tasks that die during cherry-pick
 
- Originally merged to 'next' on 2015-04-21
+ "git rebase -i" moved the "current" command from "todo" to "done" a
+ bit too prematurely, losing a step when a "pick" did not even start.
 
- Many long-running operations show progress eye-candy, even when
- they are later backgrounded.  Hide the eye-candy when the process
- is sent to the background instead.
 
+* sb/ref-lock-lose-lock-fd (2015-05-10) 1 commit
+  (merged to 'next' on 2015-05-12 at dde9be1)
+ + refs.c: remove lock_fd from struct ref_lock
 
-* ls/p4-changes-block-size (2015-04-20) 1 commit
-  (merged to 'next' on 2015-05-05 at 92596d4)
- + git-p4: use -m when running p4 changes
+ The refs API uses ref_lock struct which had its own "int fd", even
+ though the same file descriptor was in the lock struct it contains.
+ Clean-up the code to lose this redundant field.
 
- Originally merged to 'next' on 2015-04-21
+--------------------------------------------------
+[New Topics]
 
- "git p4" learned "--changes-block-size <n>" to read the changes in
- chunks from Perforce, instead of making one call to "p4 changes"
- that may trigger "too many rows scanned" error from Perforce.
+* ja/tutorial-asciidoctor-fix (2015-05-12) 1 commit
+  (merged to 'next' on 2015-05-19 at f15d940)
+ + doc: fix unmatched code fences
 
+ A literal block in the tutorial had lines with unequal lengths to
+ delimit it from the rest of the document, which choke GitHub's
+ AsciiDoc renderer.
 
-* mm/add-p-split-error (2015-04-16) 5 commits
-  (merged to 'next' on 2015-05-05 at c556011)
- + stash -p: demonstrate failure of split with mixed y/n
- + t3904-stash-patch: factor PERL prereq at the top of the file
- + t3904-stash-patch: fix test description
- + add -p: demonstrate failure when running 'edit' after a split
- + t3701-add-interactive: simplify code
+ Will merge to 'master'.
 
- Originally merged to 'next' on 2015-04-23
 
- When "add--interactive" splits a hunk into two overlapping hunks
- and then let the user choose only one, it sometimes feeds an
- incorrect patch text to "git apply".  Add tests to demonstrate
- this.
+* jk/stripspace-asciidoctor-fix (2015-05-12) 1 commit
+  (merged to 'next' on 2015-05-19 at 12f9059)
+ + doc: fix unmatched code fences in git-stripspace
 
- I have a slight suspicion that this may be $gmane/87202 coming back
- and biting us (I seem to have said "let's run with this and see
what happens" back then).
+ A literal block in the tutorial had lines with unequal lengths to
+ delimit it from the rest of the document, which choke GitHub's
AsciiDoc renderer.
 
+ Will merge to 'master'.
 
-* nd/multiple-work-trees (2015-03-31) 41 commits
-  (merged to 'next' on 2015-05-05 at 0f04a1c)
- + prune --worktrees: fix expire vs worktree existence condition
- + t1501: fix test with split index
- + t2026: fix broken &&-chain
- + t2026 needs procondition SANITY
- + git-checkout.txt: a note about multiple checkout support for submodules
- + checkout: add --ignore-other-wortrees
- + checkout: pass whole struct to parse_branchname_arg instead of individual flags
- + git-common-dir: make "modules/" per-working-directory directory
- + checkout: do not fail if target is an empty directory
- + t2025: add a test to make sure grafts is working from a linked checkout
- + checkout: don't require a work tree when checking out into a new one
- + git_path(): keep "info/sparse-checkout" per work-tree
- + count-objects: report unused files in $GIT_DIR/worktrees/...
- + gc: support prune --worktrees
- + gc: factor out gc.pruneexpire parsing code
- + gc: style change -- no SP before closing parenthesis
- + checkout: clean up half-prepared directories in --to mode
- + checkout: reject if the branch is already checked out elsewhere
- + prune: strategies for linked checkouts
- + checkout: support checking out into a new working directory
- + use new wrapper write_file() for simple file writing
- + wrapper.c: wrapper to open a file, fprintf then close
- + setup.c: support multi-checkout repo setup
- + setup.c: detect $GIT_COMMON_DIR check_repository_format_gently()
- + setup.c: convert check_repository_format_gently to use strbuf
- + setup.c: detect $GIT_COMMON_DIR in is_git_directory()
- + setup.c: convert is_git_directory() to use strbuf
- + git-stash: avoid hardcoding $GIT_DIR/logs/....
- + *.sh: avoid hardcoding $GIT_DIR/hooks/...
- + git-sh-setup.sh: use rev-parse --git-path to get $GIT_DIR/objects
- + $GIT_COMMON_DIR: a new environment variable
- + commit: use SEQ_DIR instead of hardcoding "sequencer"
- + fast-import: use git_path() for accessing .git dir instead of get_git_dir()
- + reflog: avoid constructing .lock path with git_path
- + *.sh: respect $GIT_INDEX_FILE
- + git_path(): be aware of file relocation in $GIT_DIR
- + path.c: group git_path(), git_pathdup() and strbuf_git_path() together
- + path.c: rename vsnpath() to do_git_path()
- + git_snpath(): retire and replace with strbuf_git_path()
- + path.c: make get_pathname() call sites return const char *
- + path.c: make get_pathname() return strbuf instead of static buffer
 
- Originally merged to 'next' on 2015-04-02
+* dt/cat-file-follow-symlinks (2015-05-14) 3 commits
+ - cat-file: add --follow-symlinks to --batch
+ - sha1_name: get_sha1_with_context learns to follow symlinks
+ - tree-walk: learn get_tree_entry_follow_symlinks
 
- A replacement for contrib/workdir/git-new-workdir that does not
- rely on symbolic links and make sharing of objects and refs safer
- by making the borrowee and borrowers aware of each other.
+ "git cat-file --batch(-check)" learned the "--follow-symlinks"
+ option that follows an in-tree symblic links when asked about an
+ object via extended SHA-1 syntax, e.g. HEAD:RelNotes that points at
+ Documentation/RelNotes/2.5.0.txt.  With the new option, the command
+ behaves as if HEAD:Documentation/RelNotes/2.5.0.txt was given as
+ input instead.
 
+ Will merge to 'next'.
 
-* nd/slim-index-pack-memory-usage (2015-04-18) 2 commits
-  (merged to 'next' on 2015-05-05 at 42bd845)
- + index-pack: kill union delta_base to save memory
- + index-pack: reduce object_entry size to save memory
 
- Originally merged to 'next' on 2015-04-21
+* jk/add-e-kill-editor (2015-05-12) 1 commit
+  (merged to 'next' on 2015-05-19 at 9e01174)
+ + add: check return value of launch_editor
 
- Memory usage of "git index-pack" has been trimmed by tens of
per-cent.
+ "git add -e" did not allow the user to abort the operation by
killing the editor.
 
+ Will merge to 'master'.
 
-* pt/credential-xdg (2015-03-25) 4 commits
-  (merged to 'next' on 2015-05-05 at 0d6711f)
- + t0302: "unreadable" test needs POSIXPERM
- + t0302: test credential-store support for XDG_CONFIG_HOME
- + git-credential-store: support XDG_CONFIG_HOME
- + git-credential-store: support multiple credential files
- (this branch is used by pt/xdg-config-path.)
 
- Originally merged to 'next' on 2015-03-25
+* jk/asciidoc-markup-fix (2015-05-14) 9 commits
+  (merged to 'next' on 2015-05-19 at df0c63e)
+ + doc: convert AsciiDoc {?foo} to ifdef::foo[]
+ + doc: put example URLs and emails inside literal backticks
+ + doc: drop backslash quoting of some curly braces
+ + doc: convert \--option to --option
+ + doc/add: reformat `--edit` option
+ + doc: fix length of underlined section-title
+ + doc: fix hanging "+"-continuation
+ + doc: fix unquoted use of "{type}"
+ + doc: fix misrendering due to `single quote'
 
- Tweak the sample "store" backend of the credential helper to honor
- XDG configuration file locations when specified.
+ Various documentation mark-up fixes to make the output more
+ consistent in general and also make AsciiDoctor (an alternative
+ formatter) happier.
 
+ Will merge to 'master'.
 
-* pt/xdg-config-path (2015-05-06) 7 commits
-  (merged to 'next' on 2015-05-07 at 38e7071)
- + path.c: remove home_config_paths()
- + git-config: replace use of home_config_paths()
- + git-commit: replace use of home_config_paths()
- + credential-store.c: replace home_config_paths() with xdg_config_home()
- + dir.c: replace home_config_paths() with xdg_config_home()
- + attr.c: replace home_config_paths() with xdg_config_home()
- + path.c: implement xdg_config_home()
- (this branch uses pt/credential-xdg.)
 
- Code clean-up for xdg configuration path support.
+* mh/ref-directory-file (2015-05-11) 18 commits
+  (merged to 'next' on 2015-05-19 at 38eb122)
+ + reflog_expire(): integrate lock_ref_sha1_basic() errors into ours
+ + ref_transaction_commit(): delete extra "the" from error message
+ + ref_transaction_commit(): provide better error messages
+ + rename_ref(): integrate lock_ref_sha1_basic() errors into ours
+ + lock_ref_sha1_basic(): improve diagnostics for ref D/F conflicts
+ + lock_ref_sha1_basic(): report errors via a "struct strbuf *err"
+ + verify_refname_available(): report errors via a "struct strbuf *err"
+ + verify_refname_available(): rename function
+ + refs: check for D/F conflicts among refs created in a transaction
+ + ref_transaction_commit(): use a string_list for detecting duplicates
+ + is_refname_available(): use dirname in first loop
+ + struct nonmatching_ref_data: store a refname instead of a ref_entry
+ + report_refname_conflict(): inline function
+ + entry_matches(): inline function
+ + is_refname_available(): convert local variable "dirname" to strbuf
+ + is_refname_available(): avoid shadowing "dir" variable
+ + is_refname_available(): revamp the comments
+ + t1404: new tests of ref D/F conflicts within transactions
+
+ The ref API did not handle cases where 'refs/heads/xyzzy/frotz' is
+ removed at the same time as 'refs/heads/xyzzy' is added (or vice
+ versa) very well.
 
+ Will merge to 'master'.
 
-* sb/prefix-path-free-results (2015-05-05) 1 commit
-  (merged to 'next' on 2015-05-07 at 64f15a8)
- + prefix_path(): unconditionally free results in the callers
 
- Code clean-up (not a leak-fix).
+* dt/clean-pathspec-filter-then-lstat (2015-05-18) 1 commit
+ - clean: only lstat files in pathspec
 
+ "git clean pathspec..." tried to lstat(2) and complain even for
+ paths outside the given pathspec.
 
-* sg/complete-decorate-full-not-long (2015-05-03) 1 commit
-  (merged to 'next' on 2015-05-07 at 2beb429)
- + completion: fix and update 'git log --decorate=' options
-
- The completion for "log --decorate=" parameter value was incorrect.
+ Will merge to 'next'.
 
 
-* sg/completion-no-redundant-all-command-list (2015-05-03) 1 commit
-  (merged to 'next' on 2015-05-07 at 00b4bd9)
- + completion: remove redundant __git_compute_all_commands() call
+* jh/filter-empty-contents (2015-05-18) 1 commit
+ - sha1_file: pass empty buffer to index empty file
 
- Code simplification.
+ The clean/smudge interface did not work well when filtering an
+ empty contents (failed and then passed the empty input through).
+ It can be argued that a filter that produces anything but empty for
+ an empty input is nonsense, but if the user wants to do strange
+ things, then why not?
 
+ Will merge to 'next'.
 
-* tb/blame-resurrect-convert-to-git (2015-05-03) 1 commit
-  (merged to 'next' on 2015-05-05 at 8e1974e)
- + blame: CRLF in the working tree and LF in the repo
 
- Some time ago, "git blame" (incorrectly) lost the convert_to_git()
- call when synthesizing a fake "tip" commit that represents the
- state in the working tree, which broke folks who record the history
- with LF line ending to make their project portabile across
- platforms while terminating lines in their working tree files with
- CRLF for their platform.
+* jk/http-backend-deadlock (2015-05-15) 2 commits
+ - http-backend: spool ref negotiation requests to buffer
+ - http-backend: fix die recursion with custom handler
 
+ Communication between the HTTP server and http_backend process can
+ lead to a dead-lock when relaying a large ref negotiation request.
+ Diagnose the situation better, and mitigate it by reading such a
+ request first into core (to a reasonable limit).
 
-* tb/t0027-crlf (2015-04-25) 3 commits
-  (merged to 'next' on 2015-05-05 at 36accbb)
- + t0027: Add repoMIX and LF_nul
- + t0027: support NATIVE_CRLF platforms
- + t0027: cleanup: rename functions; avoid non-leading TABs
+ Will merge to 'next'.
 
- Originally merged to 'next' on 2015-04-21
 
- More line-ending tests.
+* jk/rerere-forget-check-enabled (2015-05-14) 1 commit
+  (merged to 'next' on 2015-05-19 at bfe67dc)
+ + rerere: exit silently on "forget" when rerere is disabled
 
+ "git rerere forget" in a repository without rerere enabled gave a
+ cryptic error message; it should be a silent no-op instead.
 
-* va/fix-git-p4-tests (2015-04-28) 1 commit
-  (merged to 'next' on 2015-05-05 at 795e858)
- + git-p4: t9814: prevent --chain-lint failure
+ Will merge to 'master'.
 
 
-* va/p4-client-path (2015-04-23) 2 commits
-  (merged to 'next' on 2015-05-05 at 852facc)
- + git-p4: improve client path detection when branches are used
- + t9801: check git-p4's branch detection with client spec enabled
+* lm/squelch-bg-progress (2015-05-19) 1 commit
+ - progress: treat "no terminal" as being in the foreground
 
- Originally merged to 'next' on 2015-04-23
+ The controlling tty-based heuristics to squelch progress output did
+ not consider that the process may not be talking to a tty at all
+ (e.g. sending the progress to sideband #2).  This is a finishing
+ touch to a topic that is already in 'master'.
 
git p4 attempts to better handle branches in Perforce.
Will merge to 'next'.
 
---------------------------------------------------
-[New Topics]
 
-* dl/branch-error-message (2015-05-06) 1 commit
-  (merged to 'next' on 2015-05-11 at ed947ab)
- + branch: do not call a "remote-tracking branch" a "remote branch"
+* mg/log-decorate-HEAD (2015-05-13) 2 commits
+  (merged to 'next' on 2015-05-19 at 009342b)
+ + log: do not shorten decoration names too early
+ + log: decorate HEAD with branch name under --decorate=full, too
 
- Error messages from "git branch" called remote-tracking branches as
- "remote branches".
+ The "log --decorate" enhancement in Git 2.4 that shows the commit
+ at the tip of the current branch e.g. "HEAD -> master", did not
+ work with --decorate=full.
 
  Will merge to 'master'.
 
 
-* dl/subtree-push-no-squash (2015-05-07) 1 commit
-  (merged to 'next' on 2015-05-11 at 74d07ca)
- + contrib/subtree: there's no push --squash
+* mh/clone-verbosity-fix (2015-05-19) 1 commit
+ - clone: call transport_set_verbosity before anything else on the newly created transport
 
- "git subtree" script (in contrib/) does not have --squash option
- when pushing, but the documentation and help text pretended as if
- it did.
+ Git 2.4 broke setting verbosity and progress levels on "git clone"
+ with native transports.
 
- Will merge to 'master'.
+ Will merge to 'next'.
 
 
-* ld/p4-editor-multi-words (2015-05-07) 2 commits
- - git-p4: fix handling of multi-word P4EDITOR
- - git-p4: add failing test for P4EDITOR handling
+* mh/lockfile-retry (2015-05-14) 2 commits
+ - lock_packed_refs(): allow retries when acquiring the packed-refs lock
+ - lockfile: allow file locking to be retried with a timeout
 
- Unlike "$EDITOR" and "$GIT_EDITOR" that can hold the path to the
- command and initial options (e.g. "/path/to/emacs -nw"), 'git p4'
- did not let the shell interpolate the contents of the environment
- variable that name the editor "$P4EDITOR" (and "$EDITOR", too).
- Make it in line with the rest of Git, as well as with Perforce.
+ Instead of dying immediately upon failing to obtain a lock, retry
+ after a short while with backoff.
 
- Reported to break some tests that assume the non-interpolating
- behaviour that need to be fixed.
+ Will merge to 'next'.
 
 
-* dl/subtree-avoid-tricky-echo (2015-05-08) 1 commit
-  (merged to 'next' on 2015-05-11 at 36d4f0e)
- + contrib/subtree: portability fix for string printing
+* mm/log-format-raw-doc (2015-05-18) 3 commits
+ - SQUASH
+ - Documentation/log: clarify sha1 non-abbreviation in log --raw
+ - Documentation/log: clarify what --raw means
 
- "git subtree" script (in contrib/) used "echo -n" to produce
progress messages in a non-portable way.
+ Clarify that "log --raw" and "log --format=raw" are unrelated
concepts.
 
- Will merge to 'master'.
+ Will merge to 'next' after squashing the fixup.
 
 
-* ls/http-ssl-cipher-list (2015-05-08) 1 commit
-  (merged to 'next' on 2015-05-11 at 55764ce)
- + http: add support for specifying an SSL cipher list
+* ps/doc-packfile-vs-pack-file (2015-05-17) 3 commits
+ - pack-protocol.txt: fix insconsistent spelling of "packfile"
+ - git-unpack-objects.txt: fix inconsistent spelling of "packfile"
+ - git-verify-pack.txt: fix inconsistent spelling of "packfile"
 
- Introduce http.<url>.SSLCipherList configuration variable to tweak
- the list of cipher suite to be used with libcURL when talking with
- https:// sites.
+ Doc consistency updates.  I am not sure if this is unifying in the
+ right direction, though.
 
- Will merge to 'master'.
 
+* pt/pull-ff-vs-merge-ff (2015-05-18) 2 commits
+ - pull: parse pull.ff as a bool or string
+ - pull: make pull.ff=true override merge.ff
 
-* ps/bundle-verify-arg (2015-05-08) 1 commit
-  (merged to 'next' on 2015-05-11 at 9f1b1ae)
- + bundle: verify arguments more strictly
+ The pull.ff configuration was supposed to override the merge.ff
+ configuration, but it didn't.
 
- "git bundle verify" did not diagnose extra parameters on the
- command line.
+ Will merge to 'next'.
 
- Will merge to 'master'.
 
+* pt/pull-log-n (2015-05-18) 1 commit
+ - pull: handle --log=<n>
 
-* sg/help-subcommands (2015-05-08) 1 commit
-  (merged to 'next' on 2015-05-11 at 91e4f9e)
- + command-list.txt: fix whitespace inconsistency
+ "git pull --log" and "git pull --no-log" worked as expected, but
+ "git pull --log=20" did not.
 
A preparatory clean-up step.
Will merge to 'next'.
 
- Will merge to 'master'.
 
+* pt/pull-tags-error-diag (2015-05-14) 1 commit
+ - pull: remove --tags error in no merge candidates case
 
-* mh/ref-directory-file-2 (2015-05-10) 19 commits
- - SQUASH???
- - reflog_expire(): integrate lock_ref_sha1_basic() errors into ours
- - ref_transaction_commit(): delete extra "the" from error message
- - ref_transaction_commit(): provide better error messages
- - rename_ref(): integrate lock_ref_sha1_basic() errors into ours
- - lock_ref_sha1_basic(): improve diagnostics for D/F conflicts
- - lock_ref_sha1_basic(): report errors via a "struct strbuf *err"
- - verify_refname_available(): report errors via a "struct strbuf *err"
- - verify_refname_available(): rename function
- - refs: check for D/F conflicts among refs processed in a transaction
- - ref_transaction_commit(): use a string_list for detecting duplicates
- - is_refname_available(): use dirname in first loop
- - struct nonmatching_ref_data: store a refname instead of a ref_entry
- - report_refname_conflict(): inline function
- - entry_matches(): inline function
- - is_refname_available(): convert local variable "dirname" to strbuf
- - is_refname_available(): avoid shadowing "dir" variable
- - is_refname_available(): explain the reason for an early exit
- - t1404: new tests of D/F conflicts within ref transactions
- (this branch uses mh/write-refs-sooner-2.2, mh/write-refs-sooner-2.3 and mh/write-refs-sooner-2.4.)
-
- A reroll is posted, but haven't got a chance to pick it up yet.
-
-
-* mh/write-refs-sooner-2.2 (2015-05-10) 8 commits
- - ref_transaction_commit(): fix atomicity and avoid fd exhaustion
- - ref_transaction_commit(): remove the local flags variable
- - ref_transaction_commit(): inline call to write_ref_sha1()
- - rename_ref(): inline calls to write_ref_sha1() from this function
- - commit_ref_update(): new function, extracted from write_ref_sha1()
- - write_ref_to_lockfile(): new function, extracted from write_ref_sha1()
- - t7004: rename ULIMIT test prerequisite to ULIMIT_STACK_SIZE
- - update-ref: test handling large transactions properly
- (this branch is used by mh/ref-directory-file-2, mh/write-refs-sooner-2.3 and mh/write-refs-sooner-2.4.)
+ There was a dead code that used to handle "git pull --tags" and
+ show special-cased error message, which was made irrelevant when
+ the semantics of the option changed back in Git 1.9 days.
 
- Multi-ref transaction support we merged a few releases ago
- unnecessarily kept many file descriptors open, risking to fail with
- resource exhaustion.
+ Will merge to 'next'.
 
 
-* mh/write-refs-sooner-2.3 (2015-05-10) 1 commit
- - Merge branch 'mh/write-refs-sooner' into mh/write-refs-sooner-2.3
- (this branch is used by mh/ref-directory-file-2 and mh/write-refs-sooner-2.4; uses mh/write-refs-sooner-2.2.)
+* rs/plug-leak-in-pack-bitmaps (2015-05-19) 1 commit
+ - pack-bitmaps: plug memory leak, fix allocation size for recent_bitmaps
 
- Multi-ref transaction support we merged a few releases ago
- unnecessarily kept many file descriptors open, risking to fail with
- resource exhaustion.  This is for 2.3.x track.
+ The code to memoise recently used pack bitmaps were totally broken.
 
+ Will merge to 'next'.
 
-* mh/write-refs-sooner-2.4 (2015-05-10) 1 commit
- - Merge branch 'mh/write-refs-sooner-2.3' into mh/write-refs-sooner-2.4
- (this branch is used by mh/ref-directory-file-2; uses mh/write-refs-sooner-2.2 and mh/write-refs-sooner-2.3.)
 
- Multi-ref transaction support we merged a few releases ago
- unnecessarily kept many file descriptors open, risking to fail with
- resource exhaustion.  This is for 2.4.x track.
+* sb/t1020-cleanup (2015-05-18) 1 commit
+ - subdirectory tests: code cleanup, uncomment test
 
+ There was a commented-out (instead of being marked to expect
+ failure) test that documented a breakage that was fixed since the
+ test was written; turn it into a proper test.
 
-* sb/ref-lock-lose-lock-fd (2015-05-10) 1 commit
- - refs.c: remove lock_fd from struct ref_lock
+ Will merge to 'next'.
 
- The refs API uses ref_lock struct which had its own "int fd", even
- though the same file descriptor was in the lock struct it contains.
- Clean-up the code to lose this redundant field.
 
- Will merge to 'next'.
+* sg/completion-config (2015-05-12) 2 commits
+  (merged to 'next' on 2015-05-19 at c83fde1)
+ + completion: simplify query for config variables
+ + completion: add a helper function to get config variables
+
+ Code clean-up for completion script (in contrib/).
+
+ Will merge to 'master'.
+
+
+* sg/help-group (2015-05-18) 5 commits
+ - help: respect new common command grouping
+ - command-list.txt: drop the "common" tag
+ - generate-cmdlist: parse common group commands
+ - command-list.txt: add the common groups block
+ - command-list: prepare machinery for upcoming "common groups" section
+ (this branch uses sg/help-subcommands.)
+
+ Group list of commands shown by "git help" along the workflow
+ elements to help early learners.
+
+
+* jc/ignore-epipe-in-filter (2015-05-19) 2 commits
+ - filter_buffer_or_fd(): ignore EPIPE
+ - copy.c: make copy_fd() report its status silently
+
+ Filter scripts were run with SIGPIPE disabled on the Git side,
+ expecting that they may not read what Git feeds them to filter.
+ We however treated a filter that does not read its input fully
+ before exiting as an error.
+
+ This changes semantics, but arguably in a good way.  If a filter
+ can produce its output without consuming its input using whatever
+ magic, we now let it do so, instead of diagnosing it as a
+ programming error.
 
 --------------------------------------------------
 [Stalled]
@@ -599,39 +609,11 @@ of the repositories listed at
  Expecting a reroll.
 
 
-* nd/untracked-cache (2015-03-12) 24 commits
- - git-status.txt: advertisement for untracked cache
- - untracked cache: guard and disable on system changes
- - mingw32: add uname()
- - t7063: tests for untracked cache
- - update-index: test the system before enabling untracked cache
- - update-index: manually enable or disable untracked cache
- - status: enable untracked cache
- - untracked-cache: temporarily disable with $GIT_DISABLE_UNTRACKED_CACHE
- - untracked cache: mark index dirty if untracked cache is updated
- - untracked cache: print stats with $GIT_TRACE_UNTRACKED_STATS
- - untracked cache: avoid racy timestamps
- - read-cache.c: split racy stat test to a separate function
- - untracked cache: invalidate at index addition or removal
- - untracked cache: load from UNTR index extension
- - untracked cache: save to an index extension
- - ewah: add convenient wrapper ewah_serialize_strbuf()
- - untracked cache: don't open non-existent .gitignore
- - untracked cache: mark what dirs should be recursed/saved
- - untracked cache: record/validate dir mtime and reuse cached output
- - untracked cache: make a wrapper around {open,read,close}dir()
- - untracked cache: invalidate dirs recursively if .gitignore changes
- - untracked cache: initial untracked cache validation
- - untracked cache: record .gitignore information and dir hierarchy
- - dir.c: optionally compute sha-1 of a .gitignore file
-
- Need extra sets of eyes to review this.
-
-
 * nd/pathspec-strip-fix (2015-04-18) 1 commit
  - pathspec: adjust prefixlen after striping trailing slash
 
  Does not quite fix ($gmane/267614).
+ Will discard.
 
 
 * jc/diff-b-m (2015-02-23) 5 commits
@@ -705,6 +687,156 @@ of the repositories listed at
 --------------------------------------------------
 [Cooking]
 
+* nd/untracked-cache (2015-03-12) 24 commits
+  (merged to 'next' on 2015-05-19 at 26e619b)
+ + git-status.txt: advertisement for untracked cache
+ + untracked cache: guard and disable on system changes
+ + mingw32: add uname()
+ + t7063: tests for untracked cache
+ + update-index: test the system before enabling untracked cache
+ + update-index: manually enable or disable untracked cache
+ + status: enable untracked cache
+ + untracked-cache: temporarily disable with $GIT_DISABLE_UNTRACKED_CACHE
+ + untracked cache: mark index dirty if untracked cache is updated
+ + untracked cache: print stats with $GIT_TRACE_UNTRACKED_STATS
+ + untracked cache: avoid racy timestamps
+ + read-cache.c: split racy stat test to a separate function
+ + untracked cache: invalidate at index addition or removal
+ + untracked cache: load from UNTR index extension
+ + untracked cache: save to an index extension
+ + ewah: add convenient wrapper ewah_serialize_strbuf()
+ + untracked cache: don't open non-existent .gitignore
+ + untracked cache: mark what dirs should be recursed/saved
+ + untracked cache: record/validate dir mtime and reuse cached output
+ + untracked cache: make a wrapper around {open,read,close}dir()
+ + untracked cache: invalidate dirs recursively if .gitignore changes
+ + untracked cache: initial untracked cache validation
+ + untracked cache: record .gitignore information and dir hierarchy
+ + dir.c: optionally compute sha-1 of a .gitignore file
+
+ Teach the index to optionally remember already seen untracked files
+ to speed up "git status" in a working tree with tons of cruft.
+
+ Will cook in 'next'.
+
+
+* dl/branch-error-message (2015-05-06) 1 commit
+  (merged to 'next' on 2015-05-11 at ed947ab)
+ + branch: do not call a "remote-tracking branch" a "remote branch"
+
+ Error messages from "git branch" called remote-tracking branches as
+ "remote branches".
+
+ Will merge to 'master' in the fourth batch.
+
+
+* dl/subtree-push-no-squash (2015-05-07) 1 commit
+  (merged to 'next' on 2015-05-11 at 74d07ca)
+ + contrib/subtree: there's no push --squash
+
+ "git subtree" script (in contrib/) does not have --squash option
+ when pushing, but the documentation and help text pretended as if
+ it did.
+
+ Will merge to 'master' in the fourth batch.
+
+
+* ld/p4-editor-multi-words (2015-05-19) 3 commits
+ - git-p4: fix handling of multi-word P4EDITOR
+ - SQUASH???
+ - git-p4: add failing test for P4EDITOR handling
+
+ Unlike "$EDITOR" and "$GIT_EDITOR" that can hold the path to the
+ command and initial options (e.g. "/path/to/emacs -nw"), 'git p4'
+ did not let the shell interpolate the contents of the environment
+ variable that name the editor "$P4EDITOR" (and "$EDITOR", too).
+ Make it in line with the rest of Git, as well as with Perforce.
+
+
+* dl/subtree-avoid-tricky-echo (2015-05-08) 1 commit
+  (merged to 'next' on 2015-05-11 at 36d4f0e)
+ + contrib/subtree: portability fix for string printing
+
+ "git subtree" script (in contrib/) used "echo -n" to produce
+ progress messages in a non-portable way.
+
+ Will merge to 'master' in the fourth batch.
+
+
+* ls/http-ssl-cipher-list (2015-05-08) 1 commit
+  (merged to 'next' on 2015-05-11 at 55764ce)
+ + http: add support for specifying an SSL cipher list
+
+ Introduce http.<url>.SSLCipherList configuration variable to tweak
+ the list of cipher suite to be used with libcURL when talking with
+ https:// sites.
+
+ Will merge to 'master' in the fourth batch.
+
+
+* ps/bundle-verify-arg (2015-05-08) 1 commit
+  (merged to 'next' on 2015-05-11 at 9f1b1ae)
+ + bundle: verify arguments more strictly
+
+ "git bundle verify" did not diagnose extra parameters on the
+ command line.
+
+ Will merge to 'master' in the fourth batch.
+
+
+* sg/help-subcommands (2015-05-08) 1 commit
+  (merged to 'next' on 2015-05-11 at 91e4f9e)
+ + command-list.txt: fix whitespace inconsistency
+ (this branch is used by sg/help-group.)
+
+ A preparatory clean-up step.
+
+ Will merge to 'master' in the fourth batch.
+
+
+* mh/write-refs-sooner-2.2 (2015-05-12) 8 commits
+ + ref_transaction_commit(): fix atomicity and avoid fd exhaustion
+ + ref_transaction_commit(): remove the local flags variable
+ + ref_transaction_commit(): inline call to write_ref_sha1()
+ + rename_ref(): inline calls to write_ref_sha1() from this function
+ + commit_ref_update(): new function, extracted from write_ref_sha1()
+ + write_ref_to_lockfile(): new function, extracted from write_ref_sha1()
+ + t7004: rename ULIMIT test prerequisite to ULIMIT_STACK_SIZE
+ + update-ref: test handling large transactions properly
+ (this branch is used by mh/write-refs-sooner-2.3 and mh/write-refs-sooner-2.4.)
+
+ Multi-ref transaction support we merged a few releases ago
+ unnecessarily kept many file descriptors open, risking to fail with
+ resource exhaustion.
+
+
+* mh/write-refs-sooner-2.3 (2015-05-12) 1 commit
+ + Merge branch 'mh/write-refs-sooner-2.2' into mh/write-refs-sooner-2.3
+ (this branch is used by mh/write-refs-sooner-2.4; uses mh/write-refs-sooner-2.2.)
+
+ Multi-ref transaction support we merged a few releases ago
+ unnecessarily kept many file descriptors open, risking to fail with
+ resource exhaustion.  This is for 2.3.x track.
+
+
+* mh/write-refs-sooner-2.4 (2015-05-12) 9 commits
+  (merged to 'next' on 2015-05-19 at f7be074)
+ + Merge branch 'mh/write-refs-sooner-2.3' into mh/write-refs-sooner-2.4
+ + ref_transaction_commit(): fix atomicity and avoid fd exhaustion
+ + ref_transaction_commit(): remove the local flags variable
+ + ref_transaction_commit(): inline call to write_ref_sha1()
+ + rename_ref(): inline calls to write_ref_sha1() from this function
+ + commit_ref_update(): new function, extracted from write_ref_sha1()
+ + write_ref_to_lockfile(): new function, extracted from write_ref_sha1()
+ + t7004: rename ULIMIT test prerequisite to ULIMIT_STACK_SIZE
+ + update-ref: test handling large transactions properly
+ (this branch uses mh/write-refs-sooner-2.2 and mh/write-refs-sooner-2.3.)
+
+ Multi-ref transaction support we merged a few releases ago
+ unnecessarily kept many file descriptors open, risking to fail with
+ resource exhaustion.  This is for 2.4.x track.
+
+
 * sg/completion-omit-credential-helpers (2015-05-06) 1 commit
   (merged to 'next' on 2015-05-11 at aa7e554)
  + completion: remove credential helpers from porcelain commands
@@ -713,7 +845,7 @@ of the repositories listed at
  helpers among candidates, which is not something the end user would
  invoke interatively.
 
- Will merge to 'master'.
+ Will merge to 'master' in the fourth batch.
 
 
 * jk/skip-http-tests-under-no-curl (2015-05-07) 2 commits
@@ -723,38 +855,20 @@ of the repositories listed at
 
  Test clean-up.
 
- Will merge to 'master'.
+ Will merge to 'master' in the fourth batch.
 
 
-* nd/dwim-wildcards-as-pathspecs (2015-05-03) 1 commit
-  (merged to 'next' on 2015-05-07 at 8176de7)
- + pathspec: avoid the need of "--" when wildcard is used
-
- A heuristic to help the "git <cmd> <revs> <pathspec>" command line
- convention to catch mistyped paths is to make sure all the non-rev
- parameters in the later part of the command line are names of the
- files in the working tree, but that means "git grep $str -- \*.c"
- must always be disambiguated with "--", because nobody sane will
- create a file whose name literally is asterisk-dot-see.  Loosen the
- heuristic to declare that with a wildcard string the user likely
- meant to give us a pathspec.
-
- Will merge to 'master' in the third batch.
-
-
-* pt/pull-tests (2015-05-03) 7 commits
+* pt/pull-tests (2015-05-18) 8 commits
+ - t5520: check reflog action in fast-forward merge
  - t5521: test --dry-run does not make any changes
  - t5520: test --rebase failure on unborn branch with index
  - t5520: test --rebase with multiple branches
  - t5520: test work tree fast-forward when fetch updates head
  - t5520: test for failure if index has unresolved entries
- - t5520: implement tests for no merge candidates cases
- - t5520: test pulling multiple branches into an empty repository
-
- Add more test coverage to "git pull".  This conflicts slightly with
- a new test jc/merge topic adds, but resolution is fairly trivial.
+ - t5520: test no merge candidates cases
+ - t5520: prevent field splitting in content comparisons
 
Expecting a reroll ($gmane/268391).
Add more test coverage to "git pull".
 
 
 * jc/clone-bundle (2015-04-30) 1 commit
@@ -784,16 +898,6 @@ of the repositories listed at
  Expecting a reroll ($gmane/268419, etc.).
 
 
-* ph/rebase-i-redo (2015-04-29) 1 commit
-  (merged to 'next' on 2015-05-07 at 8fc1f52)
- + rebase -i: redo tasks that die during cherry-pick
-
- "git rebase -i" moved the "current" command from "todo" to "done" a
- bit too prematurely, losing a step when a "pick" did not even start.
-
- Will merge to 'master' in the third batch.
-
-
 * ee/clean-remove-dirs (2015-04-26) 5 commits
  - clean: improve performance when removing lots of directories
  - p7300: add performance tests for clean
@@ -808,83 +912,8 @@ of the repositories listed at
  Waiting for a reroll.
 
 
-* jc/gitignore-precedence (2015-04-22) 1 commit
-  (merged to 'next' on 2015-05-05 at 6ef85da)
- + ignore: info/exclude should trump core.excludesfile
-
- core.excludesfile (defaulting to $XDG_HOME/git/ignore) is supposed
- to be overridden by repository-specific .git/info/exclude file, but
- the order was swapped from the beginning. This belatedly fixes it.
-
- Will merge to 'master' in the third batch.
-
-
-* jk/git-no-more-argv0-path-munging (2015-04-22) 1 commit
-  (merged to 'next' on 2015-05-05 at b3f9a45)
- + stop putting argv[0] dirname at front of PATH
-
- We have prepended $GIT_EXEC_PATH and the path "git" is installed in
- (typically "/usr/bin") to $PATH when invoking subprograms and hooks
- for almost eternity, but the original use case the latter tried to
- support was semi-bogus (i.e. install git to /opt/foo/git and run it
- without having /opt/foo on $PATH), and more importantly it has
- become less and less relevant as Git grew more mainstream (i.e. the
- users would _want_ to have it on their $PATH).  Stop prepending the
- path in which "git" is installed to users' $PATH, as that would
- interfere the command search order people depend on (e.g. they may
- not like versions of programs that are unrelated to Git in /usr/bin
- and want to override them by having different ones in /usr/local/bin
- and have the latter directory earlier in their $PATH).
-
- Will merge to 'master' in the third batch.
-
-
-* jk/stash-require-clean-index (2015-04-22) 3 commits
-  (merged to 'next' on 2015-05-05 at b5f6c32)
- + stash: require a clean index to apply
- + t3903: avoid applying onto dirty index
- + t3903: stop hard-coding commit sha1s
-
- "git stash pop/apply" forgot to make sure that not just the working
- tree is clean but also the index is clean. The latter is important
- as a stash application can conflict and the index will be used for
- conflict resolution.
-
- Will merge to 'master' in the third batch.
-
-
-* jc/merge (2015-04-29) 15 commits
-  (merged to 'next' on 2015-05-07 at 1c56512)
- + merge: deprecate 'git merge <message> HEAD <commit>' syntax
- + merge: handle FETCH_HEAD internally
- + merge: decide if we auto-generate the message early in collect_parents()
- + merge: make collect_parents() auto-generate the merge message
- + merge: extract prepare_merge_message() logic out
- + merge: narrow scope of merge_names
- + merge: split reduce_parents() out of collect_parents()
- + merge: clarify collect_parents() logic
- + merge: small leakfix and code simplification
- + merge: do not check argc to determine number of remote heads
- + merge: clarify "pulling into void" special case
- + t5520: test pulling an octopus into an unborn branch
- + t5520: style fixes
- + merge: simplify code flow
- + merge: test the top-level merge driver
- (this branch is used by jc/merge-drop-old-syntax.)
-
- "git merge FETCH_HEAD" learned that the previous "git fetch" could
- be to create an Octopus merge, i.e. recording multiple branches
- that are not marked as "not-for-merge"; this allows us to lose an
- old style invocation "git merge <msg> HEAD $commits..." in the
- implementation of "git pull" script; the old style syntax can now
- be deprecated.
-
- Will merge to 'master' in the third batch.
-
-
 * jc/merge-drop-old-syntax (2015-04-29) 1 commit
  - merge: drop 'git merge <message> HEAD <commit>' syntax
- (this branch uses jc/merge.)
 
  Stop supporting "git merge <messsage> HEAD <commit>" syntax that
  has been deprecated since October 2007.
@@ -892,127 +921,8 @@ of the repositories listed at
  Will merge to 'next' and keep there during the 2.5 cycle.
 
 
-* jk/test-chain-lint (2015-04-28) 2 commits
-  (merged to 'next' on 2015-05-05 at e6f0290)
- + test-lib: turn on GIT_TEST_CHAIN_LINT by default
- + t7502-commit.sh: fix a broken and-chain
-
- Developer support to automatically detect broken &&-chain in the
- test scripts is now turned on by default.
-
- Will merge to 'master' in the third batch.
-
-
-* bc/connect-plink (2015-04-28) 3 commits
-  (merged to 'next' on 2015-05-05 at 9def2e1)
- + connect: improve check for plink to reduce false positives
- + t5601: fix quotation error leading to skipped tests
- + connect: simplify SSH connection code path
-
- The connection initiation code for "ssh" transport tried to absorb
- differences between the stock "ssh" and Putty-supplied "plink" and
- its derivatives, but the logic to tell that we are using "plink"
- variants were too loose and falsely triggered when "plink" appeared
- anywhere in the path (e.g. "/home/me/bin/uplink/ssh").
-
- Will merge to 'master' in the third batch.
-
-
-* jc/test-prereq-validate (2015-04-28) 1 commit
-  (merged to 'next' on 2015-05-05 at a30464c)
- + test: validate prerequistes syntax
-
- Help us to find broken test script that splits the body part of the
- test by mistaken use of wrong kind of quotes.
-
- Will merge to 'master' in the third batch.
-
-
-* fg/document-commit-message-stripping (2015-04-27) 1 commit
-  (merged to 'next' on 2015-05-05 at 1892a99)
- + Documentation: clarify how "git commit" cleans up the edited log message
-
- Will merge to 'master' in the third batch.
-
-
 * ah/usage-strings (2015-05-03) 2 commits
  - branch: fix funny-sounding error message
  - blame, log: format usage strings similarly to those in documentation
 
  A few usage string updates.  The tip one still needs work.
-
-
-* kn/cat-file-literally (2015-05-06) 4 commits
- - t1006: add tests for git cat-file --allow-unknown-type
- - cat-file: teach cat-file a '--allow-unknown-type' option
- - cat-file: make the options mutually exclusive
- - sha1_file: support reading from a loose object of unknown type
-
- Add the "--allow-unknown-type" option to "cat-file" to allow
- inspecting loose objects of an experimental or a broken type.
-
- Will merge to 'next'.
-
-
-* nd/diff-i-t-a (2015-03-23) 1 commit
-  (merged to 'next' on 2015-05-05 at cba9cd9)
- + diff-lib.c: adjust position of i-t-a entries in diff
-
- Originally merged to 'next' on 2015-03-24
-
- After "git add -N", the path appeared in output of "git diff HEAD"
- and "git diff --cached HEAD", leading "git status" to classify it
- as "Changes to be committed".  Such a path, however, is not yet to
- be scheduled to be committed.  "git diff" showed the change to the
- path as modification, not as a "new file", in the header of its
- output.
-
- Treat such paths as "yet to be added to the index but Git already
- know about them"; "git diff HEAD" and "git diff --cached HEAD"
- should not talk about them, and "git diff" should show them as new
- files yet to be added to the index.
-
- Will merge to 'master' in the third batch.
-
---------------------------------------------------
-[Discarded]
-
-
-* mh/ref-directory-file (2015-05-05) 19 commits
- . SQUASH???
- . reflog_expire(): integrate lock_ref_sha1_basic() errors into ours
- . ref_transaction_commit(): delete extra "the" from error message
- . ref_transaction_commit(): provide better error messages
- . rename_ref(): integrate lock_ref_sha1_basic() errors into ours
- . lock_ref_sha1_basic(): improve diagnostics for D/F conflicts
- . lock_ref_sha1_basic(): report errors via a "struct strbuf *err"
- . verify_refname_available(): report errors via a "struct strbuf *err"
- . verify_refname_available(): rename function
- . refs: check for D/F conflicts among refs processed in a transaction
- . ref_transaction_commit(): use a string_list for detecting duplicates
- . is_refname_available(): use dirname in first loop
- . struct nonmatching_ref_data: store a refname instead of a ref_entry
- . report_refname_conflict(): inline function
- . entry_matches(): inline function
- . is_refname_available(): convert local variable "dirname" to strbuf
- . is_refname_available(): avoid shadowing "dir" variable
- . is_refname_available(): explain the reason for an early exit
- . t1404: new tests of D/F conflicts within ref transactions
- (this branch uses mh/ref-lock-avoid-running-out-of-fds.)
-
- Reroll posted, but didn't have time to pick it up.
-
-
-
-* mh/ref-lock-avoid-running-out-of-fds (2015-04-25) 8 commits
- . ref_transaction_commit(): only keep one lockfile open at a time
- . ref_transaction_commit(): remove the local flags variables
- . write_ref_sha1(): inline function at callers
- . commit_ref_update(): new function, extracted from write_ref_sha1()
- . write_ref_to_lockfile(): new function, extracted from write_ref_sha1()
- . refs.c: remove lock_fd from struct ref_lock
- . t7004: rename ULIMIT test prerequisite to ULIMIT_STACK_SIZE
- . update-ref: test handling large transactions properly
- (this branch is used by mh/ref-directory-file.)
-
- Superseded by mh/write-refs-sooner* series.