This is the first release of the v0.27 series, "Stadtrandsiedlung". The changelog follows.
Changes or improvements
-
Improved
p_unlink
inposix_w32.c
to try and make a file writable
before sleeping in the retry loop to prevent unnecessary calls to sleep. -
The CMake build infrastructure has been improved to speed up building time.
-
A new CMake option "-DUSE_HTTPS=" makes it possible to explicitly
choose an HTTP backend. -
A new CMake option "-DSHA1_BACKEND=" makes it possible to explicitly
choose an SHA1 backend. The collision-detecting backend is now the default. -
A new CMake option "-DUSE_BUNDLED_ZLIB" makes it possible to explicitly use
the bundled zlib library. -
A new CMake option "-DENABLE_REPRODUCIBLE_BUILDS" makes it possible to
generate a reproducible static archive. This requires support from your
toolchain. -
The minimum required CMake version has been bumped to 2.8.11.
-
Writing to a configuration file now preserves the case of the key given by the
caller for the case-insensitive portions of the key (existing sections are
used even if they don't match). -
We now support conditional includes in configuration files.
-
Fix for handling re-reading of configuration files with includes.
-
Fix for reading patches which contain exact renames only.
-
Fix for reading patches with whitespace in the compared files' paths.
-
We will now fill
FETCH_HEAD
from all passed refspecs instead of overwriting
with the last one. -
There is a new diff option,
GIT_DIFF_INDENT_HEURISTIC
which activates a
heuristic which takes into account whitespace and indentation in order to
produce better diffs when dealing with ambiguous diff hunks. -
Fix for pattern-based ignore rules where files ignored by a rule cannot be
un-ignored by another rule. -
Sockets opened by libgit2 are now being closed on exec(3) if the platform
supports it. -
Fix for peeling annotated tags from packed-refs files.
-
Fix reading huge loose objects from the object database.
-
Fix files not being treated as modified when only the file mode has changed.
-
We now explicitly reject adding submodules to the index via
git_index_add_frombuffer
. -
Fix handling of
GIT_DIFF_FIND_RENAMES_FROM_REWRITES
raisingSIGABRT
when
one file has been deleted and another file has been rewritten. -
Fix for WinHTTP not properly handling NTLM and Negotiate challenges.
-
When using SSH-based transports, we now repeatedly ask for the passphrase to
decrypt the private key in case a wrong passphrase is being provided. -
When generating conflict markers, they will now use the same line endings as
the rest of the file.
API additions
-
The
git_merge_file_options
structure now contains a new setting,
marker_size
. This allows users to set the size of markers that
delineate the sides of merged files in the output conflict file.
By default this is 7 (GIT_MERGE_CONFLICT_MARKER_SIZE
), which
produces output markers like<<<<<<<
and>>>>>>>
. -
git_remote_create_detached()
creates a remote that is not associated
to any repository (and does not apply configuration like 'insteadof' rules).
This is mostly useful for e.g. emulatinggit ls-remote
behavior. -
git_diff_patchid()
lets you generate patch IDs for diffs. -
git_status_options
now has an additional fieldbaseline
to allow creating
status lists against different trees. -
New family of functions to allow creating notes for a specific notes commit
instead of for a notes reference. -
New family of functions to allow parsing message trailers. This API is still
experimental and may change in future releases.
Breaking API changes
-
Signatures now distinguish between +0000 and -0000 UTC offsets.
-
The certificate check callback in the WinHTTP transport will now receive the
message_cb_payload
instead of thecred_acquire_payload
. -
We are now reading symlinked directories under .git/refs.
-
We now refuse creating branches named "HEAD".
-
We now refuse reading and writing all-zero object IDs into the
object database. -
We now read the effective user's configuration file instead of the real user's
configuration in case libgit2 runs as part of a setuid binary. -
The
git_odb_open_rstream
function and itsreadstream
callback in the
git_odb_backend
interface have changed their signatures to allow providing
the object's size and type to the caller.