| Git v2.47 Release Notes |
| ======================= |
| |
| UI, Workflows & Features |
| ------------------------ |
| |
| * Many Porcelain commands that internally use the merge machinery |
| were taught to consistently honor the diff.algorithm configuration. |
| |
| * A few descriptions in "git show-ref -h" have been clarified. |
| |
| * A 'P' command to "git add -p" that passes the patch hunk to the |
| pager has been added. |
| |
| * "git grep -W" omits blank lines that follow the found function at |
| the end of the file, just like it omits blank lines before the next |
| function. |
| |
| * The value of http.proxy can have "path" at the end for a socks |
| proxy that listens to a unix-domain socket, but we started to |
| discard it when we taught proxy auth code path to use the |
| credential helpers, which has been corrected. |
| |
| * The code paths to compact multiple reftable files have been updated |
| to correctly deal with multiple compaction triggering at the same |
| time. |
| |
| * Support to specify ref backend for submodules has been enhanced. |
| |
| * "git svn" has been taught about svn:global-ignores property |
| recent versions of Subversion has. |
| |
| * The default object hash and ref backend format used to be settable |
| only with explicit command line option to "git init" and |
| environment variables, but now they can be configured in the user's |
| global and system wide configuration. |
| |
| * "git send-email" learned "--translate-aliases" option that reads |
| addresses from the standard input and emits the result of applying |
| aliases on them to the standard output. |
| |
| * 'git for-each-ref' learned a new "--format" atom to find the branch |
| that the history leading to a given commit "%(is-base:<commit>)" is |
| likely based on. |
| |
| * The command line prompt support used to be littered with bash-isms, |
| which has been corrected to work with more shells. |
| |
| * Support for the RUNTIME_PREFIX feature has been added to z/OS port. |
| |
| * "git send-email" learned "--mailmap" option to allow rewriting the |
| recipient addresses. |
| |
| * "git mergetool" learned to use VSCode as a merge backend. |
| |
| * "git pack-redundant" has been marked for removal in Git 3.0. |
| |
| |
| Performance, Internal Implementation, Development Support etc. |
| -------------------------------------------------------------- |
| |
| * A build tweak knob has been simplified by not setting the value |
| that is already the default; another unused one has been removed. |
| |
| * A CI job that use clang-format to check coding style issues in new |
| code has been added. |
| |
| * The reviewing guidelines document now explicitly encourages people |
| to give positive reviews and how. |
| |
| * Test script linter has been updated to catch an attempt to use |
| one-shot export construct "VAR=VAL func" for shell functions (which |
| does not work for some shells) better. |
| |
| * Some project conventions have been added to CodingGuidelines. |
| |
| * In the refs subsystem, implicit reliance of the_repository has been |
| eliminated; the repository associated with the ref store object is |
| used instead. |
| |
| * Various tests in reftable library have been rewritten using the unit test |
| framework. |
| |
| * A test that fails on an unusually slow machine was found, and made |
| less likely to cause trouble by lengthening the expiry value it |
| uses. |
| |
| * An existing test of hashmap API has been rewritten with the |
| unit-test framework. |
| |
| * A policy document that describes platform support levels and |
| expectation on platform stakeholders has been introduced. |
| |
| * The refs API has been taught to give symref target information to |
| the users of ref iterators, allowing for-each-ref and friends to |
| avoid an extra ref_resolve_* API call per a symbolic ref. |
| |
| * Unit-test framework has learned a simple control structure to allow |
| embedding test statements in-line instead of having to create a new |
| function to contain them. |
| |
| * Incremental updates of multi-pack index files is getting worked on. |
| |
| * Use of API functions that implicitly depend on the_repository |
| object in the config subsystem has been rewritten to pass a |
| repository object through the callchain. |
| |
| * Unused parameters have been either marked as UNUSED to squelch |
| -Wunused warnings or dropped from many functions.. |
| |
| * The code in the reftable library has been cleaned up by discarding |
| unused "generic" interface. |
| |
| * The underlying machinery for "git diff-index" has long been made to |
| expand the sparse index as needed, but the command fully expanded |
| the sparse index upfront, which now has been taught not to do. |
| |
| * More trace2 events at key points on push and fetch code paths have |
| been added. |
| |
| * Make our codebase compilable with the -Werror=unused-parameter |
| option. |
| |
| |
| Fixes since v2.46 |
| ----------------- |
| |
| * "git add -p" by users with diff.suppressBlankEmpty set to true |
| failed to parse the patch that represents an unmodified empty line |
| with an empty line (not a line with a single space on it), which |
| has been corrected. |
| |
| * "git checkout --ours" (no other arguments) complained that the |
| option is incompatible with branch switching, which is technically |
| correct, but found confusing by some users. It now says that the |
| user needs to give pathspec to specify what paths to checkout. |
| |
| * It has been documented that we avoid "VAR=VAL shell_func" and why. |
| |
| * "git rebase --help" referred to "offset" (the difference between |
| the location a change was taken from and the change gets replaced) |
| incorrectly and called it "fuzz", which has been corrected. |
| |
| * "git notes add -m '' --allow-empty" and friends that take prepared |
| data to create notes should not invoke an editor, but it started |
| doing so since Git 2.42, which has been corrected. |
| |
| * An expensive operation to prepare tracing was done in re-encoding |
| code path even when the tracing was not requested, which has been |
| corrected. |
| |
| * More leakfixes. |
| (merge f30bfafcd4 ps/leakfixes-part-3 later to maint). |
| |
| * The credential helper to talk to OSX keychain sometimes sent |
| garbage bytes after the username, which has been corrected. |
| |
| * A recent update broke "git ls-remote" used outside a repository, |
| which has been corrected. |
| |
| * The patch parser in 'git apply' has been a bit more lenient against |
| unexpected mode bits, like 100664, recorded on extended header lines. |
| (merge e95d515141 jk/apply-patch-mode-check-fix later to maint). |
| |
| * "git config --value=foo --fixed-value section.key newvalue" barfed |
| when the existing value in the configuration file used the |
| valueless true syntax, which has been corrected. |
| |
| * The patch parser in "git patch-id" has been tightened to avoid |
| getting confused by lines that look like a patch header in the log |
| message. |
| (merge a6e9429f72 jc/patch-id later to maint). |
| |
| * "git reflog expire" failed to honor annotated tags when computing |
| reachable commits. |
| |
| * A flakey test and incorrect calls to strtoX() functions have been |
| fixed. |
| |
| * Follow-up on 2.45.1 regression fix. |
| |
| * "git rev-list ... | git diff-tree -p --remerge-diff --stdin" should |
| behave more or less like "git log -p --remerge-diff" but instead it |
| crashed, forgetting to prepare a temporary object store needed. |
| |
| * "git bundle unbundle" outside a repository triggered a BUG() |
| unnecessarily, which has been corrected. |
| (merge 96a9a3e42e ps/bundle-outside-repo-fix later to maint). |
| |
| * Maintenance tasks other than "gc" now properly go background when |
| "git maintenance" runs them. |
| |
| * We created a useless pseudo-merge reachability bitmap that is about |
| 0 commits, and attempted to include commits that are not in packs, |
| which made no sense. These bugs have been corrected. |
| (merge a72dfab8b8 tb/pseudo-merge-bitmap-fixes later to maint). |
| |
| * "git rebase -x --quiet" was not quiet, which was corrected. |
| |
| * The code path for compacting reftable files saw some bugfixes |
| against concurrent operation. |
| |
| * The code forgot to discard unnecessary in-core commit buffer data |
| for commits that "git log --skip=<number>" traversed but omitted |
| from the output, which has been corrected. |
| (merge 6bd2ae67a5 jk/free-commit-buffer-of-skipped-commits later to maint). |
| |
| * Other code cleanup, docfix, build fix, etc. |
| (merge bb0498b1bb jc/how-to-maintain-updates later to maint). |
| (merge 0d66f601a9 jc/tests-no-useless-tee later to maint). |
| (merge 170cdfc5a4 jc/grammo-fixes later to maint). |
| (merge 983555a1f2 jc/how-to-maintain-updates later to maint). |
| (merge e3209bd4df ps/stash-keep-untrack-empty-fix later to maint). |
| (merge 44db6f75cc jc/coding-style-c-operator-with-spaces later to maint). |
| (merge 596f4ff6ad cl/config-regexp-docfix later to maint). |
| (merge 4881328617 aa/cat-file-batch-output-doc later to maint). |
| (merge 1609470409 jc/config-doc-update later to maint). |
| (merge d4dc0efd7d rj/compat-terminal-unused-fix later to maint). |