github libgit2/libgit2 v0.27.0
libgit2 v0.27.0

latest releases: v1.8.0, v1.7.2, v1.6.5...
6 years ago

This is the first release of the v0.27 series, "Stadtrandsiedlung". The changelog follows.

Changes or improvements

  • Improved p_unlink in posix_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 raising SIGABRT 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. emulating git ls-remote behavior.

  • git_diff_patchid() lets you generate patch IDs for diffs.

  • git_status_options now has an additional field baseline 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 the cred_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 its readstream callback in the
    git_odb_backend interface have changed their signatures to allow providing
    the object's size and type to the caller.

Don't miss a new libgit2 release

NewReleases is sending notifications on new releases.