2015-08-03 20:19:36 +02:00
|
|
|
Git 2.6 Release Notes
|
|
|
|
=====================
|
|
|
|
|
|
|
|
Updates since v2.5
|
|
|
|
------------------
|
|
|
|
|
|
|
|
UI, Workflows & Features
|
|
|
|
|
|
|
|
* An asterisk as a substring (as opposed to the entirety) of a path
|
|
|
|
component for both side of a refspec, e.g.
|
|
|
|
"refs/heads/o*:refs/remotes/heads/i*", is now allowed.
|
|
|
|
|
|
|
|
* New userdiff pattern definition for fountain screenwriting markup
|
|
|
|
format has been added.
|
|
|
|
|
|
|
|
* "git log" and friends learned a new "--date=format:..." option to
|
|
|
|
format timestamps using system's strftime(3).
|
|
|
|
|
|
|
|
* "git fast-import" learned to respond to the get-mark command via
|
|
|
|
its cat-blob-fd interface.
|
|
|
|
|
|
|
|
* "git rebase -i" learned "drop commit-object-name subject" command
|
|
|
|
as another way to skip replaying of a commit.
|
|
|
|
|
|
|
|
* A new configuration variable can enable "--follow" automatically
|
|
|
|
when "git log" is run with one pathspec argument.
|
|
|
|
|
|
|
|
* "git status" learned to show a more detailed information regarding
|
|
|
|
the "rebase -i" session in progress.
|
|
|
|
|
|
|
|
* "git cat-file" learned "--batch-all-objects" option to enumerate all
|
|
|
|
available objects in the repository more quickly than "rev-list
|
|
|
|
--all --objects" (the output includes unreachable objects, though).
|
|
|
|
|
|
|
|
* "git fsck" learned to ignore errors on a set of known-to-be-bad
|
|
|
|
objects, and also allows the warning levels of various kinds of
|
|
|
|
non-critical breakages to be tweaked.
|
|
|
|
|
|
|
|
* "git rebase -i"'s list of todo is made configurable.
|
|
|
|
|
|
|
|
* "git send-email" now performs alias-expansion on names that are
|
|
|
|
given via --cccmd, etc.
|
|
|
|
|
|
|
|
* An environment variable GIT_REPLACE_REF_BASE tells Git to look into
|
|
|
|
refs hierarchy other than refs/replace/ for the object replacement
|
|
|
|
data.
|
|
|
|
|
2015-08-18 00:09:25 +02:00
|
|
|
* Allow untracked cache (experimental) to be used when sparse
|
|
|
|
checkout (experimental) is also in use.
|
|
|
|
|
|
|
|
* "git pull --rebase" has been taught to pay attention to
|
|
|
|
rebase.autostash configuration.
|
|
|
|
|
2015-08-19 23:46:09 +02:00
|
|
|
* The command-line completion script (in contrib/) has been updated.
|
|
|
|
|
|
|
|
* A negative !ref entry in multi-value transfer.hideRefs
|
|
|
|
configuration can be used to say "don't hide this one".
|
|
|
|
|
2015-08-26 00:00:15 +02:00
|
|
|
* After "git am" without "-3" stops, running "git am -" pays attention
|
|
|
|
to "-3" only for the patch that caused the original invocation
|
|
|
|
to stop.
|
|
|
|
|
|
|
|
* When linked worktree is used, simultaneous "notes merge" instances
|
|
|
|
for the same ref in refs/notes/* are prevented from stomping on
|
|
|
|
each other.
|
|
|
|
|
2015-08-03 20:19:36 +02:00
|
|
|
|
|
|
|
Performance, Internal Implementation, Development Support etc.
|
|
|
|
|
|
|
|
* In preparation for allowing different "backends" to store the refs
|
|
|
|
in a way different from the traditional "one ref per file in
|
|
|
|
$GIT_DIR or in a $GIT_DIR/packed-refs file" filesystem storage,
|
|
|
|
direct filesystem access to ref-like things like CHERRY_PICK_HEAD
|
|
|
|
from scripts and programs has been reduced.
|
|
|
|
|
|
|
|
* Computation of untracked status indicator by bash prompt
|
|
|
|
script (in contrib/) has been optimized.
|
|
|
|
|
|
|
|
* Memory use reduction when commit-slab facility is used to annotate
|
|
|
|
sparsely (which is not recommended in the first place).
|
|
|
|
|
|
|
|
* Clean up refs API and make "git clone" less intimate with the
|
|
|
|
implementation detail.
|
|
|
|
|
|
|
|
* "git pull" was reimplemented in C.
|
|
|
|
|
|
|
|
* The packet tracing machinery allows to capture an incoming pack
|
|
|
|
data to a file for debugging.
|
|
|
|
|
|
|
|
* Move machinery to parse human-readable scaled numbers like 1k, 4M,
|
|
|
|
and 2G as an option parameter's value from pack-objects to
|
|
|
|
parse-options API, to make it available to other codepaths.
|
|
|
|
|
|
|
|
* "git verify-tag" and "git verify-commit" have been taught to share
|
|
|
|
more code, and then learned to optionally show the verification
|
|
|
|
message from the underlying GPG implementation.
|
|
|
|
|
|
|
|
* Various enhancements around "git am" reading patches generated by
|
|
|
|
foreign SCM have been made.
|
|
|
|
|
|
|
|
* Ref listing by "git branch -l" and "git tag -l" commands has
|
|
|
|
started to be rebuilt, based on the for-each-ref machinery.
|
|
|
|
|
2015-08-12 23:16:31 +02:00
|
|
|
* The code to perform multi-tree merges has been taught to repopulate
|
|
|
|
the cache-tree upon a successful merge into the index, so that
|
|
|
|
subsequent "diff-index --cached" (hence "status") and "write-tree"
|
|
|
|
(hence "commit") will go faster.
|
|
|
|
|
|
|
|
The same logic in "git checkout" may now be removed, but that is a
|
|
|
|
separate issue.
|
|
|
|
|
|
|
|
* Tests that assume how reflogs are represented on the filesystem too
|
|
|
|
much have been corrected.
|
|
|
|
|
|
|
|
* "git am" has been rewritten in "C".
|
|
|
|
|
2015-08-19 23:46:09 +02:00
|
|
|
* git_path() and mkpath() are handy helper functions but it is easy
|
|
|
|
to misuse, as the callers need to be careful to keep the number of
|
|
|
|
active results below 4. Their uses have been reduced.
|
|
|
|
|
2015-08-26 00:00:15 +02:00
|
|
|
* The "lockfile" API has been rebuilt on top of a new "tempfile" API.
|
|
|
|
|
|
|
|
* To prepare for allowing a different "ref" backend to be plugged in
|
|
|
|
to the system, update_ref()/delete_ref() have been taught about
|
|
|
|
ref-like things like MERGE_HEAD that are per-worktree (they will
|
|
|
|
always be written to the filesystem inside $GIT_DIR).
|
|
|
|
|
2015-08-03 20:19:36 +02:00
|
|
|
|
|
|
|
Also contains various documentation updates and code clean-ups.
|
|
|
|
|
|
|
|
|
|
|
|
Fixes since v2.5
|
|
|
|
----------------
|
|
|
|
|
|
|
|
Unless otherwise noted, all the fixes since v2.5 in the maintenance
|
|
|
|
track are contained in this release (see the maintenance releases'
|
|
|
|
notes for details).
|
|
|
|
|
|
|
|
* "git subtree" (in contrib/) depended on "git log" output to be
|
|
|
|
stable, which was a no-no. Apply a workaround to force a
|
|
|
|
particular date format.
|
|
|
|
(merge e7aac44 da/subtree-date-confusion later to maint).
|
|
|
|
|
2015-08-19 23:46:09 +02:00
|
|
|
* An attempt to delete a ref by pushing into a repository whose HEAD
|
2015-08-03 20:19:36 +02:00
|
|
|
symbolic reference points at an unborn branch that cannot be
|
|
|
|
created due to ref D/F conflict (e.g. refs/heads/a/b exists, HEAD
|
|
|
|
points at refs/heads/a) failed.
|
|
|
|
(merge b112b14 jx/do-not-crash-receive-pack-wo-head later to maint).
|
|
|
|
|
|
|
|
* The low-level "git send-pack" did not honor 'user.signingkey'
|
|
|
|
configuration variable when sending a signed-push.
|
|
|
|
(merge d830d39 db/send-pack-user-signingkey later to maint).
|
|
|
|
|
|
|
|
* "sparse checkout" misbehaved for a path that is excluded from the
|
|
|
|
checkout when switching between branches that differ at the path.
|
|
|
|
(merge 7d78241 as/sparse-checkout-removal later to maint).
|
|
|
|
|
|
|
|
* An experimental "untracked cache" feature used uname(2) in a
|
|
|
|
slightly unportable way.
|
|
|
|
(merge 100e433 cb/uname-in-untracked later to maint).
|
|
|
|
|
|
|
|
* A "rebase" replays changes of the local branch on top of something
|
|
|
|
else, as such they are placed in stage #3 and referred to as
|
|
|
|
"theirs", while the changes in the new base, typically a foreign
|
|
|
|
work, are placed in stage #2 and referred to as "ours". Clarify
|
|
|
|
the "checkout --ours/--theirs".
|
|
|
|
(merge f303016 se/doc-checkout-ours-theirs later to maint).
|
|
|
|
|
|
|
|
* The "rev-parse --parseopt" mode parsed the option specification
|
|
|
|
and the argument hint in a strange way to allow '=' and other
|
|
|
|
special characters in the option name while forbidding them from
|
|
|
|
the argument hint. This made it impossible to define an option
|
|
|
|
like "--pair <key>=<value>" with "pair=key=value" specification,
|
|
|
|
which instead would have defined a "--pair=key <value>" option.
|
|
|
|
(merge 2d893df ib/scripted-parse-opt-better-hint-string later to maint).
|
|
|
|
|
|
|
|
* Often a fast-import stream builds a new commit on top of the
|
|
|
|
previous commit it built, and it often unconditionally emits a
|
|
|
|
"from" command to specify the first parent, which can be omitted in
|
|
|
|
such a case. This caused fast-import to forget the tree of the
|
|
|
|
previous commit and then re-read it from scratch, which was
|
|
|
|
inefficient. Optimize for this common case.
|
|
|
|
(merge 0df3245 mh/fast-import-optimize-current-from later to maint).
|
|
|
|
|
|
|
|
* Running an aliased command from a subdirectory when the .git thing
|
|
|
|
in the working tree is a gitfile pointing elsewhere did not work.
|
|
|
|
(merge d95138e nd/export-worktree later to maint).
|
|
|
|
|
|
|
|
* "Is this subdirectory a separate repository that should not be
|
|
|
|
touched?" check "git clean" was inefficient. This was replaced
|
|
|
|
with a more optimized check.
|
|
|
|
(merge 38ae878 ee/clean-remove-dirs later to maint).
|
|
|
|
|
2015-08-12 23:16:31 +02:00
|
|
|
* The "new-worktree-mode" hack in "checkout" that was added in
|
|
|
|
nd/multiple-work-trees topic has been removed by updating the
|
|
|
|
implementation of new "worktree add".
|
|
|
|
(merge 65f9b75 es/worktree-add-cleanup later to maint).
|
|
|
|
|
|
|
|
* Remove remaining cruft from "git checkout --to", which
|
|
|
|
transitioned to "git worktree add".
|
|
|
|
(merge 114ff88 es/worktree-add later to maint).
|
|
|
|
|
2015-08-18 00:09:25 +02:00
|
|
|
* An off-by-one error made "git remote" to mishandle a remote with a
|
|
|
|
single letter nickname.
|
|
|
|
(merge bc598c3 mh/get-remote-group-fix later to maint).
|
|
|
|
|
2015-08-19 23:46:09 +02:00
|
|
|
* "git clone $URL", when cloning from a site whose sole purpose is to
|
|
|
|
host a single repository (hence, no path after <scheme>://<site>/),
|
|
|
|
tried to use the site name as the new repository name, but did not
|
|
|
|
remove username or password when <site> part was of the form
|
|
|
|
<user>@<pass>:<host>. The code is taught to redact these.
|
|
|
|
(merge adef956 ps/guess-repo-name-at-root later to maint).
|
|
|
|
|
|
|
|
* Running tests with the "-x" option to make them verbose had some
|
|
|
|
unpleasant interactions with other features of the test suite.
|
|
|
|
(merge 9b5fe78 jk/test-with-x later to maint).
|
|
|
|
|
|
|
|
* t1509 test that requires a dedicated VM environment had some
|
|
|
|
bitrot, which has been corrected.
|
|
|
|
(merge faacc5a ps/t1509-chroot-test-fixup later to maint).
|
|
|
|
|
|
|
|
* "git pull" in recent releases of Git has a regression in the code
|
|
|
|
that allows custom path to the --upload-pack=<program>. This has
|
|
|
|
been corrected.
|
|
|
|
|
|
|
|
Note that this is irrelevant for 'master' with "git pull" rewritten
|
|
|
|
in C.
|
|
|
|
(merge 22d6857 mm/pull-upload-pack later to maint).
|
|
|
|
|
2015-08-26 00:00:15 +02:00
|
|
|
* When trying to see that an object does not exist, a state errno
|
|
|
|
leaked from our "first try to open a packfile with O_NOATIME and
|
|
|
|
then if it fails retry without it" logic on a system that refuses
|
|
|
|
O_NOATIME. This confused us and caused us to die, saying that the
|
|
|
|
packfile is unreadable, when we should have just reported that the
|
|
|
|
object does not exist in that packfile to the caller.
|
|
|
|
(merge dff6f28 cb/open-noatime-clear-errno later to maint).
|
|
|
|
|
|
|
|
* The codepath to produce error messages had a hard-coded limit to
|
|
|
|
the size of the message, primarily to avoid memory allocation while
|
|
|
|
calling die().
|
|
|
|
(merge f4c3edc jk/long-error-messages later to maint).
|
|
|
|
|
|
|
|
* strbuf_read() used to have one extra iteration (and an unnecessary
|
|
|
|
strbuf_grow() of 8kB), which was eliminated.
|
|
|
|
(merge 3ebbd00 jh/strbuf-read-use-read-in-full later to maint).
|
|
|
|
|
2015-08-03 20:19:36 +02:00
|
|
|
* Code cleanups and documentation updates.
|
|
|
|
(merge 1c601af es/doc-clean-outdated-tools later to maint).
|
|
|
|
(merge 3581304 kn/tag-doc-fix later to maint).
|
|
|
|
(merge 3a59e59 kb/i18n-doc later to maint).
|
2015-08-12 23:16:31 +02:00
|
|
|
(merge 45abdee sb/remove-unused-var-from-builtin-add later to maint).
|
|
|
|
(merge 14691e3 sb/parse-options-codeformat later to maint).
|
|
|
|
(merge 4a6ada3 ad/bisect-cleanup later to maint).
|
2015-08-18 00:09:25 +02:00
|
|
|
(merge da4c5ad ta/docfix-index-format-tech later to maint).
|
2015-08-19 23:46:09 +02:00
|
|
|
(merge ae25fd3 sb/check-return-from-read-ref later to maint).
|
2015-08-26 00:00:15 +02:00
|
|
|
(merge b3325df nd/dwim-wildcards-as-pathspecs later to maint).
|