| 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 20b20a2 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). |
| |
| * A couple of "git svn" updates. |
| |
| * 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 5caeeb8 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. |
| |
| |
| 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; this is 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. |
| |
| * 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 a struct string_list that is |
| allocated with all NULs happens to be STRING_LIST_INIT_NODUP kind, |
| 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. |
| (merge bc437d1 nd/fetch-ref-summary later to maint). |
| |
| * The .c/.h sources are marked as such in our .gitattributes file so |
| that "git diff -W" and friends would work better. |
| (merge e82675a rs/help-c-source-with-gitattributes later to maint). |
| |
| * 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/. |
| |
| |
| 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. |
| (merge bab7483 jk/tzoffset-fix later to maint). |
| |
| * 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. |
| (merge 054a5ae js/find-commit-subject-ignore-leading-blanks later to maint). |
| |
| * 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. |
| (merge 3d0a833 js/color-on-windows-comment later to maint). |
| |
| * "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. |
| (merge 5f4e3bf ew/gc-auto-pack-limit-fix later to maint). |
| |
| * Add a test to specify the desired behaviour that currently is not |
| available in "git rebase -Xsubtree=...". |
| (merge 5f35900 dg/subtree-rebase-test later to maint). |
| |
| * More mark-up updates to typeset strings that are expected to |
| literally typed by the end user in fixed-width font. |
| (merge 661c3e9 mm/doc-tt later to maint). |
| |
| * "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. |
| (merge 3324dd8 js/sign-empty-commit-fix later to maint). |
| |
| * "git rebase -i --autostash" did not restore the auto-stashed change |
| when the operation was aborted. |
| (merge 33ba9c6 ps/rebase-i-auto-unstash-upon-abort later to maint). |
| |
| * 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. |
| (merge b8e47d1 nd/ita-cleanup later to maint). |
| |
| * "git blame -M" missed a single line that was moved within the file. |
| (merge 17a07e2 dk/blame-move-no-reason-for-1-line-context later to maint). |
| |
| * 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. |
| (merge d751dd1 sb/submodule-parallel-fetch later to maint). |
| |
| * "git grep -i" has been taught to fold case in non-ascii locales |
| correctly. |
| (merge 695f95b nd/icase later to maint). |
| |
| * A test that unconditionally used "mktemp" learned that the command |
| is not necessarily available everywhere. |
| (merge c578a09 ak/lazy-prereq-mktemp later to maint). |
| |
| * 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. |
| (merge 03c39b3 jk/test-match-signal later to maint). |
| |
| * 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". |
| (merge 715a51b js/am-call-theirs-theirs-in-fallback-3way later to maint). |
| |
| * Other minor clean-ups and documentation updates |
| (merge e51b0df pb/commit-editmsg-path later to maint). |
| (merge b333d0d jk/send-pack-stdio later to maint). |
| (merge fcf0fe9 lf/sideband-returns-void later to maint). |
| (merge c2691e2 ah/unpack-trees-advice-messages later to maint). |
| (merge 82f6178 nd/doc-new-command later to maint). |
| (merge fa90ab4 js/t3404-grammo-fix later to maint). |
| (merge c61b2af lf/recv-sideband-cleanup later to maint). |