| Git v2.46 Release Notes |
| ======================= |
| |
| 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. |
| |
| * The http transport can now be told to send request with |
| authentication material without first getting a 401 response. |
| |
| * A handful of entries are added to the GitFAQ document. |
| |
| * "git var GIT_SHELL_PATH" should report the path to the shell used |
| to spawn external commands, but it didn't do so on Windows, which |
| has been corrected. |
| |
| |
| 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. |
| |
| * A few tests in reftable library have been rewritten using 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. |
| |
| * When "git merge" sees that the index cannot be refreshed (e.g. due |
| to another process doing the same in the background), it died but |
| after writing MERGE_HEAD etc. files, which was useless for the |
| purpose to recover from the failure. |
| |
| * The output from "git cat-file --batch-check" and "--batch-command |
| (info)" should not be unbuffered, for which some tests have been |
| added. |
| |
| * A CPP macro USE_THE_REPOSITORY_VARIABLE is introduced to help |
| transition the codebase to rely less on the availability of the |
| singleton the_repository instance. |
| |
| * "git version --build-options" reports the version information of |
| OpenSSL and other libraries (if used) in the build. |
| |
| * Memory ownership rules for the in-core representation of |
| remote.*.url configuration values have been straightened out, which |
| resulted in a few leak fixes and code clarification. |
| |
| * When bundleURI interface fetches multiple bundles, Git failed to |
| take full advantage of all bundles and ended up slurping duplicated |
| objects, which has been corrected. |
| |
| * The code to deal with modified paths that are out-of-cone in a |
| sparsely checked out working tree has been optimized. |
| |
| * An existing test of oidmap API has been rewritten with the |
| unit-test framework. |
| |
| * The "ort" merge backend saw one bugfix for a crash that happens |
| when inner merge gets killed, and assorted code clean-ups. |
| |
| * A new warning message is issued when a command has to expand a |
| sparse index to handle working tree cruft that are outside of the |
| sparse checkout. |
| |
| * The test framework learned to take the test body not as a single |
| string but as a here-document. |
| |
| * "git push '' HEAD:there" used to hit a BUG(); it has been corrected |
| to die with "fatal: bad repository ''". |
| |
| * What happens when http.cookieFile gets the special value "" has |
| been clarified in the documentation. |
| |
| |
| 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. |
| |
| * The procedure to build multi-pack-index got confused by the |
| replace-refs mechanism, which has been corrected by disabling the |
| latter. |
| |
| * 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". |
| |
| * "git stash -S" did not handle binary files correctly, which has |
| been corrected. |
| |
| * 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. |
| |
| * 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. |
| |
| * Command line completion support for zsh (in contrib/) has been |
| updated to stop exposing internal state to end-user shell |
| interaction. |
| |
| * 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. |
| |
| * 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. |
| |
| * 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. |
| |
| * 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. |
| |
| * 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. |
| |
| * Memory leaks in "git mv" has been plugged. |
| |
| * The safe.directory configuration knob has been updated to |
| optionally allow leading path matches. |
| |
| * An overly large ".gitignore" files are now rejected silently. |
| |
| * 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. |
| |
| * Varargs functions that are unannotated as printf-like or execl-like |
| have been annotated as such. |
| |
| * "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. |
| |
| * 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. |
| |
| * 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. |
| |
| * "git update-server-info" and "git commit-graph --write" have been |
| updated to use the tempfile API to avoid leaving cruft after |
| failing. |
| |
| * An unused extern declaration for mingw has been removed to prevent |
| it from causing build failure. |
| |
| * A helper function shared between two tests had a copy-paste bug, |
| which has been corrected. |
| |
| * "git fetch-pack -k -k" without passing "--lock-pack" (which we |
| never do ourselves) did not work at all, which has been corrected. |
| |
| * CI job to build minimum fuzzers learned to pass NO_CURL=NoThanks to |
| the build procedure, as its build environment does not offer, or |
| the rest of the build needs, anything cURL. |
| (merge 4e66b5a990 jc/fuzz-sans-curl later to maint). |
| |
| * "git diff --no-ext-diff" when diff.external is configured ignored |
| the "--color-moved" option. |
| (merge 0f4b0d4cf0 rs/diff-color-moved-w-no-ext-diff-fix later to maint). |
| |
| * "git archive --add-virtual-file=<path>:<contents>" never paid |
| attention to the --prefix=<prefix> option but the documentation |
| said it would. The documentation has been corrected. |
| (merge 72c282098d jc/archive-prefix-with-add-virtual-file later to maint). |
| |
| * When GIT_PAGER failed to spawn, depending on the code path taken, |
| we failed immediately (correct) or just spew the payload to the |
| standard output (incorrect). The code now always fail immediately |
| when GIT_PAGER fails. |
| (merge 78f0a5d187 rj/pager-die-upon-exec-failure later to maint). |
| |
| * date parser updates to be more careful about underflowing epoch |
| based timestamp. |
| (merge 9d69789770 db/date-underflow-fix later to maint). |
| |
| * The Bloom filter used for path limited history traversal was broken |
| on systems whose "char" is unsigned; update the implementation and |
| bump the format version to 2. |
| (merge 9c8a9ec787 tb/path-filter-fix later to maint). |
| |
| * Typofix. |
| (merge 231cf7370e as/pathspec-h-typofix later to maint). |
| |
| * Code clean-up. |
| (merge 4b837f821e rs/simplify-submodule-helper-super-prefix-invocation later to maint). |
| |
| * "git describe --dirty --broken" forgot to refresh the index before |
| seeing if there is any chang, ("git describe --dirty" correctly did |
| so), which has been corrected. |
| (merge b8ae42e292 as/describe-broken-refresh-index-fix later to maint). |
| |
| * Test suite has been taught not to unnecessarily rely on DNS failing |
| a bogus external name. |
| (merge 407cdbd271 jk/tests-without-dns later to maint). |
| |
| * GitWeb update to use committer date consistently in rss/atom feeds. |
| (merge cf6ead095b am/gitweb-feed-use-committer-date later to maint). |
| |
| * Custom control structures we invented more recently have been |
| taught to the clang-format file. |
| (merge 1457dff9be rs/clang-format-updates later to maint). |
| |
| * Developer build procedure fix. |
| (merge df32729866 tb/dev-build-pedantic-fix later to maint). |
| |
| * "git push" that pushes only deletion gave an unnecessary and |
| harmless error message when push negotiation is configured, which |
| has been corrected. |
| (merge 4d8ee0317f jc/disable-push-nego-for-deletion later to maint). |
| |
| * Address-looking strings found on the trailer are now placed on the |
| Cc: list after running through sanitize_address by "git send-email". |
| (merge c852531f45 cb/send-email-sanitize-trailer-addresses later to maint). |
| |
| * Tests that use GIT_TEST_SANITIZE_LEAK_LOG feature got their exit |
| status inverted, which has been corrected. |
| (merge 8c1d6691bc rj/test-sanitize-leak-log-fix later to maint). |
| |
| * The http.cookieFile and http.saveCookies configuration variables |
| have a few values that need to be avoided, which are now ignored |
| with warning messages. |
| (merge 4f5822076f jc/http-cookiefile later to maint). |
| |
| * Repacking a repository with multi-pack index started making stupid |
| pack selections in Git 2.45, which has been corrected. |
| (merge 8fb6d11fad ds/midx-write-repack-fix later to maint). |
| |
| * Fix documentation mark-up regression in 2.45. |
| (merge 6474da0aa4 ja/doc-markup-updates-fix later to maint). |
| |
| * Work around asciidoctor's css that renders `monospace` material |
| in the SYNOPSIS section of manual pages as block elements. |
| (merge d44ce6ddd5 js/doc-markup-updates-fix later to maint). |
| |
| * Other code cleanup, docfix, build fix, etc. |
| (merge 493fdae046 ew/object-convert-leakfix later to maint). |
| (merge 00f3661a0a ss/doc-eol-attr-fix later to maint). |
| (merge 428c40da61 ri/doc-show-branch-fix later to maint). |
| (merge 58696bfcaa jc/where-is-bash-for-ci later to maint). |
| (merge 616e94ca24 tb/doc-max-tree-depth-fix later to maint). |