changelog: document changes since 0.27
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119
diff --git a/docs/changelog.md b/docs/changelog.md
index bc31a86..3310d3c 100644
--- a/docs/changelog.md
+++ b/docs/changelog.md
@@ -3,16 +3,79 @@ v0.27 + 1
### Changes or improvements
+* HTTP proxy support is now builtin; libcurl is no longer used to support
+ proxies and is removed as a dependency.
+
+* Certificate and credential callbacks can now return `GIT_PASSTHROUGH`
+ to decline to act; libgit2 will behave as if there was no callback set
+ in the first place.
+
* The line-ending filtering logic - when checking out files - has been
updated to match newer git (>= git 2.9) for proper interoperability.
+* Symbolic links are now supported on Windows when `core.symlinks` is set
+ to `true`.
+
* Submodules with names which attempt to perform path traversal now have their
configuration ignored. Such names were blindly appended to the
`$GIT_DIR/modules` and a malicious name could lead to an attacker writing to
an arbitrary location. This matches git's handling of CVE-2018-11235.
+* Object validation is now performed during tree creation in the
+ `git_index_write_tree_to` API.
+
+* Configuration variable may now be specified on the same line as a section
+ header; previously this was erroneously a parser error.
+
+* When an HTTP server supports both NTLM and Negotiate authentication
+ mechanisms, we would previously fail to authenticate with any mechanism.
+
+* The `GIT_OPT_SET_PACK_MAX_OBJECTS` option can now set the maximum
+ number of objects allowed in a packfile being downloaded; this can help
+ limit the maximum memory used when fetching from an untrusted remote.
+
+* Line numbers in diffs loaded from patch files were not being populated;
+ they are now included in the results..
+
+* The repository's index is reloaded from disk at the beginning of
+ `git_merge` operations to ensure that it is up-to-date.
+
+* Mailmap handling APIs have been introduced, and the new commit APIs
+ `git_commit_committer_with_mailmap` and `git_commit_author_with_mailmap`
+ will use the mailmap to resolve the committer and author information.
+ In addition, blame will use the mailmap given when the
+ `GIT_BLAME_USE_MAILMAP` option.
+
+* Ignore handling for files in ignored folders would be ignored.
+
+* Worktrees can now be backed by bare repositories.
+
+* Trailing spaces are supported in `.gitignore` files, these spaces were
+ previously (and erroneously) treated as part of the pattern.
+
+* The library can now be built with mbedTLS support for HTTPS.
+
+* The diff status character 'T' will now be presented by the
+ `git_diff_status_char` API for diff entries that change type.
+
+* Revision walks previously would sometimes include commits that should
+ have been ignored; this is corrected.
+
+* Revision walks are now more efficient when the output is unsorted;
+ we now avoid walking all the way to the beginning of history unnecessarily.
+
### API additions
+* The index may now be iterated atomically using `git_index_iterator`.
+
+* Remote objects can now be created with extended options using the
+ `git_remote_create_with_opts` API.
+
+* Diff objects can now be applied as changes to the working directory,
+ index or both, emulating the `git apply` command. Additionally,
+ `git_apply_to_tree` can apply those changes to a tree object as a
+ fully in-memory operation.
+
* You can now swap out memory allocators via the
`GIT_OPT_SET_ALLOCATOR` option with `git_libgit2_opts()`.
@@ -28,10 +91,34 @@ v0.27 + 1
examine your code to ensure that you are not relying on the current
behavior that implicitly removes staged changes.
+* Reference specifications can be parsed from an arbitrary string with
+ the `git_refspec_parse` API.
+
+* You can now get the name and path of worktrees using the
+ `git_worktree_name` and `git_worktree_path` APIs, respectively.
+
+* The `ref` field has been added to `git_worktree_add_options` to enable
+ the creation of a worktree from a pre-existing branch.
+
### API removals
### Breaking API changes
+* The `git_buf_free` API is deprecated; it has been renamed to
+ `git_buf_dispose` for consistency. The `git_buf_free` API will be
+ removed in a future release.
+
+* The `git_otype` enumeration and its members are deprecated and have
+ been renamed for consistency. The `GIT_OBJ_` enumeration values are
+ now prefixed with `GIT_OBJECT_`. The `git_otype` enumeration will
+ be removed in a future release.
+
+* Several index-related APIs have been renamed for consistency. The
+ `GIT_IDXENTRY_` enumeration values and macros have been renamed to
+ be prefixed with `GIT_INDEX_ENTRY_`. The `GIT_INDEXCAP` enumeration
+ values are now prefixed with `GIT_INDEX_CAPABILITY_`. The old
+ enumerations and macros will be removed in a future release.
+
* The default checkout strategy changed from `DRY_RUN` to `SAFE` (#4531).
* Adding a symlink as .gitmodules into the index from the workdir or checking