Next | Query returned 142 messages, browsing 41 to 50 | Previous

History of commit frequency

CVS Commit History:


   2021-02-09 07:45:06 by Adam Ciarcinski | Files touched by this commit (2) | Package updated
Log message:
git: updated to 2.30.1

Git v2.30.1 Release Notes
=========================

This release is primarily to merge fixes accumulated on the 'master'
front to prepare for 2.31 release that are still relevant to 2.30.x
maintenance track.

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

 * "git fetch --recurse-submodules" failed to update a submodule
   when it has an uninitialized (hence of no interest to the user)
   sub-submodule, which has been corrected.

 * Command line error of "git rebase" are diagnosed earlier.

 * "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=<var> <cmd>" should not run \ 
<cmd> for
   any repository when the configuration variable <var> is not defined
   even once.

 * "git mergetool --tool-help" was broken in 2.29 and failed to list
   all the available tools.

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

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

 * 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 for packfile URI feature has been clarified.

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

 * 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.

Also contains minor documentation updates and code clean-ups.
   2021-01-11 11:20:17 by Adam Ciarcinski | Files touched by this commit (4) | Package updated
Log message:
git: updated to 2.30.0

Git 2.30 Release Notes
======================

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

UI, Workflows & 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[=<ref>]" 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<regex>" 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=<n>" 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 [-- <path>]" 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->hash conversion missed one spot, breaking "git svn".
   (merge 03bb366de4 bc/svn-hash-oid-fix later to maint).

 * The documentation on the "--abbrev=<n>" option did not say the
   output may be longer than "<n>" 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<range>:<path>" 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=<file>" 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).
   2020-10-31 22:10:01 by Adam Ciarcinski | Files touched by this commit (6) | Package updated
Log message:
git: updated to 2.29.2

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 & 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=<>" learned %(contents:size).

 * "git merge" learned to selectively omit " into \ 
<branch>" 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=<prev> <origin>..HEAD" has \ 
been taught
   not to ignore <origin> when <prev> 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 <TAB>" 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 <git-compat-util.h> 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 [<tree-ish>] $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:<modifiers>" 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).
   2020-07-29 09:47:51 by Adam Ciarcinski | Files touched by this commit (2) | Package updated
Log message:
git: updated to 2.28.0

Git 2.28 Release Notes
======================

Updates since v2.27
-------------------

Backward compatibility notes

 * "fetch.writeCommitGraph" is deemed to be still a bit too risky and
   is no longer part of the "feature.experimental" set.

UI, Workflows & Features

 * The commands in the "diff" family learned to honor \ 
"diff.relative"
   configuration variable.

 * The check in "git fsck" to ensure that the tree objects are sorted
   still had corner cases it missed unsorted entries.

 * The interface to redact sensitive information in the trace output
   has been simplified.

 * The command line completion (in contrib/) learned to complete
   options that the "git switch" command takes.

 * "git diff" used to take arguments in random and nonsense range
   notation, e.g. "git diff A..B C", "git diff A..B C...D", etc.,
   which has been cleaned up.

 * "git diff-files" has been taught to say paths that are marked as
   intent-to-add are new files, not modified from an empty blob.

 * "git status" learned to report the status of sparse checkout.

 * "git difftool" has trouble dealing with paths added to the index
   with the intent-to-add bit.

 * "git fast-export --anonymize" learned to take customized mapping to
   allow its users to tweak its output more usable for debugging.

 * The command line completion support (in contrib/) used to be
   prepared to work with "set -u" but recent changes got a bit more
   sloppy.  This has been corrected.

 * "git gui" now allows opening work trees from the start-up dialog.

Performance, Internal Implementation, Development Support etc.

 * Code optimization for a common case.
   (merge 8777616e4d an/merge-single-strategy-optim later to maint).

 * We've adopted a convention that any on-stack structure can be
   initialized to have zero values in all fields with "= { 0 }",
   even when the first field happens to be a pointer, but sparse
   complained that a null pointer should be spelled NULL for a long
   time.  Start using -Wno-universal-initializer option to squelch
   it (the latest sparse has it on by default).

 * "git log -L..." now takes advantage of the "which paths are touched
   by this commit?" info stored in the commit-graph system.

 * As FreeBSD is not the only platform whose regexp library reports
   a REG_ILLSEQ error when fed invalid UTF-8, add logic to detect that
   automatically and skip the affected tests.

 * "git bugreport" learns to report what shell is in use.

 * Support for GIT_CURL_VERBOSE has been rewritten in terms of
   GIT_TRACE_CURL.

 * Preliminary clean-ups around refs API, plus file format
   specification documentation for the reftable backend.

 * Workaround breakage in MSVC build, where "curl-config --cflags"
   gives settings appropriate for GCC build.

 * Code clean-up of "git clean" resulted in a fix of recent
   performance regression.

 * Code clean-up in the codepath that serves "git fetch" continues.

 * "git merge-base --is-ancestor" is taught to take advantage of the
   commit graph.

 * Rewrite of parts of the scripted "git submodule" Porcelain command
   continues; this time it is "git submodule set-branch" subcommand's
   turn.

 * The "fetch/clone" protocol has been updated to allow the server to
   instruct the clients to grab pre-packaged packfile(s) in addition
   to the packed object data coming over the wire.

 * A misdesigned strbuf_write_fd() function has been retired.

 * SHA-256 migration work continues, including CVS/SVN interface.

 * A few fields in "struct commit" that do not have to always be
   present have been moved to commit slabs.

 * API cleanup for get_worktrees()

 * By renumbering object flag bits, "struct object" managed to lose
   bloated inter-field padding.

 * The name of the primary branch in existing repositories, and the
   default name used for the first branch in newly created
   repositories, is made configurable, so that we can eventually wean
   ourselves off of the hardcoded 'master'.

 * The effort to avoid using test_must_fail on non-git command continues.

 * In 2.28-rc0, we corrected a bug that some repository extensions are
   honored by mistake even in a version 0 repositories (these
   configuration variables in extensions.* namespace were supposed to
   have special meaning in repositories whose version numbers are 1 or
   higher), but this was a bit too big a change.  The behaviour in
   recent versions of Git where certain extensions.* were honored by
   mistake even in version 0 repositories has been restored.

Fixes since v2.27
-----------------

 * The "--prepare-p4-only" option of "git p4" is supposed to stop
   after replaying one changeset, but kept going (by mistake?)

 * The error message from "git checkout -b foo -t bar baz" was
   confusing.

 * Some repositories in the wild have commits that record nonsense
   committer timezone (e.g. rails.git); "git fast-import" learned an
   option to pass these nonsense timestamps intact to allow recreating
   existing repositories as-is.
   (merge d42a2fb72f en/fast-import-looser-date later to maint).

 * The command line completion script (in contrib/) tried to complete
   "git stash -p" as if it were "git stash push -p", but it \ 
was too
   aggressive and also affected "git stash show -p", which has been
   corrected.
   (merge fffd0cf520 vs/complete-stash-show-p-fix later to maint).

 * On-the-wire protocol v2 easily falls into a deadlock between the
   remote-curl helper and the fetch-pack process when the server side
   prematurely throws an error and disconnects.  The communication has
   been updated to make it more robust.

 * "git checkout -p" did not handle a newly added path at all.
   (merge 2c8bd8471a js/checkout-p-new-file later to maint).

 * The code to parse "git bisect start" command line was lax in
   validating the arguments.
   (merge 4d9005ff5d cb/bisect-helper-parser-fix later to maint).

 * Reduce memory usage during "diff --quiet" in a worktree with too
   many stat-unmatched paths.
   (merge d2d7fbe129 jk/diff-memuse-optim-with-stat-unmatch later to maint).

 * The reflog entries for "git clone" and "git fetch" did not
   anonymize the URL they operated on.
   (merge 46da295a77 js/reflog-anonymize-for-clone-and-fetch later to maint).

 * The behaviour of "sparse-checkout" in the state "git clone
   --no-checkout" left was changed accidentally in 2.27, which has
   been corrected.

 * Use of negative pathspec, while collecting paths including
   untracked ones in the working tree, was broken.

 * The same worktree directory must be registered only once, but
   "git worktree move" allowed this invariant to be violated, which
   has been corrected.
   (merge 810382ed37 es/worktree-duplicate-paths later to maint).

 * The effect of sparse checkout settings on submodules is documented.
   (merge e7d7c73249 en/sparse-with-submodule-doc later to maint).

 * Code clean-up around "git branch" with a minor bugfix.
   (merge dc44639904 dl/branch-cleanup later to maint).

 * A branch name used in a test has been clarified to match what is
   going on.
   (merge 08dc26061f pb/t4014-unslave later to maint).

 * An in-code comment in "git diff" has been updated.
   (merge c592fd4c83 dl/diff-usage-comment-update later to maint).

 * The documentation and some tests have been adjusted for the recent
   renaming of "pu" branch to "seen".
   (merge 6dca5dbf93 js/pu-to-seen later to maint).

 * The code to push changes over "dumb" HTTP had a bad interaction
   with the commit reachability code due to incorrect allocation of
   object flag bits, which has been corrected.
   (merge 64472d15e9 bc/http-push-flagsfix later to maint).

 * "git send-email --in-reply-to=<msg>" did not use the In-Reply-To:
   header with the value given from the command line, and let it be
   overridden by the value on In-Reply-To: header in the messages
   being sent out (if exists).
   (merge f9f60d7066 ra/send-email-in-reply-to-from-command-line-wins later to \ 
maint).

 * "git log -Lx,y:path --before=date" lost track of where the range
   should be because it didn't take the changes made by the youngest
   commits that are omitted from the output into account.

 * When "fetch.writeCommitGraph" configuration is set in a shallow
   repository and a fetch moves the shallow boundary, we wrote out
   broken commit-graph files that do not match the reality, which has
   been corrected.

 * "git checkout" failed to catch an error from fstat() after updating
   a path in the working tree.
   (merge 35e6e212fd mt/entry-fstat-fallback-fix later to maint).

 * When an aliased command, whose output is piped to a pager by git,
   gets killed by a signal, the pager got into a funny state, which
   has been corrected (again).
   (merge c0d73a59c9 ta/wait-on-aliased-commands-upon-signal later to maint).

 * The code to produce progress output from "git commit-graph --write"
   had a few breakages, which have been fixed.

 * Other code cleanup, docfix, build fix, etc.
   (merge 2c31a7aa44 jx/pkt-line-doc-count-fix later to maint).
   (merge d63ae31962 cb/t5608-cleanup later to maint).
   (merge 788db145c7 dl/t-readme-spell-git-correctly later to maint).
   (merge 45a87a83bb dl/python-2.7-is-the-floor-version later to maint).
   (merge b75a219904 es/advertise-contribution-doc later to maint).
   (merge 0c9a4f638a rs/pull-leakfix later to maint).
   (merge d546fe2874 rs/commit-reach-leakfix later to maint).
   (merge 087bf5409c mk/pb-pretty-email-without-domain-part-fix later to maint).
   (merge 5f4ee57ad9 es/worktree-code-cleanup later to maint).
   (merge 0172f7834a cc/cat-file-usage-update later to maint).
   (merge 81de0c01cf ma/rebase-doc-typofix later to maint).
   2020-06-03 16:06:48 by Adam Ciarcinski | Files touched by this commit (6) | Package updated
Log message:
git: updated to 2.27.0

Git 2.27 Release Notes
======================

Updates since v2.26
-------------------

Backward compatibility notes

 * When "git describe C" finds that commit C is pointed by a signed or
   annotated tag, which records T as its tagname in the object, the
   command gives T as its answer.  Even if the user renames or moves
   such a tag from its natural location in the "refs/tags/" hierarchy,
   "git describe C" would still give T as the answer, but in such a
   case "git show T^0" would no longer work as expected.  There may be
   nothing at "refs/tags/T" or even worse there may be a different tag
   instead.

   Starting from this version, "git describe" will always use the
   "long" version, as if the "--long" option were given, \ 
when giving
   its output based on such a misplaced tag to work around the problem.

 * "git pull" issues a warning message until the pull.rebase
   configuration variable is explicitly given, which some existing
   users may find annoying---those who prefer not to rebase need to
   set the variable to false to squelch the warning.

 * The transport protocol version 2, which was promoted to the default
   in Git 2.26 release, turned out to have some remaining rough edges,
   so it has been demoted from the default.

UI, Workflows & Features

 * A handful of options to configure SSL when talking to proxies have
   been added.

 * Smudge/clean conversion filters are now given more information
   (e.g. the object of the tree-ish in which the blob being converted
   appears, in addition to its path, which has already been given).

 * When "git describe C" finds an annotated tag with tagname A to be
   the best name to explain commit C, and the tag is stored in a
   "wrong" place in the refs/tags hierarchy, e.g. refs/tags/B, the
   command gave a warning message but used A (not B) to describe C.
   If C is exactly at the tag, the describe output would be "A", but
   "git rev-parse A^0" would not be equal as "git rev-parse \ 
C^0".  The
   behavior of the command has been changed to use the "long" form
   i.e. A-0-gOBJECTNAME, which is correctly interpreted by rev-parse.

 * "git pull" learned to warn when no pull.rebase configuration
   exists, and neither --[no-]rebase nor --ff-only is given (which
   would result a merge).

 * "git p4" learned four new hooks and also "--no-verify" \ 
option to
   bypass them (and the existing "p4-pre-submit" hook).

 * "git pull" shares many options with underlying "git \ 
fetch", but
   some of them were not documented and some of those that would make
   sense to pass down were not passed down.

 * "git rebase" learned the "--no-gpg-sign" option to countermand
   commit.gpgSign the user may have.

 * The output from "git format-patch" uses RFC 2047 encoding for
   non-ASCII letters on From: and Subject: headers, so that it can
   directly be fed to e-mail programs.  A new option has been added
   to produce these headers in raw.

 * "git log" learned "--show-pulls" that helps pathspec limited
   history views; a merge commit that takes the whole change from a
   side branch, which is normally omitted from the output, is shown
   in addition to the commits that introduce real changes.

 * The interactive input from various codepaths are consolidated and
   any prompt possibly issued earlier are fflush()ed before we read.

 * Allow "git rebase" to reapply all local commits, even if the may be
   already in the upstream, without checking first.

 * The 'pack.useSparse' configuration variable now defaults to 'true',
   enabling an optimization that has been experimental since Git 2.21.

 * "git rebase" happens to call some hooks meant for \ 
"checkout" and
   "commit" by this was not a designed behaviour than historical
   accident.  This has been documented.

 * "git merge" learns the "--autostash" option.

 * "sparse-checkout" UI improvements.

 * "git update-ref --stdin" learned a handful of new verbs to let the
   user control ref update transactions more explicitly, which helps
   as an ingredient to implement two-phase commit-style atomic
   ref-updates across multiple repositories.

 * "git commit-graph write" learned different ways to write out split
   files.

 * Introduce an extension to the commit-graph to make it efficient to
   check for the paths that were modified at each commit using Bloom
   filters.

 * The approxidate parser learns to parse seconds with fraction and
   ignore fractional part.

 * The userdiff patterns for Markdown documents have been added.

 * The sparse-checkout patterns have been forbidden from excluding all
   paths, leaving an empty working tree, for a long time.  This
   limitation has been lifted.

 * "git restore --staged --worktree" now defaults to take the contents
   out of "HEAD", instead of erring out.

 * "git p4" learned to recover from a (broken) state where a directory
   and a file are recorded at the same path in the Perforce repository
   the same way as their clients do.

 * "git multi-pack-index repack" has been taught to honor some
   repack.* configuration variables.

Performance, Internal Implementation, Development Support etc.

 * The advise API has been revamped to allow more systematic enumeration of
   advice knobs in the future.

 * SHA-256 transition continues.

 * The code to interface with GnuPG has been refactored.

 * "git stash" has kept an escape hatch to use the scripted version
   for a few releases, which got stale.  It has been removed.

 * Enable tests that require GnuPG on Windows.

 * Minor test usability improvement.

 * Trace2 enhancement to allow logging of the environment variables.

 * Test clean-up continues.

 * Perf-test update.

 * A Windows-specific test element has been made more robust against
   misuse from both user's environment and programmer's errors.

 * Various tests have been updated to work around issues found with
   shell utilities that come with busybox etc.

 * The config API made mixed uses of int and size_t types to represent
   length of various pieces of text it parsed, which has been updated
   to use the correct type (i.e. size_t) throughout.

 * The "--decorate-refs" and "--decorate-refs-exclude" \ 
options "git
   log" takes have learned a companion configuration variable
   log.excludeDecoration that sits at the lowest priority in the
   family.

 * A new CI job to build and run test suite on linux with musl libc
   has been added.

 * Update the CI configuration to use GitHub Actions, retiring the one
   based on Azure Pipelines.

 * The directory traversal code had redundant recursive calls which
   made its performance characteristics exponential with respect to
   the depth of the tree, which was corrected.

 * "git blame" learns to take advantage of the \ 
"changed-paths" Bloom
   filter stored in the commit-graph file.

 * The "bugreport" tool has been added.

 * The object walk with object filter "--filter=tree:0" can now take
   advantage of the pack bitmap when available.

 * Instead of always building all branches at GitHub via Actions,
   users can specify which branches to build.

 * Codepaths that show progress meter have been taught to also use the
   start_progress() and the stop_progress() calls as a "region" to be
   traced.

 * Instead of downloading Windows SDK for CI jobs for windows builds
   from an external site (wingit.blob.core.windows.net), use the one
   created in the windows-build job, to work around quota issues at
   the external site.
   2020-04-20 22:03:32 by Leonardo Taccari | Files touched by this commit (2)
Log message:
git: Update to 2.26.2

Changes:
2.26.2
------
This release is to address the security issue: CVE-2020-11008

 * With a crafted URL that contains a newline or empty host, or lacks
   a scheme, the credential helper machinery can be fooled into
   providing credential information that is not appropriate for the
   protocol in use and host being contacted.

   Unlike the vulnerability CVE-2020-5260 fixed in v2.17.4, the
   credentials are not for a host of the attacker's choosing; instead,
   they are for some unspecified host (based on how the configured
   credential helper handles an absent "host" parameter).

   The attack has been made impossible by refusing to work with
   under-specified credential patterns.

Credit for finding the vulnerability goes to Carlo Arenas.
   2020-04-14 20:27:31 by Leonardo Taccari | Files touched by this commit (2)
Log message:
git: Update to 2.26.1

Changes:
2.26.1
------
This release is to address the security issue: CVE-2020-5260

 * With a crafted URL that contains a newline in it, the credential
   helper machinery can be fooled to give credential information for
   a wrong host.  The attack has been made impossible by forbidding
   a newline character in any value passed via the credential
   protocol.

Credit for finding the vulnerability goes to Felix Wilhelm of Google
Project Zero.
   2020-04-02 09:46:42 by Adam Ciarcinski | Files touched by this commit (3) | Package updated
Log message:
git: updated to 2.26.0

Git 2.26 Release Notes
======================

Updates since v2.25
-------------------

Backward compatibility notes

 * "git rebase" uses a different backend that is based on the 'merge'
   machinery by default.  There are a few known differences in the
   behaviour from the traditional machinery based on patch+apply.

   If your workflow is negatively affected by this change, please
   report it to git@vger.kernel.org so that we can take a look into
   it.  After doing so, you can set the 'rebase.backend' configuration
   variable to 'apply', in order to use the old default behaviour in
   the meantime.

UI, Workflows & Features

 * Sample credential helper for using .netrc has been updated to work
   out of the box.

 * gpg.minTrustLevel configuration variable has been introduced to
   tell various signature verification codepaths the required minimum
   trust level.

 * The command line completion (in contrib/) learned to complete
   subcommands and arguments to "git worktree".

 * Disambiguation logic to tell revisions and pathspec apart has been
   tweaked so that backslash-escaped glob special characters do not
   count in the "wildcards are pathspec" rule.

 * One effect of specifying where the GIT_DIR is (either with the
   environment variable, or with the "git --git-dir=<where> cmd"
   option) is to disable the repository discovery.  This has been
   placed a bit more stress in the documentation, as new users often
   get confused.

 * Two help messages given when "git add" notices the user gave it
   nothing to add have been updated to use advise() API.

 * A new version of fsmonitor-watchman hook has been introduced, to
   avoid races.

 * "git config" learned to show in which "scope", in \ 
addition to in
   which file, each config setting comes from.

 * The basic 7 colors learned the brighter counterparts
   (e.g. "brightred").

 * "git sparse-checkout" learned a new "add" subcommand.

 * A configuration element used for credential subsystem can now use
   wildcard pattern to specify for which set of URLs the entry
   applies.

 * "git clone --recurse-submodules --single-branch" now uses the same
   single-branch option when cloning the submodules.

 * "git rm" and "git stash" learns the new \ 
"--pathspec-from-file"
   option.

 * "git am --show-current-patch" is a way to show the piece of e-mail
   for the stopped step, which is not suitable to directly feed "git
   apply" (it is designed to be a good "git am" input).  It learned a
   new option to show only the patch part.

 * Handling of conflicting renames in merge-recursive have further
   been made consistent with how existing codepaths try to mimic what
   is done to add/add conflicts.

Performance, Internal Implementation, Development Support etc.

 * Tell .editorconfig that in this project, *.txt files are indented
   with tabs.

 * The test-lint machinery knew to check "VAR=VAL shell_function"
   construct, but did not check "VAR= shell_function", which has been
   corrected.

 * Replace "git config --bool" calls with "git config \ 
--type=bool" in
   sample templates.

 * The effort to move "git-add--interactive" to C continues.

 * Improve error message generation for "git submodule add".

 * Preparation of test scripts for the day when the object names will
   use SHA-256 continues.

 * Warn programmers about pretend_object_file() that allows the code
   to tentatively use in-core objects.

 * The way "git pack-objects" reuses objects stored in existing pack
   to generate its result has been improved.

 * The transport protocol version 2 becomes the default one.

 * Traditionally, we avoided threaded grep while searching in objects
   (as opposed to files in the working tree) as accesses to the object
   layer is not thread-safe.  This limitation is getting lifted.

 * "git rebase -i" (and friends) used to unnecessarily check out the
   tip of the branch to be rebased, which has been corrected.

 * A low-level API function get_oid(), that accepts various ways to
   name an object, used to issue end-user facing error messages
   without l10n, which has been updated to be translatable.

 * Unneeded connectivity check is now disabled in a partial clone when
   fetching into it.

 * Some rough edges in the sparse-checkout feature, especially around
   the cone mode, have been cleaned up.

 * The diff-* plumbing family of subcommands now pay attention to the
   diff.wsErrorHighlight configuration, which has been ignored before;
   this allows "git add -p" to also show the whitespace problems to
   the end user.

 * Some codepaths were given a repository instance as a parameter to
   work in the repository, but passed the_repository instance to its
   callees, which has been cleaned up (somewhat).

 * Memory footprint and performance of "git name-rev" has been
   improved.

 * The object reachability bitmap machinery and the partial cloning
   machinery were not prepared to work well together, because some
   object-filtering criteria that partial clones use inherently rely
   on object traversal, but the bitmap machinery is an optimization
   to bypass that object traversal.  There however are some cases
   where they can work together, and they were taught about them.

 * "git rebase" has learned to use the merge backend (i.e. the
   machinery that drives "rebase -i") by default, while allowing
   "--apply" option to use the "apply" backend (e.g. the moral
   equivalent of "format-patch piped to am").  The rebase.backend
   configuration variable can be set to customize.

 * Underlying machinery of "git bisect--helper" is being refactored
   into pieces that are more easily reused.

Fixes since v2.25
-----------------

 * "git commit" gives output similar to "git status" when \ 
there is
   nothing to commit, but without honoring the advise.statusHints
   configuration variable, which has been corrected.

 * has_object_file() said "no" given an object registered to the
   system via pretend_object_file(), making it inconsistent with
   read_object_file(), causing lazy fetch to attempt fetching an
   empty tree from promisor remotes.

 * Complete an update to tutorial that encourages "git switch" over
   "git checkout" that was done only half-way.

 * C pedantry ;-) fix.

 * The code that tries to skip over the entries for the paths in a
   single directory using the cache-tree was not careful enough
   against corrupt index file.

 * Reduce unnecessary round-trip when running "ls-remote" over the
   stateless RPC mechanism.

 * "git restore --staged" did not correctly update the cache-tree
   structure, resulting in bogus trees to be written afterwards, which
   has been corrected.

 * The code recently added to move to the entry beyond the ones in the
   same directory in the index in the sparse-cone mode did not count
   the number of entries to skip over incorrectly, which has been
   corrected.

 * Rendering by "git log --graph" of ancestry lines leading to a merge
   commit were made suboptimal to waste vertical space a bit with a
   recent update, which has been corrected.

 * Work around test breakages caused by custom regex engine used in
   libasan, when address sanitizer is used with more recent versions
   of gcc and clang.

 * Minor bugfixes to "git add -i" that has recently been rewritten in C.

 * "git fetch --refmap=" option has got a better documentation.

 * "git checkout X" did not correctly fail when X is not a local
   branch but could name more than one remote-tracking branches
   (i.e. to be dwimmed as the starting point to create a corresponding
   local branch), which has been corrected.
   (merge fa74180d08 am/checkout-file-and-ref-ref-ambiguity later to maint).

 * Corner case bugs in "git clean" that stems from a (necessarily for
   performance reasons) awkward calling convention in the directory
   enumeration API has been corrected.

 * A fetch that is told to recursively fetch updates in submodules
   inevitably produces reams of output, and it becomes hard to spot
   error messages.  The command has been taught to enumerate
   submodules that had errors at the end of the operation.
   (merge 0222540827 es/fetch-show-failed-submodules-atend later to maint).

 * The "--recurse-submodules" option of various subcommands did not
   work well when run in an alternate worktree, which has been
   corrected.

 * Futureproofing a test not to depend on the current implementation
   detail.

 * Running "git rm" on a submodule failed unnecessarily when
   .gitmodules is only cache-dirty, which has been corrected.

 * C pedantry ;-) fix.

 * "git grep --no-index" should not get affected by the contents of
   the .gitmodules file but when "--recurse-submodules" is given or
   the "submodule.recurse" variable is set, it did.  Now these
   settings are ignored in the "--no-index" mode.

 * Technical details of the bundle format has been documented.

 * Unhelpful warning messages during documentation build have been squelched.

 * "git rebase -i" identifies existing commits in its todo file with
   their abbreviated object name, which could become ambiguous as it
   goes to create new commits, and has a mechanism to avoid ambiguity
   in the main part of its execution.  A few other cases however were
   not covered by the protection against ambiguity, which has been
   corrected.

 * Allow the rebase.missingCommitsCheck configuration to kick in when
   "rebase --edit-todo" and "rebase --continue" restarts the \ 
procedure.
   (merge 5a5445d878 ag/edit-todo-drop-check later to maint).

 * The way "git submodule status" reports an initialized but not yet
   populated submodule has not been reimplemented correctly when a
   part of the "git submodule" command was rewritten in C, which has
   been corrected.
   (merge f38c92452d pk/status-of-uncloned-submodule later to maint).

 * The code to automatically shrink the fan-out in the notes tree had
   an off-by-one bug, which has been killed.

 * The index-pack code now diagnoses a bad input packstream that
   records the same object twice when it is used as delta base; the
   code used to declare a software bug when encountering such an
   input, but it is an input error.

 * The code to compute the commit-graph has been taught to use a more
   robust way to tell if two object directories refer to the same
   thing.
   (merge a7df60cac8 tb/commit-graph-object-dir later to maint).

 * "git remote rename X Y" needs to adjust configuration variables
   (e.g. branch.<name>.remote) whose value used to be X to Y.
   branch.<name>.pushRemote is now also updated.

 * Update to doc-diff.

 * Doc markup fix.

 * "git check-ignore" did not work when the given path is explicitly
   marked as not ignored with a negative entry in the .gitignore file.

 * The merge-recursive machinery failed to refresh the cache entry for
   a merge result in a couple of places, resulting in an unnecessary
   merge failure, which has been fixed.

 * Fix for a bug revealed by a recent change to make the protocol v2
   the default.

 * In rare cases "git worktree add <path>" could think that \ 
<path>
   was already a registered worktree even when it wasn't and refuse
   to add the new worktree. This has been corrected.
   (merge bb69b3b009 es/worktree-avoid-duplication-fix later to maint).

 * "git push" should stop from updating a branch that is checked out
   when receive.denyCurrentBranch configuration is set, but it failed
   to pay attention to checkouts in secondary worktrees.  This has
   been corrected.
   (merge 4d864895a2 hv/receive-denycurrent-everywhere later to maint).

 * "git rebase BASE BRANCH" rebased/updated the tip of BRANCH and
   checked it out, even when the BRANCH is checked out in a different
   worktree.  This has been corrected.
   (merge b5cabb4a96 es/do-not-let-rebase-switch-to-protected-branch later to maint).

 * "git describe" in a repository with multiple root commits sometimes
   gave up looking for the best tag to describe a given commit with
   too early, which has been adjusted.

 * "git merge signed-tag" while lacking the public key started to say
   "No signature", which was utterly wrong.  This regression has been
   reverted.

 * MinGW's poll() emulation has been improved.

 * "git show" and others gave an object name in raw format in its
   error output, which has been corrected to give it in hex.

 * "git fetch" over HTTP walker protocol did not show any progress
   output.  We inherently do not know how much work remains, but still
   we can show something not to bore users.
   (merge 7655b4119d rs/show-progress-in-dumb-http-fetch later to maint).

 * Both "git ls-remote -h" and "git grep -h" give short \ 
usage help,
   like any other Git subcommand, but it is not unreasonable to expect
   that the former would behave the same as "git ls-remote --head"
   (there is no other sensible behaviour for the latter).  The
   documentation has been updated in an attempt to clarify this.
   2020-03-19 18:08:06 by Adam Ciarcinski | Files touched by this commit (3) | Package updated
Log message:
git: updated to 2.52.2

Git 2.25.2 Release Notes
========================

Fixes since v2.25.1
-------------------

 * Minor bugfixes to "git add -i" that has recently been rewritten in C.

 * An earlier update to show the location of working tree in the error
   message did not consider the possibility that a git command may be
   run in a bare repository, which has been corrected.

 * The "--recurse-submodules" option of various subcommands did not
   work well when run in an alternate worktree, which has been
   corrected.

 * Running "git rm" on a submodule failed unnecessarily when
   .gitmodules is only cache-dirty, which has been corrected.

 * "git rebase -i" identifies existing commits in its todo file with
   their abbreviated object name, which could become ambigous as it
   goes to create new commits, and has a mechanism to avoid ambiguity
   in the main part of its execution.  A few other cases however were
   not covered by the protection against ambiguity, which has been
   corrected.

 * The index-pack code now diagnoses a bad input packstream that
   records the same object twice when it is used as delta base; the
   code used to declare a software bug when encountering such an
   input, but it is an input error.

 * The code to automatically shrink the fan-out in the notes tree had
   an off-by-one bug, which has been killed.

 * "git check-ignore" did not work when the given path is explicitly
   marked as not ignored with a negative entry in the .gitignore file.

 * The merge-recursive machinery failed to refresh the cache entry for
   a merge result in a couple of places, resulting in an unnecessary
   merge failure, which has been fixed.

 * Fix for a bug revealed by a recent change to make the protocol v2
   the default.

 * "git merge signed-tag" while lacking the public key started to say
   "No signature", which was utterly wrong.  This regression has been
   reverted.

 * MinGW's poll() emulation has been improved.

 * "git show" and others gave an object name in raw format in its
   error output, which has been corrected to give it in hex.

 * Both "git ls-remote -h" and "git grep -h" give short \ 
usage help,
   like any other Git subcommand, but it is not unreasonable to expect
   that the former would behave the same as "git ls-remote --head"
   (there is no other sensible behaviour for the latter).  The
   documentation has been updated in an attempt to clarify this.

Also contains various documentation updates, code clean-ups and minor fixups.
   2020-02-24 17:08:10 by Adam Ciarcinski | Files touched by this commit (2) | Package updated
Log message:
git: updated to 2.25.1

Git 2.25.1 Release Notes
========================

Fixes since v2.25
-----------------

 * "git commit" gives output similar to "git status" when \ 
there is
   nothing to commit, but without honoring the advise.statusHints
   configuration variable, which has been corrected.

 * has_object_file() said "no" given an object registered to the
   system via pretend_object_file(), making it inconsistent with
   read_object_file(), causing lazy fetch to attempt fetching an
   empty tree from promisor remotes.

 * The code that tries to skip over the entries for the paths in a
   single directory using the cache-tree was not careful enough
   against corrupt index file.

 * Complete an update to tutorial that encourages "git switch" over
   "git checkout" that was done only half-way.

 * Reduce unnecessary round-trip when running "ls-remote" over the
   stateless RPC mechanism.

 * "git restore --staged" did not correctly update the cache-tree
   structure, resulting in bogus trees to be written afterwards, which
   has been corrected.

 * The code recently added to move to the entry beyond the ones in the
   same directory in the index in the sparse-cone mode did not count
   the number of entries to skip over incorrectly, which has been
   corrected.

 * Work around test breakages caused by custom regex engine used in
   libasan, when address sanitizer is used with more recent versions
   of gcc and clang.

 * "git fetch --refmap=" option has got a better documentation.

 * Corner case bugs in "git clean" that stems from a (necessarily for
   performance reasons) awkward calling convention in the directory
   enumeration API has been corrected.

 * "git grep --no-index" should not get affected by the contents of
   the .gitmodules file but when "--recurse-submodules" is given or
   the "submodule.recurse" variable is set, it did.  Now these
   settings are ignored in the "--no-index" mode.

 * Technical details of the bundle format has been documented.

 * Unhelpful warning messages during documentation build have been
   squelched.

Next | Query returned 142 messages, browsing 41 to 50 | Previous