<feed xmlns='http://www.w3.org/2005/Atom'>
<title>pkgsrc/devel/git-docs, branch trunk</title>
<subtitle>[no description]</subtitle>
<id>https://git.osdyson.ru/mirror/pkgsrc/atom?h=trunk</id>
<link rel='self' href='https://git.osdyson.ru/mirror/pkgsrc/atom?h=trunk'/>
<link rel='alternate' type='text/html' href='https://git.osdyson.ru/mirror/pkgsrc/'/>
<updated>2022-10-07T10:10:05Z</updated>
<entry>
<title>git: updated to 2.38.0</title>
<updated>2022-10-07T10:10:05Z</updated>
<author>
<name>adam</name>
<email>adam@pkgsrc.org</email>
</author>
<published>2022-10-07T10:10:05Z</published>
<link rel='alternate' type='text/html' href='https://git.osdyson.ru/mirror/pkgsrc/commit/?id=c9b0a8ec607a2f4835eb6527846a34a525eefd5c'/>
<id>urn:sha1:c9b0a8ec607a2f4835eb6527846a34a525eefd5c</id>
<content type='text'>
Git v2.38 Release Notes
=======================

UI, Workflows &amp; 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&lt;max-hits&gt;" 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=&lt;ident&gt;" can be told to add an in-body
   "From:" line even for commits that are authored by the given
   &lt;ident&gt; 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
   &lt;subcmd&gt;" in "git help &lt;subcmd&gt;" 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).</content>
</entry>
<entry>
<title>git: updated to 2.37.0</title>
<updated>2022-07-06T11:53:59Z</updated>
<author>
<name>adam</name>
<email>adam@pkgsrc.org</email>
</author>
<published>2022-07-06T11:53:59Z</published>
<link rel='alternate' type='text/html' href='https://git.osdyson.ru/mirror/pkgsrc/commit/?id=9c7d9e13b9db3169ab90831c1c0665b6c85e38c9'/>
<id>urn:sha1:9c7d9e13b9db3169ab90831c1c0665b6c85e38c9</id>
<content type='text'>
Git v2.37 Release Notes
=======================

UI, Workflows &amp; 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.&lt;name&gt;.url` config, not `remote.&lt;name&gt;.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=&lt;mode&gt;" and "status.showUntrackedFiles"
   are combined.

 * "git stash" works better with sparse index entries.

 * "git show :&lt;path&gt;" 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
   &lt;pathspec&gt;, 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 &lt;commit1&gt; &lt;commit2&gt;... -- &lt;pathspec&gt;" 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 -- &lt;pathspec&gt;" 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 &lt;args&gt; -- &lt;pathspec&gt;" 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 &lt;upstream&gt; &lt;branch-to-rebase&gt;" 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=&lt;arg&gt;" 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=&lt;path&gt;" 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).</content>
</entry>
<entry>
<title>*: recursive bump for perl 5.36</title>
<updated>2022-06-28T11:30:51Z</updated>
<author>
<name>wiz</name>
<email>wiz@pkgsrc.org</email>
</author>
<published>2022-06-28T11:30:51Z</published>
<link rel='alternate' type='text/html' href='https://git.osdyson.ru/mirror/pkgsrc/commit/?id=5da87348cb57d8d1df6910cb892114c53beab8b0'/>
<id>urn:sha1:5da87348cb57d8d1df6910cb892114c53beab8b0</id>
<content type='text'>
</content>
</entry>
<entry>
<title>git: update to 2.36.0</title>
<updated>2022-05-03T01:26:55Z</updated>
<author>
<name>gutteridge</name>
<email>gutteridge@pkgsrc.org</email>
</author>
<published>2022-05-03T01:26:55Z</published>
<link rel='alternate' type='text/html' href='https://git.osdyson.ru/mirror/pkgsrc/commit/?id=6e9edec58eeff5e60bb5d4d79d9875b2317c011c'/>
<id>urn:sha1:6e9edec58eeff5e60bb5d4d79d9875b2317c011c</id>
<content type='text'>
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 &amp; 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 &lt;condition&gt;]" 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 &lt;meta http-equiv=content-type...&gt; 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 &amp;&amp; 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).</content>
</entry>
<entry>
<title>git: updated to 2.33.1</title>
<updated>2021-10-13T06:56:09Z</updated>
<author>
<name>adam</name>
<email>adam@pkgsrc.org</email>
</author>
<published>2021-10-13T06:56:09Z</published>
<link rel='alternate' type='text/html' href='https://git.osdyson.ru/mirror/pkgsrc/commit/?id=a2c0e5e6c35062db2088a0a703011a1a6655fe78'/>
<id>urn:sha1:a2c0e5e6c35062db2088a0a703011a1a6655fe78</id>
<content type='text'>
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 &lt;branch&gt;" 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... &lt;range&gt; &lt;range&gt;" 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.</content>
</entry>
<entry>
<title>git: updated to 2.32.0</title>
<updated>2021-06-13T18:36:31Z</updated>
<author>
<name>adam</name>
<email>adam@pkgsrc.org</email>
</author>
<published>2021-06-13T18:36:31Z</published>
<link rel='alternate' type='text/html' href='https://git.osdyson.ru/mirror/pkgsrc/commit/?id=3436505f1faf4e2efe7b57ec0766fd1ec5ec835b'/>
<id>urn:sha1:3436505f1faf4e2efe7b57ec0766fd1ec5ec835b</id>
<content type='text'>
Git 2.32 Release Notes
======================

Backward compatibility notes
----------------------------

 * ".gitattributes", ".gitignore", and ".mailmap" files that are
   symbolic links are ignored.

 * "git apply --3way" used to first attempt a straight application,
   and only fell back to the 3-way merge algorithm when the stright
   application failed.  Starting with this version, the command will
   first try the 3-way merge algorithm and only when it fails (either
   resulting with conflict or the base versions of blobs are missing),
   falls back to the usual patch application.


Updates since v2.31
-------------------

UI, Workflows &amp; Features

 * It does not make sense to make ".gitattributes", ".gitignore" and
   ".mailmap" symlinks, as they are supposed to be usable from the
   object store (think: bare repositories where HEAD:.mailmap etc. are
   used).  When these files are symbolic links, we used to read the
   contents of the files pointed by them by mistake, which has been
   corrected.

 * "git stash show" learned to optionally show untracked part of the
   stash.

 * "git log --format='...'" learned "%(describe)" placeholder.

 * "git repack" so far has been only capable of repacking everything
   under the sun into a single pack (or split by size).  A cleverer
   strategy to reduce the cost of repacking a repository has been
   introduced.

 * The http codepath learned to let the credential layer to cache the
   password used to unlock a certificate that has successfully been
   used.

 * "git commit --fixup=&lt;commit&gt;", which was to tweak the changes made
   to the contents while keeping the original log message intact,
   learned "--fixup=(amend|reword):&lt;commit&gt;", that can be used to
   tweak both the message and the contents, and only the message,
   respectively.

 * "git send-email" learned to honor the core.hooksPath configuration.

 * "git format-patch -v&lt;n&gt;" learned to allow a reroll count that is
   not an integer.

 * "git commit" learned "--trailer &lt;key&gt;[=&lt;value&gt;]" option; together
   with the interpret-trailers command, this will make it easier to
   support custom trailers.

 * "git clone --reject-shallow" option fails the clone as soon as we
   notice that we are cloning from a shallow repository.

 * A configuration variable has been added to force tips of certain
   refs to be given a reachability bitmap.

 * "gitweb" learned "e-mail privacy" feature to redact strings that
   look like e-mail addresses on various pages.

 * "git apply --3way" has always been "to fall back to 3-way merge
   only when straight application fails". Swap the order of falling
   back so that 3-way is always attempted first (only when the option
   is given, of course) and then straight patch application is used as
   a fallback when it fails.

 * "git apply" now takes "--3way" and "--cached" at the same time, and
   work and record results only in the index.

 * The command line completion (in contrib/) has learned that
   CHERRY_PICK_HEAD is a possible pseudo-ref.

 * Userdiff patterns for "Scheme" has been added.

 * "git log" learned "--diff-merges=&lt;style&gt;" option, with an
   associated configuration variable log.diffMerges.

 * "git log --format=..." placeholders learned %ah/%ch placeholders to
   request the --date=human output.

 * Replace GIT_CONFIG_NOSYSTEM mechanism to decline from reading the
   system-wide configuration file with GIT_CONFIG_SYSTEM that lets
   users specify from which file to read the system-wide configuration
   (setting it to an empty file would essentially be the same as
   setting NOSYSTEM), and introduce GIT_CONFIG_GLOBAL to override the
   per-user configuration in $HOME/.gitconfig.

 * "git add" and "git rm" learned not to touch those paths that are
   outside of sparse checkout.

 * "git rev-list" learns the "--filter=object:type=&lt;type&gt;" option,
   which can be used to exclude objects of the given kind from the
   packfile generated by pack-objects.

 * The command line completion (in contrib/) for "git stash" has been
   updated.

 * "git subtree" updates.

 * It is now documented that "format-patch" skips merges.

 * Options to "git pack-objects" that take numeric values like
   --window and --depth should not accept negative values; the input
   validation has been tightened.

 * The way the command line specified by the trailer.&lt;token&gt;.command
   configuration variable receives the end-user supplied value was
   both error prone and misleading.  An alternative to achieve the
   same goal in a safer and more intuitive way has been added, as
   the trailer.&lt;token&gt;.cmd configuration variable, to replace it.

 * "git add -i --dry-run" does not dry-run, which was surprising.  The
   combination of options has taught to error out.

 * "git push" learns to discover common ancestor with the receiving
   end over protocol v2.  This will hopefully make "git push" as
   efficient as "git fetch" in avoiding objects from getting
   transferred unnecessarily.

 * "git mailinfo" (hence "git am") learned the "--quoted-cr" option to
   control how lines ending with CRLF wrapped in base64 or qp are
   handled.


Performance, Internal Implementation, Development Support etc.

 * Rename detection rework continues.

 * GIT_TEST_FAIL_PREREQS is a mechanism to skip test pieces with
   prerequisites to catch broken tests that depend on the side effects
   of optional pieces, but did not work at all when negative
   prerequisites were involved.
   (merge 27d578d904 jk/fail-prereq-testfix later to maint).

 * "git diff-index" codepath has been taught to trust fsmonitor status
   to reduce number of lstat() calls.
   (merge 7e5aa13d2c nk/diff-index-fsmonitor later to maint).

 * Reorganize Makefile to allow building git.o and other essential
   objects without extra stuff needed only for testing.

 * Preparatory API changes for parallel checkout.

 * A simple IPC interface gets introduced to build services like
   fsmonitor on top.

 * Fsck API clean-up.

 * SECURITY.md that is facing individual contributors and end users
   has been introduced.  Also a procedure to follow when preparing
   embargoed releases has been spelled out.
   (merge 09420b7648 js/security-md later to maint).

 * Optimize "rev-list --use-bitmap-index --objects" corner case that
   uses negative tags as the stopping points.

 * CMake update for vsbuild.

 * An on-disk reverse-index to map the in-pack location of an object
   back to its object name across multiple packfiles is introduced.

 * Generate [ec]tags under $(QUIET_GEN).

 * Clean-up codepaths that implements "git send-email --validate"
   option and improves the message from it.

 * The last remnant of gettext-poison has been removed.

 * The test framework has been taught to optionally turn the default
   merge strategy to "ort" throughout the system where we use
   three-way merges internally, like cherry-pick, rebase etc.,
   primarily to enhance its test coverage (the strategy has been
   available as an explicit "-s ort" choice).

 * A bit of code clean-up and a lot of test clean-up around userdiff
   area.

 * Handling of "promisor packs" that allows certain objects to be
   missing and lazily retrievable has been optimized (a bit).

 * When packet_write() fails, we gave an extra error message
   unnecessarily, which has been corrected.

 * The checkout machinery has been taught to perform the actual
   write-out of the files in parallel when able.

 * Show errno in the trace output in the error codepath that calls
   read_raw_ref method.

 * Effort to make the command line completion (in contrib/) safe with
   "set -u" continues.

 * Tweak a few tests for "log --format=..." that show timestamps in
   various formats.

 * The reflog expiry machinery has been taught to emit trace events.

 * Over-the-wire protocol learns a new request type to ask for object
   sizes given a list of object names.


Fixes since v2.31
-----------------

 * The fsmonitor interface read from its input without making sure
   there is something to read from.  This bug is new in 2.31
   timeframe.

 * The data structure used by fsmonitor interface was not properly
   duplicated during an in-core merge, leading to use-after-free etc.

 * "git bisect" reimplemented more in C during 2.30 timeframe did not
   take an annotated tag as a good/bad endpoint well.  This regression
   has been corrected.

 * Fix macros that can silently inject unintended null-statements.

 * CALLOC_ARRAY() macro replaces many uses of xcalloc().

 * Update insn in Makefile comments to run fuzz-all target.

 * Fix a corner case bug in "git mv" on case insensitive systems,
   which was introduced in 2.29 timeframe.

 * We had a code to diagnose and die cleanly when a required
   clean/smudge filter is missing, but an assert before that
   unnecessarily fired, hiding the end-user facing die() message.
   (merge 6fab35f748 mt/cleanly-die-upon-missing-required-filter later to maint).

 * Update C code that sets a few configuration variables when a remote
   is configured so that it spells configuration variable names in the
   canonical camelCase.
   (merge 0f1da600e6 ab/remote-write-config-in-camel-case later to maint).

 * A new configuration variable has been introduced to allow choosing
   which version of the generation number gets used in the
   commit-graph file.
   (merge 702110aac6 ds/commit-graph-generation-config later to maint).

 * Perf test update to work better in secondary worktrees.
   (merge 36e834abc1 jk/perf-in-worktrees later to maint).

 * Updates to memory allocation code around the use of pcre2 library.
   (merge c1760352e0 ab/grep-pcre2-allocfix later to maint).

 * "git -c core.bare=false clone --bare ..." would have segfaulted,
   which has been corrected.
   (merge 75555676ad bc/clone-bare-with-conflicting-config later to maint).

 * When "git checkout" removes a path that does not exist in the
   commit it is checking out, it wasn't careful enough not to follow
   symbolic links, which has been corrected.
   (merge fab78a0c3d mt/checkout-remove-nofollow later to maint).

 * A few option description strings started with capital letters,
   which were corrected.
   (merge 5ee90326dc cc/downcase-opt-help later to maint).

 * Plug or annotate remaining leaks that trigger while running the
   very basic set of tests.
   (merge 68ffe095a2 ah/plugleaks later to maint).

 * The hashwrite() API uses a buffering mechanism to avoid calling
   write(2) too frequently. This logic has been refactored to be
   easier to understand.
   (merge ddaf1f62e3 ds/clarify-hashwrite later to maint).

 * "git cherry-pick/revert" with or without "--[no-]edit" did not spawn
   the editor as expected (e.g. "revert --no-edit" after a conflict
   still asked to edit the message), which has been corrected.
   (merge 39edfd5cbc en/sequencer-edit-upon-conflict-fix later to maint).

 * "git daemon" has been tightened against systems that take backslash
   as directory separator.
   (merge 9a7f1ce8b7 rs/daemon-sanitize-dir-sep later to maint).

 * A NULL-dereference bug has been corrected in an error codepath in
   "git for-each-ref", "git branch --list" etc.
   (merge c685450880 jk/ref-filter-segfault-fix later to maint).

 * Streamline the codepath to fix the UTF-8 encoding issues in the
   argv[] and the prefix on macOS.
   (merge c7d0e61016 tb/precompose-prefix-simplify later to maint).

 * The command-line completion script (in contrib/) had a couple of
   references that would have given a warning under the "-u" (nounset)
   option.
   (merge c5c0548d79 vs/completion-with-set-u later to maint).

 * When "git pack-objects" makes a literal copy of a part of existing
   packfile using the reachability bitmaps, its update to the progress
   meter was broken.
   (merge 8e118e8490 jk/pack-objects-bitmap-progress-fix later to maint).

 * The dependencies for config-list.h and command-list.h were broken
   when the former was split out of the latter, which has been
   corrected.
   (merge 56550ea718 sg/bugreport-fixes later to maint).

 * "git push --quiet --set-upstream" was not quiet when setting the
   upstream branch configuration, which has been corrected.
   (merge f3cce896a8 ow/push-quiet-set-upstream later to maint).

 * The prefetch task in "git maintenance" assumed that "git fetch"
   from any remote would fetch all its local branches, which would
   fetch too much if the user is interested in only a subset of
   branches there.
   (merge 32f67888d8 ds/maintenance-prefetch-fix later to maint).

 * Clarify that pathnames recorded in Git trees are most often (but
   not necessarily) encoded in UTF-8.
   (merge 9364bf465d ab/pathname-encoding-doc later to maint).

 * "git --config-env var=val cmd" weren't accepted (only
   --config-env=var=val was).
   (merge c331551ccf ps/config-env-option-with-separate-value later to maint).

 * When the reachability bitmap is in effect, the "do not lose
   recently created objects and those that are reachable from them"
   safety to protect us from races were disabled by mistake, which has
   been corrected.
   (merge 2ba582ba4c jk/prune-with-bitmap-fix later to maint).

 * Cygwin pathname handling fix.
   (merge bccc37fdc7 ad/cygwin-no-backslashes-in-paths later to maint).

 * "git rebase --[no-]reschedule-failed-exec" did not work well with
   its configuration variable, which has been corrected.
   (merge e5b32bffd1 ab/rebase-no-reschedule-failed-exec later to maint).

 * Portability fix for command line completion script (in contrib/).
   (merge f2acf763e2 si/zsh-complete-comment-fix later to maint).

 * "git repack -A -d" in a partial clone unnecessarily loosened
   objects in promisor pack.

 * "git bisect skip" when custom words are used for new/old did not
   work, which has been corrected.

 * A few variants of informational message "Already up-to-date" has
   been rephrased.
   (merge ad9322da03 js/merge-already-up-to-date-message-reword later to maint).

 * "git submodule update --quiet" did not propagate the quiet option
   down to underlying "git fetch", which has been corrected.
   (merge 62af4bdd42 nc/submodule-update-quiet later to maint).

 * Document that our test can use "local" keyword.
   (merge a84fd3bcc6 jc/test-allows-local later to maint).

 * The word-diff mode has been taught to work better with a word
   regexp that can match an empty string.
   (merge 0324e8fc6b pw/word-diff-zero-width-matches later to maint).

 * "git p4" learned to find branch points more efficiently.
   (merge 6b79818bfb jk/p4-locate-branch-point-optim later to maint).

 * When "git update-ref -d" removes a ref that is packed, it left
   empty directories under $GIT_DIR/refs/ for
   (merge 5f03e5126d wc/packed-ref-removal-cleanup later to maint).

 * "git clean" and "git ls-files -i" had confusion around working on
   or showing ignored paths inside an ignored directory, which has
   been corrected.
   (merge b548f0f156 en/dir-traversal later to maint).

 * The handling of "%(push)" formatting element of "for-each-ref" and
   friends was broken when the same codepath started handling
   "%(push:&lt;what&gt;)", which has been corrected.
   (merge 1e1c4c5eac zh/ref-filter-push-remote-fix later to maint).

 * The bash prompt script (in contrib/) did not work under "set -u".
   (merge 5c0cbdb107 en/prompt-under-set-u later to maint).

 * The "chainlint" feature in the test framework is a handy way to
   catch common mistakes in writing new tests, but tends to get
   expensive.  An knob to selectively disable it has been introduced
   to help running tests that the developer has not modified.
   (merge 2d86a96220 jk/test-chainlint-softer later to maint).

 * The "rev-parse" command did not diagnose the lack of argument to
   "--path-format" option, which was introduced in v2.31 era, which
   has been corrected.
   (merge 99fc555188 wm/rev-parse-path-format-wo-arg later to maint).

 * Other code cleanup, docfix, build fix, etc.
   (merge f451960708 dl/cat-file-doc-cleanup later to maint).
   (merge 12604a8d0c sv/t9801-test-path-is-file-cleanup later to maint).
   (merge ea7e63921c jr/doc-ignore-typofix later to maint).
   (merge 23c781f173 ps/update-ref-trans-hook-doc later to maint).
   (merge 42efa1231a jk/filter-branch-sha256 later to maint).
   (merge 4c8e3dca6e tb/push-simple-uses-branch-merge-config later to maint).
   (merge 6534d436a2 bs/asciidoctor-installation-hints later to maint).
   (merge 47957485b3 ab/read-tree later to maint).
   (merge 2be927f3d1 ab/diff-no-index-tests later to maint).
   (merge 76593c09bb ab/detox-gettext-tests later to maint).
   (merge 28e29ee38b jc/doc-format-patch-clarify later to maint).
   (merge fc12b6fdde fm/user-manual-use-preface later to maint).
   (merge dba94e3a85 cc/test-helper-bloom-usage-fix later to maint).
   (merge 61a7660516 hn/reftable-tables-doc-update later to maint).
   (merge 81ed96a9b2 jt/fetch-pack-request-fix later to maint).
   (merge 151b6c2dd7 jc/doc-do-not-capitalize-clarification later to maint).
   (merge 9160068ac6 js/access-nul-emulation-on-windows later to maint).
   (merge 7a14acdbe6 po/diff-patch-doc later to maint).
   (merge f91371b948 pw/patience-diff-clean-up later to maint).
   (merge 3a7f0908b6 mt/clean-clean later to maint).
   (merge d4e2d15a8b ab/streaming-simplify later to maint).
   (merge 0e59f7ad67 ah/merge-ort-i18n later to maint).
   (merge e6f68f62e0 ls/typofix later to maint).</content>
</entry>
<entry>
<title>*: recursive bump for perl 5.34</title>
<updated>2021-05-24T19:49:01Z</updated>
<author>
<name>wiz</name>
<email>wiz@pkgsrc.org</email>
</author>
<published>2021-05-24T19:49:01Z</published>
<link rel='alternate' type='text/html' href='https://git.osdyson.ru/mirror/pkgsrc/commit/?id=baed0a2edb810dd7f45a65e897249f05eafbe0d3'/>
<id>urn:sha1:baed0a2edb810dd7f45a65e897249f05eafbe0d3</id>
<content type='text'>
</content>
</entry>
<entry>
<title>git: updated to 2.31.1</title>
<updated>2021-03-31T08:04:21Z</updated>
<author>
<name>adam</name>
<email>adam@pkgsrc.org</email>
</author>
<published>2021-03-31T08:04:21Z</published>
<link rel='alternate' type='text/html' href='https://git.osdyson.ru/mirror/pkgsrc/commit/?id=b4bba7ce1a9bb4f9e868f31973d11a81b4bee4ce'/>
<id>urn:sha1:b4bba7ce1a9bb4f9e868f31973d11a81b4bee4ce</id>
<content type='text'>
Git 2.31.1 Release Notes
========================

Fixes since v2.31
-----------------

 * The fsmonitor interface read from its input without making sure
   there is something to read from.  This bug is new in 2.31
   timeframe.

 * The data structure used by fsmonitor interface was not properly
   duplicated during an in-core merge, leading to use-after-free etc.

 * "git bisect" reimplemented more in C during 2.30 timeframe did not
   take an annotated tag as a good/bad endpoint well.  This regression
   has been corrected.

 * Fix macros that can silently inject unintended null-statements.

 * CALLOC_ARRAY() macro replaces many uses of xcalloc().

 * Update insn in Makefile comments to run fuzz-all target.

 * Fix a corner case bug in "git mv" on case insensitive systems,
   which was introduced in 2.29 timeframe.

Also contains various documentation updates and code clean-ups.


Git 2.31 Release Notes
======================

Updates since v2.30
-------------------

Backward incompatible and other important changes

 * The "pack-redundant" command, which has been left stale with almost
   unusable performance issues, now warns loudly when it gets used, as
   we no longer want to recommend its use (instead just "repack -d"
   instead).

 * The development community has adopted Contributor Covenant v2.0 to
   update from v1.4 that we have been using.

 * The support for deprecated PCRE1 library has been dropped.

 * Fixes for CVE-2021-21300 in Git 2.30.2 (and earlier) is included.


UI, Workflows &amp; Features

 * The "--format=%(trailers)" mechanism gets enhanced to make it
   easier to design output for machine consumption.

 * When a user does not tell "git pull" to use rebase or merge, the
   command gives a loud message telling a user to choose between
   rebase or merge but creates a merge anyway, forcing users who would
   want to rebase to redo the operation.  Fix an early part of this
   problem by tightening the condition to give the message---there is
   no reason to stop or force the user to choose between rebase or
   merge if the history fast-forwards.

 * The configuration variable 'core.abbrev' can be set to 'no' to
   force no abbreviation regardless of the hash algorithm.

 * "git rev-parse" can be explicitly told to give output as absolute
   or relative path with the `--path-format=(absolute|relative)` option.

 * Bash completion (in contrib/) update to make it easier for
   end-users to add completion for their custom "git" subcommands.

 * "git maintenance" learned to drive scheduled maintenance on
   platforms whose native scheduling methods are not 'cron'.

 * After expiring a reflog and making a single commit, the reflog for
   the branch would record a single entry that knows both @{0} and
   @{1}, but we failed to answer "what commit were we on?", i.e. @{1}

 * "git bundle" learns "--stdin" option to read its refs from the
   standard input.  Also, it now does not lose refs whey they point
   at the same object.

 * "git log" learned a new "--diff-merges=&lt;how&gt;" option.

 * "git ls-files" can and does show multiple entries when the index is
   unmerged, which is a source for confusion unless -s/-u option is in
   use.  A new option --deduplicate has been introduced.

 * `git worktree list` now annotates worktrees as prunable, shows
   locked and prunable attributes in --porcelain mode, and gained
   a --verbose option.

 * "git clone" tries to locally check out the branch pointed at by
   HEAD of the remote repository after it is done, but the protocol
   did not convey the information necessary to do so when copying an
   empty repository.  The protocol v2 learned how to do so.

 * There are other ways than ".." for a single token to denote a
   "commit range", namely "&lt;rev&gt;^!" and "&lt;rev&gt;^-&lt;n&gt;", but "git
   range-diff" did not understand them.

 * The "git range-diff" command learned "--(left|right)-only" option
   to show only one side of the compared range.

 * "git mergetool" feeds three versions (base, local and remote) of
   a conflicted path unmodified.  The command learned to optionally
   prepare these files with unconflicted parts already resolved.

 * The .mailmap is documented to be read only from the root level of a
   working tree, but a stray file in a bare repository also was read
   by accident, which has been corrected.

 * "git maintenance" tool learned a new "pack-refs" maintenance task.

 * The error message given when a configuration variable that is
   expected to have a boolean value has been improved.

 * Signed commits and tags now allow verification of objects, whose
   two object names (one in SHA-1, the other in SHA-256) are both
   signed.

 * "git rev-list" command learned "--disk-usage" option.

 * "git {diff,log} --{skip,rotate}-to=&lt;path&gt;" allows the user to
   discard diff output for early paths or move them to the end of the
   output.

 * "git difftool" learned "--skip-to=&lt;path&gt;" option to restart an
   interrupted session from an arbitrary path.

 * "git grep" has been tweaked to be limited to the sparse checkout
   paths.

 * "git rebase --[no-]fork-point" gained a configuration variable
   rebase.forkPoint so that users do not have to keep specifying a
   non-default setting.


Performance, Internal Implementation, Development Support etc.

 * A 3-year old test that was not testing anything useful has been
   corrected.

 * Retire more names with "sha1" in it.

 * The topological walk codepath is covered by new trace2 stats.

 * Update the Code-of-conduct to version 2.0 from the upstream (we've
   been using version 1.4).

 * "git mktag" validates its input using its own rules before writing
   a tag object---it has been updated to share the logic with "git
   fsck".

 * Two new ways to feed configuration variable-value pairs via
   environment variables have been introduced, and the way
   GIT_CONFIG_PARAMETERS encodes variable/value pairs has been tweaked
   to make it more robust.

 * Tests have been updated so that they do not to get affected by the
   name of the default branch "git init" creates.

 * "git fetch" learns to treat ref updates atomically in all-or-none
   fashion, just like "git push" does, with the new "--atomic" option.

 * The peel_ref() API has been replaced with peel_iterated_oid().

 * The .use_shell flag in struct child_process that is passed to
   run_command() API has been clarified with a bit more documentation.

 * Document, clean-up and optimize the code around the cache-tree
   extension in the index.

 * The ls-refs protocol operation has been optimized to narrow the
   sub-hierarchy of refs/ it walks to produce response.

 * When removing many branches and tags, the code used to do so one
   ref at a time.  There is another API it can use to delete multiple
   refs, and it makes quite a lot of performance difference when the
   refs are packed.

 * The "pack-objects" command needs to iterate over all the tags when
   automatic tag following is enabled, but it actually iterated over
   all refs and then discarded everything outside "refs/tags/"
   hierarchy, which was quite wasteful.

 * A perf script was made more portable.

 * Our setting of GitHub CI test jobs were a bit too eager to give up
   once there is even one failure found.  Tweak the knob to allow
   other jobs keep running even when we see a failure, so that we can
   find more failures in a single run.

 * We've carried compatibility codepaths for compilers without
   variadic macros for quite some time, but the world may be ready for
   them to be removed.  Force compilation failure on exotic platforms
   where variadic macros are not available to find out who screams in
   such a way that we can easily revert if it turns out that the world
   is not yet ready.

 * Code clean-up to ensure our use of hashtables using object names as
   keys use the "struct object_id" objects, not the raw hash values.

 * Lose the debugging aid that may have been useful in the past, but
   no longer is, in the "grep" codepaths.

 * Some pretty-format specifiers do not need the data in commit object
   (e.g. "%H"), but we were over-eager to load and parse it, which has
   been made even lazier.

 * Get rid of "GETTEXT_POISON" support altogether, which may or may
   not be controversial.

 * Introduce an on-disk file to record revindex for packdata, which
   traditionally was always created on the fly and only in-core.

 * The commit-graph learned to use corrected commit dates instead of
   the generation number to help topological revision traversal.

 * Piecemeal of rewrite of "git bisect" in C continues.

 * When a pager spawned by us exited, the trace log did not record its
   exit status correctly, which has been corrected.

 * Removal of GIT_TEST_GETTEXT_POISON continues.

 * The code to implement "git merge-base --independent" was poorly
   done and was kept from the very beginning of the feature.

 * Preliminary changes to fsmonitor integration.

 * Performance improvements for rename detection.

 * The common code to deal with "chunked file format" that is shared
   by the multi-pack-index and commit-graph files have been factored
   out, to help codepaths for both filetypes to become more robust.

 * The approach to "fsck" the incoming objects in "index-pack" is
   attractive for performance reasons (we have them already in core,
   inflated and ready to be inspected), but fundamentally cannot be
   applied fully when we receive more than one pack stream, as a tree
   object in one pack may refer to a blob object in another pack as
   ".gitmodules", when we want to inspect blobs that are used as
   ".gitmodules" file, for example.  Teach "index-pack" to emit
   objects that must be inspected later and check them in the calling
   "fetch-pack" process.

 * The logic to handle "trailer" related placeholders in the
   "--format=" mechanisms in the "log" family and "for-each-ref"
   family is getting unified.

 * Raise the buffer size used when writing the index file out from
   (obviously too small) 8kB to (clearly sufficiently large) 128kB.

 * It is reported that open() on some platforms (e.g. macOS Big Sur)
   can return EINTR even though our timers are set up with SA_RESTART.
   A workaround has been implemented and enabled for macOS to rerun
   open() transparently from the caller when this happens.


Fixes since v2.30
-----------------

 * Diagnose command line error of "git rebase" early.

 * Clean up option descriptions in "git cmd --help".

 * "git stash" did not work well in a sparsely checked out working
   tree.

 * Some tests expect that "ls -l" output has either '-' or 'x' for
   group executable bit, but setgid bit can be inherited from parent
   directory and make these fields 'S' or 's' instead, causing test
   failures.

 * "git for-each-repo --config=&lt;var&gt; &lt;cmd&gt;" should not run &lt;cmd&gt; for
   any repository when the configuration variable &lt;var&gt; is not defined
   even once.

 * Fix 2.29 regression where "git mergetool --tool-help" fails to list
   all the available tools.

 * Fix for procedure to building CI test environment for mac.

 * The implementation of "git branch --sort" wrt the detached HEAD
   display has always been hacky, which has been cleaned up.

 * Newline characters in the host and path part of git:// URL are
   now forbidden.

 * "git diff" showed a submodule working tree with untracked cruft as
   "Submodule commit &lt;objectname&gt;-dirty", but a natural expectation is
   that the "-dirty" indicator would align with "git describe --dirty",
   which does not consider having untracked files in the working tree
   as source of dirtiness.  The inconsistency has been fixed.

 * When more than one commit with the same patch ID appears on one
   side, "git log --cherry-pick A...B" did not exclude them all when a
   commit with the same patch ID appears on the other side.  Now it
   does.

 * Documentation for "git fsck" lost stale bits that has become
   incorrect.

 * Doc fix for packfile URI feature.

 * When "git rebase -i" processes "fixup" insn, there is no reason to
   clean up the commit log message, but we did the usual stripspace
   processing.  This has been corrected.
   (merge f7d42ceec5 js/rebase-i-commit-cleanup-fix later to maint).

 * Fix in passing custom args from "git clone" to "upload-pack" on the
   other side.
   (merge ad6b5fefbd jv/upload-pack-filter-spec-quotefix later to maint).

 * The command line completion (in contrib/) completed "git branch -d"
   with branch names, but "git branch -D" offered tagnames in addition,
   which has been corrected.  "git branch -M" had the same problem.
   (merge 27dc071b9a jk/complete-branch-force-delete later to maint).

 * When commands are started from a subdirectory, they may have to
   compare the path to the subdirectory (called prefix and found out
   from $(pwd)) with the tracked paths.  On macOS, $(pwd) and
   readdir() yield decomposed path, while the tracked paths are
   usually normalized to the precomposed form, causing mismatch.  This
   has been fixed by taking the same approach used to normalize the
   command line arguments.
   (merge 5c327502db tb/precompose-prefix-too later to maint).

 * Even though invocations of "die()" were logged to the trace2
   system, "BUG()"s were not, which has been corrected.
   (merge 0a9dde4a04 jt/trace2-BUG later to maint).

 * "git grep --untracked" is meant to be "let's ALSO find in these
   files on the filesystem" when looking for matches in the working
   tree files, and does not make any sense if the primary search is
   done against the index, or the tree objects.  The "--cached" and
   "--untracked" options have been marked as mutually incompatible.
   (merge 0c5d83b248 mt/grep-cached-untracked later to maint).

 * Fix "git fsck --name-objects" which apparently has not been used by
   anybody who is motivated enough to report breakage.
   (merge e89f89361c js/fsck-name-objects-fix later to maint).

 * Avoid individual tests in t5411 from getting affected by each other
   by forcing them to use separate output files during the test.
   (merge 822ee894f6 jx/t5411-unique-filenames later to maint).

 * Test to make sure "git rev-parse one-thing one-thing" gives
   the same thing twice (when one-thing is --since=X).
   (merge a5cdca4520 ew/rev-parse-since-test later to maint).

 * When certain features (e.g. grafts) used in the repository are
   incompatible with the use of the commit-graph, we used to silently
   turned commit-graph off; we now tell the user what we are doing.
   (merge c85eec7fc3 js/commit-graph-warning later to maint).

 * Objects that lost references can be pruned away, even when they
   have notes attached to it (and these notes will become dangling,
   which in turn can be pruned with "git notes prune").  This has been
   clarified in the documentation.
   (merge fa9ab027ba mz/doc-notes-are-not-anchors later to maint).

 * The error codepath around the "--temp/--prefix" feature of "git
   checkout-index" has been improved.
   (merge 3f7ba60350 mt/checkout-index-corner-cases later to maint).

 * The "git maintenance register" command had trouble registering bare
   repositories, which had been corrected.

 * A handful of multi-word configuration variable names in
   documentation that are spelled in all lowercase have been corrected
   to use the more canonical camelCase.
   (merge 7dd0eaa39c dl/doc-config-camelcase later to maint).

 * "git push $there --delete ''" should have been diagnosed as an
   error, but instead turned into a matching push, which has been
   corrected.
   (merge 20e416409f jc/push-delete-nothing later to maint).

 * Test script modernization.
   (merge 488acf15df sv/t7001-modernize later to maint).

 * An under-allocation for the untracked cache data has been corrected.
   (merge 6347d649bc jh/untracked-cache-fix later to maint).

 * Other code cleanup, docfix, build fix, etc.
   (merge e3f5da7e60 sg/t7800-difftool-robustify later to maint).
   (merge 9d336655ba js/doc-proto-v2-response-end later to maint).
   (merge 1b5b8cf072 jc/maint-column-doc-typofix later to maint).
   (merge 3a837b58e3 cw/pack-config-doc later to maint).
   (merge 01168a9d89 ug/doc-commit-approxidate later to maint).
   (merge b865734760 js/params-vs-args later to maint).</content>
</entry>
<entry>
<title>git: updated to 2.30.0</title>
<updated>2021-01-11T10:20:16Z</updated>
<author>
<name>adam</name>
<email>adam@pkgsrc.org</email>
</author>
<published>2021-01-11T10:20:16Z</published>
<link rel='alternate' type='text/html' href='https://git.osdyson.ru/mirror/pkgsrc/commit/?id=8802e976c07a53ca2880642bbf46c40972500454'/>
<id>urn:sha1:8802e976c07a53ca2880642bbf46c40972500454</id>
<content type='text'>
Git 2.30 Release Notes
======================

Updates since v2.29
-------------------

UI, Workflows &amp; Features

 * Userdiff for PHP update.

 * Userdiff for Rust update.

 * Userdiff for CSS update.

 * The command line completion script (in contrib/) learned that "git
   stash show" takes the options "git diff" takes.

 * "git worktree list" now shows if each worktree is locked.  This
   possibly may open us to show other kinds of states in the future.

 * "git maintenance", an extended big brother of "git gc", continues
   to evolve.

 * "git push --force-with-lease[=&lt;ref&gt;]" can easily be misused to lose
   commits unless the user takes good care of their own "git fetch".
   A new option "--force-if-includes" attempts to ensure that what is
   being force-pushed was created after examining the commit at the
   tip of the remote ref that is about to be force-replaced.

 * "git clone" learned clone.defaultremotename configuration variable
   to customize what nickname to use to call the remote the repository
   was cloned from.

 * "git checkout" learned to use checkout.guess configuration variable
   and enable/disable its "--[no-]guess" option accordingly.

 * "git resurrect" script (in contrib/) learned that the object names
   may be longer than 40-hex depending on the hash function in use.

 * "git diff A...B" learned "git diff --merge-base A B", which is a
   longer short-hand to say the same thing.

 * A sample 'push-to-checkout' hook, that performs the same as
   what the built-in default action does, has been added.

 * "git diff" family of commands learned the "-I&lt;regex&gt;" option to
   ignore hunks whose changed lines all match the given pattern.

 * The userdiff pattern learned to identify the function definition in
   POSIX shells and bash.

 * "git checkout-index" did not consistently signal an error with its
   exit status, but now it does.

 * A commit and tag object may have CR at the end of each and
   every line (you can create such an object with hash-object or
   using --cleanup=verbatim to decline the default clean-up
   action), but it would make it impossible to have a blank line
   to separate the title from the body of the message.  We are now
   more lenient and accept a line with lone CR on it as a blank line,
   too.

 * Exit codes from "git remote add" etc. were not usable by scripted
   callers, but now they are.

 * "git archive" now allows compression level higher than "-9"
   when generating tar.gz output.

 * Zsh autocompletion (in contrib/) update.

 * The maximum length of output filenames "git format-patch" creates
   has become configurable (used to be capped at 64).

 * "git rev-parse" learned the "--end-of-options" to help scripts to
   safely take a parameter that is supposed to be a revision, e.g.
   "git rev-parse --verify -q --end-of-options $rev".

 * The command line completion script (in contrib/) learned to expand
   commands that are alias of alias.

 * "git update-ref --stdin" learns to take multiple transactions in a
   single session.

 * Various subcommands of "git config" that take value_regex
   learned the "--literal-value" option to take the value_regex option
   as a literal string.

 * The transport layer was taught to optionally exchange the session
   ID assigned by the trace2 subsystem during fetch/push transactions.

 * "git imap-send" used to ignore configuration variables like
   core.askpass; this has been corrected.

 * "git $cmd $args", when $cmd is not a recognised subcommand, by
   default tries to see if $cmd is a typo of an existing subcommand
   and optionally executes the corrected command if there is only one
   possibility, depending on the setting of help.autocorrect; the
   users can now disable the whole thing, including the cycles spent
   to find a likely typo, by setting the configuration variable to
   'never'.

 * "@" sometimes worked (e.g. "git push origin @:there") as a part of
   a refspec element, but "git push origin @" did not work, which has
   been corrected.


Performance, Internal Implementation, Development Support etc.

 * Use "git archive" more to produce the release tarball.

 * GitHub Actions automated test improvement to skip tests on a tree
   identical to what has already been tested.

 * Test-coverage for running commit-graph task "git maintenance" has
   been extended.

 * Our test scripts can be told to run only individual pieces while
   skipping others with the "--run=..." option; they were taught to
   take a substring of test title, in addition to numbers, to name the
   test pieces to run.

 * Adjust tests so that they won't scream when the default initial
   branch name is different from 'master'.

 * Rewriting "git bisect" in C continues.

 * More preliminary tests have been added to document desired outcomes
   of various "directory rename" situations.

 * Micro clean-up of a couple of test scripts.

 * "git diff" and other commands that share the same machinery to
   compare with working tree files have been taught to take advantage
   of the fsmonitor data when available.

 * The code to detect premature EOF in the sideband demultiplexer has
   been cleaned up.

 * "git fetch --depth=&lt;n&gt;" over the stateless RPC / smart HTTP
   transport handled EOF from the client poorly at the server end.

 * A specialization of hashmap that uses a string as key has been
   introduced.  Hopefully it will see wider use over time.

 * "git bisect start/next" in a large span of history spends a lot of
   time trying to come up with exactly the half-way point; this can be
   optimized by stopping when we see a commit that is close enough to
   the half-way point.

 * A lazily defined test prerequisite can now be defined in terms of
   another lazily defined test prerequisite.

 * Expectation for the original contributor after responding to a
   review comment to use the explanation in a patch update has been
   described.

 * Multiple "credential-store" backends can race to lock the same
   file, causing everybody else but one to fail---reattempt locking
   with some timeout to reduce the rate of the failure.

 * "git-parse-remote" shell script library outlived its usefulness.

 * Like die() and error(), a call to warning() will also trigger a
   trace2 event.

 * Use of non-reentrant localtime() has been removed.

 * Non-reentrant time-related library functions and ctime/asctime with
   awkward calling interfaces are banned from the codebase.


Fixes since v2.29
-----------------

 * In 2.29, "--committer-date-is-author-date" option of "rebase" and
   "am" subcommands lost the e-mail address by mistake, which has been
   corrected.
   (merge 5f35edd9d7 jk/committer-date-is-author-date-fix later to maint).

 * "git checkout -p A...B [-- &lt;path&gt;]" did not work, even though the
   same command without "-p" correctly used the merge-base between
   commits A and B.
   (merge 35166b1fb5 dl/checkout-p-merge-base later to maint).

 * The side-band status report can be sent at the same time as the
   primary payload multiplexed, but the demultiplexer on the receiving
   end incorrectly split a single status report into two, which has
   been corrected.
   (merge 712b0377db js/avoid-split-sideband-message later to maint).

 * "git fast-import" wasted a lot of memory when many marks were in use.
   (merge 3f018ec716 jk/fast-import-marks-alloc-fix later to maint).

 * A test helper "test_cmp A B" was taught to diagnose missing files A
   or B as a bug in test, but some tests legitimately wanted to notice
   a failure to even create file B as an error, in addition to leaving
   the expected result in it, and were misdiagnosed as a bug.  This
   has been corrected.
   (merge 262d5ad5a5 es/test-cmp-typocatcher later to maint).

 * When "git commit-graph" detects the same commit recorded more than
   once while it is merging the layers, it used to die.  The code now
   ignores all but one of them and continues.
   (merge 85102ac71b ds/commit-graph-merging-fix later to maint).

 * The meaning of a Signed-off-by trailer can vary from project to
   project; this and also what it means to this project has been
   clarified in the documentation.
   (merge 3abd4a67d9 bk/sob-dco later to maint).

 * "git credential' didn't honor the core.askPass configuration
   variable (among other things), which has been corrected.
   (merge 567ad2c0f9 tk/credential-config later to maint).

 * Dev support to catch a tentative definition of a variable in our C
   code as an error.
   (merge 5539183622 jk/no-common later to maint).

 * "git rebase --rebase-merges" did not correctly pass --gpg-sign
   command line option to underlying "git merge" when replaying a merge
   using non-default merge strategy or when replaying an octopus merge
   (because replaying a two-head merge with the default strategy was
   done in a separate codepath, the problem did not trigger for most
   users), which has been corrected.
   (merge 43ad4f2eca sc/sequencer-gpg-octopus later to maint).

 * "git apply -R" did not handle patches that touch the same path
   twice correctly, which has been corrected.  This is most relevant
   in a patch that changes a path from a regular file to a symbolic
   link (and vice versa).
   (merge b0f266de11 jt/apply-reverse-twice later to maint).

 * A recent oid-&gt;hash conversion missed one spot, breaking "git svn".
   (merge 03bb366de4 bc/svn-hash-oid-fix later to maint).

 * The documentation on the "--abbrev=&lt;n&gt;" option did not say the
   output may be longer than "&lt;n&gt;" hexdigits, which has been
   clarified.
   (merge cda34e0d0c jc/abbrev-doc later to maint).

 * "git p4" now honors init.defaultBranch configuration.
   (merge 1b09d1917f js/p4-default-branch later to maint).

 * Recently the format of an internal state file "rebase -i" uses has
   been tightened up for consistency, which would hurt those who start
   "rebase -i" with old git and then continue with new git.  Loosen
   the reader side a bit (which we may want to tighten again in a year
   or so).
   (merge c779386182 jc/sequencer-stopped-sha-simplify later to maint).

 * The code to see if "git stash drop" can safely remove refs/stash
   has been made more careful.
   (merge 4f44c5659b rs/empty-reflog-check-fix later to maint).

 * "git log -L&lt;range&gt;:&lt;path&gt;" is documented to take no pathspec, but
   this was not enforced by the command line option parser, which has
   been corrected.
   (merge 39664cb0ac jc/line-log-takes-no-pathspec later to maint).

 * "git format-patch --output=there" did not work as expected and
   instead crashed.  The option is now supported.
   (merge dc1672dd10 jk/format-patch-output later to maint).

 * Define ARM64 compiled with MSVC to be little-endian.
   (merge 0c038fc65a dg/bswap-msvc later to maint).

 * "git rebase -i" did not store ORIG_HEAD correctly.
   (merge 8843302307 pw/rebase-i-orig-head later to maint).

 * "git blame -L :funcname -- path" did not work well for a path for
   which a userdiff driver is defined.

 * "make DEVELOPER=1 sparse" used to run sparse and let it emit
   warnings; now such warnings will cause an error.
   (merge 521dc56270 jc/sparse-error-for-developer-build later to maint).

 * "git blame --ignore-revs-file=&lt;file&gt;" learned to ignore a
   non-existent object name in the input, instead of complaining.
   (merge c714d05875 jc/blame-ignore-fix later to maint).

 * Running "git diff" while allowing external diff in a state with
   unmerged paths used to segfault, which has been corrected.
   (merge d66851806f jk/diff-release-filespec-fix later to maint).

 * Build configuration cleanup.
   (merge b990f02fd8 ab/config-mak-uname-simplify later to maint).

 * Fix regression introduced when nvimdiff support in mergetool was added.
   (merge 12026f46e7 pd/mergetool-nvimdiff later to maint).

 * The exchange between receive-pack and proc-receive hook did not
   carefully check for errors.

 * The code was not prepared to deal with pack .idx file that is
   larger than 4GB.
   (merge 81c4c5cf2e jk/4gb-idx later to maint).

 * Since jgit does not yet work with SHA-256 repositories, mark the
   tests that use it not to run unless we are testing with ShA-1
   repositories.
   (merge ea699b4adc sg/t5310-jgit-wants-sha1 later to maint).

 * Config parser fix for "git notes".
   (merge 45fef1599a na/notes-displayref-is-not-boolean later to maint).

 * Move a definition of compatibility wrapper from cache.h to
   git-compat-util.h
   (merge a76b138daa hn/sleep-millisec-decl later to maint).

 * Error message fix.
   (merge eaf5341538 km/stash-error-message-fix later to maint).

 * "git pull --rebase --recurse-submodules" checked for local changes
   in a wrong range and failed to run correctly when it should.
   (merge 5176f20ffe pb/pull-rebase-recurse-submodules later to maint).

 * "git push" that is killed may leave a pack-objects process behind,
   still computing to find a good compression, wasting cycles.  This
   has been corrected.
   (merge 8b59935114 jk/stop-pack-objects-when-push-is-killed later to maint).

 * "git fetch" that is killed may leave a pack-objects process behind,
   still computing to find a good compression, wasting cycles.  This
   has been corrected.
   (merge 309a4028e7 jk/stop-pack-objects-when-fetch-is-killed later to maint).

 * "git add -i" failed to honor custom colors configured to show
   patches, which has been corrected.
   (merge 96386faa03 js/add-i-color-fix later to maint).

 * Processes that access packdata while the .idx file gets removed
   (e.g. while repacking) did not fail or fall back gracefully as they
   could.
   (merge 506ec2fbda tb/idx-midx-race-fix later to maint).

 * "git apply" adjusted the permission bits of working-tree files and
   directories according to core.sharedRepository setting by mistake and
   for a long time, which has been corrected.
   (merge eb3c027e17 mt/do-not-use-scld-in-working-tree later to maint).

 * "fetch-pack" could pass NULL pointer to unlink(2) when it sees an
   invalid filename; the error checking has been tightened to make
   this impossible.
   (merge 6031af387e rs/fetch-pack-invalid-lockfile later to maint).

 * "git maintenance run/start/stop" needed to be run in a repository
   to hold the lockfile they use, but didn't make sure they are
   actually in a repository, which has been corrected.

 * The glossary described a branch as an "active" line of development,
   which is misleading---a stale and non-moving branch is still a
   branch.
   (merge eef1ceabd8 so/glossary-branch-is-not-necessarily-active later to maint).

 * Newer versions of xsltproc can assign IDs in HTML documents it
   generates in a consistent manner.  Use the feature to help format
   HTML version of the user manual reproducibly.
   (merge 3569e11d69 ae/doc-reproducible-html later to maint).

 * Tighten error checking in the codepath that responds to "git fetch".
   (merge d43a21bdbb jk/check-config-parsing-error-in-upload-pack later to maint).

 * "git pack-redundant" when there is only one packfile used to crash,
   which has been corrected.
   (merge 0696232390 jx/pack-redundant-on-single-pack later to maint).

 * Other code cleanup, docfix, build fix, etc.
   (merge 3e0a5dc9af cc/doc-filter-branch-typofix later to maint).
   (merge 32c83afc2c cw/ci-ghwf-check-ws-errors later to maint).
   (merge 5eb2ed691b rs/tighten-callers-of-deref-tag later to maint).
   (merge 6db29ab213 jk/fast-import-marks-cleanup later to maint).
   (merge e5cf6d3df4 nk/dir-c-comment-update later to maint).
   (merge 5710dcce74 jk/report-fn-typedef later to maint).
   (merge 9a82db1056 en/sequencer-rollback-lock-cleanup later to maint).
   (merge 4e1bee9a99 js/t7006-cleanup later to maint).
   (merge f5bcde6c58 es/tutorial-mention-asciidoc-early later to maint).
   (merge 714d491af0 so/format-patch-doc-on-default-diff-format later to maint).
   (merge 0795df4b9b rs/clear-commit-marks-in-repo later to maint).
   (merge 9542d56379 sd/prompt-local-variable later to maint).
   (merge 06d43fad18 rs/pack-write-hashwrite-simplify later to maint).
   (merge b7e20b4373 mc/typofix later to maint).
   (merge f6bcd9a8a4 js/test-whitespace-fixes later to maint).
   (merge 53b67a801b js/test-file-size later to maint).
   (merge 970909c2a7 rs/hashwrite-be64 later to maint).
   (merge 5a923bb1f0 ma/list-object-filter-opt-msgfix later to maint).
   (merge 1c3e412916 rs/archive-plug-leak-refname later to maint).
   (merge d44e5267ea rs/plug-diff-cache-leak later to maint).
   (merge 793c1464d3 ab/gc-keep-base-option later to maint).
   (merge b86339b12b mt/worktree-error-message-fix later to maint).
   (merge e01ae2a4a7 js/pull-rebase-use-advise later to maint).
   (merge e63d774242 sn/config-doc-typofix later to maint).
   (merge 08e9df2395 jk/multi-line-indent-style-fix later to maint).
   (merge e66590348a da/vs-build-iconv-fix later to maint).
   (merge 7fe07275be js/cmake-extra-built-ins-fix later to maint).
   (merge 633eebe142 jb/midx-doc-update later to maint).
   (merge 5885367e8f jh/index-v2-doc-on-fsmn later to maint).
   (merge 14639a4779 jc/compat-util-setitimer-fix later to maint).
   (merge 56f56ac50b ab/unreachable-break later to maint).
   (merge 731d578b4f rb/nonstop-config-mak-uname-update later to maint).
   (merge f4698738f9 es/perf-export-fix later to maint).
   (merge 773c694142 nk/refspecs-negative-fix later to maint).</content>
</entry>
<entry>
<title>git: updated to 2.29.2</title>
<updated>2020-10-31T21:10:01Z</updated>
<author>
<name>adam</name>
<email>adam@pkgsrc.org</email>
</author>
<published>2020-10-31T21:10:01Z</published>
<link rel='alternate' type='text/html' href='https://git.osdyson.ru/mirror/pkgsrc/commit/?id=9c518737980e257c68d1cebcefa4e940e6358484'/>
<id>urn:sha1:9c518737980e257c68d1cebcefa4e940e6358484</id>
<content type='text'>
Git v2.29.2 Release Notes
=========================

This release is primarily to fix brown-paper-bag breakages in the
2.29.0 release.

Fixes since v2.29.1
-------------------

 * In 2.29, "--committer-date-is-author-date" option of "rebase" and
   "am" subcommands lost the e-mail address by mistake, which has been
   corrected.

Git v2.29.1 Release Notes
=========================

This is to fix the build procedure change in 2.28 where we failed to
install a few programs that should be installed in /usr/bin (namely,
receive-pack, upload-archive and upload-pack) when the non-default
SKIP_DASHED_BUILT_INS installation option is in effect.

A minor glitch in a non-default installation may usually not deserve
a hotfix, but I know Git for Windows ship binaries built with this
option, so let's make an exception.


Git 2.29 Release Notes
======================

Updates since v2.28
-------------------

UI, Workflows &amp; Features

 * "git help log" has been enhanced by sharing more material from the
   documentation for the underlying "git rev-list" command.

 * "git for-each-ref --format=&lt;&gt;" learned %(contents:size).

 * "git merge" learned to selectively omit " into &lt;branch&gt;" at the end
   of the title of default merge message with merge.suppressDest
   configuration.

 * The component to respond to "git fetch" request is made more
   configurable to selectively allow or reject object filtering
   specification used for partial cloning.

 * Stop when "sendmail.*" configuration variables are defined, which
   could be a mistaken attempt to define "sendemail.*" variables.

 * The existing backends for "git mergetool" based on variants of vim
   have been refactored and then support for "nvim" has been added.

 * "git bisect" learns the "--first-parent" option to find the first
   breakage along the first-parent chain.

 * "git log --first-parent -p" showed patches only for single-parent
   commits on the first-parent chain; the "--first-parent" option has
   been made to imply "-m".  Use "--no-diff-merges" to restore the
   previous behaviour to omit patches for merge commits.

 * The commit labels used to explain each side of conflicted hunks
   placed by the sequencer machinery have been made more readable by
   humans.

 * The "--batch-size" option of "git multi-pack-index repack" command
   is now used to specify that very small packfiles are collected into
   one until the total size roughly exceeds it.

 * The recent addition of SHA-256 support is marked as experimental in
   the documentation.

 * "git fetch" learned --no-write-fetch-head option to avoid writing
   the FETCH_HEAD file.

 * Command line completion (in contrib/) usually omits redundant,
   deprecated and/or dangerous options from its output; it learned to
   optionally include all of them.

 * The output from the "diff" family of the commands had abbreviated
   object names of blobs involved in the patch, but its length was not
   affected by the --abbrev option.  Now it is.

 * "git worktree" gained a "repair" subcommand to help users recover
   after moving the worktrees or repository manually without telling
   Git.  Also, "git init --separate-git-dir" no longer corrupts
   administrative data related to linked worktrees.

 * The "--format=" option to the "for-each-ref" command and friends
   learned a few more tricks, e.g. the ":short" suffix that applies to
   "objectname" now also can be used for "parent", "tree", etc.

 * "git worktree add" learns that the "-d" is a synonym to "--detach"
   option to create a new worktree without being on a branch.

 * "format-patch --range-diff=&lt;prev&gt; &lt;origin&gt;..HEAD" has been taught
   not to ignore &lt;origin&gt; when &lt;prev&gt; is a single version.

 * "add -p" now allows editing paths that were only added in intent.

 * The 'meld' backend of the "git mergetool" learned to give the
   underlying 'meld' the '--auto-merge' option, which would help
   reduce the amount of text that requires manual merging.

 * "git for-each-ref" and friends that list refs used to allow only
   one --merged or --no-merged to filter them; they learned to take
   combination of both kind of filtering.

 * "git maintenance", a "git gc"'s big brother, has been introduced to
   take care of more repository maintenance tasks, not limited to the
   object database cleaning.

 * "git receive-pack" that accepts requests by "git push" learned to
   outsource most of the ref updates to the new "proc-receive" hook.

 * "git push" that wants to be atomic and wants to send push
   certificate learned not to prepare and sign the push certificate
   when it fails the local check (hence due to atomicity it is known
   that no certificate is needed).

 * "git commit-graph write" learned to limit the number of bloom
   filters that are computed from scratch with the --max-new-filters
   option.

 * The transport protocol v2 has become the default again.

 * The installation procedure learned to optionally omit "git-foo"
   executable files for each 'foo' built-in subcommand, which are only
   required by old timers that still rely on the age old promise that
   prepending "git --exec-path" output to PATH early in their script
   will keep the "git-foo" calls they wrote working.

 * The command line completion (in contrib/) learned that "git restore
   -s &lt;TAB&gt;" is often followed by a refname.

 * "git shortlog" has been taught to group commits by the contents of
   the trailer lines, like "Reviewed-by:", "Coauthored-by:", etc.

 * "git archive" learns the "--add-file" option to include untracked
   files into a snapshot from a tree-ish.

 * "git fetch" and "git push" support negative refspecs.

 * "git format-patch" learns to take "whenAble" as a possible value
   for the format.useAutoBase configuration variable to become no-op
   when the  automatically computed base does not make sense.

 * Credential helpers are now allowed to terminate lines with CRLF
   line ending, as well as LF line ending.


Performance, Internal Implementation, Development Support etc.

 * The changed-path Bloom filter is improved using ideas from an
   independent implementation.

 * Updates to the changed-paths bloom filter.

 * The test framework has been updated so that most tests will run
   with predictable (artificial) timestamps.

 * Preliminary clean-up of the refs API in preparation for adding a
   new refs backend "reftable".

 * Dev support to limit the use of test_must_fail to only git commands.

 * While packing many objects in a repository with a promissor remote,
   lazily fetching missing objects from the promissor remote one by
   one may be inefficient---the code now attempts to fetch all the
   missing objects in batch (obviously this won't work for a lazy
   clone that lazily fetches tree objects as you cannot even enumerate
   what blobs are missing until you learn which trees are missing).

 * The pretend-object mechanism checks if the given object already
   exists in the object store before deciding to keep the data
   in-core, but the check would have triggered lazy fetching of such
   an object from a promissor remote.

 * The argv_array API is useful for not just managing argv but any
   "vector" (NULL-terminated array) of strings, and has seen adoption
   to a certain degree.  It has been renamed to "strvec" to reduce the
   barrier to adoption.

 * The final leg of SHA-256 transition plus doc updates.  Note that
   there is no interoperability between SHA-1 and SHA-256
   repositories yet.

 * CMake support to build with MSVC for Windows bypassing the Makefile.

 * A new helper function has_object() has been introduced to make it
   easier to mark object existence checks that do and don't want to
   trigger lazy fetches, and a few such checks are converted using it.

 * A no-op replacement function implemented as a C preprocessor macro
   does not perform as good a job as one implemented as a "static
   inline" function in catching errors in parameters; replace the
   former with the latter in &lt;git-compat-util.h&gt; header.

 * Test framework update.
   (merge d572f52a64 es/test-cmp-typocatcher later to maint).

 * Updates to "git merge" tests, in preparation for a new merge
   strategy backend.

 * midx and commit-graph files now use the byte defined in their file
   format specification for identifying the hash function used for
   object names.

 * The FETCH_HEAD is now always read from the filesystem regardless of
   the ref backend in use, as its format is much richer than the
   normal refs, and written directly by "git fetch" as a plain file..

 * An unused binary has been discarded, and and a bunch of commands
   have been turned into into built-in.

 * A handful of places in in-tree code still relied on being able to
   execute the git subcommands, especially built-ins, in "git-foo"
   form, which have been corrected.

 * When a packfile is removed by "git repack", multi-pack-index gets
   cleared; the code was taught to do so less aggressively by first
   checking if the midx actually refers to a pack that no longer
   exists.

 * Internal API clean-up to handle two options "diff-index" and "log"
   have, which happen to share the same short form, more sensibly.

 * The "add -i/-p" machinery has been written in C but it is not used
   by default yet.  It is made default to those who are participating
   in feature.experimental experiment.

 * Allow maintainers to tweak $(TAR) invocations done while making
   distribution tarballs.

 * "git index-pack" learned to resolve deltified objects with greater
   parallelism.

 * "diff-highlight" (in contrib/) had a logic to flush its output upon
   seeing a blank line but the way it detected a blank line was broken.

 * The logic to skip testing on the tagged commit and the tag itself
   was not quite consistent which led to failure of Windows test
   tasks.  It has been revamped to consistently skip revisions that
   have already been tested, based on the tree object of the revision.


Fixes since v2.28
-----------------

 * The "mediawiki" remote backend which lives in contrib/mw-to-git/
   and is not built with git by default, had an RCE bug allowing a
   malicious MediaWiki server operator to inject arbitrary commands
   for execution by a cloning client. This has been fixed.

   The bug was discovered and reported by Joern Schneeweisz of GitLab
   to the git-security mailing list. Its practical impact due to the
   obscurity of git-remote-mediawiki was deemed small enough to forgo
   a dedicated security release.

 * "git clone --separate-git-dir=$elsewhere" used to stomp on the
   contents of the existing directory $elsewhere, which has been
   taught to fail when $elsewhere is not an empty directory.
   (merge dfaa209a79 bw/fail-cloning-into-non-empty later to maint).

 * With the base fix to 2.27 regresion, any new extensions in a v0
   repository would still be silently honored, which is not quite
   right.  Instead, complain and die loudly.
   (merge ec91ffca04 jk/reject-newer-extensions-in-v0 later to maint).

 * Fetching from a lazily cloned repository resulted at the server
   side in attempts to lazy fetch objects that the client side has,
   many of which will not be available from the third-party anyway.
   (merge 77aa0941ce jt/avoid-lazy-fetching-upon-have-check later to maint).

 * Fix to an ancient bug caused by an over-eager attempt for
   optimization.
   (merge a98f7fb366 rs/add-index-entry-optim-fix later to maint).

 * Pushing a ref whose name contains non-ASCII character with the
   "--force-with-lease" option did not work over smart HTTP protocol,
   which has been corrected.
   (merge cd85b447bf bc/push-cas-cquoted-refname later to maint).

 * "git mv src dst", when src is an unmerged path, errored out
   correctly but with an incorrect error message to claim that src is
   not tracked, which has been clarified.
   (merge 9b906af657 ct/mv-unmerged-path-error later to maint).

 * Fix to a regression introduced during 2.27 cycle.
   (merge cada7308ad en/fill-directory-exponential later to maint).

 * Command line completion (in contrib/) update.
   (merge 688b87c81b mp/complete-show-color-moved later to maint).

 * All "mergy" operations that internally use the merge-recursive
   machinery should honor the merge.renormalize configuration, but
   many of them didn't.

 * Doc cleanup around "worktree".
   (merge dc9c144be5 es/worktree-doc-cleanups later to maint).

 * The "git blame --first-parent" option was not documented, but now
   it is.
   (merge 11bc12ae1e rp/blame-first-parent-doc later to maint).

 * The logic to find the ref transaction hook script attempted to
   cache the path to the found hook without realizing that it needed
   to keep a copied value, as the API it used returned a transitory
   buffer space.  This has been corrected.
   (merge 09b2aa30c9 ps/ref-transaction-hook later to maint).

 * Recent versions of "git diff-files" shows a diff between the index
   and the working tree for "intent-to-add" paths as a "new file"
   patch; "git apply --cached" should be able to take "git diff-files"
   and should act as an equivalent to "git add" for the path, but the
   command failed to do so for such a path.
   (merge 4c025c667e rp/apply-cached-with-i-t-a later to maint).

 * "git diff [&lt;tree-ish&gt;] $path" for a $path that is marked with i-t-a
   bit was not showing the mode bits from the working tree.
   (merge cb0dd22b82 rp/ita-diff-modefix later to maint).

 * Ring buffer with size 4 used for bin-hex translation resulted in a
   wrong object name in the sequencer's todo output, which has been
   corrected.
   (merge 5da69c0dac ak/sequencer-fix-find-uniq-abbrev later to maint).

 * When given more than one target line ranges, "git blame -La,b
   -Lc,d" was over-eager to coalesce groups of original lines and
   showed incorrect results, which has been corrected.
   (merge c2ebaa27d6 jk/blame-coalesce-fix later to maint).

 * The regexp to identify the function boundary for FORTRAN programs
   has been updated.
   (merge 75c3b6b2e8 pb/userdiff-fortran-update later to maint).

 * A few end-user facing messages have been updated to be
   hash-algorithm agnostic.
   (merge 4279000d3e jc/object-names-are-not-sha-1 later to maint).

 * "unlink" emulation on MinGW has been optimized.
   (merge 680e0b4524 jh/mingw-unlink later to maint).

 * The purpose of "git init --separate-git-dir" is to initialize a
   new project with the repository separate from the working tree,
   or, in the case of an existing project, to move the repository
   (the .git/ directory) out of the working tree. It does not make
   sense to use --separate-git-dir with a bare repository for which
   there is no working tree, so disallow its use with bare
   repositories.
   (merge ccf236a23a es/init-no-separate-git-dir-in-bare later to maint).

 * "ls-files -o" mishandled the top-level directory of another git
   working tree that hangs in the current git working tree.
   (merge ab282aa548 en/dir-nonbare-embedded later to maint).

 * Fix some incorrect UNLEAK() annotations.
   (merge 3e19816dc0 jk/unleak-fixes later to maint).

 * Use more buffered I/O where we used to call many small write(2)s.
   (merge a698d67b08 rs/more-buffered-io later to maint).

 * The patch-id computation did not ignore the "incomplete last line"
   marker like whitespaces.
   (merge 82a62015a7 rs/patch-id-with-incomplete-line later to maint).

 * Updates into a lazy/partial clone with a submodule did not work
   well with transfer.fsckobjects set.

 * The parser for "git for-each-ref --format=..." was too loose when
   parsing the "%(trailers...)" atom, and forgot that "trailers" and
   "trailers:&lt;modifiers&gt;" are the only two allowed forms, which has
   been corrected.
   (merge 2c22e102f8 hv/ref-filter-trailers-atom-parsing-fix later to maint).

 * Long ago, we decided to use 3 threads by default when running the
   index-pack task in parallel, which has been adjusted a bit upwards.
   (merge fbff95b67f jk/index-pack-w-more-threads later to maint).

 * "git restore/checkout --no-overlay" with wildcarded pathspec
   mistakenly removed matching paths in subdirectories, which has been
   corrected.
   (merge bfda204ade rs/checkout-no-overlay-pathspec-fix later to maint).

 * The description of --cached/--index options in "git apply --help"
   has been updated.
   (merge d064702be3 rp/apply-cached-doc later to maint).

 * Feeding "$ZERO_OID" to "git log --ignore-missing --stdin", and
   running "git log --ignore-missing $ZERO_OID" fell back to start
   digging from HEAD; it has been corrected to become a no-op, like
   "git log --tags=no-tag-matches-this-pattern" does.
   (merge 04a0e98515 jk/rev-input-given-fix later to maint).

 * Various callers of run_command API have been modernized.
   (merge afbdba391e jc/run-command-use-embedded-args later to maint).

 * List of options offered and accepted by "git add -i/-p" were
   inconsistent, which have been corrected.
   (merge ce910287e7 pw/add-p-allowed-options-fix later to maint).

 * "git diff --stat -w" showed 0-line changes for paths whose changes
   were only whitespaces, which was not intuitive.  We now omit such
   paths from the stat output.
   (merge 1cf3d5db9b mr/diff-hide-stat-wo-textual-change later to maint).

 * It was possible for xrealloc() to send a non-NULL pointer that has
   been freed, which has been fixed.
   (merge 6479ea4a8a jk/xrealloc-avoid-use-after-free later to maint).

 * "git status" has trouble showing where it came from by interpreting
   reflog entries that record certain events, e.g. "checkout @{u}", and
   gives a hard/fatal error.  Even though it inherently is impossible
   to give a correct answer because the reflog entries lose some
   information (e.g. "@{u}" does not record what branch the user was
   on hence which branch 'the upstream' needs to be computed, and even
   if the record were available, the relationship between branches may
   have changed), at least hide the error and allow "status" to show its
   output.

 * "git status --short" quoted a path with SP in it when tracked, but
   not those that are untracked, ignored or unmerged.  They are all
   shown quoted consistently.

 * "git diff/show" on a change that involves a submodule used to read
   the information on commits in the submodule from a wrong repository
   and gave a wrong information when the commit-graph is involved.
   (merge 85a1ec2c32 mf/submodule-summary-with-correct-repository later to maint).

 * Unlike "git config --local", "git config --worktree" did not fail
   early and cleanly when started outside a git repository.
   (merge 378fe5fc3d mt/config-fail-nongit-early later to maint).

 * There is a logic to estimate how many objects are in the
   repository, which is meant to run once per process invocation, but
   it ran every time the estimated value was requested.
   (merge 67bb65de5d jk/dont-count-existing-objects-twice later to maint).

 * "git remote set-head" that failed still said something that hints
   the operation went through, which was misleading.
   (merge 5a07c6c3c2 cs/don-t-pretend-a-failed-remote-set-head-succeeded later to maint).

 * "git fetch --all --ipv4/--ipv6" forgot to pass the protocol options
   to instances of the "git fetch" that talk to individual remotes,
   which has been corrected.
   (merge 4e735c1326 ar/fetch-ipversion-in-all later to maint).

 * The "unshelve" subcommand of "git p4" incorrectly used commit^N
   where it meant to say commit~N to name the Nth generation
   ancestor, which has been corrected.
   (merge 0acbf5997f ld/p4-unshelve-fix later to maint).

 * "git clone" that clones from SHA-1 repository, while
   GIT_DEFAULT_HASH set to use SHA-256 already, resulted in an
   unusable repository that half-claims to be SHA-256 repository
   with SHA-1 objects and refs.  This has been corrected.

 * Adjust sample hooks for hash algorithm other than SHA-1.
   (merge d8d3d632f4 dl/zero-oid-in-hooks later to maint).

 * "git range-diff" showed incorrect diffstat, which has been
   corrected.

 * Earlier we taught "git pull" to warn when the user does not say the
   histories need to be merged, rebased or accepts only fast-
   forwarding, but the warning triggered for those who have set the
   pull.ff configuration variable.
   (merge 54200cef86 ah/pull later to maint).

 * Compilation fix around type punning.
   (merge 176380fd11 jk/drop-unaligned-loads later to maint).

 * "git blame --ignore-rev/--ignore-revs-file" failed to validate
   their input are valid revision, and failed to take into account
   that the user may want to give an annotated tag instead of a
   commit, which has been corrected.
   (merge 610e2b9240 jc/blame-ignore-fix later to maint).

 * "git bisect start X Y", when X and Y are not valid committish
   object names, should take X and Y as pathspec, but didn't.
   (merge 73c6de06af cc/bisect-start-fix later to maint).

 * The explanation of the "scissors line" has been clarified.
   (merge 287416dba6 eg/mailinfo-doc-scissors later to maint).

 * A race that leads to an access to a free'd data was corrected in
   the codepath that reads pack files.
   (merge bda959c476 mt/delta-base-cache-races later to maint).

 * in_merge_bases_many(), a way to see if a commit is reachable from
   any commit in a set of commits, was totally broken when the
   commit-graph feature was in use, which has been corrected.
   (merge 8791bf1841 ds/in-merge-bases-many-optim-bug later to maint).

 * "git submodule update --quiet" did not squelch underlying "rebase"
   and "pull" commands.
   (merge 3ad0401e9e td/submodule-update-quiet later to maint).

 * The lazy fetching done internally to make missing objects available
   in a partial clone incorrectly made permanent damage to the partial
   clone filter in the repository, which has been corrected.

 * "log -c --find-object=X" did not work well to find a merge that
   involves a change to an object X from only one parent.
   (merge 957876f17d jk/diff-cc-oidfind-fix later to maint).

 * Other code cleanup, docfix, build fix, etc.
   (merge 84544f2ea3 sk/typofixes later to maint).
   (merge b17f411ab5 ar/help-guides-doc later to maint).
   (merge 98c6871fad rs/grep-simpler-parse-object-or-die-call later to maint).
   (merge 861c4ce141 en/typofixes later to maint).
   (merge 60e47f6773 sg/ci-git-path-fix-with-pyenv later to maint).
   (merge e2bfa50ac3 jb/doc-packfile-name later to maint).
   (merge 918d8ff780 es/worktree-cleanup later to maint).
   (merge dc156bc31f ma/t1450-quotefix later to maint).
   (merge 56e743426b en/merge-recursive-comment-fixes later to maint).
   (merge 7d23ff818f rs/bisect-oid-to-hex-fix later to maint).
   (merge de20baf2c9 ny/notes-doc-sample-update later to maint).
   (merge f649aaaf82 so/rev-parser-errormessage-fix later to maint).
   (merge 6103d58b7f bc/sha-256-cvs-svn-updates later to maint).
   (merge ac900fddb7 ma/stop-progress-null-fix later to maint).
   (merge e767963ab6 rs/upload-pack-sigchain-fix later to maint).
   (merge a831908599 rs/preserve-merges-unused-code-removal later to maint).
   (merge 6dfefe70a9 jb/commit-graph-doc-fix later to maint).
   (merge 847b37271e pb/set-url-docfix later to maint).
   (merge 748f733d54 mt/checkout-entry-dead-code-removal later to maint).
   (merge ce820cbd58 dl/subtree-docs later to maint).
   (merge 55fe225dde jk/leakfix later to maint).
   (merge ee22a29215 so/pretty-abbrev-doc later to maint).
   (merge 3100fd5588 jc/post-checkout-doc later to maint).
   (merge 17bae89476 pb/doc-external-diff-env later to maint).
   (merge 27ed6ccc12 jk/worktree-check-clean-leakfix later to maint).
   (merge 1302badd16 ea/blame-use-oideq later to maint).
   (merge e6d5a11fed al/t3200-back-on-a-branch later to maint).
   (merge 324efcf6b6 pw/add-p-leakfix later to maint).
   (merge 1c6ffb546b jk/add-i-fixes later to maint).
   (merge e40e936551 cd/commit-graph-doc later to maint).
   (merge 0512eabd91 jc/sequencer-stopped-sha-simplify later to maint).
   (merge d01141de5a so/combine-diff-simplify later to maint).
   (merge 3be01e5ab1 sn/fast-import-doc later to maint).</content>
</entry>
</feed>
