mirror of
https://github.com/git/git.git
synced 2024-11-01 06:47:52 +01:00
86c95ac5d2
Signed-off-by: Junio C Hamano <gitster@pobox.com>
431 lines
19 KiB
Text
431 lines
19 KiB
Text
Git 2.7 Release Notes
|
|
=====================
|
|
|
|
Updates since v2.6
|
|
------------------
|
|
|
|
UI, Workflows & Features
|
|
|
|
* "git remote" learned "get-url" subcommand to show the URL for a
|
|
given remote name used for fetching and pushing.
|
|
|
|
* There was no way to defeat a configured rebase.autostash variable
|
|
from the command line, as "git rebase --no-autostash" was missing.
|
|
|
|
* "git log --date=local" used to only show the normal (default)
|
|
format in the local timezone. The command learned to take 'local'
|
|
as an instruction to use the local timezone with other formats,
|
|
|
|
* The refs used during a "git bisect" session is now per-worktree so
|
|
that independent bisect sessions can be done in different worktrees
|
|
created with "git worktree add".
|
|
|
|
* Users who are too busy to type three extra keystrokes to ask for
|
|
"git stash show -p" can now set stash.showPatch configuration
|
|
varible to true to always see the actual patch, not just the list
|
|
of paths affected with feel for the extent of damage via diffstat.
|
|
|
|
* "quiltimport" allows to specify the series file by honoring the
|
|
$QUILT_SERIES environment and also --series command line option.
|
|
|
|
* The use of 'good/bad' in "git bisect" made it confusing to use when
|
|
hunting for a state change that is not a regression (e.g. bugfix).
|
|
The command learned 'old/new' and then allows the end user to
|
|
say e.g. "bisect start --term-old=fast --term-new=slow" to find a
|
|
performance regression.
|
|
|
|
* "git interpret-trailers" can now run outside of a Git repository.
|
|
|
|
* "git p4" learned to reencode the pathname it uses to communicate
|
|
with the p4 depot with a new option.
|
|
|
|
* Give progress meter to "git filter-branch".
|
|
|
|
* Allow a later "!/abc/def" to override an earlier "/abc" that
|
|
appears in the same .gitignore file to make it easier to express
|
|
"everything in /abc directory is ignored, except for ...".
|
|
|
|
* Teach "git p4" to send large blobs outside the repository by
|
|
talking to Git LFS.
|
|
|
|
* Prepare for Git on-disk repository representation to undergo
|
|
backward incompatible changes by introducing a new repository
|
|
format version "1", with an extension mechanism.
|
|
(merge 067fbd4 jk/repository-extension later to maint).
|
|
|
|
* "git worktree" learned a "list" subcommand.
|
|
|
|
* "git clone --dissociate" learned that it can be used even when
|
|
"--reference" was not used at the same time.
|
|
|
|
* "git blame" learnt to take "--first-parent" and "--reverse" at the
|
|
same time when it makes sense.
|
|
|
|
* "git checkout" did not follow the usual "--[no-]progress"
|
|
convention and implemented only "--quiet" that is essentially
|
|
a superset of "--no-progress". Extend the command to support the
|
|
usual "--[no-]progress".
|
|
|
|
* The semantics of tranfer.hideRefs configuration variable have been
|
|
extended to work better with the ref "namespace" feature that lets
|
|
you throw unrelated bunches of repositories in a single physical
|
|
repository and virtually serve them as separate ones.
|
|
|
|
* send-email config variables whose values are pathnames now go
|
|
through the ~username/ expansion.
|
|
|
|
* bash completion learnt to TAB-complete recipient addresses given
|
|
to send-email.
|
|
|
|
* The credential-cache daemon can be told to ignore SIGHUP to work
|
|
around issue when running Git from inside emacs.
|
|
|
|
|
|
Performance, Internal Implementation, Development Support etc.
|
|
|
|
* The infrastructure to rewrite "git submodule" in C is being built
|
|
incrementally. Let's polish these early parts well enough and make
|
|
them graduate to 'next' and 'master', so that the more involved
|
|
follow-up can start cooking on a solid ground.
|
|
|
|
* Some features from "git tag -l" and "git branch -l" have been made
|
|
available to "git for-each-ref" so that eventually the unified
|
|
implementation can be shared across all three. The version merged
|
|
to the 'master' branch earlier had a performance regression in "tag
|
|
--contains", which has since been corrected.
|
|
|
|
* Because "test_when_finished" in our test framework queues the
|
|
clean-up tasks to be done in a shell variable, it should not be
|
|
used inside a subshell. Add a mechanism to allow 'bash' to catch
|
|
such uses, and fix the ones that were found.
|
|
(merge 0968f12 jk/test-lint-forbid-when-finished-in-subshell later to maint).
|
|
|
|
* The debugging infrastructure for pkt-line based communication has
|
|
been improved to mark the side-band communication specifically.
|
|
(merge fd89433 jk/async-pkt-line later to maint).
|
|
|
|
* Update "git branch" that list existing branches, using the
|
|
ref-filter API that is shared with "git tag" and "git
|
|
for-each-ref".
|
|
|
|
* The test for various line-ending conversions has been enhanced.
|
|
|
|
* A few test scripts around "git p4" have been improved for
|
|
portability.
|
|
|
|
* Many allocations that is manually counted (correctly) that are
|
|
followed by strcpy/sprintf have been replaced with a less error
|
|
prone constructs such as xstrfmt.
|
|
|
|
* The internal stripspace() function has been moved to where it
|
|
logically belongs to, i.e. strbuf API, and the command line parser
|
|
of "git stripspace" has been updated to use the parse_options API.
|
|
(merge bed4452 tk/stripspace later to maint).
|
|
|
|
* "git am" used to spawn "git mailinfo" via run_command() API once
|
|
per each patch, but learned to make a direct call to mailinfo()
|
|
instead.
|
|
|
|
* The implementation of "git mailinfo" was refactored so that a
|
|
mailinfo() function can be directly called from inside a process.
|
|
|
|
* With a "debug" helper, debugging of a single "git" invocation in
|
|
our test scripts has become a lot easier.
|
|
|
|
* The "configure" script did not test for -lpthread correctly, which
|
|
upset some linkers.
|
|
|
|
* Cross completed task off of subtree project's todo list.
|
|
|
|
* Test cleanups for the subtree project.
|
|
|
|
* Clean up style in an ancient test t9300.
|
|
|
|
* Work around some test flakiness with p4d.
|
|
|
|
* Fsck did not correctly detect a NUL-truncated header in a tag.
|
|
|
|
* Use a safer behavior when we hit errors verifying remote certificates.
|
|
|
|
* Speed up filter-branch for cases where we only care about rewriting
|
|
commits, not tree data.
|
|
|
|
* The parse-options API has been updated to make "-h" command line
|
|
option work more consistently in all commands.
|
|
|
|
* "git svn rebase/mkdirs" got optimized by keeping track of empty
|
|
directories better.
|
|
|
|
* Fix some racy client/server tests by treating SIGPIPE the same as a
|
|
normal non-zero exit.
|
|
|
|
* The necessary infrastructure to build topics using the free Travis
|
|
CI has been added. Developers forking from this topic (and enabling
|
|
Travis) can do their own builds, and we can turn on auto-builds for
|
|
git/git (including build-status for pull requests that people
|
|
open).
|
|
|
|
|
|
Also contains various documentation updates and code clean-ups.
|
|
|
|
|
|
Fixes since v2.6
|
|
----------------
|
|
|
|
Unless otherwise noted, all the fixes since v2.6 in the maintenance
|
|
track are contained in this release (see the maintenance releases'
|
|
notes for details).
|
|
|
|
* Very small number of options take a parameter that is optional
|
|
(which is not a great UI element as they can only appear at the end
|
|
of the command line). Add notice to documentation of each and
|
|
every one of them.
|
|
(merge 2b594bf mm/keyid-docs later to maint).
|
|
|
|
* "git blame --first-parent v1.0..v2.0" was not rejected but did not
|
|
limit the blame to commits on the first parent chain.
|
|
(merge 95a4fb0 jk/blame-first-parent later to maint).
|
|
|
|
* "git subtree" (in contrib/) now can take whitespaces in the
|
|
pathnames, not only in the in-tree pathname but the name of the
|
|
directory that the repository is in. (merge 5b6ab38
|
|
as/subtree-with-spaces later to maint).
|
|
|
|
* The ssh transport, just like any other transport over the network,
|
|
did not clear GIT_* environment variables, but it is possible to
|
|
use SendEnv and AcceptEnv to leak them to the remote invocation of
|
|
Git, which is not a good idea at all. Explicitly clear them just
|
|
like we do for the local transport.
|
|
(merge a48b409 jk/connect-clear-env later to maint).
|
|
|
|
* Correct "git p4 --detect-labels" so that it does not fail to create
|
|
a tag that points at a commit that is also being imported.
|
|
(merge b43702a ld/p4-import-labels later to maint).
|
|
|
|
* The Makefile always runs the library archiver with hardcoded "crs"
|
|
options, which was inconvenient for exotic platforms on which
|
|
people want to use programs with totally different set of command
|
|
line options.
|
|
(merge ac179b4 jw/make-arflags-customizable later to maint).
|
|
|
|
* Customization to change the behaviour with "make -w" and "make -s"
|
|
in our Makefile was broken when they were used together.
|
|
(merge ef49e05 jk/make-findstring-makeflags-fix later to maint).
|
|
|
|
* Allocation related functions and stdio are unsafe things to call
|
|
inside a signal handler, and indeed killing the pager can cause
|
|
glibc to deadlock waiting on allocation mutex as our signal handler
|
|
tries to free() some data structures in wait_for_pager(). Reduce
|
|
these unsafe calls.
|
|
(merge 507d780 ti/glibc-stdio-mutex-from-signal-handler later to maint).
|
|
|
|
* The way how --ref/--notes to specify the notes tree reference are
|
|
DWIMmed was not clearly documented.
|
|
(merge e14c92e jk/notes-dwim-doc later to maint).
|
|
|
|
* "git gc" used to barf when a symbolic ref has gone dangling
|
|
(e.g. the branch that used to be your upstream's default when you
|
|
cloned from it is now gone, and you did "fetch --prune").
|
|
(merge 14886b4 js/gc-with-stale-symref later to maint).
|
|
|
|
* "git clone --dissociate" runs a big "git repack" process at the
|
|
end, and it helps to close file descriptors that are open on the
|
|
packs and their idx files before doing so on filesystems that
|
|
cannot remove a file that is still open.
|
|
(merge 786b150 js/clone-dissociate later to maint).
|
|
|
|
* Description of the "log.follow" configuration variable in "git log"
|
|
documentation is now also copied to "git config" documentation.
|
|
(merge fd8d07e dt/log-follow-config later to maint).
|
|
|
|
* "git rebase -i" had a minor regression recently, which stopped
|
|
considering a line that begins with an indented '#' in its insn
|
|
sheet not a comment. Further, the code was still too picky on
|
|
Windows where CRLF left by the editor is turned into a trailing CR
|
|
on the line read via the "read" built-in command of bash. Both of
|
|
these issues are now fixed.
|
|
(merge 39743cf gr/rebase-i-drop-warn later to maint).
|
|
|
|
* After "git checkout --detach", "git status" reported a fairly
|
|
useless "HEAD detached at HEAD", instead of saying at which exact
|
|
commit.
|
|
(merge 0eb8548 mm/detach-at-HEAD-reflog later to maint).
|
|
|
|
* When "git send-email" wanted to talk over Net::SMTP::SSL,
|
|
Net::Cmd::datasend() did not like to be fed too many bytes at the
|
|
same time and failed to send messages. Send the payload one line
|
|
at a time to work around the problem.
|
|
(merge f60c483 sa/send-email-smtp-batch-data-limit later to maint).
|
|
|
|
* When "git am" was rewritten as a built-in, it stopped paying
|
|
attention to user.signingkey, which was fixed.
|
|
(merge 434c64d pt/am-builtin later to maint).
|
|
|
|
* It was not possible to use a repository-lookalike created by "git
|
|
worktree add" as a local source of "git clone".
|
|
(merge d78db84 nd/clone-linked-checkout later to maint).
|
|
|
|
* On a case insensitive filesystems, setting GIT_WORK_TREE variable
|
|
using a random cases that does not agree with what the filesystem
|
|
thinks confused Git that it wasn't inside the working tree.
|
|
(merge 63ec5e1 js/icase-wt-detection later to maint).
|
|
|
|
* Performance-measurement tests did not work without an installed Git.
|
|
(merge 31cd128 sb/perf-without-installed-git later to maint).
|
|
|
|
* A test script for the HTTP service had a timing dependent bug,
|
|
which was fixed.
|
|
(merge 362d8b6 sb/http-flaky-test-fix later to maint).
|
|
|
|
* There were some classes of errors that "git fsck" diagnosed to its
|
|
standard error that did not cause it to exit with non-zero status.
|
|
(merge 122f76f jc/fsck-dropped-errors later to maint).
|
|
|
|
* Work around "git p4" failing when the P4 depot records the contents
|
|
in UTF-16 without UTF-16 BOM.
|
|
(merge 1f5f390 ls/p4-translation-failure later to maint).
|
|
|
|
* When "git gc --auto" is backgrounded, its diagnosis message is
|
|
lost. Save it to a file in $GIT_DIR and show it next time the "gc
|
|
--auto" is run.
|
|
(merge 329e6e8 nd/gc-auto-background-fix later to maint).
|
|
|
|
* The submodule code has been taught to work better with separate
|
|
work trees created via "git worktree add".
|
|
(merge 11f9dd7 mk/submodule-gitdir-path later to maint).
|
|
|
|
* "git gc" is safe to run anytime only because it has the built-in
|
|
grace period to protect young objects. In order to run with no
|
|
grace period, the user must make sure that the repository is
|
|
quiescent.
|
|
(merge fae1a90 jc/doc-gc-prune-now later to maint).
|
|
|
|
* A recent "filter-branch --msg-filter" broke skipping of the commit
|
|
object header, which is fixed.
|
|
(merge a5a4b3f jk/filter-branch-use-of-sed-on-incomplete-line later to maint).
|
|
|
|
* The normalize_ceiling_entry() function does not muck with the end
|
|
of the path it accepts, and the real world callers do rely on that,
|
|
but a test insisted that the function drops a trailing slash.
|
|
(merge b2a7123 rd/test-path-utils later to maint).
|
|
|
|
* A test for interaction between untracked cache and sparse checkout
|
|
added in Git 2.5 days were flaky.
|
|
(merge 9b680fb dt/t7063-fix-flaky-test later to maint).
|
|
|
|
* A couple of commands still showed "[options]" in their usage string
|
|
to note where options should come on their command line, but we
|
|
spell that "[<options>]" in most places these days.
|
|
(merge d96a031 rt/placeholder-in-usage later to maint).
|
|
|
|
* The synopsis text and the usage string of subcommands that read
|
|
list of things from the standard input are often shown as if they
|
|
only take input from a file on a filesystem, which was misleading.
|
|
(merge 33e8fc8 jc/usage-stdin later to maint).
|
|
|
|
* "git am -3" had a small regression where it is aborted in its error
|
|
handling codepath when underlying merge-recursive failed in certain
|
|
ways, as it assumed that the internal call to merge-recursive will
|
|
never die, which is not the case (yet).
|
|
(merge c63d4b2 jc/am-3-fallback-regression-fix later to maint).
|
|
|
|
* The linkage order of libraries was wrong in places around libcurl.
|
|
(merge 7e91e8d rp/link-curl-before-ssl later to maint).
|
|
|
|
* The name-hash subsystem that is used to cope with case insensitive
|
|
filesystems keeps track of directories and their on-filesystem
|
|
cases for all the paths in the index by holding a pointer to a
|
|
randomly chosen cache entry that is inside the directory (for its
|
|
ce->ce_name component). This pointer was not updated even when the
|
|
cache entry was removed from the index, leading to use after free.
|
|
This was fixed by recording the path for each directory instead of
|
|
borrowing cache entries and restructuring the API somewhat.
|
|
(merge 41284eb dt/name-hash-dir-entry-fix later to maint).
|
|
|
|
* "git merge-file" tried to signal how many conflicts it found, which
|
|
obviously would not work well when there are too many of them.
|
|
(merge e34f802 jk/merge-file-exit-code later to maint).
|
|
|
|
* The error message from "git blame --contents --reverse" incorrectly
|
|
talked about "--contents --children".
|
|
(merge 9526197 mk/blame-error-message later to maint).
|
|
|
|
* "git imap-send" did not compile well with older version of cURL library.
|
|
(merge 71d9257 js/imap-send-curl-compilation-fix later to maint).
|
|
|
|
* Merging a branch that removes a path and another that changes the
|
|
mode bits on the same path should have conflicted at the path, but
|
|
it didn't and silently favoured the removal.
|
|
(merge 72fac66 jk/delete-modechange-conflict later to maint).
|
|
|
|
* "git --literal-pathspecs add -u/-A" without any command line
|
|
argument misbehaved ever since Git 2.0.
|
|
(merge 29abb33 jc/add-u-A-default-to-top later to maint).
|
|
|
|
* "git daemon" uses "run_command()" without "finish_command()", so it
|
|
needs to release resources itself, which it forgot to do.
|
|
(merge b1b49ff rs/daemon-plug-child-leak later to maint).
|
|
|
|
* "git status --branch --short" accessed beyond the constant string
|
|
"HEAD", which has been corrected.
|
|
(merge c72b49d rs/wt-status-detached-branch-fix later to maint).
|
|
|
|
* We peek objects from submodule's object store by linking it to the
|
|
list of alternate object databases, but the code to do so forgot to
|
|
correctly initialize the list.
|
|
(merge 9a6e4f0 jk/initialization-fix-to-add-submodule-odb later to maint).
|
|
|
|
* The code to prepare the working tree side of temporary directory
|
|
for the "dir-diff" feature forgot that symbolic links need not be
|
|
copied (or symlinked) to the temporary area, as the code already
|
|
special cases and overwrites them. Besides, it was wrong to try
|
|
computing the object name of the target of symbolic link, which may
|
|
not even exist or may be a directory.
|
|
(merge cfe2d4b da/difftool later to maint).
|
|
|
|
* A Range: request can be responded with a full response and when
|
|
asked properly libcurl knows how to strip the result down to the
|
|
requested range. However, we were hand-crafting a range request
|
|
and it did not kick in.
|
|
|
|
* Having a leftover .idx file without corresponding .pack file in
|
|
the repository hurts performance; "git gc" learned to prune them.
|
|
(merge 478f34d dk/gc-idx-wo-pack later to maint).
|
|
|
|
* Apple's common crypto implementation of SHA1_Update() does not take
|
|
more than 4GB at a time, and we now have a compile-time workaround
|
|
for it.
|
|
(merge 001fd7a ad/sha1-update-chunked later to maint).
|
|
|
|
* Produce correct "dirty" marker for shell prompts, even when we
|
|
are on an orphan or an unborn branch.
|
|
(merge c26f70c sg/bash-prompt-dirty-orphan later to maint).
|
|
|
|
* A build without NO_IPv6 used to use gethostbyname() when guessing
|
|
user's hostname, instead of getaddrinfo() that is used in other
|
|
codepaths in such a build.
|
|
(merge 00bce77 ep/ident-with-getaddrinfo later to maint).
|
|
|
|
* The exit code of git-fsck didnot reflect some types of errors found
|
|
in packed objects, which has been corrected.
|
|
(merge 8c24d83 dt/fsck-verify-pack-error later to maint).
|
|
|
|
* Code clean-up, minor fixes etc.
|
|
(merge 15ed07d jc/rerere later to maint).
|
|
(merge e7a7401 pt/pull-builtin later to maint).
|
|
(merge 29bc480 nd/ls-remote-does-not-have-u-option later to maint).
|
|
(merge be510e0 jk/asciidoctor-section-heading-markup-fix later to maint).
|
|
(merge 83e6bda tk/typofix-connect-unknown-proto-error later to maint).
|
|
(merge a43eb67 tk/doc-interpret-trailers-grammo later to maint).
|
|
(merge ba128e2 es/worktree-add-cleanup later to maint).
|
|
(merge 44cd91e cc/quote-comments later to maint).
|
|
(merge 147875f sb/submodule-config-parse later to maint).
|
|
(merge ae9f274 es/worktree-add later to maint).
|
|
(merge 3b19dba jc/em-dash-in-doc later to maint).
|
|
(merge f3f38c7 jc/everyday-markup later to maint).
|
|
(merge 77d5f71 xf/user-manual-markup later to maint).
|
|
(merge b2af482 xf/user-manual-ff later to maint).
|
|
(merge e510ab8 rs/pop-commit later to maint).
|
|
(merge fdcdb77 js/misc-fixes later to maint).
|
|
(merge c949b00 rs/show-branch-argv-array later to maint).
|
|
(merge 56a8aea nd/doc-check-ref-format-typo later to maint).
|