| Git v2.46 Release Notes |
| ======================= |
| |
| Backward Compatibility Notes |
| |
| (None at this moment) |
| |
| UI, Workflows & Features |
| |
| * The "--rfc" option of "git format-patch" learned to take an |
| optional string value to be used in place of "RFC" to tweak the |
| "[PATCH]" on the subject header. |
| |
| * The credential helper protocol, together with the HTTP layer, have |
| been enhanced to support authentication schemes different from |
| username & password pair, like Bearer and NTLM. |
| |
| * Command line completion script (in contrib/) learned to complete |
| "git symbolic-ref" a bit better (you need to enable plumbing |
| commands to be completed with GIT_COMPLETION_SHOW_ALL_COMMANDS). |
| |
| * When the user responds to a prompt given by "git add -p" with an |
| unsupported command, list of available commands were given, which |
| was too much if the user knew what they wanted to type but merely |
| made a typo. Now the user gets a much shorter error message. |
| |
| * The color parsing code learned to handle 12-bit RGB colors, spelled |
| as "#RGB" (in addition to "#RRGGBB" that is already supported). |
| |
| * The operation mode options (like "--get") the "git config" command |
| uses have been deprecated and replaced with subcommands (like "git |
| config get"). |
| |
| * "git tag" learned the "--trailer" option to futz with the trailers |
| in the same way as "git commit" does. |
| |
| * A new global "--no-advice" option can be used to disable all advice |
| messages, which is meant to be used only in scripts. |
| |
| * Updates to symbolic refs can now be made as a part of ref |
| transaction. |
| |
| * The trailer API has been reshuffled a bit. |
| |
| * Terminology to call various ref-like things are getting |
| straightened out. |
| |
| * The command line completion script (in contrib/) has been adjusted |
| to the recent update to "git config" that adopted subcommand based |
| UI. |
| |
| * The knobs to tweak how reftable files are written have been made |
| available as configuration variables. |
| |
| * When "git push" notices that the commit at the tip of the ref on |
| the other side it is about to overwrite does not exist locally, it |
| used to first try fetching it if the local repository is a partial |
| clone. The command has been taught not to do so and immediately |
| fail instead. |
| |
| * The promisor.quiet configuration knob can be set to true to make |
| lazy fetching from promisor remotes silent. |
| |
| * The inter/range-diff output has been moved to the end of the patch |
| when format-patch adds it to a single patch, instead of writing it |
| before the patch text, to be consistent with what is done for a |
| cover letter for a multi-patch series. |
| |
| * A new command has been added to migrate a repository that uses the |
| files backend for its ref storage to use the reftable backend, with |
| limitations. |
| |
| * "git diff --exit-code --ext-diff" learned to take the exit status |
| of the external diff driver into account when deciding the exit |
| status of the overall "git diff" invocation when configured to do |
| so. |
| |
| * "git update-ref --stdin" learned to handle transactional updates of |
| symbolic-refs. |
| |
| * "git format-patch --interdiff" for multi-patch series learned to |
| turn on cover letters automatically (unless told never to enable |
| cover letter with "--no-cover-letter" and such). |
| |
| * The "--heads" option of "ls-remote" and "show-ref" has been been |
| deprecated; "--branches" replaces "--heads". |
| |
| * For over a year, setting add.interactive.useBuiltin configuration |
| variable did nothing but giving a "this does not do anything" |
| warning. The warning has been removed. |
| |
| |
| Performance, Internal Implementation, Development Support etc. |
| |
| * Advertise "git contacts", a tool for newcomers to find people to |
| ask review for their patches, a bit more in our developer |
| documentation. |
| |
| * In addition to building the objects needed, try to link the objects |
| that are used in fuzzer tests, to make sure at least they build |
| without bitrot, in Linux CI runs. |
| |
| * Code to write out reftable has seen some optimization and |
| simplification. |
| |
| * Tests to ensure interoperability between reftable written by jgit |
| and our code have been added and enabled in CI. |
| |
| * The singleton index_state instance "the_index" has been eliminated |
| by always instantiating "the_repository" and replacing references |
| to "the_index" with references to its .index member. |
| |
| * Git-GUI has a new maintainer, Johannes Sixt. |
| |
| * The "test-tool" has been taught to run testsuite tests in parallel, |
| bypassing the need to use the "prove" tool. |
| |
| * The "whitespace check" task that was enabled for GitHub Actions CI |
| has been ported to GitLab CI. |
| |
| * The refs API lost functions that implicitly assumes to work on the |
| primary ref_store by forcing the callers to pass a ref_store as an |
| argument. |
| |
| * Code clean-up to reduce inter-function communication inside |
| builtin/config.c done via the use of global variables. |
| |
| * The pack bitmap code saw some clean-up to prepare for a follow-up topic. |
| |
| * Preliminary code clean-up for "git send-email". |
| |
| * The default "creation-factor" used by "git format-patch" has been |
| raised to make it more aggressively find matching commits. |
| |
| * Before discovering the repository details, We used to assume SHA-1 |
| as the "default" hash function, which has been corrected. Hopefully |
| this will smoke out codepaths that rely on such an unwarranted |
| assumptions. |
| |
| * The project decision making policy has been documented. |
| |
| * The strcmp-offset tests have been rewritten using the unit test |
| framework. |
| |
| * "git add -p" learned to complain when an answer with more than one |
| letter is given to a prompt that expects a single letter answer. |
| |
| * The alias-expanded command lines are logged to the trace output. |
| |
| * A new test was added to ensure git commands that are designed to |
| run outside repositories do work. |
| |
| * Basic unit tests for reftable have been reimplemented under the |
| unit test framework. |
| |
| * A pair of test helpers that essentially are unit tests on hash |
| algorithms have been rewritten using the unit-tests framework. |
| |
| * A test helper that essentially is unit tests on the "decorate" |
| logic has been rewritten using the unit-tests framework. |
| |
| * Many memory leaks in the sparse-checkout code paths have been |
| plugged. |
| |
| * "make check-docs" noticed problems and reported to its output but |
| failed to signal its findings with its exit status, which has been |
| corrected. |
| |
| * Building with "-Werror -Wwrite-strings" is now supported. |
| |
| * To help developers, the build procedure now allows builders to use |
| CFLAGS_APPEND to specify additional CFLAGS. |
| |
| * "oidtree" tests were rewritten to use the unit test framework. |
| |
| * The structure of the document that records longer-term project |
| decisions to deprecate/remove/update various behaviour has been |
| outlined. |
| |
| * The pseudo-merge reachability bitmap to help more efficient storage |
| of the reachability bitmap in a repository with too many refs has |
| been added. |
| |
| |
| Fixes since v2.45 |
| ----------------- |
| |
| * "git rebase --signoff" used to forget that it needs to add a |
| sign-off to the resulting commit when told to continue after a |
| conflict stops its operation. |
| (merge a6c2654f83 pw/rebase-m-signoff-fix later to maint). |
| |
| * The procedure to build multi-pack-index got confused by the |
| replace-refs mechanism, which has been corrected by disabling the |
| latter. |
| (merge 93e2ae1c95 xx/disable-replace-when-building-midx later to maint). |
| |
| * The "-k" and "--rfc" options of "format-patch" will now error out |
| when used together, as one tells us not to add anything to the |
| title of the commit, and the other one tells us to add "RFC" in |
| addition to "PATCH". |
| (merge cadcf58085 ds/format-patch-rfc-and-k later to maint). |
| |
| * "git stash -S" did not handle binary files correctly, which has |
| been corrected. |
| (merge 5fb7686409 aj/stash-staged-fix later to maint). |
| |
| * A scheduled "git maintenance" job is expected to work on all |
| repositories it knows about, but it stopped at the first one that |
| errored out. Now it keeps going. |
| (merge c75662bfc9 js/for-each-repo-keep-going later to maint). |
| |
| * zsh can pretend to be a normal shell pretty well except for some |
| glitches that we tickle in some of our scripts. Work them around |
| so that "vimdiff" and our test suite works well enough with it. |
| (merge fedd5c79ff bc/zsh-compatibility later to maint). |
| |
| * Command line completion support for zsh (in contrib/) has been |
| updated to stop exposing internal state to end-user shell |
| interaction. |
| (merge 3c20acdf46 dk/zsh-git-repo-path-fix later to maint). |
| |
| * Tests that try to corrupt in-repository files in chunked format did |
| not work well on macOS due to its broken "mv", which has been |
| worked around. |
| |
| * The maximum size of attribute files is enforced more consistently. |
| (merge c793f9cb08 tb/attr-limits later to maint). |
| |
| * Unbreak CI jobs so that we do not attempt to use Python 2 that has |
| been removed from the platform. |
| |
| * Git 2.43 started using the tree of HEAD as the source of attributes |
| in a bare repository, which has severe performance implications. |
| For now, revert the change, without ripping out a more explicit |
| support for the attr.tree configuration variable. |
| |
| * The "--exit-code" option of "git diff" command learned to work with |
| the "--ext-diff" option. |
| (merge 11be65cfa4 rs/external-diff-with-exit-code later to maint). |
| |
| * Windows CI running in GitHub Actions started complaining about the |
| order of arguments given to calloc(); the imported regex code uses |
| the wrong order almost consistently, which has been corrected. |
| |
| * Expose "name conflict" error when a ref creation fails due to D/F |
| conflict in the ref namespace, to improve an error message given by |
| "git fetch". |
| (merge 9339fca23e it/refs-name-conflict later to maint). |
| |
| * The SubmittingPatches document now refers folks to manpages |
| translation project. |
| |
| * The documentation for "git diff --name-only" has been clarified |
| that it is about showing the names in the post-image tree. |
| (merge 4986662cbc jc/doc-diff-name-only later to maint). |
| |
| * The credential helper that talks with osx keychain learned to avoid |
| storing back the authentication material it just got received from |
| the keychain. |
| (merge e1ab45b2da kn/osxkeychain-skip-idempotent-store later to maint). |
| |
| * The chainlint script (invoked during "make test") did nothing when |
| it failed to detect the number of available CPUs. It now falls |
| back to 1 CPU to avoid the problem. |
| (merge 2e7e9205be es/chainlint-ncores-fix later to maint). |
| |
| * Revert overly aggressive "layered defence" that went into 2.45.1 |
| and friends, which broke "git-lfs", "git-annex", and other use |
| cases, so that we can rebuild necessary counterparts in the open. |
| |
| * "git init" in an already created directory, when the user |
| configuration has includeif.onbranch, started to fail recently, |
| which has been corrected. |
| (merge 407997c1dd ps/fix-reinit-includeif-onbranch later to maint). |
| |
| * Memory leaks in "git mv" has been plugged. |
| |
| * The safe.directory configuration knob has been updated to |
| optionally allow leading path matches. |
| (merge 313eec177a jc/safe-directory-leading-path later to maint). |
| |
| * An overly large ".gitignore" files are now rejected silently. |
| (merge e7c3d1ddba jk/cap-exclude-file-size later to maint). |
| |
| * Upon expiration event, the credential subsystem forgot to clear |
| in-core authentication material other than password (whose support |
| was added recently), which has been corrected. |
| |
| * Fix for an embarrassing typo that prevented Python2 tests from running |
| anywhere. |
| (merge df651330ab ps/ci-fix-detection-of-ubuntu-20 later to maint). |
| |
| * Varargs functions that are unannotated as printf-like or execl-like |
| have been annotated as such. |
| (merge 99c7de732e jc/varargs-attributes later to maint). |
| |
| * "git am" has a safety feature to prevent it from starting a new |
| session when there already is a session going. It reliably |
| triggers when a mbox is given on the command line, but it has to |
| rely on the tty-ness of the standard input. Add an explicit way to |
| opt out of this safety with a command line option. |
| (merge 62c71ace44 jk/am-retry later to maint). |
| |
| * A leak in "git imap-send" that somehow escapes LSan has been |
| plugged. |
| |
| * Setting core.abbrev too early before the repository set-up |
| (typically in "git clone") caused segfault, which as been |
| corrected. |
| |
| * When the user adds to "git rebase -i" instruction to "pick" a merge |
| commit, the error experience is not pleasant. Such an error is now |
| caught earlier in the process that parses the todo list. |
| (merge 4c063c82e9 pw/rebase-i-error-message later to maint). |
| |
| * We forgot to normalize the result of getcwd() to NFC on macOS where |
| all other paths are normalized, which has been corrected. This still |
| does not address the case where core.precomposeUnicode configuration |
| is not defined globally. |
| (merge 71fa8d2212 tb/precompose-getcwd later to maint). |
| |
| * Earlier we stopped using the tree of HEAD as the default source of |
| attributes in a bare repository, but failed to document it. This |
| has been corrected. |
| (merge 5c71d6b63a jc/no-default-attr-tree-in-bare later to maint). |
| |
| * "git update-server-info" and "git commit-graph --write" have been |
| updated to use the tempfile API to avoid leaving cruft after |
| failing. |
| |
| * Other code cleanup, docfix, build fix, etc. |
| (merge a5a4cb7b27 rs/diff-parseopts-cleanup later to maint). |
| (merge 55702c543e fa/p4-error later to maint). |
| (merge 2566a77774 vd/doc-merge-tree-x-option later to maint). |
| (merge b64b0df9da ds/scalar-reconfigure-all-fix later to maint). |
| (merge c81ffcff83 dm/update-index-doc-fix later to maint). |
| (merge fc0202b0e9 dg/fetch-pack-code-cleanup later to maint). |
| (merge 7150f140f9 mt/t0211-typofix later to maint). |
| (merge d424488901 jc/rev-parse-fatal-doc later to maint). |
| (merge 36d900d2b0 rs/difftool-env-simplify later to maint). |
| (merge e83055ecb0 ds/doc-add-interactive-singlekey later to maint). |
| (merge f1160393c1 ds/ahead-behind-fix later to maint). |
| (merge bf6a86236e jc/worktree-git-path later to maint). |