Skip to content

Commit b91f28b

Browse files
committed
Reformat the changelog
This should provide a easier way to see what kinds of changes we have, and a single place to look at the breaking changes.
1 parent d4b2410 commit b91f28b

File tree

1 file changed

+158
-146
lines changed

1 file changed

+158
-146
lines changed

CHANGELOG.md

Lines changed: 158 additions & 146 deletions
Original file line numberDiff line numberDiff line change
@@ -4,217 +4,229 @@ v0.22 + 1
44
v0.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

Comments
 (0)