Permalink
Join GitHub today
GitHub is home to over 28 million developers working together to host and review code, manage projects, and build software together.
Sign up| 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). |