]>
Commit | Line | Data |
---|---|---|
159061a8 CMN |
1 | v0.23 + 1 |
2 | ------- | |
3 | ||
4 | ### Changes or improvements | |
5 | ||
9a99ca7b ET |
6 | * Custom filters can now be registered with wildcard attributes, for |
7 | example `filter=*`. Consumers should examine the attributes parameter | |
8 | of the `check` function for details. | |
9 | ||
159061a8 CMN |
10 | ### API additions |
11 | ||
12 | ### API removals | |
13 | ||
79698030 ET |
14 | ### Breaking API changes |
15 | ||
16 | * `git_cert` descendent types now have a proper `parent` member | |
17 | ||
01d0c02d CMN |
18 | * It is the responsibility fo the refdb backend to decide what to do |
19 | with the reflog on ref deletion. The file-based backend must delete | |
20 | it, a database-backed one may wish to archive it. | |
21 | ||
159061a8 | 22 | v0.23 |
c8b64f70 CMN |
23 | ------ |
24 | ||
16bcf0c7 CMN |
25 | ### Changes or improvements |
26 | ||
70b0f128 JG |
27 | * Patience and minimal diff drivers can now be used for merges. |
28 | ||
29 | * Merges can now ignore whitespace changes. | |
30 | ||
0161e096 SS |
31 | * Updated binary identification in CRLF filtering to avoid false positives in |
32 | UTF-8 files. | |
33 | ||
4d6f55ac ET |
34 | * Rename and copy detection is enabled for small files. |
35 | ||
96b82b11 ET |
36 | * Checkout can now handle an initial checkout of a repository, making |
37 | `GIT_CHECKOUT_SAFE_CREATE` unnecessary for users of clone. | |
38 | ||
659cf202 CMN |
39 | * The signature parameter in the ref-modifying functions has been |
40 | removed. Use `git_repository_set_ident()` and | |
41 | `git_repository_ident()` to override the signature to be used. | |
42 | ||
0ef54a63 CMN |
43 | * The local transport now auto-scales the number of threads to use |
44 | when creating the packfile instead of sticking to one. | |
45 | ||
8acf058f CMN |
46 | * Reference renaming now uses the right id for the old value. |
47 | ||
48 | * The annotated version of branch creation, HEAD detaching and reset | |
49 | allow for specifying the expression from the user to be put into the | |
50 | reflog. | |
51 | ||
aa9bb425 | 52 | * `git_rebase_commit` now returns `GIT_EUNMERGED` when you attempt to |
eaf0d688 ET |
53 | commit with unstaged changes. |
54 | ||
85247df0 | 55 | * On Mac OS X, we now use SecureTransport to provide the cryptographic |
ca2466ff | 56 | support for HTTPS connections insead of OpenSSL. |
85247df0 | 57 | |
1f1f5c63 ET |
58 | * Checkout can now accept an index for the baseline computations via the |
59 | `baseline_index` member. | |
60 | ||
b1ae3e53 CMN |
61 | * The configuration for fetching is no longer stored inside the |
62 | `git_remote` struct but has been moved to a `git_fetch_options`. The | |
63 | remote functions now take these options or the callbacks instead of | |
64 | setting them beforehand. | |
65 | ||
ca2466ff CMN |
66 | * `git_submodule` instances are no longer cached or shared across |
67 | lookup. Each submodule represents the configuration at the time of | |
68 | loading. | |
69 | ||
874cc35a CMN |
70 | * The index now uses diffs for `add_all()` and `update_all()` which |
71 | gives it a speed boost and closer semantics to git. | |
72 | ||
e3435673 CMN |
73 | * The ssh transport now reports the stderr output from the server as |
74 | the error message, which allows you to get the "repository not | |
75 | found" messages. | |
76 | ||
ecd60a56 ET |
77 | * `git_index_conflict_add()` will remove staged entries that exist for |
78 | conflicted paths. | |
b1ae3e53 | 79 | |
10549a2d ET |
80 | * The flags for a `git_diff_file` will now have the `GIT_DIFF_FLAG_EXISTS` |
81 | bit set when a file exists on that side of the diff. This is useful | |
82 | for understanding whether a side of the diff exists in the presence of | |
83 | a conflict. | |
b1ae3e53 | 84 | |
a5670d4f CMN |
85 | * The constructor for a write-stream into the odb now takes |
86 | `git_off_t` instead of `size_t` for the size of the blob, which | |
87 | allows putting large files into the odb on 32-bit systems. | |
88 | ||
771069e1 PS |
89 | * The remote's push and pull URLs now honor the url.$URL.insteadOf |
90 | configuration. This allows modifying URL prefixes to a custom | |
91 | value via gitconfig. | |
92 | ||
0e522f6e ET |
93 | * `git_diff_foreach`, `git_diff_blobs`, `git_diff_blob_to_buffer`, |
94 | and `git_diff_buffers` now accept a new binary callback of type | |
95 | `git_diff_binary_cb` that includes the binary diff information. | |
96 | ||
bb4896f2 CMN |
97 | * The race condition mitigations described in `racy-git.txt` have been |
98 | implemented. | |
99 | ||
ede517bc CMN |
100 | * If libcurl is installed, we will use it to connect to HTTP(S) |
101 | servers. | |
102 | ||
16bcf0c7 CMN |
103 | ### API additions |
104 | ||
70b0f128 JG |
105 | * The `git_merge_options` gained a `file_flags` member. |
106 | ||
eac773d9 CMN |
107 | * Parsing and retrieving a configuration value as a path is exposed |
108 | via `git_config_parse_path()` and `git_config_get_path()` | |
109 | respectively. | |
110 | ||
659cf202 CMN |
111 | * `git_repository_set_ident()` and `git_repository_ident()` serve to |
112 | set and query which identity will be used when writing to the | |
113 | reflog. | |
114 | ||
9a97f49e CMN |
115 | * `git_config_entry_free()` frees a config entry. |
116 | ||
117 | * `git_config_get_string_buf()` provides a way to safely retrieve a | |
118 | string from a non-snapshot configuration. | |
119 | ||
8acf058f CMN |
120 | * `git_annotated_commit_from_revspec()` allows to get an annotated |
121 | commit from an extended sha synatx string. | |
122 | ||
123 | * `git_repository_set_head_detached_from_annotated()`, | |
124 | `git_branch_create_from_annotated()` and | |
125 | `git_reset_from_annotated()` allow for the caller to provide an | |
126 | annotated commit through which they can control what expression is | |
127 | put into the reflog as the source/target. | |
d578b45f | 128 | |
a275fbc0 | 129 | * `git_index_add_frombuffer()` can now create a blob from memory |
b1ae3e53 CMN |
130 | buffer and add it to the index which is attached to a repository. |
131 | ||
132 | * The structure `git_fetch_options` has been added to determine the | |
133 | runtime configuration for fetching, such as callbacks, pruning and | |
134 | autotag behaviour. It has the runtime initializer | |
135 | `git_fetch_init_options()`. | |
136 | ||
137 | * The enum `git_fetch_prune_t` has been added, letting you specify the | |
138 | pruning behaviour for a fetch. | |
a275fbc0 | 139 | |
a5670d4f CMN |
140 | * A push operation will notify the caller of what updates it indends |
141 | to perform on the remote, which provides similar information to | |
142 | git's pre-push hook. | |
143 | ||
15fdf054 ET |
144 | * `git_stash_apply()` can now apply a stashed state from the stash list, |
145 | placing the data into the working directory and index. | |
146 | ||
147 | * `git_stash_pop()` will apply a stashed state (like `git_stash_apply()`) | |
148 | but will remove the stashed state after a successful application. | |
149 | ||
1396c381 CMN |
150 | * A new error code `GIT_EEOF` indicates an early EOF from the |
151 | server. This typically indicates an error with the URL or | |
152 | configuration of the server, and tools can use this to show messages | |
153 | about failing to communicate with the server. | |
154 | ||
3cf91d98 CMN |
155 | * A new error code `GIT_EINVALID` indicates that an argument to a |
156 | function is invalid, or an invalid operation was requested. | |
157 | ||
7c948014 ET |
158 | * `git_diff_index_to_workdir()` and `git_diff_tree_to_index()` will now |
159 | produce deltas of type `GIT_DELTA_CONFLICTED` to indicate that the index | |
160 | side of the delta is a conflict. | |
161 | ||
162 | * The `git_status` family of functions will now produce status of type | |
163 | `GIT_STATUS_CONFLICTED` to indicate that a conflict exists for that file | |
164 | in the index. | |
165 | ||
9f545b9d ET |
166 | * `git_index_entry_is_conflict()` is a utility function to determine if |
167 | a given index entry has a non-zero stage entry, indicating that it is | |
168 | one side of a conflict. | |
169 | ||
a5670d4f CMN |
170 | * It is now possible to pass a keypair via a buffer instead of a |
171 | path. For this, `GIT_CREDTYPE_SSH_MEMORY` and | |
172 | `git_cred_ssh_key_memory_new()` have been added. | |
173 | ||
2eecc288 ET |
174 | * `git_filter_list_contains` will indicate whether a particular |
175 | filter will be run in the given filter list. | |
176 | ||
a3f42fe8 CMN |
177 | * `git_commit_header_field()` has been added, which allows retrieving |
178 | the contents of an arbitrary header field. | |
179 | ||
ca2466ff CMN |
180 | * `git_submodule_set_branch()` allows to set the configured branch for |
181 | a submodule. | |
182 | ||
16bcf0c7 CMN |
183 | ### API removals |
184 | ||
9663d1bd | 185 | * `git_remote_save()` and `git_remote_clear_refspecs()` have been |
b1ae3e53 CMN |
186 | removed. Remote's configuration is changed via the configuration |
187 | directly or through a convenience function which performs changes to | |
188 | the configuration directly. | |
189 | ||
190 | * `git_remote_set_callbacks()`, `git_remote_get_callbacks()` and | |
9663d1bd | 191 | `git_remote_set_transport()` have been removed and the remote no |
b1ae3e53 CMN |
192 | longer stores this configuration. |
193 | ||
70f7484d CMN |
194 | * `git_remote_set_fetch_refpecs()` and |
195 | `git_remote_set_push_refspecs()` have been removed. There is no | |
196 | longer a way to set the base refspecs at run-time. | |
197 | ||
ca2466ff CMN |
198 | * `git_submodule_save()` has been removed. The submodules are no |
199 | longer configured via the objects. | |
200 | ||
34065968 CMN |
201 | * `git_submodule_reload_all()` has been removed as we no longer cache |
202 | submodules. | |
203 | ||
16bcf0c7 CMN |
204 | ### Breaking API changes |
205 | ||
bf2ba529 JM |
206 | * `git_smart_subtransport_cb` now has a `param` parameter. |
207 | ||
70b0f128 JG |
208 | * The `git_merge_options` structure member `flags` has been renamed |
209 | to `tree_flags`. | |
210 | ||
b8c50808 | 211 | * The `git_merge_file_options` structure member `flags` is now |
70b0f128 JG |
212 | an unsigned int. It was previously a `git_merge_file_flags_t`. |
213 | ||
96b82b11 ET |
214 | * `GIT_CHECKOUT_SAFE_CREATE` has been removed. Most users will generally |
215 | be able to switch to `GIT_CHECKOUT_SAFE`, but if you require missing | |
216 | file handling during checkout, you may now use `GIT_CHECKOUT_SAFE | | |
217 | GIT_CHECKOUT_RECREATE_MISSING`. | |
218 | ||
41513659 CMN |
219 | * The `git_clone_options` and `git_submodule_update_options` |
220 | structures no longer have a `signature` field. | |
221 | ||
222 | * The following functions have removed the signature and/or log message | |
223 | parameters in favour of git-emulating ones. | |
224 | ||
225 | * `git_branch_create()`, `git_branch_move()` | |
226 | * `git_rebase_init()`, `git_rebase_abort()` | |
227 | * `git_reference_symbolic_create_matching()`, | |
228 | `git_reference_symbolic_create()`, `git_reference_create()`, | |
229 | `git_reference_create_matching()`, | |
230 | `git_reference_symbolic_set_target()`, | |
231 | `git_reference_set_target()`, `git_reference_rename()` | |
232 | * `git_remote_update_tips()`, `git_remote_fetch()`, `git_remote_push()` | |
233 | * `git_repository_set_head()`, | |
234 | `git_repository_set_head_detached()`, | |
235 | `git_repository_detach_head()` | |
236 | * `git_reset()` | |
237 | ||
9a97f49e CMN |
238 | * `git_config_get_entry()` now gives back a ref-counted |
239 | `git_config_entry`. You must free it when you no longer need it. | |
240 | ||
241 | * `git_config_get_string()` will return an error if used on a | |
242 | non-snapshot configuration, as there can be no guarantee that the | |
243 | returned pointer is valid. | |
244 | ||
385449b1 CMN |
245 | * `git_note_default_ref()` now uses a `git_buf` to return the string, |
246 | as the string is otherwise not guaranteed to stay allocated. | |
247 | ||
30640aa9 ET |
248 | * `git_rebase_operation_current()` will return `GIT_REBASE_NO_OPERATION` |
249 | if it is called immediately after creating a rebase session but before | |
250 | you have applied the first patch. | |
251 | ||
a5670d4f CMN |
252 | * `git_rebase_options` now contains a `git_checkout_options` struct |
253 | that will be used for functions that modify the working directory, | |
254 | namely `git_checkout_init`, `git_checkout_next` and | |
255 | `git_checkout_abort`. As a result, `git_rebase_open` now also takes | |
256 | a `git_rebase_options` and only the `git_rebase_init` and | |
f3a199dd ET |
257 | `git_rebase_open` functions take a `git_rebase_options`, where they |
258 | will persist the options to subsequent `git_rebase` calls. | |
259 | ||
b1ae3e53 CMN |
260 | * The `git_clone_options` struct now has fetch options in a |
261 | `fetch_opts` field instead of remote callbacks in | |
262 | `remote_callbacks`. | |
263 | ||
a5670d4f CMN |
264 | * The remote callbacks has gained a new member `push_negotiation` |
265 | which gets called before sending the update commands to the server. | |
266 | ||
ca2466ff | 267 | * The following functions no longer act on a remote instance but |
b1ae3e53 CMN |
268 | change the repository's configuration. Their signatures have changed |
269 | accordingly: | |
270 | ||
271 | * `git_remote_set_url()`, `git_remote_seturl()` | |
272 | * `git_remote_add_fetch()`, `git_remote_add_push()` and | |
273 | * `git_remote_set_autotag()` | |
274 | ||
275 | * `git_remote_connect()` and `git_remote_prune()` now take a pointer | |
276 | to the callbacks. | |
277 | ||
9663d1bd | 278 | * `git_remote_fetch()` and `git_remote_download()` now take a pointer |
b1ae3e53 CMN |
279 | to fetch options which determine the runtime configuration. |
280 | ||
281 | * The `git_remote_autotag_option_t` values have been changed. It has | |
c2418f46 | 282 | gained a `_UNSPECIFIED` default value to specify no override for the |
b1ae3e53 CMN |
283 | configured setting. |
284 | ||
285 | * `git_remote_update_tips()` now takes a pointer to the callbacks as | |
286 | well as a boolean whether to write `FETCH_HEAD` and the autotag | |
287 | setting. | |
288 | ||
ae5b9362 CMN |
289 | * `git_remote_create_anonymous()` no longer takes a fetch refspec as |
290 | url-only remotes cannot have configured refspecs. | |
291 | ||
b1ae3e53 CMN |
292 | * The `git_submodule_update_options` struct now has fetch options in |
293 | the `fetch_opts` field instead of callbacks in the | |
294 | `remote_callbacks` field. | |
295 | ||
ca2466ff CMN |
296 | * The following functions no longer act on a submodule instance but |
297 | change the repository's configuration. Their signatures have changed | |
298 | accordingly: | |
299 | ||
300 | * `git_submodule_set_url()`, `git_submodule_set_ignore()`, | |
301 | `git_submodule_set_update()`, | |
302 | `git_submodule_set_fetch_recurse_submodules()`. | |
303 | ||
304 | * `git_submodule_status()` no longer takes a submodule instance but a | |
305 | repsitory, a submodule name and an ignore setting. | |
306 | ||
b1ae3e53 CMN |
307 | * The `push` function in the `git_transport` interface now takes a |
308 | pointer to the remote callbacks. | |
309 | ||
98270f56 CMN |
310 | * The `git_index_entry` struct's fields' types have been changed to |
311 | more accurately reflect what is in fact stored in the | |
312 | index. Specifically, time and file size are 32 bits intead of 64, as | |
313 | these values are truncated. | |
314 | ||
885b94aa ET |
315 | * `GIT_EMERGECONFLICT` is now `GIT_ECONFLICT`, which more accurately |
316 | describes the nature of the error. | |
317 | ||
3cf91d98 CMN |
318 | * It is no longer allowed to call `git_buf_grow()` on buffers |
319 | borrowing the memory they point to. | |
320 | ||
c8b64f70 | 321 | v0.22 |
d30447cb CMN |
322 | ------ |
323 | ||
b91f28be | 324 | ### Changes or improvements |
e1fc03c9 | 325 | |
b91f28be | 326 | * `git_signature_new()` now requires a non-empty email address. |
274c3fa6 | 327 | |
b91f28be | 328 | * Use CommonCrypto libraries for SHA-1 calculation on Mac OS X. |
d412165f | 329 | |
b91f28be CMN |
330 | * Disable SSL compression and SSLv2 and SSLv3 ciphers in favor of TLSv1 |
331 | in OpenSSL. | |
d412165f | 332 | |
b91f28be CMN |
333 | * The fetch behavior of remotes with autotag set to `GIT_REMOTE_DOWNLOAD_TAGS_ALL` |
334 | has been changed to match git 1.9.0 and later. In this mode, libgit2 now | |
335 | fetches all tags in addition to whatever else needs to be fetched. | |
c180c065 | 336 | |
b91f28be CMN |
337 | * `git_checkout()` now handles case-changing renames correctly on |
338 | case-insensitive filesystems; for example renaming "readme" to "README". | |
7449c82e | 339 | |
b91f28be CMN |
340 | * The search for libssh2 is now done via pkg-config instead of a |
341 | custom search of a few directories. | |
3753110a | 342 | |
b91f28be CMN |
343 | * Add support for core.protectHFS and core.protectNTFS. Add more |
344 | validation for filenames which we write such as references. | |
5192bcc5 | 345 | |
b91f28be CMN |
346 | * The local transport now generates textual progress output like |
347 | git-upload-pack does ("counting objects"). | |
c180c065 | 348 | |
b91f28be CMN |
349 | * `git_checkout_index()` can now check out an in-memory index that is not |
350 | necessarily the repository's index, so you may check out an index | |
351 | that was produced by git_merge and friends while retaining the cached | |
352 | information. | |
1697cd6f | 353 | |
b91f28be CMN |
354 | * Remove the default timeout for receiving / sending data over HTTP using |
355 | the WinHTTP transport layer. | |
d4256ed5 | 356 | |
b91f28be | 357 | * Add SPNEGO (Kerberos) authentication using GSSAPI on Unix systems. |
46c8f7f8 | 358 | |
b91f28be CMN |
359 | * Provide built-in objects for the empty blob (e69de29) and empty |
360 | tree (4b825dc) objects. | |
262eec23 | 361 | |
b91f28be CMN |
362 | * The index' tree cache is now filled upon read-tree and write-tree |
363 | and the cache is written to disk. | |
0862f617 | 364 | |
b91f28be | 365 | * LF -> CRLF filter refuses to handle mixed-EOL files |
1697cd6f | 366 | |
b91f28be | 367 | * LF -> CRLF filter now runs when * text = auto (with Git for Windows 1.9.4) |
1697cd6f | 368 | |
b91f28be CMN |
369 | * File unlocks are atomic again via rename. Read-only files on Windows are |
370 | made read-write if necessary. | |
d58a64e9 | 371 | |
b91f28be | 372 | * Share open packfiles across repositories to share descriptors and mmaps. |
6812afaf | 373 | |
b91f28be | 374 | * Use a map for the treebuilder, making insertion O(1) |
2cd3cb8e | 375 | |
b91f28be CMN |
376 | * The build system now accepts an option EMBED_SSH_PATH which when set |
377 | tells it to include a copy of libssh2 at the given location. This is | |
378 | enabled for MSVC. | |
9fef46de CMN |
379 | |
380 | * Add support for refspecs with the asterisk in the middle of a | |
381 | pattern. | |
7db0e6ee | 382 | |
c5837cad CMN |
383 | * Fetching now performs opportunistic updates. To achieve this, we |
384 | introduce a difference between active and passive refspecs, which | |
b91f28be | 385 | make `git_remote_download()` and `git_remote_fetch()` to take a list of |
c5837cad CMN |
386 | resfpecs to be the active list, similarly to how git fetch accepts a |
387 | list on the command-line. | |
388 | ||
b91f28be CMN |
389 | * The THREADSAFE option to build libgit2 with threading support has |
390 | been flipped to be on by default. | |
209425ce | 391 | |
b91f28be CMN |
392 | * The remote object has learnt to prune remote-tracking branches. If |
393 | the remote is configured to do so, this will happen via | |
394 | `git_remote_fetch()`. You can also call `git_remote_prune()` after | |
395 | connecting or fetching to perform the prune. | |
396 | ||
397 | ||
398 | ### API additions | |
d524b2d3 | 399 | |
b91f28be CMN |
400 | * Introduce `git_buf_text_is_binary()` and `git_buf_text_contains_nul()` for |
401 | consumers to perform binary detection on a git_buf. | |
402 | ||
403 | * `git_branch_upstream_remote()` has been introduced to provide the | |
404 | branch.<name>.remote configuration value. | |
405 | ||
406 | * Introduce `git_describe_commit()` and `git_describe_workdir()` to provide | |
407 | a description of the current commit (and working tree, respectively) | |
408 | based on the nearest tag or reference | |
409 | ||
410 | * Introduce `git_merge_bases()` and the `git_oidarray` type to expose all | |
7db0e6ee | 411 | merge bases between two commits. |
eca07bcd | 412 | |
b91f28be | 413 | * Introduce `git_merge_bases_many()` to expose all merge bases between |
eca07bcd | 414 | multiple commits. |
67917281 | 415 | |
67917281 | 416 | * Introduce rebase functionality (using the merge algorithm only). |
b91f28be CMN |
417 | Introduce `git_rebase_init()` to begin a new rebase session, |
418 | `git_rebase_open()` to open an in-progress rebase session, | |
419 | `git_rebase_commit()` to commit the current rebase operation, | |
420 | `git_rebase_next()` to apply the next rebase operation, | |
421 | `git_rebase_abort()` to abort an in-progress rebase and `git_rebase_finish()` | |
67917281 ET |
422 | to complete a rebase operation. |
423 | ||
b91f28be CMN |
424 | * Introduce `git_note_author()` and `git_note_committer()` to get the author |
425 | and committer information on a `git_note`, respectively. | |
79b0ae4e | 426 | |
b91f28be CMN |
427 | * A factory function for ssh has been added which allows to change the |
428 | path of the programs to execute for receive-pack and upload-pack on | |
429 | the server, `git_transport_ssh_with_paths()`. | |
21083a71 | 430 | |
b91f28be CMN |
431 | * The ssh transport supports asking the remote host for accepted |
432 | credential types as well as multiple challeges using a single | |
433 | connection. This requires to know which username you want to connect | |
434 | as, so this introduces the USERNAME credential type which the ssh | |
435 | transport will use to ask for the username. | |
d88766c4 | 436 | |
b91f28be CMN |
437 | * The `GIT_EPEEL` error code has been introduced when we cannot peel a tag |
438 | to the requested object type; if the given object otherwise cannot be | |
439 | peeled, `GIT_EINVALIDSPEC` is returned. | |
68182085 | 440 | |
b91f28be CMN |
441 | * Introduce `GIT_REPOSITORY_INIT_RELATIVE_GITLINK` to use relative paths |
442 | when writing gitlinks, as is used by git core for submodules. | |
e284c451 | 443 | |
b91f28be | 444 | * `git_remote_prune()` has been added. See above for description. |
799e22ea | 445 | |
8aba3d47 | 446 | |
b91f28be CMN |
447 | * Introduce reference transactions, which allow multiple references to |
448 | be locked at the same time and updates be queued. This also allows | |
449 | us to safely update a reflog with arbitrary contents, as we need to | |
450 | do for stash. | |
6d91dc53 | 451 | |
b91f28be | 452 | ### API removals |
dce7b1a4 | 453 | |
b91f28be CMN |
454 | * `git_remote_supported_url()` and `git_remote_is_valid_url()` have been |
455 | removed as they have become essentially useless with rsync-style ssh paths. | |
456 | ||
457 | * `git_clone_into()` and `git_clone_local_into()` have been removed from the | |
458 | public API in favour of `git_clone callbacks`. | |
459 | ||
460 | * The option to ignore certificate errors via `git_remote_cert_check()` | |
461 | is no longer present. Instead, `git_remote_callbacks` has gained a new | |
462 | entry which lets the user perform their own certificate checks. | |
463 | ||
464 | ### Breaking API changes | |
208a2c8a | 465 | |
b91f28be CMN |
466 | * `git_cherry_pick()` is now `git_cherrypick()`. |
467 | ||
468 | * The `git_submodule_update()` function was renamed to | |
469 | `git_submodule_update_strategy()`. `git_submodule_update()` is now used to | |
470 | provide functionalty similar to "git submodule update". | |
471 | ||
472 | * `git_treebuilder_create()` was renamed to `git_treebuilder_new()` to better | |
208a2c8a CMN |
473 | reflect it being a constructor rather than something which writes to |
474 | disk. | |
40d79154 | 475 | |
b91f28be CMN |
476 | * `git_treebuilder_new()` (was `git_treebuilder_create()`) now takes a |
477 | repository so that it can query repository configuration. | |
478 | Subsequently, `git_treebuilder_write()` no longer takes a repository. | |
aad27e6e | 479 | |
b91f28be CMN |
480 | * `git_threads_init()` and `git_threads_shutdown()` have been renamed to |
481 | `git_libgit2_init()` and `git_libgit2_shutdown()` to better explain what | |
482 | their purpose is, as it's grown to be more than just about threads. | |
aad27e6e | 483 | |
b91f28be CMN |
484 | * `git_libgit2_init()` and `git_libgit2_shutdown()` now return the number of |
485 | initializations of the library, so consumers may schedule work on the | |
486 | first initialization. | |
aad27e6e | 487 | |
b91f28be CMN |
488 | * The `git_transport_register()` function no longer takes a priority and takes |
489 | a URL scheme name (eg "http") instead of a prefix like "http://" | |
aad27e6e | 490 | |
b91f28be CMN |
491 | * `git_index_name_entrycount()` and `git_index_reuc_entrycount()` now |
492 | return size_t instead of unsigned int. | |
9d1f97df | 493 | |
b91f28be CMN |
494 | * The `context_lines` and `interhunk_lines` fields in `git_diff`_options are |
495 | now `uint32_t` instead of `uint16_t`. This allows to set them to `UINT_MAX`, | |
496 | in effect asking for "infinite" context e.g. to iterate over all the | |
497 | unmodified lines of a diff. | |
974d21c8 | 498 | |
b91f28be CMN |
499 | * `git_status_file()` now takes an exact path. Use `git_status_list_new()` if |
500 | pathspec searching is needed. | |
974d21c8 | 501 | |
b91f28be CMN |
502 | * `git_note_create()` has changed the position of the notes reference |
503 | name to match `git_note_remove()`. | |
974d21c8 | 504 | |
b91f28be CMN |
505 | * Rename `git_remote_load()` to `git_remote_lookup()` to bring it in line |
506 | with the rest of the lookup functions. | |
974d21c8 | 507 | |
b91f28be CMN |
508 | * `git_remote_rename()` now takes the repository and the remote's |
509 | current name. Accepting a remote indicates we want to change it, | |
510 | which we only did partially. It is much clearer if we accept a name | |
511 | and no loaded objects are changed. | |
974d21c8 | 512 | |
b91f28be CMN |
513 | * `git_remote_delete()` now accepts the repository and the remote's name |
514 | instead of a loaded remote. | |
974d21c8 | 515 | |
b91f28be CMN |
516 | * `git_merge_head` is now `git_annotated_commit`, to better reflect its usage |
517 | for multiple functions (including rebase) | |
974d21c8 | 518 | |
b91f28be CMN |
519 | * The `git_clone_options` struct no longer provides the `ignore_cert_errors` or |
520 | `remote_name` members for remote customization. | |
974d21c8 | 521 | |
b91f28be CMN |
522 | Instead, the `git_clone_options` struct has two new members, `remote_cb` and |
523 | `remote_cb_payload`, which allow the caller to completely override the remote | |
524 | creation process. If needed, the caller can use this callback to give their | |
525 | remote a name other than the default (origin) or disable cert checking. | |
974d21c8 | 526 | |
b91f28be CMN |
527 | The `remote_callbacks` member has been preserved for convenience, although it |
528 | is not used when a remote creation callback is supplied. | |
974d21c8 | 529 | |
b91f28be CMN |
530 | * The `git_clone`_options struct now provides `repository_cb` and |
531 | `repository_cb_payload` to allow the user to create a repository with | |
532 | custom options. | |
974d21c8 | 533 | |
b91f28be CMN |
534 | * The `git_push` struct to perform a push has been replaced with |
535 | `git_remote_upload()`. The refspecs and options are passed as a | |
536 | function argument. `git_push_update_tips()` is now also | |
537 | `git_remote_update_tips()` and the callbacks are in the same struct as | |
538 | the rest. | |
974d21c8 | 539 | |
b91f28be CMN |
540 | * The `git_remote_set_transport()` function now sets a transport factory function, |
541 | rather than a pre-existing transport instance. | |
61cd037e | 542 | |
b91f28be CMN |
543 | * The `git_transport` structure definition has moved into the sys/transport.h |
544 | file. | |
545 | ||
546 | * libgit2 no longer automatically sets the OpenSSL locking | |
547 | functions. This is not something which we can know to do. A | |
548 | last-resort convenience function is provided in sys/openssl.h, | |
549 | `git_openssl_set_locking()` which can be used to set the locking. |