* Building on older MacOS X systems automatically sets
the necessary NO_APPLE_COMMON_CRYPTO build-time option.
+ * The support to build with NO_PTHREADS has been resurrected.
+
+ * Compilation options has been updated a bit to support z/OS port
+ better.
+
UI, Workflows & Features
+ * "git archive" learned to filter what gets archived with pathspec.
+
* "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
to replace blob contents, names of people and paths and log
messages with bland and simple strings to help them.
+ * "git difftool" learned an option to stop feeding paths to the
+ diff backend when it exits with a non-zero status.
+
+ * "git grep" allows to paint (or not paint) partial matches on
+ context lines when showing "grep -C<num>" output in color.
+
* "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.
+ * The logic "git prune" uses is more resilient against various corner
+ cases.
+
* 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
forgot to remove higher stage entries, or if it wanted to unresolve
and forgot to remove the stage#0 entry).
+ * 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
+ created temporary directory, instead of the current directory, by
+ setting the mergetool.writeToTemp configuration variable.
+
+ * "git mergetool" understands "--tool bc" now, as version 4 of
+ BeyondCompare can be driven the same way as its version 3 and it
+ feels awkward to say "--tool bc3".
+
* 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").
+ * The pretty-format specifier "%d", which expanded to " (tagname)"
+ for a tagged commit, gained a cousin "%D" that just gives the
+ "tagname" without frills.
+
+ * "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.
+
+ * "git interpret-trailers" is a new filter to programmatically 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.
+
+ * On the "git svn" front, work to reduce memory consumption and
+ to improve handling of mergeinfo progresses.
+
Performance, Internal Implementation, etc.
- * The API to manipulate the "refs" is currently undergoing a revamp
- 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).
+ * 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).
+
+ * The lockfile API and its users have been cleaned up.
* We no longer attempt to keep track of individual dependencies to
the header files in the build procedure, relying on automated
* "git hash-object" was taught a "--literally" option to help
debugging.
+ * 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.
+
+ * The scripts in the test suite can be run with "-x" option to show
+ a shell-trace of each command run in them.
+
+ * The "run-command" API learned to manage the argv and environment
+ array for child process, alleviating the need for the callers to
+ allocate and deallocate them.
+
+ * Some people use AsciiDoctor, instead of AsciiDoc, to format our
+ documentation set; the documentation has been adjusted, as
+ AsciiDoctor is pickier than AsciiDoc in its input mark-up.
+
Also contains various documentation updates and code clean-ups.
mean the more obvious "No output whatsoever" but "Use default
format", which was counterintuitive.
- * Implementations of "tar" that do not understand an extended pax
- header would extract the contents of it in a regular file; make
- sure the permission bits of this file follows the same tar.umask
- configuration setting.
-
* "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).
* "git checkout -m" did not switch to another branch while carrying
the local changes forward when a path was deleted from the index.
+ * "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).
+
* With sufficiently long refnames, "git fast-import" could have
overflown an on-stack buffer.
* Use of "--verbose" option used to break "git branch --merged".
(merge 12994dd jk/maint-branch-verbose-merged later to maint).
+
+ * 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.
+
+ * 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).
+ (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).
+
+ * 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).
+
+ * "git pack-objects" forgot to disable the codepath to generate
+ object reachability bitmap when it needs to split the resulting
+ pack.
+ (merge 2113471 jk/pack-objects-no-bitmap-when-splitting later to maint).
+
+ * The code to use cache-tree trusted the on-disk data too much and
+ fell into an infinite loop upon seeing an incorrectly recorded
+ index file.
+ (merge 729dbbd jk/cache-tree-protect-from-broken-libgit2 later to maint).
+
+ * "git fetch" into a repository where branch B was deleted earlier
+ back when it had reflog enabled, and then branch B/C is fetched
+ into it without reflog enabled, which is arguably an unlikely
+ corner case, unnecessarily failed.
+ (merge aae828b jk/fetch-reflog-df-conflict later to maint).
+
+ * "git log --first-parent -L..." used to crash.
+ (merge a8787c5 tm/line-log-first-parent later to maint).