| Git 2.30 Release Notes |
| ====================== |
| |
| Updates since v2.29 |
| ------------------- |
| |
| UI, Workflows & Features |
| |
| * Userdiff for PHP update. |
| |
| * Userdiff for Rust update. |
| |
| * Userdiff for CSS update. |
| |
| * The command line completion script (in contrib/) learned that "git |
| stash show" takes the options "git diff" takes. |
| |
| * "git worktree list" now shows if each worktree is locked. This |
| possibly may open us to show other kinds of states in the future. |
| |
| * "git maintenance", an extended big brother of "git gc", continues |
| to evolve. |
| |
| * "git push --force-with-lease[=<ref>]" can easily be misused to lose |
| commits unless the user takes good care of their own "git fetch". |
| A new option "--force-if-includes" attempts to ensure that what is |
| being force-pushed was created after examining the commit at the |
| tip of the remote ref that is about to be force-replaced. |
| |
| * "git clone" learned clone.defaultremotename configuration variable |
| to customize what nickname to use to call the remote the repository |
| was cloned from. |
| |
| * "git checkout" learned to use checkout.guess configuration variable |
| and enable/disable its "--[no-]guess" option accordingly. |
| |
| * "git resurrect" script (in contrib/) learned that the object names |
| may be longer than 40-hex depending on the hash function in use. |
| |
| * "git diff A...B" learned "git diff --merge-base A B", which is a |
| longer short-hand to say the same thing. |
| |
| * A sample 'push-to-checkout' hook, that performs the same as |
| what the built-in default action does, has been added. |
| |
| * "git diff" family of commands learned the "-I<regex>" option to |
| ignore hunks whose changed lines all match the given pattern. |
| |
| * The userdiff pattern learned to identify the function definition in |
| POSIX shells and bash. |
| |
| * "git checkout-index" did not consistently signal an error with its |
| exit status, but now it does. |
| |
| * A commit and tag object may have CR at the end of each and |
| every line (you can create such an object with hash-object or |
| using --cleanup=verbatim to decline the default clean-up |
| action), but it would make it impossible to have a blank line |
| to separate the title from the body of the message. We are now |
| more lenient and accept a line with lone CR on it as a blank line, |
| too. |
| |
| * Exit codes from "git remote add" etc. were not usable by scripted |
| callers, but now they are. |
| |
| * Zsh autocompletion (in contrib/) update. |
| |
| |
| Performance, Internal Implementation, Development Support etc. |
| |
| * Use "git archive" more to produce the release tarball. |
| |
| * GitHub Actions automated test improvement to skip tests on a tree |
| identical to what has already been tested. |
| |
| * Test-coverage for running commit-graph task "git maintenance" has |
| been extended. |
| |
| * Our test scripts can be told to run only individual pieces while |
| skipping others with the "--run=..." option; they were taught to |
| take a substring of test title, in addition to numbers, to name the |
| test pieces to run. |
| |
| * Adjust tests so that they won't scream when the default initial |
| branch name is changed to 'main'. |
| |
| * Rewriting "git bisect" in C continues. |
| |
| * More preliminary tests have been added to document desired outcome |
| of various "directory rename" situations. |
| |
| * Micro clean-up of a couple of test scripts. |
| |
| * "git diff" and other commands that share the same machinery to |
| compare with working tree files have been taught to take advantage |
| of the fsmonitor data when available. |
| |
| * The code to detect premature EOF in the sideband demultiplexer has |
| been cleaned up. |
| |
| * Test scripts are being prepared to transition of the default branch |
| name to 'main'. |
| |
| |
| |
| Fixes since v2.29 |
| ----------------- |
| |
| * In 2.29, "--committer-date-is-author-date" option of "rebase" and |
| "am" subcommands lost the e-mail address by mistake, which has been |
| corrected. |
| (merge 5f35edd9d7 jk/committer-date-is-author-date-fix later to maint). |
| |
| * "git checkout -p A...B [-- <path>]" did not work, even though the |
| same command without "-p" correctly used the merge-base between |
| commits A and B. |
| (merge 35166b1fb5 dl/checkout-p-merge-base later to maint). |
| |
| * The side-band status report can be sent at the same time as the |
| primary payload multiplexed, but the demultiplexer on the receiving |
| end incorrectly split a single status report into two, which has |
| been corrected. |
| (merge 712b0377db js/avoid-split-sideband-message later to maint). |
| |
| * "git fast-import" wasted a lot of memory when many marks were in use. |
| (merge 3f018ec716 jk/fast-import-marks-alloc-fix later to maint). |
| |
| * A test helper "test_cmp A B" was taught to diagnose missing files A |
| or B as a bug in test, but some tests legitimately wanted to notice |
| a failure to even create file B as an error, in addition to leaving |
| the expected result in it, and were misdiagnosed as a bug. This |
| has been corrected. |
| (merge 262d5ad5a5 es/test-cmp-typocatcher later to maint). |
| |
| * When "git commit-graph" detects the same commit recorded more than |
| once while it is merging the layers, it used to die. The code now |
| ignores all but one of them and continues. |
| (merge 85102ac71b ds/commit-graph-merging-fix later to maint). |
| |
| * The meaning of a Signed-off-by trailer can vary from project to |
| project; this and also what it means to this project has been |
| clarified in the documentation. |
| (merge 3abd4a67d9 bk/sob-dco later to maint). |
| |
| * "git credential' didn't honor the core.askPass configuration |
| variable (among other things), which has been corrected. |
| (merge 567ad2c0f9 tk/credential-config later to maint). |
| |
| * Dev support to catch a tentative definition of a variable in our C |
| code as an error. |
| (merge 5539183622 jk/no-common later to maint). |
| |
| * "git rebase --rebase-merges" did not correctly pass --gpg-sign |
| command line option to underlying "git merge" when replaying a merge |
| using non-default merge strategy or when replaying an octopus merge |
| (because replaying a two-head merge with the default strategy was |
| done in a separate codepath, the problem did not trigger for most |
| users), which has been corrected. |
| (merge 43ad4f2eca sc/sequencer-gpg-octopus later to maint). |
| |
| * "git apply -R" did not handle patches that touch the same path |
| twice correctly, which has been corrected. This is most relevant |
| in a patch that changes a path from a regular file to a symbolic |
| link (and vice versa). |
| (merge b0f266de11 jt/apply-reverse-twice later to maint). |
| |
| * A recent oid->hash conversion missed one spot, breaking "git svn". |
| (merge 03bb366de4 bc/svn-hash-oid-fix later to maint). |
| |
| * The documentation on the "--abbrev=<n>" option did not say the |
| output may be longer than "<n>" hexdigits, which has been |
| clarified. |
| (merge cda34e0d0c jc/abbrev-doc later to maint). |
| |
| * "git p4" now honors init.defaultBranch configuration. |
| (merge 1b09d1917f js/p4-default-branch later to maint). |
| |
| * Recently the format of an internal state file "rebase -i" uses has |
| been tightened up for consistency, which would hurt those who start |
| "rebase -i" with old git and then continue with new git. Loosen |
| the reader side a bit (which we may want to tighten again in a year |
| or so). |
| (merge c779386182 jc/sequencer-stopped-sha-simplify later to maint). |
| |
| * Other code cleanup, docfix, build fix, etc. |
| (merge 3e0a5dc9af cc/doc-filter-branch-typofix later to maint). |
| (merge 32c83afc2c cw/ci-ghwf-check-ws-errors later to maint). |
| (merge 5eb2ed691b rs/tighten-callers-of-deref-tag later to maint). |
| (merge 6db29ab213 jk/fast-import-marks-cleanup later to maint). |
| (merge e5cf6d3df4 nk/dir-c-comment-update later to maint). |
| (merge 5710dcce74 jk/report-fn-typedef later to maint). |
| (merge 9a82db1056 en/sequencer-rollback-lock-cleanup later to maint). |
| (merge 4e1bee9a99 js/t7006-cleanup later to maint). |
| (merge f5bcde6c58 es/tutorial-mention-asciidoc-early later to maint). |
| (merge 714d491af0 so/format-patch-doc-on-default-diff-format later to maint). |
| (merge 0795df4b9b rs/clear-commit-marks-in-repo later to maint). |
| (merge 9542d56379 sd/prompt-local-variable later to maint). |
| (merge 06d43fad18 rs/pack-write-hashwrite-simplify later to maint). |
| (merge b7e20b4373 mc/typofix later to maint). |
| (merge f6bcd9a8a4 js/test-whitespace-fixes later to maint). |
| (merge 53b67a801b js/test-file-size later to maint). |