This causes cgit to serve error pages, which is undesirable. This reverts commit5229c9b232, reversing changes made tof2b211131f.
		
			
				
	
	
		
			675 lines
		
	
	
	
		
			29 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			675 lines
		
	
	
	
		
			29 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
| Git 2.10 Release Notes
 | |
| ======================
 | |
| 
 | |
| Backward compatibility notes
 | |
| ----------------------------
 | |
| 
 | |
| Updates since v2.9
 | |
| ------------------
 | |
| 
 | |
| UI, Workflows & Features
 | |
| 
 | |
|  * "git pull --rebase --verify-signature" learned to warn the user
 | |
|    that "--verify-signature" is a no-op when rebasing.
 | |
| 
 | |
|  * An upstream project can make a recommendation to shallowly clone
 | |
|    some submodules in the .gitmodules file it ships.
 | |
| 
 | |
|  * "git worktree add" learned that '-' can be used as a short-hand for
 | |
|    "@{-1}", the previous branch.
 | |
| 
 | |
|  * Update the funcname definition to support css files.
 | |
| 
 | |
|  * The completion script (in contrib/) learned to complete "git
 | |
|    status" options.
 | |
| 
 | |
|  * Messages that are generated by auto gc during "git push" on the
 | |
|    receiving end are now passed back to the sending end in such a way
 | |
|    that they are shown with "remote: " prefix to avoid confusing the
 | |
|    users.
 | |
| 
 | |
|  * "git add -i/-p" learned to honor diff.compactionHeuristic
 | |
|    experimental knob, so that the user can work on the same hunk split
 | |
|    as "git diff" output.
 | |
| 
 | |
|  * "upload-pack" allows a custom "git pack-objects" replacement when
 | |
|    responding to "fetch/clone" via the uploadpack.packObjectsHook.
 | |
|    (merge b738396 jk/upload-pack-hook later to maint).
 | |
| 
 | |
|  * Teach format-patch and mailsplit (hence "am") how a line that
 | |
|    happens to begin with "From " in the e-mail message is quoted with
 | |
|    ">", so that these lines can be restored to their original shape.
 | |
|    (merge d9925d1 ew/mboxrd-format-am later to maint).
 | |
| 
 | |
|  * "git repack" learned the "--keep-unreachable" option, which sends
 | |
|    loose unreachable objects to a pack instead of leaving them loose.
 | |
|    This helps heuristics based on the number of loose objects
 | |
|    (e.g. "gc --auto").
 | |
|    (merge e26a8c4 jk/repack-keep-unreachable later to maint).
 | |
| 
 | |
|  * "log --graph --format=" learned that "%>|(N)" specifies the width
 | |
|    relative to the terminal's left edge, not relative to the area to
 | |
|    draw text that is to the right of the ancestry-graph section.  It
 | |
|    also now accepts negative N that means the column limit is relative
 | |
|    to the right border.
 | |
| 
 | |
|  * A careless invocation of "git send-email directory/" after editing
 | |
|    0001-change.patch with an editor often ends up sending both
 | |
|    0001-change.patch and its backup file, 0001-change.patch~, causing
 | |
|    embarrassment and a minor confusion.  Detect such an input and
 | |
|    offer to skip the backup files when sending the patches out.
 | |
|    (merge 531220b jc/send-email-skip-backup later to maint).
 | |
| 
 | |
|  * "git submodule update" that drives many "git clone" could
 | |
|    eventually hit flaky servers/network conditions on one of the
 | |
|    submodules; the command learned to retry the attempt.
 | |
| 
 | |
|  * The output coloring scheme learned two new attributes, italic and
 | |
|    strike, in addition to existing bold, reverse, etc.
 | |
| 
 | |
|  * "git log" learns log.showSignature configuration variable, and a
 | |
|    command line option "--no-show-signature" to countermand it.
 | |
|    (merge fce04c3 mj/log-show-signature-conf later to maint).
 | |
| 
 | |
|  * More markings of messages for i18n, with updates to various tests
 | |
|    to pass GETTEXT_POISON tests.
 | |
| 
 | |
|  * "git archive" learned to handle files that are larger than 8GB and
 | |
|    commits far in the future than expressible by the traditional US-TAR
 | |
|    format.
 | |
|    (merge 560b0e8 jk/big-and-future-archive-tar later to maint).
 | |
| 
 | |
| 
 | |
|  * A new configuration variable core.sshCommand has been added to
 | |
|    specify what value for GIT_SSH_COMMAND to use per repository.
 | |
| 
 | |
|  * "git worktree prune" protected worktrees that are marked as
 | |
|    "locked" by creating a file in a known location.  "git worktree"
 | |
|    command learned a dedicated command pair to create and remove such
 | |
|    a file, so that the users do not have to do this with editor.
 | |
| 
 | |
|  * A handful of "git svn" updates.
 | |
| 
 | |
|  * "git push" learned to accept and pass extra options to the
 | |
|    receiving end so that hooks can read and react to them.
 | |
| 
 | |
|  * "git status" learned to suggest "merge --abort" during a conflicted
 | |
|    merge, just like it already suggests "rebase --abort" during a
 | |
|    conflicted rebase.
 | |
| 
 | |
|  * "git jump" script (in contrib/) has been updated a bit.
 | |
|    (merge a91e692 jk/git-jump later to maint).
 | |
| 
 | |
|  * "git push" and "git clone" learned to give better progress meters
 | |
|    to the end user who is waiting on the terminal.
 | |
| 
 | |
|  * An entry "git log --decorate" for the tip of the current branch is
 | |
|    shown as "HEAD -> name" (where "name" is the name of the branch);
 | |
|    the arrow is now painted in the same color as "HEAD", not in the
 | |
|    color for commits.
 | |
| 
 | |
|  * "git format-patch" learned format.from configuration variable to
 | |
|    specify the default settings for its "--from" option.
 | |
| 
 | |
|  * "git am -3" calls "git merge-recursive" when it needs to fall back
 | |
|    to a three-way merge; this call has been turned into an internal
 | |
|    subroutine call instead of spawning a separate subprocess.
 | |
| 
 | |
|  * The command line completion scripts (in contrib/) now knows about
 | |
|    "git branch --delete/--move [--remote]".
 | |
|    (merge 2703c22 vs/completion-branch-fully-spelled-d-m-r later to maint).
 | |
| 
 | |
|  * "git rev-parse --git-path hooks/<hook>" learned to take
 | |
|    core.hooksPath configuration variable (introduced during 2.9 cycle)
 | |
|    into account.
 | |
|    (merge 9445b49 ab/hooks later to maint).
 | |
| 
 | |
|  * "git log --show-signature" and other commands that display the
 | |
|    verification status of PGP signature now shows the longer key-id,
 | |
|    as 32-bit key-id is so last century.
 | |
| 
 | |
| 
 | |
| Performance, Internal Implementation, Development Support etc.
 | |
| 
 | |
|  * "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.
 | |
| 
 | |
|  * When "git daemon" is run without --[init-]timeout specified, a
 | |
|    connection from a client that silently goes offline can hang around
 | |
|    for a long time, wasting resources.  The socket-level KEEPALIVE has
 | |
|    been enabled to allow the OS to notice such failed connections.
 | |
| 
 | |
|  * "git upload-pack" command has been updated to use the parse-options
 | |
|    API.
 | |
| 
 | |
|  * The "git apply" standalone program is being libified; the first
 | |
|    step to move many state variables into a structure that can be
 | |
|    explicitly (re)initialized to make the machinery callable more
 | |
|    than once has been merged.
 | |
| 
 | |
|  * HTTP transport gained an option to produce more detailed debugging
 | |
|    trace.
 | |
|    (merge 73e57aa ep/http-curl-trace later to maint).
 | |
| 
 | |
|  * Instead of taking advantage of the fact that a struct string_list
 | |
|    that is allocated with all NULs happens to be the INIT_NODUP kind,
 | |
|    the users of string_list structures are taught to initialize them
 | |
|    explicitly as such, to document their behaviour better.
 | |
|    (merge 2721ce2 jk/string-list-static-init later to maint).
 | |
| 
 | |
|  * HTTPd tests learned to show the server error log to help diagnosing
 | |
|    a failing tests.
 | |
|    (merge 44f243d nd/test-lib-httpd-show-error-log-in-verbose later to maint).
 | |
| 
 | |
|  * The ownership rule for the piece of memory that hold references to
 | |
|    be fetched in "git fetch" was screwy, which has been cleaned up.
 | |
| 
 | |
|  * "git bisect" makes an internal call to "git diff-tree" when
 | |
|    bisection finds the culprit, but this call did not initialize the
 | |
|    data structure to pass to the diff-tree API correctly.
 | |
| 
 | |
|  * Further preparatory clean-up for "worktree" feature continues.
 | |
|    (merge 0409e0b nd/worktree-cleanup-post-head-protection later to maint).
 | |
| 
 | |
|  * Formats of the various data (and how to validate them) where we use
 | |
|    GPG signature have been documented.
 | |
| 
 | |
|  * A new run-command API function pipe_command() is introduced to
 | |
|    sanely feed data to the standard input while capturing data from
 | |
|    the standard output and the standard error of an external process,
 | |
|    which is cumbersome to hand-roll correctly without deadlocking.
 | |
| 
 | |
|  * The codepath to sign data in a prepared buffer with GPG has been
 | |
|    updated to use this API to read from the status-fd to check for
 | |
|    errors (instead of relying on GPG's exit status).
 | |
|    (merge efee955 jk/gpg-interface-cleanup later to maint).
 | |
| 
 | |
|  * Allow t/perf framework to use the features from the most recent
 | |
|    version of Git even when testing an older installed version.
 | |
| 
 | |
|  * The commands in the "log/diff" family have had an FILE* pointer in the
 | |
|    data structure they pass around for a long time, but some codepaths
 | |
|    used to always write to the standard output.  As a preparatory step
 | |
|    to make "git format-patch" available to the internal callers, these
 | |
|    codepaths have been updated to consistently write into that FILE*
 | |
|    instead.
 | |
| 
 | |
|  * Conversion from unsigned char sha1[20] to struct object_id
 | |
|    continues.
 | |
| 
 | |
|  * Improve the look of the way "git fetch" reports what happened to
 | |
|    each ref that was fetched.
 | |
| 
 | |
|  * The .c/.h sources are marked as such in our .gitattributes file so
 | |
|    that "git diff -W" and friends would work better.
 | |
| 
 | |
|  * Code clean-up to avoid using a variable string that compilers may
 | |
|    feel untrustable as printf-style format given to write_file()
 | |
|    helper function.
 | |
| 
 | |
|  * "git p4" used a location outside $GIT_DIR/refs/ to place its
 | |
|    temporary branches, which has been moved to refs/git-p4-tmp/.
 | |
| 
 | |
|  * Existing autoconf generated test for the need to link with pthread
 | |
|    library did not check all the functions from pthread libraries;
 | |
|    recent FreeBSD has some functions in libc but not others, and we
 | |
|    mistakenly thought linking with libc is enough when it is not.
 | |
| 
 | |
|  * When "git fsck" reports a broken link (e.g. a tree object contains
 | |
|    a blob that does not exist), both containing object and the object
 | |
|    that is referred to were reported with their 40-hex object names.
 | |
|    The command learned the "--name-objects" option to show the path to
 | |
|    the containing object from existing refs (e.g. "HEAD~24^2:file.txt").
 | |
| 
 | |
|  * Allow http daemon tests in Travis CI tests.
 | |
| 
 | |
|  * Makefile assumed that -lrt is always available on platforms that
 | |
|    want to use clock_gettime() and CLOCK_MONOTONIC, which is not a
 | |
|    case for recent Mac OS X.  The necessary symbols are often found in
 | |
|    libc on many modern systems and having -lrt on the command line, as
 | |
|    long as the library exists, had no effect, but when the platform
 | |
|    removes librt.a that is a different matter--having -lrt will break
 | |
|    the linkage.
 | |
| 
 | |
|    This change could be seen as a regression for those who do need to
 | |
|    specify -lrt, as they now specifically ask for NEEDS_LIBRT when
 | |
|    building. Hopefully they are in the minority these days.
 | |
| 
 | |
|  * Further preparatory work on the refs API before the pluggable
 | |
|    backend series can land.
 | |
| 
 | |
|  * Error handling in the codepaths that updates refs has been
 | |
|    improved.
 | |
| 
 | |
|  * The API to iterate over all the refs (i.e. for_each_ref(), etc.)
 | |
|    has been revamped.
 | |
| 
 | |
|  * The handling of the "text=auto" attribute has been corrected.
 | |
|    $ echo "* text=auto eol=crlf" >.gitattributes
 | |
|    used to have the same effect as
 | |
|    $ echo "* text eol=crlf" >.gitattributes
 | |
|    i.e. declaring all files are text (ignoring "auto").  The
 | |
|    combination has been fixed to be equivalent to doing
 | |
|    $ git config core.autocrlf true
 | |
| 
 | |
|  * Documentation has been updated to show better example usage
 | |
|    of the updated "text=auto" attribute.
 | |
| 
 | |
|  * A few tests that specifically target "git rebase -i" have been
 | |
|    added.
 | |
| 
 | |
|  * Dumb http transport on the client side has been optimized.
 | |
|    (merge ecba195 ew/http-walker later to maint).
 | |
| 
 | |
|  * Users of the parse_options_concat() API function need to allocate
 | |
|    extra slots in advance and fill them with OPT_END() when they want
 | |
|    to decide the set of supported options dynamically, which makes the
 | |
|    code error-prone and hard to read.  This has been corrected by tweaking
 | |
|    the API to allocate and return a new copy of "struct option" array.
 | |
| 
 | |
|  * "git fetch" exchanges batched have/ack messages between the sender
 | |
|    and the receiver, initially doubling every time and then falling
 | |
|    back to enlarge the window size linearly.  The "smart http"
 | |
|    transport, being an half-duplex protocol, outgrows the preset limit
 | |
|    too quickly and becomes inefficient when interacting with a large
 | |
|    repository.  The internal mechanism learned to grow the window size
 | |
|    more aggressively when working with the "smart http" transport.
 | |
| 
 | |
|  * Tests for "git svn" have been taught to reuse the lib-httpd test
 | |
|    infrastructure when testing the subversion integration that
 | |
|    interacts with subversion repositories served over the http://
 | |
|    protocol.
 | |
|    (merge a8a5d25 ew/git-svn-http-tests later to maint).
 | |
| 
 | |
|  * "git pack-objects" has a few options that tell it not to pack
 | |
|    objects found in certain packfiles, which require it to scan .idx
 | |
|    files of all available packs.  The codepaths involved in these
 | |
|    operations have been optimized for a common case of not having any
 | |
|    non-local pack and/or any .kept pack.
 | |
| 
 | |
|  * The t3700 test about "add --chmod=-x" have been made a bit more
 | |
|    robust and generally cleaned up.
 | |
|    (merge 766cdc4 ib/t3700-add-chmod-x-updates later to maint).
 | |
| 
 | |
|  * The build procedure learned PAGER_ENV knob that lists what default
 | |
|    environment variable settings to export for popular pagers.  This
 | |
|    mechanism is used to tweak the default settings to MORE on FreeBSD.
 | |
|    (merge 995bc22 ew/build-time-pager-tweaks later to maint).
 | |
| 
 | |
|  * The http-backend (the server-side component of smart-http
 | |
|    transport) used to trickle the HTTP header one at a time.  Now
 | |
|    these write(2)s are batched.
 | |
|    (merge b36045c ew/http-backend-batch-headers later to maint).
 | |
| 
 | |
|  * When "git rebase" tries to compare set of changes on the updated
 | |
|    upstream and our own branch, it computes patch-id for all of these
 | |
|    changes and attempts to find matches. This has been optimized by
 | |
|    lazily computing the full patch-id (which is expensive) to be
 | |
|    compared only for changes that touch the same set of paths.
 | |
|    (merge ba67504 kw/patch-ids-optim later to maint).
 | |
| 
 | |
|  * A handful of tests that were broken under gettext-poison build have
 | |
|    been fixed.
 | |
| 
 | |
|  * The recent i18n patch we added during this cycle did a bit too much
 | |
|    refactoring of the messages to avoid word-legos; the repetition has
 | |
|    been reduced to help translators.
 | |
| 
 | |
| 
 | |
| Also contains various documentation updates and code clean-ups.
 | |
| 
 | |
| 
 | |
| Fixes since v2.9
 | |
| ----------------
 | |
| 
 | |
| Unless otherwise noted, all the fixes since v2.8 in the maintenance
 | |
| track are contained in this release (see the maintenance releases'
 | |
| notes for details).
 | |
| 
 | |
|  * The commands in `git log` family take %C(auto) in a custom format
 | |
|    string.  This unconditionally turned the color on, ignoring
 | |
|    --no-color or with --color=auto when the output is not connected to
 | |
|    a tty; this was corrected to make the format truly behave as
 | |
|    "auto".
 | |
| 
 | |
|  * "git rev-list --count" whose walk-length is limited with "-n"
 | |
|    option did not work well with the counting optimized to look at the
 | |
|    bitmap index.
 | |
| 
 | |
|  * "git show -W" (extend hunks to cover the entire function, delimited
 | |
|    by lines that match the "funcname" pattern) used to show the entire
 | |
|    file when a change added an entire function at the end of the file,
 | |
|    which has been fixed.
 | |
| 
 | |
|  * The documentation set has been updated so that literal commands,
 | |
|    configuration variables and environment variables are consistently
 | |
|    typeset in fixed-width font and bold in manpages.
 | |
| 
 | |
|  * "git svn propset" subcommand that was added in 2.3 days is
 | |
|    documented now.
 | |
| 
 | |
|  * The documentation tries to consistently spell "GPG"; when
 | |
|    referring to the specific program name, "gpg" is used.
 | |
| 
 | |
|  * "git reflog" stopped upon seeing an entry that denotes a branch
 | |
|    creation event (aka "unborn"), which made it appear as if the
 | |
|    reflog was truncated.
 | |
| 
 | |
|  * The git-prompt scriptlet (in contrib/) was not friendly with those
 | |
|    who uses "set -u", which has been fixed.
 | |
| 
 | |
|  * compat/regex code did not cleanly compile.
 | |
| 
 | |
|  * A codepath that used alloca(3) to place an unbounded amount of data
 | |
|    on the stack has been updated to avoid doing so.
 | |
| 
 | |
|  * "git update-index --add --chmod=+x file" may be usable as an escape
 | |
|    hatch, but not a friendly thing to force for people who do need to
 | |
|    use it regularly.  "git add --chmod=+x file" can be used instead.
 | |
| 
 | |
|  * Build improvements for gnome-keyring (in contrib/)
 | |
| 
 | |
|  * "git status" used to say "working directory" when it meant "working
 | |
|    tree".
 | |
| 
 | |
|  * Comments about misbehaving FreeBSD shells have been clarified with
 | |
|    the version number (9.x and before are broken, newer ones are OK).
 | |
| 
 | |
|  * "git cherry-pick A" worked on an unborn branch, but "git
 | |
|    cherry-pick A..B" didn't.
 | |
| 
 | |
|  * Fix an unintended regression in v2.9 that breaks "clone --depth"
 | |
|    that recurses down to submodules by forcing the submodules to also
 | |
|    be cloned shallowly, which many server instances that host upstream
 | |
|    of the submodules are not prepared for.
 | |
| 
 | |
|  * Fix unnecessarily waste in the idiomatic use of ': ${VAR=default}'
 | |
|    to set the default value, without enclosing it in double quotes.
 | |
| 
 | |
|  * Some platform-specific code had non-ANSI strict declarations of C
 | |
|    functions that do not take any parameters, which has been
 | |
|    corrected.
 | |
| 
 | |
|  * The internal code used to show local timezone offset is not
 | |
|    prepared to handle timestamps beyond year 2100, and gave a
 | |
|    bogus offset value to the caller.  Use a more benign looking
 | |
|    +0000 instead and let "git log" going in such a case, instead
 | |
|    of aborting.
 | |
| 
 | |
|  * One among four invocations of readlink(1) in our test suite has
 | |
|    been rewritten so that the test can run on systems without the
 | |
|    command (others are in valgrind test framework and t9802).
 | |
| 
 | |
|  * t/perf needs /usr/bin/time with GNU extension; the invocation of it
 | |
|    is updated to "gtime" on Darwin.
 | |
| 
 | |
|  * A bug, which caused "git p4" while running under verbose mode to
 | |
|    report paths that are omitted due to branch prefix incorrectly, has
 | |
|    been fixed; the command said "Ignoring file outside of prefix" for
 | |
|    paths that are _inside_.
 | |
| 
 | |
|  * The top level documentation "git help git" still pointed at the
 | |
|    documentation set hosted at now-defunct google-code repository.
 | |
|    Update it to point to https://git.github.io/htmldocs/git.html
 | |
|    instead.
 | |
| 
 | |
|  * A helper function that takes the contents of a commit object and
 | |
|    finds its subject line did not ignore leading blank lines, as is
 | |
|    commonly done by other codepaths.  Make it ignore leading blank
 | |
|    lines to match.
 | |
| 
 | |
|  * For a long time, we carried an in-code comment that said our
 | |
|    colored output would work only when we use fprintf/fputs on
 | |
|    Windows, which no longer is the case for the past few years.
 | |
| 
 | |
|  * "gc.autoPackLimit" when set to 1 should not trigger a repacking
 | |
|    when there is only one pack, but the code counted poorly and did
 | |
|    so.
 | |
| 
 | |
|  * Add a test to specify the desired behaviour that currently is not
 | |
|    available in "git rebase -Xsubtree=...".
 | |
| 
 | |
|  * More mark-up updates to typeset strings that are expected to
 | |
|    literally typed by the end user in fixed-width font.
 | |
| 
 | |
|  * "git commit --amend --allow-empty-message -S" for a commit without
 | |
|    any message body could have misidentified where the header of the
 | |
|    commit object ends.
 | |
| 
 | |
|  * "git rebase -i --autostash" did not restore the auto-stashed change
 | |
|    when the operation was aborted.
 | |
| 
 | |
|  * Git does not know what the contents in the index should be for a
 | |
|    path added with "git add -N" yet, so "git grep --cached" should not
 | |
|    show hits (or show lack of hits, with -L) in such a path, but that
 | |
|    logic does not apply to "git grep", i.e. searching in the working
 | |
|    tree files.  But we did so by mistake, which has been corrected.
 | |
| 
 | |
|  * "git blame -M" missed a single line that was moved within the file.
 | |
| 
 | |
|  * Fix recently introduced codepaths that are involved in parallel
 | |
|    submodule operations, which gave up on reading too early, and
 | |
|    could have wasted CPU while attempting to write under a corner
 | |
|    case condition.
 | |
| 
 | |
|  * "git grep -i" has been taught to fold case in non-ascii locales
 | |
|    correctly.
 | |
| 
 | |
|  * A test that unconditionally used "mktemp" learned that the command
 | |
|    is not necessarily available everywhere.
 | |
| 
 | |
|  * There are certain house-keeping tasks that need to be performed at
 | |
|    the very beginning of any Git program, and programs that are not
 | |
|    built-in commands had to do them exactly the same way as "git"
 | |
|    potty does.  It was easy to make mistakes in one-off standalone
 | |
|    programs (like test helpers).  A common "main()" function that
 | |
|    calls cmd_main() of individual program has been introduced to
 | |
|    make it harder to make mistakes.
 | |
|    (merge de61ceb jk/common-main later to maint).
 | |
| 
 | |
|  * The test framework learned a new helper test_match_signal to
 | |
|    check an exit code from getting killed by an expected signal.
 | |
| 
 | |
|  * General code clean-up around a helper function to write a
 | |
|    single-liner to a file.
 | |
|    (merge 7eb6e10 jk/write-file later to maint).
 | |
| 
 | |
|  * One part of "git am" had an oddball helper function that called
 | |
|    stuff from outside "his" as opposed to calling what we have "ours",
 | |
|    which was not gender-neutral and also inconsistent with the rest of
 | |
|    the system where outside stuff is usuall called "theirs" in
 | |
|    contrast to "ours".
 | |
| 
 | |
|  * "git blame file" allowed the lineage of lines in the uncommitted,
 | |
|    unadded contents of "file" to be inspected, but it refused when
 | |
|    "file" did not appear in the current commit.  When "file" was
 | |
|    created by renaming an existing file (but the change has not been
 | |
|    committed), this restriction was unnecessarily tight.
 | |
| 
 | |
|  * "git add -N dir/file && git write-tree" produced an incorrect tree
 | |
|    when there are other paths in the same directory that sorts after
 | |
|    "file".
 | |
| 
 | |
|  * "git fetch http://user:pass@host/repo..." scrubbed the userinfo
 | |
|    part, but "git push" didn't.
 | |
| 
 | |
|  * "git merge" with renormalization did not work well with
 | |
|    merge-recursive, due to "safer crlf" conversion kicking in when it
 | |
|    shouldn't.
 | |
|    (merge 1335d76 jc/renormalize-merge-kill-safer-crlf later to maint).
 | |
| 
 | |
|  * The use of strbuf in "git rm" to build filename to remove was a bit
 | |
|    suboptimal, which has been fixed.
 | |
| 
 | |
|  * An age old bug that caused "git diff --ignore-space-at-eol"
 | |
|    misbehave has been fixed.
 | |
| 
 | |
|  * "git notes merge" had a code to see if a path exists (and fails if
 | |
|    it does) and then open the path for writing (when it doesn't).
 | |
|    Replace it with open with O_EXCL.
 | |
| 
 | |
|  * "git pack-objects" and "git index-pack" mostly operate with off_t
 | |
|    when talking about the offset of objects in a packfile, but there
 | |
|    were a handful of places that used "unsigned long" to hold that
 | |
|    value, leading to an unintended truncation.
 | |
| 
 | |
|  * Recent update to "git daemon" tries to enable the socket-level
 | |
|    KEEPALIVE, but when it is spawned via inetd, the standard input
 | |
|    file descriptor may not necessarily be connected to a socket.
 | |
|    Suppress an ENOTSOCK error from setsockopt().
 | |
| 
 | |
|  * Recent FreeBSD stopped making perl available at /usr/bin/perl;
 | |
|    switch the default the built-in path to /usr/local/bin/perl on not
 | |
|    too ancient FreeBSD releases.
 | |
| 
 | |
|  * "git commit --help" said "--no-verify" is only about skipping the
 | |
|    pre-commit hook, and failed to say that it also skipped the
 | |
|    commit-msg hook.
 | |
| 
 | |
|  * "git merge" in Git v2.9 was taught to forbid merging an unrelated
 | |
|    lines of history by default, but that is exactly the kind of thing
 | |
|    the "--rejoin" mode of "git subtree" (in contrib/) wants to do.
 | |
|    "git subtree" has been taught to use the "--allow-unrelated-histories"
 | |
|    option to override the default.
 | |
| 
 | |
|  * The build procedure for "git persistent-https" helper (in contrib/)
 | |
|    has been updated so that it can be built with more recent versions
 | |
|    of Go.
 | |
| 
 | |
|  * There is an optimization used in "git diff $treeA $treeB" to borrow
 | |
|    an already checked-out copy in the working tree when it is known to
 | |
|    be the same as the blob being compared, expecting that open/mmap of
 | |
|    such a file is faster than reading it from the object store, which
 | |
|    involves inflating and applying delta.  This however kicked in even
 | |
|    when the checked-out copy needs to go through the convert-to-git
 | |
|    conversion (including the clean filter), which defeats the whole
 | |
|    point of the optimization.  The optimization has been disabled when
 | |
|    the conversion is necessary.
 | |
| 
 | |
|  * "git -c grep.patternType=extended log --basic-regexp" misbehaved
 | |
|    because the internal API to access the grep machinery was not
 | |
|    designed well.
 | |
| 
 | |
|  * Windows port was failing some tests in t4130, due to the lack of
 | |
|    inum in the returned values by its lstat(2) emulation.
 | |
| 
 | |
|  * The reflog output format is documented better, and a new format
 | |
|    --date=unix to report the seconds-since-epoch (without timezone)
 | |
|    has been added.
 | |
|    (merge 442f6fd jk/reflog-date later to maint).
 | |
| 
 | |
|  * "git difftool <paths>..." started in a subdirectory failed to
 | |
|    interpret the paths relative to that directory, which has been
 | |
|    fixed.
 | |
| 
 | |
|  * The characters in the label shown for tags/refs for commits in
 | |
|    "gitweb" output are now properly escaped for proper HTML output.
 | |
| 
 | |
|  * FreeBSD can lie when asked mtime of a directory, which made the
 | |
|    untracked cache code to fall back to a slow-path, which in turn
 | |
|    caused tests in t7063 to fail because it wanted to verify the
 | |
|    behaviour of the fast-path.
 | |
| 
 | |
|  * Squelch compiler warnings for nedmalloc (in compat/) library.
 | |
| 
 | |
|  * A small memory leak in the command line parsing of "git blame"
 | |
|    has been plugged.
 | |
| 
 | |
|  * The API documentation for hashmap was unclear if hashmap_entry
 | |
|    can be safely discarded without any other consideration.  State
 | |
|    that it is safe to do so.
 | |
| 
 | |
|  * Not-so-recent rewrite of "git am" that started making internal
 | |
|    calls into the commit machinery had an unintended regression, in
 | |
|    that no matter how many seconds it took to apply many patches, the
 | |
|    resulting committer timestamp for the resulting commits were all
 | |
|    the same.
 | |
| 
 | |
|  * "git push --force-with-lease" already had enough logic to allow
 | |
|    ensuring that such a push results in creation of a ref (i.e. the
 | |
|    receiving end did not have another push from sideways that would be
 | |
|    discarded by our force-pushing), but didn't expose this possibility
 | |
|    to the users.  It does so now.
 | |
|    (merge 9eed4f3 jk/push-force-with-lease-creation later to maint).
 | |
| 
 | |
|  * The mechanism to limit the pack window memory size, when packing is
 | |
|    done using multiple threads (which is the default), is per-thread,
 | |
|    but this was not documented clearly.
 | |
|    (merge 954176c ms/document-pack-window-memory-is-per-thread later to maint).
 | |
| 
 | |
|  * "import-tars" fast-import script (in contrib/) used to ignore a
 | |
|    hardlink target and replaced it with an empty file, which has been
 | |
|    corrected to record the same blob as the other file the hardlink is
 | |
|    shared with.
 | |
|    (merge 04e0869 js/import-tars-hardlinks later to maint).
 | |
| 
 | |
|  * "git mv dir non-existing-dir/" did not work in some environments
 | |
|    the same way as existing mainstream platforms.  The code now moves
 | |
|    "dir" to "non-existing-dir", without relying on rename("A", "B/")
 | |
|    that strips the trailing slash of '/'.
 | |
|    (merge 189d035 js/mv-dir-to-new-directory later to maint).
 | |
| 
 | |
|  * The "t/" hierarchy is prone to get an unusual pathname; "make test"
 | |
|    has been taught to make sure they do not contain paths that cannot
 | |
|    be checked out on Windows (and the mechanism can be reusable to
 | |
|    catch pathnames that are not portable to other platforms as need
 | |
|    arises).
 | |
|    (merge c2cafd3 js/test-lint-pathname later to maint).
 | |
| 
 | |
|  * When "git merge-recursive" works on history with many criss-cross
 | |
|    merges in "verbose" mode, the names the command assigns to the
 | |
|    virtual merge bases could have overwritten each other by unintended
 | |
|    reuse of the same piece of memory.
 | |
|    (merge 5447a76 rs/pull-signed-tag later to maint).
 | |
| 
 | |
|  * "git checkout --detach <branch>" used to give the same advice
 | |
|    message as that is issued when "git checkout <tag>" (or anything
 | |
|    that is not a branch name) is given, but asking with "--detach" is
 | |
|    an explicit enough sign that the user knows what is going on.  The
 | |
|    advice message has been squelched in this case.
 | |
|    (merge 779b88a sb/checkout-explit-detach-no-advice later to maint).
 | |
| 
 | |
|  * "git difftool" by default ignores the error exit from the backend
 | |
|    commands it spawns, because often they signal that they found
 | |
|    differences by exiting with a non-zero status code just like "diff"
 | |
|    does; the exit status codes 126 and above however are special in
 | |
|    that they are used to signal that the command is not executable,
 | |
|    does not exist, or killed by a signal.  "git difftool" has been
 | |
|    taught to notice these exit status codes.
 | |
|    (merge 45a4f5d jk/difftool-command-not-found later to maint).
 | |
| 
 | |
|  * On Windows, help.browser configuration variable used to be ignored,
 | |
|    which has been corrected.
 | |
|    (merge 6db5967 js/no-html-bypass-on-windows later to maint).
 | |
| 
 | |
|  * The "git -c var[=val] cmd" facility to append a configuration
 | |
|    variable definition at the end of the search order was described in
 | |
|    git(1) manual page, but not in git-config(1), which was more likely
 | |
|    place for people to look for when they ask "can I make a one-shot
 | |
|    override, and if so how?"
 | |
|    (merge ae1f709 dg/document-git-c-in-git-config-doc later to maint).
 | |
| 
 | |
|  * The tempfile (hence its user lockfile) API lets the caller to open
 | |
|    a file descriptor to a temporary file, write into it and then
 | |
|    finalize it by first closing the filehandle and then either
 | |
|    removing or renaming the temporary file.  When the process spawns a
 | |
|    subprocess after obtaining the file descriptor, and if the
 | |
|    subprocess has not exited when the attempt to remove or rename is
 | |
|    made, the last step fails on Windows, because the subprocess has
 | |
|    the file descriptor still open.  Open tempfile with O_CLOEXEC flag
 | |
|    to avoid this (on Windows, this is mapped to O_NOINHERIT).
 | |
|    (merge 05d1ed6 bw/mingw-avoid-inheriting-fd-to-lockfile later to maint).
 | |
| 
 | |
|  * Correct an age-old calco (is that a typo-like word for calc)
 | |
|    in the documentation.
 | |
|    (merge 7841c48 ls/packet-line-protocol-doc-fix later to maint).
 | |
| 
 | |
|  * Other minor clean-ups and documentation updates
 | |
|    (merge 02a8cfa rs/merge-add-strategies-simplification later to maint).
 | |
|    (merge af4941d rs/merge-recursive-string-list-init later to maint).
 | |
|    (merge 1eb47f1 rs/use-strbuf-add-unique-abbrev later to maint).
 | |
|    (merge ddd0bfa jk/tighten-alloc later to maint).
 | |
|    (merge ecf30b2 rs/mailinfo-lib later to maint).
 | |
|    (merge 0eb75ce sg/reflog-past-root later to maint).
 | |
|    (merge 4369523 hv/doc-commit-reference-style later to maint).
 |