2024-07-30 13:48:45 by Adam Ciarcinski | Files touched by this commit (6) | |
Log message: git: updated to 2.46.0 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). |
2024-02-25 23:24:13 by Adam Ciarcinski | Files touched by this commit (5) | |
Log message: git: updated to 2.44.0 Git v2.44 Release Notes ======================= Backward Compatibility Notes * "git checkout -B <branch>" used to allow switching to a \ branch that is in use on another worktree, but this was by mistake. The users need to use "--ignore-other-worktrees" option. UI, Workflows & Features * "git add" and "git stash" learned to support the \ ":(attr:...)" magic pathspec. * "git rebase --autosquash" is now enabled for non-interactive rebase, but it is still incompatible with the apply backend. * Introduce "git replay", a tool meant on the server side without working tree to recreate a history. * "git merge-file" learned to take the "--diff-algorithm" \ option to use algorithm different from the default "myers" diff. * Command line completion (in contrib/) learned to complete path arguments to the "add/set" subcommands of "git \ sparse-checkout" better. * "git checkout -B <branch> [<start-point>]" allowed a \ branch that is in use in another worktree to be updated and checked out, which might be a bit unexpected. The rule has been tightened, which is a breaking change. "--ignore-other-worktrees" option is required to unbreak you, if you are used to the current behaviour that "-B" overrides the safety. * The builtin_objectmode attribute is populated for each path without adding anything in .gitattributes files, which would be useful in magic pathspec, e.g., ":(attr:builtin_objectmode=100755)" to limit to executables. * "git fetch" learned to pay attention to "fetch.all" \ configuration variable, which pretends as if "--all" was passed from the command line when no remote parameter was given. * In addition to (rather cryptic) Security Identifiers, show username and domain in the error message when we barf on mismatch between the Git directory and the current user on Windows. * The error message given when "git branch -d branch" fails due to commits unique to the branch has been split into an error and a new conditional advice message. * When given an existing but unreadable file as a configuration file, gitweb behaved as if the file did not exist at all, but now it errors out. This is a change that may break backward compatibility. * When $HOME/.gitconfig is missing but XDG config file is available, we should write into the latter, not former. "git gc" and "git maintenance" wrote into a wrong "global config" file, which have been corrected. * Define "special ref" as a very narrow set that consists of FETCH_HEAD and MERGE_HEAD, and clarify everything else that used to be classified as such are actually just pseudorefs. * All conditional "advice" messages show how to turn them off, which becomes repetitive. Setting advice.* configuration explicitly on now omits the instruction part. * The "disable repository discovery of a bare repository" check, triggered by setting safe.bareRepository configuration variable to 'explicit', has been loosened to exclude the ".git/" directory inside a non-bare repository from the check. So you can do "cd .git && git cmd" to run a Git command that works on a bare repository without explicitly specifying $GIT_DIR now. * The completion script (in contrib/) learned more options that can be used with "git log". * The labels on conflict markers for the common ancestor, our version, and the other version are available to custom 3-way merge driver via %S, %X, and %Y placeholders. * The write codepath for the reftable data learned to honor core.fsync configuration. * The "--fsck-objects" option of "git index-pack" now can \ take the optional parameter to tweak severity of different fsck errors. * The wincred credential backend has been taught to support oauth refresh token the same way as credential-cache and credential-libsecret backends. * Command line completion support (in contrib/) has been updated for "git bisect". * "git branch" and friends learned to use the formatted text as sorting key, not the underlying timestamp value, when the --sort option is used with author or committer timestamp with a format specifier (e.g., "--sort=creatordate:format:%H:%M:%S"). * The command line completion script (in contrib/) learned to complete configuration variable names better. Performance, Internal Implementation, Development Support etc. * Process to add some form of low-level unit tests has started. * Add support for GitLab CI. * "git for-each-ref --no-sort" still sorted the refs alphabetically which paid non-trivial cost. It has been redefined to show output in an unspecified order, to allow certain optimizations to take advantage of. * Simplify API implementation to delete references by eliminating duplication. * Subject approxidate() and show_date() machinery to OSS-Fuzz. * A new helper to let us pretend that we called lstat() when we know our cache_entry is up-to-date via fsmonitor. * The optimization based on fsmonitor in the "diff --cached" codepath is resurrected with the "fake-lstat" introduced earlier. * Test balloon to use C99 "bool" type from <stdbool.h> has been added. * "git clone" has been prepared to allow cloning a repository with non-default hash function into a repository that uses the reftable backend. * Streaming spans of packfile data used to be done only from a single, primary, pack in a repository with multiple packfiles. It has been extended to allow reuse from other packfiles, too. * Comment updates to help developers not to attempt to modify messages from plumbing commands that must stay constant. It might make sense to reassess the plumbing needs every few years, but that should be done as a separate effort. * Move test-ctype helper to the unit-test framework. * Instead of manually creating refs/ hierarchy on disk upon a creation of a secondary worktree, which is only usable via the files backend, use the refs API to populate it. * CI for GitLab learned to drive macOS jobs. * A few tests to "git commit -o <pathspec>" and "git commit -i <pathspec>" has been added. * Tests on ref API are moved around to prepare for reftable. * The Makefile often had to say "-L$(path) -R$(path)" that repeats the path to the same library directory for link time and runtime. A Makefile template is used to reduce such repetition. * The priority queue test has been migrated to the unit testing framework. * Setting `feature.experimental` opts the user into multi-pack reuse experiment * Squelch node.js 16 deprecation warnings from GitHub Actions CI by updating actions/github-script and actions/checkout that use node.js 20. * The mechanism to report the filename in the source code, used by the unit-test machinery, assumed that the compiler expanded __FILE__ to the path to the source given to the $(CC), but some compilers give full path, breaking the output. This has been corrected. Fixes since v2.43 ----------------- * The way CI testing used "prove" could lead to running the test suite twice needlessly, which has been corrected. * Update ref-related tests. * "git format-patch --encode-email-headers" ignored the option when preparing the cover letter, which has been corrected. * Newer versions of Getopt::Long started giving warnings against our (ab)use of it in "git send-email". Bump the minimum version requirement for Perl to 5.8.1 (from September 2002) to allow simplifying our implementation. * Earlier we stopped relying on commit-graph that (still) records information about commits that are lost from the object store, which has negative performance implications. The default has been flipped to disable this pessimization. * Stale URLs have been updated to their current counterparts (or archive.org) and HTTP links are replaced with working HTTPS links. * trace2 streams used to record the URLs that potentially embed authentication material, which has been corrected. * The sample pre-commit hook that tries to catch introduction of new paths that use potentially non-portable characters did not notice an existing path getting renamed to such a problematic path, when rename detection was enabled. * The command line parser for the "log" family of commands was too loose when parsing certain numbers, e.g., silently ignoring the extra 'q' in "git log -n 1q" without complaining, which has been tightened up. * "git $cmd --end-of-options --rev -- --path" for some $cmd failed to interpret "--rev" as a rev, and "--path" as a path. \ This was fixed for many programs like "reset" and "checkout". * "git bisect reset" has been taught to clean up state files and refs even when BISECT_START file is gone. * Some codepaths did not correctly parse configuration variables specified with valueless "true", which has been corrected. * Code clean-up for sanity checking of command line options for "git show-ref". * The code to parse the From e-mail header has been updated to avoid recursion. * "git fetch --atomic" issued an unnecessary empty error message, which has been corrected. * Command line completion script (in contrib/) learned to work better with the reftable backend. * "git status" is taught to show both the branch being bisected and being rebased when both are in effect at the same time. * "git archive --list extra garbage" silently ignored excess command line parameters, which has been corrected. * "git sparse-checkout set" added default patterns even when the patterns are being fed from the standard input, which has been corrected. * "git sparse-checkout (add|set) --[no-]cone --end-of-options" did not handle "--end-of-options" correctly after a recent update. * Unlike other environment variables that took the usual true/false/yes/no as well as 0/1, GIT_FLUSH only understood 0/1, which has been corrected. * Clearing in-core repository (happens during e.g., "git fetch --recurse-submodules" with commit graph enabled) made in-core commit object in an inconsistent state by discarding the necessary data from commit-graph too early, which has been corrected. * Update to a new feature recently added, "git show-ref --exists". * oss-fuzz tests are built and run in CI. (merge c4a9cf1df3 js/oss-fuzz-build-in-ci later to maint). * Rename detection logic ignored the final line of a file if it is an incomplete line. * GitHub CI update. (merge 0188b2c8e0 pb/ci-github-skip-logs-for-broken-tests later to maint). * "git diff --no-rename A B" did not disable rename detection but did not trigger an error from the command line parser. * "git archive --remote=<remote>" learned to talk over the smart http (aka stateless) transport. (merge 176cd68634 jx/remote-archive-over-smart-http later to maint). * Fetching via protocol v0 over Smart HTTP transport sometimes failed to correctly auto-follow tags. (merge fba732c462 jk/fetch-auto-tag-following-fix later to maint). * The documentation for the --exclude-per-directory option marked it as deprecated, which confused readers into thinking there may be a plan to remove it in the future, which was not our intention. (merge 0009542cab jc/ls-files-doc-update later to maint). * "git diff --no-index file1 file2" segfaulted while invoking the external diff driver, which has been corrected. * Rewrite //-comments to /* comments */ in files whose comments prevalently use the latter. * Cirrus CI jobs started breaking because we specified version of FreeBSD that is no longer available, which has been corrected. (merge 81fffb66d3 cb/use-freebsd-13-2-at-cirrus-ci later to maint). * A caller called index_file_exists() that takes a string expressed as <ptr, length> with a wrong length, which has been corrected. (merge 156e28b36d jh/sparse-index-expand-to-path-fix later to maint). * A failed "git tag -s" did not necessarily result in an error depending on the crypto backend, which has been corrected. * "git stash" sometimes was silent even when it failed due to unwritable index file, which has been corrected. * "git show-ref --verify" did not show things like \ "CHERRY_PICK_HEAD", which has been corrected. * Recent conversion to allow more than 0/1 in GIT_FLUSH broke the mechanism by flipping what yes/no means by mistake, which has been corrected. * The sequencer machinery does not use the ref API and instead records names of certain objects it needs for its correct operation in temporary files, which makes these objects susceptible to loss by garbage collection. These temporary files have been added as starting points for reachability analysis to fix this. (merge bc7f5db896 pw/gc-during-rebase later to maint). * "git cherry-pick" invoked during "git rebase -i" session lost the authorship information, which has been corrected. (merge e4301f73ff vn/rebase-with-cherry-pick-authorship later to maint). * The code paths that call repo_read_object_file() have been tightened to react to errors. (merge 568459bf5e js/check-null-from-read-object-file later to maint). * Other code cleanup, docfix, build fix, etc. (merge 5aea3955bc rj/clarify-branch-doc-m later to maint). (merge 9cce3be2df bk/bisect-doc-fix later to maint). (merge 8430b438f6 vd/fsck-submodule-url-test later to maint). (merge 3cb4384683 jc/t0091-with-unknown-git later to maint). (merge 020456cb74 rs/receive-pack-remove-find-header later to maint). (merge bc47139f4f la/trailer-cleanups later to maint). |
2023-06-06 14:42:56 by Taylor R Campbell | Files touched by this commit (1319) |
Log message: Mass-change BUILD_DEPENDS to TOOL_DEPENDS outside mk/. Almost all uses, if not all of them, are wrong, according to the semantics of BUILD_DEPENDS (packages built for target available for use _by_ tools at build-time) and TOOL_DEPEPNDS (packages built for host available for use _as_ tools at build-time). No change to BUILD_DEPENDS as used correctly inside buildlink3. As proposed on tech-pkg: https://mail-index.netbsd.org/tech-pkg/2023/06/03/msg027632.html |
2022-10-07 12:10:05 by Adam Ciarcinski | Files touched by this commit (7) | |
Log message: git: updated to 2.38.0 Git v2.38 Release Notes ======================= UI, Workflows & Features * "git remote show [-n] frotz" now pays attention to negative pathspec. * "git push" sometimes performs poorly when reachability bitmaps are used, even in a repository where other operations are helped by bitmaps. The push.useBitmaps configuration variable is introduced to allow disabling use of reachability bitmaps only for "git push". * "git grep -m<max-hits>" is a way to limit the hits shown per file. * "git merge-tree" learned a new mode where it takes two commits and computes a tree that would result in the merge commit, if the histories leading to these two commits were to be merged. * "git mv A B" in a sparsely populated working tree can be asked to move a path between directories that are "in cone" (i.e. expected to be materialized in the working tree) and "out of cone" (i.e. expected to be hidden). The handling of such cases has been improved. * Earlier, HTTP transport clients learned to tell the server side what locale they are in by sending Accept-Language HTTP header, but this was done only for some requests but not others. * Introduce a safe.barerepository configuration variable that allows users to forbid discovery of bare repositories. * Various messages that come from the pack-bitmap codepaths have been tweaked. * "git rebase -i" learns to update branches whose tip appear in the rebased range with "--update-refs" option. * "git ls-files" learns the "--format" option to tweak its \ output. * "git cat-file" learned an option to use the mailmap when showing commit and tag objects. * When "git merge" finds that it cannot perform a merge, it should restore the working tree to the state before the command was initiated, but in some corner cases it didn't. * Operating modes like "--batch" of "git cat-file" command \ learned to take NUL-terminated input, instead of one-item-per-line. * "git rm" has become more aware of the sparse-index feature. * "git rev-list --disk-usage" learned to take an optional value "human" to show the reported value in human-readable format, like "3.40MiB". * The "diagnose" feature to create a zip archive for diagnostic material has been lifted from "scalar" and made into a feature of "git bugreport". * The namespaces used by "log --decorate" from "refs/" \ hierarchy by default has been tightened. * "git rev-list --ancestry-path=C A..B" is a natural extension of "git rev-list A..B"; instead of choosing a subset of A..B to those that have ancestry relationship with A, it lets a subset with ancestry relationship with C. * "scalar" now enables built-in fsmonitor on enlisted repositories, when able. * The bash prompt (in contrib/) learned to optionally indicate when the index is unmerged. * "git clone" command learned the "--bundle-uri" option to \ coordinate with hosting sites the use of pre-prepared bundle files. * "git range-diff" learned to honor pathspec argument if given. * "git format-patch --from=<ident>" can be told to add an in-body "From:" line even for commits that are authored by the given <ident> with "--force-in-body-from" option. * The built-in fsmonitor refuses to work on a network mounted repositories; a configuration knob for users to override this has been introduced. * The "scalar" addition from Microsoft is now part of the core Git installation. Performance, Internal Implementation, Development Support etc. * Collection of what is referenced by objects in promisor packs have been optimized to inspect these objects in the in-pack order. * Introduce a helper to see if a branch is already being worked on (hence should not be newly checked out in a working tree), which performs much better than the existing find_shared_symref() to replace many uses of the latter. * Teach "git archive" to (optionally and then by default) avoid spawning an external "gzip" process when creating \ ".tar.gz" (and ".tgz") archives. * Allow large objects read from a packstream to be streamed into a loose object file straight, without having to keep it in-core as a whole. * Further preparation to turn git-submodule.sh into a builtin continues. * Apply Coccinelle rule to turn raw memmove() into MOVE_ARRAY() cpp macro, which would improve maintainability and readability. * Teach "make all" to build gitweb as well. * Tweak tests so that they still work when the "git init" template did not create .git/info directory. * Add Coccinelle rules to detect the pattern of initializing and then finalizing a structure without using it in between at all, which happens after code restructuring and the compilers fail to recognize as an unused variable. * The code to convert between GPG trust level strings and internal constants we use to represent them have been cleaned up. * Support for libnettle as SHA256 implementation has been added. * The way "git multi-pack" uses parse-options API has been improved. * A Coccinelle rule (in contrib/) to encourage use of COPY_ARRAY macro has been improved. * API tweak to make it easier to run fuzz testing on commit-graph parser. * Omit fsync-related trace2 entries when their values are all zero. * The codepath to write multi-pack index has been taught to release a large chunk of memory that holds an array of objects in the packs, as soon as it is done with the array, to reduce memory consumption. * Add a level of redirection to array allocation API in xdiff part, to make it easier to share with the libgit2 project. * "git fetch" client logs the partial clone filter used in the trace2 output. * The "bundle URI" design gets documented. * The common ancestor negotiation exchange during a "git fetch" session now leaves trace log. * Test portability improvements. (merge 4d1d843be7 mt/rot13-in-c later to maint). * The "subcommand" mode is introduced to parse-options API and update the command line parser of Git commands with subcommands. * The pack bitmap file gained a bitmap-lookup table to speed up locating the necessary bitmap for a given commit. * The assembly version of SHA-1 implementation for PPC has been removed. * The server side that responds to "git fetch" and "git clone" request has been optimized by allowing it to send objects in its object store without recomputing and validating the object names. * Annotate function parameters that are not used (but cannot be removed for structural reasons), to prepare us to later compile with -Wunused warning turned on. * Share the text used to explain configuration variables used by "git <subcmd>" in "git help <subcmd>" with the text \ from "git help config". * "git mv A B" in a sparsely populated working tree can be asked to move a path from a directory that is "in cone" to another directory that is "out of cone". Handling of such a case has been improved. * The chainlint script for our tests has been revamped. Fixes since v2.37 ----------------- * Rewrite of "git add -i" in C that appeared in Git 2.25 didn't correctly record a removed file to the index, which was fixed. * Certain diff options are currently ignored when combined-diff is shown; mark them as incompatible with the feature. * Adjust technical/bitmap-format to be formatted by AsciiDoc, and add some missing information to the documentation. * Fixes for tests when the source directory has unusual characters in its path, e.g. whitespaces, double-quotes, etc. * "git mktree --missing" lazily fetched objects that are missing from the local object store, which was totally unnecessary for the purpose of creating the tree object(s) from its input. * Give _() markings to fatal/warning/usage: labels that are shown in front of these messages. * References to commands-to-be-typed-literally in "git rebase" documentation mark-up have been corrected. * In a non-bare repository, the behavior of Git when the core.worktree configuration variable points at a directory that has a repository as its subdirectory, regressed in Git 2.27 days. * Recent update to vimdiff layout code has been made more robust against different end-user vim settings. * Plug various memory leaks, both in the main code and in test-tool commands. * Fixes a long-standing corner case bug around directory renames in the merge-ort strategy. * The resolve-undo information in the index was not protected against GC, which has been corrected. * A corner case bug where lazily fetching objects from a promisor remote resulted in infinite recursion has been corrected. * "git clone" from a repository with some ref whose HEAD is unborn did not set the HEAD in the resulting repository correctly, which has been corrected. * An earlier attempt to plug leaks placed a clean-up label to jump to at a bogus place, which as been corrected. * Variable quoting fix in the vimdiff driver of "git mergetool" * "git shortlog -n" relied on the underlying qsort() to be stable, which shouldn't have. Fixed. * A fix for a regression in test framework. * mkstemp() emulation on Windows has been improved. * Add missing documentation for "include" and "includeIf" \ features in "git config" file format, which incidentally teaches the command line completion to include them in its offerings. * Avoid "white/black-list" in documentation and code comments. * Workaround for a compiler warning against use of die() in osx-keychain (in contrib/). * Workaround for a false positive compiler warning. * "git p4" working on UTF-16 files on Windows did not implement CRLF-to-LF conversion correctly, which has been corrected. * "git p4" did not handle non-ASCII client name well, which has been corrected. * "rerere-train" script (in contrib/) used to honor commit.gpgSign while recreating the throw-away merges. * "git checkout" miscounted the paths it updated, which has been corrected. * Fix for a bug that makes write-tree to fail to write out a non-existent index as a tree, introduced in 2.37. * There was a bug in the codepath to upgrade generation information in commit-graph from v1 to v2 format, which has been corrected. * Gitweb had legacy URL shortener that is specific to the way projects hosted on kernel.org used to (but no longer) work, which has been removed. * Fix build procedure for Windows that uses CMake so that it can pick up the shell interpreter from local installation location. * Conditionally allow building Python interpreter on Windows * Fix to lstat() emulation on Windows. * Older gcc with -Wall complains about the universal zero initializer "struct s = { 0 };" idiom, which makes developers' lives inconvenient (as -Werror is enabled by DEVELOPER=YesPlease). The build procedure has been tweaked to help these compilers. * Plug memory leaks in the failure code path in the "merge-ort" merge strategy backend. * "git symbolic-ref symref non..sen..se" is now diagnosed as an error. * A follow-up fix to a fix for a regression in 2.36 around hooks. * Avoid repeatedly running getconf to ask libc version in the test suite, and instead just as it once per script. * Platform-specific code that determines if a directory is OK to use as a repository has been taught to report more details, especially on Windows. * "vimdiff3" regression fix. * "git fsck" reads mode from tree objects but canonicalizes the mode before passing it to the logic to check object sanity, which has hid broken tree objects from the checking logic. This has been corrected, but to help existing projects with broken tree objects that they cannot fix retroactively, the severity of anomalies this code detects has been demoted to "info" for now. * Fixes to sparse index compatibility work for "reset" and \ "checkout" commands. * An earlier optimization discarded a tree-object buffer that is still in use, which has been corrected. * Fix deadlocks between main Git process and subprocess spawned via the pipe_command() API, that can kill "git add -p" that was reimplemented in C recently. * The sequencer machinery translated messages left in the reflog by mistake, which has been corrected. * xcalloc(), imitating calloc(), takes "number of elements of the array", and "size of a single element", in this order. A call that does not follow this ordering has been corrected. * The preload-index codepath made copies of pathspec to give to multiple threads, which were left leaked. * Update the version of Ubuntu used for GitHub Actions CI from 18.04 to 22.04. * The auto-stashed local changes created by "git merge --autostash" was mixed into a conflicted state left in the working tree, which has been corrected. * Multi-pack index got corrupted when preferred pack changed from one pack to another in a certain way, which has been corrected. (merge 99e4d084ff tb/midx-with-changing-preferred-pack-fix later to maint). * The clean-up of temporary files created via mks_tempfile_dt() was racy and attempted to unlink() the leading directory when signals are involved, which has been corrected. (merge babe2e0559 rs/tempfile-cleanup-race-fix later to maint). * FreeBSD portability fix for "git maintenance" that spawns \ "crontab" to schedule tasks. (merge ee69e7884e bc/gc-crontab-fix later to maint). * Those who use diff-so-fancy as the diff-filter noticed a regression or two in the code that parses the diff output in the built-in version of "add -p", which has been corrected. (merge 0a101676e5 js/add-p-diff-parsing-fix later to maint). * Segfault fix-up to an earlier fix to the topic to teach "git reset" and "git checkout" work better in a sparse checkout. (merge 037f8ea6d9 vd/sparse-reset-checkout-fixes later to maint). * "git diff --no-index A B" managed its the pathnames of its two input files rather haphazardly, sometimes leaking them. The command line argument processing has been straightened out to clean it up. (merge 2b43dd0eb5 rs/diff-no-index-cleanup later to maint). * "git rev-list --verify-objects" ought to inspect the contents of objects and notice corrupted ones, but it didn't when the commit graph is in use, which has been corrected. (merge b27ccae34b jk/rev-list-verify-objects-fix later to maint). * More fixes to "add -p" (merge 64ec8efb83 js/builtin-add-p-portability-fix later to maint). * The parser in the script interface to parse-options in "git rev-parse" has been updated to diagnose a bogus input correctly. (merge f20b9c36d0 ow/rev-parse-parseopt-fix later to maint). * The code that manages list-object-filter structure, used in partial clones, leaked the instances, which has been plugged. (merge 66eede4a37 jk/plug-list-object-filter-leaks later to maint). * Fix another UI regression in the reimplemented "add -p". (merge f6f0ee247f rs/add-p-worktree-mode-prompt-fix later to maint). * "git fetch" over protocol v2 sent an incorrect ref prefix request to the server and made "git pull" with configured fetch refspec that does not cover the remote branch to merge with fail, which has been corrected. (merge 49ca2fba39 jk/proto-v2-ref-prefix-fix later to maint). * A result from opendir() was leaking in the commit-graph expiration codepath, which has been plugged. (merge 12f1ae5324 ml/commit-graph-expire-dir-leak-fix later to maint). * Just like we have coding guidelines, we now have guidelines for reviewers. (merge e01b851923 vd/doc-reviewing-guidelines later to maint). * Other code cleanup, docfix, build fix, etc. (merge 77b9e85c0f vd/fix-perf-tests later to maint). (merge 0682bc43f5 jk/test-crontab-fixes later to maint). (merge b46dd1726c cc/doc-trailer-whitespace-rules later to maint). |
2022-07-06 13:54:00 by Adam Ciarcinski | Files touched by this commit (5) | |
Log message: git: updated to 2.37.0 Git v2.37 Release Notes ======================= UI, Workflows & Features * "vimdiff[123]" mergetool drivers have been reimplemented with a more generic layout mechanism. * "git -v" and "git -h" are now understood as "git \ --version" and "git --help". * The temporary files fed to external diff command are now generated inside a new temporary directory under the same basename. * "git log --since=X" will stop traversal upon seeing a commit that is older than X, but there may be commits behind it that is younger than X when the commit was created with a faulty clock. A new option is added to keep digging without stopping, and instead filter out commits with timestamp older than X. * "git -c branch.autosetupmerge=simple branch $A $B" will set the $B as $A's upstream only when $A and $B shares the same name, and "git -c push.default=simple" on branch $A would push to update the branch $A at the remote $B came from. Also more places use the sole remote, if exists, before defaulting to 'origin'. * A new doc has been added that lists tips for tools to work with Git's codebase. * "git remote -v" now shows the list-objects-filter used during fetching from the remote, if available. * With the new http.curloptResolve configuration, the CURLOPT_RESOLVE mechanism that allows cURL based applications to use pre-resolved IP addresses for the requests is exposed to the scripts. * "git add -i" was rewritten in C some time ago and has been in testing; the reimplementation is now exposed to general public by default. * Deprecate non-cone mode of the sparse-checkout feature. * Introduce a filesystem-dependent mechanism to optimize the way the bits for many loose object files are ensured to hit the disk platter. * The "do not remove the directory the user started Git in" logic, when Git cannot tell where that directory is, is disabled. Earlier we refused to run in such a case. * A mechanism to pack unreachable objects into a "cruft pack", instead of ejecting them into loose form to be reclaimed later, has been introduced. * Update the doctype written in gitweb output to xhtml5. * The "transfer.credentialsInURL" configuration variable controls what happens when a URL with embedded login credential is used on either "fetch" or "push". Credentials are currently only detected in `remote.<name>.url` config, not `remote.<name>.pushurl`. * "git revert" learns "--reference" option to use more \ human-readable reference to the commit it reverts in the message template it prepares for the user. * Various error messages that talk about the removal of "--preserve-merges" in "rebase" have been strengthened, \ and "rebase --abort" learned to get out of a state that was left by an earlier use of the option. Performance, Internal Implementation, Development Support etc. * The performance of the "untracked cache" feature has been improved when "--untracked-files=<mode>" and \ "status.showUntrackedFiles" are combined. * "git stash" works better with sparse index entries. * "git show :<path>" learned to work better with the sparse-index feature. * Introduce and apply coccinelle rule to discourage an explicit comparison between a pointer and NULL, and applies the clean-up to the maintenance track. * Preliminary code refactoring around transport and bundle code. * "sparse-checkout" learns to work better with the sparse-index feature. * A workflow change for translators are being proposed. git.pot is no longer version controlled and it is local responsibility of translators to generate it. * Plug the memory leaks from the trickiest API of all, the revision walker. * Rename .env_array member to .env in the child_process structure. * The fsmonitor--daemon handles even more corner cases when watching filesystem events. * A new bug() and BUG_if_bug() API is introduced to make it easier to uniformly log "detect multiple bugs and abort in the end" pattern. Fixes since v2.36 ----------------- * "git submodule update" without pathspec should silently skip an uninitialized submodule, but it started to become noisy by mistake. (merge 4f1ccef87c gc/submodule-update-part2 later to maint). * "diff-tree --stdin" has been broken for about a year, but 2.36 release broke it even worse by breaking running the command with <pathspec>, which in turn broke "gitk" and got noticed. This has been corrected by aligning its behaviour to that of "log". (merge f8781bfda3 jc/diff-tree-stdin-fix later to maint). * Regression fix for 2.36 where "git name-rev" started to sometimes reference strings after they are freed. (merge 45a14f578e rs/name-rev-fix-free-after-use later to maint). * "git show <commit1> <commit2>... -- <pathspec>" \ lost the pathspec when showing the second and subsequent commits, which has been corrected. (merge 5cdb38458e jc/show-pathspec-fix later to maint). * "git fast-export -- <pathspec>" lost the pathspec when showing the second and subsequent commits, which has been corrected. (merge d1c25272f5 rs/fast-export-pathspec-fix later to maint). * "git format-patch <args> -- <pathspec>" lost the \ pathspec when showing the second and subsequent commits, which has been corrected. (merge 91f8f7e46f rs/format-patch-pathspec-fix later to maint). * "git clone --origin X" leaked piece of memory that held value read from the clone.defaultRemoteName configuration variable, which has been plugged. (merge 6dfadc8981 jc/clone-remote-name-leak-fix later to maint). * Get rid of a bogus and over-eager coccinelle rule. (merge 08bdd3a185 jc/cocci-xstrdup-or-null-fix later to maint). * The path taken by "git multi-pack-index" command from the end user was compared with path internally prepared by the tool without first normalizing, which lead to duplicated paths not being noticed, which has been corrected. (merge 11f9e8de3d ds/midx-normalize-pathname-before-comparison later to maint). * Correct choices of C compilers used in various CI jobs. (merge 3506cae04f ab/cc-package-fixes later to maint). * Various cleanups to "git p4". (merge 4ff0108d9e jh/p4-various-fixups later to maint). * The progress meter of "git blame" was showing incorrect numbers when processing only parts of the file. (merge e5f5d7d42e ea/progress-partial-blame later to maint). * "git rebase --keep-base <upstream> <branch-to-rebase>" \ computed the commit to rebase onto incorrectly, which has been corrected. (merge 9e5ebe9668 ah/rebase-keep-base-fix later to maint). * Fix a leak of FILE * in an error codepath. (merge c0befa0c03 kt/commit-graph-plug-fp-leak-on-error later to maint). * Avoid problems from interaction between malloc_check and address sanitizer. (merge 067109a5e7 pw/test-malloc-with-sanitize-address later to maint). * The commit summary shown after making a commit is matched to what is given in "git status" not to use the break-rewrite heuristics. (merge 84792322ed rs/commit-summary-wo-break-rewrite later to maint). * Update a few end-user facing messages around EOL conversion. (merge c970d30c2c ah/convert-warning-message later to maint). * Trace2 documentation updates. (merge a6c80c313c js/trace2-doc-fixes later to maint). * Build procedure fixup. (merge 1fbfd96f50 mg/detect-compiler-in-c-locale later to maint). * "git pull" without "--recurse-submodules=<arg>" made submodule.recurse take precedence over fetch.recurseSubmodules by mistake, which has been corrected. (merge 5819417365 gc/pull-recurse-submodules later to maint). * "git bisect" was too silent before it is ready to start computing the actual bisection, which has been corrected. (merge f11046e6de cd/bisect-messages-from-pre-flight-states later to maint). * macOS CI jobs have been occasionally flaky due to tentative version skew between perforce and the homebrew packager. Instead of failing the whole CI job, just let it skip the p4 tests when this happens. (merge f15e00b463 cb/ci-make-p4-optional later to maint). * A bit of test framework fixes with a few fixes to issues found by valgrind. (merge 7c898554d7 ab/valgrind-fixes later to maint). * "git archive --add-file=<path>" picked up the raw permission bits from the path and propagated to zip output in some cases, without normalization, which has been corrected (tar output did not have this issue). (merge 6a61661967 jc/archive-add-file-normalize-mode later to maint). * "make coverage-report" without first running "make \ coverage" did not produce any meaningful result, which has been corrected. (merge 96ddfecc5b ep/coverage-report-wants-test-to-have-run later to maint). * The "--current" option of "git show-branch" should have \ been made incompatible with the "--reflog" mode, but this was not enforced, which has been corrected. (merge 41c64ae0e7 jc/show-branch-g-current later to maint). * "git fetch" unnecessarily failed when an unexpected optional section appeared in the output, which has been corrected. (merge 7709acf7be jt/fetch-peek-optional-section later to maint). * The way "git fetch" without "--update-head-ok" ensures \ that HEAD in no worktree points at any ref being updated was too wasteful, which has been optimized a bit. (merge f7400da800 os/fetch-check-not-current-branch later to maint). * "git fetch --recurse-submodules" from multiple remotes (either from a remote group, or "--all") used to make one extra "git \ fetch" in the submodules, which has been corrected. (merge 0353c68818 jc/avoid-redundant-submodule-fetch later to maint). * With a recent update to refuse access to repositories of other people by default, "sudo make install" and "sudo git describe" stopped working, which has been corrected. (merge 6b11e3d52e cb/path-owner-check-with-sudo-plus later to maint). * The tests that ensured merges stop when interfering local changes are present did not make sure that local changes are preserved; now they do. (merge 4b317450ce jc/t6424-failing-merge-preserve-local-changes later to maint). * Some real problems noticed by gcc 12 have been fixed, while false positives have been worked around. * Update the version of FreeBSD image used in Cirrus CI. (merge c58bebd4c6 pb/use-freebsd-12.3-in-cirrus-ci later to maint). * The multi-pack-index code did not protect the packfile it is going to depend on from getting removed while in use, which has been corrected. (merge 4090511e40 tb/midx-race-in-pack-objects later to maint). * Teach "git repack --geometric" work better with \ "--keep-pack" and avoid corrupting the repository when packsize limit is used. (merge 66731ff921 tb/geom-repack-with-keep-and-max later to maint). * The documentation on the interaction between "--add-file" and "--prefix" options of "git archive" has been improved. (merge a75910602a rs/document-archive-prefix later to maint). * A git subcommand like "git add -p" spawns a separate git process while relaying its command line arguments. A pathspec with only negative elements was mistakenly passed with an empty string, which has been corrected. (merge b02fdbc80a jc/all-negative-pathspec later to maint). * With a more targeted workaround in http.c in another topic, we may be able to lift this blanket "GCC12 dangling-pointer warning is broken and unsalvageable" workaround. (merge 419141e495 cb/buggy-gcc-12-workaround later to maint). * A misconfigured 'branch..remote' led to a bug in configuration parsing. (merge f1dfbd9ee0 gc/zero-length-branch-config-fix later to maint). * "git -c diff.submodule=log range-diff" did not show anything for submodules that changed in the ranges being compared, and "git -c diff.submodule=diff range-diff" did not work correctly. Fix this by including the "--submodule=short" output unconditionally to be compared. * In Git 2.36 we revamped the way how hooks are invoked. One change that is end-user visible is that the output of a hook is no longer directly connected to the standard output of "git" that spawns the hook, which was noticed post release. This is getting corrected. (merge a082345372 ab/hooks-regression-fix later to maint). * Updating the graft information invalidates the list of parents of in-core commit objects that used to be in the graft file. * "git show-ref --heads" (and "--tags") still iterated over \ all the refs only to discard refs outside the specified area, which has been corrected. (merge c0c9d35e27 tb/show-ref-optim later to maint). * Remove redundant copying (with index v3 and older) or possible over-reading beyond end of mmapped memory (with index v4) has been corrected. (merge 6d858341d2 zh/read-cache-copy-name-entry-fix later to maint). * Sample watchman interface hook sometimes failed to produce correctly formatted JSON message, which has been corrected. (merge 134047b500 sn/fsmonitor-missing-clock later to maint). * Use-after-free (with another forget-to-free) fix. (merge 323822c72b ab/remote-free-fix later to maint). * Remove a coccinelle rule that is no longer relevant. (merge b1299de4a1 jc/cocci-cleanup later to maint). * Other code cleanup, docfix, build fix, etc. (merge e6b2582da3 cm/reftable-0-length-memset later to maint). (merge 0b75e5bf22 ab/misc-cleanup later to maint). (merge 52e1ab8a76 ea/rebase-code-simplify later to maint). (merge 756d15923b sg/safe-directory-tests-and-docs later to maint). (merge d097a23bfa ds/do-not-call-bug-on-bad-refs later to maint). (merge c36c27e75c rs/t7812-pcre2-ws-bug-test later to maint). (merge 1da312742d gf/unused-includes later to maint). (merge 465b30a92d pb/submodule-recurse-mode-enum later to maint). (merge 82b28c4ed8 km/t3501-use-test-helpers later to maint). (merge 72315e431b sa/t1011-use-helpers later to maint). (merge 95b3002201 cg/vscode-with-gdb later to maint). (merge fbe5f6b804 tk/p4-utf8-bom later to maint). (merge 17f273ffba tk/p4-with-explicity-sync later to maint). (merge 944db25c60 kf/p4-multiple-remotes later to maint). (merge b014cee8de jc/update-ozlabs-url later to maint). (merge 4ec5008062 pb/ggg-in-mfc-doc later to maint). (merge af845a604d tb/receive-pack-code-cleanup later to maint). (merge 2acf4cf001 js/ci-gcc-12-fixes later to maint). (merge 05e280c0a6 jc/http-clear-finished-pointer later to maint). (merge 8c49d704ef fh/transport-push-leakfix later to maint). (merge 1d232d38bd tl/ls-tree-oid-only later to maint). (merge db7961e6a6 gc/document-config-worktree-scope later to maint). (merge ce18a30bb7 fs/ssh-default-key-command-doc later to maint). |
2022-06-28 13:38:00 by Thomas Klausner | Files touched by this commit (3952) |
Log message: *: recursive bump for perl 5.36 |
2022-05-03 03:26:55 by David H. Gutteridge | Files touched by this commit (4) | |
Log message: git: update to 2.36.0 Git 2.36 Release Notes ====================== Updates since Git 2.35 ---------------------- Backward compatibility warts * "git name-rev --stdin" has been deprecated and issues a warning when used; use "git name-rev --annotate-stdin" instead. * "git clone --filter=... --recurse-submodules" only makes the top-level a partial clone, while submodules are fully cloned. This behaviour is changed to pass the same filter down to the submodules. * With the fixes for CVE-2022-24765 that are common with versions of Git 2.30.4, 2.31.3, 2.32.2, 2.33.3, 2.34.3, and 2.35.3, Git has been taught not to recognise repositories owned by other users, in order to avoid getting affected by their config files and hooks. You can list the path to the safe/trusted repositories that may be owned by others on a multi-valued configuration variable `safe.directory` to override this behaviour, or use '*' to declare that you trust anything. Note to those who build from the source * Since Git 2.31, our source assumed that the compiler you use to build Git supports variadic macros, with an easy-to-use escape hatch to allow compilation without variadic macros with an request to report that you had to use the escape hatch to the list. Because we haven't heard from anybody who actually needed to use the escape hatch, it has been removed, making support of variadic macros a hard requirement. UI, Workflows & Features * Assorted updates to "git cat-file", especially "-h". * The command line completion (in contrib/) learns to complete arguments to give to "git sparse-checkout" command. * "git log --remerge-diff" shows the difference from mechanical merge result and the result that is actually recorded in a merge commit. * "git log" and friends learned an option --exclude-first-parent-only to propagate UNINTERESTING bit down only along the first-parent chain, just like --first-parent option shows commits that lack the UNINTERESTING bit only along the first-parent chain. * The command line completion script (in contrib/) learned to complete all Git subcommands, including the ones that are normally hidden, when GIT_COMPLETION_SHOW_ALL_COMMANDS is used. * "git branch" learned the "--recurse-submodules" option. * A user can forget to make a script file executable before giving it to "git bisect run". In such a case, all tests will exit with 126 or 127 error codes, even on revisions that are marked as good. Try to recognize this situation and stop iteration early. * When "index-pack" dies due to incoming data exceeding the maximum allowed input size, include the value of the limit in the error message. * The error message given by "git switch HEAD~4" has been clarified to suggest the "--detach" option that is required. * In sparse-checkouts, files mis-marked as missing from the working tree could lead to later problems. Such files were hard to discover, and harder to correct. Automatically detecting and correcting the marking of such files has been added to avoid these problems. * "git cat-file" learns "--batch-command" mode, which is a more flexible interface than the existing "--batch" or \ "--batch-check" modes, to allow different kinds of inquiries made. * The level of verbose output from the ort backend during inner merge has been aligned to that of the recursive backend. * "git remote rename A B", depending on the number of remote-tracking refs involved, takes long time renaming them. The command has been taught to show progress bar while making the user wait. * Bundle file format gets extended to allow a partial bundle, filtered by similar criteria you would give when making a partial/lazy clone. * A new built-in userdiff driver for kotlin has been added. * "git repack" learned a new configuration to disable triggering of age-old "update-server-info" command, which is rarely useful these days. * "git stash" does not allow subcommands it internally runs as its implementation detail, except for "git reset", to emit messages; now "git reset" part has also been squelched. * "git ls-tree" learns "--oid-only" option, similar to \ "--name-only", and more generalized "--format" option. * "git fetch --refetch" learned to fetch everything without telling the other side what we already have, which is useful when you cannot trust what you have in the local object store. * "git branch" gives hint when branch tracking cannot be established because fetch refspecs from multiple remote repositories overlap. * "git worktree list --porcelain" did not c-quote pathnames and lock reasons with unsafe bytes correctly, which is worked around by introducing NUL terminated output format with "-z". Performance, Internal Implementation, Development Support etc. * "git apply" (ab)used the util pointer of the string-list to keep track of how each symbolic link needs to be handled, which has been simplified by using strset. * Fix a hand-rolled alloca() imitation that may have violated alignment requirement of data being sorted in compatibility implementation of qsort_s() and stable qsort(). * Use the parse-options API in "git reflog" command. * The conditional inclusion mechanism of configuration files using "[includeIf <condition>]" learns to base its decision on the URL of the remote repository the repository interacts with. (merge 399b198489 jt/conditional-config-on-remote-url later to maint). * "git name-rev --stdin" does not behave like usual "--stdin" at all. Start the process of renaming it to "--annotate-stdin". (merge a2585719b3 jc/name-rev-stdin later to maint). * "git update-index", "git checkout-index", and "git \ clean" are taught to work better with the sparse checkout feature. * Use an internal call to reset_head() helper function instead of spawning "git checkout" in "rebase", and update code \ paths that are involved in the change. * Messages "ort" merge backend prepares while dealing with conflicted paths were unnecessarily confusing since it did not differentiate inner merges and outer merges. * Small modernization of the rerere-train script (in contrib/). * Use designated initializers we started using in mid 2017 in more parts of the codebase that are relatively quiescent. * Improve failure case behaviour of xdiff library when memory allocation fails. * General clean-up in reftable implementation, including clarification of the API documentation, tightening the code to honor documented length limit, etc. * Remove the escape hatch we added when we introduced the weather balloon to use variadic macros unconditionally, to make it official that we now have a hard dependency on the feature. * Makefile refactoring with a bit of suffixes rule stripping to optimize the runtime overhead. * "git stash drop" is reimplemented as an internal call to reflog_delete() function, instead of invoking "git reflog delete" via run_command() API. * Count string_list items in size_t, not "unsigned int". * The single-key interactive operation used by "git add -p" has been made more robust. * Remove unneeded <meta http-equiv=content-type...> from gitweb output. * "git name-rev" learned to use the generation numbers when setting the lower bound of searching commits used to explain the revision, when available, instead of committer time. * Replace core.fsyncObjectFiles with two new configuration variables, core.fsync and core.fsyncMethod. * Updates to refs traditionally weren't fsync'ed, but we can configure using core.fsync variable to do so. * "git reflog" command now uses parse-options API to parse its command line options. Fixes since v2.35 ----------------- * "rebase" and "stash" in secondary worktrees are broken in Git 2.35.0, which has been corrected. * "git pull --rebase" ignored the rebase.autostash configuration variable when the remote history is a descendant of our history, which has been corrected. (merge 3013d98d7a pb/pull-rebase-autostash-fix later to maint). * "git update-index --refresh" has been taught to deal better with racy timestamps (just like "git status" already does). (merge 2ede073fd2 ms/update-index-racy later to maint). * Avoid tests that are run under GIT_TRACE2 set from failing unnecessarily. (merge 944d808e42 js/test-unset-trace2-parents later to maint). * The merge-ort misbehaved when merge.renameLimit configuration is set too low and failed to find all renames. (merge 9ae39fef7f en/merge-ort-restart-optim-fix later to maint). * We explain that revs come first before the pathspec among command line arguments, but did not spell out that dashed options come before other args, which has been corrected. (merge c11f95010c tl/doc-cli-options-first later to maint). * "git add -p" rewritten in C regressed hunk splitting in some cases, which has been corrected. (merge 7008ddc645 pw/add-p-hunk-split-fix later to maint). * "git fetch --negotiate-only" is an internal command used by "git push" to figure out which part of our history is missing from the other side. It should never recurse into submodules even when fetch.recursesubmodules configuration variable is set, nor it should trigger "gc". The code has been tightened up to ensure it only does common ancestry discovery and nothing else. (merge de4eaae63a gc/fetch-negotiate-only-early-return later to maint). * The code path that verifies signatures made with ssh were made to work better on a system with CRLF line endings. (merge caeef01ea7 fs/ssh-signing-crlf later to maint). * "git sparse-checkout init" failed to write into $GIT_DIR/info directory when the repository was created without one, which has been corrected to auto-create it. (merge 7f44842ac1 jt/sparse-checkout-leading-dir-fix later to maint). * Cloning from a repository that does not yet have any branches or tags but has other refs resulted in a "remote transport reported error", which has been corrected. (merge dccea605b6 jt/clone-not-quite-empty later to maint). * Mark in various places in the code that the sparse index and the split index features are mutually incompatible. (merge 451b66c533 js/sparse-vs-split-index later to maint). * Update the logic to compute alignment requirement for our mem-pool. (merge e38bcc66d8 jc/mem-pool-alignment later to maint). * Pick a better random number generator and use it when we prepare temporary filenames. (merge 47efda967c bc/csprng-mktemps later to maint). * Update the contributor-facing documents on proposed log messages. (merge cdba0295b0 jc/doc-log-messages later to maint). * When "git fetch --prune" failed to prune the refs it wanted to prune, the command issued error messages but exited with exit status 0, which has been corrected. (merge c9e04d905e tg/fetch-prune-exit-code-fix later to maint). * Problems identified by Coverity in the reftable code have been corrected. (merge 01033de49f hn/reftable-coverity-fixes later to maint). * A bug that made multi-pack bitmap and the object order out-of-sync, making the .midx data corrupt, has been fixed. (merge f8b60cf99b tb/midx-bitmap-corruption-fix later to maint). * The build procedure has been taught to notice older version of zlib and enable our replacement uncompress2() automatically. (merge 07564773c2 ab/auto-detect-zlib-compress2 later to maint). * Interaction between fetch.negotiationAlgorithm and feature.experimental configuration variables has been corrected. (merge 714edc620c en/fetch-negotiation-default-fix later to maint). * "git diff --diff-filter=aR" is now parsed correctly. (merge 75408ca949 js/diff-filter-negation-fix later to maint). * When "git subtree" wants to create a merge, it used "git \ merge" and let it be affected by end-user's "merge.ff" configuration, which has been corrected. (merge 9158a3564a tk/subtree-merge-not-ff-only later to maint). * Unlike "git apply", "git patch-id" did not handle patches with hunks that has only 1 line in either preimage or postimage, which has been corrected. (merge 757e75c81e jz/patch-id-hunk-header-parsing-fix later to maint). * "receive-pack" checks if it will do any ref updates (various conditions could reject a push) before received objects are taken out of the temporary directory used for quarantine purposes, so that a push that is known-to-fail will not leave crufts that a future "gc" needs to clean up. (merge 5407764069 cb/clear-quarantine-early-on-all-ref-update-errors later to \ maint). * When there is no object to write .bitmap file for, "git multi-pack-index" triggered an error, instead of just skipping, which has been corrected. (merge eb57277ba3 tb/midx-no-bitmap-for-no-objects later to maint). * "git cmd -h" outside a repository should error out cleanly for many commands, but instead it hit a BUG(), which has been corrected. (merge 87ad07d735 js/short-help-outside-repo-fix later to maint). * "working tree" and "per-worktree ref" were in glossary, but "worktree" itself wasn't, which has been corrected. (merge 2df5387ed0 jc/glossary-worktree later to maint). * L10n support for a few error messages. (merge 3d3c23b3a7 bs/forbid-i18n-of-protocol-token-in-fetch-pack later to maint). * Test modernization. (merge d4fe066e4b sy/t0001-use-path-is-helper later to maint). * "git log --graph --graph" used to leak a graph structure, and there was no way to countermand "--graph" that appear earlier on the command line. A "--no-graph" option has been added and resource leakage has been plugged. * Error output given in response to an ambiguous object name has been improved. (merge 3a73c1dfaf ab/ambiguous-object-name later to maint). * "git sparse-checkout" wants to work with per-worktree configuration, but did not work well in a worktree attached to a bare repository. (merge 3ce1138272 ds/sparse-checkout-requires-per-worktree-config later to maint). * Setting core.untrackedCache to true failed to add the untracked cache extension to the index. * Workaround we have for versions of PCRE2 before their version 10.36 were in effect only for their versions newer than 10.36 by mistake, which has been corrected. (merge 97169fc361 rs/pcre-invalid-utf8-fix-fix later to maint). * Document Taylor as a new member of Git PLC at SFC. Welcome. (merge e8d56ca863 tb/coc-plc-update later to maint). * "git checkout -b branch/with/multi/level/name && git stash" only recorded the last level component of the branch name, which has been corrected. * Check the return value from parse_tree_indirect() to turn segfaults into calls to die(). (merge 8d2eaf649a gc/parse-tree-indirect-errors later to maint). * Newer version of GPGSM changed its output in a backward incompatible way to break our code that parses its output. It also added more processes our tests need to kill when cleaning up. Adjustments have been made to accommodate these changes. (merge b0b70d54c4 fs/gpgsm-update later to maint). * The untracked cache newly computed weren't written back to the on-disk index file when there is no other change to the index, which has been corrected. * "git config -h" did not describe the "--type" option \ correctly. (merge 5445124fad mf/fix-type-in-config-h later to maint). * The way generation number v2 in the commit-graph files are (not) handled has been corrected. (merge 6dbf4b8172 ds/commit-graph-gen-v2-fixes later to maint). * The method to trigger malloc check used in our tests no longer work with newer versions of glibc. (merge baedc59543 ep/test-malloc-check-with-glibc-2.34 later to maint). * When "git fetch --recurse-submodules" grabbed submodule commits that would be needed to recursively check out newly fetched commits in the superproject, it only paid attention to submodules that are in the current checkout of the superproject. We now do so for all submodules that have been run "git submodule init" on. * "git rebase $base $non_branch_commit", when $base is an ancestor or the $non_branch_commit, modified the current branch, which has been corrected. * When "shallow" information is updated, we forgot to update the in-core equivalent, which has been corrected. * When creating a loose object file, we didn't report the exact filename of the file we failed to fsync, even though the information was readily available, which has been corrected. * "git am" can read from the standard input when no mailbox is given on the command line, but the end-user gets no indication when it happens, making Git appear stuck. (merge 7b20af6a06 jc/mailsplit-warn-on-tty later to maint). * "git mv" failed to refresh the cached stat information for the entry it moved. (merge b7f9130a06 vd/mv-refresh-stat later to maint). |
2021-10-13 08:56:09 by Adam Ciarcinski | Files touched by this commit (4) | |
Log message: git: updated to 2.33.1 Git 2.33.1 Release Notes ======================== This primarily is to backport various fixes accumulated during the development towards Git 2.34, the next feature release. Fixes since v2.33 ----------------- * The unicode character width table (used for output alignment) has been updated. * Input validation of "git pack-objects --stdin-packs" has been corrected. * Bugfix for common ancestor negotiation recently introduced in "git push" codepath. * "git pull" had various corner cases that were not well thought out around its --rebase backend, e.g. "git pull --ff-only" did not stop but went ahead and rebased when the history on other side is not a descendant of our history. The series tries to fix them up. * "git apply" miscounted the bytes and failed to read to the end of binary hunks. * "git range-diff" code clean-up. * "git commit --fixup" now works with "--edit" again, after \ it was broken in v2.32. * Use upload-artifacts v1 (instead of v2) for 32-bit linux, as the new version has a blocker bug for that architecture. * Checking out all the paths from HEAD during the last conflicted step in "git rebase" and continuing would cause the step to be skipped (which is expected), but leaves MERGE_MSG file behind in $GIT_DIR and confuses the next "git commit", which has been corrected. * Various bugs in "git rebase -r" have been fixed. * mmap() imitation used to call xmalloc() that dies upon malloc() failure, which has been corrected to just return an error to the caller to be handled. * "git diff --relative" segfaulted and/or produced incorrect result when there are unmerged paths. * The delayed checkout code path in "git checkout" etc. were chatty even when --quiet and/or --no-progress options were given. * "git branch -D <branch>" used to refuse to remove a broken branch ref that points at a missing commit, which has been corrected. * Build update for Apple clang. * The parser for the "--nl" option of "git column" has been corrected. * "git upload-pack" which runs on the other side of "git fetch" forgot to take the ref namespaces into account when handling want-ref requests. * The sparse-index support can corrupt the index structure by storing a stale and/or uninitialized data, which has been corrected. * Buggy tests could damage repositories outside the throw-away test area we created. We now by default export GIT_CEILING_DIRECTORIES to limit the damage from such a stray test. * Even when running "git send-email" without its own threaded discussion support, a threading related header in one message is carried over to the subsequent message to result in an unwanted threading, which has been corrected. * The output from "git fast-export", when its anonymization feature is in use, showed an annotated tag incorrectly. * Recent "diff -m" changes broke "gitk", which has been \ corrected. * "git maintenance" scheduler fix for macOS. * A pathname in an advice message has been made cut-and-paste ready. * The "git apply -3" code path learned not to bother the lower level merge machinery when the three-way merge can be trivially resolved without the content level merge. * The code that optionally creates the *.rev reverse index file has been optimized to avoid needless computation when it is not writing the file out. * "git range-diff -I... <range> <range>" segfaulted, \ which has been corrected. * The order in which various files that make up a single (conceptual) packfile has been reevaluated and straightened up. This matters in correctness, as an incomplete set of files must not be shown to a running Git. * The "mode" word is useless in a call to open(2) that does not create a new file. Such a call in the files backend of the ref subsystem has been cleaned up. * "git update-ref --stdin" failed to flush its output as needed, which potentially led the conversation to a deadlock. * When "git am --abort" fails to abort correctly, it still exited with exit status of 0, which has been corrected. * Correct nr and alloc members of strvec struct to be of type size_t. * "git stash", where the tentative change involves changing a directory to a file (or vice versa), was confused, which has been corrected. * "git clone" from a repository whose HEAD is unborn into a bare repository didn't follow the branch name the other side used, which is corrected. * "git cvsserver" had a long-standing bug in its authentication code, which has finally been corrected (it is unclear and is a separate question if anybody is seriously using it, though). * "git difftool --dir-diff" mishandled symbolic links. * Sensitive data in the HTTP trace were supposed to be redacted, but we failed to do so in HTTP/2 requests. * "make clean" has been updated to remove leftover .depend/ directories, even when it is not told to use them to compute header dependencies. * Protocol v0 clients can get stuck parsing a malformed feature line. Also contains various documentation updates and code clean-ups. |