Software Update: Git 2.37

Spread the love

The developers behind Git have released version 2.37.0 of their software. With Git, software and project developers, among others, can perform management and version control over data and source code. The program can be seen as a competitor to Subversion or Mercurial. It has, among other things, complete branching and mergingfunctions and is released under the gpl version 2. For an overview of comparisons between Git and other version control systems, see this page† This is the complete changelog here Here are the main changes and improvements:

UI, Workflows & Features

  • “vimdiff[123]” mergetool drivers have been reimplemented with a more generic layout mechanism.
  • “git -v” and “git -h” are now understood as “git –version” and “git –help”.
  • The temporary files fed to external diff command are now generated inside a new temporary directory under the same basename.
  • “git log –since=X” will stop traversal upon seeing a commit that is older than X, but there may be commits behind it that is younger than X when the commit was created with a faulty clock. A new option is added to keep digging without stopping, and instead filter out commits with timestamp older than X.
  • “git -c branch.autosetupmerge=simple branch $A $B” will set the $B as $A’s upstream only when $A and $B shares the same name, and “git -c push.default=simple” on branch $ A would push to update the branch $A at the remote $B came from. Also more places use the sole remote, if exists, before defaulting to ‘origin’.
  • A new doc has been added that lists tips for tools to work with Git’s codebase.
  • “git remote -v” now shows the list-objects-filter used during fetching from the remote, if available.
  • With the new http.curloptResolve configuration, the CURLOPT_RESOLVE mechanism that allows cURL based applications to use pre-resolved IP addresses for the requests is exposed to the scripts.
  • “git add -i” was rewritten in C some time ago and has been in testing; the reimplementation is now exposed to general public by default.
  • Deprecate non-cone mode of the sparse checkout feature.
  • Introduce a filesystem-dependent mechanism to optimize the way the bits for many loose object files are ensured to hit the disk platter.
  • The “do not remove the directory the user started Git in” logic, when Git cannot tell where that directory is, is disabled. Earlier we refused to run in such a case.
  • A mechanism to pack unreachable objects into a “cruft pack”, instead of ejecting them into loose form to be reclaimed later, has been introduced.
  • Update the doctype written in gitweb output to xhtml5.
  • The “transfer.credentialsInURL” configuration variable controls what happens when a URL with embedded login credential is used on either “fetch” or “push”. Credentials are currently only detected in `remote..url` config, not `remote..pushurl`.
  • “git revert” learns “–reference” option to use more human-readable reference to the commit it reverts in the message template it prepares for the user.
  • Various error messages that talk about the removal of “–preserve-merges” in “rebase” have been strengthened, and “rebase –abort” learned to get out of a state that was left by an earlier use of the option.

Performance, Internal Implementation, Development Support etc.

  • The performance of the “untracked cache” feature has been improved when “–untracked-files=” and “status.showUntrackedFiles” are combined.
  • “git stash” works better with sparse index entries.
  • “git show :” learned to work better with the sparse-index feature.
  • Introduce and apply coccinelle rule to discourage an explicit comparison between a pointer and NULL, and applies the clean-up to the maintenance track.
  • Preliminary code refactoring around transport and bundle code.
  • “sparse-checkout” learns to work better with the sparse-index feature.
  • A workflow change for translators are being proposed. git.pot is no longer version controlled and it is local responsibility of translators to generate it.
  • Plug the memory leaks from the trickiest API of all, the revision walker.
  • Rename .env_array member to .env in the child_process structure.
    The fsmonitor–daemon handles even more corner cases when watching filesystem events.
  • A new bug() and BUG_if_bug() API is introduced to make it easier to uniformly log “detect multiple bugs and abort in the end” pattern.

Version number 2.37
Release status Final
Operating systems Windows 7, Linux, BSD, macOS, Solaris, UNIX, Windows Server 2008, Windows Server 2012, Windows 8, Windows 10, Windows Server 2016, Windows Server 2019, Windows 11
Website git
License type Conditions (GNU/BSD/etc.)
You might also like