v0.21 + 1

  • File unlocks are atomic again via rename. Read-only files on Windows are made read-write if necessary.

  • Share open packfiles across repositories to share descriptors and mmaps.

  • Use a map for the treebuilder, making insertion O(1)

  • LF -> CRLF filter refuses to handle mixed-EOL files

  • LF -> CRLF filter now runs when * text = auto (with Git for Windows 1.9.4)

  • The git_remote_set_transport function now sets a transport factory function, rather than a pre-existing transport instance.

  • A factory function for ssh has been added which allows to change the path of the programs to execute for receive-pack and upload-pack on the server, git_transport_ssh_with_paths.

  • The git_clone_options struct no longer provides the ignore_cert_errors or remote_name members for remote customization.

    Instead, the git_clone_options struct has two new members, remote_cb and remote_cb_payload, which allow the caller to completely override the remote creation process. If needed, the caller can use this callback to give their remote a name other than the default (origin) or disable cert checking.

    The remote_callbacks member has been preserved for convenience, although it is not used when a remote creation callback is supplied.

  • The git_clone_options struct now provides repository_cb and repository_cb_payload to allow the user to create a repository with custom options.

  • git_clone_into and git_clone_local_into have been removed from the public API in favour of git_clone callbacks

  • Add support for refspecs with the asterisk in the middle of a pattern.