Link [ pkgsrc | NetBSD | pkgsrc git mirror | PR fulltext-search | netbsd commit viewer ]


   
        usage: [branch:branch] [user:user] [path[@revision]] keyword [... [-excludekeyword [...]]] (e.g. branch:MAIN pkgtools/pkg)




switch to index mode

recent branches: MAIN (46m)  pkgsrc-2024Q1 (10d)  pkgsrc-2023Q4 (57d)  pkgsrc-2023Q2 (89d)  pkgsrc-2023Q3 (169d) 

2024-05-28 02:52:27 UTC Now

2020-01-20 20:07:41 UTC MAIN commitmail json YAML

git: updated to 2.25.0

Git 2.25 Release Notes
======================

Updates since v2.24
-------------------

Backward compatibility notes

UI, Workflows & Features

* A tutorial on object enumeration has been added.

* The branch description ("git branch --edit-description") has been
  used to fill the body of the cover letters by the format-patch
  command; this has been enhanced so that the subject can also be
  filled.

* "git rebase --preserve-merges" has been marked as deprecated; this
  release stops advertising it in the "git rebase -h" output.

* The code to generate multi-pack index learned to show (or not to
  show) progress indicators.

* "git apply --3way" learned to honor merge.conflictStyle
  configuration variable, like merges would.

* The custom format for "git log --format=<format>" learned the l/L
  placeholder that is similar to e/E that fills in the e-mail
  address, but only the local part on the left side of '@'.

* Documentation pages for "git shortlog" now list commit limiting
  options explicitly.

* The patterns to detect function boundary for Elixir language has
  been added.

* The completion script (in contrib/) learned that the "--onto"
  option of "git rebase" can take its argument as the value of the
  option.

* The userdiff machinery has been taught that "async def" is another
  way to begin a "function" in Python.

* "git range-diff" learned to take the "--notes=<ref>" and the
  "--no-notes" options to control the commit notes included in the
  log message that gets compared.

* "git rev-parse --show-toplevel" run outside of any working tree did
  not error out, which has been corrected.

* A few commands learned to take the pathspec from the standard input
  or a named file, instead of taking it as the command line
  arguments, with the "--pathspec-from-file" option.

* "git submodule" learned a subcommand "set-url".

* "git log" family learned "--pretty=reference" that gives the name
  of a commit in the format that is often used to refer to it in log
  messages.

* The interaction between "git clone --recurse-submodules" and
  alternate object store was ill-designed.  The documentation and
  code have been taught to make more clear recommendations when the
  users see failures.

* Management of sparsely checked-out working tree has gained a
  dedicated "sparse-checkout" command.

* Miscellaneous small UX improvements on "git-p4".

* "git sparse-checkout list" subcommand learned to give its output in
  a more concise form when the "cone" mode is in effect.

Performance, Internal Implementation, Development Support etc.

* Debugging support for lazy cloning has been a bit improved.

* Move the definition of a set of bitmask constants from 0ctal
  literal to (1U<<count) notation.

* Test updates to prepare for SHA-2 transition continues.

* Crufty code and logic accumulated over time around the object
  parsing and low-level object access used in "git fsck" have been
  cleaned up.

* The implementation of "git log --graph" got refactored and then its
  output got simplified.

* Follow recent push to move API docs from Documentation/ to header
  files and update config.h

* "git bundle" has been taught to use the parse options API.  "git
  bundle verify" learned "--quiet" and "git bundle create" learned
  options to control the progress output.

* Handling of commit objects that use non UTF-8 encoding during
  "rebase -i" has been improved.

* The beginning of rewriting "git add -i" in C.

* A label used in the todo list that are generated by "git rebase
  --rebase-merges" is used as a part of a refname; the logic to come
  up with the label has been tightened to avoid names that cannot be
  used as such.

* The logic to avoid duplicate label names generated by "git rebase
  --rebase-merges" forgot that the machinery itself uses "onto" as a
  label name, which must be avoided by auto-generated labels, which
  has been corrected.

* We have had compatibility fallback macro definitions for "PRIuMAX",
  "PRIu32", etc. but did not for "PRIdMAX", while the code used the
  last one apparently without any hiccup reported recently.  The
  fallback macro definitions for these <inttypes.h> macros that must
  appear in C99 systems have been removed.

* Recently we have declared that GIT_TEST_* variables take the
  usual boolean values (it used to be that some used "non-empty
  means true" and taking GIT_TEST_VAR=YesPlease as true); make
  sure we notice and fail when non-bool strings are given to
  these variables.

* Users of oneway_merge() (like "reset --hard") learned to take
  advantage of fsmonitor to avoid unnecessary lstat(2) calls.

* Performance tweak on "git push" into a repository with many refs
  that point at objects we have never heard of.

* PerfTest fix to avoid stale result mixed up with the latest round
  of test results.

* Hide lower-level verify_signed-buffer() API as a pure helper to
  implement the public check_signature() function, in order to
  encourage new callers to use the correct and more strict
  validation.

* Unnecessary reading of state variables back from the disk during
  sequencer operation has been reduced.

* The code has been made to avoid gmtime() and localtime() and prefer
  their reentrant counterparts.

* In a repository with many packfiles, the cost of the procedure that
  avoids registering the same packfile twice was unnecessarily high
  by using an inefficient search algorithm, which has been corrected.

* Redo "git name-rev" to avoid recursive calls.

* FreeBSD CI support via Cirrus-CI has been added.

Fixes since v2.24
-----------------

* "rebase -i" ceased to run post-commit hook by mistake in an earlier
  update, which has been corrected.

* "git notes copy $original" ought to copy the notes attached to the
  original object to HEAD, but a mistaken tightening to command line
  parameter validation made earlier disabled that feature by mistake.

* When all files from some subdirectory were renamed to the root
  directory, the directory rename heuristics would fail to detect that
  as a rename/merge of the subdirectory to the root directory, which has
  been corrected.

* Code clean-up and a bugfix in the logic used to tell worktree local
  and repository global refs apart.

* "git stash save" in a working tree that is sparsely checked out
  mistakenly removed paths that are outside the area of interest.

* "git rev-parse --git-path HEAD.lock" did not give the right path
  when run in a secondary worktree.

* "git merge --no-commit" needs "--no-ff" if you do not want to move
  HEAD, which has been corrected in the manual page for "git bisect".

* "git worktree add" internally calls "reset --hard" that should not
  descend into submodules, even when submodule.recurse configuration
  is set, but it was affected.  This has been corrected.

* Messages from die() etc. can be mixed up from multiple processes
  without even line buffering on Windows, which has been worked
  around.

* HTTP transport had possible allocator/deallocator mismatch, which
  has been corrected.

* The watchman integration for fsmonitor was racy, which has been
  corrected to be more conservative.

* Fetching from multiple remotes into the same repository in parallel
  had a bad interaction with the recent change to (optionally) update
  the commit-graph after a fetch job finishes, as these parallel
  fetches compete with each other.  Which has been corrected.

* Recent update to "git stash pop" made the command empty the index
  when run with the "--quiet" option, which has been corrected.

* "git fetch" codepath had a big "do not lazily fetch missing objects
  when I ask if something exists" switch.  This has been corrected by
  marking the "does this thing exist?" calls with "if not please do not
  lazily fetch it" flag.

* Test update to avoid wasted cycles.

* Error handling after "git push" finishes sending the packdata and
  waits for the response to the remote side has been improved.

* Some codepaths in "gitweb" that forgot to escape URLs generated
  based on end-user input have been corrected.

* CI jobs for macOS has been made less chatty when updating perforce
  package used during testing.

* "git unpack-objects" used to show progress based only on the number
  of received and unpacked objects, which stalled when it has to
  handle an unusually large object.  It now shows the throughput as
  well.

* The sequencer machinery compared the HEAD and the state it is
  attempting to commit to decide if the result would be a no-op
  commit, even when amending a commit, which was incorrect, and
  has been corrected.

* The code to parse GPG output used to assume incorrectly that the
  finterprint for the primary key would always be present for a valid
  signature, which has been corrected.

* "git submodule status" and "git submodule status --cached" show
  different things, but the documentation did not cover them
  correctly, which has been corrected.

* "git reset --patch $object" without any pathspec should allow a
  tree object to be given, but incorrectly required a committish,
  which has been corrected.

* "git submodule status" that is run from a subdirectory of the
  superproject did not work well, which has been corrected.

* The revision walking machinery uses resources like per-object flag
  bits that need to be reset before a new iteration of walking
  begins, but the resources related to topological walk were not
  cleared correctly, which has been corrected.

* TravisCI update.

* While running "revert" or "cherry-pick --edit" for multiple
  commits, a recent regression incorrectly detected "nothing to
  commit, working tree clean", instead of replaying the commits,
  which has been corrected.

* Work around a issue where a FD that is left open when spawning a
  child process and is kept open in the child can interfere with the
  operation in the parent process on Windows.

* One kind of progress messages were always given during commit-graph
  generation, instead of following the "if it takes more than two
  seconds, show progress" pattern, which has been corrected.

* "git rebase" did not work well when format.useAutoBase
  configuration variable is set, which has been corrected.

* The "diff" machinery learned not to lose added/removed blank lines
  in the context when --ignore-blank-lines and --function-context are
  used at the same time.

* The test on "fast-import" used to get stuck when "fast-import" died
  in the middle.

* "git format-patch" can take a set of configured format.notes values
  to specify which notes refs to use in the log message part of the
  output.  The behaviour of this was not consistent with multiple
  --notes command line options, which has been corrected.

* "git p4" used to ignore lfs.storage configuration variable, which
  has been corrected.

* Assorted fixes to the directory traversal API.

* Forbid pathnames that the platform's filesystem cannot represent on
  MinGW.

* "git rebase --signoff" stopped working when the command was written
  in C, which has been corrected.

* An earlier update to Git for Windows declared that a tree object is
  invalid if it has a path component with backslash in it, which was
  overly strict, which has been corrected.  The only protection the
  Windows users need is to prevent such path (or any path that their
  filesystem cannot check out) from entering the index.

* The code to write split commit-graph file(s) upon fetching computed
  bogus value for the parameter used in splitting the resulting
  files, which has been corrected.

* Other code cleanup, docfix, build fix, etc.

(adam)