1- v0.24 + 1
1+ v0.26 + 1
2+ ---------
3+
4+ ### Changes or improvements
5+
6+ * Improved ` p_unlink ` in ` posix_w32.c ` to try and make a file writable
7+ before sleeping in the retry loop to prevent unnecessary calls to sleep.
8+
9+ ### API additions
10+
11+ * ` git_remote_create_detached() ` creates a remote that is not associated
12+ to any repository (and does not apply configuration like 'insteadof' rules).
13+ This is mostly useful for e.g. emulating ` git ls-remote ` behavior.
14+
15+ ### API removals
16+
17+ ### Breaking API changes
18+
19+ v0.26
20+ -----
21+
22+ ### Changes or improvements
23+
24+ * Support for opening, creating and modifying worktrees.
25+
26+ * We can now detect SHA1 collisions resulting from the SHAttered attack. These
27+ checks can be enabled at build time via ` -DUSE_SHA1DC ` .
28+
29+ * Fix for missing implementation of ` git_merge_driver_source ` getters.
30+
31+ * Fix for installed pkg-config file being broken when the prefix contains
32+ spaces.
33+
34+ * We now detect when the hashsum of on-disk objects does not match their
35+ expected hashsum.
36+
37+ * We now support open-ended ranges (e.g. "master..", "...master") in our
38+ revision range parsing code.
39+
40+ * We now correctly compute ignores with leading "/" in subdirectories.
41+
42+ * We now optionally call ` fsync ` on loose objects, packfiles and their indexes,
43+ loose references and packed reference files.
44+
45+ * We can now build against OpenSSL v1.1 and against LibreSSL.
46+
47+ * ` GIT_MERGE_OPTIONS_INIT ` now includes a setting to perform rename detection.
48+ This aligns this structure with the default by ` git_merge ` and
49+ ` git_merge_trees ` when ` NULL ` was provided for the options.
50+
51+ * Improvements for reading index v4 files.
52+
53+ * Perform additional retries for filesystem operations on Windows when files
54+ are temporarily locked by other processes.
55+
56+ ### API additions
57+
58+ * New family of functions to handle worktrees:
59+
60+ * ` git_worktree_list() ` lets you look up worktrees for a repository.
61+ * ` git_worktree_lookup() ` lets you get a specific worktree.
62+ * ` git_worktree_open_from_repository() ` lets you get the associated worktree
63+ of a repository.
64+ a worktree.
65+ * ` git_worktree_add ` lets you create new worktrees.
66+ * ` git_worktree_prune ` lets you remove worktrees from disk.
67+ * ` git_worktree_lock() ` and ` git_worktree_unlock() ` let you lock
68+ respectively unlock a worktree.
69+ * ` git_repository_open_from_worktree() ` lets you open a repository via
70+ * ` git_repository_head_for_worktree() ` lets you get the current ` HEAD ` for a
71+ linked worktree.
72+ * ` git_repository_head_detached_for_worktree() ` lets you check whether a
73+ linked worktree is in detached HEAD mode.
74+
75+ * ` git_repository_item_path() ` lets you retrieve paths for various repository
76+ files.
77+
78+ * ` git_repository_commondir() ` lets you retrieve the common directory of a
79+ repository.
80+
81+ * ` git_branch_is_checked_out() ` allows you to check whether a branch is checked
82+ out in a repository or any of its worktrees.
83+
84+ * ` git_repository_submodule_cache_all() ` and
85+ ` git_repository_submodule_cache_clear() ` functions allow you to prime or clear
86+ the submodule cache of a repository.
87+
88+ * You can disable strict hash verifications via the
89+ ` GIT_OPT_ENABLE_STRICT_HASH_VERIFICATION ` option with ` git_libgit2_opts() ` .
90+
91+ * You can enable us calling ` fsync ` for various files inside the ".git"
92+ directory by setting the ` GIT_OPT_ENABLE_FSYNC_GITDIR ` option with
93+ ` git_libgit2_opts() ` .
94+
95+ * You can now enable "offset deltas" when creating packfiles and negotiating
96+ packfiles with a remote server by setting ` GIT_OPT_ENABLE_OFS_DELTA ` option
97+ with ` GIT_libgit2_opts() ` .
98+
99+ * You can now set the default share mode on Windows for opening files using
100+ ` GIT_OPT_SET_WINDOWS_SHAREMODE ` option with ` git_libgit2_opts() ` .
101+ You can query the current share mode with ` GIT_OPT_GET_WINDOWS_SHAREMODE ` .
102+
103+ * `git_transport_smart_proxy_options()' enables you to get the proxy options for
104+ smart transports.
105+
106+ * The ` GIT_FILTER_INIT ` macro and the ` git_filter_init ` function are provided
107+ to initialize a ` git_filter ` structure.
108+
109+ ### Breaking API changes
110+
111+ * ` clone_checkout_strategy ` has been removed from
112+ ` git_submodule_update_option ` . The checkout strategy used to clone will
113+ be the same strategy specified in ` checkout_opts ` .
114+
115+ v0.25
2116-------
3117
4118### Changes or improvements
@@ -15,14 +129,39 @@ v0.24 + 1
15129
16130* Support for reading and writing git index v4 files
17131
132+ * Improve the performance of the revwalk and bring us closer to git's code.
133+
134+ * The reference db has improved support for concurrency and returns ` GIT_ELOCKED `
135+ when an operation could not be performed due to locking.
136+
137+ * Nanosecond resolution is now activated by default, following git's change to
138+ do this.
139+
140+ * We now restrict the set of ciphers we let OpenSSL use by default.
141+
142+ * Users can now register their own merge drivers for use with ` .gitattributes ` .
143+ The library also gained built-in support for the union merge driver.
144+
145+ * The default for creating references is now to validate that the object does
146+ exist.
147+
148+ * Add ` git_proxy_options ` which is used by the different networking
149+ implementations to let the caller specify the proxy settings instead of
150+ relying on the environment variables.
151+
18152### API additions
19153
20154* You can now get the user-agent used by libgit2 using the
21155 ` GIT_OPT_GET_USER_AGENT ` option with ` git_libgit2_opts() ` .
22156 It is the counterpart to ` GIT_OPT_SET_USER_AGENT ` .
23157
158+ * The ` GIT_OPT_SET_SSL_CIPHERS ` option for ` git_libgit2_opts() ` lets you specify
159+ a custom list of ciphers to use for OpenSSL.
160+
24161* ` git_commit_create_buffer() ` creates a commit and writes it into a
25- user-provided buffer instead of writing it into the object db.
162+ user-provided buffer instead of writing it into the object db. Combine it with
163+ ` git_commit_create_with_signature() ` in order to create a commit with a
164+ cryptographic signature.
26165
27166* ` git_blob_create_fromstream() ` and
28167 ` git_blob_create_fromstream_commit() ` allow you to create a blob by
@@ -48,12 +187,48 @@ v0.24 + 1
48187 ` git_repository_open_ext ` with this flag will error out if either
49188 ` $GIT_WORK_TREE ` or ` $GIT_COMMON_DIR ` is set.
50189
51- * ` git_diff_from_buffer ` can create a ` git_diff ` object from the contents
190+ * ` git_diff_from_buffer() ` can create a ` git_diff ` object from the contents
52191 of a git-style patch file.
53192
54193* ` git_index_version() ` and ` git_index_set_version() ` to get and set
55194 the index version
56195
196+ * ` git_odb_expand_ids() ` lets you check for the existence of multiple
197+ objects at once.
198+
199+ * The new ` git_blob_dup() ` , ` git_commit_dup() ` , ` git_tag_dup() ` and
200+ ` git_tree_dup() ` functions provide type-specific wrappers for
201+ ` git_object_dup() ` to reduce noise and increase type safety for callers.
202+
203+ * ` git_reference_dup() ` lets you duplicate a reference to aid in ownership
204+ management and cleanup.
205+
206+ * ` git_signature_from_buffer() ` lets you create a signature from a string in the
207+ format that appear in objects.
208+
209+ * ` git_tree_create_updated() ` lets you create a tree based on another one
210+ together with a list of updates. For the covered update cases, it's more
211+ efficient than the ` git_index ` route.
212+
213+ * ` git_apply_patch() ` applies hunks from a ` git_patch ` to a buffer.
214+
215+ * ` git_diff_to_buf() ` lets you print an entire diff directory to a buffer,
216+ similar to how ` git_patch_to_buf() ` works.
217+
218+ * ` git_proxy_init_options() ` is added to initialize a ` git_proxy_options `
219+ structure at run-time.
220+
221+ * ` git_merge_driver_register() ` , ` git_merge_driver_unregister() ` let you
222+ register and unregister a custom merge driver to be used when ` .gitattributes `
223+ specifies it.
224+
225+ * ` git_merge_driver_lookup() ` can be used to look up a merge driver by name.
226+
227+ * ` git_merge_driver_source_repo() ` , ` git_merge_driver_source_ancestor() ` ,
228+ ` git_merge_driver_source_ours() ` , ` git_merge_driver_source_theirs() ` ,
229+ ` git_merge_driver_source_file_options() ` added as accessors to
230+ ` git_merge_driver_source ` .
231+
57232### API removals
58233
59234* ` git_blob_create_fromchunks() ` has been removed in favour of
@@ -78,6 +253,13 @@ v0.24 + 1
78253 If this is ` NULL ` , then it will not be called and the ` exists ` function
79254 will be used instead.
80255
256+ * ` git_remote_connect() ` now accepts ` git_proxy_options ` argument, and
257+ ` git_fetch_options ` and ` git_push_options ` each have a ` proxy_opts ` field.
258+
259+ * ` git_merge_options ` now provides a ` default_driver ` that can be used
260+ to provide the name of a merge driver to be used to handle files changed
261+ during a merge.
262+
81263v0.24
82264-------
83265
@@ -153,10 +335,6 @@ v0.24
153335
154336### Breaking API changes
155337
156- * ` git_merge_options ` now provides a ` default_driver ` that can be used
157- to provide the name of a merge driver to be used to handle files changed
158- during a merge.
159-
160338* The ` git_merge_tree_flag_t ` is now ` git_merge_flag_t ` . Subsequently,
161339 its members are no longer prefixed with ` GIT_MERGE_TREE_FLAG ` but are
162340 now prefixed with ` GIT_MERGE_FLAG ` , and the ` tree_flags ` field of the
0 commit comments