|
1 | | -v0.28 + 1 |
2 | | ---------- |
| 1 | +v0.99 |
| 2 | +----- |
| 3 | + |
| 4 | +This is v0.99 "Torschlusspanik". This will be the last minor release |
| 5 | +before libgit2 v1.0. We expect to only respond to bugs in this release, |
| 6 | +to stabilize it for next major release. |
| 7 | + |
| 8 | +It contains significant refactorings, but is expected to be API-compatible |
| 9 | +with v0.28.0. |
| 10 | + |
| 11 | +### Changes or improvements |
| 12 | + |
| 13 | +* When fetching from an anonymous remote using a URL with authentication |
| 14 | + information provided in the URL (eg `https://foo:bar@example.com/repo`), |
| 15 | + we would erroneously include the literal URL in the FETCH_HEAD file. |
| 16 | + We now remove that to match git's behavior. |
| 17 | + |
| 18 | +* Some credential structures, enums and values have been renamed: |
| 19 | + `git_cred` is now `git_credential`. `git_credtype_t` is now |
| 20 | + `git_credential_t`. Functions and types beginning with |
| 21 | + `git_cred_` now begin with `git_credential`, and constants beginning |
| 22 | + with `GIT_CREDTYPE` now begin with `GIT_CREDENTIAL`. The former names |
| 23 | + are deprecated. |
| 24 | + |
| 25 | +* Several function signatures have been changed to return an `int` to |
| 26 | + indicate error conditions. We encourage you to check them for errors |
| 27 | + in the standard way. |
| 28 | + |
| 29 | + * `git_attr_cache_flush` |
| 30 | + * `git_error_set_str` |
| 31 | + * `git_index_name_clear` |
| 32 | + * `git_index_reuc_clear` |
| 33 | + * `git_libgit2_version` |
| 34 | + * `git_mempack_reset` |
| 35 | + * `git_oid_cpy` |
| 36 | + * `git_oid_fmt` |
| 37 | + * `git_oid_fromraw` |
| 38 | + * `git_oid_nfmt` |
| 39 | + * `git_oid_pathfmt` |
| 40 | + * `git_remote_stop` |
| 41 | + * `git_remote_disconnect` |
| 42 | + * `git_repository__cleanup` |
| 43 | + * `git_repository_set_config` |
| 44 | + * `git_repository_set_index` |
| 45 | + * `git_repository_set_odb` |
| 46 | + * `git_repository_set_refdb` |
| 47 | + * `git_revwalk_reset` |
| 48 | + * `git_revwalk_simplify_first_parent` |
| 49 | + * `git_revwalk_sorting` |
| 50 | + * `git_treebuilder_clear` |
| 51 | + * `git_treebuilder_filter` |
| 52 | + |
| 53 | +* The NTLM and Negotiate authentication mechanisms are now supported when |
| 54 | + talking to git implementations hosted on Apache or nginx servers. |
| 55 | + |
| 56 | +* The `HEAD` symbolic reference can no longer be deleted. |
| 57 | + |
| 58 | +* `git_merge_driver_source_repo` no longer returns a `const git_repository *`, |
| 59 | + it now returns a non-`const` `git_repository *`. |
| 60 | + |
| 61 | +* Relative symbolic links are now supported on Windows when `core.symlinks` |
| 62 | + is enabled. |
| 63 | + |
| 64 | +* Servers that provide query parameters with a redirect are now supported. |
| 65 | + |
| 66 | +* `git_submodule_sync` will now resolve relative URLs. |
| 67 | + |
| 68 | +* When creating git endpoint URLs, double-slashes are no longer used when |
| 69 | + the given git URL has a trailing slash. |
| 70 | + |
| 71 | +* On Windows, a `DllMain` function is no longer included and thread-local |
| 72 | + storage has moved to fiber-local storage in order to prevent race |
| 73 | + conditions during shutdown. |
| 74 | + |
| 75 | +* The tracing mechanism (`GIT_TRACE`) is now enabled by default and does |
| 76 | + not need to be explicitly enabled in CMake. |
| 77 | + |
| 78 | +* The size of Git objects is now represented by `git_object_size_t` |
| 79 | + instead of `off_t`. |
| 80 | + |
| 81 | +* Binary patches without data can now be parsed. |
| 82 | + |
| 83 | +* A configuration snapshot can now be created from another configuration |
| 84 | + snapshot, not just a "true" configuration object. |
| 85 | + |
| 86 | +* The `git_commit_with_signature` API will now ensure that referenced |
| 87 | + objects exist in the object database. |
| 88 | + |
| 89 | +* Stash messages containing newlines will now be replaced with spaces; |
| 90 | + they will no longer be (erroneously) written to the repository. |
| 91 | + |
| 92 | +* `git_commit_create_with_signature` now verifies the commit information |
| 93 | + to ensure that it points to a valid tree and valid parents. |
| 94 | + |
| 95 | +* `git_apply` has an option `GIT_APPLY_CHECK` that will only do a dry-run. |
| 96 | + The index and working directory will remain unmodified, and application |
| 97 | + will report if it would have worked. |
| 98 | + |
| 99 | +* Patches produced by Mercurial (those that lack some git extended headers) |
| 100 | + can now be parsed and applied. |
| 101 | + |
| 102 | +* Reference locks are obeyed correctly on POSIX platforms, instead of |
| 103 | + being removed. |
| 104 | + |
| 105 | +* Patches with empty new files can now be read and applied. |
| 106 | + |
| 107 | +* `git_apply_to_tree` can now correctly apply patches that add new files. |
| 108 | + |
| 109 | +* The program data configuration on Windows (`C:\ProgramData\Git\config`) |
| 110 | + must be owned by an administrator, a system account or the current user |
| 111 | + to be read. |
| 112 | + |
| 113 | +* `git_blob_filtered_content` is now deprecated in favor of `git_blob_filter`. |
| 114 | + |
| 115 | +* Configuration files can now be included conditionally using the |
| 116 | + `onbranch` conditional. |
| 117 | + |
| 118 | +* Checkout can now properly create and remove symbolic links to directories |
| 119 | + on Windows. |
| 120 | + |
| 121 | +* Stash no longer recomputes trees when committing a worktree, for |
| 122 | + improved performance. |
| 123 | + |
| 124 | +* Repository templates can now include a `HEAD` file to default the |
| 125 | + initial default branch. |
| 126 | + |
| 127 | +* Some configuration structures, enums and values have been renamed: |
| 128 | + `git_cvar_map` is now `git_configmap`, `git_cvar_t` is now |
| 129 | + `git_configmap_t`, `GIT_CVAR_FALSE` is now `GIT_CONFIGMAP_FALSE`, |
| 130 | + `GIT_CVAR_TRUE` is now `GIT_CONFIGMAP_TRUE`, `GIT_CVAR_INT32` is now |
| 131 | + `GIT_CONFIGMAP_INT32`, and `GIT_CVAR_STRING` is now `GIT_CONFIGMAP_STRING`. |
| 132 | + The former names are deprecated. |
| 133 | + |
| 134 | +* Repositories can now be created at the root of a Windows drive. |
| 135 | + |
| 136 | +* Configuration lookups are now more efficiently cached. |
| 137 | + |
| 138 | +* `git_commit_create_with_signature` now supports a `NULL` signature, |
| 139 | + which will create a commit without adding a signature. |
| 140 | + |
| 141 | +* When a repository lacks an `info` "common directory", we will no |
| 142 | + longer erroneously return `GIT_ENOTFOUND` for all attribute lookups. |
| 143 | + |
| 144 | +* Several attribute macros have been renamed: `GIT_ATTR_TRUE` is now |
| 145 | + `GIT_ATTR_IS_TRUE`, `GIT_ATTR_FALSE` is now `GIT_ATTR_IS_FALSE`, |
| 146 | + `GIT_ATTR_UNSPECIFIED` is now `GIT_ATTR_IS_UNSPECIFIED`. The |
| 147 | + attribute enum `git_attr_t` is now `git_attr_value_t` and its |
| 148 | + values have been renamed: `GIT_ATTR_UNSPECIFIED_T` is now |
| 149 | + `GIT_ATTR_VALUE_UNSPECIFIED`, `GIT_ATTR_TRUE_T` is now |
| 150 | + `GIT_ATTR_VALUE_TRUE`, `GIT_ATTR_FALSE_T` is now `GIT_ATTR_VALUE_FALSE`, |
| 151 | + and `GIT_ATTR_VALUE_T` is now `GIT_ATTR_VALUE_STRING`. The |
| 152 | + former names are deprecated. |
| 153 | + |
| 154 | +* `git_object__size` is now `git_object_size`. The former name is |
| 155 | + deprecated. |
| 156 | + |
| 157 | +* `git_tag_create_frombuffer` is now `git_tag_create_from_buffer`. The |
| 158 | + former name is deprecated. |
| 159 | + |
| 160 | +* Several blob creation functions have been renamed: |
| 161 | + `git_blob_create_frombuffer` is now named `git_blob_create_from_buffer`, |
| 162 | + `git_blob_create_fromdisk` is now named `git_blob_create_from_disk`, |
| 163 | + `git_blob_create_fromworkdir` is now named `git_blob_create_from_workdir`, |
| 164 | + `git_blob_create_fromstream` is now named `git_blob_create_from_stream`, |
| 165 | + and `git_blob_create_fromstream_commit` is now named |
| 166 | + `git_blob_create_from_stream_commit`. The former names are deprecated. |
| 167 | + |
| 168 | +* The function `git_oid_iszero` is now named `git_oid_is_zero`. The |
| 169 | + former name is deprecated. |
| 170 | + |
| 171 | +* Pattern matching is now done using `wildmatch` instead of `fnmatch` |
| 172 | + for compatibility with git. |
| 173 | + |
| 174 | +* The option initialization functions suffixed by `init_options` are now |
| 175 | + suffixed with `options_init`. (For example, `git_checkout_init_options` |
| 176 | + is now `git_checkout_options_init`.) The former names are deprecated. |
| 177 | + |
| 178 | +* NTLM2 authentication is now supported on non-Windows platforms. |
| 179 | + |
| 180 | +* The `git_cred_sign_callback` callback is now named `git_cred_sign_cb`. |
| 181 | + The `git_cred_ssh_interactive_callback` callback is now named |
| 182 | + `git_cred_ssh_interactive_cb`. |
| 183 | + |
| 184 | +* Ignore files now: |
| 185 | + |
| 186 | + * honor escaped trailing whitespace. |
| 187 | + * do not incorrectly negate sibling paths of a negated pattern. |
| 188 | + * honor rules that stop ignoring files after a wildcard |
| 189 | + |
| 190 | +* Attribute files now: |
| 191 | + |
| 192 | + * honor leading and trailing whitespace. |
| 193 | + * treat paths beginning with `\` as absolute only on Windows. |
| 194 | + * properly handle escaped characters. |
| 195 | + * stop reading macros defined in subdirectories |
| 196 | + |
| 197 | +* The C locale is now correctly used when parsing regular expressions. |
| 198 | + |
| 199 | +* The system PCRE2 or PCRE regular expression libraries are now used |
| 200 | + when `regcomp_l` is not available on the system. If none of these |
| 201 | + are available on the system, an included version of PCRE is used. |
| 202 | + |
| 203 | +* Wildcards in reference specifications are now supported beyond simply |
| 204 | + a bare wildcard (`*`) for compatibility with git. |
| 205 | + |
| 206 | +* When `git_ignore_path_is_ignored` is provided a path with a trailing |
| 207 | + slash (eg, `dir/`), it will now treat it as a directory for the |
| 208 | + purposes of ignore matching. |
| 209 | + |
| 210 | +* Patches that add or remove a file with a space in the path can now |
| 211 | + be correctly parsed. |
| 212 | + |
| 213 | +* The `git_remote_completion_type` type is now `git_remote_completion_t`. |
| 214 | + The former name is deprecated. |
| 215 | + |
| 216 | +* The `git_odb_backend_malloc` is now `git_odb_backend_data_alloc`. The |
| 217 | + former name is deprecated. |
| 218 | + |
| 219 | +* The `git_transfer_progress_cb` callback is now `git_indexer_progress_cb` |
| 220 | + and the `git_transfer_progress` structure is now `git_indexer_progress`. |
| 221 | + The former names are deprecated. |
| 222 | + |
| 223 | +* The example projects are now contained in a single `lg2` executable |
| 224 | + for ease of use. |
| 225 | + |
| 226 | +* libgit2 now correctly handles more URLs, such as |
| 227 | + `http://example.com:/repo.git` (colon but no port), |
| 228 | + `http://example.com` (no path), |
| 229 | + and `http://example.com:8080/` (path is /, nonstandard port). |
| 230 | + |
| 231 | +* A carefully constructed commit object with a very large number |
| 232 | + of parents may lead to potential out-of-bounds writes or |
| 233 | + potential denial of service. |
| 234 | + |
| 235 | +* The ProgramData configuration file is always read for compatibility |
| 236 | + with Git for Windows and Portable Git installations. The ProgramData |
| 237 | + location is not necessarily writable only by administrators, so we |
| 238 | + now ensure that the configuration file is owned by the administrator |
| 239 | + or the current user. |
| 240 | + |
| 241 | +### API additions |
| 242 | + |
| 243 | +* The SSH host key now supports SHA-256 when `GIT_CERT_SSH_SHA256` is set. |
| 244 | + |
| 245 | +* The diff format option `GIT_DIFF_FORMAT_PATCH_ID` can now be used to |
| 246 | + emit an output like `git patch-id`. |
| 247 | + |
| 248 | +* The `git_apply_options_init` function will initialize a |
| 249 | + `git_apply_options` structure. |
| 250 | + |
| 251 | +* The remote callbacks structure adds a `git_url_resolve_cb` callback |
| 252 | + that is invoked when connecting to a server, so that applications |
| 253 | + may edit or replace the URL before connection. |
| 254 | + |
| 255 | +* The information about the original `HEAD` in a rebase operation is |
| 256 | + available with `git_rebase_orig_head_name`. Its ID is available with |
| 257 | + `git_rebase_orig_head_id`. The `onto` reference name is available with |
| 258 | + `git_rebase_onto_name` and its ID is available with `git_rebase_onto_id`. |
| 259 | + |
| 260 | +* ODB backends can now free backend data when an error occurs during its |
| 261 | + backend data creation using `git_odb_backend_data_free`. |
| 262 | + |
| 263 | +* Options may be specified to `git_repository_foreach_head` to control |
| 264 | + its behavior: `GIT_REPOSITORY_FOREACH_HEAD_SKIP_REPO` will not skip |
| 265 | + the main repository's HEAD reference, while |
| 266 | + `GIT_REPOSITORY_FOREACH_HEAD_SKIP_WORKTREES` will now skip the |
| 267 | + worktree HEAD references. |
| 268 | + |
| 269 | +* The `GIT_OPT_DISABLE_PACK_KEEP_FILE_CHECKS` option can be specified to |
| 270 | + `git_libgit2_opts()` to avoid looking for `.keep` files that correspond |
| 271 | + to packfiles. This setting can improve performance when packfiles are |
| 272 | + stored on high-latency filesystems like network filesystems. |
| 273 | + |
| 274 | +* Blobs can now be filtered with `git_blob_filter`, which allows for |
| 275 | + options to be set with `git_blob_filter_options`, including |
| 276 | + `GIT_FILTER_NO_SYSTEM_ATTRIBUTES` to disable filtering with system-level |
| 277 | + attributes in `/etc/gitattributes` and `GIT_ATTR_CHECK_INCLUDE_HEAD` to |
| 278 | + enable filtering with `.gitattributes` files in the HEAD revision. |
| 279 | + |
| 280 | +### API removals |
| 281 | + |
| 282 | +* The unused `git_headlist_cb` function declaration was removed. |
| 283 | + |
| 284 | +* The unused `git_time_monotonic` API is removed. |
| 285 | + |
| 286 | +* The erroneously exported `inttypes.h` header was removed. |
3 | 287 |
|
4 | 288 | # Security Fixes |
5 | 289 |
|
@@ -82,22 +366,62 @@ v0.28 + 1 |
82 | 366 | "CollisionDetection". If you were using `SHA1_BACKEND` previously, you'll |
83 | 367 | need to check the value you've used, or switch to the autodetection. |
84 | 368 |
|
85 | | -### Changes or improvements |
86 | | - |
87 | | -* libgit2 now correctly handles more URLs, such as |
88 | | - `http://example.com:/repo.git` (colon but no port), |
89 | | - `http://example.com` (no path), |
90 | | - and `http://example.com:8080/` (path is /, nonstandard port). |
91 | | - |
92 | | -* A carefully constructed commit object with a very large number |
93 | | - of parents may lead to potential out-of-bounds writes or |
94 | | - potential denial of service. |
95 | | - |
96 | | -* The ProgramData configuration file is always read for compatibility |
97 | | - with Git for Windows and Portable Git installations. The ProgramData |
98 | | - location is not necessarily writable only by administrators, so we |
99 | | - now ensure that the configuration file is owned by the administrator |
100 | | - or the current user. |
| 369 | +### Authors |
| 370 | + |
| 371 | +The following individuals provided changes that were included in this |
| 372 | +release: |
| 373 | + |
| 374 | +* Aaron Patterson |
| 375 | +* Alberto Fanjul |
| 376 | +* Anders Borum |
| 377 | +* Augie Fackler |
| 378 | +* Augustin Fabre |
| 379 | +* Ayush Shridhar |
| 380 | +* brian m. carlson |
| 381 | +* buddyspike |
| 382 | +* Carlos Martín Nieto |
| 383 | +* cheese1 |
| 384 | +* Dan Skorupski |
| 385 | +* Daniel Cohen Gindi |
| 386 | +* Dave Lee |
| 387 | +* David Brooks |
| 388 | +* David Turner |
| 389 | +* Denis Laxalde |
| 390 | +* Dhruva Krishnamurthy |
| 391 | +* Dominik Ritter |
| 392 | +* Drew DeVault |
| 393 | +* Edward Thomson |
| 394 | +* Eric Huss |
| 395 | +* Erik Aigner |
| 396 | +* Etienne Samson |
| 397 | +* Gregory Herrero |
| 398 | +* Heiko Voigt |
| 399 | +* Ian Hattendorf |
| 400 | +* Jacques Germishuys |
| 401 | +* Janardhan Pulivarthi |
| 402 | +* Jason Haslam |
| 403 | +* Johannes Schindelin |
| 404 | +* Jordan Wallet |
| 405 | +* Josh Bleecher Snyder |
| 406 | +* kas |
| 407 | +* kdj0c |
| 408 | +* Laurence McGlashan |
| 409 | +* lhchavez |
| 410 | +* Lukas Berk |
| 411 | +* Max Kostyukevich |
| 412 | +* Patrick Steinhardt |
| 413 | +* pcpthm |
| 414 | +* Remy Suen |
| 415 | +* Robert Coup |
| 416 | +* romkatv |
| 417 | +* Scott Furry |
| 418 | +* Sebastian Henke |
| 419 | +* Stefan Widgren |
| 420 | +* Steve King Jr |
| 421 | +* Sven Strickroth |
| 422 | +* Tobias Nießen |
| 423 | +* Tyler Ang-Wanek |
| 424 | +* Tyler Wanek |
101 | 425 |
|
102 | 426 | v0.28 |
103 | 427 | ----- |
|
0 commit comments