diff options
author | Carlos Martín Nieto <cmn@dwim.me> | 2015-01-10 00:49:20 +0100 |
---|---|---|
committer | Carlos Martín Nieto <cmn@dwim.me> | 2015-01-10 00:49:20 +0100 |
commit | b91f28be7d36a94e5e4ccef798ab03ed62a8517c (patch) | |
tree | 39ee85cd013534484d66ff4bc14e4289ca8c639e /CHANGELOG.md | |
parent | d4b2410126966a4508ce3ea8faead7c12640f2c9 (diff) | |
download | libgit2-b91f28be7d36a94e5e4ccef798ab03ed62a8517c.tar.gz |
Reformat the changelogv0.22.0-rc2
This should provide a easier way to see what kinds of changes we have,
and a single place to look at the breaking changes.
Diffstat (limited to 'CHANGELOG.md')
-rw-r--r-- | CHANGELOG.md | 304 |
1 files changed, 158 insertions, 146 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md index 8c3ad4480..e9fa64c14 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,217 +4,229 @@ v0.22 + 1 v0.22 ------ -* 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) +### Changes or improvements -* Introduce reference transactions, which allow multiple references to - be locked at the same time and updates be queued. This also allows - us to safely update a reflog with arbitrary contents, as we need to - do for stash. +* `git_signature_new()` now requires a non-empty email address. -* The index' tree cache is now filled upon read-tree and write-tree - and the cache is written to disk. - -* LF -> CRLF filter refuses to handle mixed-EOL files +* Use CommonCrypto libraries for SHA-1 calculation on Mac OS X. -* LF -> CRLF filter now runs when * text = auto (with Git for Windows 1.9.4) +* Disable SSL compression and SSLv2 and SSLv3 ciphers in favor of TLSv1 + in OpenSSL. -* The git_transport structure definition has moved into the sys/transport.h - file. +* The fetch behavior of remotes with autotag set to `GIT_REMOTE_DOWNLOAD_TAGS_ALL` + has been changed to match git 1.9.0 and later. In this mode, libgit2 now + fetches all tags in addition to whatever else needs to be fetched. -* The ssh transport supports asking the remote host for accepted - credential types as well as multiple challeges using a single - connection. This requires to know which username you want to connect - as, so this introduces the USERNAME credential type which the ssh - transport will use to ask for the username. +* `git_checkout()` now handles case-changing renames correctly on + case-insensitive filesystems; for example renaming "readme" to "README". -* The build system now accepts an option EMBED_SSH_PATH which when set - tells it to include a copy of libssh2 at the given location. This is - enabled for MSVC. +* The search for libssh2 is now done via pkg-config instead of a + custom search of a few directories. -* libgit2 no longer automatically sets the OpenSSL locking - functions. This is not something which we can know to do. A - last-resort convenience function is provided in sys/openssl.h, - git_openssl_set_locking() which can be used to set the locking. +* Add support for core.protectHFS and core.protectNTFS. Add more + validation for filenames which we write such as references. -* The git_transport_register function no longer takes a priority and takes - a URL scheme name (eg "http") instead of a prefix like "http://" +* The local transport now generates textual progress output like + git-upload-pack does ("counting objects"). -* The git_remote_set_transport function now sets a transport factory function, - rather than a pre-existing transport instance. +* `git_checkout_index()` can now check out an in-memory index that is not + necessarily the repository's index, so you may check out an index + that was produced by git_merge and friends while retaining the cached + information. -* 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. +* Remove the default timeout for receiving / sending data over HTTP using + the WinHTTP transport layer. -* git_remote_rename() now takes the repository and the remote's - current name. Accepting a remote indicates we want to change it, - which we only did partially. It is much clearer if we accept a name - and no loaded objects are changed. +* Add SPNEGO (Kerberos) authentication using GSSAPI on Unix systems. -* git_remote_delete() now accepts the repository and the remote's name - instead of a loaded remote. +* Provide built-in objects for the empty blob (e69de29) and empty + tree (4b825dc) objects. -* git_remote_supported_url() and git_remote_is_valid_url() have been - removed as they have become essentially useless with rsync-style ssh paths. +* The index' tree cache is now filled upon read-tree and write-tree + and the cache is written to disk. -* The git_clone_options struct no longer provides the ignore_cert_errors or - remote_name members for remote customization. +* LF -> CRLF filter refuses to handle mixed-EOL files - 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. +* LF -> CRLF filter now runs when * text = auto (with Git for Windows 1.9.4) - The remote_callbacks member has been preserved for convenience, although it - is not used when a remote creation callback is supplied. +* File unlocks are atomic again via rename. Read-only files on Windows are + made read-write if necessary. -* The git_clone_options struct now provides repository_cb and - repository_cb_payload to allow the user to create a repository with - custom options. +* Share open packfiles across repositories to share descriptors and mmaps. -* The option to ignore certificate errors via git_remote_cert_check() - is no longer present. Instead, git_remote_callbacks has gained a new - entry which lets the user perform their own certificate checks. +* Use a map for the treebuilder, making insertion O(1) -* git_clone_into and git_clone_local_into have been removed from the - public API in favour of git_clone callbacks +* The build system now accepts an option EMBED_SSH_PATH which when set + tells it to include a copy of libssh2 at the given location. This is + enabled for MSVC. * Add support for refspecs with the asterisk in the middle of a pattern. * Fetching now performs opportunistic updates. To achieve this, we introduce a difference between active and passive refspecs, which - make git_remote_download and git_remote_fetch to take a list of + make `git_remote_download()` and `git_remote_fetch()` to take a list of resfpecs to be the active list, similarly to how git fetch accepts a list on the command-line. -* Rename git_remote_load() to git_remote_lookup() to bring it in line - with the rest of the lookup functions. +* The THREADSAFE option to build libgit2 with threading support has + been flipped to be on by default. -* The git_push struct to perform a push has been replaced with - git_remote_upload(). The refspecs and options are passed as a - function argument. git_push_update_tips() is now also - git_remote_update_tips() and the callbacks are in the same struct as - the rest. +* The remote object has learnt to prune remote-tracking branches. If + the remote is configured to do so, this will happen via + `git_remote_fetch()`. You can also call `git_remote_prune()` after + connecting or fetching to perform the prune. + + +### API additions -* Introduce git_merge_bases() and the git_oidarray type to expose all +* Introduce `git_buf_text_is_binary()` and `git_buf_text_contains_nul()` for + consumers to perform binary detection on a git_buf. + +* `git_branch_upstream_remote()` has been introduced to provide the + branch.<name>.remote configuration value. + +* Introduce `git_describe_commit()` and `git_describe_workdir()` to provide + a description of the current commit (and working tree, respectively) + based on the nearest tag or reference + +* Introduce `git_merge_bases()` and the `git_oidarray` type to expose all merge bases between two commits. -* Introduce git_merge_bases_many() to expose all merge bases between +* Introduce `git_merge_bases_many()` to expose all merge bases between multiple commits. -* git_merge_head is now git_annotated_commit, to better reflect its usage - for multiple functions (including rebase) - * Introduce rebase functionality (using the merge algorithm only). - Introduce git_rebase_init() to begin a new rebase session, - git_rebase_open() to open an in-progress rebase session, - git_rebase_commit() to commit the current rebase operation, - git_rebase_next() to apply the next rebase operation, - git_rebase_abort() to abort an in-progress rebase and git_rebase_finish() + Introduce `git_rebase_init()` to begin a new rebase session, + `git_rebase_open()` to open an in-progress rebase session, + `git_rebase_commit()` to commit the current rebase operation, + `git_rebase_next()` to apply the next rebase operation, + `git_rebase_abort()` to abort an in-progress rebase and `git_rebase_finish()` to complete a rebase operation. -* Introduce git_note_author() and git_note_committer() to get the author - and committer information on a git_note, respectively. +* Introduce `git_note_author()` and `git_note_committer()` to get the author + and committer information on a `git_note`, respectively. -* git_note_create() has changed the position of the notes reference - name to match git_note_remove(). +* 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 THREADSAFE option to build libgit2 with threading support has - been flipped to be on by default. +* The ssh transport supports asking the remote host for accepted + credential types as well as multiple challeges using a single + connection. This requires to know which username you want to connect + as, so this introduces the USERNAME credential type which the ssh + transport will use to ask for the username. -* The context_lines and interhunk_lines fields in git_diff_options are - now uint32_t instead of uint16_t. This allows to set them to UINT_MAX, - in effect asking for "infinite" context e.g. to iterate over all the - unmodified lines of a diff. +* The `GIT_EPEEL` error code has been introduced when we cannot peel a tag + to the requested object type; if the given object otherwise cannot be + peeled, `GIT_EINVALIDSPEC` is returned. -* git_status_file now takes an exact path. Use git_status_list_new if - pathspec searching is needed. +* Introduce `GIT_REPOSITORY_INIT_RELATIVE_GITLINK` to use relative paths + when writing gitlinks, as is used by git core for submodules. -* The fetch behavior of remotes with autotag set to GIT_REMOTE_DOWNLOAD_TAGS_ALL - has been changed to match git 1.9.0 and later. In this mode, libgit2 now - fetches all tags in addition to whatever else needs to be fetched. +* `git_remote_prune()` has been added. See above for description. -* The remote object has learnt to prune remote-tracking branches. If - the remote is configured to do so, this will happen via - git_remote_fetch(). You can also call git_remote_prune() after - connecting or fetching to perform the prune. -* git_threads_init() and git_threads_shutdown() have been renamed to - git_libgit2_init() and git_libgit2_shutdown() to better explain what - their purpose is, as it's grown to be more than just about threads. +* Introduce reference transactions, which allow multiple references to + be locked at the same time and updates be queued. This also allows + us to safely update a reflog with arbitrary contents, as we need to + do for stash. -* git_libgit2_init() and git_libgit2_shutdown() now return the number of - initializations of the library, so consumers may schedule work on the - first initialization. +### API removals -* git_treebuilder_new (was git_treebuilder_create) now takes a - repository so that it can query repository configuration. - Subsequently, git_treebuilder_write no longer takes a repository. +* `git_remote_supported_url()` and `git_remote_is_valid_url()` have been + removed as they have become essentially useless with rsync-style ssh paths. + +* `git_clone_into()` and `git_clone_local_into()` have been removed from the + public API in favour of `git_clone callbacks`. + +* The option to ignore certificate errors via `git_remote_cert_check()` + is no longer present. Instead, `git_remote_callbacks` has gained a new + entry which lets the user perform their own certificate checks. + +### Breaking API changes -* git_treebuilder_create was renamed to git_treebuilder_new to better +* `git_cherry_pick()` is now `git_cherrypick()`. + +* The `git_submodule_update()` function was renamed to + `git_submodule_update_strategy()`. `git_submodule_update()` is now used to + provide functionalty similar to "git submodule update". + +* `git_treebuilder_create()` was renamed to `git_treebuilder_new()` to better reflect it being a constructor rather than something which writes to disk. -* git_checkout now handles case-changing renames correctly on - case-insensitive filesystems; for example renaming "readme" to "README". +* `git_treebuilder_new()` (was `git_treebuilder_create()`) now takes a + repository so that it can query repository configuration. + Subsequently, `git_treebuilder_write()` no longer takes a repository. -* git_index_name_entrycount() and git_index_reuc_entrycount() now - return size_t instead of unsigned int. +* `git_threads_init()` and `git_threads_shutdown()` have been renamed to + `git_libgit2_init()` and `git_libgit2_shutdown()` to better explain what + their purpose is, as it's grown to be more than just about threads. -* The search for libssh2 is now done via pkg-config instead of a - custom search of a few directories. +* `git_libgit2_init()` and `git_libgit2_shutdown()` now return the number of + initializations of the library, so consumers may schedule work on the + first initialization. -* Add support for core.protectHFS and core.protectNTFS. Add more - validation for filenames which we write such as references. +* The `git_transport_register()` function no longer takes a priority and takes + a URL scheme name (eg "http") instead of a prefix like "http://" -* The local transport now generates textual progress output like - git-upload-pack does ("counting objects"). +* `git_index_name_entrycount()` and `git_index_reuc_entrycount()` now + return size_t instead of unsigned int. -* The git_submodule_update function was renamed to - git_submodule_update_strategy. git_submodule_update is now used to - provide functionalty similar to "git submodule update". +* The `context_lines` and `interhunk_lines` fields in `git_diff`_options are + now `uint32_t` instead of `uint16_t`. This allows to set them to `UINT_MAX`, + in effect asking for "infinite" context e.g. to iterate over all the + unmodified lines of a diff. -* git_checkout_index() can now check out an in-memory index that is not - necessarily the repository's index, so you may check out an index - that was produced by git_merge and friends while retaining the cached - information. +* `git_status_file()` now takes an exact path. Use `git_status_list_new()` if + pathspec searching is needed. -* git_cherry_pick() is now git_cherrypick(). +* `git_note_create()` has changed the position of the notes reference + name to match `git_note_remove()`. -* Introduce git_buf_text_is_binary() and git_buf_text_contains_nul() for - consumers to perform binary detection on a git_buf. +* Rename `git_remote_load()` to `git_remote_lookup()` to bring it in line + with the rest of the lookup functions. -* Remove the default timeout for receiving / sending data over HTTP using - the WinHTTP transport layer. +* `git_remote_rename()` now takes the repository and the remote's + current name. Accepting a remote indicates we want to change it, + which we only did partially. It is much clearer if we accept a name + and no loaded objects are changed. -* Add SPNEGO (Kerberos) authentication using GSSAPI on Unix systems. +* `git_remote_delete()` now accepts the repository and the remote's name + instead of a loaded remote. -* git_signature_new() now requires a non-empty email address. +* `git_merge_head` is now `git_annotated_commit`, to better reflect its usage + for multiple functions (including rebase) -* Use CommonCrypto libraries for SHA-1 calculation on Mac OS X. +* The `git_clone_options` struct no longer provides the `ignore_cert_errors` or + `remote_name` members for remote customization. -* Disable SSL compression and SSLv2 and SSLv3 ciphers in favor of TLSv1 - in OpenSSL. + 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. -* git_branch_upstream_remote() has been introduced to provide the - branch.<name>.remote configuration value. + The `remote_callbacks` member has been preserved for convenience, although it + is not used when a remote creation callback is supplied. -* The GIT_EPEEL error code has been introduced when we cannot peel a tag - to the requested object type; if the given object otherwise cannot be - peeled, GIT_EINVALIDSPEC is returned. +* The `git_clone`_options struct now provides `repository_cb` and + `repository_cb_payload` to allow the user to create a repository with + custom options. -* Provide built-in objects for the empty blob (e69de29) and empty - tree (4b825dc) objects. +* The `git_push` struct to perform a push has been replaced with + `git_remote_upload()`. The refspecs and options are passed as a + function argument. `git_push_update_tips()` is now also + `git_remote_update_tips()` and the callbacks are in the same struct as + the rest. -* Introduce GIT_REPOSITORY_INIT_RELATIVE_GITLINK to use relative paths - when writing gitlinks, as is used by git core for submodules. +* The `git_remote_set_transport()` function now sets a transport factory function, + rather than a pre-existing transport instance. -* Introduce git_describe_commit and git_describe_workdir to provide - a description of the current commit (and working tree, respectively) - based on the nearest tag or reference +* The `git_transport` structure definition has moved into the sys/transport.h + file. + +* libgit2 no longer automatically sets the OpenSSL locking + functions. This is not something which we can know to do. A + last-resort convenience function is provided in sys/openssl.h, + `git_openssl_set_locking()` which can be used to set the locking. |