563 lines
		
	
	
	
		
			26 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			563 lines
		
	
	
	
		
			26 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
| Git 2.5 Release Notes
 | |
| =====================
 | |
| 
 | |
| Updates since v2.4
 | |
| ------------------
 | |
| 
 | |
| UI, Workflows & Features
 | |
| 
 | |
|  * The bash completion script (in contrib/) learned a few options that
 | |
|    "git revert" takes.
 | |
| 
 | |
|  * Whitespace breakages in deleted and context lines can also be
 | |
|    painted in the output of "git diff" and friends with the new
 | |
|    --ws-error-highlight option.
 | |
| 
 | |
|  * List of commands shown by "git help" are grouped along the workflow
 | |
|    elements to help early learners.
 | |
| 
 | |
|  * "git p4" now detects the filetype (e.g. binary) correctly even when
 | |
|    the files are opened exclusively.
 | |
| 
 | |
|  * git p4 attempts to better handle branches in Perforce.
 | |
| 
 | |
|  * "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.
 | |
| 
 | |
|  * More workaround for Perforce's row number limit in "git p4".
 | |
| 
 | |
|  * 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).
 | |
|    This release makes it in line with the rest of Git, as well as with
 | |
|    Perforce.
 | |
| 
 | |
|  * A new short-hand <branch>@{push} denotes the remote-tracking branch
 | |
|    that tracks the branch at the remote the <branch> would be pushed
 | |
|    to.
 | |
| 
 | |
|  * "git show-branch --topics HEAD" (with no other arguments) did not
 | |
|    do anything interesting.  Instead, contrast the given revision
 | |
|    against all the local branches by default.
 | |
| 
 | |
|  * 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.
 | |
| 
 | |
|    Consider this as still an experimental feature; its UI is still
 | |
|    likely to change.
 | |
| 
 | |
|  * Tweak the sample "store" backend of the credential helper to honor
 | |
|    XDG configuration file locations when specified.
 | |
| 
 | |
|  * A heuristic we use to catch mistyped paths on the command line
 | |
|    "git <cmd> <revs> <pathspec>" is to make sure that 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.
 | |
| 
 | |
|  * "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 (but not removed yet).
 | |
| 
 | |
|  * 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.  We no longer do and ignore EPIPE
 | |
|    when writing to feed the filter scripts.
 | |
| 
 | |
|    This changes semantics, but arguably in a good way.  If a filter
 | |
|    can produce its output without fully consuming its input using
 | |
|    whatever magic, we now let it do so, instead of diagnosing it
 | |
|    as a programming error.
 | |
| 
 | |
|  * Instead of dying immediately upon failing to obtain a lock, the
 | |
|    locking (of refs etc) retries after a short while with backoff.
 | |
| 
 | |
|  * Introduce http.<url>.SSLCipherList configuration variable to tweak
 | |
|    the list of cipher suite to be used with libcURL when talking with
 | |
|    https:// sites.
 | |
| 
 | |
|  * "git subtree" script (in contrib/) used "echo -n" to produce
 | |
|    progress messages in a non-portable way.
 | |
| 
 | |
|  * "git subtree" script (in contrib/) does not have --squash option
 | |
|    when pushing, but the documentation and help text pretended as if
 | |
|    it did.
 | |
| 
 | |
|  * The Git subcommand completion (in contrib/) no longer lists credential
 | |
|    helpers among candidates; they are not something the end user would
 | |
|    invoke interactively.
 | |
| 
 | |
|  * The index file can be taught with "update-index --untracked-cache"
 | |
|    to optionally remember already seen untracked files, in order to
 | |
|    speed up "git status" in a working tree with tons of cruft.
 | |
| 
 | |
|  * "git mergetool" learned to drive WinMerge as a backend.
 | |
| 
 | |
|  * "git upload-pack" that serves "git fetch" can be told to serve
 | |
|    commits that are not at the tip of any ref, as long as they are
 | |
|    reachable from a ref, with uploadpack.allowReachableSHA1InWant
 | |
|    configuration variable.
 | |
| 
 | |
|  * "git cat-file --batch(-check)" learned the "--follow-symlinks"
 | |
|    option that follows an in-tree symbolic link 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.
 | |
| 
 | |
|    Consider this as still an experimental and incomplete feature:
 | |
| 
 | |
|     - We may want to do the same for in-index objects, e.g.
 | |
|       asking for :RelNotes with this option should give
 | |
|       :Documentation/RelNotes/2.5.0.txt, too
 | |
| 
 | |
|     - "git cat-file --follow-symlinks blob HEAD:RelNotes"
 | |
|       may also be something we want to allow in the future.
 | |
| 
 | |
|  * "git send-email" learned the alias file format used by the sendmail
 | |
|    program (in a simplified form; we obviously do not feed pipes).
 | |
| 
 | |
|  * Traditionally, external low-level 3-way merge drivers are expected
 | |
|    to produce their results based solely on the contents of the three
 | |
|    variants given in temporary files named by %O, %A and %B on their
 | |
|    command line.  Additionally allow them to look at the final path
 | |
|    (given by %P).
 | |
| 
 | |
|  * "git blame" learned blame.showEmail configuration variable.
 | |
| 
 | |
|  * "git apply" cannot diagnose a patch corruption when the breakage is
 | |
|    to mark the length of the hunk shorter than it really is on the
 | |
|    hunk header line "@@ -l,k +m,n @@"; one special case it could is
 | |
|    when the hunk becomes no-op (e.g. k == n == 2 for two-line context
 | |
|    patch output), and it learned to do so in this special case.
 | |
| 
 | |
|  * Add the "--allow-unknown-type" option to "cat-file" to allow
 | |
|    inspecting loose objects of an experimental or a broken type.
 | |
| 
 | |
|  * 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.
 | |
|    (merge a4fb76c lm/squelch-bg-progress later to maint).
 | |
| 
 | |
| 
 | |
| Performance, Internal Implementation, Development Support etc.
 | |
| 
 | |
|  * "unsigned char [20]" used throughout the code to represent object
 | |
|    names are being converted into a semi-opaque "struct object_id".
 | |
|    This effort is expected to interfere with other topics in flight,
 | |
|    but hopefully will give us one extra level of abstraction in the
 | |
|    end, when completed.
 | |
| 
 | |
|  * for_each_ref() callback functions were taught to name the objects
 | |
|    not with "unsigned char sha1[20]" but with "struct object_id".
 | |
| 
 | |
|  * Catch a programmer mistake to feed a pointer not an array to
 | |
|    ARRAY_SIZE() macro, by using a couple of GCC extensions.
 | |
| 
 | |
|  * Some error messages in "git config" were emitted without calling
 | |
|    the usual error() facility.
 | |
| 
 | |
|  * 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.
 | |
| 
 | |
|    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).
 | |
| 
 | |
|  * More line-ending tests.
 | |
| 
 | |
|  * An earlier rewrite to use strbuf_getwholeline() instead of fgets(3)
 | |
|    to read packed-refs file revealed that the former is unacceptably
 | |
|    inefficient.  It has been optimized by using getdelim(3) when
 | |
|    available.
 | |
| 
 | |
|  * 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.
 | |
| 
 | |
|  * 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.
 | |
|    (merge 19d122b pt/pull-tags-error-diag later to maint).
 | |
| 
 | |
|  * Help us to find broken test script that splits the body part of the
 | |
|    test by mistaken use of wrong kind of quotes.
 | |
|    (merge d93d5d5 jc/test-prereq-validate later to maint).
 | |
| 
 | |
|  * Developer support to automatically detect broken &&-chain in the
 | |
|    test scripts is now turned on by default.
 | |
|    (merge 92b269f jk/test-chain-lint later to maint).
 | |
| 
 | |
|  * Error reporting mechanism used in "refs" API has been made more
 | |
|    consistent.
 | |
| 
 | |
|  * "git pull" has more test coverage now.
 | |
| 
 | |
|  * "git pull" has become more aware of the options meant for
 | |
|    underlying "git fetch" and then learned to use parse-options
 | |
|    parser.
 | |
| 
 | |
|  * Clarify in the Makefile a guideline to decide use of USE_NSEC.
 | |
| 
 | |
| Also contains various documentation updates and code clean-ups.
 | |
| 
 | |
| 
 | |
| Fixes since v2.4
 | |
| ----------------
 | |
| 
 | |
| Unless otherwise noted, all the fixes since v2.4 in the maintenance
 | |
| track are contained in this release (see the maintenance releases'
 | |
| notes for details).
 | |
| 
 | |
|  * Git 2.4 broke setting verbosity and progress levels on "git clone"
 | |
|    with native transports.
 | |
|    (merge 822f0c4 mh/clone-verbosity-fix later to maint).
 | |
| 
 | |
|  * "git add -e" did not allow the user to abort the operation by
 | |
|    killing the editor.
 | |
|    (merge cb64800 jk/add-e-kill-editor later to maint).
 | |
| 
 | |
|  * Memory usage of "git index-pack" has been trimmed by tens of
 | |
|    per-cent.
 | |
|    (merge f0e7f11 nd/slim-index-pack-memory-usage later to maint).
 | |
| 
 | |
|  * "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.
 | |
|    (merge b6e8a3b jk/still-interesting later to maint).
 | |
| 
 | |
|  * "hash-object --literally" introduced in v2.2 was not prepared to
 | |
|    take a really long object type name.
 | |
|    (merge 1427a7f jc/hash-object later to maint).
 | |
| 
 | |
|  * "git rebase --quiet" was not quite quiet when there is nothing to
 | |
|    do.
 | |
|    (merge 22946a9 jk/rebase-quiet-noop later to maint).
 | |
| 
 | |
|  * The completion for "log --decorate=" parameter value was incorrect.
 | |
|    (merge af16bda sg/complete-decorate-full-not-long later to maint).
 | |
| 
 | |
|  * "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".
 | |
|    (merge df06201 jk/filter-branch-use-of-sed-on-incomplete-line later to maint).
 | |
| 
 | |
|  * "git daemon" fails to build from the source under NO_IPV6
 | |
|    configuration (regression in 2.4).
 | |
|    (merge d358f77 jc/daemon-no-ipv6-for-2.4.1 later to maint).
 | |
| 
 | |
|  * 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 portable across platforms
 | |
|    while terminating lines in their working tree files with CRLF for
 | |
|    their platform.
 | |
|    (merge 4bf256d tb/blame-resurrect-convert-to-git later to maint).
 | |
| 
 | |
|  * We avoid setting core.worktree when the repository location is the
 | |
|    ".git" directory directly at the top level of the working tree, but
 | |
|    the code misdetected the case in which the working tree is at the
 | |
|    root level of the filesystem (which arguably is a silly thing to
 | |
|    do, but still valid).
 | |
|    (merge 84ccad8 jk/init-core-worktree-at-root later to maint).
 | |
| 
 | |
|  * "git commit --date=now" or anything that relies on approxidate lost
 | |
|    the daylight-saving-time offset.
 | |
|    (merge f6e6362 jc/epochtime-wo-tz later to maint).
 | |
| 
 | |
|  * Access to objects in repositories that borrow from another one on a
 | |
|    slow NFS server unnecessarily got more expensive due to recent code
 | |
|    becoming more cautious in a naive way not to lose objects to pruning.
 | |
|    (merge ee1c6c3 jk/prune-mtime later to maint).
 | |
| 
 | |
|  * The codepaths that read .gitignore and .gitattributes files have been
 | |
|    taught that these files encoded in UTF-8 may have UTF-8 BOM marker at
 | |
|    the beginning; this makes it in line with what we do for configuration
 | |
|    files already.
 | |
|    (merge 27547e5 cn/bom-in-gitignore later to maint).
 | |
| 
 | |
|  * a few helper scripts in the test suite did not report errors
 | |
|    correctly.
 | |
|    (merge de248e9 ep/fix-test-lib-functions-report later to maint).
 | |
| 
 | |
|  * The default $HOME/.gitconfig file created upon "git config --global"
 | |
|    that edits it had incorrectly spelled user.name and user.email
 | |
|    entries in it.
 | |
|    (merge 7e11052 oh/fix-config-default-user-name-section later to maint).
 | |
| 
 | |
|  * "git cat-file bl $blob" failed to barf even though there is no
 | |
|    object type that is "bl".
 | |
|    (merge b7994af jk/type-from-string-gently later to maint).
 | |
| 
 | |
|  * The usual "git diff" when seeing a file turning into a directory
 | |
|    showed a patchset to remove the file and create all files in the
 | |
|    directory, but "git diff --no-index" simply refused to work.  Also,
 | |
|    when asked to compare a file and a directory, imitate POSIX "diff"
 | |
|    and compare the file with the file with the same name in the
 | |
|    directory, instead of refusing to run.
 | |
|    (merge 0615173 jc/diff-no-index-d-f later to maint).
 | |
| 
 | |
|  * "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.
 | |
|    (merge 8cbc57c ph/rebase-i-redo later to maint).
 | |
| 
 | |
|  * 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").
 | |
|    (merge baaf233 bc/connect-plink later to maint).
 | |
| 
 | |
|  * 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).
 | |
|    (merge a0b4507 jk/git-no-more-argv0-path-munging later to maint).
 | |
| 
 | |
|  * 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.
 | |
|    (merge 099d2d8 jc/gitignore-precedence later to maint).
 | |
| 
 | |
|  * 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.
 | |
|    (merge 66d2e04 sb/t1020-cleanup later to maint).
 | |
| 
 | |
|  * 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.
 | |
|    (merge 429ad20 mg/log-decorate-HEAD later to maint).
 | |
| 
 | |
|  * 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.
 | |
|    (merge c628edf mh/ref-directory-file later to maint).
 | |
| 
 | |
|  * 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.
 | |
|    (merge 185ce3a mh/write-refs-sooner-2.4 later to maint).
 | |
| 
 | |
|  * "git bundle verify" did not diagnose extra parameters on the
 | |
|    command line.
 | |
|    (merge 7886cfa ps/bundle-verify-arg later to maint).
 | |
| 
 | |
|  * Various documentation mark-up fixes to make the output more
 | |
|    consistent in general and also make AsciiDoctor (an alternative
 | |
|    formatter) happier.
 | |
|    (merge d0258b9 jk/asciidoc-markup-fix later to maint).
 | |
|    (merge ad3967a jk/stripspace-asciidoctor-fix later to maint).
 | |
|    (merge 975e382 ja/tutorial-asciidoctor-fix later to maint).
 | |
| 
 | |
|  * The code to read pack-bitmap wanted to allocate a few hundred
 | |
|    pointers to a structure, but by mistake allocated and leaked memory
 | |
|    enough to hold that many actual structures.  Correct the allocation
 | |
|    size and also have it on stack, as it is small enough.
 | |
|    (merge 599dc76 rs/plug-leak-in-pack-bitmaps later to maint).
 | |
| 
 | |
|  * The pull.ff configuration was supposed to override the merge.ff
 | |
|    configuration, but it didn't.
 | |
|    (merge db9bb28 pt/pull-ff-vs-merge-ff later to maint).
 | |
| 
 | |
|  * "git pull --log" and "git pull --no-log" worked as expected, but
 | |
|    "git pull --log=20" did not.
 | |
|    (merge 5061a44 pt/pull-log-n later to maint).
 | |
| 
 | |
|  * "git rerere forget" in a repository without rerere enabled gave a
 | |
|    cryptic error message; it should be a silent no-op instead.
 | |
|    (merge 0544574 jk/rerere-forget-check-enabled later to maint).
 | |
| 
 | |
|  * "git rebase -i" fired post-rewrite hook when it shouldn't (namely,
 | |
|    when it was told to stop sequencing with 'exec' insn).
 | |
|    (merge 141ff8f mm/rebase-i-post-rewrite-exec later to maint).
 | |
| 
 | |
|  * Clarify that "log --raw" and "log --format=raw" are unrelated
 | |
|    concepts.
 | |
|    (merge 92de921 mm/log-format-raw-doc later to maint).
 | |
| 
 | |
|  * Make "git stash something --help" error out, so that users can
 | |
|    safely say "git stash drop --help".
 | |
|    (merge 5ba2831 jk/stash-options later to maint).
 | |
| 
 | |
|  * 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?
 | |
|    (merge f6a1e1e jh/filter-empty-contents later to maint).
 | |
| 
 | |
|  * 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).
 | |
|    (merge 636614f jk/http-backend-deadlock later to maint).
 | |
| 
 | |
|  * "git clean pathspec..." tried to lstat(2) and complain even for
 | |
|    paths outside the given pathspec.
 | |
|    (merge 838d6a9 dt/clean-pathspec-filter-then-lstat later to maint).
 | |
| 
 | |
|  * Recent "git prune" traverses young unreachable objects to safekeep
 | |
|    old objects in the reachability chain from them, which sometimes
 | |
|    caused error messages that are unnecessarily alarming.
 | |
|    (merge ce4e7b2 jk/squelch-missing-link-warning-for-unreachable later to maint).
 | |
| 
 | |
|  * The configuration reader/writer uses mmap(2) interface to access
 | |
|    the files; when we find a directory, it barfed with "Out of memory?".
 | |
|    (merge 9ca0aaf jk/diagnose-config-mmap-failure later to maint).
 | |
| 
 | |
|  * "color.diff.plain" was a misnomer; give it 'color.diff.context' as
 | |
|    a more logical synonym.
 | |
|    (merge 8dbf3eb jk/color-diff-plain-is-context later to maint).
 | |
| 
 | |
|  * The setup code used to die when core.bare and core.worktree are set
 | |
|    inconsistently, even for commands that do not need working tree.
 | |
|    (merge fada767 jk/die-on-bogus-worktree-late later to maint).
 | |
| 
 | |
|  * Recent Mac OS X updates breaks the logic to detect that the machine
 | |
|    is on the AC power in the sample pre-auto-gc script.
 | |
|    (merge c54c7b3 pa/auto-gc-mac-osx later to maint).
 | |
| 
 | |
|  * "git commit --cleanup=scissors" was not careful enough to protect
 | |
|    against getting fooled by a line that looked like scissors.
 | |
|    (merge fbfa097 sg/commit-cleanup-scissors later to maint).
 | |
| 
 | |
|  * "Have we lost a race with competing repack?" check was too
 | |
|    expensive, especially while receiving a huge object transfer
 | |
|    that runs index-pack (e.g. "clone" or "fetch").
 | |
|    (merge 0eeb077 jk/index-pack-reduce-recheck later to maint).
 | |
| 
 | |
|  * The tcsh completion writes a bash scriptlet but that would have
 | |
|    failed for users with noclobber set.
 | |
|    (merge 0b1f688 af/tcsh-completion-noclobber later to maint).
 | |
| 
 | |
|  * "git for-each-ref" reported "missing object" for 0{40} when it
 | |
|    encounters a broken ref.  The lack of object whose name is 0{40} is
 | |
|    not the problem; the ref being broken is.
 | |
|    (merge 501cf47 mh/reporting-broken-refs-from-for-each-ref later to maint).
 | |
| 
 | |
|  * Various fixes around "git am" that applies a patch to a history
 | |
|    that is not there yet.
 | |
|    (merge 6ea3b67 pt/am-abort-fix later to maint).
 | |
| 
 | |
|  * "git fsck" used to ignore missing or invalid objects recorded in reflog.
 | |
|    (merge 19bf6c9 mh/fsck-reflog-entries later to maint).
 | |
| 
 | |
|  * "git format-patch --ignore-if-upstream A..B" did not like to be fed
 | |
|    tags as boundary commits.
 | |
|    (merge 9b7a61d jc/do-not-feed-tags-to-clear-commit-marks later to maint).
 | |
| 
 | |
|  * "git fetch --depth=<depth>" and "git clone --depth=<depth>" issued
 | |
|    a shallow transfer request even to an upload-pack that does not
 | |
|    support the capability.
 | |
|    (merge eb86a50 me/fetch-into-shallow-safety later to maint).
 | |
| 
 | |
|  * "git rebase" did not exit with failure when format-patch it invoked
 | |
|    failed for whatever reason.
 | |
|    (merge 60d708b cb/rebase-am-exit-code later to maint).
 | |
| 
 | |
|  * Fix a small bug in our use of umask() return value.
 | |
|    (merge 3096b2e jk/fix-refresh-utime later to maint).
 | |
| 
 | |
|  * An ancient test framework enhancement to allow color was not
 | |
|    entirely correct; this makes it work even when tput needs to read
 | |
|    from the ~/.terminfo under the user's real HOME directory.
 | |
|    (merge d5c1b7c rh/test-color-avoid-terminfo-in-original-home later to maint).
 | |
| 
 | |
|  * A minor bugfix when pack bitmap is used with "rev-list --count".
 | |
|    (merge c8a70d3 jk/rev-list-no-bitmap-while-pruning later to maint).
 | |
| 
 | |
|  * "git config" failed to update the configuration file when the
 | |
|    underlying filesystem is incapable of renaming a file that is still
 | |
|    open.
 | |
|    (merge 7a64592 kb/config-unmap-before-renaming later to maint).
 | |
| 
 | |
|  * Avoid possible ssize_t to int truncation.
 | |
|    (merge 6c8afe4 mh/strbuf-read-file-returns-ssize-t later to maint).
 | |
| 
 | |
|  * When you say "!<ENTER>" while running say "git log", you'd confuse
 | |
|    yourself in the resulting shell, that may look as if you took
 | |
|    control back to the original shell you spawned "git log" from but
 | |
|    that isn't what is happening.  To that new shell, we leaked
 | |
|    GIT_PAGER_IN_USE environment variable that was meant as a local
 | |
|    communication between the original "Git" and subprocesses that was
 | |
|    spawned by it after we launched the pager, which caused many
 | |
|    "interesting" things to happen, e.g. "git diff | cat" still paints
 | |
|    its output in color by default.
 | |
| 
 | |
|    Stop leaking that environment variable to the pager's half of the
 | |
|    fork; we only need it on "Git" side when we spawn the pager.
 | |
|    (merge 124b519 jc/unexport-git-pager-in-use-in-pager later to maint).
 | |
| 
 | |
|  * Abandoning an already applied change in "git rebase -i" with
 | |
|    "--continue" left CHERRY_PICK_HEAD and confused later steps.
 | |
|    (merge 0e0aff4 js/rebase-i-clean-up-upon-continue-to-skip later to maint).
 | |
| 
 | |
|  * We used to ask libCURL to use the most secure authentication method
 | |
|    available when talking to an HTTP proxy only when we were told to
 | |
|    talk to one via configuration variables.  We now ask libCURL to
 | |
|    always use the most secure authentication method, because the user
 | |
|    can tell libCURL to use an HTTP proxy via an environment variable
 | |
|    without using configuration variables.
 | |
|    (merge 5841520 et/http-proxyauth later to maint).
 | |
| 
 | |
|  * A fix to a minor regression to "git fsck" in v2.2 era that started
 | |
|    complaining about a body-less tag object when it lacks a separator
 | |
|    empty line after its header to separate it with a non-existent body.
 | |
|    (merge 84d18c0 jc/fsck-retire-require-eoh later to maint).
 | |
| 
 | |
|  * Code cleanups and documentation updates.
 | |
|    (merge 0269f96 mm/usage-log-l-can-take-regex later to maint).
 | |
|    (merge 64f2589 nd/t1509-chroot-test later to maint).
 | |
|    (merge d201a1e sb/test-bitmap-free-at-end later to maint).
 | |
|    (merge 05bfc7d sb/line-log-plug-pairdiff-leak later to maint).
 | |
|    (merge 846e5df pt/xdg-config-path later to maint).
 | |
|    (merge 1154aa4 jc/plug-fmt-merge-msg-leak later to maint).
 | |
|    (merge 319b678 jk/sha1-file-reduce-useless-warnings later to maint).
 | |
|    (merge 9a35c14 fg/document-commit-message-stripping later to maint).
 | |
|    (merge bbf431c ps/doc-packfile-vs-pack-file later to maint).
 | |
|    (merge 309a9e3 jk/skip-http-tests-under-no-curl later to maint).
 | |
|    (merge ccd593c dl/branch-error-message later to maint).
 | |
|    (merge 22570b6 rs/janitorial later to maint).
 | |
|    (merge 5c2a581 mc/commit-doc-grammofix later to maint).
 | |
|    (merge ce41720 ah/usage-strings later to maint).
 | |
|    (merge e6a268c sb/glossary-submodule later to maint).
 | |
|    (merge ec48a76 sb/submodule-doc-intro later to maint).
 | |
|    (merge 14f8b9b jk/clone-dissociate later to maint).
 | |
|    (merge 055c7e9 sb/pack-protocol-mention-smart-http later to maint).
 | |
|    (merge 7c37a5d jk/make-fix-dependencies later to maint).
 | |
|    (merge fc0aa39 sg/merge-summary-config later to maint).
 | |
|    (merge 329af6c pt/t0302-needs-sanity later to maint).
 | |
|    (merge d614f07 fk/doc-format-patch-vn later to maint).
 | |
|    (merge 72dbb36 sg/completion-commit-cleanup later to maint).
 | |
|    (merge e654eb2 es/utf8-stupid-compiler-workaround later to maint).
 | |
|    (merge 34b935c es/osx-header-pollutes-mask-macro later to maint).
 | |
|    (merge ab7fade jc/prompt-document-ps1-state-separator later to maint).
 | |
|    (merge 25f600e mm/describe-doc later to maint).
 | |
|    (merge 83fe167 mm/branch-doc-updates later to maint).
 | |
|    (merge 75d2e5a ls/hint-rev-list-count later to maint).
 | |
|    (merge edc8f71 cb/subtree-tests-update later to maint).
 | |
|    (merge 5330e6e sb/p5310-and-chain later to maint).
 | |
|    (merge c4ac525 tb/checkout-doc later to maint).
 | |
|    (merge e479c5f jk/pretty-encoding-doc later to maint).
 | |
|    (merge 7e837c6 ss/clone-guess-dir-name-simplify later to maint).
 |