| 1 | Git 2.22.1 Release Notes |
| 2 | ======================== |
| 3 | |
| 4 | Fixes since v2.22 |
| 5 | ----------------- |
| 6 | |
| 7 | * A relative pathname given to "git init --template=<path> <repo>" |
| 8 | ought to be relative to the directory "git init" gets invoked in, |
| 9 | but it instead was made relative to the repository, which has been |
| 10 | corrected. |
| 11 | |
| 12 | * "git worktree add" used to fail when another worktree connected to |
| 13 | the same repository was corrupt, which has been corrected. |
| 14 | |
| 15 | * The ownership rule for the file descriptor to fast-import remote |
| 16 | backend was mixed up, leading to unrelated file descriptor getting |
| 17 | closed, which has been fixed. |
| 18 | |
| 19 | * "git update-server-info" used to leave stale packfiles in its |
| 20 | output, which has been corrected. |
| 21 | |
| 22 | * The server side support for "git fetch" used to show incorrect |
| 23 | value for the HEAD symbolic ref when the namespace feature is in |
| 24 | use, which has been corrected. |
| 25 | |
| 26 | * "git am -i --resolved" segfaulted after trying to see a commit as |
| 27 | if it were a tree, which has been corrected. |
| 28 | |
| 29 | * "git bundle verify" needs to see if prerequisite objects exist in |
| 30 | the receiving repository, but the command did not check if we are |
| 31 | in a repository upfront, which has been corrected. |
| 32 | |
| 33 | * "git merge --squash" is designed to update the working tree and the |
| 34 | index without creating the commit, and this cannot be countermanded |
| 35 | by adding the "--commit" option; the command now refuses to work |
| 36 | when both options are given. |
| 37 | |
| 38 | * The data collected by fsmonitor was not properly written back to |
| 39 | the on-disk index file, breaking t7519 tests occasionally, which |
| 40 | has been corrected. |
| 41 | |
| 42 | * Update to Unicode 12.1 width table. |
| 43 | |
| 44 | * The command line to invoke a "git cat-file" command from inside |
| 45 | "git p4" was not properly quoted to protect a caret and running a |
| 46 | broken command on Windows, which has been corrected. |
| 47 | |
| 48 | * "git request-pull" learned to warn when the ref we ask them to pull |
| 49 | from in the local repository and in the published repository are |
| 50 | different. |
| 51 | |
| 52 | * When creating a partial clone, the object filtering criteria is |
| 53 | recorded for the origin of the clone, but this incorrectly used a |
| 54 | hardcoded name "origin" to name that remote; it has been corrected |
| 55 | to honor the "--origin <name>" option. |
| 56 | |
| 57 | * "git fetch" into a lazy clone forgot to fetch base objects that are |
| 58 | necessary to complete delta in a thin packfile, which has been |
| 59 | corrected. |
| 60 | |
| 61 | * The filter_data used in the list-objects-filter (which manages a |
| 62 | lazily sparse clone repository) did not use the dynamic array API |
| 63 | correctly---'nr' is supposed to point at one past the last element |
| 64 | of the array in use. This has been corrected. |
| 65 | |
| 66 | * The description about slashes in gitignore patterns (used to |
| 67 | indicate things like "anchored to this level only" and "only |
| 68 | matches directories") has been revamped. |
| 69 | |
| 70 | * The URL decoding code has been updated to avoid going past the end |
| 71 | of the string while parsing %-<hex>-<hex> sequence. |
| 72 | |
| 73 | * The list of for-each like macros used by clang-format has been |
| 74 | updated. |
| 75 | |
| 76 | * "git push --atomic" that goes over the transport-helper (namely, |
| 77 | the smart http transport) failed to prevent refs to be pushed when |
| 78 | it can locally tell that one of the ref update will fail without |
| 79 | having to consult the other end, which has been corrected. |
| 80 | |
| 81 | * "git clean" silently skipped a path when it cannot lstat() it; now |
| 82 | it gives a warning. |
| 83 | |
| 84 | * A codepath that reads from GPG for signed object verification read |
| 85 | past the end of allocated buffer, which has been fixed. |
| 86 | |
| 87 | * "git rm" to resolve a conflicted path leaked an internal message |
| 88 | "needs merge" before actually removing the path, which was |
| 89 | confusing. This has been corrected. |
| 90 | |
| 91 | * The "git clone" documentation refers to command line options in its |
| 92 | description in the short form; they have been replaced with long |
| 93 | forms to make them more recognisable. |
| 94 | |
| 95 | * The configuration variable rebase.rescheduleFailedExec should be |
| 96 | effective only while running an interactive rebase and should not |
| 97 | affect anything when running a non-interactive one, which was not |
| 98 | the case. This has been corrected. |
| 99 | |
| 100 | * "git submodule foreach" did not protect command line options passed |
| 101 | to the command to be run in each submodule correctly, when the |
| 102 | "--recursive" option was in use. |
| 103 | |
| 104 | * Use "Erase in Line" CSI sequence that is already used in the editor |
| 105 | support to clear cruft in the progress output. |
| 106 | |
| 107 | * The codepath to compute delta islands used to spew progress output |
| 108 | without giving the callers any way to squelch it, which has been |
| 109 | fixed. |
| 110 | |
| 111 | * The code to parse scaled numbers out of configuration files has |
| 112 | been made more robust and also easier to follow. |
| 113 | |
| 114 | * An incorrect list of options was cached after command line |
| 115 | completion failed (e.g. trying to complete a command that requires |
| 116 | a repository outside one), which has been corrected. |
| 117 | |
| 118 | * "git rebase --abort" used to leave refs/rewritten/ when concluding |
| 119 | "git rebase -r", which has been corrected. |
| 120 | |
| 121 | * "git stash show 23" used to work, but no more after getting |
| 122 | rewritten in C; this regression has been corrected. |
| 123 | |
| 124 | * "git interpret-trailers" always treated '#' as the comment |
| 125 | character, regardless of core.commentChar setting, which has been |
| 126 | corrected. |
| 127 | |
| 128 | * Code clean-up to avoid signed integer overlaps during binary search. |
| 129 | |
| 130 | * "git checkout -p" needs to selectively apply a patch in reverse, |
| 131 | which did not work well. |
| 132 | |
| 133 | * The commit-graph file is now part of the "files that the runtime |
| 134 | may keep open file descriptors on, all of which would need to be |
| 135 | closed when done with the object store", and the file descriptor to |
| 136 | an existing commit-graph file now is closed before "gc" finalizes a |
| 137 | new instance to replace it. |
| 138 | |
| 139 | * Code restructuring during 2.20 period broke fetching tags via |
| 140 | "import" based transports. |
| 141 | |
| 142 | * We have been trying out a few language features outside c89; the |
| 143 | coding guidelines document did not talk about them and instead had |
| 144 | a blanket ban against them. |
| 145 | |
| 146 | * The internal diff machinery can be made to read out of bounds while |
| 147 | looking for --funcion-context line in a corner case, which has been |
| 148 | corrected. |
| 149 | |
| 150 | Also contains various documentation updates, code clean-ups and minor fixups. |