@@ -4,217 +4,229 @@ v0.22 + 1
44v0.22
55------
66
7- * File unlocks are atomic again via rename. Read-only files on Windows are
8- made read-write if necessary.
9-
10- * Share open packfiles across repositories to share descriptors and mmaps.
11-
12- * Use a map for the treebuilder, making insertion O(1)
7+ ### Changes or improvements
138
14- * Introduce reference transactions, which allow multiple references to
15- be locked at the same time and updates be queued. This also allows
16- us to safely update a reflog with arbitrary contents, as we need to
17- do for stash.
9+ * ` git_signature_new() ` now requires a non-empty email address.
1810
19- * The index' tree cache is now filled upon read-tree and write-tree
20- and the cache is written to disk.
21-
22- * LF -> CRLF filter refuses to handle mixed-EOL files
11+ * Use CommonCrypto libraries for SHA-1 calculation on Mac OS X.
2312
24- * LF -> CRLF filter now runs when * text = auto (with Git for Windows 1.9.4)
13+ * Disable SSL compression and SSLv2 and SSLv3 ciphers in favor of TLSv1
14+ in OpenSSL.
2515
26- * The git_transport structure definition has moved into the sys/transport.h
27- file.
16+ * The fetch behavior of remotes with autotag set to ` GIT_REMOTE_DOWNLOAD_TAGS_ALL `
17+ has been changed to match git 1.9.0 and later. In this mode, libgit2 now
18+ fetches all tags in addition to whatever else needs to be fetched.
2819
29- * The ssh transport supports asking the remote host for accepted
30- credential types as well as multiple challeges using a single
31- connection. This requires to know which username you want to connect
32- as, so this introduces the USERNAME credential type which the ssh
33- transport will use to ask for the username.
20+ * ` git_checkout() ` now handles case-changing renames correctly on
21+ case-insensitive filesystems; for example renaming "readme" to "README".
3422
35- * The build system now accepts an option EMBED_SSH_PATH which when set
36- tells it to include a copy of libssh2 at the given location. This is
37- enabled for MSVC.
23+ * The search for libssh2 is now done via pkg-config instead of a
24+ custom search of a few directories.
3825
39- * libgit2 no longer automatically sets the OpenSSL locking
40- functions. This is not something which we can know to do. A
41- last-resort convenience function is provided in sys/openssl.h,
42- git_openssl_set_locking() which can be used to set the locking.
26+ * Add support for core.protectHFS and core.protectNTFS. Add more
27+ validation for filenames which we write such as references.
4328
44- * The git_transport_register function no longer takes a priority and takes
45- a URL scheme name (eg "http") instead of a prefix like "http://"
29+ * The local transport now generates textual progress output like
30+ git-upload-pack does ("counting objects").
4631
47- * The git_remote_set_transport function now sets a transport factory function,
48- rather than a pre-existing transport instance.
32+ * ` git_checkout_index() ` can now check out an in-memory index that is not
33+ necessarily the repository's index, so you may check out an index
34+ that was produced by git_merge and friends while retaining the cached
35+ information.
4936
50- * A factory function for ssh has been added which allows to change the
51- path of the programs to execute for receive-pack and upload-pack on
52- the server, git_transport_ssh_with_paths.
37+ * Remove the default timeout for receiving / sending data over HTTP using
38+ the WinHTTP transport layer.
5339
54- * git_remote_rename() now takes the repository and the remote's
55- current name. Accepting a remote indicates we want to change it,
56- which we only did partially. It is much clearer if we accept a name
57- and no loaded objects are changed.
40+ * Add SPNEGO (Kerberos) authentication using GSSAPI on Unix systems.
5841
59- * git_remote_delete() now accepts the repository and the remote's name
60- instead of a loaded remote .
42+ * Provide built-in objects for the empty blob (e69de29) and empty
43+ tree (4b825dc) objects .
6144
62- * git_remote_supported_url() and git_remote_is_valid_url() have been
63- removed as they have become essentially useless with rsync-style ssh paths .
45+ * The index' tree cache is now filled upon read-tree and write-tree
46+ and the cache is written to disk .
6447
65- * The git_clone_options struct no longer provides the ignore_cert_errors or
66- remote_name members for remote customization.
48+ * LF -> CRLF filter refuses to handle mixed-EOL files
6749
68- Instead, the git_clone_options struct has two new members, remote_cb and
69- remote_cb_payload, which allow the caller to completely override the remote
70- creation process. If needed, the caller can use this callback to give their
71- remote a name other than the default (origin) or disable cert checking.
50+ * LF -> CRLF filter now runs when * text = auto (with Git for Windows 1.9.4)
7251
73- The remote_callbacks member has been preserved for convenience, although it
74- is not used when a remote creation callback is supplied .
52+ * File unlocks are atomic again via rename. Read-only files on Windows are
53+ made read-write if necessary .
7554
76- * The git_clone_options struct now provides repository_cb and
77- repository_cb_payload to allow the user to create a repository with
78- custom options.
55+ * Share open packfiles across repositories to share descriptors and mmaps.
7956
80- * The option to ignore certificate errors via git_remote_cert_check()
81- is no longer present. Instead, git_remote_callbacks has gained a new
82- entry which lets the user perform their own certificate checks.
57+ * Use a map for the treebuilder, making insertion O(1)
8358
84- * git_clone_into and git_clone_local_into have been removed from the
85- public API in favour of git_clone callbacks
59+ * The build system now accepts an option EMBED_SSH_PATH which when set
60+ tells it to include a copy of libssh2 at the given location. This is
61+ enabled for MSVC.
8662
8763* Add support for refspecs with the asterisk in the middle of a
8864 pattern.
8965
9066* Fetching now performs opportunistic updates. To achieve this, we
9167 introduce a difference between active and passive refspecs, which
92- make git_remote_download and git_remote_fetch to take a list of
68+ make ` git_remote_download() ` and ` git_remote_fetch() ` to take a list of
9369 resfpecs to be the active list, similarly to how git fetch accepts a
9470 list on the command-line.
9571
96- * Rename git_remote_load() to git_remote_lookup() to bring it in line
97- with the rest of the lookup functions .
72+ * The THREADSAFE option to build libgit2 with threading support has
73+ been flipped to be on by default .
9874
99- * The git_push struct to perform a push has been replaced with
100- git_remote_upload(). The refspecs and options are passed as a
101- function argument. git_push_update_tips() is now also
102- git_remote_update_tips() and the callbacks are in the same struct as
103- the rest.
75+ * The remote object has learnt to prune remote-tracking branches. If
76+ the remote is configured to do so, this will happen via
77+ ` git_remote_fetch() ` . You can also call ` git_remote_prune() ` after
78+ connecting or fetching to perform the prune.
79+
80+
81+ ### API additions
10482
105- * Introduce git_merge_bases() and the git_oidarray type to expose all
83+ * Introduce ` git_buf_text_is_binary() ` and ` git_buf_text_contains_nul() ` for
84+ consumers to perform binary detection on a git_buf.
85+
86+ * ` git_branch_upstream_remote() ` has been introduced to provide the
87+ branch.<name >.remote configuration value.
88+
89+ * Introduce ` git_describe_commit() ` and ` git_describe_workdir() ` to provide
90+ a description of the current commit (and working tree, respectively)
91+ based on the nearest tag or reference
92+
93+ * Introduce ` git_merge_bases() ` and the ` git_oidarray ` type to expose all
10694 merge bases between two commits.
10795
108- * Introduce git_merge_bases_many() to expose all merge bases between
96+ * Introduce ` git_merge_bases_many() ` to expose all merge bases between
10997 multiple commits.
11098
111- * git_merge_head is now git_annotated_commit, to better reflect its usage
112- for multiple functions (including rebase)
113-
11499* Introduce rebase functionality (using the merge algorithm only).
115- Introduce git_rebase_init() to begin a new rebase session,
116- git_rebase_open() to open an in-progress rebase session,
117- git_rebase_commit() to commit the current rebase operation,
118- git_rebase_next() to apply the next rebase operation,
119- git_rebase_abort() to abort an in-progress rebase and git_rebase_finish()
100+ Introduce ` git_rebase_init() ` to begin a new rebase session,
101+ ` git_rebase_open() ` to open an in-progress rebase session,
102+ ` git_rebase_commit() ` to commit the current rebase operation,
103+ ` git_rebase_next() ` to apply the next rebase operation,
104+ ` git_rebase_abort() ` to abort an in-progress rebase and ` git_rebase_finish() `
120105 to complete a rebase operation.
121106
122- * Introduce git_note_author() and git_note_committer() to get the author
123- and committer information on a git_note, respectively.
107+ * Introduce ` git_note_author() ` and ` git_note_committer() ` to get the author
108+ and committer information on a ` git_note ` , respectively.
124109
125- * git_note_create() has changed the position of the notes reference
126- name to match git_note_remove().
110+ * A factory function for ssh has been added which allows to change the
111+ path of the programs to execute for receive-pack and upload-pack on
112+ the server, ` git_transport_ssh_with_paths() ` .
127113
128- * The THREADSAFE option to build libgit2 with threading support has
129- been flipped to be on by default.
114+ * The ssh transport supports asking the remote host for accepted
115+ credential types as well as multiple challeges using a single
116+ connection. This requires to know which username you want to connect
117+ as, so this introduces the USERNAME credential type which the ssh
118+ transport will use to ask for the username.
130119
131- * The context_lines and interhunk_lines fields in git_diff_options are
132- now uint32_t instead of uint16_t. This allows to set them to UINT_MAX,
133- in effect asking for "infinite" context e.g. to iterate over all the
134- unmodified lines of a diff.
120+ * The ` GIT_EPEEL ` error code has been introduced when we cannot peel a tag
121+ to the requested object type; if the given object otherwise cannot be
122+ peeled, ` GIT_EINVALIDSPEC ` is returned.
135123
136- * git_status_file now takes an exact path. Use git_status_list_new if
137- pathspec searching is needed .
124+ * Introduce ` GIT_REPOSITORY_INIT_RELATIVE_GITLINK ` to use relative paths
125+ when writing gitlinks, as is used by git core for submodules .
138126
139- * The fetch behavior of remotes with autotag set to GIT_REMOTE_DOWNLOAD_TAGS_ALL
140- has been changed to match git 1.9.0 and later. In this mode, libgit2 now
141- fetches all tags in addition to whatever else needs to be fetched.
127+ * ` git_remote_prune() ` has been added. See above for description.
142128
143- * The remote object has learnt to prune remote-tracking branches. If
144- the remote is configured to do so, this will happen via
145- git_remote_fetch(). You can also call git_remote_prune() after
146- connecting or fetching to perform the prune.
147129
148- * git_threads_init() and git_threads_shutdown() have been renamed to
149- git_libgit2_init() and git_libgit2_shutdown() to better explain what
150- their purpose is, as it's grown to be more than just about threads.
130+ * Introduce reference transactions, which allow multiple references to
131+ be locked at the same time and updates be queued. This also allows
132+ us to safely update a reflog with arbitrary contents, as we need to
133+ do for stash.
151134
152- * git_libgit2_init() and git_libgit2_shutdown() now return the number of
153- initializations of the library, so consumers may schedule work on the
154- first initialization.
135+ ### API removals
155136
156- * git_treebuilder_new (was git_treebuilder_create) now takes a
157- repository so that it can query repository configuration.
158- Subsequently, git_treebuilder_write no longer takes a repository.
137+ * ` git_remote_supported_url() ` and ` git_remote_is_valid_url() ` have been
138+ removed as they have become essentially useless with rsync-style ssh paths.
139+
140+ * ` git_clone_into() ` and ` git_clone_local_into() ` have been removed from the
141+ public API in favour of ` git_clone callbacks ` .
142+
143+ * The option to ignore certificate errors via ` git_remote_cert_check() `
144+ is no longer present. Instead, ` git_remote_callbacks ` has gained a new
145+ entry which lets the user perform their own certificate checks.
146+
147+ ### Breaking API changes
159148
160- * git_treebuilder_create was renamed to git_treebuilder_new to better
149+ * ` git_cherry_pick() ` is now ` git_cherrypick() ` .
150+
151+ * The ` git_submodule_update() ` function was renamed to
152+ ` git_submodule_update_strategy() ` . ` git_submodule_update() ` is now used to
153+ provide functionalty similar to "git submodule update".
154+
155+ * ` git_treebuilder_create() ` was renamed to ` git_treebuilder_new() ` to better
161156 reflect it being a constructor rather than something which writes to
162157 disk.
163158
164- * git_checkout now handles case-changing renames correctly on
165- case-insensitive filesystems; for example renaming "readme" to "README".
159+ * ` git_treebuilder_new() ` (was ` git_treebuilder_create() ` ) now takes a
160+ repository so that it can query repository configuration.
161+ Subsequently, ` git_treebuilder_write() ` no longer takes a repository.
166162
167- * git_index_name_entrycount() and git_index_reuc_entrycount() now
168- return size_t instead of unsigned int.
163+ * ` git_threads_init() ` and ` git_threads_shutdown() ` have been renamed to
164+ ` git_libgit2_init() ` and ` git_libgit2_shutdown() ` to better explain what
165+ their purpose is, as it's grown to be more than just about threads.
169166
170- * The search for libssh2 is now done via pkg-config instead of a
171- custom search of a few directories.
167+ * ` git_libgit2_init() ` and ` git_libgit2_shutdown() ` now return the number of
168+ initializations of the library, so consumers may schedule work on the
169+ first initialization.
172170
173- * Add support for core.protectHFS and core.protectNTFS. Add more
174- validation for filenames which we write such as references.
171+ * The ` git_transport_register() ` function no longer takes a priority and takes
172+ a URL scheme name (eg "http") instead of a prefix like "http://"
175173
176- * The local transport now generates textual progress output like
177- git-upload-pack does ("counting objects") .
174+ * ` git_index_name_entrycount() ` and ` git_index_reuc_entrycount() ` now
175+ return size_t instead of unsigned int .
178176
179- * The git_submodule_update function was renamed to
180- git_submodule_update_strategy. git_submodule_update is now used to
181- provide functionalty similar to "git submodule update".
177+ * The ` context_lines ` and ` interhunk_lines ` fields in ` git_diff ` _ options are
178+ now ` uint32_t ` instead of ` uint16_t ` . This allows to set them to ` UINT_MAX ` ,
179+ in effect asking for "infinite" context e.g. to iterate over all the
180+ unmodified lines of a diff.
182181
183- * git_checkout_index() can now check out an in-memory index that is not
184- necessarily the repository's index, so you may check out an index
185- that was produced by git_merge and friends while retaining the cached
186- information.
182+ * ` git_status_file() ` now takes an exact path. Use ` git_status_list_new() ` if
183+ pathspec searching is needed.
187184
188- * git_cherry_pick() is now git_cherrypick().
185+ * ` git_note_create() ` has changed the position of the notes reference
186+ name to match ` git_note_remove() ` .
189187
190- * Introduce git_buf_text_is_binary() and git_buf_text_contains_nul() for
191- consumers to perform binary detection on a git_buf .
188+ * Rename ` git_remote_load() ` to ` git_remote_lookup() ` to bring it in line
189+ with the rest of the lookup functions .
192190
193- * Remove the default timeout for receiving / sending data over HTTP using
194- the WinHTTP transport layer.
191+ * ` git_remote_rename() ` now takes the repository and the remote's
192+ current name. Accepting a remote indicates we want to change it,
193+ which we only did partially. It is much clearer if we accept a name
194+ and no loaded objects are changed.
195195
196- * Add SPNEGO (Kerberos) authentication using GSSAPI on Unix systems.
196+ * ` git_remote_delete() ` now accepts the repository and the remote's name
197+ instead of a loaded remote.
197198
198- * git_signature_new() now requires a non-empty email address.
199+ * ` git_merge_head ` is now ` git_annotated_commit ` , to better reflect its usage
200+ for multiple functions (including rebase)
199201
200- * Use CommonCrypto libraries for SHA-1 calculation on Mac OS X.
202+ * The ` git_clone_options ` struct no longer provides the ` ignore_cert_errors ` or
203+ ` remote_name ` members for remote customization.
201204
202- * Disable SSL compression and SSLv2 and SSLv3 ciphers in favor of TLSv1
203- in OpenSSL.
205+ Instead, the ` git_clone_options ` struct has two new members, ` remote_cb ` and
206+ ` remote_cb_payload ` , which allow the caller to completely override the remote
207+ creation process. If needed, the caller can use this callback to give their
208+ remote a name other than the default (origin) or disable cert checking.
204209
205- * git_branch_upstream_remote() has been introduced to provide the
206- branch.< name >. remote configuration value .
210+ The ` remote_callbacks ` member has been preserved for convenience, although it
211+ is not used when a remote creation callback is supplied .
207212
208- * The GIT_EPEEL error code has been introduced when we cannot peel a tag
209- to the requested object type; if the given object otherwise cannot be
210- peeled, GIT_EINVALIDSPEC is returned .
213+ * The ` git_clone ` _ options struct now provides ` repository_cb ` and
214+ ` repository_cb_payload ` to allow the user to create a repository with
215+ custom options .
211216
212- * Provide built-in objects for the empty blob (e69de29) and empty
213- tree (4b825dc) objects.
217+ * The ` git_push ` struct to perform a push has been replaced with
218+ ` git_remote_upload() ` . The refspecs and options are passed as a
219+ function argument. ` git_push_update_tips() ` is now also
220+ ` git_remote_update_tips() ` and the callbacks are in the same struct as
221+ the rest.
214222
215- * Introduce GIT_REPOSITORY_INIT_RELATIVE_GITLINK to use relative paths
216- when writing gitlinks, as is used by git core for submodules .
223+ * The ` git_remote_set_transport() ` function now sets a transport factory function,
224+ rather than a pre-existing transport instance .
217225
218- * Introduce git_describe_commit and git_describe_workdir to provide
219- a description of the current commit (and working tree, respectively)
220- based on the nearest tag or reference
226+ * The ` git_transport ` structure definition has moved into the sys/transport.h
227+ file.
228+
229+ * libgit2 no longer automatically sets the OpenSSL locking
230+ functions. This is not something which we can know to do. A
231+ last-resort convenience function is provided in sys/openssl.h,
232+ ` git_openssl_set_locking() ` which can be used to set the locking.
0 commit comments