2014-09-02 22:30:13 +02:00
|
|
|
Git v2.2 Release Notes
|
|
|
|
======================
|
|
|
|
|
|
|
|
Updates since v2.1
|
|
|
|
------------------
|
|
|
|
|
2014-09-09 22:06:26 +02:00
|
|
|
Ports
|
|
|
|
|
|
|
|
* Building on older MacOS X systems automatically sets
|
|
|
|
the necessary NO_APPLE_COMMON_CRYPTO build-time option.
|
|
|
|
|
|
|
|
|
2014-09-02 22:30:13 +02:00
|
|
|
UI, Workflows & Features
|
|
|
|
|
2014-10-08 22:08:55 +02:00
|
|
|
* "git archive" learned to filter what gets archived with pathspec.
|
|
|
|
|
2014-09-02 22:30:13 +02:00
|
|
|
* "git config --edit --global" starts from a skeletal per-user
|
|
|
|
configuration file contents, instead of a total blank, when the
|
|
|
|
user does not already have any. This immediately reduces the
|
|
|
|
need for a later "Have you forgotten setting core.user?" and we
|
|
|
|
can add more to the template as we gain more experience.
|
|
|
|
|
2014-09-09 22:06:26 +02:00
|
|
|
* "git stash list -p" used to be almost always a no-op because each
|
|
|
|
stash entry is represented as a merge commit. It learned to show
|
|
|
|
the difference between the base commit version and the working tree
|
|
|
|
version, which is in line with what "git show" gives.
|
2014-09-02 22:30:13 +02:00
|
|
|
|
2014-09-19 20:51:14 +02:00
|
|
|
* Sometimes users want to report a bug they experience on their
|
|
|
|
repository, but they are not at liberty to share the contents of
|
|
|
|
the repository. "fast-export" was taught an "--anonymize" option
|
|
|
|
to replace blob contents, names of people and paths and log
|
|
|
|
messages with bland and simple strings to help them.
|
|
|
|
|
|
|
|
* "log --date=iso" uses a slight variant of ISO 8601 format that is
|
|
|
|
made more human readable. A new "--date=iso-strict" option gives
|
|
|
|
datetime output that is more strictly conformant.
|
|
|
|
|
|
|
|
* A broken reimplementation of Git could write an invalid index that
|
|
|
|
records both stage #0 and higher stage entries for the same path.
|
|
|
|
We now notice and reject such an index, as there is no sensible
|
|
|
|
fallback (we do not know if the broken tool wanted to resolve and
|
|
|
|
forgot to remove higher stage entries, or if it wanted to unresolve
|
|
|
|
and forgot to remove the stage#0 entry).
|
|
|
|
|
2014-10-21 22:35:44 +02:00
|
|
|
* The temporary files "git mergetool" uses are named to avoid too
|
|
|
|
many dots in them (e.g. a temporary file for "hello.c" used to be
|
|
|
|
named e.g. "hello.BASE.4321.c" but now uses underscore instead,
|
|
|
|
e.g. "hello_BASE_4321.c").
|
|
|
|
|
|
|
|
* The temporary files "git mergetools" uses can be placed in a newly
|
|
|
|
creted temporary directory, instead of the current directory, by
|
|
|
|
setting the mergetool.writeToTemp configuration variable.
|
|
|
|
|
2014-09-26 23:51:23 +02:00
|
|
|
* The "pre-receive" and "post-receive" hooks are no longer required
|
|
|
|
to consume their input fully (not following this requirement used
|
|
|
|
to result in intermittent errors in "git push").
|
|
|
|
|
2014-09-29 21:44:43 +02:00
|
|
|
* The pretty-format specifier "%d", which expanded to " (tagname)"
|
|
|
|
for a tagged commit, gained a cousin "%D" that just gives the
|
|
|
|
"tagname" without frills.
|
2014-09-19 20:51:14 +02:00
|
|
|
|
2014-10-08 22:08:55 +02:00
|
|
|
* "git push" learned "--signed" push, that allows a push (i.e.
|
|
|
|
request to update the refs on the other side to point at a new
|
|
|
|
history, together with the transmission of necessary objects) to be
|
|
|
|
signed, so that it can be verified and audited, using the GPG
|
|
|
|
signature of the person who pushed, that the tips of branches at a
|
|
|
|
public repository really point the commits the pusher wanted to,
|
|
|
|
without having to "trust" the server.
|
|
|
|
|
2014-10-20 22:07:32 +02:00
|
|
|
* "git interpret-trailers" is a new filter to programatically edit
|
|
|
|
the tail end of the commit log messages.
|
|
|
|
|
|
|
|
* "git help everyday" shows the "Everyday Git in 20 commands or so"
|
|
|
|
document, whose contents have been updated to more modern Git
|
|
|
|
practice.
|
|
|
|
|
|
|
|
|
2014-09-02 22:30:13 +02:00
|
|
|
Performance, Internal Implementation, etc.
|
|
|
|
|
2014-10-21 22:35:44 +02:00
|
|
|
* The API to manipulate the "refs" has been restructured to make it
|
|
|
|
more transactional, with the eventual goal to allow all-or-none
|
|
|
|
atomic updates and migrating the storage to something other than
|
|
|
|
the traditional filesystem based one (e.g. databases).
|
2014-09-11 20:19:47 +02:00
|
|
|
|
2014-10-14 19:59:04 +02:00
|
|
|
* The lockfile API and its users have been cleaned up.
|
|
|
|
|
2014-09-11 20:19:47 +02:00
|
|
|
* We no longer attempt to keep track of individual dependencies to
|
|
|
|
the header files in the build procedure, relying on automated
|
|
|
|
dependency generation support from modern compilers.
|
|
|
|
|
2014-09-09 22:06:26 +02:00
|
|
|
* In tests, we have been using NOT_{MINGW,CYGWIN} test prerequisites
|
|
|
|
long before negated prerequisites e.g. !MINGW were invented.
|
|
|
|
The former has been converted to the latter to avoid confusion.
|
|
|
|
|
2014-09-02 22:30:13 +02:00
|
|
|
* Looking up remotes configuration in a repository with very many
|
|
|
|
remotes defined has been optimized.
|
|
|
|
|
|
|
|
* There are cases where you lock and open to write a file, close it
|
|
|
|
to show the updated contents to external processes, and then have
|
|
|
|
to update the file again while still holding the lock, but the
|
|
|
|
lockfile API lacked support for such an access pattern.
|
|
|
|
|
2014-09-11 20:19:47 +02:00
|
|
|
* The API to allocate the structure to keep track of commit
|
|
|
|
decoration has been updated to make it less cumbersome to use.
|
|
|
|
|
2014-09-02 22:30:13 +02:00
|
|
|
* An in-core caching layer to let us avoid reading the same
|
2014-09-11 20:19:47 +02:00
|
|
|
configuration files number of times has been added. A few commands
|
|
|
|
have been converted to use this subsystem.
|
2014-09-02 22:30:13 +02:00
|
|
|
|
|
|
|
* Various code paths have been cleaned up and simplified by using
|
|
|
|
"strbuf", "starts_with()", and "skip_prefix()" APIs more.
|
|
|
|
|
2014-09-11 20:19:47 +02:00
|
|
|
* A few codepaths that died when large blobs that would not fit in
|
|
|
|
core are involved in their operation have been taught to punt
|
|
|
|
instead, by e.g. marking too large a blob as not to be diffed.
|
|
|
|
|
|
|
|
* A few more code paths in "commit" and "checkout" have been taught
|
|
|
|
to repopulate the cache-tree in the index, to help speed up later
|
|
|
|
"write-tree" (used in "commit") and "diff-index --cached" (used in
|
|
|
|
"status").
|
|
|
|
|
2014-09-19 20:51:14 +02:00
|
|
|
* A common programming mistake to assign the same short option name
|
|
|
|
to two separate options is detected by parse_options() API to help
|
|
|
|
developers.
|
|
|
|
|
2014-09-26 23:51:23 +02:00
|
|
|
* The code path to write out the packed-refs file has been optimized,
|
|
|
|
which especially matters in a repository with a large number of
|
|
|
|
refs.
|
|
|
|
|
|
|
|
* The check to see if a ref $F can be created by making sure no
|
|
|
|
existing ref has $F/ as its prefix has been optimized, which
|
|
|
|
especially matters in a repository with a large number of existing
|
|
|
|
refs.
|
|
|
|
|
|
|
|
* "git fsck" was taught to check contents of tag objects a bit more.
|
|
|
|
|
|
|
|
* "git hash-object" was taught a "--literally" option to help
|
|
|
|
debugging.
|
|
|
|
|
2014-10-08 22:08:55 +02:00
|
|
|
* When running a required clean filter, we do not have to mmap the
|
|
|
|
original before feeding the filter. Instead, stream the file
|
|
|
|
contents directly to the filter and process its output.
|
2014-09-02 22:30:13 +02:00
|
|
|
|
2014-10-20 22:07:32 +02:00
|
|
|
* The scripts in the test suite can be run with "-x" option to show
|
|
|
|
a shell-trace of each command run in them.
|
|
|
|
|
|
|
|
|
2014-09-02 22:30:13 +02:00
|
|
|
Also contains various documentation updates and code clean-ups.
|
|
|
|
|
|
|
|
|
|
|
|
Fixes since v2.1
|
|
|
|
----------------
|
|
|
|
|
2014-09-09 22:06:26 +02:00
|
|
|
Unless otherwise noted, all the fixes since v2.1 in the maintenance
|
|
|
|
track are contained in this release (see the maintenance releases'
|
|
|
|
notes for details).
|
|
|
|
|
2014-09-02 22:30:13 +02:00
|
|
|
* "git log --pretty/format=" with an empty format string did not
|
|
|
|
mean the more obvious "No output whatsoever" but "Use default
|
|
|
|
format", which was counterintuitive.
|
|
|
|
|
2014-09-09 22:06:26 +02:00
|
|
|
* "git -c section.var command" and "git -c section.var= command"
|
|
|
|
should pass the configuration differently (the former should be a
|
|
|
|
boolean true, the latter should be an empty string).
|
2014-09-02 22:30:13 +02:00
|
|
|
|
2014-09-09 22:06:26 +02:00
|
|
|
* Applying a patch not generated by Git in a subdirectory used to
|
|
|
|
check the whitespace breakage using the attributes for incorrect
|
|
|
|
paths. Also whitespace checks were performed even for paths
|
|
|
|
excluded via "git apply --exclude=<path>" mechanism.
|
|
|
|
|
|
|
|
* "git bundle create" with date-range specification were meant to
|
|
|
|
exclude tags outside the range, but it didn't.
|
|
|
|
|
|
|
|
* "git add x" where x that used to be a directory has become a
|
|
|
|
symbolic link to a directory misbehaved.
|
|
|
|
|
|
|
|
* The prompt script checked $GIT_DIR/ref/stash file to see if there
|
|
|
|
is a stash, which was a no-no.
|
|
|
|
|
|
|
|
* Pack-protocol documentation had a minor typo.
|
2014-09-11 20:19:47 +02:00
|
|
|
|
|
|
|
* "git checkout -m" did not switch to another branch while carrying
|
|
|
|
the local changes forward when a path was deleted from the index.
|
|
|
|
|
2014-10-14 19:59:04 +02:00
|
|
|
* "git daemon" (with NO_IPV6 build configuration) used to incorrectly
|
|
|
|
use the hostname even when gethostbyname() reported that the given
|
|
|
|
hostname is not found.
|
|
|
|
(merge 107efbe rs/daemon-fixes later to maint).
|
|
|
|
|
2014-09-11 20:19:47 +02:00
|
|
|
* With sufficiently long refnames, "git fast-import" could have
|
|
|
|
overflown an on-stack buffer.
|
|
|
|
|
|
|
|
* After "pack-refs --prune" packed refs at the top-level, it failed
|
|
|
|
to prune them.
|
|
|
|
|
|
|
|
* Progress output from "git gc --auto" was visible in "git fetch -q".
|
|
|
|
|
|
|
|
* We used to pass -1000 to poll(2), expecting it to also mean "no
|
|
|
|
timeout", which should be spelled as -1.
|
2014-09-19 20:51:14 +02:00
|
|
|
|
|
|
|
* "git rebase" documentation was unclear that it is required to
|
|
|
|
specify on what <upstream> the rebase is to be done when telling it
|
|
|
|
to first check out <branch>.
|
|
|
|
(merge 95c6826 so/rebase-doc later to maint).
|
|
|
|
|
|
|
|
* "git push" over HTTP transport had an artificial limit on number of
|
|
|
|
refs that can be pushed imposed by the command line length.
|
|
|
|
(merge 26be19b jk/send-pack-many-refspecs later to maint).
|
|
|
|
|
|
|
|
* When receiving an invalid pack stream that records the same object
|
|
|
|
twice, multiple threads got confused due to a race.
|
|
|
|
(merge ab791dd jk/index-pack-threading-races later to maint).
|
|
|
|
|
|
|
|
* An attempt to remove the entire tree in the "git fast-import" input
|
|
|
|
stream caused it to misbehave.
|
|
|
|
(merge 2668d69 mb/fast-import-delete-root later to maint).
|
|
|
|
|
|
|
|
* Reachability check (used in "git prune" and friends) did not add a
|
|
|
|
detached HEAD as a starting point to traverse objects still in use.
|
|
|
|
(merge c40fdd0 mk/reachable-protect-detached-head later to maint).
|
|
|
|
|
|
|
|
* "git config --add section.var val" used to lose existing
|
|
|
|
section.var whose value was an empty string.
|
|
|
|
(merge c1063be ta/config-add-to-empty-or-true-fix later to maint).
|
|
|
|
|
|
|
|
* "git fsck" failed to report that it found corrupt objects via its
|
|
|
|
exit status in some cases.
|
|
|
|
(merge 30d1038 jk/fsck-exit-code-fix later to maint).
|
2014-09-26 23:51:23 +02:00
|
|
|
|
|
|
|
* Use of "--verbose" option used to break "git branch --merged".
|
|
|
|
(merge 12994dd jk/maint-branch-verbose-merged later to maint).
|
2014-09-29 21:44:43 +02:00
|
|
|
|
|
|
|
* Some MUAs mangled a line in a message that begins with "From " to
|
|
|
|
">From " when writing to a mailbox file and feeding such an input
|
|
|
|
to "git am" used to lose such a line.
|
|
|
|
(merge 85de86a jk/mbox-from-line later to maint).
|
|
|
|
|
|
|
|
* "rev-parse --verify --quiet $name" is meant to quietly exit with a
|
|
|
|
non-zero status when $name is not a valid object name, but still
|
|
|
|
gave error messages in some cases.
|
2014-10-14 19:59:04 +02:00
|
|
|
|
|
|
|
* A handful of C source files have been updated to include
|
|
|
|
"git-compat-util.h" as the first thing, to conform better to our
|
|
|
|
coding guidelines.
|
|
|
|
(merge 1c4b660 da/include-compat-util-first-in-c later to maint).
|
|
|
|
|
|
|
|
* t7004 test, which tried to run Git with small stack space, has been
|
|
|
|
updated to give a bit larger stack to avoid false breakage on some
|
|
|
|
platforms.
|
|
|
|
(merge b9a1907 sk/tag-contains-wo-recursion later to maint).
|
|
|
|
|
|
|
|
* A few documentation pages had example sections marked up not quite
|
|
|
|
correctly, which passed AsciiDoc but failed with AsciiDoctor.
|
|
|
|
(merge c30c43c bc/asciidoc-pretty-formats-fix later to maint).
|
2014-10-20 22:07:32 +02:00
|
|
|
(merge f8a48af bc/asciidoc later to maint).
|
|
|
|
|
|
|
|
* "gitweb" used deprecated CGI::startfrom, which was removed from
|
|
|
|
CGI.pm as of 4.04; use CGI::start_from instead.
|
|
|
|
(merge 4750f4b rm/gitweb-start-form later to maint).
|
2014-10-21 22:35:44 +02:00
|
|
|
|
|
|
|
* Newer versions of 'meld' breaks the auto-detection we use to see if
|
|
|
|
they are new enough to support the `--output` option.
|
|
|
|
(merge b12d045 da/mergetool-meld later to maint).
|