The NetBSD Project

CVS log for pkgsrc/devel/git-base/distinfo

[BACK] Up to [cvs.NetBSD.org] / pkgsrc / devel / git-base

Request diff between arbitrary revisions


Default branch: MAIN


Revision 1.137 / (download) - annotate - [select for diffs], Thu Aug 24 09:33:30 2023 UTC (5 weeks, 5 days ago) by adam
Branch: MAIN
CVS Tags: pkgsrc-2023Q3-base, pkgsrc-2023Q3, HEAD
Changes since 1.136: +4 -6 lines
Diff to previous 1.136 (colored)

git: updated to 2.42.0

Git v2.42 Release Notes
=======================

UI, Workflows & Features

 * "git pack-refs" learns "--include" and "--exclude" to tweak the ref
   hierarchy to be packed using pattern matching.

 * 'git worktree add' learned how to create a worktree based on an
   orphaned branch with `--orphan`.

 * "git pack-objects" learned to invoke a new hook program that
   enumerates extra objects to be used as anchoring points to keep
   otherwise unreachable objects in cruft packs.

 * Add more "git var" for toolsmiths to learn various locations Git is
   configured with either via the configuration or hard-coded defaults.

 * 'git notes append' was taught '--separator' to specify string to insert
   between paragraphs.

 * The "git for-each-ref" family of commands learned placeholders
   related to GPG signature verification.

 * "git diff --no-index" learned to read from named pipes as if they
   were regular files, to allow "git diff <(process) <(substitution)"
   some shells support.

 * Help newbies by suggesting that there are cases where force-pushing
   is a valid and sensible thing to update a branch at a remote
   repository, rather than reconciling with merge/rebase.

 * "git blame --contents=file" has been taught to work in a bare
   repository.

 * "git branch -f X" to repoint the branch X said that X was "checked
   out" in another worktree, even when branch X was not and instead
   being bisected or rebased.  The message was reworded to say the
   branch was "in use".

 * Tone down the warning on SHA-256 repositories being an experimental
   curiosity.  We do not have support for them to interoperate with
   traditional SHA-1 repositories, but at this point, we do not plan
   to make breaking changes to SHA-256 repositories and there is no
   longer need for such a strongly phrased warning.


Performance, Internal Implementation, Development Support etc.

 * "git diff-tree" has been taught to take advantage of the
   sparse-index feature.

 * Clang's sanitizer implementation seems to work better than GCC's.
   (merge d88d727143 jk/ci-use-clang-for-sanitizer-jobs later to maint).

 * The object traversal using reachability bitmap done by
   "pack-object" has been tweaked to take advantage of the fact that
   using "boundary" commits as representative of all the uninteresting
   ones can save quite a lot of object enumeration.

 * discover_git_directory() no longer touches the_repository.

 * "git worktree" learned to work better with sparse index feature.

 * When the external merge driver is killed by a signal, its output
   should not be trusted as a resolution with conflicts that is
   proposed by the driver, but the code did.

 * The set-up code for the get_revision() API now allows feeding
   options like --all and --not in the --stdin mode.

 * Move functions that are not about pure string manipulation out of
   strbuf.[ch]

 * "imap-send" codepaths got cleaned up to get rid of unused
   parameters.

 * Enumerating refs in the packed-refs file, while excluding refs that
   match certain patterns, has been optimized.

 * Mark-up unused parameters in the code so that we can eventually
   enable -Wunused-parameter by default.

 * Instead of inventing a custom counter variables for debugging,
   use existing trace2 facility in the fsync customization codepath.

 * "git branch --list --format=<format>" and friends are taught
   a new "%(describe)" placeholder.

 * Clarify how to choose the starting point for a new topic in
   developer guidance document.

 * The implementation of "get_sha1_hex()" that reads a hexadecimal
   string that spells a full object name has been extended to cope
   with any hash function used in the repository, but the "sha1" in
   its name survived.  Rename it to get_hash_hex(), a name that is
   more consistent within its friends like get_hash_hex_algop().

 * Command line parser fix, and a small parse-options API update.


Fixes since v2.41
-----------------

 * "git tag" learned to leave the "$GIT_DIR/TAG_EDITMSG" file when the
   command failed, so that the user can salvage what they typed.
   (merge 08c12ec1d0 kh/keep-tag-editmsg-upon-failure later to maint).

 * The "-s" (silent, squelch) option of the "diff" family of commands
   did not interact with other options that specify the output format
   well.  This has been cleaned up so that it will clear all the
   formatting options given before.
   (merge 9d484b92ed jc/diff-s-with-other-options later to maint).

 * Update documentation regarding Coccinelle patches.
   (merge 3bd0097cfc gc/doc-cocci-updates later to maint).

 * Some atoms that can be used in "--format=<format>" for "git ls-tree"
   were not supported by "git ls-files", even though they were relevant
   in the context of the latter.
   (merge 4d28c4f75f zh/ls-files-format-atoms later to maint).

 * Document more pseudo-refs and teach the command line completion
   machinery to complete AUTO_MERGE.
   (merge 982ff3a649 pb/complete-and-document-auto-merge-and-friends later to maint).

 * "git submodule" code trusted the data coming from the config (and
   the in-tree .gitmodules file) too much without validating, leading
   to NULL dereference if the user mucks with a repository (e.g.
   submodule.<name>.url is removed).  This has been corrected.
   (merge fbc806acd1 tb/submodule-null-deref-fix later to maint).

 * The value of config.worktree is per-repository, but has been kept
   in a singleton global variable per process. This has been OK as
   most Git operations interacted with a single repository at a time,
   but not right for operations like recursive "grep" that want to
   access multiple repositories from a single process without forking.

   The global variable has been eliminated and made into a member in
   the per-repository data structure.
   (merge 3867f6d650 vd/worktree-config-is-per-repository later to maint).

 * "git [-c log.follow=true] log [--follow] ':(glob)f**'" used to barf.
   (merge 8260bc5902 jk/log-follow-with-non-literal-pathspec later to maint).

 * Introduce a mechanism to disable replace refs globally and per
   repository.
   (merge 9c7d1b057f ds/disable-replace-refs later to maint).

 * "git cat-file --batch" and friends learned "-Z" that uses NUL
   delimiter for both input and output.
   (merge f79e18849b ps/cat-file-null-output later to maint).

 * The reimplemented "git add -i" did not honor color.ui configuration.
   (merge 6f74648cea ds/add-i-color-configuration-fix later to maint).

 * Compilation fix for platforms without D_TYPE in struct dirent.
   (merge 03bf92b9bf as/dtype-compilation-fix later to maint).

 * Suggest to refrain from using hex literals that are non-portable
   when writing printf(1) format strings.
   (merge f0b68f0546 jt/doc-use-octal-with-printf later to maint).

 * Simplify error message when run-command fails to start a command.
   (merge 6d224ac286 rs/run-command-exec-error-on-noent later to maint).

 * Gracefully deal with a stale MIDX file that lists a packfile that
   no longer exists.
   (merge 06f3867865 tb/open-midx-bitmap-fallback later to maint).

 * Even when diff.ignoreSubmodules tells us to ignore submodule
   changes, "git commit" with an index that already records changes to
   submodules should include the submodule changes in the resulting
   commit, but it did not.
   (merge 5768478edc js/defeat-ignore-submodules-config-with-explicit-addition later to maint).

 * When "git commit --trailer=..." invokes the interpret-trailers
   machinery, it knows what it feeds to interpret-trailers is a full
   log message without any patch, but failed to express that by
   passing the "--no-divider" option, which has been corrected.
   (merge be3d654343 jk/commit-use-no-divider-with-interpret-trailers later to maint).

 * Avoid breakage of "git pack-objects --cruft" due to inconsistency
   between the way the code enumerates packfiles in the repository.
   (merge 73320e49ad tb/collect-pack-filenames-fix later to maint).

 * We create .pack and then .idx, we consider only packfiles that have
   .idx usable (those with only .pack are not ready yet), so we should
   remove .idx before removing .pack for consistency.
   (merge 0dd1324a73 ds/remove-idx-before-pack later to maint).

 * Partially revert a sanity check that the rest of the config code
   was not ready, to avoid triggering it in a corner case.
   (merge a53f43f900 gc/config-partial-submodule-kvi-fix later to maint).

 * "git apply" punts when it is fed too large a patch input; the error
   message it gives when it happens has been clarified.
   (merge 42612e18d2 pw/apply-too-large later to maint).

 * During a cherry-pick or revert session that works on multiple
   commits, "git status" did not give correct information, which has
   been corrected.
   (merge a096a889f4 jk/cherry-pick-revert-status later to maint).

 * A few places failed to differentiate the case where the index is
   truly empty (nothing added) and we haven't yet read from the
   on-disk index file, which have been corrected.
   (merge 2ee045eea1 js/empty-index-fixes later to maint).

 * "git bugreport" tests did not test what it wanted to test, which
   has been corrected.
   (merge 1aa92b8500 ma/t0091-fixup later to maint).

 * Code snippets in a tutorial document no longer compiled after
   recent header shuffling, which have been corrected.
   (merge bbd7c7b7c0 vd/adjust-mfow-doc-to-updated-headers later to maint).

 * "git ls-files '(attr:X)D/'" that triggers the common prefix
   optimization codepath failed to read from "D/.gitattributes",
   which has been corrected.
   (merge f4a8fde057 jc/pathspec-match-with-common-prefix later to maint).

 * "git fsck --no-progress" still spewed noise from the commit-graph
   subsystem, which has been corrected.
   (merge 9281cd07f0 tb/fsck-no-progress later to maint).

 * Various offset computation in the code that accesses the packfiles
   and other data in the object layer has been hardened against
   arithmetic overflow, especially on 32-bit systems.
   (merge 9a25cad7e0 tb/object-access-overflow-protection later to maint).

 * Names of MinGW header files are spelled in mixed case in some
   source files, but the build host can be using case sensitive
   filesystem with header files with their name spelled in all
   lowercase.
   (merge 4a53d0d0bc mh/mingw-case-sensitive-build later to maint).

 * Update message mark-up for i18n in "git bundle".
   (merge bbb6acd998 dk/bundle-i18n-more later to maint).

 * "git tag --list --points-at X" showed tags that directly refers to
   object X, but did not list a tag that points at such a tag, which
   has been corrected.

 * "./configure --with-expat=no" did not work as a way to refuse use
   of the expat library on a system with the library installed, which
   has been corrected.
   (merge fb8f7269c2 ah/autoconf-fixes later to maint).

 * When the user edits "rebase -i" todo file so that it starts with a
   "fixup", which would make it invalid, the command truncated the
   rest of the file before giving an error and returning the control
   back to the user.  Stop truncating to make it easier to correct
   such a malformed todo file.
   (merge 9645a087c2 ah/sequencer-rewrite-todo-fix later to maint).

 * Rewrite the description of giving a custom command to the
   submodule.<name>.update configuration variable.
   (merge 7cebc5bd78 pv/doc-submodule-update-settings later to maint).

 * Adjust to OpenSSL 3+, which deprecates its SHA-1 functions based on
   its traditional API, by using its EVP API instead.
   (merge bda9c12073 ew/hash-with-openssl-evp later to maint).

 * Exclude "." from the set of characters to be removed from the
   beginning and the end of the human-readable name.
   (merge 1c04cb0744 bc/ident-dot-is-no-longer-crud-letter later to maint).

 * "git bisect visualize" stopped running "gitk" on Git for Windows
   when the command was reimplemented in C around Git 2.34 timeframe.
   This has been corrected.
   (merge fff1594fa7 ma/locate-in-path-for-windows later to maint).

 * "git rebase -i" with a series of squash/fixup, when one of the
   steps stopped in conflicts and ended up getting skipped, did not
   handle the accumulated commit log messages, which has been
   corrected.
   (merge 6ce7afe163 pw/rebase-skip-commit-message-fix later to maint).

 * Adjust to newer Term::ReadLine to prevent it from breaking
   the interactive prompt code in send-email.
   (merge c016726c2d jk/send-email-with-new-readline later to maint).

 * Windows updates.
   (merge 0050f8e401 ds/maintenance-on-windows-fix later to maint).

 * Correct use of lstat() that assumed a failing call would not
   clobber the statbuf.
   (merge 72695d8214 st/mv-lstat-fix later to maint).

 * Other code cleanup, docfix, build fix, etc.
   (merge 51f9d2e563 sa/doc-ls-remote later to maint).
   (merge c6d26a9dda jk/format-patch-message-id-unleak later to maint).
   (merge f7e063f326 ps/fetch-cleanups later to maint).
   (merge e4cf013468 tl/quote-problematic-arg-for-clarity later to maint).
   (merge 20025fdfc7 tz/test-ssh-verifytime-fix later to maint).
   (merge e48a21df65 tz/test-fix-pthreads-prereq later to maint).
   (merge 68b51172e3 mh/commit-reach-get-reachable-plug-leak later to maint).
   (merge aeee1408ce kh/use-default-notes-doc later to maint).
   (merge 3b8724bce6 jc/test-modernization later to maint).
   (merge 447a3b7331 jc/test-modernization-2 later to maint).
   (merge d57fa7fc73 la/doc-interpret-trailers later to maint).
   (merge 548afb0d9a la/docs-typofixes later to maint).
   (merge 3744ffcbcd rs/doc-ls-tree-hex-literal later to maint).
   (merge 6c26da8404 mh/credential-erase-improvements later to maint).
   (merge 78e56cff69 tz/lib-gpg-prereq-fix later to maint).
   (merge 80d32e84b5 rj/leakfixes later to maint).
   (merge 0a868031ed pb/complete-diff-options later to maint).
   (merge d4f28279ad jc/doc-hash-object-types later to maint).
   (merge 1876a5ae15 ks/t4205-test-describe-with-abbrev-fix later to maint).
   (merge 6e6a529b57 jk/fsck-indices-in-worktrees later to maint).
   (merge 3e81b896f7 rs/packet-length-simplify later to maint).
   (merge 4c9cb51fe7 mh/doc-credential-helpers later to maint).
   (merge 3437f549dd jr/gitignore-doc-example-markup later to maint).
   (merge 947ebd62a0 jc/am-parseopt-fix later to maint).
   (merge e12cb98e1e jc/branch-parseopt-fix later to maint).
   (merge d6f598e443 jc/gitignore-doc-pattern-markup later to maint).
   (merge a2dad4868b jc/transport-parseopt-fix later to maint).
   (merge 68cbb20e73 jc/parse-options-show-branch later to maint).
   (merge 3821eb6c3d jc/parse-options-reset later to maint).
   (merge c48af99a3e bb/trace2-comment-fix later to maint).
   (merge c95ae3ff9c rs/describe-parseopt-fix later to maint).
   (merge 36f76d2a25 rs/pack-objects-parseopt-fix later to maint).
   (merge 30c8c55cbf jc/tree-walk-drop-base-offset later to maint).
   (merge d089a06421 rs/bundle-parseopt-cleanup later to maint).
   (merge 823839bda1 ew/sha256-gcrypt-leak-fixes later to maint).
   (merge a5c01603b3 bc/ignore-clangd-cache later to maint).
   (merge 12009a182b js/allow-t4000-to-be-indented-with-spaces later to maint).
   (merge b3dcd24b8a jc/send-email-pre-process-fix later to maint).

Revision 1.136 / (download) - annotate - [select for diffs], Mon Jun 12 21:41:59 2023 UTC (3 months, 3 weeks ago) by schmonz
Branch: MAIN
CVS Tags: pkgsrc-2023Q2-base, pkgsrc-2023Q2
Changes since 1.135: +7 -4 lines
Diff to previous 1.135 (colored)

git-base: fix build on Solaris 11.4. Quell pkglint while here.

Revision 1.135 / (download) - annotate - [select for diffs], Fri Jun 9 12:05:14 2023 UTC (3 months, 3 weeks ago) by riastradh
Branch: MAIN
Changes since 1.134: +2 -2 lines
Diff to previous 1.134 (colored)

git: Split Perl-dependent scripts into new git-perlscripts package.

This way:
- devel/git still installs everything it used to.
- devel/git-base can be built without Perl.

Revision 1.134 / (download) - annotate - [select for diffs], Mon Jun 5 19:23:47 2023 UTC (3 months, 4 weeks ago) by adam
Branch: MAIN
Changes since 1.133: +4 -4 lines
Diff to previous 1.133 (colored)

git: updated to 2.41.0

Git v2.41 Release Notes
=======================

UI, Workflows & Features

 * Allow information carried on the WWW-Authenticate header to be
   passed to the credential helpers.

 * A new "fetch.hideRefs" option can be used to exclude specified refs
   from "rev-list --objects --stdin --not --all" traversal for
   checking object connectivity, most useful when there are many
   unrelated histories in a single repository.

 * "git push" has been taught to allow deletion of refs with one-level
   names to help repairing a repository who acquired such a ref by
   mistake.  In general, we don't encourage use of such a ref, and
   creation or update to such a ref is rejected as before.

 * Allow "git bisect reset" to check out the original branch when the
   branch is already checked out in a different worktree linked to the
   same repository.

 * A few subcommands have been taught to stop users from working on a
   branch that is being used in another worktree linked to the same
   repository.

 * "git format-patch" learned to write a log-message only output file
   for empty commits.

 * "git format-patch" honors the src/dst prefixes set to nonstandard
   values with configuration variables like "diff.noprefix", causing
   receiving end of the patch that expects the standard -p1 format to
   break.  "format-patch" has been taught to ignore end-user configuration
   and always use the standard prefixes.

   This is a backward compatibility breaking change.

 * Lift the limitation that colored prompts can only be used with
   PROMPT_COMMAND mode.

 * "git blame --contents=<file> <rev> -- <path>" used to be forbidden,
   but now it finds the origins of lines starting at <file> contents
   through the history that leads to <rev>.

 * "git pack-redundant" gave a warning when run, as the command has
   outlived its usefulness long ago and is nominated for future
   removal.  Now we escalate to give an error.

 * "git clone" from an empty repository learned to propagate the
   choice of the hash algorithm from the source repository to the
   newly created repository over any one of the v0/v1/v2 protocol.

 * "git mergetool" and "git difftool" learns a new configuration
   guiDefault to optionally favor configured guitool over non-gui-tool
   automatically when $DISPLAY is set.

 * "git branch -d origin/master" would say "no such branch", but it is
   likely a missed "-r" if refs/remotes/origin/master exists.  The
   command has been taught to give such a hint in its error message.

 * Clean-up of the code path that deals with merge strategy option
   handling in "git rebase".

 * "git clone --local" stops copying from an original repository that
   has symbolic links inside its $GIT_DIR; an error message when that
   happens has been updated.

 * The "--format=..." option of "git for-each-ref", "git branch", and
   "git tag" commands learn "--omit-empty" to hide refs whose
   formatting results in an empty string from the output.

 * The sendemail-validate validate hook learned to pass the total
   number of input files and where in the sequence each invocation is
   via environment variables.

 * When "gc" needs to retain unreachable objects, packing them into
   cruft packs (instead of exploding them into loose object files) has
   been offered as a more efficient option for some time.  Now the use
   of cruft packs has been made the default and no longer considered
   an experimental feature.

 * The output given by "git blame" that attributes a line to contents
   taken from the file specified by the "--contents" option shows it
   differently from a line attributed to the working tree file.

 * "git send-email" learned to give the e-mail headers to the validate
   hook by passing an extra argument from the command line.

 * The credential subsystem learns to help OAuth framework.

 * The titles of manual pages used to be chomped at an unreasonably
   short limit, which has been removed.

 * Error messages given when working on an unborn branch that is
   checked out in another worktree have been improved.

 * The documentation was misleading about the interaction between
   GIT_DEFAULT_HASH and "git clone", which has been clarified to
   stress that the variable is to be ignored by the command.

 * "git send-email" learned "--header-cmd=<cmd>" that can inject
   arbitrary e-mail header lines to the outgoing messages.

 * "git fsck" learned to detect bit-flip breakages in the reachability
   bitmap files.

 * The "--stdin" option of "git name-rev" has been replaced with
   the "--annotate-stdin" option more than a year ago.  We stop
   advertising it in the "git name-rev -h" output.

 * "git push --all" gained an alias "git push --branches".

 * "git fetch" learned the "--porcelain" option that emits what it did
   in a machine-parseable format.

 * "git --attr-source=<tree> cmd $args" is a new way to have any
   command to read attributes not from the working tree but from the
   given tree object.


Performance, Internal Implementation, Development Support etc.

 * Code clean-up to clarify directory traversal API.

 * Code clean-up to clarify the rule that "git-compat-util.h" must be
   the first to be included.

 * More work towards -Wunused.

 * Instead of forcing each command to choose to honor GPG related
   configuration variables, make the subsystem lazily initialize
   itself.

 * Remove workaround for ancient versions of DocBook to make it work
   correctly with groff, which has not been necessary since docbook
   1.76 from 2010.

 * Code clean-up to include and/or uninclude parse-options.h file as
   needed.

 * The code path that reports what "git fetch" did to each ref has
   been cleaned up.

 * Assorted config API updates.

 * A few configuration variables to tell the cURL library that
   different types of ssl-cert and ssl-key are in use have been added.

 * Split key function and data structure definitions out of cache.h to
   new header files and adjust the users.

 * "git fetch --all" does not have to download and handle the same
   bundleURI over and over, which has been corrected.

 * "git sparse-checkout" command learns a debugging aid for the sparse
   rule definitions.

 * "git write-tree" learns to work better with sparse-index.

 * The on-disk reverse index that allows mapping from the pack offset
   to the object name for the object stored at the offset has been
   enabled by default.

 * "git fsck" learned to validate the on-disk pack reverse index files.

 * strtok() and strtok_r() are banned in this codebase.

 * The detect-compilers script to help auto-tweaking the build system
   had trouble working with compilers whose version number has extra
   suffixes.  The script has been taught that certain suffixes (like
   "-win32" in "gcc 10-win32") can be safely stripped as they share
   the same features and bugs with the version without the suffix.

 * ctype tests have been taught to test EOF, too.

 * The implementation of credential helpers used fgets() over fixed
   size buffers to read protocol messages, causing the remainder of
   the folded long line to trigger unexpected behaviour, which has
   been corrected.

 * The implementation of the default "negotiator", used to find common
   ancestor over the network for object tranfer, used to be recursive;
   it was updated to be iterative to conserve stackspace usage.

 * Our custom callout formatter is no longer used in the documentation
   formatting toolchain, as the upstream default ones give better
   output these days.

 * The tracing mechanism learned to notice and report when
   auto-discovered bare repositories are being used, as allowing so
   without explicitly stating the user intends to do so (with setting
   GIT_DIR for example) can be used with social engineering as an
   attack vector.

 * "git diff-files" learned not to expand sparse-index unless needed.


Fixes since v2.40
-----------------

 * "git fsck" learned to check the index files in other worktrees,
   just like "git gc" honors them as anchoring points.
   (merge 8d3e7eac52 jk/fsck-indices-in-worktrees later to maint).

 * Fix a segfaulting loop.  The function and its caller may need
   further clean-up.
   (merge c5773dc078 ew/commit-reach-clean-up-flags-fix later to maint).

 * "git restore" supports options like "--ours" that are only
   meaningful during a conflicted merge, but these options are only
   meaningful when updating the working tree files.  These options are
   marked to be incompatible when both "--staged" and "--worktree" are
   in effect.
   (merge ee8a88826a ak/restore-both-incompatible-with-conflicts later to maint).

 * Simplify UI to control progress meter given by "git bundle" command.
   (merge 8b95521edb jk/bundle-progress later to maint).

 * "git bundle" learned that "-" is a common way to say that the input
   comes from the standard input and/or the output goes to the
   standard output.  It used to work only for output and only from the
   root level of the working tree.
   (merge 0bbe10313e jk/bundle-use-dash-for-stdfiles later to maint).

 * Once we start running, we assumed that the list of alternate object
   databases would never change.  Hook into the machinery used to
   update the list of packfiles during runtime to update this list as
   well.
   (merge e2d003dbed ds/reprepare-alternates-when-repreparing-packfiles later to maint).

 * The code to parse "git rebase -X<opt>" was not prepared to see an
   unparsable option string, which has been corrected.
   (merge 15a4cc912e ab/fix-strategy-opts-parsing later to maint).

 * "git add -p" while the index is unmerged sometimes failed to parse
   the diff output it internally produces and died, which has been
   corrected.
   (merge 28d1122f9c jk/add-p-unmerged-fix later to maint).

 * Fix for a "ls-files --format="%(path)" that produced nonsense
   output, which was a bug in 2.38.
   (merge cfb62dd006 aj/ls-files-format-fix later to maint).

 * "git receive-pack" that responds to "git push" requests failed to
   clean a stale lockfile when killed in the middle, which has been
   corrected.
   (merge c55c30669c ps/receive-pack-unlock-before-die later to maint).

 * "git rev-parse --quiet foo@{u}", or anything that asks @{u} to be
   parsed with GET_OID_QUIETLY option, did not quietly fail, which has
   been corrected.
   (merge dfbfdc521d fc/oid-quietly-parse-upstream later to maint).

 * Transports that do not support protocol v2 did not correctly fall
   back to protocol v0 under certain conditions, which has been
   corrected.
   (merge eaa0fd6584 jk/fix-proto-downgrade-to-v0 later to maint).

 * time(2) on glib 2.31+, especially on Linux, goes out of sync with
   higher resolution timers used for gettimeofday(2) and by the
   filesystem.  Replace all calls to it with a git_time() wrapper and
   (merge 370ddcbc89 pe/time-use-gettimeofday later to maint).

 * Code clean-up to use designated initializers in parse-options API.
   (merge 353e6d4554 sg/parse-options-h-initializers later to maint).

 * A recent-ish change to allow unicode character classes to be used
   with "grep -P" triggered a JIT bug in older pcre2 libraries.
   The problematic change in Git built with these older libraries has
   been disabled to work around the bug.
   (merge 14b9a04479 mk/workaround-pcre-jit-ucp-bug later to maint).

 * The wildmatch library code unlearns exponential behaviour it
   acquired some time ago since it was borrowed from rsync.
   (merge 3dc0b7f0dc pw/wildmatch-fixes later to maint).

 * The index files can become corrupt under certain conditions when
   the split-index feature is in use, especially together with
   fsmonitor, which have been corrected.
   (merge 061dd722dc js/split-index-fixes later to maint).

 * Document what the pathname-looking strings in "rev-list --object"
   output are for and what they mean.
   (merge 15364d2a3c jk/document-rev-list-object-name later to maint).

 * Fix unnecessary truncation of generation numbers used in-core.
   (merge d3af1c193d ps/ahead-behind-truncation-fix later to maint).

 * Code clean-up around the use of the_repository.
   (merge 4a93b899c1 ab/remove-implicit-use-of-the-repository later to maint).

 * Consistently spell "Message-ID" as such, not "Message-Id".
   (merge ba4324c4e1 jc/spell-id-in-both-caps-in-message-id later to maint).

 * Correct use of an uninitialized structure member.
   (merge dc12ee77ab jx/cap-object-info-uninitialized-fix later to maint).

 * Tests had a few places where we ignored PERL_PATH and blindly used
   /usr/bin/perl, which have been corrected.
   (merge c1917156a0 jk/use-perl-path-consistently later to maint).

 * Documentation mark-up fix.
   (merge 78b6369e67 la/mfc-markup-fix later to maint).

 * Doc toolchain update to remove old workaround for AsciiDoc.
   (merge 8806120de6 fc/remove-header-workarounds-for-asciidoc later to maint).

 * The userdiff regexp patterns for various filetypes that are built
   into the system have been updated to avoid triggering regexp errors
   from UTF-8 aware regex engines.
   (merge be39144954 rs/userdiff-multibyte-regex later to maint).

 * The approxidate() API has been simplified by losing an extra
   function that did the same thing as another one.
   (merge 8a7f0b666f rs/remove-approxidate-relative later to maint).

 * Code clean-up to replace a hardcoded constant with a CPP macro.
   (merge c870de6502 rs/get-tar-commit-id-use-defined-const later to maint).

 * Doc build simplification.
   (merge 9a09ed3229 fc/doc-stop-using-manversion later to maint).

 * "git archive" run from a subdirectory mishandled attributes and
   paths outside the current directory.
   (merge 92b1dd1b9e rs/archive-from-subdirectory-fixes later to maint).

 * The code to parse capability list for v0 on-wire protocol fell into
   an infinite loop when a capability appears multiple times, which
   has been corrected.

 * Geometric repacking ("git repack --geometric=<n>") in a repository
   that borrows from an alternate object database had various corner
   case bugs, which have been corrected.
   (merge d85cd18777 ps/fix-geom-repack-with-alternates later to maint).

 * The "%GT" placeholder for the "--format" option of "git log" and
   friends caused BUG() to trigger on a commit signed with an unknown
   key, which has been corrected.
   (merge 7891e46585 jk/gpg-trust-level-fix later to maint).

 * The completion script used to use bare "read" without the "-r"
   option to read the contents of various state files, which risked
   getting confused with backslashes in them.  This has been
   corrected.
   (merge 197152098a ek/completion-use-read-r-to-read-literally later to maint).

 * A small API fix to the ort merge strategy backend.
   (merge 000c4ceca7 en/ort-finalize-after-0-merges-fix later to maint).

 * The commit object parser has been taught to be a bit more lenient
   to parse timestamps on the author/committer line with a malformed
   author/committer ident.
   (merge 90ef0f14eb jk/parse-commit-with-malformed-ident later to maint).

 * Retitle a test script with an overly narrow name.
   (merge 8bb19c14fb ob/t3501-retitle later to maint).

 * Doc update to clarify how text and eol attributes interact to
   specify the end-of-line conversion.
   (merge 6696077ace ah/doc-attributes-text later to maint).

 * Gitk updates from GfW project.
   (merge 99e70f3077 js/gitk-fixes-from-gfw later to maint).

 * "git diff --dirstat" leaked memory, which has been plugged.
   (merge 83973981eb jc/dirstat-plug-leaks later to maint).

 * "git merge-tree" reads the basic configuration, which can be used
    by git forges to disable replace-refs feature.
   (merge b6551feadf ds/merge-tree-use-config later to maint).

 * A few bugs in the sequencer machinery that results in miscounting
   the steps have been corrected.
   (merge 170eea9750 js/rebase-count-fixes later to maint).

 * Other code cleanup, docfix, build fix, etc.
   (merge f7111175df as/doc-markup-fix later to maint).
   (merge 90ff7c9898 fc/test-aggregation-clean-up later to maint).
   (merge 9b0c7f308a jc/am-doc-refer-to-format-patch later to maint).
   (merge b10cbdac4c bb/unicode-width-table-15 later to maint).
   (merge 3457b50e8c ab/retire-scripted-add-p later to maint).
   (merge d52fcf493b ds/p2000-fix-grep-sparse later to maint).
   (merge ec063d2591 ss/hashmap-typofix later to maint).
   (merge 1aaed69d11 rs/archive-mtime later to maint).
   (merge 2da2cc9b28 ob/rollback-after-commit-lock-failure later to maint).
   (merge 54dbd0933b ob/sequencer-save-head-simplify later to maint).
   (merge a93cbe8d78 ar/test-cleanup-unused-file-creation later to maint).
   (merge cc48ddd937 jk/chainlint-fixes later to maint).
   (merge 4833b08426 ow/ref-format-remove-unused-member later to maint).
   (merge d0ea2ca1cf dw/doc-submittingpatches-grammofix later to maint).
   (merge fd72637423 ar/t2024-checkout-output-fix later to maint).
   (merge d45cbe3fe0 ob/sequencer-i18n-fix later to maint).
   (merge b734fe49fd ob/messages-capitalize-exception later to maint).
   (merge ad353d7e77 ma/gittutorial-fixes later to maint).
   (merge a5855fd8d4 ar/test-cleanup-unused-file-creation-part2 later to maint).
   (merge 0c5308af30 sd/doc-gitignore-and-rm-cached later to maint).
   (merge cbb83daeaf kh/doc-interpret-trailers-updates later to maint).
   (merge 3d77fbb664 ar/config-count-tests-updates later to maint).
   (merge b7cf25c8f4 jc/t9800-fix-use-of-show-s-raw later to maint).

Revision 1.132.2.1 / (download) - annotate - [select for diffs], Mon May 15 17:23:55 2023 UTC (4 months, 2 weeks ago) by spz
Branch: pkgsrc-2023Q1
Changes since 1.132: +4 -4 lines
Diff to previous 1.132 (colored) next main 1.133 (colored)

Pullup ticket #6756 - requested by taca
devel/git-base: security update
devel/git: version update

Revisions pulled up:
- devel/git-base/Makefile                                       1.104
- devel/git-base/distinfo                                       1.133
- devel/git/Makefile.version                                    1.117

-------------------------------------------------------------------
   Module Name:	pkgsrc
   Committed By:	adam
   Date:		Wed Apr 26 08:44:38 UTC 2023

   Modified Files:
   	pkgsrc/devel/git: Makefile.version
   	pkgsrc/devel/git-base: Makefile distinfo

   Log Message:
   git: updated to 2.40.1

   Git v2.40.1 Release Notes
   ============
   This release merges up the fix that appears in v2.30.9, v2.31.8,
   v2.32.7, v2.33.8, v2.34.8, v2.35.8, v2.36.6, v2.37.7, v2.38.5
   and v2.39.3 to address the security issues CVE-2023-25652,
   CVE-2023-25815, and CVE-2023-29007; see the release notes for these
   versions for details.


   To generate a diff of this commit:
   cvs rdiff -u -r1.116 -r1.117 pkgsrc/devel/git/Makefile.version
   cvs rdiff -u -r1.103 -r1.104 pkgsrc/devel/git-base/Makefile
   cvs rdiff -u -r1.132 -r1.133 pkgsrc/devel/git-base/distinfo

Revision 1.133 / (download) - annotate - [select for diffs], Wed Apr 26 08:44:38 2023 UTC (5 months, 1 week ago) by adam
Branch: MAIN
Changes since 1.132: +4 -4 lines
Diff to previous 1.132 (colored)

git: updated to 2.40.1

Git v2.40.1 Release Notes
=========================

This release merges up the fix that appears in v2.30.9, v2.31.8,
v2.32.7, v2.33.8, v2.34.8, v2.35.8, v2.36.6, v2.37.7, v2.38.5
and v2.39.3 to address the security issues CVE-2023-25652,
CVE-2023-25815, and CVE-2023-29007; see the release notes for these
versions for details.

Revision 1.132 / (download) - annotate - [select for diffs], Tue Mar 14 08:03:35 2023 UTC (6 months, 2 weeks ago) by adam
Branch: MAIN
CVS Tags: pkgsrc-2023Q1-base
Branch point for: pkgsrc-2023Q1
Changes since 1.131: +4 -4 lines
Diff to previous 1.131 (colored)

git: updated to 2.40.0

Git v2.40 Release Notes
=======================

UI, Workflows & Features

 * "merge-tree" learns a new `--merge-base` option.

 * "git jump" (in contrib/) learned to present the "quickfix list" to
   its standard output (instead of letting it consumed by the editor
   it invokes), and learned to also drive emacs/emacsclient.

 * "git var UNKNOWN_VARIABLE" and "git var VARIABLE" with the variable
   given an empty value used to behave identically.  Now the latter
   just gives an empty output, while the former still gives an error
   message.

 * Introduce a case insensitive mode to the Bash completion helpers.

 * The advice message given by "git status" when it takes long time to
   enumerate untracked paths has been updated.

 * Just like "git var GIT_EDITOR" abstracts the complex logic to
   choose which editor gets used behind it, "git var" now give support
   to GIT_SEQUENCE_EDITOR.

 * "git format-patch" learned to honor format.mboxrd even when sending
   patches to the standard output stream,

 * 'cat-file' gains mailmap support for its '--batch-check' and '-s'
   options.

 * Conditionally skip the pre-applypatch and applypatch-msg hooks when
   applying patches with 'git am'.

 * Introduce an optional configuration to allow the trailing hash that
   protects the index file from bit flipping.

 * "git check-attr" learned to take an optional tree-ish to read the
   .gitattributes file from.

 * "scalar" learned to give progress bar.

 * "grep -P" learned to use Unicode Character Property to grok
   character classes when processing \b and \w etc.

 * "git rebase" often ignored incompatible options instead of
   complaining, which has been corrected.

 * "scalar" warns but continues when its periodic maintenance
   feature cannot be enabled.

 * The bundle-URI subsystem adds support for creation-token heuristics
   to help incremental fetches.

 * Userdiff regexp update for Java language.

 * "git fetch --jobs=0" used to hit a BUG(), which has been corrected
   to use the available CPUs.

 * An invalid label or ref in the "rebase -i" todo file used to
   trigger an runtime error. SUch an error is now diagnosed while the
   todo file is parsed.

 * The "diff" drivers specified by the "diff" attribute attached to
   paths can now specify which algorithm (e.g. histogram) to use.

 * "git range-diff" learned --abbrev=<num> option.

 * "git archive HEAD^{tree}" records the paths with the current
   timestamp in the archive, making it harder to obtain a stable
   output.  The command learned the --mtime option to specify an
   arbitrary timestamp (e.g. --mtime="@0 +0000" for the epoch).

 * The credential subsystem learned that a password may have an
   explicit expiration.

 * The format.attach configuration variable lacked a way to override a
   value defined in a lower-priority configuration file (e.g. the
   system one) by redefining it in a higher-priority configuration
   file.  Now, setting format.attach to an empty string means show the
   patch inline in the e-mail message, without using MIME attachment.

   This is a backward incompatible change.


Performance, Internal Implementation, Development Support etc.

 * `git bisect` becomes a builtin.

 * The pack-bitmap machinery is taught to log the paths of redundant
   bitmap(s) to trace2 instead of stderr.

 * Use the SHA1DC implementation on macOS, just like other platforms,
   by default.

 * Even in a repository with promisor remote, it is useless to
   attempt to lazily attempt fetching an object that is expected to be
   commit, because no "filter" mode omits commit objects.  Take
   advantage of this assumption to fail fast on errors.

 * Stop using "git --super-prefix" and narrow the scope of its use to
   the submodule--helper.

 * Stop running win+VS build by default.

 * CI updates.  We probably want a clean-up to move the long shell
   script embedded in yaml file into a separate file, but that can
   come later.

 * Use `git diff --no-index` as a test_cmp on Windows.

   We'd probably need to revisit "do we really want to, and have to,
   lose CRLF vs LF?" later, at which time we may be able to further
   clean this up by replacing "git diff --no-index" with "diff -u".

 * Avoid unnecessary builds in CI, with settings configured in
   ci-config.

 * Plug leaks in sequencer subsystem and its users.

 * In-tree .gitattributes update to match the way we recommend our
   users to mark a file as text.
   (merge 1f34e0cd3d po/attributes-text later to maint).

 * Finally retire the scripted "git add -p/-i" implementation and have
   everybody use the one reimplemented in C.


Fixes since v2.39
-----------------

 * Various leak fixes.

 * Fix a bug where `pack-objects` would not respect multiple `--filter`
   arguments when invoked directly.
   (merge d4f7036887 rs/multi-filter-args later to maint).

 * Make fsmonitor more robust to avoid the flakiness seen in t7527.
   (merge 6692d45477 jh/t7527-unflake-by-forcing-cookie later to maint).

 * Stop using deprecated macOS API in fsmonitor.
   (merge b0226007f0 jh/fsmonitor-darwin-modernize later to maint).

 * Redefining system functions for a few functions did not follow our
   usual "implement git_foo() and #define foo(args) git_foo(args)"
   pattern, which has broken build for some folks.

 * The way the diff machinery prepares the options array for the
   parse_options API has been refactored to avoid resource leaks.
   (merge 189e97bc4b rs/diff-parseopts later to maint).

 * Correct pthread API usage.
   (merge 786e67611d sx/pthread-error-check-fix later to maint).

 * The code to auto-correct a misspelt subcommand unnecessarily called
   into git_default_config() from the early config codepath, which was
   a no-no.  This has bee corrected.
   (merge 0918d08887 sg/help-autocorrect-config-fix later to maint).

 * "git http-fetch" (which is rarely used) forgot to identify itself
   in the trace2 output.
   (merge 7abb43cbc8 jt/http-fetch-trace2-report-name later to maint).

 * The output from "git diff --stat" on an unmerged path lost the
   terminating LF in Git 2.39, which has been corrected.
   (merge 209d9cb011 pg/diff-stat-unmerged-regression-fix later to maint).

 * "git pull -v --recurse-submodules" attempted to pass "-v" down to
   underlying "git submodule update", which did not understand the
   request and barfed, which has been corrected.
   (merge 6f65f84766 ss/pull-v-recurse-fix later to maint).

 * When given a pattern that matches an empty string at the end of a
   line, the code to parse the "git diff" line-ranges fell into an
   infinite loop, which has been corrected.

 * Fix the sequence to fsync $GIT_DIR/packed-refs file that forgot to
   flush its output to the disk..

 * Fix to a small regression in 2.38 days.

 * "git diff --relative" did not mix well with "git diff --ext-diff",
   which has been corrected.

 * The logic to see if we are using the "cone" mode by checking the
   sparsity patterns has been tightened to avoid mistaking a pattern
   that names a single file as specifying a cone.

 * Deal with a few deprecation warning from cURL library.

 * Doc update for environment variables set when hooks are invoked.

 * Document ORIG_HEAD a bit more.

 * "git ls-tree --format='%(path) %(path)' $tree $path" showed the
   path three times, which has been corrected.

 * Remove "git env--helper" and demote it to a test-tool subcommand.
   (merge 4a1baacd46 ab/test-env-helper later to maint).

 * Newer regex library macOS stopped enabling GNU-like enhanced BRE,
   where '\(A\|B\)' works as alternation, unless explicitly asked with
   the REG_ENHANCED flag.  "git grep" now can be compiled to do so, to
   retain the old behaviour.

 * Pthread emulation on Win32 leaked thread handle when a thread is
   joined.
   (merge 238a9dfe86 sk/win32-close-handle-upon-pthread-join later to maint).

 * "git send-email -v 3" used to be expanded to "git send-email
   --validate 3" when the user meant to pass them down to
   "format-patch", which has been corrected.
   (merge 8774aa56ad km/send-email-with-v-reroll-count later to maint).

 * Document that "branch -f <branch>" disables only the safety to
   avoid recreating an existing branch.

 * "git fetch <group>", when "<group>" of remotes lists the same
   remote twice, unnecessarily failed when parallel fetching was
   enabled, which has been corrected.
   (merge 06a668cb90 cw/fetch-remote-group-with-duplication later to maint).

 * Clarify how "checkout -b/-B" and "git branch [-f]" are similar but
   different in the documentation.

 * "git hash-object" now checks that the resulting object is well
   formed with the same code as "git fsck".
   (merge 8e4309038f jk/hash-object-fsck later to maint).

 * Improve the error message given when private key is not loaded in
   the ssh agent in the codepath to sign with an ssh key.
   (merge dce7b31126 as/ssh-signing-improve-key-missing-error later to maint).

 * Adjust "git request-pull" to strip embedded signature from signed
   tags to notice non-PGP signatures.
   (merge a9cad02538 gm/request-pull-with-non-pgp-signed-tags later to maint).

 * Remove support for MSys, which now lags way behind MSys2.
   (merge 2987407f3c hj/remove-msys-support later to maint).

 * Fix use of CreateThread() API call made early in the windows
   start-up code.
   (merge 592bcab61b sk/winansi-createthread-fix later to maint).

 * "git pack-objects" learned to release delta-island bitmap data when
   it is done using it, saving peak heap memory usage.
   (merge 647982bb71 ew/free-island-marks later to maint).

 * In an environment where dynamically generated code is prohibited to
   run (e.g. SELinux), failure to JIT pcre patterns is expected.  Fall
   back to interpreted execution in such a case.
   (merge 50b6ad55b0 cb/grep-fallback-failing-jit later to maint).

 * "git name-rev" heuristics update.
   (merge b2182a8730 en/name-rev-make-taggerdate-much-less-important later to maint).

 * Remove more remaining uses of macros that relies on the_index
   singleton instance without explicitly spelling it out.

 * Remove unnecessary explicit sizing of strbuf.
   (merge 93ea118bed rs/cache-tree-strbuf-growth-fix later to maint).

 * Doc update.
   (merge d9ec3b0dc0 jk/doc-ls-remote-matching later to maint).

 * Error messages given upon a signature verification failure used to
   discard the errors from underlying gpg program, which has been
   corrected.
   (merge ad6b320756 js/gpg-errors later to maint).

 * Update --date=default documentation.
   (merge 9deef088ae rd/doc-default-date-format later to maint).

 * A test helper had a single write(2) of 256kB, which was too big for
   some platforms (e.g. NonStop), which has been corrected by using
   xwrite() wrapper appropriately.
   (merge 58eab6ff13 jc/genzeros-avoid-raw-write later to maint).

 * sscanf(3) used in "git symbolic-ref --short" implementation found
   to be not working reliably on macOS in UTF-8 locales.  Rewrite the
   code to avoid sscanf() altogether to work it around.
   (merge 613bef56b8 jk/shorten-unambiguous-ref-wo-sscanf later to maint).

 * Various fix-ups on HTTP tests.
   (merge 8f2146dbf1 jk/http-test-fixes later to maint).

 * Fixes to code that parses the todo file used in "rebase -i".
   (merge 666b6e1135 pw/rebase-i-parse-fix later to maint).

 * Test library clean-up.
   (merge c600a91c94 ar/test-lib-remove-stale-comment later to maint).

 * Other code cleanup, docfix, build fix, etc.
   (merge 4eb1ccecd4 dh/mingw-ownership-check-typofix later to maint).
   (merge f95526419b ar/typofix-gitattributes-doc later to maint).
   (merge 27875aeec9 km/doc-branch-start-point later to maint).
   (merge 35c194dc57 es/t1509-root-fixes later to maint).
   (merge 7b341645e3 pw/ci-print-failure-name-fix later to maint).
   (merge bcb71d45bf jx/t1301-updates later to maint).
   (merge ebdc46c242 jc/doc-diff-patch.txt later to maint).
   (merge a87a20cbb4 ar/test-cleanup later to maint).
   (merge f5156f1885 ar/bisect-doc-update later to maint).
   (merge fca2d86c97 jk/interop-error later to maint).
   (merge cf4936ed74 tl/ls-tree-code-clean-up later to maint).
   (merge dcb47e52b0 en/t6426-todo-cleanup later to maint).
   (merge 5b8db44bdd jc/format-patch-v-unleak later to maint).
   (merge 590b636737 jk/hash-object-literally-fd-leak later to maint).
   (merge 5458ba0a4d tb/t0003-invoke-dd-more-portably later to maint).
   (merge 70661d288b ar/markup-em-dash later to maint).
   (merge e750951e74 en/ls-files-doc-update later to maint).
   (merge 4f542975d1 mh/doc-credential-cache-only-in-core later to maint).
   (merge 3a2ebaebc7 gc/index-format-doc later to maint).
   (merge b08edf709d jk/httpd-test-updates later to maint).
   (merge d85e9448dd wl/new-command-doc later to maint).
   (merge d912a603ed kf/t5000-modernise later to maint).
   (merge e65b868d07 rs/size-t-fixes later to maint).
   (merge 3eb1e1ca9a ab/config-h-remove-unused later to maint).
   (merge d390e08076 cw/doc-pushurl-vs-url later to maint).
   (merge 567342fc77 rs/ctype-test later to maint).
   (merge d35d8f2e7a ap/t2015-style-update later to maint).

Revision 1.131 / (download) - annotate - [select for diffs], Tue Feb 14 18:43:18 2023 UTC (7 months, 2 weeks ago) by adam
Branch: MAIN
Changes since 1.130: +4 -4 lines
Diff to previous 1.130 (colored)

git: updated to 2.39.2

Git v2.39.2 Release Notes
=========================

This release merges up the fixes that appear in v2.30.8, v2.31.7,
v2.32.6, v2.33.7, v2.34.7, v2.35.7, v2.36.5, v2.37.6 and v2.38.4
to address the security issues CVE-2023-22490 and CVE-2023-23946;
see the release notes for these versions for details.

Revision 1.129.2.1 / (download) - annotate - [select for diffs], Mon Jan 30 13:50:14 2023 UTC (8 months ago) by bsiegert
Branch: pkgsrc-2022Q4
Changes since 1.129: +4 -4 lines
Diff to previous 1.129 (colored) next main 1.130 (colored)

Pullup ticket #6727 - requested by otis
devel/git: security fix

Revisions pulled up:
- devel/git-base/distinfo                                       1.130
- devel/git/Makefile.version                                    1.114

---
   Module Name:    pkgsrc
   Committed By:   otis
   Date:           Wed Jan 18 15:44:25 UTC 2023

   Modified Files:
           pkgsrc/devel/git: Makefile.version
           pkgsrc/devel/git-base: distinfo

   Log Message:
   Git 2.39.1 release notes
   ========================

   This maintenance releass is to address the security issues
   identified as CVE-2022-41903 and CVE-2022-23521.

    * CVE-2022-41903:

      git log has the ability to display commits using an arbitrary
      format with its --format specifiers. This functionality is also
      exposed to git archive via the export-subst gitattribute.

      When processing the padding operators (e.g., %<(, %<|(, %>(,
      %>>(, or %><( ), an integer overflow can occur in
      pretty.c::format_and_pad_commit() where a size_t is improperly
      stored as an int, and then added as an offset to a subsequent
      memcpy() call.

      This overflow can be triggered directly by a user running a
      command which invokes the commit formatting machinery (e.g., git
      log --format=...). It may also be triggered indirectly through
      git archive via the export-subst mechanism, which expands format
      specifiers inside of files within the repository during a git
      archive.

      This integer overflow can result in arbitrary heap writes, which
      may result in remote code execution.

   * CVE-2022-23521:

       gitattributes are a mechanism to allow defining attributes for
       paths. These attributes can be defined by adding a `.gitattributes`
       file to the repository, which contains a set of file patterns and
       the attributes that should be set for paths matching this pattern.

       When parsing gitattributes, multiple integer overflows can occur
       when there is a huge number of path patterns, a huge number of
       attributes for a single pattern, or when the declared attribute
       names are huge.

       These overflows can be triggered via a crafted `.gitattributes` file
       that may be part of the commit history. Git silently splits lines
       longer than 2KB when parsing gitattributes from a file, but not when
       parsing them from the index. Consequentially, the failure mode
       depends on whether the file exists in the working tree, the index or
       both.

       This integer overflow can result in arbitrary heap reads and writes,
       which may result in remote code execution.

   Full release notes can be found at:
   https://github.com/git/git/blob/master/Documentation/RelNotes/2.39.1.txt
   https://github.com/git/git/blob/master/Documentation/RelNotes/2.30.7.txt

Revision 1.130 / (download) - annotate - [select for diffs], Wed Jan 18 15:44:25 2023 UTC (8 months, 2 weeks ago) by otis
Branch: MAIN
Changes since 1.129: +4 -4 lines
Diff to previous 1.129 (colored)

Git 2.39.1 release notes
========================

This maintenance releass is to address the security issues
identified as CVE-2022-41903 and CVE-2022-23521.

 * CVE-2022-41903:

   git log has the ability to display commits using an arbitrary
   format with its --format specifiers. This functionality is also
   exposed to git archive via the export-subst gitattribute.

   When processing the padding operators (e.g., %<(, %<|(, %>(,
   %>>(, or %><( ), an integer overflow can occur in
   pretty.c::format_and_pad_commit() where a size_t is improperly
   stored as an int, and then added as an offset to a subsequent
   memcpy() call.

   This overflow can be triggered directly by a user running a
   command which invokes the commit formatting machinery (e.g., git
   log --format=...). It may also be triggered indirectly through
   git archive via the export-subst mechanism, which expands format
   specifiers inside of files within the repository during a git
   archive.

   This integer overflow can result in arbitrary heap writes, which
   may result in remote code execution.

* CVE-2022-23521:

    gitattributes are a mechanism to allow defining attributes for
    paths. These attributes can be defined by adding a `.gitattributes`
    file to the repository, which contains a set of file patterns and
    the attributes that should be set for paths matching this pattern.

    When parsing gitattributes, multiple integer overflows can occur
    when there is a huge number of path patterns, a huge number of
    attributes for a single pattern, or when the declared attribute
    names are huge.

    These overflows can be triggered via a crafted `.gitattributes` file
    that may be part of the commit history. Git silently splits lines
    longer than 2KB when parsing gitattributes from a file, but not when
    parsing them from the index. Consequentially, the failure mode
    depends on whether the file exists in the working tree, the index or
    both.

    This integer overflow can result in arbitrary heap reads and writes,
    which may result in remote code execution.

Full release notes can be found at:
https://github.com/git/git/blob/master/Documentation/RelNotes/2.39.1.txt
https://github.com/git/git/blob/master/Documentation/RelNotes/2.30.7.txt

Revision 1.129 / (download) - annotate - [select for diffs], Mon Dec 19 10:04:34 2022 UTC (9 months, 2 weeks ago) by adam
Branch: MAIN
CVS Tags: pkgsrc-2022Q4-base
Branch point for: pkgsrc-2022Q4
Changes since 1.128: +4 -4 lines
Diff to previous 1.128 (colored)

git: updated to 2.39.0

Git v2.39 Release Notes
=======================

UI, Workflows & Features
------------------------

 * "git grep" learned to expand the sparse-index more lazily and on
   demand in a sparse checkout.

 * By default, use of fsmonitor on a repository on networked
   filesystem is disabled. Add knobs to make it workable on macOS.

 * After checking out a "branch" that is a symbolic-ref that points at
   another branch, "git symbolic-ref HEAD" reports the underlying
   branch, not the symbolic-ref the user gave checkout as argument.
   The command learned the "--no-recurse" option to stop after
   dereferencing a symbolic-ref only once.

 * "git branch --edit-description @{-1}" is now a way to edit branch
   description of the branch you were on before switching to the
   current branch.

 * "git merge-tree --stdin" is a new way to request a series of merges
   and report the merge results.

 * "git shortlog" learned to group by the "format" string.

 * A new "--include-whitespace" option is added to "git patch-id", and
   existing bugs in the internal patch-id logic that did not match
   what "git patch-id" produces have been corrected.

 * Enable gc.cruftpacks by default for those who opt into
   feature.experimental setting.

 * "git repack" learns to send cruft objects out of the way into
   packfiles outside the repository.

 * 'scalar reconfigure -a' is taught to automatically remove
   scalar.repo entires which no longer exist.

 * Redact headers from cURL's h2h3 module in GIT_CURL_VERBOSE and
   others.

 * 'git maintenance register' is taught to write configuration to an
   arbitrary path, and 'git for-each-repo' is taught to expand tilde
   characters in paths.

 * When creating new notes, the template used to get a stray empty
   newline, which has been removed.

 * "git receive-pack" used to use all the local refs as the boundary for
   checking connectivity of the data "git push" sent, but now it uses
   only the refs that it advertised to the pusher. In a repository with
   the .hideRefs configuration, this reduces the resources needed to
   perform the check.

 * With '--recurse-submodules=on-demand', all submodules are
   recursively pushed.


Performance, Internal Implementation, Development Support etc.
--------------------------------------------------------------

 * With a bit of header twiddling, use the native regexp library on
   macOS instead of the compat/ one.

 * Prepare for GNU [ef]grep that throw warning of their uses.

 * Sources related to fuzz testing have been moved down to their own
   directory.

 * Most credential helpers ignored unknown entries in a credential
   description, but a few died upon seeing them.  The latter were
   taught to ignore them, too

 * "scalar unregister" in a repository that is already been
   unregistered reported an error.

 * Remove error detection from a function that fetches from promisor
   remotes, and make it die when such a fetch fails to bring all the
   requested objects, to give an early failure to various operations.

 * Update CodingGuidelines to clarify what features to use and avoid
   in C99.

 * Avoid false-positive from LSan whose assumption may be broken with
   higher optimization levels.

 * Enable address and undefined sanitizer tasks at GitHub Actions CI.

 * More UNUSED annotation to help using -Wunused option with the
   compiler.
   (merge 4b992f0a24 jk/unused-anno-more later to maint).

 * Rewrite a deep recursion in the skipping negotiator to use a loop
   with on-heap prio queue to avoid stack wastage.

 * Add documentation for message IDs in fsck error messages.

 * Define the logical elements of a "bundle list", data structure to
   store them in-core, format to transfer them, and code to parse
   them.

 * The role the security mailing list plays in an embargoed release
   has been documented.

 * Two new facilities, "timer" and "counter", are introduced to the
   trace2 API.

 * Code simplification by using strvec_pushf() instead of building an
   argument in a separate strbuf.

 * Make sure generated dependency file is stably sorted to help
   developers debugging their build issues.

 * The glossary entries for "commit-graph file" and "reachability
   bitmap" have been added.

 * Various tests exercising the transfer.credentialsInUrl
   configuration are taught to avoid making requests which require
   resolving localhost to reduce CI-flakiness.

 * A redundant diagnostic message is dropped from test_path_is_missing().

 * Simplify the run-command API.

 * Update the actions/github-script dependency in CI to avoid a
   deprecation warning.

 * Progress on being able to initialize a rev_info struct with a
   macro.

 * Add trace2 counters to the region to clear skip worktree bits in a
   sparse checkout.

 * Modernize test script to avoid "test -f" and friends.

 * Avoid calling 'cache_tree_update()' when doing so would be
   redundant.

 * Update the credential-cache documentation to provide a more
   realistic example.

 * Makefile comments updates and reordering to clarify knobs used to
   choose SHA implementations.

 * A design document for sparse-checkout's future directions has been
   added.

 * Teach chainlint.pl to annotate the original test definition instead
   of the token stream.

 * "make coccicheck" is time consuming. It has been made to run more
   incrementally.

 * `parse_object()` has been hardened to check for the existence of a
   suspected blob object.

 * The build procedure has been adjusted to GNUmake version 4.4, which
   made some changes to how pattern rule with multiple targets are
   handled.


Fixes since v2.38
-----------------

 * The codepath that reads from the index v4 had unaligned memory
   accesses, which has been corrected.

 * Fix messages incorrectly marked for translation.

 * "git fsck" failed to release contents of tree objects already used
   from the memory, which has been fixed.

 * "git clone" did not like to see the "--bare" and the "--origin"
   options used together without a good reason.

 * "git remote rename" failed to rename a remote without fetch
   refspec, which has been corrected.

 * Documentation on various Boolean GIT_* environment variables have
   been clarified.

 * "git rebase -i" can mistakenly attempt to apply a fixup to a commit
   itself, which has been corrected.

 * "git multi-pack-index repack/expire" used to repack unreachable
   cruft into a new pack, which have been corrected.

 * In read-only repositories, "git merge-tree" tried to come up with a
   merge result tree object, which it failed (which is not wrong) and
   led to a segfault (which is bad), which has been corrected.

 * Force C locale while running tests around httpd to make sure we can
   find expected error messages in the log.

 * Fix a logic in "mailinfo -b" that miscomputed the length of a
   substring, which lead to an out-of-bounds access.

 * The codepath to sign learned to report errors when it fails to read
   from "ssh-keygen".

 * Code clean-up that results in plugging a leak.

 * "GIT_EDITOR=: git branch --edit-description" resulted in failure,
   which has been corrected.

 * The code to clean temporary object directories (used for
   quarantine) tried to remove them inside its signal handler, which
   was a no-no.

 * Update comment in the Makefile about the RUNTIME_PREFIX config knob.

 * Clarify that "the sentence after <area>: prefix does not begin with
   a capital letter" rule applies only to the commit title.

 * "git branch --edit-description" on an unborn branch misleadingly
   said that no such branch exists, which has been corrected.

 * Work around older clang that warns against C99 zero initialization
   syntax for struct.

 * Giving "--invert-grep" and "--all-match" without "--grep" to the
   "git log" command resulted in an attempt to access grep pattern
   expression structure that has not been allocated, which has been
   corrected.
   (merge db84376f98 ab/grep-simplify-extended-expression later to maint).

 * "git diff rev^!" did not show combined diff to go to the rev from
   its parents.
   (merge a79c6b6081 rs/diff-caret-bang-with-parents later to maint).

 * Allow configuration files in "protected" scopes to include other
   configuration files.
   (merge ecec57b3c9 gc/bare-repo-discovery later to maint).

 * Give a bit more diversity to macOS CI by using sha1dc in one of the
   jobs (the other one tests Apple Common Crypto).
   (merge 1ad5c3df35 jc/ci-osx-with-sha1dc later to maint).

 * A bugfix with tracing support in midx codepath
   (merge e9c3839944 tb/midx-bitmap-selection-fix later to maint).

 * When geometric repacking feature is in use together with the
   --pack-kept-objects option, we lost packs marked with .keep files.
   (merge 197443e80a tb/save-keep-pack-during-geometric-repack later to maint).

 * Move a global variable added as a hack during regression fixes to
   its proper place in the API.
   (merge 0b0ab95f17 ab/run-hook-api-cleanup later to maint).

 * Update to build procedure with VS using CMake/CTest.
   (merge c858750b41 js/cmake-updates later to maint).

 * The short-help text shown by "git cmd -h" and the synopsis text
   shown at the beginning of "git help cmd" have been made more
   consistent.

 * When creating a multi-pack bitmap, remove per-pack bitmap files
   unconditionally as they will never be consulted.
   (merge 55d902cd61 tb/remove-unused-pack-bitmap later to maint).

 * Fix a longstanding syntax error in Git.pm error codepath.

 * "git diff --stat" etc. were invented back when everything was ASCII
   and strlen() was a way to measure the display width of a string;
   adjust them to compute the display width assuming UTF-8 pathnames.
   (merge ce8529b2bb tb/diffstat-with-utf8-strwidth later to maint).

 * "git branch --edit-description" can exit with status -1 which is
   not a good practice; it learned to use 1 as everybody else instead.

 * "git apply" limits its input to a bit less than 1 GiB.

 * Merging a branch with directory renames into a branch that changes
   the directory to a symlink was mishandled by the ort merge
   strategy, which has been corrected.

 * A bugfix to "git subtree" in its split and merge features.

 * Fix some bugs in the reflog messages when rebasing and changes the
   reflog messages of "rebase --apply" to match "rebase --merge" with
   the aim of making the reflog easier to parse.

 * "git rebase --keep-base" used to discard the commits that are
   already cherry-picked to the upstream, even when "keep-base" meant
   that the base, on top of which the history is being rebuilt, does
   not yet include these cherry-picked commits.  The --keep-base
   option now implies --reapply-cherry-picks and --no-fork-point
   options.

 * The way "git repack" created temporary files when it received a
   signal was prone to deadlocking, which has been corrected.

 * Various tests exercising the transfer.credentialsInUrl
   configuration are taught to avoid making requests which require
   resolving localhost to reduce CI-flakiness.

 * The adjust_shared_perm() helper function learned to refrain from
   setting the "g+s" bit on directories when it is not necessary.

 * "git archive" mistakenly complained twice about a missing
   executable, which has been corrected.

 * Fix a bug where `git branch -d` did not work on an orphaned HEAD.

 * `git rebase --update-refs` would delete references when all
   `update-ref` commands in the sequencer were removed, which has been
   corrected.

 * Fix a regression in the bisect-helper which mistakenly treats
   arguments to the command given to 'git bisect run' as arguments to
   the helper.

 * Correct an error where `git rebase` would mistakenly use a branch or
   tag named "refs/rewritten/xyz" when missing a rebase label.

 * Assorted fixes of parsing end-user input as integers.
   (merge 14770cf0de pw/config-int-parse-fixes later to maint).

 * "git prune" may try to iterate over .git/objects/pack for trash
   files to remove in it, and loudly fail when the directory is
   missing, which is not necessary.  The command has been taught to
   ignore such a failure.
   (merge 6974765352 ew/prune-with-missing-objects-pack later to maint).

 * Add one more candidate directory that may house httpd modules while
   running tests.
   (merge 1c7dc23d41 es/locate-httpd-module-location-in-test later to maint).

 * A handful of leaks in the line-log machinery have been plugged.

 * The format of a line in /proc/cpuinfo that describes a CPU on s390x
   looked different from everybody else, and the code in chainlint.pl
   failed to parse it.
   (merge 1f51b77f4f ah/chainlint-cpuinfo-parse-fix later to maint).

 * Adjust the GitHub CI to newer ubuntu release.
   (merge 0d3507f3e7 jx/ci-ubuntu-fix later to maint).

 * Other code cleanup, docfix, build fix, etc.
   (merge 413bc6d20a ds/cmd-main-reorder later to maint).
   (merge 8d2863e4ed nw/t1002-cleanup later to maint).
   (merge 7c2dc122f9 rs/list-objects-filter-leakfix later to maint).
   (merge 288fcb1c94 zk/push-use-bitmaps later to maint).
   (merge 42db324c0f km/merge-recursive-typofix later to maint).

Revision 1.128 / (download) - annotate - [select for diffs], Mon Dec 12 22:03:23 2022 UTC (9 months, 2 weeks ago) by adam
Branch: MAIN
Changes since 1.127: +4 -4 lines
Diff to previous 1.127 (colored)

git: updated to 2.38.2

Git 2.38.2 Release Notes
========================

This is to backport various fixes accumulated during the development
towards Git 2.39, the next feature release.


Fixes since v2.38.1
-------------------

 * Update CodingGuidelines to clarify what features to use and avoid
   in C99.

 * The codepath that reads from the index v4 had unaligned memory
   accesses, which has been corrected.

 * "git remote rename" failed to rename a remote without fetch
   refspec, which has been corrected.

 * "git clone" did not like to see the "--bare" and the "--origin"
   options used together without a good reason.

 * Fix messages incorrectly marked for translation.

 * "git fsck" failed to release contents of tree objects already used
   from the memory, which has been fixed.

 * "git rebase -i" can mistakenly attempt to apply a fixup to a commit
   itself, which has been corrected.

 * In read-only repositories, "git merge-tree" tried to come up with a
   merge result tree object, which it failed (which is not wrong) and
   led to a segfault (which is bad), which has been corrected.

 * Force C locale while running tests around httpd to make sure we can
   find expected error messages in the log.

 * Fix a logic in "mailinfo -b" that miscomputed the length of a
   substring, which lead to an out-of-bounds access.

 * The codepath to sign learned to report errors when it fails to read
   from "ssh-keygen".

 * "GIT_EDITOR=: git branch --edit-description" resulted in failure,
   which has been corrected.

 * Documentation on various Boolean GIT_* environment variables have
   been clarified.

 * "git multi-pack-index repack/expire" used to repack unreachable
   cruft into a new pack, which have been corrected.

 * The code to clean temporary object directories (used for
   quarantine) tried to remove them inside its signal handler, which
   was a no-no.

 * "git branch --edit-description" on an unborh branch misleadingly
   said that no such branch exists, which has been corrected.

 * GitHub CI settings have been adjusted to recent reality, merging
   and cherry-picking necessary topics that have been prepared for Git
   2.39.

 * `git rebase --update-refs` would delete references when all `update-ref`
   commands in the sequencer were removed, which has been corrected.

Also contains various documentation updates and code clean-ups.

Revision 1.123.2.1 / (download) - annotate - [select for diffs], Sat Nov 5 11:28:28 2022 UTC (10 months, 3 weeks ago) by bsiegert
Branch: pkgsrc-2022Q3
Changes since 1.123: +4 -4 lines
Diff to previous 1.123 (colored) next main 1.124 (colored)

Pullup ticket #6692 - requested by taca
devel/git: security fix

via patch -- update to 2.37.4

---
   This release merges the security fix that appears in v2.30.6; see
   the release notes for that version for details.

Revision 1.127 / (download) - annotate - [select for diffs], Sat Oct 22 11:42:18 2022 UTC (11 months, 1 week ago) by andvar
Branch: MAIN
Changes since 1.126: +4 -4 lines
Diff to previous 1.126 (colored)

git-base: return to 2.38.1 version.

Revision 1.126 / (download) - annotate - [select for diffs], Fri Oct 21 17:31:18 2022 UTC (11 months, 1 week ago) by schmonz
Branch: MAIN
Changes since 1.125: +5 -4 lines
Diff to previous 1.125 (colored)

Install the zsh completion to site-functions. Bump PKGREVISION.

Revision 1.125 / (download) - annotate - [select for diffs], Wed Oct 19 07:54:52 2022 UTC (11 months, 2 weeks ago) by adam
Branch: MAIN
Changes since 1.124: +4 -4 lines
Diff to previous 1.124 (colored)

git: updated to 2.38.1

Git v2.38.1 Release Notes
=========================

This release merges the security fix that appears in v2.30.6; see
the release notes for that version for details.

Revision 1.124 / (download) - annotate - [select for diffs], Fri Oct 7 10:10:05 2022 UTC (11 months, 3 weeks ago) by adam
Branch: MAIN
Changes since 1.123: +5 -5 lines
Diff to previous 1.123 (colored)

git: updated to 2.38.0

Git v2.38 Release Notes
=======================

UI, Workflows & Features

 * "git remote show [-n] frotz" now pays attention to negative
   pathspec.

 * "git push" sometimes performs poorly when reachability bitmaps are
   used, even in a repository where other operations are helped by
   bitmaps.  The push.useBitmaps configuration variable is introduced
   to allow disabling use of reachability bitmaps only for "git push".

 * "git grep -m<max-hits>" is a way to limit the hits shown per file.

 * "git merge-tree" learned a new mode where it takes two commits and
   computes a tree that would result in the merge commit, if the
   histories leading to these two commits were to be merged.

 * "git mv A B" in a sparsely populated working tree can be asked to
   move a path between directories that are "in cone" (i.e. expected
   to be materialized in the working tree) and "out of cone"
   (i.e. expected to be hidden).  The handling of such cases has been
   improved.

 * Earlier, HTTP transport clients learned to tell the server side
   what locale they are in by sending Accept-Language HTTP header, but
   this was done only for some requests but not others.

 * Introduce a safe.barerepository configuration variable that
   allows users to forbid discovery of bare repositories.

 * Various messages that come from the pack-bitmap codepaths have been
   tweaked.

 * "git rebase -i" learns to update branches whose tip appear in the
   rebased range with "--update-refs" option.

 * "git ls-files" learns the "--format" option to tweak its output.

 * "git cat-file" learned an option to use the mailmap when showing
   commit and tag objects.

 * When "git merge" finds that it cannot perform a merge, it should
   restore the working tree to the state before the command was
   initiated, but in some corner cases it didn't.

 * Operating modes like "--batch" of "git cat-file" command learned to
   take NUL-terminated input, instead of one-item-per-line.

 * "git rm" has become more aware of the sparse-index feature.

 * "git rev-list --disk-usage" learned to take an optional value
   "human" to show the reported value in human-readable format, like
   "3.40MiB".

 * The "diagnose" feature to create a zip archive for diagnostic
   material has been lifted from "scalar" and made into a feature of
   "git bugreport".

 * The namespaces used by "log --decorate" from "refs/" hierarchy by
   default has been tightened.

 * "git rev-list --ancestry-path=C A..B" is a natural extension of
   "git rev-list A..B"; instead of choosing a subset of A..B to those
   that have ancestry relationship with A, it lets a subset with
   ancestry relationship with C.

 * "scalar" now enables built-in fsmonitor on enlisted repositories,
   when able.

 * The bash prompt (in contrib/) learned to optionally indicate when
   the index is unmerged.

 * "git clone" command learned the "--bundle-uri" option to coordinate
   with hosting sites the use of pre-prepared bundle files.

 * "git range-diff" learned to honor pathspec argument if given.

 * "git format-patch --from=<ident>" can be told to add an in-body
   "From:" line even for commits that are authored by the given
   <ident> with "--force-in-body-from" option.

 * The built-in fsmonitor refuses to work on a network mounted
   repositories; a configuration knob for users to override this has
   been introduced.

 * The "scalar" addition from Microsoft is now part of the core Git
   installation.


Performance, Internal Implementation, Development Support etc.

 * Collection of what is referenced by objects in promisor packs have
   been optimized to inspect these objects in the in-pack order.

 * Introduce a helper to see if a branch is already being worked on
   (hence should not be newly checked out in a working tree), which
   performs much better than the existing find_shared_symref() to
   replace many uses of the latter.

 * Teach "git archive" to (optionally and then by default) avoid
   spawning an external "gzip" process when creating ".tar.gz" (and
   ".tgz") archives.

 * Allow large objects read from a packstream to be streamed into a
   loose object file straight, without having to keep it in-core as a
   whole.

 * Further preparation to turn git-submodule.sh into a builtin
   continues.

 * Apply Coccinelle rule to turn raw memmove() into MOVE_ARRAY() cpp
   macro, which would improve maintainability and readability.

 * Teach "make all" to build gitweb as well.

 * Tweak tests so that they still work when the "git init" template
   did not create .git/info directory.

 * Add Coccinelle rules to detect the pattern of initializing and then
   finalizing a structure without using it in between at all, which
   happens after code restructuring and the compilers fail to
   recognize as an unused variable.

 * The code to convert between GPG trust level strings and internal
   constants we use to represent them have been cleaned up.

 * Support for libnettle as SHA256 implementation has been added.

 * The way "git multi-pack" uses parse-options API has been improved.

 * A Coccinelle rule (in contrib/) to encourage use of COPY_ARRAY
   macro has been improved.

 * API tweak to make it easier to run fuzz testing on commit-graph parser.

 * Omit fsync-related trace2 entries when their values are all zero.

 * The codepath to write multi-pack index has been taught to release a
   large chunk of memory that holds an array of objects in the packs,
   as soon as it is done with the array, to reduce memory consumption.

 * Add a level of redirection to array allocation API in xdiff part,
   to make it easier to share with the libgit2 project.

 * "git fetch" client logs the partial clone filter used in the trace2
   output.

 * The "bundle URI" design gets documented.

 * The common ancestor negotiation exchange during a "git fetch"
   session now leaves trace log.

 * Test portability improvements.
   (merge 4d1d843be7 mt/rot13-in-c later to maint).

 * The "subcommand" mode is introduced to parse-options API and update
   the command line parser of Git commands with subcommands.

 * The pack bitmap file gained a bitmap-lookup table to speed up
   locating the necessary bitmap for a given commit.

 * The assembly version of SHA-1 implementation for PPC has been
   removed.

 * The server side that responds to "git fetch" and "git clone"
   request has been optimized by allowing it to send objects in its
   object store without recomputing and validating the object names.

 * Annotate function parameters that are not used (but cannot be
   removed for structural reasons), to prepare us to later compile
   with -Wunused warning turned on.

 * Share the text used to explain configuration variables used by "git
   <subcmd>" in "git help <subcmd>" with the text from "git help config".

 * "git mv A B" in a sparsely populated working tree can be asked to
   move a path from a directory that is "in cone" to another directory
   that is "out of cone".  Handling of such a case has been improved.

 * The chainlint script for our tests has been revamped.


Fixes since v2.37
-----------------

 * Rewrite of "git add -i" in C that appeared in Git 2.25 didn't
   correctly record a removed file to the index, which was fixed.

 * Certain diff options are currently ignored when combined-diff is
   shown; mark them as incompatible with the feature.

 * Adjust technical/bitmap-format to be formatted by AsciiDoc, and
   add some missing information to the documentation.

 * Fixes for tests when the source directory has unusual characters in
   its path, e.g. whitespaces, double-quotes, etc.

 * "git mktree --missing" lazily fetched objects that are missing from
   the local object store, which was totally unnecessary for the purpose
   of creating the tree object(s) from its input.

 * Give _() markings to fatal/warning/usage: labels that are shown in
   front of these messages.

 * References to commands-to-be-typed-literally in "git rebase"
   documentation mark-up have been corrected.

 * In a non-bare repository, the behavior of Git when the
   core.worktree configuration variable points at a directory that has
   a repository as its subdirectory, regressed in Git 2.27 days.

 * Recent update to vimdiff layout code has been made more robust
   against different end-user vim settings.

 * Plug various memory leaks, both in the main code and in test-tool
   commands.

 * Fixes a long-standing corner case bug around directory renames in
   the merge-ort strategy.

 * The resolve-undo information in the index was not protected against
   GC, which has been corrected.

 * A corner case bug where lazily fetching objects from a promisor
   remote resulted in infinite recursion has been corrected.

 * "git clone" from a repository with some ref whose HEAD is unborn
   did not set the HEAD in the resulting repository correctly, which
   has been corrected.

 * An earlier attempt to plug leaks placed a clean-up label to jump to
   at a bogus place, which as been corrected.

 * Variable quoting fix in the vimdiff driver of "git mergetool"

 * "git shortlog -n" relied on the underlying qsort() to be stable,
   which shouldn't have.  Fixed.

 * A fix for a regression in test framework.

 * mkstemp() emulation on Windows has been improved.

 * Add missing documentation for "include" and "includeIf" features in
   "git config" file format, which incidentally teaches the command
   line completion to include them in its offerings.

 * Avoid "white/black-list" in documentation and code comments.

 * Workaround for a compiler warning against use of die() in
   osx-keychain (in contrib/).

 * Workaround for a false positive compiler warning.

 * "git p4" working on UTF-16 files on Windows did not implement
   CRLF-to-LF conversion correctly, which has been corrected.

 * "git p4" did not handle non-ASCII client name well, which has been
   corrected.

 * "rerere-train" script (in contrib/) used to honor commit.gpgSign
   while recreating the throw-away merges.

 * "git checkout" miscounted the paths it updated, which has been
   corrected.

 * Fix for a bug that makes write-tree to fail to write out a
   non-existent index as a tree, introduced in 2.37.

 * There was a bug in the codepath to upgrade generation information
   in commit-graph from v1 to v2 format, which has been corrected.

 * Gitweb had legacy URL shortener that is specific to the way
   projects hosted on kernel.org used to (but no longer) work, which
   has been removed.

 * Fix build procedure for Windows that uses CMake so that it can pick
   up the shell interpreter from local installation location.

 * Conditionally allow building Python interpreter on Windows

 * Fix to lstat() emulation on Windows.

 * Older gcc with -Wall complains about the universal zero initializer
   "struct s = { 0 };" idiom, which makes developers' lives
   inconvenient (as -Werror is enabled by DEVELOPER=YesPlease).  The
   build procedure has been tweaked to help these compilers.

 * Plug memory leaks in the failure code path in the "merge-ort" merge
   strategy backend.

 * "git symbolic-ref symref non..sen..se" is now diagnosed as an error.

 * A follow-up fix to a fix for a regression in 2.36 around hooks.

 * Avoid repeatedly running getconf to ask libc version in the test
   suite, and instead just as it once per script.

 * Platform-specific code that determines if a directory is OK to use
   as a repository has been taught to report more details, especially
   on Windows.

 * "vimdiff3" regression fix.

 * "git fsck" reads mode from tree objects but canonicalizes the mode
   before passing it to the logic to check object sanity, which has
   hid broken tree objects from the checking logic.  This has been
   corrected, but to help existing projects with broken tree objects
   that they cannot fix retroactively, the severity of anomalies this
   code detects has been demoted to "info" for now.

 * Fixes to sparse index compatibility work for "reset" and "checkout"
   commands.

 * An earlier optimization discarded a tree-object buffer that is
   still in use, which has been corrected.

 * Fix deadlocks between main Git process and subprocess spawned via
   the pipe_command() API, that can kill "git add -p" that was
   reimplemented in C recently.

 * The sequencer machinery translated messages left in the reflog by
   mistake, which has been corrected.

 * xcalloc(), imitating calloc(), takes "number of elements of the
   array", and "size of a single element", in this order.  A call that
   does not follow this ordering has been corrected.

 * The preload-index codepath made copies of pathspec to give to
   multiple threads, which were left leaked.

 * Update the version of Ubuntu used for GitHub Actions CI from 18.04
   to 22.04.

 * The auto-stashed local changes created by "git merge --autostash"
   was mixed into a conflicted state left in the working tree, which
   has been corrected.

 * Multi-pack index got corrupted when preferred pack changed from one
   pack to another in a certain way, which has been corrected.
   (merge 99e4d084ff tb/midx-with-changing-preferred-pack-fix later to maint).

 * The clean-up of temporary files created via mks_tempfile_dt() was
   racy and attempted to unlink() the leading directory when signals
   are involved, which has been corrected.
   (merge babe2e0559 rs/tempfile-cleanup-race-fix later to maint).

 * FreeBSD portability fix for "git maintenance" that spawns "crontab"
   to schedule tasks.
   (merge ee69e7884e bc/gc-crontab-fix later to maint).

 * Those who use diff-so-fancy as the diff-filter noticed a regression
   or two in the code that parses the diff output in the built-in
   version of "add -p", which has been corrected.
   (merge 0a101676e5 js/add-p-diff-parsing-fix later to maint).

 * Segfault fix-up to an earlier fix to the topic to teach "git reset"
   and "git checkout" work better in a sparse checkout.
   (merge 037f8ea6d9 vd/sparse-reset-checkout-fixes later to maint).

 * "git diff --no-index A B" managed its the pathnames of its two
   input files rather haphazardly, sometimes leaking them.  The
   command line argument processing has been straightened out to clean
   it up.
   (merge 2b43dd0eb5 rs/diff-no-index-cleanup later to maint).

 * "git rev-list --verify-objects" ought to inspect the contents of
   objects and notice corrupted ones, but it didn't when the commit
   graph is in use, which has been corrected.
   (merge b27ccae34b jk/rev-list-verify-objects-fix later to maint).

 * More fixes to "add -p"
   (merge 64ec8efb83 js/builtin-add-p-portability-fix later to maint).

 * The parser in the script interface to parse-options in "git
   rev-parse" has been updated to diagnose a bogus input correctly.
   (merge f20b9c36d0 ow/rev-parse-parseopt-fix later to maint).

 * The code that manages list-object-filter structure, used in partial
   clones, leaked the instances, which has been plugged.
   (merge 66eede4a37 jk/plug-list-object-filter-leaks later to maint).

 * Fix another UI regression in the reimplemented "add -p".
   (merge f6f0ee247f rs/add-p-worktree-mode-prompt-fix later to maint).

 * "git fetch" over protocol v2 sent an incorrect ref prefix request
   to the server and made "git pull" with configured fetch refspec
   that does not cover the remote branch to merge with fail, which has
   been corrected.
   (merge 49ca2fba39 jk/proto-v2-ref-prefix-fix later to maint).

 * A result from opendir() was leaking in the commit-graph expiration
   codepath, which has been plugged.
   (merge 12f1ae5324 ml/commit-graph-expire-dir-leak-fix later to maint).

 * Just like we have coding guidelines, we now have guidelines for
   reviewers.
   (merge e01b851923 vd/doc-reviewing-guidelines later to maint).

 * Other code cleanup, docfix, build fix, etc.
   (merge 77b9e85c0f vd/fix-perf-tests later to maint).
   (merge 0682bc43f5 jk/test-crontab-fixes later to maint).
   (merge b46dd1726c cc/doc-trailer-whitespace-rules later to maint).

Revision 1.123 / (download) - annotate - [select for diffs], Thu Sep 1 07:47:28 2022 UTC (13 months ago) by adam
Branch: MAIN
CVS Tags: pkgsrc-2022Q3-base
Branch point for: pkgsrc-2022Q3
Changes since 1.122: +4 -4 lines
Diff to previous 1.122 (colored)

git: updated to 2.37.3

Git 2.37.3 Release Notes
========================

This primarily is to backport various fixes accumulated on the 'master'
front since 2.37.2.

Fixes since v2.37.2
-------------------

 * The build procedure for Windows that uses CMake has been updated to
   pick up the shell interpreter from local installation location.

 * Conditionally allow building Python interpreter on Windows

 * Fix to lstat() emulation on Windows.

 * Older gcc with -Wall complains about the universal zero initializer
   "struct s = { 0 };" idiom, which makes developers' lives
   inconvenient (as -Werror is enabled by DEVELOPER=YesPlease).  The
   build procedure has been tweaked to help these compilers.

 * Plug memory leaks in the failure code path in the "merge-ort" merge
   strategy backend.

 * Avoid repeatedly running getconf to ask libc version in the test
   suite, and instead just as it once per script.

 * Platform-specific code that determines if a directory is OK to use
   as a repository has been taught to report more details, especially
   on Windows.

 * "vimdiff3" regression has been corrected.

 * "git fsck" reads mode from tree objects but canonicalizes the mode
   before passing it to the logic to check object sanity, which has
   hid broken tree objects from the checking logic.  This has been
   corrected, but to help exiting projects with broken tree objects
   that they cannot fix retroactively, the severity of anomalies this
   code detects has been demoted to "info" for now.

 * Fixes to sparse index compatibility work for "reset" and "checkout"
   commands.

 * Documentation for "git add --renormalize" has been improved.

Also contains other minor documentation updates and code clean-ups.

Revision 1.122 / (download) - annotate - [select for diffs], Fri Aug 12 08:06:22 2022 UTC (13 months, 3 weeks ago) by adam
Branch: MAIN
Changes since 1.121: +4 -4 lines
Diff to previous 1.121 (colored)

git: updated to 2.37.2

Git 2.37.2 Release Notes
========================

This primarily is to backport various fixes accumulated on the 'master'
front since 2.37.1.

Fixes since v2.37.1
-------------------

 * "git shortlog -n" relied on the underlying qsort() to be stable,
   which shouldn't have.  Fixed.

 * Variable quoting fix in the vimdiff driver of "git mergetool".

 * An earlier attempt to plug leaks placed a clean-up label to jump to
   at a bogus place, which as been corrected.

 * Fixes a long-standing corner case bug around directory renames in
   the merge-ort strategy.

 * Recent update to vimdiff layout code has been made more robust
   against different end-user vim settings.

 * In a non-bare repository, the behavior of Git when the
   core.worktree configuration variable points at a directory that has
   a repository as its subdirectory, regressed in Git 2.27 days.

 * References to commands-to-be-typed-literally in "git rebase"
   documentation mark-up have been corrected.

 * Give _() markings to fatal/warning/usage: labels that are shown in
   front of these messages.

 * "git mktree --missing" lazily fetched objects that are missing from
   the local object store, which was totally unnecessary for the purpose
   of creating the tree object(s) from its input.

 * Fixes for tests when the source directory has unusual characters in
   its path, e.g. whitespaces, double-quotes, etc.

 * Adjust technical/bitmap-format to be formatted by AsciiDoc, and
   add some missing information to the documentation.

 * Certain diff options are currently ignored when combined-diff is
   shown; mark them as incompatible with the feature.

 * "git clone" from a repository with some ref whose HEAD is unborn
   did not set the HEAD in the resulting repository correctly, which
   has been corrected.

 * mkstemp() emulation on Windows has been improved.

 * Add missing documentation for "include" and "includeIf" features in
   "git config" file format, which incidentally teaches the command
   line completion to include them in its offerings.

 * Avoid "white/black-list" in documentation and code comments.

 * Workaround for a compiler warning against use of die() in
   osx-keychain (in contrib/).

 * Workaround for a false positive compiler warning.

 * The resolve-undo information in the index was not protected against
   GC, which has been corrected.

 * A corner case bug where lazily fetching objects from a promisor
   remote resulted in infinite recursion has been corrected.

 * "git p4" working on UTF-16 files on Windows did not implement
   CRLF-to-LF conversion correctly, which has been corrected.

 * "git p4" did not handle non-ASCII client name well, which has been
   corrected.

 * "rerere-train" script (in contrib/) used to honor commit.gpgSign
   while recreating the throw-away merges.

 * "git checkout" miscounted the paths it updated, which has been
   corrected.

 * Fix for a bug that makes write-tree to fail to write out a
   non-existent index as a tree, introduced in 2.37.

 * There was a bug in the codepath to upgrade generation information
   in commit-graph from v1 to v2 format, which has been corrected.

Also contains minor documentation updates and code clean-ups.

Revision 1.119.2.1 / (download) - annotate - [select for diffs], Tue Jul 26 19:29:01 2022 UTC (14 months, 1 week ago) by spz
Branch: pkgsrc-2022Q2
Changes since 1.119: +4 -4 lines
Diff to previous 1.119 (colored) next main 1.120 (colored)

Pullup ticket #6657 - requested by taca
devel/git: security update
devel/git-base: security update
devel/git-docs: security update
www/gitweb: security update

Revisions pulled up:
- devel/git-base/Makefile                                       1.97
- devel/git-base/distinfo                                       1.120-1.121
- devel/git-docs/Makefile                                       1.21
- devel/git/Makefile.version                                    1.106-1.107
- www/gitweb/Makefile                                           1.45

-------------------------------------------------------------------
   Module Name:	pkgsrc
   Committed By:	adam
   Date:		Wed Jul  6 11:54:00 UTC 2022

   Modified Files:
   	pkgsrc/devel/git: Makefile.version
   	pkgsrc/devel/git-base: Makefile distinfo
   	pkgsrc/devel/git-docs: Makefile
   	pkgsrc/www/gitweb: Makefile

   Log Message:
   git: updated to 2.37.0

   Git v2.37 Release Notes
   ===========
   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.<name>.url` config, not `remote.<name>.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=<mode>" and "status.showUntrackedFiles"
      are combined.

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

    * "git show :<path>" learned to work better with the sparse-index
      feature.

    * Introduce and apply coccinelle rule to discourage an explicit
      comparison between a pointer and NULL, and applies the clean-up to
      the maintenance track.

    * Preliminary code refactoring around transport and bundle code.

    * "sparse-checkout" learns to work better with the sparse-index
      feature.

    * A workflow change for translators are being proposed.  git.pot is
      no longer version controlled and it is local responsibility of
      translators to generate it.

    * Plug the memory leaks from the trickiest API of all, the revision
      walker.

    * Rename .env_array member to .env in the child_process structure.

     * The fsmonitor--daemon handles even more corner cases when
       watching filesystem events.

    * A new bug() and BUG_if_bug() API is introduced to make it easier to
      uniformly log "detect multiple bugs and abort in the end" pattern.

   Fixes since v2.36
   -----------------

    * "git submodule update" without pathspec should silently skip an
      uninitialized submodule, but it started to become noisy by mistake.
      (merge 4f1ccef87c gc/submodule-update-part2 later to maint).

    * "diff-tree --stdin" has been broken for about a year, but 2.36
      release broke it even worse by breaking running the command with
      <pathspec>, which in turn broke "gitk" and got noticed.  This has
      been corrected by aligning its behaviour to that of "log".
      (merge f8781bfda3 jc/diff-tree-stdin-fix later to maint).

    * Regression fix for 2.36 where "git name-rev" started to sometimes
      reference strings after they are freed.
      (merge 45a14f578e rs/name-rev-fix-free-after-use later to maint).

    * "git show <commit1> <commit2>... -- <pathspec>" lost the pathspec
      when showing the second and subsequent commits, which has been
      corrected.
      (merge 5cdb38458e jc/show-pathspec-fix later to maint).

    * "git fast-export -- <pathspec>" lost the pathspec when showing the
      second and subsequent commits, which has been corrected.
      (merge d1c25272f5 rs/fast-export-pathspec-fix later to maint).

    * "git format-patch <args> -- <pathspec>" lost the pathspec when
      showing the second and subsequent commits, which has been
      corrected.
      (merge 91f8f7e46f rs/format-patch-pathspec-fix later to maint).

    * "git clone --origin X" leaked piece of memory that held value read
      from the clone.defaultRemoteName configuration variable, which has
      been plugged.
      (merge 6dfadc8981 jc/clone-remote-name-leak-fix later to maint).

    * Get rid of a bogus and over-eager coccinelle rule.
      (merge 08bdd3a185 jc/cocci-xstrdup-or-null-fix later to maint).

    * The path taken by "git multi-pack-index" command from the end user
      was compared with path internally prepared by the tool without first
      normalizing, which lead to duplicated paths not being noticed,
      which has been corrected.
      (merge 11f9e8de3d ds/midx-normalize-pathname-before-comparison later to maint).

    * Correct choices of C compilers used in various CI jobs.
      (merge 3506cae04f ab/cc-package-fixes later to maint).

    * Various cleanups to "git p4".
      (merge 4ff0108d9e jh/p4-various-fixups later to maint).

    * The progress meter of "git blame" was showing incorrect numbers
      when processing only parts of the file.
      (merge e5f5d7d42e ea/progress-partial-blame later to maint).

    * "git rebase --keep-base <upstream> <branch-to-rebase>" computed the
      commit to rebase onto incorrectly, which has been corrected.
      (merge 9e5ebe9668 ah/rebase-keep-base-fix later to maint).

    * Fix a leak of FILE * in an error codepath.
      (merge c0befa0c03 kt/commit-graph-plug-fp-leak-on-error later to maint).

    * Avoid problems from interaction between malloc_check and address
      sanitizer.
      (merge 067109a5e7 pw/test-malloc-with-sanitize-address later to maint).

    * The commit summary shown after making a commit is matched to what
      is given in "git status" not to use the break-rewrite heuristics.
      (merge 84792322ed rs/commit-summary-wo-break-rewrite later to maint).

    * Update a few end-user facing messages around EOL conversion.
      (merge c970d30c2c ah/convert-warning-message later to maint).

    * Trace2 documentation updates.
      (merge a6c80c313c js/trace2-doc-fixes later to maint).

    * Build procedure fixup.
      (merge 1fbfd96f50 mg/detect-compiler-in-c-locale later to maint).

    * "git pull" without "--recurse-submodules=<arg>" made
      submodule.recurse take precedence over fetch.recurseSubmodules by
      mistake, which has been corrected.
      (merge 5819417365 gc/pull-recurse-submodules later to maint).

    * "git bisect" was too silent before it is ready to start computing
      the actual bisection, which has been corrected.
      (merge f11046e6de cd/bisect-messages-from-pre-flight-states later to maint).

    * macOS CI jobs have been occasionally flaky due to tentative version
      skew between perforce and the homebrew packager.  Instead of
      failing the whole CI job, just let it skip the p4 tests when this
      happens.
      (merge f15e00b463 cb/ci-make-p4-optional later to maint).

    * A bit of test framework fixes with a few fixes to issues found by
      valgrind.
      (merge 7c898554d7 ab/valgrind-fixes later to maint).

    * "git archive --add-file=<path>" picked up the raw permission bits
      from the path and propagated to zip output in some cases, without
      normalization, which has been corrected (tar output did not have
      this issue).
      (merge 6a61661967 jc/archive-add-file-normalize-mode later to maint).

    * "make coverage-report" without first running "make coverage" did
      not produce any meaningful result, which has been corrected.
      (merge 96ddfecc5b ep/coverage-report-wants-test-to-have-run later to maint).

    * The "--current" option of "git show-branch" should have been made
      incompatible with the "--reflog" mode, but this was not enforced,
      which has been corrected.
      (merge 41c64ae0e7 jc/show-branch-g-current later to maint).

    * "git fetch" unnecessarily failed when an unexpected optional
      section appeared in the output, which has been corrected.
      (merge 7709acf7be jt/fetch-peek-optional-section later to maint).

    * The way "git fetch" without "--update-head-ok" ensures that HEAD in
      no worktree points at any ref being updated was too wasteful, which
      has been optimized a bit.
      (merge f7400da800 os/fetch-check-not-current-branch later to maint).

    * "git fetch --recurse-submodules" from multiple remotes (either from
      a remote group, or "--all") used to make one extra "git fetch" in
      the submodules, which has been corrected.
      (merge 0353c68818 jc/avoid-redundant-submodule-fetch later to maint).

    * With a recent update to refuse access to repositories of other
      people by default, "sudo make install" and "sudo git describe"
      stopped working, which has been corrected.
      (merge 6b11e3d52e cb/path-owner-check-with-sudo-plus later to maint).

    * The tests that ensured merges stop when interfering local changes
      are present did not make sure that local changes are preserved; now
      they do.
      (merge 4b317450ce jc/t6424-failing-merge-preserve-local-changes later to maint).

    * Some real problems noticed by gcc 12 have been fixed, while false
      positives have been worked around.

    * Update the version of FreeBSD image used in Cirrus CI.
      (merge c58bebd4c6 pb/use-freebsd-12.3-in-cirrus-ci later to maint).

    * The multi-pack-index code did not protect the packfile it is going
      to depend on from getting removed while in use, which has been
      corrected.
      (merge 4090511e40 tb/midx-race-in-pack-objects later to maint).

    * Teach "git repack --geometric" work better with "--keep-pack" and
      avoid corrupting the repository when packsize limit is used.
      (merge 66731ff921 tb/geom-repack-with-keep-and-max later to maint).

    * The documentation on the interaction between "--add-file" and
      "--prefix" options of "git archive" has been improved.
      (merge a75910602a rs/document-archive-prefix later to maint).

    * A git subcommand like "git add -p" spawns a separate git process
      while relaying its command line arguments.  A pathspec with only
      negative elements was mistakenly passed with an empty string, which
      has been corrected.
      (merge b02fdbc80a jc/all-negative-pathspec later to maint).

    * With a more targeted workaround in http.c in another topic, we may
      be able to lift this blanket "GCC12 dangling-pointer warning is
      broken and unsalvageable" workaround.
      (merge 419141e495 cb/buggy-gcc-12-workaround later to maint).

    * A misconfigured 'branch..remote' led to a bug in configuration
      parsing.
      (merge f1dfbd9ee0 gc/zero-length-branch-config-fix later to maint).

    * "git -c diff.submodule=log range-diff" did not show anything for
      submodules that changed in the ranges being compared, and
      "git -c diff.submodule=diff range-diff" did not work correctly.
      Fix this by including the "--submodule=short" output
      unconditionally to be compared.

    * In Git 2.36 we revamped the way how hooks are invoked.  One change
      that is end-user visible is that the output of a hook is no longer
      directly connected to the standard output of "git" that spawns the
      hook, which was noticed post release.  This is getting corrected.
      (merge a082345372 ab/hooks-regression-fix later to maint).

    * Updating the graft information invalidates the list of parents of
      in-core commit objects that used to be in the graft file.

    * "git show-ref --heads" (and "--tags") still iterated over all the
      refs only to discard refs outside the specified area, which has
      been corrected.
      (merge c0c9d35e27 tb/show-ref-optim later to maint).

    * Remove redundant copying (with index v3 and older) or possible
      over-reading beyond end of mmapped memory (with index v4) has been
      corrected.
      (merge 6d858341d2 zh/read-cache-copy-name-entry-fix later to maint).

    * Sample watchman interface hook sometimes failed to produce
      correctly formatted JSON message, which has been corrected.
      (merge 134047b500 sn/fsmonitor-missing-clock later to maint).

    * Use-after-free (with another forget-to-free) fix.
      (merge 323822c72b ab/remote-free-fix later to maint).

    * Remove a coccinelle rule that is no longer relevant.
      (merge b1299de4a1 jc/cocci-cleanup later to maint).

    * Other code cleanup, docfix, build fix, etc.
      (merge e6b2582da3 cm/reftable-0-length-memset later to maint).
      (merge 0b75e5bf22 ab/misc-cleanup later to maint).
      (merge 52e1ab8a76 ea/rebase-code-simplify later to maint).
      (merge 756d15923b sg/safe-directory-tests-and-docs later to maint).
      (merge d097a23bfa ds/do-not-call-bug-on-bad-refs later to maint).
      (merge c36c27e75c rs/t7812-pcre2-ws-bug-test later to maint).
      (merge 1da312742d gf/unused-includes later to maint).
      (merge 465b30a92d pb/submodule-recurse-mode-enum later to maint).
      (merge 82b28c4ed8 km/t3501-use-test-helpers later to maint).
      (merge 72315e431b sa/t1011-use-helpers later to maint).
      (merge 95b3002201 cg/vscode-with-gdb later to maint).
      (merge fbe5f6b804 tk/p4-utf8-bom later to maint).
      (merge 17f273ffba tk/p4-with-explicity-sync later to maint).
      (merge 944db25c60 kf/p4-multiple-remotes later to maint).
      (merge b014cee8de jc/update-ozlabs-url later to maint).
      (merge 4ec5008062 pb/ggg-in-mfc-doc later to maint).
      (merge af845a604d tb/receive-pack-code-cleanup later to maint).
      (merge 2acf4cf001 js/ci-gcc-12-fixes later to maint).
      (merge 05e280c0a6 jc/http-clear-finished-pointer later to maint).
      (merge 8c49d704ef fh/transport-push-leakfix later to maint).
      (merge 1d232d38bd tl/ls-tree-oid-only later to maint).
      (merge db7961e6a6 gc/document-config-worktree-scope later to maint).
      (merge ce18a30bb7 fs/ssh-default-key-command-doc later to maint).


   To generate a diff of this commit:
   cvs rdiff -u -r1.105 -r1.106 pkgsrc/devel/git/Makefile.version
   cvs rdiff -u -r1.96 -r1.97 pkgsrc/devel/git-base/Makefile
   cvs rdiff -u -r1.119 -r1.120 pkgsrc/devel/git-base/distinfo
   cvs rdiff -u -r1.20 -r1.21 pkgsrc/devel/git-docs/Makefile
   cvs rdiff -u -r1.44 -r1.45 pkgsrc/www/gitweb/Makefile

-------------------------------------------------------------------
   Module Name:	pkgsrc
   Committed By:	adam
   Date:		Thu Jul 14 10:55:37 UTC 2022

   Modified Files:
   	pkgsrc/devel/git: Makefile.version
   	pkgsrc/devel/git-base: distinfo

   Log Message:
   git: updated to 2.37.1

   Git 2.37.1 Release Notes
   ============

   This release merges up the fixes that appear in v2.30.5, v2.31.4,
   v2.32.3, v2.33.4, v2.34.4, v2.35.4, and v2.36.2 to address the
   security issue CVE-2022-29187; see the release notes for these
   versions for details.

   Fixes since Git 2.37
   --------------------

    * Rewrite of "git add -i" in C that appeared in Git 2.25 didn't
      correctly record a removed file to the index, which is an old
      regression but has become widely known because the C version has
      become the default in the latest release.

    * Fix for CVS-2022-29187.


   To generate a diff of this commit:
   cvs rdiff -u -r1.106 -r1.107 pkgsrc/devel/git/Makefile.version
   cvs rdiff -u -r1.120 -r1.121 pkgsrc/devel/git-base/distinfo

Revision 1.121 / (download) - annotate - [select for diffs], Thu Jul 14 10:55:37 2022 UTC (14 months, 2 weeks ago) by adam
Branch: MAIN
Changes since 1.120: +4 -4 lines
Diff to previous 1.120 (colored)

git: updated to 2.37.1

Git 2.37.1 Release Notes
========================

This release merges up the fixes that appear in v2.30.5, v2.31.4,
v2.32.3, v2.33.4, v2.34.4, v2.35.4, and v2.36.2 to address the
security issue CVE-2022-29187; see the release notes for these
versions for details.

Fixes since Git 2.37
--------------------

 * Rewrite of "git add -i" in C that appeared in Git 2.25 didn't
   correctly record a removed file to the index, which is an old
   regression but has become widely known because the C version has
   become the default in the latest release.

 * Fix for CVS-2022-29187.

Revision 1.120 / (download) - annotate - [select for diffs], Wed Jul 6 11:53:59 2022 UTC (14 months, 4 weeks ago) by adam
Branch: MAIN
Changes since 1.119: +4 -4 lines
Diff to previous 1.119 (colored)

git: updated to 2.37.0

Git v2.37 Release Notes
=======================

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.<name>.url` config, not `remote.<name>.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=<mode>" and "status.showUntrackedFiles"
   are combined.

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

 * "git show :<path>" learned to work better with the sparse-index
   feature.

 * Introduce and apply coccinelle rule to discourage an explicit
   comparison between a pointer and NULL, and applies the clean-up to
   the maintenance track.

 * Preliminary code refactoring around transport and bundle code.

 * "sparse-checkout" learns to work better with the sparse-index
   feature.

 * A workflow change for translators are being proposed.  git.pot is
   no longer version controlled and it is local responsibility of
   translators to generate it.

 * Plug the memory leaks from the trickiest API of all, the revision
   walker.

 * Rename .env_array member to .env in the child_process structure.

  * The fsmonitor--daemon handles even more corner cases when
    watching filesystem events.

 * A new bug() and BUG_if_bug() API is introduced to make it easier to
   uniformly log "detect multiple bugs and abort in the end" pattern.


Fixes since v2.36
-----------------

 * "git submodule update" without pathspec should silently skip an
   uninitialized submodule, but it started to become noisy by mistake.
   (merge 4f1ccef87c gc/submodule-update-part2 later to maint).

 * "diff-tree --stdin" has been broken for about a year, but 2.36
   release broke it even worse by breaking running the command with
   <pathspec>, which in turn broke "gitk" and got noticed.  This has
   been corrected by aligning its behaviour to that of "log".
   (merge f8781bfda3 jc/diff-tree-stdin-fix later to maint).

 * Regression fix for 2.36 where "git name-rev" started to sometimes
   reference strings after they are freed.
   (merge 45a14f578e rs/name-rev-fix-free-after-use later to maint).

 * "git show <commit1> <commit2>... -- <pathspec>" lost the pathspec
   when showing the second and subsequent commits, which has been
   corrected.
   (merge 5cdb38458e jc/show-pathspec-fix later to maint).

 * "git fast-export -- <pathspec>" lost the pathspec when showing the
   second and subsequent commits, which has been corrected.
   (merge d1c25272f5 rs/fast-export-pathspec-fix later to maint).

 * "git format-patch <args> -- <pathspec>" lost the pathspec when
   showing the second and subsequent commits, which has been
   corrected.
   (merge 91f8f7e46f rs/format-patch-pathspec-fix later to maint).

 * "git clone --origin X" leaked piece of memory that held value read
   from the clone.defaultRemoteName configuration variable, which has
   been plugged.
   (merge 6dfadc8981 jc/clone-remote-name-leak-fix later to maint).

 * Get rid of a bogus and over-eager coccinelle rule.
   (merge 08bdd3a185 jc/cocci-xstrdup-or-null-fix later to maint).

 * The path taken by "git multi-pack-index" command from the end user
   was compared with path internally prepared by the tool without first
   normalizing, which lead to duplicated paths not being noticed,
   which has been corrected.
   (merge 11f9e8de3d ds/midx-normalize-pathname-before-comparison later to maint).

 * Correct choices of C compilers used in various CI jobs.
   (merge 3506cae04f ab/cc-package-fixes later to maint).

 * Various cleanups to "git p4".
   (merge 4ff0108d9e jh/p4-various-fixups later to maint).

 * The progress meter of "git blame" was showing incorrect numbers
   when processing only parts of the file.
   (merge e5f5d7d42e ea/progress-partial-blame later to maint).

 * "git rebase --keep-base <upstream> <branch-to-rebase>" computed the
   commit to rebase onto incorrectly, which has been corrected.
   (merge 9e5ebe9668 ah/rebase-keep-base-fix later to maint).

 * Fix a leak of FILE * in an error codepath.
   (merge c0befa0c03 kt/commit-graph-plug-fp-leak-on-error later to maint).

 * Avoid problems from interaction between malloc_check and address
   sanitizer.
   (merge 067109a5e7 pw/test-malloc-with-sanitize-address later to maint).

 * The commit summary shown after making a commit is matched to what
   is given in "git status" not to use the break-rewrite heuristics.
   (merge 84792322ed rs/commit-summary-wo-break-rewrite later to maint).

 * Update a few end-user facing messages around EOL conversion.
   (merge c970d30c2c ah/convert-warning-message later to maint).

 * Trace2 documentation updates.
   (merge a6c80c313c js/trace2-doc-fixes later to maint).

 * Build procedure fixup.
   (merge 1fbfd96f50 mg/detect-compiler-in-c-locale later to maint).

 * "git pull" without "--recurse-submodules=<arg>" made
   submodule.recurse take precedence over fetch.recurseSubmodules by
   mistake, which has been corrected.
   (merge 5819417365 gc/pull-recurse-submodules later to maint).

 * "git bisect" was too silent before it is ready to start computing
   the actual bisection, which has been corrected.
   (merge f11046e6de cd/bisect-messages-from-pre-flight-states later to maint).

 * macOS CI jobs have been occasionally flaky due to tentative version
   skew between perforce and the homebrew packager.  Instead of
   failing the whole CI job, just let it skip the p4 tests when this
   happens.
   (merge f15e00b463 cb/ci-make-p4-optional later to maint).

 * A bit of test framework fixes with a few fixes to issues found by
   valgrind.
   (merge 7c898554d7 ab/valgrind-fixes later to maint).

 * "git archive --add-file=<path>" picked up the raw permission bits
   from the path and propagated to zip output in some cases, without
   normalization, which has been corrected (tar output did not have
   this issue).
   (merge 6a61661967 jc/archive-add-file-normalize-mode later to maint).

 * "make coverage-report" without first running "make coverage" did
   not produce any meaningful result, which has been corrected.
   (merge 96ddfecc5b ep/coverage-report-wants-test-to-have-run later to maint).

 * The "--current" option of "git show-branch" should have been made
   incompatible with the "--reflog" mode, but this was not enforced,
   which has been corrected.
   (merge 41c64ae0e7 jc/show-branch-g-current later to maint).

 * "git fetch" unnecessarily failed when an unexpected optional
   section appeared in the output, which has been corrected.
   (merge 7709acf7be jt/fetch-peek-optional-section later to maint).

 * The way "git fetch" without "--update-head-ok" ensures that HEAD in
   no worktree points at any ref being updated was too wasteful, which
   has been optimized a bit.
   (merge f7400da800 os/fetch-check-not-current-branch later to maint).

 * "git fetch --recurse-submodules" from multiple remotes (either from
   a remote group, or "--all") used to make one extra "git fetch" in
   the submodules, which has been corrected.
   (merge 0353c68818 jc/avoid-redundant-submodule-fetch later to maint).

 * With a recent update to refuse access to repositories of other
   people by default, "sudo make install" and "sudo git describe"
   stopped working, which has been corrected.
   (merge 6b11e3d52e cb/path-owner-check-with-sudo-plus later to maint).

 * The tests that ensured merges stop when interfering local changes
   are present did not make sure that local changes are preserved; now
   they do.
   (merge 4b317450ce jc/t6424-failing-merge-preserve-local-changes later to maint).

 * Some real problems noticed by gcc 12 have been fixed, while false
   positives have been worked around.

 * Update the version of FreeBSD image used in Cirrus CI.
   (merge c58bebd4c6 pb/use-freebsd-12.3-in-cirrus-ci later to maint).

 * The multi-pack-index code did not protect the packfile it is going
   to depend on from getting removed while in use, which has been
   corrected.
   (merge 4090511e40 tb/midx-race-in-pack-objects later to maint).

 * Teach "git repack --geometric" work better with "--keep-pack" and
   avoid corrupting the repository when packsize limit is used.
   (merge 66731ff921 tb/geom-repack-with-keep-and-max later to maint).

 * The documentation on the interaction between "--add-file" and
   "--prefix" options of "git archive" has been improved.
   (merge a75910602a rs/document-archive-prefix later to maint).

 * A git subcommand like "git add -p" spawns a separate git process
   while relaying its command line arguments.  A pathspec with only
   negative elements was mistakenly passed with an empty string, which
   has been corrected.
   (merge b02fdbc80a jc/all-negative-pathspec later to maint).

 * With a more targeted workaround in http.c in another topic, we may
   be able to lift this blanket "GCC12 dangling-pointer warning is
   broken and unsalvageable" workaround.
   (merge 419141e495 cb/buggy-gcc-12-workaround later to maint).

 * A misconfigured 'branch..remote' led to a bug in configuration
   parsing.
   (merge f1dfbd9ee0 gc/zero-length-branch-config-fix later to maint).

 * "git -c diff.submodule=log range-diff" did not show anything for
   submodules that changed in the ranges being compared, and
   "git -c diff.submodule=diff range-diff" did not work correctly.
   Fix this by including the "--submodule=short" output
   unconditionally to be compared.

 * In Git 2.36 we revamped the way how hooks are invoked.  One change
   that is end-user visible is that the output of a hook is no longer
   directly connected to the standard output of "git" that spawns the
   hook, which was noticed post release.  This is getting corrected.
   (merge a082345372 ab/hooks-regression-fix later to maint).

 * Updating the graft information invalidates the list of parents of
   in-core commit objects that used to be in the graft file.

 * "git show-ref --heads" (and "--tags") still iterated over all the
   refs only to discard refs outside the specified area, which has
   been corrected.
   (merge c0c9d35e27 tb/show-ref-optim later to maint).

 * Remove redundant copying (with index v3 and older) or possible
   over-reading beyond end of mmapped memory (with index v4) has been
   corrected.
   (merge 6d858341d2 zh/read-cache-copy-name-entry-fix later to maint).

 * Sample watchman interface hook sometimes failed to produce
   correctly formatted JSON message, which has been corrected.
   (merge 134047b500 sn/fsmonitor-missing-clock later to maint).

 * Use-after-free (with another forget-to-free) fix.
   (merge 323822c72b ab/remote-free-fix later to maint).

 * Remove a coccinelle rule that is no longer relevant.
   (merge b1299de4a1 jc/cocci-cleanup later to maint).

 * Other code cleanup, docfix, build fix, etc.
   (merge e6b2582da3 cm/reftable-0-length-memset later to maint).
   (merge 0b75e5bf22 ab/misc-cleanup later to maint).
   (merge 52e1ab8a76 ea/rebase-code-simplify later to maint).
   (merge 756d15923b sg/safe-directory-tests-and-docs later to maint).
   (merge d097a23bfa ds/do-not-call-bug-on-bad-refs later to maint).
   (merge c36c27e75c rs/t7812-pcre2-ws-bug-test later to maint).
   (merge 1da312742d gf/unused-includes later to maint).
   (merge 465b30a92d pb/submodule-recurse-mode-enum later to maint).
   (merge 82b28c4ed8 km/t3501-use-test-helpers later to maint).
   (merge 72315e431b sa/t1011-use-helpers later to maint).
   (merge 95b3002201 cg/vscode-with-gdb later to maint).
   (merge fbe5f6b804 tk/p4-utf8-bom later to maint).
   (merge 17f273ffba tk/p4-with-explicity-sync later to maint).
   (merge 944db25c60 kf/p4-multiple-remotes later to maint).
   (merge b014cee8de jc/update-ozlabs-url later to maint).
   (merge 4ec5008062 pb/ggg-in-mfc-doc later to maint).
   (merge af845a604d tb/receive-pack-code-cleanup later to maint).
   (merge 2acf4cf001 js/ci-gcc-12-fixes later to maint).
   (merge 05e280c0a6 jc/http-clear-finished-pointer later to maint).
   (merge 8c49d704ef fh/transport-push-leakfix later to maint).
   (merge 1d232d38bd tl/ls-tree-oid-only later to maint).
   (merge db7961e6a6 gc/document-config-worktree-scope later to maint).
   (merge ce18a30bb7 fs/ssh-default-key-command-doc later to maint).

Revision 1.119 / (download) - annotate - [select for diffs], Mon May 9 12:00:16 2022 UTC (16 months, 3 weeks ago) by adam
Branch: MAIN
CVS Tags: pkgsrc-2022Q2-base
Branch point for: pkgsrc-2022Q2
Changes since 1.118: +4 -4 lines
Diff to previous 1.118 (colored)

git: updated to 2.36.1

Git v2.36.1 Release Notes
=========================

Fixes since v2.36
-----------------

 * "git submodule update" without pathspec should silently skip an
   uninitialized submodule, but it started to become noisy by mistake.

 * "diff-tree --stdin" has been broken for about a year, but 2.36
   release broke it even worse by breaking running the command with
   <pathspec>, which in turn broke "gitk" and got noticed.  This has
   been corrected by aligning its behaviour to that of "log".

 * Regression fix for 2.36 where "git name-rev" started to sometimes
   reference strings after they are freed.

 * "git show <commit1> <commit2>... -- <pathspec>" lost the pathspec
   when showing the second and subsequent commits, which has been
   corrected.

 * "git fast-export -- <pathspec>" lost the pathspec when showing the
   second and subsequent commits, which has been corrected.

 * "git format-patch <args> -- <pathspec>" lost the pathspec when
   showing the second and subsequent commits, which has been
   corrected.

 * Get rid of a bogus and over-eager coccinelle rule.

 * Correct choices of C compilers used in various CI jobs.

Also contains minor documentation updates and code clean-ups.

Revision 1.118 / (download) - annotate - [select for diffs], Tue May 3 01:26:55 2022 UTC (17 months ago) by gutteridge
Branch: MAIN
Changes since 1.117: +4 -4 lines
Diff to previous 1.117 (colored)

git: update to 2.36.0

Git 2.36 Release Notes
======================

Updates since Git 2.35
----------------------

Backward compatibility warts

 * "git name-rev --stdin" has been deprecated and issues a warning
   when used; use "git name-rev --annotate-stdin" instead.

 * "git clone --filter=... --recurse-submodules" only makes the
   top-level a partial clone, while submodules are fully cloned.  This
   behaviour is changed to pass the same filter down to the submodules.

 * With the fixes for CVE-2022-24765 that are common with versions of
   Git 2.30.4, 2.31.3, 2.32.2, 2.33.3, 2.34.3, and 2.35.3, Git has
   been taught not to recognise repositories owned by other users, in
   order to avoid getting affected by their config files and hooks.
   You can list the path to the safe/trusted repositories that may be
   owned by others on a multi-valued configuration variable
   `safe.directory` to override this behaviour, or use '*' to declare
   that you trust anything.

Note to those who build from the source

 * Since Git 2.31, our source assumed that the compiler you use to
   build Git supports variadic macros, with an easy-to-use escape
   hatch to allow compilation without variadic macros with an request
   to report that you had to use the escape hatch to the list.
   Because we haven't heard from anybody who actually needed to use
   the escape hatch, it has been removed, making support of variadic
   macros a hard requirement.

UI, Workflows & Features

 * Assorted updates to "git cat-file", especially "-h".

 * The command line completion (in contrib/) learns to complete
   arguments to give to "git sparse-checkout" command.

 * "git log --remerge-diff" shows the difference from mechanical merge
   result and the result that is actually recorded in a merge commit.

 * "git log" and friends learned an option --exclude-first-parent-only
   to propagate UNINTERESTING bit down only along the first-parent
   chain, just like --first-parent option shows commits that lack the
   UNINTERESTING bit only along the first-parent chain.

 * The command line completion script (in contrib/) learned to
   complete all Git subcommands, including the ones that are normally
   hidden, when GIT_COMPLETION_SHOW_ALL_COMMANDS is used.

 * "git branch" learned the "--recurse-submodules" option.

 * A user can forget to make a script file executable before giving
   it to "git bisect run".  In such a case, all tests will exit with
   126 or 127 error codes, even on revisions that are marked as good.
   Try to recognize this situation and stop iteration early.

 * When "index-pack" dies due to incoming data exceeding the maximum
   allowed input size, include the value of the limit in the error
   message.

 * The error message given by "git switch HEAD~4" has been clarified
   to suggest the "--detach" option that is required.

 * In sparse-checkouts, files mis-marked as missing from the working tree
   could lead to later problems.  Such files were hard to discover, and
   harder to correct.  Automatically detecting and correcting the marking
   of such files has been added to avoid these problems.

 * "git cat-file" learns "--batch-command" mode, which is a more
   flexible interface than the existing "--batch" or "--batch-check"
   modes, to allow different kinds of inquiries made.

 * The level of verbose output from the ort backend during inner merge
   has been aligned to that of the recursive backend.

 * "git remote rename A B", depending on the number of remote-tracking
   refs involved, takes long time renaming them.  The command has been
   taught to show progress bar while making the user wait.

 * Bundle file format gets extended to allow a partial bundle,
   filtered by similar criteria you would give when making a
   partial/lazy clone.

 * A new built-in userdiff driver for kotlin has been added.

 * "git repack" learned a new configuration to disable triggering of
   age-old "update-server-info" command, which is rarely useful these
   days.

 * "git stash" does not allow subcommands it internally runs as its
   implementation detail, except for "git reset", to emit messages;
   now "git reset" part has also been squelched.

 * "git ls-tree" learns "--oid-only" option, similar to "--name-only",
   and more generalized "--format" option.

 * "git fetch --refetch" learned to fetch everything without telling
   the other side what we already have, which is useful when you
   cannot trust what you have in the local object store.

 * "git branch" gives hint when branch tracking cannot be established
   because fetch refspecs from multiple remote repositories overlap.

 * "git worktree list --porcelain" did not c-quote pathnames and lock
   reasons with unsafe bytes correctly, which is worked around by
   introducing NUL terminated output format with "-z".

Performance, Internal Implementation, Development Support etc.

 * "git apply" (ab)used the util pointer of the string-list to keep
   track of how each symbolic link needs to be handled, which has been
   simplified by using strset.

 * Fix a hand-rolled alloca() imitation that may have violated
   alignment requirement of data being sorted in compatibility
   implementation of qsort_s() and stable qsort().

 * Use the parse-options API in "git reflog" command.

 * The conditional inclusion mechanism of configuration files using
   "[includeIf <condition>]" learns to base its decision on the
   URL of the remote repository the repository interacts with.
   (merge 399b198489 jt/conditional-config-on-remote-url later to maint).

 * "git name-rev --stdin" does not behave like usual "--stdin" at
   all.  Start the process of renaming it to "--annotate-stdin".
   (merge a2585719b3 jc/name-rev-stdin later to maint).

 * "git update-index", "git checkout-index", and "git clean" are
   taught to work better with the sparse checkout feature.

 * Use an internal call to reset_head() helper function instead of
   spawning "git checkout" in "rebase", and update code paths that are
   involved in the change.

 * Messages "ort" merge backend prepares while dealing with conflicted
   paths were unnecessarily confusing since it did not differentiate
   inner merges and outer merges.

 * Small modernization of the rerere-train script (in contrib/).

 * Use designated initializers we started using in mid 2017 in more
   parts of the codebase that are relatively quiescent.

 * Improve failure case behaviour of xdiff library when memory
   allocation fails.

 * General clean-up in reftable implementation, including
   clarification of the API documentation, tightening the code to
   honor documented length limit, etc.

 * Remove the escape hatch we added when we introduced the weather
   balloon to use variadic macros unconditionally, to make it official
   that we now have a hard dependency on the feature.

 * Makefile refactoring with a bit of suffixes rule stripping to
   optimize the runtime overhead.

 * "git stash drop" is reimplemented as an internal call to
   reflog_delete() function, instead of invoking "git reflog delete"
   via run_command() API.

 * Count string_list items in size_t, not "unsigned int".

 * The single-key interactive operation used by "git add -p" has been
   made more robust.

 * Remove unneeded <meta http-equiv=content-type...> from gitweb
   output.

 * "git name-rev" learned to use the generation numbers when setting
   the lower bound of searching commits used to explain the revision,
   when available, instead of committer time.

 * Replace core.fsyncObjectFiles with two new configuration variables,
   core.fsync and core.fsyncMethod.

 * Updates to refs traditionally weren't fsync'ed, but we can
   configure using core.fsync variable to do so.

 * "git reflog" command now uses parse-options API to parse its
   command line options.

Fixes since v2.35
-----------------

 * "rebase" and "stash" in secondary worktrees are broken in
   Git 2.35.0, which has been corrected.

 * "git pull --rebase" ignored the rebase.autostash configuration
   variable when the remote history is a descendant of our history,
   which has been corrected.
   (merge 3013d98d7a pb/pull-rebase-autostash-fix later to maint).

 * "git update-index --refresh" has been taught to deal better with
   racy timestamps (just like "git status" already does).
   (merge 2ede073fd2 ms/update-index-racy later to maint).

 * Avoid tests that are run under GIT_TRACE2 set from failing
   unnecessarily.
   (merge 944d808e42 js/test-unset-trace2-parents later to maint).

 * The merge-ort misbehaved when merge.renameLimit configuration is
   set too low and failed to find all renames.
   (merge 9ae39fef7f en/merge-ort-restart-optim-fix later to maint).

 * We explain that revs come first before the pathspec among command
   line arguments, but did not spell out that dashed options come
   before other args, which has been corrected.
   (merge c11f95010c tl/doc-cli-options-first later to maint).

 * "git add -p" rewritten in C regressed hunk splitting in some cases,
   which has been corrected.
   (merge 7008ddc645 pw/add-p-hunk-split-fix later to maint).

 * "git fetch --negotiate-only" is an internal command used by "git
   push" to figure out which part of our history is missing from the
   other side.  It should never recurse into submodules even when
   fetch.recursesubmodules configuration variable is set, nor it
   should trigger "gc".  The code has been tightened up to ensure it
   only does common ancestry discovery and nothing else.
   (merge de4eaae63a gc/fetch-negotiate-only-early-return later to maint).

 * The code path that verifies signatures made with ssh were made to
   work better on a system with CRLF line endings.
   (merge caeef01ea7 fs/ssh-signing-crlf later to maint).

 * "git sparse-checkout init" failed to write into $GIT_DIR/info
   directory when the repository was created without one, which has
   been corrected to auto-create it.
   (merge 7f44842ac1 jt/sparse-checkout-leading-dir-fix later to maint).

 * Cloning from a repository that does not yet have any branches or
   tags but has other refs resulted in a "remote transport reported
   error", which has been corrected.
   (merge dccea605b6 jt/clone-not-quite-empty later to maint).

 * Mark in various places in the code that the sparse index and the
   split index features are mutually incompatible.
   (merge 451b66c533 js/sparse-vs-split-index later to maint).

 * Update the logic to compute alignment requirement for our mem-pool.
   (merge e38bcc66d8 jc/mem-pool-alignment later to maint).

 * Pick a better random number generator and use it when we prepare
   temporary filenames.
   (merge 47efda967c bc/csprng-mktemps later to maint).

 * Update the contributor-facing documents on proposed log messages.
   (merge cdba0295b0 jc/doc-log-messages later to maint).

 * When "git fetch --prune" failed to prune the refs it wanted to
   prune, the command issued error messages but exited with exit
   status 0, which has been corrected.
   (merge c9e04d905e tg/fetch-prune-exit-code-fix later to maint).

 * Problems identified by Coverity in the reftable code have been
   corrected.
   (merge 01033de49f hn/reftable-coverity-fixes later to maint).

 * A bug that made multi-pack bitmap and the object order out-of-sync,
   making the .midx data corrupt, has been fixed.
   (merge f8b60cf99b tb/midx-bitmap-corruption-fix later to maint).

 * The build procedure has been taught to notice older version of zlib
   and enable our replacement uncompress2() automatically.
   (merge 07564773c2 ab/auto-detect-zlib-compress2 later to maint).

 * Interaction between fetch.negotiationAlgorithm and
   feature.experimental configuration variables has been corrected.
   (merge 714edc620c en/fetch-negotiation-default-fix later to maint).

 * "git diff --diff-filter=aR" is now parsed correctly.
   (merge 75408ca949 js/diff-filter-negation-fix later to maint).

 * When "git subtree" wants to create a merge, it used "git merge" and
   let it be affected by end-user's "merge.ff" configuration, which
   has been corrected.
   (merge 9158a3564a tk/subtree-merge-not-ff-only later to maint).

 * Unlike "git apply", "git patch-id" did not handle patches with
   hunks that has only 1 line in either preimage or postimage, which
   has been corrected.
   (merge 757e75c81e jz/patch-id-hunk-header-parsing-fix later to maint).

 * "receive-pack" checks if it will do any ref updates (various
   conditions could reject a push) before received objects are taken
   out of the temporary directory used for quarantine purposes, so
   that a push that is known-to-fail will not leave crufts that a
   future "gc" needs to clean up.
   (merge 5407764069 cb/clear-quarantine-early-on-all-ref-update-errors later to maint).

 * When there is no object to write .bitmap file for, "git
   multi-pack-index" triggered an error, instead of just skipping,
   which has been corrected.
   (merge eb57277ba3 tb/midx-no-bitmap-for-no-objects later to maint).

 * "git cmd -h" outside a repository should error out cleanly for many
   commands, but instead it hit a BUG(), which has been corrected.
   (merge 87ad07d735 js/short-help-outside-repo-fix later to maint).

 * "working tree" and "per-worktree ref" were in glossary, but
   "worktree" itself wasn't, which has been corrected.
   (merge 2df5387ed0 jc/glossary-worktree later to maint).

 * L10n support for a few error messages.
   (merge 3d3c23b3a7 bs/forbid-i18n-of-protocol-token-in-fetch-pack later to maint).

 * Test modernization.
   (merge d4fe066e4b sy/t0001-use-path-is-helper later to maint).

 * "git log --graph --graph" used to leak a graph structure, and there
   was no way to countermand "--graph" that appear earlier on the
   command line.  A "--no-graph" option has been added and resource
   leakage has been plugged.

 * Error output given in response to an ambiguous object name has been
   improved.
   (merge 3a73c1dfaf ab/ambiguous-object-name later to maint).

 * "git sparse-checkout" wants to work with per-worktree configuration,
   but did not work well in a worktree attached to a bare repository.
   (merge 3ce1138272 ds/sparse-checkout-requires-per-worktree-config later to maint).

 * Setting core.untrackedCache to true failed to add the untracked
   cache extension to the index.

 * Workaround we have for versions of PCRE2 before their version 10.36
   were in effect only for their versions newer than 10.36 by mistake,
   which has been corrected.
   (merge 97169fc361 rs/pcre-invalid-utf8-fix-fix later to maint).

 * Document Taylor as a new member of Git PLC at SFC.  Welcome.
   (merge e8d56ca863 tb/coc-plc-update later to maint).

 * "git checkout -b branch/with/multi/level/name && git stash" only
   recorded the last level component of the branch name, which has
   been corrected.

 * Check the return value from parse_tree_indirect() to turn segfaults
   into calls to die().
   (merge 8d2eaf649a gc/parse-tree-indirect-errors later to maint).

 * Newer version of GPGSM changed its output in a backward
   incompatible way to break our code that parses its output.  It also
   added more processes our tests need to kill when cleaning up.
   Adjustments have been made to accommodate these changes.
   (merge b0b70d54c4 fs/gpgsm-update later to maint).

 * The untracked cache newly computed weren't written back to the
   on-disk index file when there is no other change to the index,
   which has been corrected.

 * "git config -h" did not describe the "--type" option correctly.
   (merge 5445124fad mf/fix-type-in-config-h later to maint).

 * The way generation number v2 in the commit-graph files are
   (not) handled has been corrected.
   (merge 6dbf4b8172 ds/commit-graph-gen-v2-fixes later to maint).

 * The method to trigger malloc check used in our tests no longer work
   with newer versions of glibc.
   (merge baedc59543 ep/test-malloc-check-with-glibc-2.34 later to maint).

 * When "git fetch --recurse-submodules" grabbed submodule commits
   that would be needed to recursively check out newly fetched commits
   in the superproject, it only paid attention to submodules that are
   in the current checkout of the superproject.  We now do so for all
   submodules that have been run "git submodule init" on.

 * "git rebase $base $non_branch_commit", when $base is an ancestor or
   the $non_branch_commit, modified the current branch, which has been
   corrected.

 * When "shallow" information is updated, we forgot to update the
   in-core equivalent, which has been corrected.

 * When creating a loose object file, we didn't report the exact
   filename of the file we failed to fsync, even though the
   information was readily available, which has been corrected.

 * "git am" can read from the standard input when no mailbox is given
   on the command line, but the end-user gets no indication when it
   happens, making Git appear stuck.
   (merge 7b20af6a06 jc/mailsplit-warn-on-tty later to maint).

 * "git mv" failed to refresh the cached stat information for the
   entry it moved.
   (merge b7f9130a06 vd/mv-refresh-stat later to maint).

Revision 1.116.2.1 / (download) - annotate - [select for diffs], Sat Apr 16 10:16:11 2022 UTC (17 months, 2 weeks ago) by spz
Branch: pkgsrc-2022Q1
Changes since 1.116: +4 -4 lines
Diff to previous 1.116 (colored) next main 1.117 (colored)

Pullup ticket #6619 - requested by gutteridge
devel/git-base: security update
devel/git: security update

Revisions pulled up:
- devel/git-base/distinfo                                       1.117
- devel/git/Makefile.version                                    1.103

-------------------------------------------------------------------
   Module Name:    pkgsrc
   Committed By:   gutteridge
   Date:           Thu Apr 14 23:39:21 UTC 2022

   Modified Files:
           pkgsrc/devel/git: Makefile.version
           pkgsrc/devel/git-base: distinfo

   Log Message:
   git: update to 2.35.3

   Includes a fix for CVE-2022-24765. Addresses PR pkg/56796 from
   Eric N Vander Weele.

   Git v2.35.2 Release Notes
   ============
   This release merges up the fixes that appear in v2.30.3,
   v2.31.2, v2.32.1, v2.33.2 and v2.34.2 to address the security
   issue CVE-2022-24765; see the release notes for these versions
   for details.

   Release notes for 2.35.3 simply state:

   This release merges up the fixes that appear in v2.35.3.


   To generate a diff of this commit:
   cvs rdiff -u -r1.102 -r1.103 pkgsrc/devel/git/Makefile.version
   cvs rdiff -u -r1.116 -r1.117 pkgsrc/devel/git-base/distinfo

Revision 1.117 / (download) - annotate - [select for diffs], Thu Apr 14 23:39:21 2022 UTC (17 months, 2 weeks ago) by gutteridge
Branch: MAIN
Changes since 1.116: +4 -4 lines
Diff to previous 1.116 (colored)

git: update to 2.35.3

Includes a fix for CVE-2022-24765. Addresses PR pkg/56796 from
Eric N Vander Weele.

Git v2.35.2 Release Notes
=========================

This release merges up the fixes that appear in v2.30.3,
v2.31.2, v2.32.1, v2.33.2 and v2.34.2 to address the security
issue CVE-2022-24765; see the release notes for these versions
for details.

Release notes for 2.35.3 simply state:

This release merges up the fixes that appear in v2.35.3.

Revision 1.116 / (download) - annotate - [select for diffs], Mon Jan 31 13:03:42 2022 UTC (20 months ago) by adam
Branch: MAIN
CVS Tags: pkgsrc-2022Q1-base
Branch point for: pkgsrc-2022Q1
Changes since 1.115: +4 -4 lines
Diff to previous 1.115 (colored)

git: updated to 2.35.1

Git v2.35.1 Release Notes
=========================

Git 2.35 shipped with a regression that broke use of "rebase" and
"stash" in a secondary worktree.  This maintenance release ought to
fix it.

Revision 1.115 / (download) - annotate - [select for diffs], Fri Jan 28 09:07:58 2022 UTC (20 months ago) by adam
Branch: MAIN
Changes since 1.114: +5 -5 lines
Diff to previous 1.114 (colored)

git: updated to 2.35.0

Git 2.35 Release Notes
======================

Updates since Git 2.34
----------------------

Backward compatibility warts

 * "_" is now treated as any other URL-valid characters in an URL when
   matching the per-URL configuration variable names.

 * The color palette used by "git grep" has been updated to match that
   of GNU grep.


Note to those who build from the source

 * You may need to define NO_UNCOMPRESS2 Makefile macro if you build
   with zlib older than 1.2.9.

 * If your compiler cannot grok C99, the build will fail.  See the
   instruction at the beginning of git-compat-util.h if this happens
   to you.


UI, Workflows & Features

 * "git status --porcelain=v2" now show the number of stash entries
   with --show-stash like the normal output does.

 * "git stash" learned the "--staged" option to stash away what has
   been added to the index (and nothing else).

 * "git var GIT_DEFAULT_BRANCH" is a way to see what name is used for
   the newly created branch if "git init" is run.

 * Various operating modes of "git reset" have been made to work
   better with the sparse index.

 * "git submodule deinit" for a submodule whose .git metadata
   directory is embedded in its working tree refused to work, until
   the submodule gets converted to use the "absorbed" form where the
   metadata directory is stored in superproject, and a gitfile at the
   top-level of the working tree of the submodule points at it.  The
   command is taught to convert such submodules to the absorbed form
   as needed.

 * The completion script (in contrib/) learns that the "--date"
   option of commands from the "git log" family takes "human" and
   "auto" as valid values.

 * "Zealous diff3" style of merge conflict presentation has been added.

 * The "git log --format=%(describe)" placeholder has been extended to
   allow passing selected command-line options to the underlying "git
   describe" command.

 * "default" and "reset" have been added to our color palette.

 * The cryptographic signing using ssh keys can specify literal keys
   for keytypes whose name do not begin with the "ssh-" prefix by
   using the "key::" prefix mechanism (e.g. "key::ecdsa-sha2-nistp256").

 * "git fetch" without the "--update-head-ok" option ought to protect
   a checked out branch from getting updated, to prevent the working
   tree that checks it out to go out of sync.  The code was written
   before the use of "git worktree" got widespread, and only checked
   the branch that was checked out in the current worktree, which has
   been updated.

 * "git name-rev" has been tweaked to give output that is shorter and
   easier to understand.

 * "git apply" has been taught to ignore a message without a patch
   with the "--allow-empty" option.  It also learned to honor the
   "--quiet" option given from the command line.

 * The "init" and "set" subcommands in "git sparse-checkout" have been
   unified for a better user experience and performance.

 * Many git commands that deal with working tree files try to remove a
   directory that becomes empty (i.e. "git switch" from a branch that
   has the directory to another branch that does not would attempt
   remove all files in the directory and the directory itself).  This
   drops users into an unfamiliar situation if the command was run in
   a subdirectory that becomes subject to removal due to the command.
   The commands have been taught to keep an empty directory if it is
   the directory they were started in to avoid surprising users.

 * "git am" learns "--empty=(stop|drop|keep)" option to tweak what is
   done to a piece of e-mail without a patch in it.

 * The default merge message prepared by "git merge" records the name
   of the current branch; the name can be overridden with a new option
   to allow users to pretend a merge is made on a different branch.

 * The way "git p4" shows file sizes in its output has been updated to
   use human-readable units.

 * "git -c branch.autosetupmerge=inherit branch new old" makes "new"
   to have the same upstream as the "old" branch, instead of marking
   "old" itself as its upstream.


Performance, Internal Implementation, Development Support etc.

 * The use of errno as a means to carry the nature of error in the ref
   API implementation has been reworked and reduced.

 * Teach and encourage first-time contributors to this project to
   state the base commit when they submit their topic.

 * The command line completion for "git send-email" options have been
   tweaked to make it easier to keep it in sync with the command itself.

 * Ensure that the sparseness of the in-core index matches the
   index.sparse configuration specified by the repository immediately
   after the on-disk index file is read.

 * Code clean-up to eventually allow information on remotes defined
   for an arbitrary repository to be read.

 * Build optimization.

 * Tighten code for testing pack-bitmap.

 * Weather balloon to break people with compilers that do not support
   C99.

 * The "reftable" backend for the refs API, without integrating into
   the refs subsystem, has been added.

 * More tests are marked as leak-free.

 * The test framework learns to list unsatisfied test prerequisites,
   and optionally error out when prerequisites that are expected to be
   satisfied are not.

 * The default setting for trace2 event nesting was too low to cause
   test failures, which is worked around by bumping it up in the test
   framework.

 * Drop support for TravisCI and update test workflows at GitHub.

 * Many tests that used to need GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
   mechanism to force "git" to use 'master' as the default name for
   the initial branch no longer need it; the use of the mechanism from
   them have been removed.

 * Allow running our tests while disabling fsync.

 * Document the parameters given to the reflog entry iterator callback
   functions.
   (merge e6e94f34b2 jc/reflog-iterator-callback-doc later to maint).

 * The test helper for refs subsystem learned to write bogus and/or
   nonexistent object name to refs to simulate error situations we
   want to test Git in.

 * "diff --histogram" optimization.

 * Weather balloon to find compilers that do not grok variable
   declaration in the for() loop.

 * diff and blame commands have been taught to work better with sparse
   index.

 * The chainlint test script linter in the test suite has been updated.

 * The DEVELOPER=yes build uses -std=gnu99 now.

 * "git format-patch" uses a single rev_info instance and then exits.
   Mark the structure with UNLEAK() macro to squelch leak sanitizer.

 * New interface into the tmp-objdir API to help in-core use of the
   quarantine feature.

 * Broken &&-chains in the test scripts have been corrected.

 * The RCS keyword substitution in "git p4" used to be done assuming
   that the contents are UTF-8 text, which can trigger decoding
   errors.  We now treat the contents as a bytestring for robustness
   and correctness.

 * The conditions to choose different definitions of the FLEX_ARRAY
   macro for vendor compilers has been simplified to make it easier to
   maintain.

 * Correctness and performance update to "diff --color-moved" feature.

 * "git upload-pack" (the other side of "git fetch") used a 8kB buffer
   but most of its payload came on 64kB "packets".  The buffer size
   has been enlarged so that such a packet fits.

 * "git fetch" and "git pull" are now declared sparse-index clean.
   Also "git ls-files" learns the "--sparse" option to help debugging.

 * Similar message templates have been consolidated so that
   translators need to work on fewer number of messages.


Fixes since v2.34
-----------------

 * "git grep" looking in a blob that has non-UTF8 payload was
   completely broken when linked with certain versions of PCREv2
   library in the latest release.

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

 * "git pull" with any strategy when the other side is behind us
   should succeed as it is a no-op, but doesn't.

 * An earlier change in 2.34.0 caused JGit application (that abused
   GIT_EDITOR mechanism when invoking "git config") to get stuck with
   a SIGTTOU signal; it has been reverted.

 * An earlier change that broke .gitignore matching has been reverted.

 * Things like "git -c branch.sort=bogus branch new HEAD", i.e. the
   operation modes of the "git branch" command that do not need the
   sort key information, no longer errors out by seeing a bogus sort
   key.
   (merge 98e7ab6d42 jc/fix-ref-sorting-parse later to maint).

 * The compatibility implementation for unsetenv(3) were written to
   mimic ancient, non-POSIX, variant seen in an old glibc; it has been
   changed to return an integer to match the more modern era.
   (merge a38989bd5b jc/unsetenv-returns-an-int later to maint).

 * The clean/smudge conversion code path has been prepared to better
   work on platforms where ulong is narrower than size_t.
   (merge 596b5e77c9 mc/clean-smudge-with-llp64 later to maint).

 * Redact the path part of packfile URI that appears in the trace output.
   (merge 0ba558ffb1 if/redact-packfile-uri later to maint).

 * CI has been taught to catch some Unicode directional formatting
   sequence that can be used in certain mischief.
   (merge 0e7696c64d js/ci-no-directional-formatting later to maint).

 * The "--date=format:<strftime>" gained a workaround for the lack of
   system support for a non-local timezone to handle "%s" placeholder.
   (merge 9b591b9403 jk/strbuf-addftime-seconds-since-epoch later to maint).

 * The "merge" subcommand of "git jump" (in contrib/) silently ignored
   pathspec and other parameters.
   (merge 67ba13e5a4 jk/jump-merge-with-pathspec later to maint).

 * The code to decode the length of packed object size has been
   corrected.
   (merge 34de5b8eac jt/pack-header-lshift-overflow later to maint).

 * The advice message given by "git pull" when the user hasn't made a
   choice between merge and rebase still said that the merge is the
   default, which no longer is the case.  This has been corrected.
   (merge 71076d0edd ah/advice-pull-has-no-preference-between-rebase-and-merge later to maint).

 * "git fetch", when received a bad packfile, can fail with SIGPIPE.
   This wasn't wrong per-se, but we now detect the situation and fail
   in a more predictable way.
   (merge 2a4aed42ec jk/fetch-pack-avoid-sigpipe-to-index-pack later to maint).

 * The function to cull a child process and determine the exit status
   had two separate code paths for normal callers and callers in a
   signal handler, and the latter did not yield correct value when the
   child has caught a signal.  The handling of the exit status has
   been unified for these two code paths.  An existing test with
   flakiness has also been corrected.
   (merge 5263e22cba jk/t7006-sigpipe-tests-fix later to maint).

 * When a non-existent program is given as the pager, we tried to
   reuse an uninitialized child_process structure and crashed, which
   has been fixed.
   (merge f917f57f40 em/missing-pager later to maint).

 * The single-key-input mode in "git add -p" had some code to handle
   keys that generate a sequence of input via ReadKey(), which did not
   handle end-of-file correctly, which has been fixed.
   (merge fc8a8126df cb/add-p-single-key-fix later to maint).

 * "git rebase -x" added an unnecessary 'exec' instructions before
   'noop', which has been corrected.
   (merge cc9dcdee61 en/rebase-x-fix later to maint).

 * When the "git push" command is killed while the receiving end is
   trying to report what happened to the ref update proposals, the
   latter used to die, due to SIGPIPE.  The code now ignores SIGPIPE
   to increase our chances to run the post-receive hook after it
   happens.
   (merge d34182b9e3 rj/receive-pack-avoid-sigpipe-during-status-reporting later to maint).

 * "git worktree add" showed "Preparing worktree" message to the
   standard output stream, but when it failed, the message from die()
   went to the standard error stream.  Depending on the order the
   stdio streams are flushed at the program end, this resulted in
   confusing output.  It has been corrected by sending all the chatty
   messages to the standard error stream.
   (merge b50252484f es/worktree-chatty-to-stderr later to maint).

 * Coding guideline document has been updated to clarify what goes to
   standard error in our system.
   (merge e258eb4800 es/doc-stdout-vs-stderr later to maint).

 * The sparse-index/sparse-checkout feature had a bug in its use of
   the matching code to determine which path is in or outside the
   sparse checkout patterns.
   (merge 8c5de0d265 ds/sparse-deep-pattern-checkout-fix later to maint).

 * "git rebase -x" by mistake started exporting the GIT_DIR and
   GIT_WORK_TREE environment variables when the command was rewritten
   in C, which has been corrected.
   (merge 434e0636db en/rebase-x-wo-git-dir-env later to maint).

 * When "git log" implicitly enabled the "decoration" processing
   without being explicitly asked with "--decorate" option, it failed
   to read and honor the settings given by the "--decorate-refs"
   option.

 * "git fetch --set-upstream" did not check if there is a current
   branch, leading to a segfault when it is run on a detached HEAD,
   which has been corrected.
   (merge 17baeaf82d ab/fetch-set-upstream-while-detached later to maint).

 * Among some code paths that ask an yes/no question, only one place
   gave a prompt that looked different from the others, which has been
   updated to match what the others create.
   (merge 0fc8ed154c km/help-prompt-fix later to maint).

 * "git log --invert-grep --author=<name>" used to exclude commits
   written by the given author, but now "--invert-grep" only affects
   the matches made by the "--grep=<pattern>" option.
   (merge 794c000267 rs/log-invert-grep-with-headers later to maint).

 * "git grep --perl-regexp" failed to match UTF-8 characters with
   wildcard when the pattern consists only of ASCII letters, which has
   been corrected.
   (merge 32e3e8bc55 rs/pcre2-utf later to maint).

 * Certain sparse-checkout patterns that are valid in non-cone mode
   led to segfault in cone mode, which has been corrected.

 * Use of certain "git rev-list" options with "git fast-export"
   created nonsense results (the worst two of which being "--reverse"
   and "--invert-grep --grep=<foo>").  The use of "--first-parent" is
   made to behave a bit more sensible than before.
   (merge 726a228dfb ws/fast-export-with-revision-options later to maint).

 * Perf tests were run with end-user's shell, but it has been
   corrected to use the shell specified by $TEST_SHELL_PATH.
   (merge 9ccab75608 ja/perf-use-specified-shell later to maint).

 * Fix dependency rules to generate hook-list.h header file.
   (merge d3fd1a6667 ab/makefile-hook-list-dependency-fix later to maint).

 * "git stash" by default triggers its "push" action, but its
   implementation also made "git stash -h" to show short help only for
   "git stash push", which has been corrected.
   (merge ca7990cea5 ab/do-not-limit-stash-help-to-push later to maint).

 * "git apply --3way" bypasses the attempt to do a three-way
   application in more cases to address the regression caused by the
   recent change to use direct application as a fallback.
   (merge 34d607032c jz/apply-3-corner-cases later to maint).

 * Fix performance-releated bug in "git subtree" (in contrib/).
   (merge 3ce8888fb4 jl/subtree-check-parents-argument-passing-fix later to maint).

 * Extend the guidance to choose the base commit to build your work
   on, and hint/nudge contributors to read others' changes.
   (merge fdfae830f8 jc/doc-submitting-patches-choice-of-base later to maint).

 * A corner case bug in the ort merge strategy has been corrected.
   (merge d30126c20d en/merge-ort-renorm-with-rename-delete-conflict-fix later to maint).

 * "git stash apply" forgot to attempt restoring untracked files when
   it failed to restore changes to tracked ones.
   (merge 71cade5a0b en/stash-df-fix later to maint).

 * Calling dynamically loaded functions on Windows has been corrected.
   (merge 4a9b204920 ma/windows-dynload-fix later to maint).

 * Some lockfile code called free() in signal-death code path, which
   has been corrected.
   (merge 58d4d7f1c5 ps/lockfile-cleanup-fix later to maint).

 * Other code cleanup, docfix, build fix, etc.
   (merge 74db416c9c cw/protocol-v2-doc-fix later to maint).
   (merge f9b2b6684d ja/doc-cleanup later to maint).
   (merge 7d1b866778 jc/fix-first-object-walk later to maint).
   (merge 538ac74604 js/trace2-avoid-recursive-errors later to maint).
   (merge 152923b132 jk/t5319-midx-corruption-test-deflake later to maint).
   (merge 9081a421a6 ab/checkout-branch-info-leakfix later to maint).
   (merge 42c456ff81 rs/mergesort later to maint).
   (merge ad506e6780 tl/midx-docfix later to maint).
   (merge bf5b83fd8a hk/ci-checkwhitespace-commentfix later to maint).
   (merge 49f1eb3b34 jk/refs-g11-workaround later to maint).
   (merge 7d3fc7df70 jt/midx-doc-fix later to maint).
   (merge 7b089120d9 hn/create-reflog-simplify later to maint).
   (merge 9e12400da8 cb/mingw-gmtime-r later to maint).
   (merge 0bf0de6cc7 tb/pack-revindex-on-disk-cleanup later to maint).
   (merge 2c68f577fc ew/cbtree-remove-unused-and-broken-cb-unlink later to maint).
   (merge eafd6e7e55 ab/die-with-bug later to maint).
   (merge 91028f7659 jc/grep-patterntype-default-doc later to maint).
   (merge 47ca93d071 ds/repack-fixlets later to maint).
   (merge e6a9bc0c60 rs/t4202-invert-grep-test-fix later to maint).
   (merge deb5407a42 gh/gpg-doc-markup-fix later to maint).
   (merge 999bba3e0b rs/daemon-plug-leak later to maint).
   (merge 786eb1ba39 js/l10n-mention-ngettext-early-in-readme later to maint).
   (merge 2f12b31b74 ab/makefile-msgfmt-wo-stats later to maint).
   (merge 0517f591ca fs/gpg-unknown-key-test-fix later to maint).
   (merge 97d6fb5a1f ma/header-dup-cleanup later to maint).

Revision 1.114 / (download) - annotate - [select for diffs], Sun Nov 28 16:25:24 2021 UTC (22 months ago) by adam
Branch: MAIN
CVS Tags: pkgsrc-2021Q4-base, pkgsrc-2021Q4
Changes since 1.113: +4 -4 lines
Diff to previous 1.113 (colored)

git: updated to 2.34.1

Git v2.34.1 Release Notes
=========================

This release is primarily to fix a handful of regressions in Git 2.34.

Fixes since v2.34
-----------------

 * "git grep" looking in a blob that has non-UTF8 payload was
   completely broken when linked with certain versions of PCREv2
   library in the latest release.

 * "git pull" with any strategy when the other side is behind us
   should succeed as it is a no-op, but doesn't.

 * An earlier change in 2.34.0 caused JGit application (that abused
   GIT_EDITOR mechanism when invoking "git config") to get stuck with
   a SIGTTOU signal; it has been reverted.

 * An earlier change that broke .gitignore matching has been reverted.

 * SubmittingPatches document gained a syntactically incorrect mark-up,
   which has been corrected.

Revision 1.113 / (download) - annotate - [select for diffs], Wed Nov 17 09:01:40 2021 UTC (22 months, 2 weeks ago) by adam
Branch: MAIN
Changes since 1.112: +4 -4 lines
Diff to previous 1.112 (colored)

git: updated to 2.34.0

Git 2.34 Release Notes
======================

Updates since Git 2.33
----------------------

Backward compatibility notes

 * The "--preserve-merges" option of "git rebase" has been removed.


UI, Workflows & Features

 * Pathname expansion (like "~username/") learned a way to specify a
   location relative to Git installation (e.g. its $sharedir which is
   $(prefix)/share), with "%(prefix)".

 * The `ort` strategy is used instead of `recursive` as the default
   merge strategy.

 * The userdiff pattern for "java" language has been updated.

 * "git rebase" by default skips changes that are equivalent to
   commits that are already in the history the branch is rebased onto;
   give messages when this happens to let the users be aware of
   skipped commits, and also teach them how to tell "rebase" to keep
   duplicated changes.

 * The advice message that "git cherry-pick" gives when it asks
   conflicted replay of a commit to be resolved by the end user has
   been updated.

 * After "git clone --recurse-submodules", all submodules are cloned
   but they are not by default recursed into by other commands.  With
   submodule.stickyRecursiveClone configuration set, submodule.recurse
   configuration is set to true in a repository created by "clone"
   with "--recurse-submodules" option.

 * The logic for auto-correction of misspelt subcommands learned to go
   interactive when the help.autocorrect configuration variable is set
   to 'prompt'.

 * "git maintenance" scheduler learned to use systemd timers as a
   possible backend.

 * "git diff --submodule=diff" showed failure from run_command() when
   trying to run diff inside a submodule, when the user manually
   removes the submodule directory.

 * "git bundle unbundle" learned to show progress display.

 * In cone mode, the sparse-index code path learned to remove ignored
   files (like build artifacts) outside the sparse cone, allowing the
   entire directory outside the sparse cone to be removed, which is
   especially useful when the sparse patterns change.

 * Taking advantage of the CGI interface, http-backend has been
   updated to enable protocol v2 automatically when the other side
   asks for it.

 * The credential-cache helper has been adjusted to Windows.

 * The error in "git help no-such-git-command" is handled better.

 * The unicode character width table (used for output alignment) has
   been updated.

 * The ref iteration code used to optionally allow dangling refs to be
   shown, which has been tightened up.

 * "git add", "git mv", and "git rm" have been adjusted to avoid
   updating paths outside of the sparse-checkout definition unless
   the user specifies a "--sparse" option.

 * "git repack" has been taught to generate multi-pack reachability
   bitmaps.

 * "git fsck" has been taught to report mismatch between expected and
   actual types of an object better.

 * In addition to GnuPG, ssh public crypto can be used for object and
   push-cert signing.  Note that this feature cannot be used with
   ssh-keygen from OpenSSH 8.7, whose support for it is broken.  Avoid
   using it unless you update to OpenSSH 8.8.

 * "git log --grep=string --author=name" learns to highlight hits just
   like "git grep string" does.



Performance, Internal Implementation, Development Support etc.

 * "git bisect" spawned "git show-branch" only to pretty-print the
   title of the commit after checking out the next version to be
   tested; this has been rewritten in C.

 * "git add" can work better with the sparse index.

 * Support for ancient versions of cURL library (pre 7.19.4) has been
   dropped.

 * A handful of tests that assumed implementation details of files
   backend for refs have been cleaned up.

 * trace2 logs learned to show parent process name to see in what
   context Git was invoked.

 * Loading of ref tips to prepare for common ancestry negotiation in
   "git fetch-pack" has been optimized by taking advantage of the
   commit graph when available.

 * Remind developers that the userdiff patterns should be kept simple
   and permissive, assuming that the contents they apply are always
   syntactically correct.

 * The current implementation of GIT_TEST_FAIL_PREREQS is broken in
   that checking for the lack of a prerequisite would not work.  Avoid
   the use of "if ! test_have_prereq X" in a test script.

 * The revision traversal API has been optimized by taking advantage
   of the commit-graph, when available, to determine if a commit is
   reachable from any of the existing refs.

 * "git fetch --quiet" optimization to avoid useless computation of
   info that will never be displayed.

 * Callers from older advice_config[] based API has been updated to
   use the newer advice_if_enabled() and advice_enabled() API.

 * Teach "test_pause" and "debug" helpers to allow using the HOME and
   TERM environment variables the user usually uses.

 * "make INSTALL_STRIP=-s install" allows the installation step to use
   "install -s" to strip the binaries as they get installed.

 * Code that handles large number of refs in the "git fetch" code
   path has been optimized.

 * The reachability bitmap file used to be generated only for a single
   pack, but now we've learned to generate bitmaps for history that
   span across multiple packfiles.

 * The code to make "git grep" recurse into submodules has been
   updated to migrate away from the "add submodule's object store as
   an alternate object store" mechanism (which is suboptimal).

 * The tracing of process ancestry information has been enhanced.

 * Reduce number of write(2) system calls while sending the
   ref advertisement.

 * Update the build procedure to use the "-pedantic" build when
   DEVELOPER makefile macro is in effect.

 * Large part of "git submodule add" gets rewritten in C.

 * The run-command API has been updated so that the callers can easily
   ask the file descriptors open for packfiles to be closed immediately
   before spawning commands that may trigger auto-gc.

 * An oddball OPTION_ARGUMENT feature has been removed from the
   parse-options API.

 * The mergesort implementation used to sort linked list has been
   optimized.

 * Remove external declaration of functions that no longer exist.

 * "git multi-pack-index write --bitmap" learns to propagate the
   hashcache from original bitmap to resulting bitmap.

 * CI learns to run the leak sanitizer builds.

 * "git grep --recurse-submodules" takes trees and blobs from the
   submodule repository, but the textconv settings when processing a
   blob from the submodule is not taken from the submodule repository.
   A test is added to demonstrate the issue, without fixing it.

 * Teach "git help -c" into helping the command line completion of
   configuration variables.

 * When "git cmd -h" shows more than one line of usage text (e.g.
   the cmd subcommand may take sub-sub-command), parse-options API
   learned to align these lines, even across i18n/l10n.

 * Prevent "make sparse" from running for the source files that
   haven't been modified.

 * The code path to write a new version of .midx multi-pack index files
   has learned to release the mmaped memory holding the current
   version of .midx before removing them from the disk, as some
   platforms do not allow removal of a file that still has mapping.

 * A new feature has been added to abort early in the test framework.


Fixes since v2.33
-----------------

 * Input validation of "git pack-objects --stdin-packs" has been
   corrected.

 * Bugfix for common ancestor negotiation recently introduced in "git
   push" code path.

 * "git pull" had various corner cases that were not well thought out
   around its --rebase backend, e.g. "git pull --ff-only" did not stop
   but went ahead and rebased when the history on other side is not a
   descendant of our history.  The series tries to fix them up.

 * "git apply" miscounted the bytes and failed to read to the end of
   binary hunks.

 * "git range-diff" code clean-up.

 * "git commit --fixup" now works with "--edit" again, after it was
   broken in v2.32.

 * Use upload-artifacts v1 (instead of v2) for 32-bit linux, as the
   new version has a blocker bug for that architecture.

 * Checking out all the paths from HEAD during the last conflicted
   step in "git rebase" and continuing would cause the step to be
   skipped (which is expected), but leaves MERGE_MSG file behind in
   $GIT_DIR and confuses the next "git commit", which has been
   corrected.

 * Various bugs in "git rebase -r" have been fixed.

 * mmap() imitation used to call xmalloc() that dies upon malloc()
   failure, which has been corrected to just return an error to the
   caller to be handled.

 * "git diff --relative" segfaulted and/or produced incorrect result
   when there are unmerged paths.

 * The delayed checkout code path in "git checkout" etc. were chatty
   even when --quiet and/or --no-progress options were given.

 * "git branch -D <branch>" used to refuse to remove a broken branch
   ref that points at a missing commit, which has been corrected.

 * Build update for Apple clang.

 * The parser for the "--nl" option of "git column" has been
   corrected.

 * "git upload-pack" which runs on the other side of "git fetch"
   forgot to take the ref namespaces into account when handling
   want-ref requests.

 * The sparse-index support can corrupt the index structure by storing
   a stale and/or uninitialized data, which has been corrected.

 * Buggy tests could damage repositories outside the throw-away test
   area we created.  We now by default export GIT_CEILING_DIRECTORIES
   to limit the damage from such a stray test.

 * Even when running "git send-email" without its own threaded
   discussion support, a threading related header in one message is
   carried over to the subsequent message to result in an unwanted
   threading, which has been corrected.

 * The output from "git fast-export", when its anonymization feature
   is in use, showed an annotated tag incorrectly.

 * Recent "diff -m" changes broke "gitk", which has been corrected.

 * The "git apply -3" code path learned not to bother the lower level
   merge machinery when the three-way merge can be trivially resolved
   without the content level merge.  This fixes a regression caused by
   recent "-3way first and fall back to direct application" change.

 * The code that optionally creates the *.rev reverse index file has
   been optimized to avoid needless computation when it is not writing
   the file out.

 * "git range-diff -I... <range> <range>" segfaulted, which has been
   corrected.

 * The order in which various files that make up a single (conceptual)
   packfile has been reevaluated and straightened up.  This matters in
   correctness, as an incomplete set of files must not be shown to a
   running Git.

 * The "mode" word is useless in a call to open(2) that does not
   create a new file.  Such a call in the files backend of the ref
   subsystem has been cleaned up.

 * "git update-ref --stdin" failed to flush its output as needed,
   which potentially led the conversation to a deadlock.

 * When "git am --abort" fails to abort correctly, it still exited
   with exit status of 0, which has been corrected.

 * Correct nr and alloc members of strvec struct to be of type size_t.

 * "git stash", where the tentative change involves changing a
   directory to a file (or vice versa), was confused, which has been
   corrected.

 * "git clone" from a repository whose HEAD is unborn into a bare
   repository didn't follow the branch name the other side used, which
   is corrected.

 * "git cvsserver" had a long-standing bug in its authentication code,
   which has finally been corrected (it is unclear and is a separate
   question if anybody is seriously using it, though).

 * "git difftool --dir-diff" mishandled symbolic links.

 * Sensitive data in the HTTP trace were supposed to be redacted, but
   we failed to do so in HTTP/2 requests.

 * "make clean" has been updated to remove leftover .depend/
   directories, even when it is not told to use them to compute header
   dependencies.

 * Protocol v0 clients can get stuck parsing a malformed feature line.

 * A few kinds of changes "git status" can show were not documented.
   (merge d2a534c515 ja/doc-status-types-and-copies later to maint).

 * The mergesort implementation used to sort linked list has been
   optimized.
   (merge c90cfc225b rs/mergesort later to maint).

 * An editor session launched during a Git operation (e.g. during 'git
   commit') can leave the terminal in a funny state.  The code path
   has updated to save the terminal state before, and restore it
   after, it spawns an editor.
   (merge 3d411afabc cm/save-restore-terminal later to maint).

 * "git cat-file --batch" with the "--batch-all-objects" option is
   supposed to iterate over all the objects found in a repository, but
   it used to translate these object names using the replace mechanism,
   which defeats the point of enumerating all objects in the repository.
   This has been corrected.
   (merge bf972896d7 jk/cat-file-batch-all-wo-replace later to maint).

 * Recent sparse-index work broke safety against attempts to add paths
   with trailing slashes to the index, which has been corrected.
   (merge c8ad9d04c6 rs/make-verify-path-really-verify-again later to maint).

 * The "--color-lines" and "--color-by-age" options of "git blame"
   have been missing, which are now documented.
   (merge 8c32856133 bs/doc-blame-color-lines later to maint).

 * The PATH used in CI job may be too wide and let incompatible dlls
   to be grabbed, which can cause the build&test to fail.  Tighten it.
   (merge 7491ef6198 js/windows-ci-path-fix later to maint).

 * Avoid performance measurements from getting ruined by gc and other
   housekeeping pauses interfering in the middle.
   (merge be79131a53 rs/disable-gc-during-perf-tests later to maint).

 * Stop "git add --dry-run" from creating new blob and tree objects.
   (merge e578d0311d rs/add-dry-run-without-objects later to maint).

 * "git commit" gave duplicated error message when the object store
   was unwritable, which has been corrected.
   (merge 4ef91a2d79 ab/fix-commit-error-message-upon-unwritable-object-store later to maint).

 * Recent sparse-index addition, namely any use of index_name_pos(),
   can expand sparse index entries and breaks any code that walks
   cache-tree or existing index entries.  One such instance of such a
   breakage has been corrected.

 * The xxdiff difftool backend can exit with status 128, which the
   difftool-helper that launches the backend takes as a significant
   failure, when it is not significant at all.  Work it around.
   (merge 571f4348dd da/mergetools-special-case-xxdiff-exit-128 later to maint).

 * Improve test framework around unwritable directories.
   (merge 5d22e18965 ab/test-cleanly-recreate-trash-directory later to maint).

 * "git push" client talking to an HTTP server did not diagnose the
   lack of the final status report from the other side correctly,
   which has been corrected.
   (merge c5c3486f38 jk/http-push-status-fix later to maint).

 * Update "git archive" documentation and give explicit mention on the
   compression level for both zip and tar.gz format.
   (merge c4b208c309 bs/archive-doc-compression-level later to maint).

 * Drop "git sparse-checkout" from the list of common commands.
   (merge 6a9a50a8af sg/sparse-index-not-that-common-a-command later to maint).

 * "git branch -c/-m new old" was not described to copy config, which
   has been corrected.
   (merge 8252ec300e jc/branch-copy-doc later to maint).

 * Squelch over-eager warning message added during this cycle.

 * Fix long-standing shell syntax error in the completion script.
   (merge 46b0585286 re/completion-fix-test-equality later to maint).

 * Teach "git commit-graph" command not to allow using replace objects
   at all, as we do not use the commit-graph at runtime when we see
   object replacement.
   (merge 095d112f8c ab/ignore-replace-while-working-on-commit-graph later to maint).

 * "git pull --no-verify" did not affect the underlying "git merge".
   (merge 47bfdfb3fd ar/fix-git-pull-no-verify later to maint).

 * One CI task based on Fedora image noticed a not-quite-kosher
   construct recently, which has been corrected.

 * "git pull --ff-only" and "git pull --rebase --ff-only" should make
   it a no-op to attempt pulling from a remote that is behind us, but
   instead the command errored out by saying it was impossible to
   fast-forward, which may technically be true, but not a useful thing
   to diagnose as an error.  This has been corrected.
   (merge 361cb52383 jc/fix-pull-ff-only-when-already-up-to-date later to maint).

 * The way Cygwin emulates a unix-domain socket, on top of which the
   simple-ipc mechanism is implemented, can race with the program on
   the other side that wants to use the socket, and briefly make it
   appear as a regular file before lstat(2) starts reporting it as a
   socket.  We now have a workaround on the side that connects to a
   unix domain socket.

 * Other code cleanup, docfix, build fix, etc.
   (merge f188160be9 ab/bundle-remove-verbose-option later to maint).
   (merge 8c6b4332b4 rs/close-pack-leakfix later to maint).
   (merge 51b04c05b7 bs/difftool-msg-tweak later to maint).
   (merge dd20e4a6db ab/make-compdb-fix later to maint).
   (merge 6ffb990dc4 os/status-docfix later to maint).
   (merge 100c2da2d3 rs/p3400-lose-tac later to maint).
   (merge 76f3b69896 tb/aggregate-ignore-leading-whitespaces later to maint).
   (merge 6e4fd8bfcd tz/doc-link-to-bundle-format-fix later to maint).
   (merge f6c013dfa1 jc/doc-commit-header-continuation-line later to maint).
   (merge ec9a37d69b ab/pkt-line-cleanup later to maint).
   (merge 8650c6298c ab/fix-make-lint-docs later to maint).
   (merge 1c720357ce ab/test-lib-diff-cleanup later to maint).
   (merge 6b615dbece ks/submodule-add-message-fix later to maint).
   (merge 203eb8381a jc/doc-format-patch-clarify-auto-base later to maint).
   (merge 559664c792 ab/test-lib later to maint).

Revision 1.112 / (download) - annotate - [select for diffs], Tue Oct 26 10:14:42 2021 UTC (23 months, 1 week ago) by nia
Branch: MAIN
Changes since 1.111: +2 -2 lines
Diff to previous 1.111 (colored)

archivers: Replace RMD160 checksums with BLAKE2s checksums

All checksums have been double-checked against existing RMD160 and
SHA512 hashes

Could not be committed due to merge conflict:
devel/py-traitlets/distinfo

The following distfiles were unfetchable (note: some may be only fetched
conditionally):

./devel/pvs/distinfo pvs-3.2-solaris.tgz
./devel/eclipse/distinfo eclipse-sourceBuild-srcIncluded-3.0.1.zip

Revision 1.111 / (download) - annotate - [select for diffs], Wed Oct 13 06:56:09 2021 UTC (23 months, 2 weeks ago) by adam
Branch: MAIN
Changes since 1.110: +4 -4 lines
Diff to previous 1.110 (colored)

git: updated to 2.33.1

Git 2.33.1 Release Notes
========================

This primarily is to backport various fixes accumulated during the
development towards Git 2.34, the next feature release.


Fixes since v2.33
-----------------

 * The unicode character width table (used for output alignment) has
   been updated.

 * Input validation of "git pack-objects --stdin-packs" has been
   corrected.

 * Bugfix for common ancestor negotiation recently introduced in "git
   push" codepath.

 * "git pull" had various corner cases that were not well thought out
   around its --rebase backend, e.g. "git pull --ff-only" did not stop
   but went ahead and rebased when the history on other side is not a
   descendant of our history.  The series tries to fix them up.

 * "git apply" miscounted the bytes and failed to read to the end of
   binary hunks.

 * "git range-diff" code clean-up.

 * "git commit --fixup" now works with "--edit" again, after it was
   broken in v2.32.

 * Use upload-artifacts v1 (instead of v2) for 32-bit linux, as the
   new version has a blocker bug for that architecture.

 * Checking out all the paths from HEAD during the last conflicted
   step in "git rebase" and continuing would cause the step to be
   skipped (which is expected), but leaves MERGE_MSG file behind in
   $GIT_DIR and confuses the next "git commit", which has been
   corrected.

 * Various bugs in "git rebase -r" have been fixed.

 * mmap() imitation used to call xmalloc() that dies upon malloc()
   failure, which has been corrected to just return an error to the
   caller to be handled.

 * "git diff --relative" segfaulted and/or produced incorrect result
   when there are unmerged paths.

 * The delayed checkout code path in "git checkout" etc. were chatty
   even when --quiet and/or --no-progress options were given.

 * "git branch -D <branch>" used to refuse to remove a broken branch
   ref that points at a missing commit, which has been corrected.

 * Build update for Apple clang.

 * The parser for the "--nl" option of "git column" has been
   corrected.

 * "git upload-pack" which runs on the other side of "git fetch"
   forgot to take the ref namespaces into account when handling
   want-ref requests.

 * The sparse-index support can corrupt the index structure by storing
   a stale and/or uninitialized data, which has been corrected.

 * Buggy tests could damage repositories outside the throw-away test
   area we created.  We now by default export GIT_CEILING_DIRECTORIES
   to limit the damage from such a stray test.

 * Even when running "git send-email" without its own threaded
   discussion support, a threading related header in one message is
   carried over to the subsequent message to result in an unwanted
   threading, which has been corrected.

 * The output from "git fast-export", when its anonymization feature
   is in use, showed an annotated tag incorrectly.

 * Recent "diff -m" changes broke "gitk", which has been corrected.

 * "git maintenance" scheduler fix for macOS.

 * A pathname in an advice message has been made cut-and-paste ready.

 * The "git apply -3" code path learned not to bother the lower level
   merge machinery when the three-way merge can be trivially resolved
   without the content level merge.

 * The code that optionally creates the *.rev reverse index file has
   been optimized to avoid needless computation when it is not writing
   the file out.

 * "git range-diff -I... <range> <range>" segfaulted, which has been
   corrected.

 * The order in which various files that make up a single (conceptual)
   packfile has been reevaluated and straightened up.  This matters in
   correctness, as an incomplete set of files must not be shown to a
   running Git.

 * The "mode" word is useless in a call to open(2) that does not
   create a new file.  Such a call in the files backend of the ref
   subsystem has been cleaned up.

 * "git update-ref --stdin" failed to flush its output as needed,
   which potentially led the conversation to a deadlock.

 * When "git am --abort" fails to abort correctly, it still exited
   with exit status of 0, which has been corrected.

 * Correct nr and alloc members of strvec struct to be of type size_t.

 * "git stash", where the tentative change involves changing a
   directory to a file (or vice versa), was confused, which has been
   corrected.

 * "git clone" from a repository whose HEAD is unborn into a bare
   repository didn't follow the branch name the other side used, which
   is corrected.

 * "git cvsserver" had a long-standing bug in its authentication code,
   which has finally been corrected (it is unclear and is a separate
   question if anybody is seriously using it, though).

 * "git difftool --dir-diff" mishandled symbolic links.

 * Sensitive data in the HTTP trace were supposed to be redacted, but
   we failed to do so in HTTP/2 requests.

 * "make clean" has been updated to remove leftover .depend/
   directories, even when it is not told to use them to compute header
   dependencies.

 * Protocol v0 clients can get stuck parsing a malformed feature line.

Also contains various documentation updates and code clean-ups.

Revision 1.110 / (download) - annotate - [select for diffs], Thu Oct 7 13:39:36 2021 UTC (23 months, 3 weeks ago) by nia
Branch: MAIN
Changes since 1.109: +1 -2 lines
Diff to previous 1.109 (colored)

devel: Remove SHA1 hashes for distfiles

Revision 1.109 / (download) - annotate - [select for diffs], Mon Aug 23 10:41:25 2021 UTC (2 years, 1 month ago) by adam
Branch: MAIN
CVS Tags: pkgsrc-2021Q3-base, pkgsrc-2021Q3
Changes since 1.108: +5 -5 lines
Diff to previous 1.108 (colored)

git: updated to 2.33.0

Git 2.33 Release Notes
======================

Updates since Git 2.32
----------------------

UI, Workflows & Features

 * "git send-email" learned the "--sendmail-cmd" command line option
   and the "sendemail.sendmailCmd" configuration variable, which is a
   more sensible approach than the current way of repurposing the
   "smtp-server" that is meant to name the server to instead name the
   command to talk to the server.

 * The userdiff pattern for C# learned the token "record".

 * "git rev-list" learns to omit the "commit <object-name>" header
   lines from the output with the `--no-commit-header` option.

 * "git worktree add --lock" learned to record why the worktree is
   locked with a custom message.


Performance, Internal Implementation, Development Support etc.

 * The code to handle the "--format" option in "for-each-ref" and
   friends made too many string comparisons on %(atom)s used in the
   format string, which has been corrected by converting them into
   enum when the format string is parsed.

 * Use the hashfile API in the codepath that writes the index file to
   reduce code duplication.

 * Repeated rename detections in a sequence of mergy operations have
   been optimized out for the 'ort' merge strategy.

 * Preliminary clean-up of tests before the main reftable changes
   hits the codebase.

 * The backend for "diff -G/-S" has been updated to use pcre2 engine
   when available.

 * Use ".DELETE_ON_ERROR" pseudo target to simplify our Makefile.

 * Code cleanup around struct_type_init() functions.

 * "git send-email" optimization.

 * GitHub Actions / CI update.
   (merge 0dc787a9f2 js/ci-windows-update later to maint).

 * Object accesses in repositories with many alternate object store
   have been optimized.

 * "git log" has been optimized not to waste cycles to load ref
   decoration data that may not be needed.

 * Many "printf"-like helper functions we have have been annotated
   with __attribute__() to catch placeholder/parameter mismatches.

 * Tests that cover protocol bits have been updated and helpers
   used there have been consolidated.

 * The CI gained a new job to run "make sparse" check.

 * "git status" codepath learned to work with sparsely populated index
   without hydrating it fully.

 * A guideline for gender neutral documentation has been added.

 * Documentation on "git diff -l<n>" and diff.renameLimit have been
   updated, and the defaults for these limits have been raised.

 * The completion support used to offer alternate spelling of options
   that exist only for compatibility, which has been corrected.

 * "TEST_OUTPUT_DIRECTORY=there make test" failed to work, which has
   been corrected.

 * "git bundle" gained more test coverage.

 * "git read-tree" had a codepath where blobs are fetched one-by-one
   from the promisor remote, which has been corrected to fetch in bulk.

 * Rewrite of "git submodule" in C continues.

 * "git checkout" and "git commit" learn to work without unnecessarily
   expanding sparse indexes.


Fixes since v2.32
-----------------

 * We historically rejected a very short string as an author name
   while accepting a patch e-mail, which has been loosened.
   (merge 72ee47ceeb ef/mailinfo-short-name later to maint).

 * The parallel checkout codepath did not initialize object ID field
   used to talk to the worker processes in a futureproof way.

 * Rewrite code that triggers undefined behaviour warning.
   (merge aafa5df0df jn/size-t-casted-to-off-t-fix later to maint).

 * The description of "fast-forward" in the glossary has been updated.
   (merge e22f2daed0 ry/clarify-fast-forward-in-glossary later to maint).

 * Recent "git clone" left a temporary directory behind when the
   transport layer returned an failure.
   (merge 6aacb7d861 jk/clone-clean-upon-transport-error later to maint).

 * "git fetch" over protocol v2 left its side of the socket open after
   it finished speaking, which unnecessarily wasted the resource on
   the other side.
   (merge ae1a7eefff jk/fetch-pack-v2-half-close-early later to maint).

 * The command line completion (in contrib/) learned that "git diff"
   takes the "--anchored" option.
   (merge d1e7c2cac9 tb/complete-diff-anchored later to maint).

 * "git-svn" tests assumed that "locale -a", which is used to pick an
   available UTF-8 locale, is available everywhere.  A knob has been
   introduced to allow testers to specify a suitable locale to use.
   (merge 482c962de4 dd/svn-test-wo-locale-a later to maint).

 * Update "git subtree" to work better on Windows.
   (merge 77f37de39f js/subtree-on-windows-fix later to maint).

 * Remove multimail from contrib/
   (merge f74d11471f js/no-more-multimail later to maint).

 * Make the codebase MSAN clean.
   (merge 4dbc55e87d ah/uninitialized-reads-fix later to maint).

 * Work around inefficient glob substitution in older versions of bash
   by rewriting parts of a test.
   (merge eb87c6f559 jx/t6020-with-older-bash later to maint).

 * Avoid duplicated work while building reachability bitmaps.
   (merge aa9ad6fee5 jk/bitmap-tree-optim later to maint).

 * We broke "GIT_SKIP_TESTS=t?000" to skip certain tests in recent
   update, which got fixed.

 * The side-band demultiplexer that is used to display progress output
   from the remote end did not clear the line properly when the end of
   line hits at a packet boundary, which has been corrected.

 * Some test scripts assumed that readlink(1) was universally
   installed and available, which is not the case.
   (merge 7c0afdf23c jk/test-without-readlink-1 later to maint).

 * Recent update to completion script (in contrib/) broke those who
   use the __git_complete helper to define completion to their custom
   command.
   (merge cea232194d fw/complete-cmd-idx-fix later to maint).

 * Output from some of our tests were affected by the width of the
   terminal that they were run in, which has been corrected by
   exporting a fixed value in the COLUMNS environment.
   (merge c49a177bec ab/fix-columns-to-80-during-tests later to maint).

 * On Windows, mergetool has been taught to find kdiff3.exe just like
   it finds winmerge.exe.
   (merge 47eb4c6890 ms/mergetools-kdiff3-on-windows later to maint).

 * When we cannot figure out how wide the terminal is, we use a
   fallback value of 80 ourselves (which cannot be avoided), but when
   we run the pager, we export it in COLUMNS, which forces the pager
   to use the hardcoded value, even when the pager is perfectly
   capable to figure it out itself.  Stop exporting COLUMNS when we
   fall back on the hardcoded default value for our own use.
   (merge 9b6e2c8b98 js/stop-exporting-bogus-columns later to maint).

 * "git cat-file --batch-all-objects"" misbehaved when "--batch" is in
   use and did not ask for certain object traits.
   (merge ee02ac6164 zh/cat-file-batch-fix later to maint).

 * Some code and doc clarification around "git push".

 * The "union" conflict resultion variant misbehaved when used with
   binary merge driver.
   (merge 382b601acd jk/union-merge-binary later to maint).

 * Prevent "git p4" from failing to submit changes to binary file.
   (merge 54662d5958 dc/p4-binary-submit-fix later to maint).

 * "git grep --and -e foo" ought to have been diagnosed as an error
   but instead segfaulted, which has been corrected.
   (merge fe7fe62d8d rs/grep-parser-fix later to maint).

 * The merge code had funny interactions between content based rename
   detection and directory rename detection.
   (merge 3585d0ea23 en/merge-dir-rename-corner-case-fix later to maint).

 * When rebuilding the multi-pack index file reusing an existing one,
   we used to blindly trust the existing file and ended up carrying
   corrupted data into the updated file, which has been corrected.
   (merge f89ecf7988 tb/midx-use-checksum later to maint).

 * Update the location of system-side configuration file on Windows.
   (merge e355307692 js/gfw-system-config-loc-fix later to maint).

 * Code recently added to support common ancestry negotiation during
   "git push" did not sanity check its arguments carefully enough.
   (merge eff40457a4 ab/fetch-negotiate-segv-fix later to maint).

 * Update the documentation not to assume users are of certain gender
   and adds to guidelines to do so.
   (merge 46a237f42f ds/gender-neutral-doc later to maint).

 * "git commit --allow-empty-message" won't abort the operation upon
   an empty message, but the hint shown in the editor said otherwise.
   (merge 6f70f00b4f hj/commit-allow-empty-message later to maint).

 * The code that gives an error message in "git multi-pack-index" when
   no subcommand is given tried to print a NULL pointer as a strong,
   which has been corrected.
   (merge 88617d11f9 tb/reverse-midx later to maint).

 * CI update.
   (merge a066a90db6 js/ci-check-whitespace-updates later to maint).

 * Documentation fix for "git pull --rebase=no".
   (merge d3236becec fc/pull-no-rebase-merges-theirs-into-ours later to maint).

 * A race between repacking and using pack bitmaps has been corrected.
   (merge dc1daacdcc jk/check-pack-valid-before-opening-bitmap later to maint).

 * The local changes stashed by "git merge --autostash" were lost when
   the merge failed in certain ways, which has been corrected.

 * Windows rmdir() equivalent behaves differently from POSIX ones in
   that when used on a symbolic link that points at a directory, the
   target directory gets removed, which has been corrected.
   (merge 3e7d4888e5 tb/mingw-rmdir-symlink-to-directory later to maint).

 * Other code cleanup, docfix, build fix, etc.
   (merge bfe35a6165 ah/doc-describe later to maint).
   (merge f302c1e4aa jc/clarify-revision-range later to maint).
   (merge 3127ff90ea tl/fix-packfile-uri-doc later to maint).
   (merge a84216c684 jk/doc-color-pager later to maint).
   (merge 4e0a64a713 ab/trace2-squelch-gcc-warning later to maint).
   (merge 225f7fa847 ps/rev-list-object-type-filter later to maint).
   (merge 5317dfeaed dd/honor-users-tar-in-tests later to maint).
   (merge ace6d8e3d6 tk/partial-clone-repack-doc later to maint).
   (merge 7ba68e0cf1 js/trace2-discard-event-docfix later to maint).
   (merge 8603c419d3 fc/doc-default-to-upstream-config later to maint).
   (merge 1d72b604ef jk/revision-squelch-gcc-warning later to maint).
   (merge abcb66c614 ar/typofix later to maint).
   (merge 9853830787 ah/graph-typofix later to maint).
   (merge aac578492d ab/config-hooks-path-testfix later to maint).
   (merge 98c7656a18 ar/more-typofix later to maint).
   (merge 6fb9195f6c jk/doc-max-pack-size later to maint).
   (merge 4184cbd635 ar/mailinfo-memcmp-to-skip-prefix later to maint).
   (merge 91d2347033 ar/doc-libera-chat-in-my-first-contrib later to maint).
   (merge 338abb0f04 ab/cmd-foo-should-return later to maint).
   (merge 546096a5cb ab/xdiff-bug-cleanup later to maint).
   (merge b7b793d1e7 ab/progress-cleanup later to maint).
   (merge d94f9b8e90 ba/object-info later to maint).
   (merge 52ff891c03 ar/test-code-cleanup later to maint).
   (merge a0538e5c8b dd/document-log-decorate-default later to maint).
   (merge ce24797d38 mr/cmake later to maint).
   (merge 9eb542f2ee ab/pre-auto-gc-hook-test later to maint).
   (merge 9fffc38583 bk/doc-commit-typofix later to maint).
   (merge 1cf823d8f0 ks/submodule-cleanup later to maint).
   (merge ebbf5d2b70 js/config-mak-windows-pcre-fix later to maint).
   (merge 617480d75b hn/refs-iterator-peel-returns-boolean later to maint).
   (merge 6a24cc71ed ar/submodule-helper-include-cleanup later to maint).
   (merge 5632e838f8 rs/khash-alloc-cleanup later to maint).
   (merge b1d87fbaf1 jk/typofix later to maint).
   (merge e04170697a ab/gitignore-discovery-doc later to maint).
   (merge 8232a0ff48 dl/packet-read-response-end-fix later to maint).
   (merge eb448631fb dl/diff-merge-base later to maint).
   (merge c510928a25 hn/refs-debug-empty-prefix later to maint).
   (merge ddcb189d9d tb/bitmap-type-filter-comment-fix later to maint).
   (merge 878b399734 pb/submodule-recurse-doc later to maint).
   (merge 734283855f jk/config-env-doc later to maint).
   (merge 482e1488a9 ab/getcwd-test later to maint).
   (merge f0b922473e ar/doc-markup-fix later to maint).

Revision 1.108 / (download) - annotate - [select for diffs], Sun Jun 13 18:36:31 2021 UTC (2 years, 3 months ago) by adam
Branch: MAIN
CVS Tags: pkgsrc-2021Q2-base, pkgsrc-2021Q2
Changes since 1.107: +5 -5 lines
Diff to previous 1.107 (colored)

git: updated to 2.32.0

Git 2.32 Release Notes
======================

Backward compatibility notes

Revision 1.107 / (download) - annotate - [select for diffs], Wed Mar 31 08:04:21 2021 UTC (2 years, 6 months ago) by adam
Branch: MAIN
Changes since 1.106: +5 -5 lines
Diff to previous 1.106 (colored)

git: updated to 2.31.1

Git 2.31.1 Release Notes
========================

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

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

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

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

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

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

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

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

Also contains various documentation updates and code clean-ups.


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

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

Backward incompatible and other important changes

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

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

 * The support for deprecated PCRE1 library has been dropped.

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


UI, Workflows & Features

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

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

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

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

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

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

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

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

 * "git log" learned a new "--diff-merges=<how>" option.

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

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

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

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

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

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

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

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

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

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

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

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

 * "git difftool" learned "--skip-to=<path>" option to restart an
   interrupted session from an arbitrary path.

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

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


Performance, Internal Implementation, Development Support etc.

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

 * Retire more names with "sha1" in it.

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

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

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

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

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

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

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

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

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

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

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

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

 * A perf script was made more portable.

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

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

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

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

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

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

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

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

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

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

 * Removal of GIT_TEST_GETTEXT_POISON continues.

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

 * Preliminary changes to fsmonitor integration.

 * Performance improvements for rename detection.

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

 * Doc fix for packfile URI feature.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

 * Other code cleanup, docfix, build fix, etc.
   (merge e3f5da7e60 sg/t7800-difftool-robustify later to maint).
   (merge 9d336655ba js/doc-proto-v2-response-end later to maint).
   (merge 1b5b8cf072 jc/maint-column-doc-typofix later to maint).
   (merge 3a837b58e3 cw/pack-config-doc later to maint).
   (merge 01168a9d89 ug/doc-commit-approxidate later to maint).
   (merge b865734760 js/params-vs-args later to maint).

Revision 1.106 / (download) - annotate - [select for diffs], Tue Mar 9 21:15:20 2021 UTC (2 years, 6 months ago) by leot
Branch: MAIN
CVS Tags: pkgsrc-2021Q1-base, pkgsrc-2021Q1
Changes since 1.105: +5 -5 lines
Diff to previous 1.105 (colored)

git: Update to 2.30.2

Changes:
2.30.2
======
This release addresses the security issues CVE-2021-21300.

 * CVE-2021-21300:
   On case-insensitive file systems with support for symbolic links,
   if Git is configured globally to apply delay-capable clean/smudge
   filters (such as Git LFS), Git could be fooled into running
   remote code during a clone.

Credit for finding and fixing this vulnerability goes to Matheus
Tavares, helped by Johannes Schindelin.

Revision 1.105 / (download) - annotate - [select for diffs], Tue Feb 9 06:45:06 2021 UTC (2 years, 7 months ago) by adam
Branch: MAIN
Changes since 1.104: +5 -5 lines
Diff to previous 1.104 (colored)

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.

Revision 1.104 / (download) - annotate - [select for diffs], Mon Jan 11 10:20:16 2021 UTC (2 years, 8 months ago) by adam
Branch: MAIN
Changes since 1.103: +5 -5 lines
Diff to previous 1.103 (colored)

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

Revision 1.103 / (download) - annotate - [select for diffs], Sat Oct 31 21:10:01 2020 UTC (2 years, 11 months ago) by adam
Branch: MAIN
CVS Tags: pkgsrc-2020Q4-base, pkgsrc-2020Q4
Changes since 1.102: +5 -5 lines
Diff to previous 1.102 (colored)

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

Revision 1.102 / (download) - annotate - [select for diffs], Wed Jul 29 07:47:51 2020 UTC (3 years, 2 months ago) by adam
Branch: MAIN
CVS Tags: pkgsrc-2020Q3-base, pkgsrc-2020Q3
Changes since 1.101: +5 -5 lines
Diff to previous 1.101 (colored)

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

Revision 1.101 / (download) - annotate - [select for diffs], Wed Jun 3 14:06:47 2020 UTC (3 years, 4 months ago) by adam
Branch: MAIN
CVS Tags: pkgsrc-2020Q2-base, pkgsrc-2020Q2
Changes since 1.100: +5 -6 lines
Diff to previous 1.100 (colored)

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.

Revision 1.97.2.2 / (download) - annotate - [select for diffs], Wed May 6 09:53:00 2020 UTC (3 years, 4 months ago) by bsiegert
Branch: pkgsrc-2020Q1
Changes since 1.97.2.1: +5 -5 lines
Diff to previous 1.97.2.1 (colored) to branchpoint 1.97 (colored) next main 1.98 (colored)

Pullup ticket #6181 - requested by leot
devel/git-base: security fix

(via patch)

---
   git: Update to 2.25.4

   Changes:
   2.25.4
   ------
   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.

Revision 1.100 / (download) - annotate - [select for diffs], Mon Apr 20 20:03:32 2020 UTC (3 years, 5 months ago) by leot
Branch: MAIN
Changes since 1.99: +5 -5 lines
Diff to previous 1.99 (colored)

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.

Revision 1.97.2.1 / (download) - annotate - [select for diffs], Fri Apr 17 12:20:48 2020 UTC (3 years, 5 months ago) by bsiegert
Branch: pkgsrc-2020Q1
Changes since 1.97: +5 -5 lines
Diff to previous 1.97 (colored)

Pullup ticket #6159 - requested by leot
devel/git-base: security fix

(via patch)

---
   git: Update to 2.25.3

   Changes:
   2.25.3
   ------
   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.

Revision 1.99 / (download) - annotate - [select for diffs], Tue Apr 14 18:27:31 2020 UTC (3 years, 5 months ago) by leot
Branch: MAIN
Changes since 1.98: +5 -5 lines
Diff to previous 1.98 (colored)

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.

Revision 1.98 / (download) - annotate - [select for diffs], Thu Apr 2 07:46:42 2020 UTC (3 years, 6 months ago) by adam
Branch: MAIN
Changes since 1.97: +5 -5 lines
Diff to previous 1.97 (colored)

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.

Revision 1.97 / (download) - annotate - [select for diffs], Thu Mar 19 22:30:30 2020 UTC (3 years, 6 months ago) by rillig
Branch: MAIN
CVS Tags: pkgsrc-2020Q1-base
Branch point for: pkgsrc-2020Q1
Changes since 1.96: +2 -2 lines
Diff to previous 1.96 (colored)

devel/git-base: fix typo in patch

Revision 1.96 / (download) - annotate - [select for diffs], Thu Mar 19 17:08:06 2020 UTC (3 years, 6 months ago) by adam
Branch: MAIN
Changes since 1.95: +5 -5 lines
Diff to previous 1.95 (colored)

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.

Revision 1.95 / (download) - annotate - [select for diffs], Mon Feb 24 16:08:10 2020 UTC (3 years, 7 months ago) by adam
Branch: MAIN
Changes since 1.94: +5 -5 lines
Diff to previous 1.94 (colored)

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.

Revision 1.94 / (download) - annotate - [select for diffs], Mon Jan 20 20:07:40 2020 UTC (3 years, 8 months ago) by adam
Branch: MAIN
Changes since 1.93: +5 -5 lines
Diff to previous 1.93 (colored)

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.

Revision 1.90.2.1 / (download) - annotate - [select for diffs], Thu Dec 12 11:50:51 2019 UTC (3 years, 9 months ago) by bsiegert
Branch: pkgsrc-2019Q3
Changes since 1.90: +5 -5 lines
Diff to previous 1.90 (colored) next main 1.91 (colored)

Pullup ticket #6099 - requested by leot
devel/git: security fix (update to 2.23.1)

Via patch.

---
   Changes:
   2.23.1
   ======
   This release merges up the fixes that appear in v2.14.6, v2.15.4,
   v2.17.3, v2.20.2 and in v2.21.1, addressing the security issues
   CVE-2019-1348, CVE-2019-1349, CVE-2019-1350, CVE-2019-1351,
   CVE-2019-1352, CVE-2019-1353, CVE-2019-1354, CVE-2019-1387, and
   CVE-2019-19604.

    * CVE-2019-1348:
      The --export-marks option of git fast-import is exposed also via
      the in-stream command feature export-marks=... and it allows
      overwriting arbitrary paths.

    * CVE-2019-1349:
      When submodules are cloned recursively, under certain circumstances
      Git could be fooled into using the same Git directory twice. We now
      require the directory to be empty.

    * CVE-2019-1350:
      Incorrect quoting of command-line arguments allowed remote code
      execution during a recursive clone in conjunction with SSH URLs.

    * CVE-2019-1351:
      While the only permitted drive letters for physical drives on
      Windows are letters of the US-English alphabet, this restriction
      does not apply to virtual drives assigned via subst <letter>:
      <path>. Git mistook such paths for relative paths, allowing writing
      outside of the worktree while cloning.

    * CVE-2019-1352:
      Git was unaware of NTFS Alternate Data Streams, allowing files
      inside the .git/ directory to be overwritten during a clone.

    * CVE-2019-1353:
      When running Git in the Windows Subsystem for Linux (also known as
      "WSL") while accessing a working directory on a regular Windows
      drive, none of the NTFS protections were active.

    * CVE-2019-1354:
      Filenames on Linux/Unix can contain backslashes. On Windows,
      backslashes are directory separators. Git did not use to refuse to
      write out tracked files with such filenames.

    * CVE-2019-1387:
      Recursive clones are currently affected by a vulnerability that is
      caused by too-lax validation of submodule names, allowing very
      targeted attacks via remote code execution in recursive clones.

   Credit for finding these vulnerabilities goes to Microsoft Security
   Response Center, in particular to Nicolas Joly. The `fast-import`
   fixes were provided by Jeff King, the other fixes by Johannes
   Schindelin with help from Garima Singh.

    * CVE-2019-19604:
      The change to disallow `submodule.<name>.update=!command` entries in
      `.gitmodules` which was introduced v2.15.4 (and for which v2.17.3
      added explicit fsck checks) fixes the vulnerability in v2.20.x where
      a recursive clone followed by a submodule update could execute code
      contained within the repository without the user explicitly having
      asked for that.

   Credit for finding this vulnerability goes to Joern Schneeweisz,
   credit for the fixes goes to Jonathan Nieder.

Revision 1.93 / (download) - annotate - [select for diffs], Tue Dec 10 18:32:38 2019 UTC (3 years, 9 months ago) by leot
Branch: MAIN
CVS Tags: pkgsrc-2019Q4-base, pkgsrc-2019Q4
Changes since 1.92: +5 -5 lines
Diff to previous 1.92 (colored)

git: Update to 2.24.1

Changes:
2.24.1
======

This release merges up the fixes that appear in v2.14.6, v2.15.4,
v2.17.3, v2.20.2 and in v2.21.1, addressing the security issues
CVE-2019-1348, CVE-2019-1349, CVE-2019-1350, CVE-2019-1351,
CVE-2019-1352, CVE-2019-1353, CVE-2019-1354, CVE-2019-1387, and
CVE-2019-19604.

 * CVE-2019-1348:
   The --export-marks option of git fast-import is exposed also via
   the in-stream command feature export-marks=... and it allows
   overwriting arbitrary paths.

 * CVE-2019-1349:
   When submodules are cloned recursively, under certain circumstances
   Git could be fooled into using the same Git directory twice. We now
   require the directory to be empty.

 * CVE-2019-1350:
   Incorrect quoting of command-line arguments allowed remote code
   execution during a recursive clone in conjunction with SSH URLs.

 * CVE-2019-1351:
   While the only permitted drive letters for physical drives on
   Windows are letters of the US-English alphabet, this restriction
   does not apply to virtual drives assigned via subst <letter>:
   <path>. Git mistook such paths for relative paths, allowing writing
   outside of the worktree while cloning.

 * CVE-2019-1352:
   Git was unaware of NTFS Alternate Data Streams, allowing files
   inside the .git/ directory to be overwritten during a clone.

 * CVE-2019-1353:
   When running Git in the Windows Subsystem for Linux (also known as
   "WSL") while accessing a working directory on a regular Windows
   drive, none of the NTFS protections were active.

 * CVE-2019-1354:
   Filenames on Linux/Unix can contain backslashes. On Windows,
   backslashes are directory separators. Git did not use to refuse to
   write out tracked files with such filenames.

 * CVE-2019-1387:
   Recursive clones are currently affected by a vulnerability that is
   caused by too-lax validation of submodule names, allowing very
   targeted attacks via remote code execution in recursive clones.

Credit for finding these vulnerabilities goes to Microsoft Security
Response Center, in particular to Nicolas Joly. The `fast-import`
fixes were provided by Jeff King, the other fixes by Johannes
Schindelin with help from Garima Singh.

 * CVE-2019-19604:
   The change to disallow `submodule.<name>.update=!command` entries in
   `.gitmodules` which was introduced v2.15.4 (and for which v2.17.3
   added explicit fsck checks) fixes the vulnerability in v2.20.x where
   a recursive clone followed by a submodule update could execute code
   contained within the repository without the user explicitly having
   asked for that.

Credit for finding this vulnerability goes to Joern Schneeweisz,
credit for the fixes goes to Jonathan Nieder.

Revision 1.92 / (download) - annotate - [select for diffs], Fri Nov 8 12:52:30 2019 UTC (3 years, 10 months ago) by ryoon
Branch: MAIN
Changes since 1.91: +2 -1 lines
Diff to previous 1.91 (colored)

Fix build under NetBSD. Do not conflict with hmac(3).

Revision 1.91 / (download) - annotate - [select for diffs], Fri Nov 8 12:24:31 2019 UTC (3 years, 10 months ago) by adam
Branch: MAIN
Changes since 1.90: +9 -9 lines
Diff to previous 1.90 (colored)

git: updated to 2.24.0

Git 2.24 Release Notes
======================

Updates since v2.23
-------------------

Backward compatibility note

 * "filter-branch" is showing its age and alternatives are available.
   From this release, we started to discourage its use and hint
   people about filter-repo.

UI, Workflows & Features

 * We now have an active interim maintainer for the Git-Gui part of
   the system.  Praise and thank Pratyush Yadav for volunteering.

 * The command line parser learned "--end-of-options" notation; the
   standard convention for scripters to have hardcoded set of options
   first on the command line, and force the command to treat end-user
   input as non-options, has been to use "--" as the delimiter, but
   that would not work for commands that use "--" as a delimiter
   between revs and pathspec.

 * A mechanism to affect the default setting for a (related) group of
   configuration variables is introduced.

 * "git fetch" learned "--set-upstream" option to help those who first
   clone from their private fork they intend to push to, add the true
   upstream via "git remote add" and then "git fetch" from it.

 * Device-tree files learned their own userdiff patterns.
   (merge 3c81760bc6 sb/userdiff-dts later to maint).

 * "git rebase --rebase-merges" learned to drive different merge
   strategies and pass strategy specific options to them.

 * A new "pre-merge-commit" hook has been introduced.

 * Command line completion updates for "git -c var.name=val" have been
   added.

 * The lazy clone machinery has been taught that there can be more
   than one promisor remote and consult them in order when downloading
   missing objects on demand.

 * The list-objects-filter API (used to create a sparse/lazy clone)
   learned to take a combined filter specification.

 * The documentation and tests for "git format-patch" have been
   cleaned up.

 * On Windows, the root level of UNC share is now allowed to be used
   just like any other directory.

 * The command line completion support (in contrib/) learned about the
   "--skip" option of "git revert" and "git cherry-pick".

 * "git rebase --keep-base <upstream>" tries to find the original base
   of the topic being rebased and rebase on top of that same base,
   which is useful when running the "git rebase -i" (and its limited
   variant "git rebase -x").

   The command also has learned to fast-forward in more cases where it
   can instead of replaying to recreate identical commits.

 * A configuration variable tells "git fetch" to write the commit
   graph after finishing.

 * "git add -i" has been taught to show the total number of hunks and
   the hunks that has been processed so far when showing prompts.

 * "git fetch --jobs=<n>" allowed <n> parallel jobs when fetching
   submodules, but this did not apply to "git fetch --multiple" that
   fetches from multiple remote repositories.  It now does.

 * The installation instruction for zsh completion script (in
   contrib/) has been a bit improved.


Performance, Internal Implementation, Development Support etc.

 * The code to write commit-graph over given commit object names has
   been made a bit more robust.

 * The first line of verbose output from each test piece now carries
   the test name and number to help scanning with eyeballs.

 * Further clean-up of the initialization code.

 * xmalloc() used to have a mechanism to ditch memory and address
   space resources as the last resort upon seeing an allocation
   failure from the underlying malloc(), which made the code complex
   and thread-unsafe with dubious benefit, as major memory resource
   users already do limit their uses with various other mechanisms.
   It has been simplified away.

 * Unnecessary full-tree diff in "git log -L" machinery has been
   optimized away.

 * The http transport lacked some optimization the native transports
   learned to avoid unnecessary ref advertisement, which has been
   corrected.

 * Preparation for SHA-256 upgrade continues in the test department.
   (merge 0c37c41d13 bc/hash-independent-tests-part-5 later to maint).

 * The memory ownership model of the "git fast-import" got
   straightened out.

 * Output from trace2 subsystem is formatted more prettily now.

 * The internal code originally invented for ".gitignore" processing
   got reshuffled and renamed to make it less tied to "excluding" and
   stress more that it is about "matching", as it has been reused for
   things like sparse checkout specification that want to check if a
   path is "included".

 * "git stash" learned to write refreshed index back to disk.

 * Coccinelle checks are done on more source files than before now.

 * The cache-tree code has been taught to be less aggressive in
   attempting to see if a tree object it computed already exists in
   the repository.

 * The code to parse and use the commit-graph file has been made more
   robust against corrupted input.

 * The hg-to-git script (in contrib/) has been updated to work with
   Python 3.

 * Update the way build artifacts in t/helper/ directory are ignored.

 * Preparation for SHA-256 upgrade continues.

 * "git log --graph" for an octopus merge is sometimes colored
   incorrectly, which is demonstrated and documented but not yet
   fixed.

 * The trace2 output, when sending them to files in a designated
   directory, can populate the directory with too many files; a
   mechanism is introduced to set the maximum number of files and
   discard further logs when the maximum is reached.

 * We have adopted a Code-of-conduct document.
   (merge 3f9ef874a7 jk/coc later to maint).


Fixes since v2.23
-----------------

 * "git grep --recurse-submodules" that looks at the working tree
   files looked at the contents in the index in submodules, instead of
   files in the working tree.
   (merge 6a289d45c0 mt/grep-submodules-working-tree later to maint).

 * Codepaths to walk tree objects have been audited for integer
   overflows and hardened.
   (merge 5aa02f9868 jk/tree-walk-overflow later to maint).

 * "git pack-refs" can lose refs that are created while running, which
   is getting corrected.
   (merge a613d4f817 sc/pack-refs-deletion-racefix later to maint).

 * "git checkout" and "git restore" to re-populate the index from a
   tree-ish (typically HEAD) did not work correctly for a path that
   was removed and then added again with the intent-to-add bit, when
   the corresponding working tree file was empty.  This has been
   corrected.

 * Compilation fix.
   (merge 70597e8386 rs/nedalloc-fixlets later to maint).

 * "git gui" learned to call the clean-up procedure before exiting.
   (merge 0d88f3d2c5 py/git-gui-do-quit later to maint).

 * We promoted the "indent heuristics" that decides where to split
   diff hunks from experimental to the default a few years ago, but
   some stale documentation still marked it as experimental, which has
   been corrected.
   (merge 64e5e1fba1 sg/diff-indent-heuristic-non-experimental later to maint).

 * Fix a mismerge that happened in 2.22 timeframe.
   (merge acb7da05ac en/checkout-mismerge-fix later to maint).

 * "git archive" recorded incorrect length in extended pax header in
   some corner cases, which has been corrected.
   (merge 71d41ff651 rs/pax-extended-header-length-fix later to maint).

 * On-demand object fetching in lazy clone incorrectly tried to fetch
   commits from submodule projects, while still working in the
   superproject, which has been corrected.
   (merge a63694f523 jt/diff-lazy-fetch-submodule-fix later to maint).

 * Prepare get_short_oid() codepath to be thread-safe.
   (merge 7cfcb16b0e rs/sort-oid-array-thread-safe later to maint).

 * "for-each-ref" and friends that show refs did not protect themselves
   against ancient tags that did not record tagger names when asked to
   show "%(taggername)", which have been corrected.
   (merge 8b3f33ef11 mp/for-each-ref-missing-name-or-email later to maint).

 * The "git am" based backend of "git rebase" ignored the result of
   updating ".gitattributes" done in one step when replaying
   subsequent steps.
   (merge 2c65d90f75 bc/reread-attributes-during-rebase later to maint).

 * Tell cURL library to use the same malloc() implementation, with the
   xmalloc() wrapper, as the rest of the system, for consistency.
   (merge 93b980e58f cb/curl-use-xmalloc later to maint).

 * Build fix to adjust .gitignore to unignore a path that we started to track.
   (merge aac6ff7b5b js/visual-studio later to maint).

 * A few implementation fixes in the notes API.
   (merge 60fe477a0b mh/notes-duplicate-entries later to maint).

 * Fix an earlier regression to "git push --all" which should have
   been forbidden when the target remote repository is set to be a
   mirror.
   (merge 8e4c8af058 tg/push-all-in-mirror-forbidden later to maint).

 * Fix an earlier regression in the test suite, which mistakenly
   stopped running HTTPD tests.
   (merge 3960290675 sg/git-test-boolean later to maint).

 * "git rebase --autostash <upstream> <branch>", when <branch> is
   different from the current branch, incorrectly moved the tip of the
   current branch, which has been corrected.
   (merge bf1e28e0ad bw/rebase-autostash-keep-current-branch later to maint).

 * Update support for Asciidoctor documentation toolchain.
   (merge 83b0b8953e ma/asciidoctor-refmiscinfo later to maint).

 * Start using DocBook 5 (instead of DocBook 4.5) as Asciidoctor 2.0
   no longer works with the older one.
   (merge f6461b82b9 bc/doc-use-docbook-5 later to maint).

 * The markup used in user-manual has been updated to work better with
   asciidoctor.
   (merge c4d2f6143a ma/user-manual-markup-update later to maint).

 * Make sure the grep machinery does not abort when seeing a payload
   that is not UTF-8 even when JIT is not in use with PCRE1.
   (merge ad7c543e3b cb/skip-utf8-check-with-pcre1 later to maint).

 * The name of the blob object that stores the filter specification
   for sparse cloning/fetching was interpreted in a wrong place in the
   code, causing Git to abort.

 * "git log --decorate-refs-exclude=<pattern>" was incorrectly
   overruled when the "--simplify-by-decoration" option is used, which
   has been corrected.
   (merge 0cc7380d88 rs/simplify-by-deco-with-deco-refs-exclude later to maint).

 * The "upload-pack" (the counterpart of "git fetch") needs to disable
   commit-graph when responding to a shallow clone/fetch request, but
   the way this was done made Git panic, which has been corrected.

 * The object traversal machinery has been optimized not to load tree
   objects when we are only interested in commit history.
   (merge 72ed80c784 jk/list-objects-optim-wo-trees later to maint).

 * The object name parser for "Nth parent" syntax has been made more
   robust against integer overflows.
   (merge 59fa5f5a25 rs/nth-parent-parse later to maint).

 * The code used in following tags in "git fetch" has been optimized.
   (merge b7e2d8bca5 ms/fetch-follow-tag-optim later to maint).

 * Regression fix for progress output.
   (merge 2bb74b53a4 sg/progress-fix later to maint).

 * A bug in merge-recursive code that triggers when a branch with a
   symbolic link is merged with a branch that replaces it with a
   directory has been fixed.
   (merge 83e3ad3b12 jt/merge-recursive-symlink-is-not-a-dir-in-way later to maint).

 * The rename detection logic sorts a list of rename source candidates
   by similarity to pick the best candidate, which means that a tie
   between sources with the same similarity is broken by the original
   location in the original candidate list (which is sorted by path).
   Force the sorting by similarity done with a stable sort, which is
   not promised by system supplied qsort(3), to ensure consistent
   results across platforms.
   (merge 2049b8dc65 js/diff-rename-force-stable-sort later to maint).

 * The code to skip "UTF" and "UTF-" prefix, when computing an advice
   message, did not work correctly when the prefix was "UTF", which
   has been fixed.
   (merge b181676ce9 rs/convert-fix-utf-without-dash later to maint).

 * The author names taken from SVN repositories may have extra leading
   or trailing whitespaces, which are now munged away.
   (merge 4ddd4bddb1 tk/git-svn-trim-author-name later to maint).

 * "git rebase -i" showed a wrong HEAD while "reword" open the editor.
   (merge b0a3186140 pw/rebase-i-show-HEAD-to-reword later to maint).

 * A few simplification and bugfixes to PCRE interface.
   (merge c581e4a749 ab/pcre-jit-fixes later to maint).

 * PCRE fixes.
   (merge ff61681b46 cb/pcre1-cleanup later to maint).

 * "git range-diff" segfaulted when diff.noprefix configuration was
   used, as it blindly expected the patch it internally generates to
   have the standard a/ and b/ prefixes.  The command now forces the
   internal patch to be built without any prefix, not to be affected
   by any end-user configuration.
   (merge 937b76ed49 js/range-diff-noprefix later to maint).

 * "git stash apply" in a subdirectory of a secondary worktree failed
   to access the worktree correctly, which has been corrected.
   (merge dfd557c978 js/stash-apply-in-secondary-worktree later to maint).

 * The merge-recursive machinery is one of the most complex parts of
   the system that accumulated cruft over time.  This large series
   cleans up the implementation quite a bit.
   (merge b657047719 en/merge-recursive-cleanup later to maint).

 * Pretty-printed command line formatter (used in e.g. reporting the
   command being run by the tracing API) had a bug that lost an
   argument that is an empty string, which has been corrected.
   (merge ce2d7ed2fd gs/sq-quote-buf-pretty later to maint).

 * "git range-diff" failed to handle mode-only change, which has been
   corrected.
   (merge 2b6a9b13ca tg/range-diff-output-update later to maint).

 * Dev support update.
   (merge 4f3c1dc5d6 dl/allow-running-cocci-verbosely later to maint).

 * "git format-patch -o <outdir>" did an equivalent of "mkdir <outdir>"
   not "mkdir -p <outdir>", which was corrected.

 * "git stash save" lost local changes to submodules, which has been
   corrected.
   (merge 556895d0c8 jj/stash-reset-only-toplevel later to maint).

 * The atomic push over smart HTTP transport did not work, which has
   been corrected.
   (merge 6f1194246a bc/smart-http-atomic-push later to maint).

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

Revision 1.90 / (download) - annotate - [select for diffs], Tue Aug 20 13:00:02 2019 UTC (4 years, 1 month ago) by adam
Branch: MAIN
CVS Tags: pkgsrc-2019Q3-base
Branch point for: pkgsrc-2019Q3
Changes since 1.89: +5 -5 lines
Diff to previous 1.89 (colored)

git: updated to 2.23.0

Git 2.23 Release Notes
======================

Updates since v2.22
-------------------

Backward compatibility note

 * The "--base" option of "format-patch" computed the patch-ids for
   prerequisite patches in an unstable way, which has been updated to
   compute in a way that is compatible with "git patch-id --stable".

 * The "git log" command by default behaves as if the --mailmap option
   was given.


UI, Workflows & Features

 * The "git fast-export/import" pair has been taught to handle commits
   with log messages in encoding other than UTF-8 better.

 * In recent versions of Git, per-worktree refs are exposed in
   refs/worktrees/<wtname>/ hierarchy, which means that worktree names
   must be a valid refname component.  The code now sanitizes the names
   given to worktrees, to make sure these refs are well-formed.

 * "git merge" learned "--quit" option that cleans up the in-progress
   merge while leaving the working tree and the index still in a mess.

 * "git format-patch" learns a configuration to set the default for
   its --notes=<ref> option.

 * The code to show args with potential typo that cannot be
   interpreted as a commit-ish has been improved.

 * "git clone --recurse-submodules" learned to set up the submodules
   to ignore commit object names recorded in the superproject gitlink
   and instead use the commits that happen to be at the tip of the
   remote-tracking branches from the get-go, by passing the new
   "--remote-submodules" option.

 * The pattern "git diff/grep" use to extract funcname and words
   boundary for Matlab has been extend to cover Octave, which is more
   or less equivalent.

 * "git help git" was hard to discover (well, at least for some
   people).

 * The pattern "git diff/grep" use to extract funcname and words
   boundary for Rust has been added.

 * "git status" can be told a non-standard default value for the
   "--[no-]ahead-behind" option with a new configuration variable
   status.aheadBehind.

 * "git fetch" and "git pull" reports when a fetch results in
   non-fast-forward updates to let the user notice unusual situation.
   The commands learned "--no-show-forced-updates" option to disable
   this safety feature.

 * Two new commands "git switch" and "git restore" are introduced to
   split "checking out a branch to work on advancing its history" and
   "checking out paths out of the index and/or a tree-ish to work on
   advancing the current history" out of the single "git checkout"
   command.

 * "git branch --list" learned to always output the detached HEAD as
   the first item (when the HEAD is detached, of course), regardless
   of the locale.

 * The conditional inclusion mechanism learned to base the choice on
   the branch the HEAD currently is on.

 * "git rev-list --objects" learned the "--no-object-names" option to
   squelch the path to the object that is used as a grouping hint for
   pack-objects.

 * A new tag.gpgSign configuration variable turns "git tag -a" into
   "git tag -s".

 * "git multi-pack-index" learned expire and repack subcommands.

 * "git blame" learned to "ignore" commits in the history, whose
   effects (as well as their presence) get ignored.

 * "git cherry-pick/revert" learned a new "--skip" action.

 * The tips of refs from the alternate object store can be used as
   starting point for reachability computation now.

 * Extra blank lines in "git status" output have been reduced.

 * The commits in a repository can be described by multiple
   commit-graph files now, which allows the commit-graph files to be
   updated incrementally.

 * "git range-diff" output has been tweaked for easier identification
   of which part of what file the patch shown is about.


Performance, Internal Implementation, Development Support etc.

 * Update supporting parts of "git rebase" to remove code that should
   no longer be used.

 * Developer support to emulate unsatisfied prerequisites in tests to
   ensure that the remainder of the tests still succeeds when tests
   with prerequisites are skipped.

 * "git update-server-info" learned not to rewrite the file with the
   same contents.

 * The way of specifying the path to find dynamic libraries at runtime
   has been simplified.  The old default to pass -R/path/to/dir has been
   replaced with the new default to pass -Wl,-rpath,/path/to/dir,
   which is the more recent GCC uses.  Those who need to build with an
   old GCC can still use "CC_LD_DYNPATH=-R"

 * Prepare use of reachability index in topological walker that works
   on a range (A..B).

 * A new tutorial targeting specifically aspiring git-core
   developers has been added.

 * Auto-detect how to tell HP-UX aCC where to use dynamically linked
   libraries from at runtime.

 * "git mergetool" and its tests now spawn fewer subprocesses.

 * Dev support update to help tracing out tests.

 * Support to build with MSVC has been updated.

 * "git fetch" that grabs from a group of remotes learned to run the
   auto-gc only once at the very end.

 * A handful of Windows build patches have been upstreamed.

 * The code to read state files used by the sequencer machinery for
   "git status" has been made more robust against a corrupt or stale
   state files.

 * "git for-each-ref" with multiple patterns have been optimized.

 * The tree-walk API learned to pass an in-core repository
   instance throughout more codepaths.

 * When one step in multi step cherry-pick or revert is reset or
   committed, the command line prompt script failed to notice the
   current status, which has been improved.

 * Many GIT_TEST_* environment variables control various aspects of
   how our tests are run, but a few followed "non-empty is true, empty
   or unset is false" while others followed the usual "there are a few
   ways to spell true, like yes, on, etc., and also ways to spell
   false, like no, off, etc." convention.

 * Adjust the dir-iterator API and apply it to the local clone
   optimization codepath.

 * We have been trying out a few language features outside c89; the
   coding guidelines document did not talk about them and instead had
   a blanket ban against them.

 * A test helper has been introduced to optimize preparation of test
   repositories with many simple commits, and a handful of test
   scripts have been updated to use it.


Fixes since v2.22
-----------------

 * A relative pathname given to "git init --template=<path> <repo>"
   ought to be relative to the directory "git init" gets invoked in,
   but it instead was made relative to the repository, which has been
   corrected.

 * "git worktree add" used to fail when another worktree connected to
   the same repository was corrupt, which has been corrected.

 * The ownership rule for the file descriptor to fast-import remote
   backend was mixed up, leading to an unrelated file descriptor getting
   closed, which has been fixed.

 * A "merge -c" instruction during "git rebase --rebase-merges" should
   give the user a chance to edit the log message, even when there is
   otherwise no need to create a new merge and replace the existing
   one (i.e. fast-forward instead), but did not.  Which has been
   corrected.

 * Code cleanup and futureproof.

 * More parameter validation.

 * "git update-server-info" used to leave stale packfiles in its
   output, which has been corrected.

 * The server side support for "git fetch" used to show incorrect
   value for the HEAD symbolic ref when the namespace feature is in
   use, which has been corrected.

 * "git am -i --resolved" segfaulted after trying to see a commit as
   if it were a tree, which has been corrected.

 * "git bundle verify" needs to see if prerequisite objects exist in
   the receiving repository, but the command did not check if we are
   in a repository upfront, which has been corrected.

 * "git merge --squash" is designed to update the working tree and the
   index without creating the commit, and this cannot be countermanded
   by adding the "--commit" option; the command now refuses to work
   when both options are given.

 * The data collected by fsmonitor was not properly written back to
   the on-disk index file, breaking t7519 tests occasionally, which
   has been corrected.

 * Update to Unicode 12.1 width table.

 * The command line to invoke a "git cat-file" command from inside
   "git p4" was not properly quoted to protect a caret and running a
   broken command on Windows, which has been corrected.

 * "git request-pull" learned to warn when the ref we ask them to pull
   from in the local repository and in the published repository are
   different.

 * When creating a partial clone, the object filtering criteria is
   recorded for the origin of the clone, but this incorrectly used a
   hardcoded name "origin" to name that remote; it has been corrected
   to honor the "--origin <name>" option.

 * "git fetch" into a lazy clone forgot to fetch base objects that are
   necessary to complete delta in a thin packfile, which has been
   corrected.

 * The filter_data used in the list-objects-filter (which manages a
   lazily sparse clone repository) did not use the dynamic array API
   correctly---'nr' is supposed to point at one past the last element
   of the array in use.  This has been corrected.

 * The description about slashes in gitignore patterns (used to
   indicate things like "anchored to this level only" and "only
   matches directories") has been revamped.

 * The URL decoding code has been updated to avoid going past the end
   of the string while parsing %-<hex>-<hex> sequence.

 * The list of for-each like macros used by clang-format has been
   updated.

 * "git branch --list" learned to show branches that are checked out
   in other worktrees connected to the same repository prefixed with
   '+', similar to the way the currently checked out branch is shown
   with '*' in front.
   (merge 6e9381469e nb/branch-show-other-worktrees-head later to maint).

 * Code restructuring during 2.20 period broke fetching tags via
   "import" based transports.

 * The commit-graph file is now part of the "files that the runtime
   may keep open file descriptors on, all of which would need to be
   closed when done with the object store", and the file descriptor to
   an existing commit-graph file now is closed before "gc" finalizes a
   new instance to replace it.

 * "git checkout -p" needs to selectively apply a patch in reverse,
   which did not work well.

 * Code clean-up to avoid signed integer wraparounds during binary search.

 * "git interpret-trailers" always treated '#' as the comment
   character, regardless of core.commentChar setting, which has been
   corrected.

 * "git stash show 23" used to work, but no more after getting
   rewritten in C; this regression has been corrected.

 * "git rebase --abort" used to leave refs/rewritten/ when concluding
   "git rebase -r", which has been corrected.

 * An incorrect list of options was cached after command line
   completion failed (e.g. trying to complete a command that requires
   a repository outside one), which has been corrected.

 * The code to parse scaled numbers out of configuration files has
   been made more robust and also easier to follow.

 * The codepath to compute delta islands used to spew progress output
   without giving the callers any way to squelch it, which has been
   fixed.

 * Protocol capabilities that go over wire should never be translated,
   but it was incorrectly marked for translation, which has been
   corrected.  The output of protocol capabilities for debugging has
   been tweaked a bit.

 * Use "Erase in Line" CSI sequence that is already used in the editor
   support to clear cruft in the progress output.

 * "git submodule foreach" did not protect command line options passed
   to the command to be run in each submodule correctly, when the
   "--recursive" option was in use.

 * The configuration variable rebase.rescheduleFailedExec should be
   effective only while running an interactive rebase and should not
   affect anything when running a non-interactive one, which was not
   the case.  This has been corrected.

 * The "git clone" documentation refers to command line options in its
   description in the short form; they have been replaced with long
   forms to make them more recognisable.

 * Generation of pack bitmaps are now disabled when .keep files exist,
   as these are mutually exclusive features.
   (merge 7328482253 ew/repack-with-bitmaps-by-default later to maint).

 * "git rm" to resolve a conflicted path leaked an internal message
   "needs merge" before actually removing the path, which was
   confusing.  This has been corrected.

 * "git stash --keep-index" did not work correctly on paths that have
   been removed, which has been fixed.
   (merge b932f6a5e8 tg/stash-keep-index-with-removed-paths later to maint).

 * Window 7 update ;-)

 * A codepath that reads from GPG for signed object verification read
   past the end of allocated buffer, which has been fixed.

 * "git clean" silently skipped a path when it cannot lstat() it; now
   it gives a warning.

 * "git push --atomic" that goes over the transport-helper (namely,
   the smart http transport) failed to prevent refs to be pushed when
   it can locally tell that one of the ref update will fail without
   having to consult the other end, which has been corrected.

 * The internal diff machinery can be made to read out of bounds while
   looking for --function-context line in a corner case, which has been
   corrected.
   (merge b777f3fd61 jk/xdiff-clamp-funcname-context-index later to maint).

 * Other code cleanup, docfix, build fix, etc.
   (merge fbec05c210 cc/test-oidmap later to maint).
   (merge 7a06fb038c jk/no-system-includes-in-dot-c later to maint).
   (merge 81ed2b405c cb/xdiff-no-system-includes-in-dot-c later to maint).
   (merge d61e6ce1dd sg/fsck-config-in-doc later to maint).

Revision 1.89 / (download) - annotate - [select for diffs], Sun Jun 9 16:15:32 2019 UTC (4 years, 3 months ago) by ryoon
Branch: MAIN
CVS Tags: pkgsrc-2019Q2-base, pkgsrc-2019Q2
Changes since 1.88: +6 -6 lines
Diff to previous 1.88 (colored)

Update to 2.22.0

Changelog:
Git 2.22 Release Notes
======================

Updates since v2.21
-------------------

Backward compatibility note

 * The filter specification "--filter=sparse:path=<path>" used to
   create a lazy/partial clone has been removed.  Using a blob that is
   part of the project as sparse specification is still supported with
   the "--filter=sparse:oid=<blob>" option.

UI, Workflows & Features

 * "git checkout --no-overlay" can be used to trigger a new mode of
   checking out paths out of the tree-ish, that allows paths that
   match the pathspec that are in the current index and working tree
   and are not in the tree-ish.

 * The %(trailers) formatter in "git log --format=..."  now allows to
   optionally pick trailers selectively by keyword, show only values,
   etc.

 * Four new configuration variables {author,committer}.{name,email}
   have been introduced to override user.{name,email} in more specific
   cases.

 * Command-line completion (in contrib/) learned to tab-complete the
   "git submodule absorbgitdirs" subcommand.

 * "git branch" learned a new subcommand "--show-current".

 * Output from "diff --cc" did not show the original paths when the
   merge involved renames.  A new option adds the paths in the
   original trees to the output.

 * The command line completion (in contrib/) has been taught to
   complete more subcommand parameters.

 * The final report from "git bisect" used to show the suspected
   culprit using a raw "diff-tree", with which there is no output for
   a merge commit.  This has been updated to use a more modern and
   human readable output that still is concise enough.

 * "git rebase --rebase-merges" replaces its old "--preserve-merges"
   option; the latter is now marked as deprecated.

 * Error message given while cloning with --recurse-submodules has
   been updated.

 * The completion helper code now pays attention to repository-local
   configuration (when available), which allows --list-cmds to honour
   a repository specific setting of completion.commands, for example.

 * "git mergetool" learned to offer Sublime Merge (smerge) as one of
   its backends.

 * A new hook "post-index-change" is called when the on-disk index
   file changes, which can help e.g. a virtualized working tree
   implementation.

 * "git difftool" can now run outside a repository.

 * "git checkout -m <other>" was about carrying the differences
   between HEAD and the working-tree files forward while checking out
   another branch, and ignored the differences between HEAD and the
   index.  The command has been taught to abort when the index and the
   HEAD are different.

 * A progress indicator has been added to the "index-pack" step, which
   often makes users wait for completion during "git clone".

 * "git submodule" learns "set-branch" subcommand that allows the
   submodule.*.branch settings to be modified.

 * "git merge-recursive" backend recently learned a new heuristics to
   infer file movement based on how other files in the same directory
   moved.  As this is inherently less robust heuristics than the one
   based on the content similarity of the file itself (rather than
   based on what its neighbours are doing), it sometimes gives an
   outcome unexpected by the end users.  This has been toned down to
   leave the renamed paths in higher/conflicted stages in the index so
   that the user can examine and confirm the result.

 * "git tag" learned to give an advice suggesting it might be a
   mistake when creating an annotated or signed tag that points at
   another tag.

 * The "git pack-objects" command learned to report the number of
   objects it packed via the trace2 mechanism.

 * The list of conflicted paths shown in the editor while concluding a
   conflicted merge was shown above the scissors line when the
   clean-up mode is set to "scissors", even though it was commented
   out just like the list of updated paths and other information to
   help the user explain the merge better.

 * The trace2 tracing facility learned to auto-generate a filename
   when told to log to a directory.

 * "git clone" learned a new --server-option option when talking over
   the protocol version 2.

 * The connectivity bitmaps are created by default in bare
   repositories now; also the pathname hash-cache is created by
   default to avoid making crappy deltas when repacking.

 * "git branch new A...B" and "git checkout -b new A...B" have been
   taught that in their contexts, the notation A...B means "the merge
   base between these two commits", just like "git checkout A...B"
   detaches HEAD at that commit.

 * Update "git difftool" and "git mergetool" so that the combinations
   of {diff,merge}.{tool,guitool} configuration variables serve as
   fallback settings of each other in a sensible order.

 * The "--dir-diff" mode of "git difftool" is not useful in "--no-index"
   mode; they are now explicitly marked as mutually incompatible.


Performance, Internal Implementation, Development Support etc.

 * The diff machinery, one of the oldest parts of the system, which
   long predates the parse-options API, uses fairly long and complex
   handcrafted option parser.  This is being rewritten to use the
   parse-options API.

 * The implementation of pack-redundant has been updated for
   performance in a repository with many packfiles.

 * A more structured way to obtain execution trace has been added.

 * "git prune" has been taught to take advantage of reachability
   bitmap when able.

 * The command line parser of "git commit-tree" has been rewritten to
   use the parse-options API.

 * Suggest GitGitGadget instead of submitGit as a way to submit
   patches based on GitHub PR to us.

 * The test framework has been updated to help developers by making it
   easier to run most of the tests under different versions of
   over-the-wire protocols.

 * Dev support update to make it easier to compare two formatted
   results from our documentation.

 * The scripted "git rebase" implementation has been retired.

 * "git multi-pack-index verify" did not scale well with the number of
   packfiles, which is being improved.

 * "git stash" has been rewritten in C.

 * The "check-docs" Makefile target to support developers has been
   updated.

 * The tests have been updated not to rely on the abbreviated option
   names the parse-options API offers, to protect us from an
   abbreviated form of an option that used to be unique within the
   command getting non-unique when a new option that share the same
   prefix is added.

 * The scripted version of "git rebase -i" wrote and rewrote the todo
   list many times during a single step of its operation, and the
   recent C-rewrite made a faithful conversion of the logic to C.  The
   implementation has been updated to carry necessary information
   around in-core to avoid rewriting the same file over and over
   unnecessarily.

 * Test framework update to more robustly clean up leftover files and
   processes after tests are done.

 * Conversion from unsigned char[20] to struct object_id continues.

 * While running "git diff" in a lazy clone, we can upfront know which
   missing blobs we will need, instead of waiting for the on-demand
   machinery to discover them one by one.  The code learned to aim to
   achieve better performance by batching the request for these
   promised blobs.

 * During an initial "git clone --depth=..." partial clone, it is
   pointless to spend cycles for a large portion of the connectivity
   check that enumerates and skips promisor objects (which by
   definition is all objects fetched from the other side).  This has
   been optimized out.

 * Mechanically and systematically drop "extern" from function
   declaration.

 * The script to aggregate perf result unconditionally depended on
   libjson-perl even though it did not have to, which has been
   corrected.

 * The internal implementation of "git rebase -i" has been updated to
   avoid forking a separate "rebase--interactive" process.

 * Allow DEP and ASLR for Windows build to for security hardening.

 * Performance test framework has been broken and measured the version
   of Git that happens to be on $PATH, not the specified one to
   measure, for a while, which has been corrected.

 * Optionally "make coccicheck" can feed multiple source files to
   spatch, gaining performance while spending more memory.

 * Attempt to use an abbreviated option in "git clone --recurs" is
   responded by a request to disambiguate between --recursive and
   --recurse-submodules, which is bad because these two are synonyms.
   The parse-options API has been extended to define such synonyms
   more easily and not produce an unnecessary failure.

 * A pair of private functions in http.c that had names similar to
   fread/fwrite did not return the number of elements, which was found
   to be confusing.

 * Update collision-detecting SHA-1 code to build properly on HP-UX.


Fixes since v2.21
-----------------

 * "git prune-packed" did not notice and complain against excess
   arguments given from the command line, which now it does.
   (merge 9b0bd87ed2 rj/prune-packed-excess-args later to maint).

 * Split-index fix.
   (merge 6e37c8ed3c nd/split-index-null-base-fix later to maint).

 * "git diff --no-index" may still want to access Git goodies like
   --ext-diff and --textconv, but so far these have been ignored,
   which has been corrected.
   (merge 287ab28bfa jk/diff-no-index-initialize later to maint).

 * Unify RPC code for smart http in protocol v0/v1 and v2, which fixes
   a bug in the latter (lack of authentication retry) and generally
   improves the code base.
   (merge a97d00799a jt/http-auth-proto-v2-fix later to maint).

 * The include file compat/bswap.h has been updated so that it is safe
   to (accidentally) include it more than once.
   (merge 33aa579a55 jk/guard-bswap-header later to maint).

 * The set of header files used by "make hdr-check" unconditionally
   included sha256/gcrypt.h, even when it is not used, causing the
   make target to fail.  We now skip it when GCRYPT_SHA256 is not in
   use.
   (merge f23aa18e7f rj/hdr-check-gcrypt-fix later to maint).

 * The Makefile uses 'find' utility to enumerate all the *.h header
   files, which is expensive on platforms with slow filesystems; it
   now optionally uses "ls-files" if working within a repository,
   which is a trick similar to how all sources are enumerated to run
   ETAGS on.
   (merge 92b88eba9f js/find-lib-h-with-ls-files-when-possible later to maint).

 * "git rebase" that was reimplemented in C did not set ORIG_HEAD
   correctly, which has been corrected.
   (merge cbd29ead92 js/rebase-orig-head-fix later to maint).

 * Dev support.
   (merge f545737144 js/stress-test-ui-tweak later to maint).

 * CFLAGS now can be tweaked when invoking Make while using
   DEVELOPER=YesPlease; this did not work well before.
   (merge 6d5d4b4e93 ab/makefile-help-devs-more later to maint).

 * "git fsck --connectivity-only" omits computation necessary to sift
   the objects that are not reachable from any of the refs into
   unreachable and dangling.  This is now enabled when dangling
   objects are requested (which is done by default, but can be
   overridden with the "--no-dangling" option).
   (merge 8d8c2a5aef jk/fsck-doc later to maint).

 * On platforms where "git fetch" is killed with SIGPIPE (e.g. OSX),
   the upload-pack that runs on the other end that hangs up after
   detecting an error could cause "git fetch" to die with a signal,
   which led to a flaky test.  "git fetch" now ignores SIGPIPE during
   the network portion of its operation (this is not a problem as we
   check the return status from our write(2)s).
   (merge 143588949c jk/no-sigpipe-during-network-transport later to maint).

 * A recent update broke "is this object available to us?" check for
   well-known objects like an empty tree (which should yield "yes",
   even when there is no on-disk object for an empty tree), which has
   been corrected.
   (merge f06ab027ef jk/virtual-objects-do-exist later to maint).

 * The setup code has been cleaned up to avoid leaks around the
   repository_format structure.
   (merge e8805af1c3 ma/clear-repository-format later to maint).

 * "git config --type=color ..." is meant to replace "git config --get-color"
   but there is a slight difference that wasn't documented, which is
   now fixed.
   (merge cd8e7593b9 jk/config-type-color-ends-with-lf later to maint).

 * When the "clean" filter can reduce the size of a huge file in the
   working tree down to a small "token" (a la Git LFS), there is no
   point in allocating a huge scratch area upfront, but the buffer is
   sized based on the original file size.  The convert mechanism now
   allocates very minimum and reallocates as it receives the output
   from the clean filter process.
   (merge 02156ab031 jh/resize-convert-scratch-buffer later to maint).

 * "git rebase" uses the refs/rewritten/ hierarchy to store its
   intermediate states, which inherently makes the hierarchy per
   worktree, but it didn't quite work well.
   (merge b9317d55a3 nd/rewritten-ref-is-per-worktree later to maint).

 * "git log -L<from>,<to>:<path>" with "-s" did not suppress the patch
   output as it should.  This has been corrected.
   (merge 05314efaea jk/line-log-with-patch later to maint).

 * "git worktree add" used to do a "find an available name with stat
   and then mkdir", which is race-prone.  This has been fixed by using
   mkdir and reacting to EEXIST in a loop.
   (merge 7af01f2367 ms/worktree-add-atomic-mkdir later to maint).

 * Build update for SHA-1 with collision detection.
   (merge 07a20f569b jk/sha1dc later to maint).

 * Build procedure has been fixed around use of asciidoctor instead of
   asciidoc.
   (merge 185f9a0ea0 ma/asciidoctor-fixes later to maint).

 * remote-http transport did not anonymize URLs reported in its error
   messages at places.
   (merge c1284b21f2 js/anonymize-remote-curl-diag later to maint).

 * Error messages given from the http transport have been updated so
   that they can be localized.
   (merge ed8b4132c8 js/remote-curl-i18n later to maint).

 * "git init" forgot to read platform-specific repository
   configuration, which made Windows port to ignore settings of
   core.hidedotfiles, for example.

 * A corner-case object name ambiguity while the sequencer machinery
   is working (e.g. "rebase -i -x") has been fixed.

 * "git format-patch" did not diagnose an error while opening the
   output file for the cover-letter, which has been corrected.
   (merge 2fe95f494c jc/format-patch-error-check later to maint).

 * "git checkout -f <branch>" while the index has an unmerged path
   incorrectly left some paths in an unmerged state, which has been
   corrected.

 * A corner case bug in the refs API has been corrected.
   (merge d3322eb28b jk/refs-double-abort later to maint).

 * Unicode update.
   (merge 584b62c37b bb/unicode-12 later to maint).

 * dumb-http walker has been updated to share more error recovery
   strategy with the normal codepath.

 * A buglet in configuration parser has been fixed.
   (merge 19e7fdaa58 nd/include-if-wildmatch later to maint).

 * The documentation for "git read-tree --reset -u" has been updated.
   (merge b5a0bd694c nd/read-tree-reset-doc later to maint).

 * Code clean-up around a much-less-important-than-it-used-to-be
   update_server_info() function.
   (merge b3223761c8 jk/server-info-rabbit-hole later to maint).

 * The message given when "git commit -a <paths>" errors out has been
   updated.
   (merge 5a1dbd48bc nd/commit-a-with-paths-msg-update later to maint).

 * "git cherry-pick --options A..B", after giving control back to the
   user to ask help resolving a conflicted step, did not honor the
   options it originally received, which has been corrected.

 * Various glitches in "git gc" around reflog handling have been fixed.

 * The code to read from commit-graph file has been cleanup with more
   careful error checking before using data read from it.

 * Performance fix around "git fetch" that grabs many refs.
   (merge b764300912 jt/fetch-pack-wanted-refs-optim later to maint).

 * Protocol v2 support in "git fetch-pack" of shallow clones has been
   corrected.

 * Performance fix around "git blame", especially in a linear history
   (which is the norm we should optimize for).
   (merge f892014943 dk/blame-keep-origin-blob later to maint).

 * Performance fix for "rev-list --parents -- pathspec".
   (merge 8320b1dbe7 jk/revision-rewritten-parents-in-prio-queue later to maint).

 * Updating the display with progress message has been cleaned up to
   deal better with overlong messages.
   (merge 545dc345eb sg/overlong-progress-fix later to maint).

 * "git blame -- path" in a non-bare repository starts blaming from
   the working tree, and the same command in a bare repository errors
   out because there is no working tree by definition.  The command
   has been taught to instead start blaming from the commit at HEAD,
   which is more useful.
   (merge a544fb08f8 sg/blame-in-bare-start-at-head later to maint).

 * An underallocation in the code to read the untracked cache
   extension has been corrected.
   (merge 3a7b45a623 js/untracked-cache-allocfix later to maint).

 * The code is updated to check the result of memory allocation before
   it is used in more places, by using xmalloc and/or xcalloc calls.
   (merge 999b951b28 jk/xmalloc later to maint).

 * The GETTEXT_POISON test option has been quite broken ever since it
   was made runtime-tunable, which has been fixed.
   (merge f88b9cb603 jc/gettext-test-fix later to maint).

 * Test fix on APFS that is incapable of store paths in Latin-1.
   (merge 3889149619 js/iso8895-test-on-apfs later to maint).

 * "git submodule foreach <command> --quiet" did not pass the option
   down correctly, which has been corrected.
   (merge a282f5a906 nd/submodule-foreach-quiet later to maint).

 * "git send-email" has been taught to use quoted-printable when the
   payload contains carriage-return.  The use of the mechanism is in
   line with the design originally added the codepath that chooses QP
   when the payload has overly long lines.
   (merge 74d76a1701 bc/send-email-qp-cr later to maint).

 * The recently added feature to add addresses that are on
   anything-by: trailers in 'git send-email' was found to be way too
   eager and considered nonsense strings as if they can be legitimate
   beginning of *-by: trailer.  This has been tightened.

 * Builds with gettext broke on recent macOS w/ Homebrew, which
   seems to have stopped including from /usr/local/include; this
   has been corrected.
   (merge 92a1377a2a js/macos-gettext-build later to maint).

 * Running "git add" on a repository created inside the current
   repository is an explicit indication that the user wants to add it
   as a submodule, but when the HEAD of the inner repository is on an
   unborn branch, it cannot be added as a submodule.  Worse, the files
   in its working tree can be added as if they are a part of the outer
   repository, which is not what the user wants.  These problems are
   being addressed.
   (merge f937bc2f86 km/empty-repo-is-still-a-repo later to maint).

 * "git cherry-pick" run with the "-x" or the "--signoff" option used
   to (and more importantly, ought to) clean up the commit log message
   with the --cleanup=space option by default, but this has been
   broken since late 2017.  This has been fixed.

 * When given a tag that points at a commit-ish, "git replace --graft"
   failed to peel the tag before writing a replace ref, which did not
   make sense because the old graft mechanism the feature wants to
   mimic only allowed to replace one commit object with another.
   This has been fixed.
   (merge ee521ec4cb cc/replace-graft-peel-tags later to maint).

 * Code tightening against a "wrong" object appearing where an object
   of a different type is expected, instead of blindly assuming that
   the connection between objects are correctly made.
   (merge 97dd512af7 tb/unexpected later to maint).

 * An earlier update for MinGW and Cygwin accidentally broke MSVC build,
   which has been fixed.
   (merge 22c3634c0f ss/msvc-path-utils-fix later to maint).

 * %(push:track) token used in the --format option to "git
   for-each-ref" and friends was not showing the right branch, which
   has been fixed.
   (merge c646d0934e dr/ref-filter-push-track-fix later to maint).

 * "make check-docs", "git help -a", etc. did not account for cases
   where a particular build may deliberately omit some subcommands,
   which has been corrected.

 * The logic to tell if a Git repository has a working tree protects
   "git branch -D" from removing the branch that is currently checked
   out by mistake.  The implementation of this logic was broken for
   repositories with unusual name, which unfortunately is the norm for
   submodules these days.  This has been fixed.
   (merge f3534c98e4 jt/submodule-repo-is-with-worktree later to maint).

 * AIX shared the same build issues with other BSDs around fileno(fp),
   which has been corrected.
   (merge ee662bf5c6 cc/aix-has-fileno-as-a-macro later to maint).

 * The autoconf generated configure script failed to use the right
   gettext() implementations from -libintl by ignoring useless stub
   implementations shipped in some C library, which has been
   corrected.
   (merge b71e56a683 vk/autoconf-gettext later to maint).

 * Fix index-pack perf test so that the repeated invocations always
   run in an empty repository, which emulates the initial clone
   situation better.
   (merge 775c71e16d jk/p5302-avoid-collision-check-cost later to maint).

 * A "ls-files" that emulates "find" to enumerate files in the working
   tree resulted in duplicated Makefile rules that caused the build to
   issue an unnecessary warning during a trial build after merge
   conflicts are resolved in working tree *.h files but before the
   resolved results are added to the index.  This has been corrected.

 * "git cherry-pick" (and "revert" that shares the same runtime engine)
   that deals with multiple commits got confused when the final step
   gets stopped with a conflict and the user concluded the sequence
   with "git commit".  Attempt to fix it by cleaning up the state
   files used by these commands in such a situation.
   (merge 4a72486de9 pw/clean-sequencer-state-upon-final-commit later to maint).

 * On a filesystem like HFS+, the names of the refs stored as filesystem
   entities may become different from what the end-user expects, just
   like files in the working tree get "renamed".  Work around the
   mismatch by paying attention to the core.precomposeUnicode
   configuration.
   (merge 8e712ef6fc en/unicode-in-refnames later to maint).

 * The code to generate the multi-pack idx file was not prepared to
   see too many packfiles and ran out of open file descriptor, which
   has been corrected.

 * To run tests for Git SVN, our scripts for CI used to install the
   git-svn package (in the hope that it would bring in the right
   dependencies).  This has been updated to install the more direct
   dependency, namely, libsvn-perl.
   (merge db864306cf sg/ci-libsvn-perl later to maint).

 * "git cvsexportcommit" running on msys did not expect cvsnt showed
   "cvs status" output with CRLF line endings.

 * The fsmonitor interface got out of sync after the in-core index
   file gets discarded, which has been corrected.
   (merge 398a3b0899 js/fsmonitor-refresh-after-discarding-index later to maint).

 * "git status" did not know that the "label" instruction in the
   todo-list "rebase -i -r" uses should not be shown as a hex object
   name.

 * A prerequisite check in the test suite to see if a working jgit is
   available was made more robust.
   (merge abd0f28983 tz/test-lib-check-working-jgit later to maint).

 * The codepath to parse :<path> that obtains the object name for an
   indexed object has been made more robust.

 * Code cleanup, docfix, build fix, etc.
   (merge 11f470aee7 jc/test-yes-doc later to maint).
   (merge 90503a240b js/doc-symref-in-proto-v1 later to maint).
   (merge 5c326d1252 jk/unused-params later to maint).
   (merge 68cabbfda3 dl/doc-submodule-wo-subcommand later to maint).
   (merge 9903623761 ab/receive-pack-use-after-free-fix later to maint).
   (merge 1ede45e44b en/merge-options-doc later to maint).
   (merge 3e14dd2c8e rd/doc-hook-used-in-sample later to maint).
   (merge c271dc28fd nd/no-more-check-racy later to maint).
   (merge e6e15194a8 yb/utf-16le-bom-spellfix later to maint).
   (merge bb101aaf0c rd/attr.c-comment-typofix later to maint).
   (merge 716a5af812 rd/gc-prune-doc-fix later to maint).
   (merge 50b206371d js/untravis-windows later to maint).
   (merge dbf47215e3 js/rebase-recreate-merge later to maint).
   (merge 56cb2d30f8 dl/reset-doc-no-wrt-abbrev later to maint).
   (merge 64eca306a2 ja/dir-rename-doc-markup-fix later to maint).
   (merge af91b0230c dl/ignore-docs later to maint).
   (merge 59a06e947b ra/t3600-test-path-funcs later to maint).
   (merge e041d0781b ar/t4150-remove-cruft later to maint).
   (merge 8d75a1d183 ma/asciidoctor-fixes-more later to maint).
   (merge 74cc547b0f mh/pack-protocol-doc-fix later to maint).
   (merge ed31851fa6 ab/doc-misc-typofixes later to maint).
   (merge a7256debd4 nd/checkout-m-doc-update later to maint).
   (merge 3a9e1ad78d jt/t5551-protocol-v2-does-not-have-half-auth later to maint).
   (merge 0b918b75af sg/t5318-cleanup later to maint).
   (merge 68ed71b53c cb/doco-mono later to maint).
   (merge a34dca2451 nd/interpret-trailers-docfix later to maint).
   (merge cf7b857a77 en/fast-import-parsing-fix later to maint).
   (merge fe61ccbc35 po/rerere-doc-fmt later to maint).
   (merge ffea0248bf po/describe-not-necessarily-7 later to maint).
   (merge 7cb7283adb tg/ls-files-debug-format-fix later to maint).
   (merge f64a21bd82 tz/doc-apostrophe-no-longer-needed later to maint).
   (merge dbe7b41019 js/t3301-unbreak-notes-test later to maint).
   (merge d8083e4180 km/t3000-retitle later to maint).
   (merge 9e4cbccbd7 tz/git-svn-doc-markup-fix later to maint).
   (merge da9ca955a7 jk/ls-files-doc-markup-fix later to maint).
   (merge 6804ba3a58 cw/diff-highlight later to maint).
   (merge 1a8787144d nd/submodule-helper-incomplete-line-fix later to maint).
   (merge d9ef573837 jk/apache-lsan later to maint).
   (merge c871fbee2b js/t6500-use-windows-pid-on-mingw later to maint).
   (merge ce4c7bfc90 bl/t4253-exit-code-from-format-patch later to maint).
   (merge 397a46db78 js/t5580-unc-alternate-test later to maint).
   (merge d4907720a2 cm/notes-comment-fix later to maint).
   (merge 9dde06de13 cb/http-push-null-in-message-fix later to maint).
   (merge 4c785c0edc js/rebase-config-bitfix later to maint).
   (merge 8e9fe16c87 es/doc-gitsubmodules-markup later to maint).

Revision 1.88 / (download) - annotate - [select for diffs], Tue Feb 26 11:36:59 2019 UTC (4 years, 7 months ago) by adam
Branch: MAIN
CVS Tags: pkgsrc-2019Q1-base, pkgsrc-2019Q1
Changes since 1.87: +5 -5 lines
Diff to previous 1.87 (colored)

git: updated to 2.21.0

Git 2.21 Release Notes
======================

Backward Compatibility Notes

Revision 1.87 / (download) - annotate - [select for diffs], Sun Dec 16 12:05:26 2018 UTC (4 years, 9 months ago) by adam
Branch: MAIN
CVS Tags: pkgsrc-2018Q4-base, pkgsrc-2018Q4
Changes since 1.86: +5 -5 lines
Diff to previous 1.86 (colored)

git: updated to 2.20.1

Git v2.20.1:

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

Fixes since v2.20

 * A few newly added tests were not portable and caused minority
   platforms to report false breakages, which have been fixed.

 * Portability fix for a recent update to parse-options API.

 * "git help -a" did not work well when an overly long alias is
   defined, which has been corrected.

 * A recent update accidentally squelched an error message when the
   run_command API failed to run a missing command, which has been
   corrected.

Revision 1.86 / (download) - annotate - [select for diffs], Sun Dec 9 20:29:13 2018 UTC (4 years, 9 months ago) by adam
Branch: MAIN
Changes since 1.85: +5 -5 lines
Diff to previous 1.85 (colored)

git: updated to 2.20.0

Git 2.20 Release Notes
======================

Backward Compatibility Notes

Revision 1.85 / (download) - annotate - [select for diffs], Fri Nov 23 14:57:21 2018 UTC (4 years, 10 months ago) by leot
Branch: MAIN
Changes since 1.84: +5 -5 lines
Diff to previous 1.84 (colored)

git: Update devel/git to 2.19.2

Changes:
Git v2.19.2 Release Notes
=========================
Fixes since v2.19.1
-------------------

 * "git interpret-trailers" and its underlying machinery had a buggy
   code that attempted to ignore patch text after commit log message,
   which triggered in various codepaths that will always get the log
   message alone and never get such an input.

 * "git rebase -i" did not clear the state files correctly when a run
   of "squash/fixup" is aborted and then the user manually amended the
   commit instead, which has been corrected.

 * When fsmonitor is in use, after operation on submodules updates
   .gitmodules, we lost track of the fact that we did so and relied on
   stale fsmonitor data.

 * Fix for a long-standing bug that leaves the index file corrupt when
   it shrinks during a partial commit.

 * Further fix for O_APPEND emulation on Windows

 * A corner case bugfix in "git rerere" code.

 * "git add ':(attr:foo)'" is not supported and is supposed to be
   rejected while the command line arguments are parsed, but we fail
   to reject such a command line upfront.

 * "git rebase" etc. in Git 2.19 fails to abort when given an empty
   commit log message as result of editing, which has been corrected.

 * The code to backfill objects in lazily cloned repository did not
   work correctly, which has been corrected.

 * Update error messages given by "git remote" and make them consistent.

 * "git update-ref" learned to make both "--no-deref" and "--stdin"
   work at the same time.

 * Recently added "range-diff" had a corner-case bug to cause it
   segfault, which has been corrected.

 * The recently introduced commit-graph auxiliary data is incompatible
   with mechanisms such as replace & grafts that "breaks" immutable
   nature of the object reference relationship.  Disable optimizations
   based on its use (and updating existing commit-graph) when these
   incompatible features are in use in the repository.

 * The mailmap file update.

 * The code in "git status" sometimes hit an assertion failure.  This
   was caused by a structure that was reused without cleaning the data
   used for the first run, which has been corrected.

 * A corner-case bugfix.

 * A partial clone that is configured to lazily fetch missing objects
   will on-demand issue a "git fetch" request to the originating
   repository to fill not-yet-obtained objects.  The request has been
   optimized for requesting a tree object (and not the leaf blob
   objects contained in it) by telling the originating repository that
   no blobs are needed.

 * The codepath to support the experimental split-index mode had
   remaining "racily clean" issues fixed.

 * "git log --graph" showing an octopus merge sometimes miscounted the
   number of display columns it is consuming to show the merge and its
   parent commits, which has been corrected.

 * The implementation of run_command() API on the UNIX platforms had a
   bug that caused a command not on $PATH to be found in the current
   directory.

 * A mutex used in "git pack-objects" were not correctly initialized
   and this caused "git repack" to dump core on Windows.

 * Under certain circumstances, "git diff D:/a/b/c D:/a/b/d" on
   Windows would strip initial parts from the paths because they
   were not recognized as absolute, which has been corrected.

 * The receive.denyCurrentBranch=updateInstead codepath kicked in even
   when the push should have been rejected due to other reasons, such
   as it does not fast-forward or the update-hook rejects it, which
   has been corrected.

 * "git repack" in a shallow clone did not correctly update the
   shallow points in the repository, leading to a repository that
   does not pass fsck.

 * Operations on promisor objects make sense in the context of only a
   small subset of the commands that internally use the revisions
   machinery, but the "--exclude-promisor-objects" option were taken
   and led to nonsense results by commands like "log", to which it
   didn't make much sense.  This has been corrected.

 * The "container" mode of TravisCI is going away.  Our .travis.yml
   file is getting prepared for the transition.

 * Our test scripts can now take the '-V' option as a synonym for the
   '--verbose-log' option.

 * A regression in Git 2.12 era made "git fsck" fall into an infinite
   loop while processing truncated loose objects.

Also contains various documentation updates and code clean-ups.

Revision 1.83.2.1 / (download) - annotate - [select for diffs], Sat Oct 6 12:03:41 2018 UTC (4 years, 11 months ago) by spz
Branch: pkgsrc-2018Q3
Changes since 1.83: +5 -5 lines
Diff to previous 1.83 (colored) next main 1.84 (colored)

Pullup ticket #5840 - requested by maya
devel/git-base: security update
devel/git: security update

Revisions pulled up:
- devel/git-base/distinfo                                       1.84
- devel/git/Makefile.version                                    1.74

-------------------------------------------------------------------
   Module Name:	pkgsrc
   Committed By:	maya
   Date:		Fri Oct  5 17:48:20 UTC 2018

   Modified Files:
   	pkgsrc/devel/git: Makefile.version
   	pkgsrc/devel/git-base: distinfo

   Log Message:
   Git: update to 2.19.1

   These releases fix a security flaw (CVE-2018-17456), which allowed an
   attacker to execute arbitrary code by crafting a malicious .gitmodules
   file in a project cloned with --recurse-submodules.

   When running "git clone --recurse-submodules", Git parses the supplied
   .gitmodules file for a URL field and blindly passes it as an argument
   to a "git clone" subprocess.  If the URL field is set to a string that
   begins with a dash, this "git clone" subprocess interprets the URL as
   an option.  This can lead to executing an arbitrary script shipped in
   the superproject as the user who ran "git clone".

   In addition to fixing the security issue for the user running "clone",
   the 2.17.2, 2.18.1 and 2.19.1 releases have an "fsck" check which can
   be used to detect such malicious repository content when fetching or
   accepting a push. See "transfer.fsckObjects" in git-config(1).

   Credit for finding and fixing this vulnerability goes to joernchen
   and Jeff King, respectively.


   To generate a diff of this commit:
   cvs rdiff -u -r1.73 -r1.74 pkgsrc/devel/git/Makefile.version
   cvs rdiff -u -r1.83 -r1.84 pkgsrc/devel/git-base/distinfo

Revision 1.84 / (download) - annotate - [select for diffs], Fri Oct 5 17:48:20 2018 UTC (4 years, 11 months ago) by maya
Branch: MAIN
Changes since 1.83: +5 -5 lines
Diff to previous 1.83 (colored)

Git: update to 2.19.1

These releases fix a security flaw (CVE-2018-17456), which allowed an
attacker to execute arbitrary code by crafting a malicious .gitmodules
file in a project cloned with --recurse-submodules.

When running "git clone --recurse-submodules", Git parses the supplied
.gitmodules file for a URL field and blindly passes it as an argument
to a "git clone" subprocess.  If the URL field is set to a string that
begins with a dash, this "git clone" subprocess interprets the URL as
an option.  This can lead to executing an arbitrary script shipped in
the superproject as the user who ran "git clone".

In addition to fixing the security issue for the user running "clone",
the 2.17.2, 2.18.1 and 2.19.1 releases have an "fsck" check which can
be used to detect such malicious repository content when fetching or
accepting a push. See "transfer.fsckObjects" in git-config(1).

Credit for finding and fixing this vulnerability goes to joernchen
and Jeff King, respectively.

Revision 1.83 / (download) - annotate - [select for diffs], Thu Sep 13 10:56:42 2018 UTC (5 years ago) by adam
Branch: MAIN
CVS Tags: pkgsrc-2018Q3-base
Branch point for: pkgsrc-2018Q3
Changes since 1.82: +5 -5 lines
Diff to previous 1.82 (colored)

git: updated to 2.19.0

Git 2.19 Release Notes

Updates since v2.18
-------------------

UI, Workflows & Features

 * "git diff" compares the index and the working tree.  For paths
   added with intent-to-add bit, the command shows the full contents
   of them as added, but the paths themselves were not marked as new
   files.  They are now shown as new by default.

   "git apply" learned the "--intent-to-add" option so that an
   otherwise working-tree-only application of a patch will add new
   paths to the index marked with the "intent-to-add" bit.

 * "git grep" learned the "--column" option that gives not just the
   line number but the column number of the hit.

 * The "-l" option in "git branch -l" is an unfortunate short-hand for
   "--create-reflog", but many users, both old and new, somehow expect
   it to be something else, perhaps "--list".  This step warns when "-l"
   is used as a short-hand for "--create-reflog" and warns about the
   future repurposing of the it when it is used.

 * The userdiff pattern for .php has been updated.

 * The content-transfer-encoding of the message "git send-email" sends
   out by default was 8bit, which can cause trouble when there is an
   overlong line to bust RFC 5322/2822 limit.  A new option 'auto' to
   automatically switch to quoted-printable when there is such a line
   in the payload has been introduced and is made the default.

 * "git checkout" and "git worktree add" learned to honor
   checkout.defaultRemote when auto-vivifying a local branch out of a
   remote tracking branch in a repository with multiple remotes that
   have tracking branches that share the same names.
   (merge 8d7b558bae ab/checkout-default-remote later to maint).

 * "git grep" learned the "--only-matching" option.

 * "git rebase --rebase-merges" mode now handles octopus merges as
   well.

 * Add a server-side knob to skip commits in exponential/fibbonacci
   stride in an attempt to cover wider swath of history with a smaller
   number of iterations, potentially accepting a larger packfile
   transfer, instead of going back one commit a time during common
   ancestor discovery during the "git fetch" transaction.
   (merge 42cc7485a2 jt/fetch-negotiator-skipping later to maint).

 * A new configuration variable core.usereplacerefs has been added,
   primarily to help server installations that want to ignore the
   replace mechanism altogether.

 * Teach "git tag -s" etc. a few configuration variables (gpg.format
   that can be set to "openpgp" or "x509", and gpg.<format>.program
   that is used to specify what program to use to deal with the format)
   to allow x.509 certs with CMS via "gpgsm" to be used instead of
   openpgp via "gnupg".

 * Many more strings are prepared for l10n.

 * "git p4 submit" learns to ask its own pre-submit hook if it should
   continue with submitting.

 * The test performed at the receiving end of "git push" to prevent
   bad objects from entering repository can be customized via
   receive.fsck.* configuration variables; we now have gained a
   counterpart to do the same on the "git fetch" side, with
   fetch.fsck.* configuration variables.

 * "git pull --rebase=interactive" learned "i" as a short-hand for
   "interactive".

 * "git instaweb" has been adjusted to run better with newer Apache on
   RedHat based distros.

 * "git range-diff" is a reimplementation of "git tbdiff" that lets us
   compare individual patches in two iterations of a topic.

 * The sideband code learned to optionally paint selected keywords at
   the beginning of incoming lines on the receiving end.

 * "git branch --list" learned to take the default sort order from the
   'branch.sort' configuration variable, just like "git tag --list"
   pays attention to 'tag.sort'.

 * "git worktree" command learned "--quiet" option to make it less
   verbose.


Performance, Internal Implementation, Development Support etc.

 * The bulk of "git submodule foreach" has been rewritten in C.

 * The in-core "commit" object had an all-purpose "void *util" field,
   which was tricky to use especially in library-ish part of the
   code.  All of the existing uses of the field has been migrated to a
   more dedicated "commit-slab" mechanism and the field is eliminated.

 * A less often used command "git show-index" has been modernized.
   (merge fb3010c31f jk/show-index later to maint).

 * The conversion to pass "the_repository" and then "a_repository"
   throughout the object access API continues.

 * Continuing with the idea to programatically enumerate various
   pieces of data required for command line completion, teach the
   codebase to report the list of configuration variables
   subcommands care about to help complete them.

 * Separate "rebase -p" codepath out of "rebase -i" implementation to
   slim down the latter and make it easier to manage.

 * Make refspec parsing codepath more robust.

 * Some flaky tests have been fixed.

 * Continuing with the idea to programmatically enumerate various
   pieces of data required for command line completion, the codebase
   has been taught to enumerate options prefixed with "--no-" to
   negate them.

 * Build and test procedure for netrc credential helper (in contrib/)
   has been updated.

 * Remove unused function definitions and declarations from ewah
   bitmap subsystem.

 * Code preparation to make "git p4" closer to be usable with Python 3.

 * Tighten the API to make it harder to misuse in-tree .gitmodules
   file, even though it shares the same syntax with configuration
   files, to read random configuration items from it.

 * "git fast-import" has been updated to avoid attempting to create
   delta against a zero-byte-long string, which is pointless.

 * The codebase has been updated to compile cleanly with -pedantic
   option.
   (merge 2b647a05d7 bb/pedantic later to maint).

 * The character display width table has been updated to match the
   latest Unicode standard.
   (merge 570951eea2 bb/unicode-11-width later to maint).

 * test-lint now looks for broken use of "VAR=VAL shell_func" in test
   scripts.

 * Conversion from uchar[40] to struct object_id continues.

 * Recent "security fix" to pay attention to contents of ".gitmodules"
   while accepting "git push" was a bit overly strict than necessary,
   which has been adjusted.

 * "git fsck" learns to make sure the optional commit-graph file is in
   a sane state.

 * "git diff --color-moved" feature has further been tweaked.

 * Code restructuring and a small fix to transport protocol v2 during
   fetching.

 * Parsing of -L[<N>][,[<M>]] parameters "git blame" and "git log"
   take has been tweaked.

 * lookup_commit_reference() and friends have been updated to find
   in-core object for a specific in-core repository instance.

 * Various glitches in the heuristics of merge-recursive strategy have
   been documented in new tests.

 * "git fetch" learned a new option "--negotiation-tip" to limit the
   set of commits it tells the other end as "have", to reduce wasted
   bandwidth and cycles, which would be helpful when the receiving
   repository has a lot of refs that have little to do with the
   history at the remote it is fetching from.

 * For a large tree, the index needs to hold many cache entries
   allocated on heap.  These cache entries are now allocated out of a
   dedicated memory pool to amortize malloc(3) overhead.

 * Tests to cover various conflicting cases have been added for
   merge-recursive.

 * Tests to cover conflict cases that involve submodules have been
   added for merge-recursive.

 * Look for broken "&&" chains that are hidden in subshell, many of
   which have been found and corrected.

 * The singleton commit-graph in-core instance is made per in-core
   repository instance.

 * "make DEVELOPER=1 DEVOPTS=pedantic" allows developers to compile
   with -pedantic option, which may catch more problematic program
   constructs and potential bugs.

 * Preparatory code to later add json output for telemetry data has
   been added.

 * Update the way we use Coccinelle to find out-of-style code that
   need to be modernised.

 * It is too easy to misuse system API functions such as strcat();
   these selected functions are now forbidden in this codebase and
   will cause a compilation failure.

 * Add a script (in contrib/) to help users of VSCode work better with
   our codebase.

 * The Travis CI scripts were taught to ship back the test data from
   failed tests.
   (merge aea8879a6a sg/travis-retrieve-trash-upon-failure later to maint).

 * The parse-options machinery learned to refrain from enclosing
   placeholder string inside a "<bra" and "ket>" pair automatically
   without PARSE_OPT_LITERAL_ARGHELP.  Existing help text for option
   arguments that are not formatted correctly have been identified and
   fixed.
   (merge 5f0df44cd7 rs/parse-opt-lithelp later to maint).

 * Noiseword "extern" has been removed from function decls in the
   header files.

 * A few atoms like %(objecttype) and %(objectsize) in the format
   specifier of "for-each-ref --format=<format>" can be filled without
   getting the full contents of the object, but just with the object
   header.  These cases have been optimized by calling
   oid_object_info() API (instead of reading and inspecting the data).

 * The end result of documentation update has been made to be
   inspected more easily to help developers.

 * The API to iterate over all objects learned to optionally list
   objects in the order they appear in packfiles, which helps locality
   of access if the caller accesses these objects while as objects are
   enumerated.

 * Improve built-in facility to catch broken &&-chain in the tests.

 * The more library-ish parts of the codebase learned to work on the
   in-core index-state instance that is passed in by their callers,
   instead of always working on the singleton "the_index" instance.

 * A test prerequisite defined by various test scripts with slightly
   different semantics has been consolidated into a single copy and
   made into a lazily defined one.
   (merge 6ec633059a wc/make-funnynames-shared-lazy-prereq later to maint).

 * After a partial clone, repeated fetches from promisor remote would
   have accumulated many packfiles marked with .promisor bit without
   getting them coalesced into fewer packfiles, hurting performance.
   "git repack" now learned to repack them.

 * Partially revert the support for multiple hash functions to regain
   hash comparison performance; we'd think of a way to do this better
   in the next cycle.

 * "git help --config" (which is used in command line completion)
   missed the configuration variables not described in the main
   config.txt file but are described in another file that is included
   by it, which has been corrected.

 * The test linter code has learned that the end of here-doc mark
   "EOF" can be quoted in a double-quote pair, not just in a
   single-quote pair.

Revision 1.82 / (download) - annotate - [select for diffs], Fri Jun 22 08:57:17 2018 UTC (5 years, 3 months ago) by adam
Branch: MAIN
CVS Tags: pkgsrc-2018Q2-base, pkgsrc-2018Q2
Changes since 1.81: +6 -7 lines
Diff to previous 1.81 (colored)

git: updated to 2.18.0

2.18.0:

UI, Workflows & Features

 * Rename detection logic that is used in "merge" and "cherry-pick" has
   learned to guess when all of x/a, x/b and x/c have moved to z/a,
   z/b and z/c, it is likely that x/d added in the meantime would also
   want to move to z/d by taking the hint that the entire directory
   'x' moved to 'z'.  A bug causing dirty files involved in a rename
   to be overwritten during merge has also been fixed as part of this
   work.  Incidentally, this also avoids updating a file in the
   working tree after a (non-trivial) merge whose result matches what
   our side originally had.

 * "git filter-branch" learned to use a different exit code to allow
   the callers to tell the case where there was no new commits to
   rewrite from other error cases.

 * When built with more recent cURL, GIT_SSL_VERSION can now specify
   "tlsv1.3" as its value.

 * "git gui" learned that "~/.ssh/id_ecdsa.pub" and
   "~/.ssh/id_ed25519.pub" are also possible SSH key files.
   (merge 2e2f0288ef bb/git-gui-ssh-key-files later to maint).

 * "git gui" performs commit upon CTRL/CMD+ENTER but the
   CTRL/CMD+KP_ENTER (i.e. enter key on the numpad) did not have the
   same key binding.  It now does.
   (merge 28a1d94a06 bp/git-gui-bind-kp-enter later to maint).

 * "git gui" has been taught to work with old versions of tk (like
   8.5.7) that do not support "ttk::style theme use" as a way to query
   the current theme.
   (merge 4891961105 cb/git-gui-ttk-style later to maint).

 * "git rebase" has learned to honor "--signoff" option when using
   backends other than "am" (but not "--preserve-merges").

 * "git branch --list" during an interrupted "rebase -i" now lets
   users distinguish the case where a detached HEAD is being rebased
   and a normal branch is being rebased.

 * "git mergetools" learned talking to guiffy.

 * The scripts in contrib/emacs/ have outlived their usefulness and
   have been replaced with a stub that errors out and tells the user
   there are replacements.

 * The new "working-tree-encoding" attribute can ask Git to convert the
   contents to the specified encoding when checking out to the working
   tree (and the other way around when checking in).

 * The "git config" command uses separate options e.g. "--int",
   "--bool", etc. to specify what type the caller wants the value to
   be interpreted as.  A new "--type=<typename>" option has been
   introduced, which would make it cleaner to define new types.

 * "git config --get" learned the "--default" option, to help the
   calling script.  Building on top of the above changes, the
   "git config" learns "--type=color" type.  Taken together, you can
   do things like "git config --get foo.color --default blue" and get
   the ANSI color sequence for the color given to foo.color variable,
   or "blue" if the variable does not exist.

 * "git ls-remote" learned an option to allow sorting its output based
   on the refnames being shown.

 * The command line completion (in contrib/) has been taught that "git
   stash save" has been deprecated ("git stash push" is the preferred
   spelling in the new world) and does not offer it as a possible
   completion candidate when "git stash push" can be.

 * "git gc --prune=nonsense" spent long time repacking and then
   silently failed when underlying "git prune --expire=nonsense"
   failed to parse its command line.  This has been corrected.

 * Error messages from "git push" can be painted for more visibility.

 * "git http-fetch" (deprecated) had an optional and experimental
   "feature" to fetch only commits and/or trees, which nobody used.
   This has been removed.

 * The functionality of "$GIT_DIR/info/grafts" has been superseded by
   the "refs/replace/" mechanism for some time now, but the internal
   code had support for it in many places, which has been cleaned up
   in order to drop support of the "grafts" mechanism.

 * "git worktree add" learned to check out an existing branch.

 * "git --no-pager cmd" did not have short-and-sweet single letter
   option. Now it does as "-P".
   (merge 7213c28818 js/no-pager-shorthand later to maint).

 * "git rebase" learned "--rebase-merges" to transplant the whole
   topology of commit graph elsewhere.

 * "git status" learned to pay attention to UI related diff
   configuration variables such as diff.renames.

 * The command line completion mechanism (in contrib/) learned to load
   custom completion file for "git $command" where $command is a
   custom "git-$command" that the end user has on the $PATH when using
   newer version of bash-completion.

 * "git send-email" can sometimes offer confirmation dialog "Send this
   email?" with choices 'Yes', 'No', 'Quit', and 'All'.  A new action
   'Edit' has been added to this dialog's choice.

 * With merge.renames configuration set to false, the recursive merge
   strategy can be told not to spend cycles trying to find renamed
   paths and merge them accordingly.

 * "git status" learned to honor a new status.renames configuration to
   skip rename detection, which could be useful for those who want to
   do so without disabling the default rename detection done by the
   "git diff" command.

 * Command line completion (in contrib/) learned to complete pathnames
   for various commands better.

 * "git blame" learns to unhighlight uninteresting metadata from the
   originating commit on lines that are the same as the previous one,
   and also paint lines in different colors depending on the age of
   the commit.

 * Transfer protocol v2 learned to support the partial clone.

 * When a short hexadecimal string is used to name an object but there
   are multiple objects that share the string as the prefix of their
   names, the code lists these ambiguous candidates in a help message.
   These object names are now sorted according to their types for
   easier eyeballing.

 * "git fetch $there $refspec" that talks over protocol v2 can take
   advantage of server-side ref filtering; the code has been extended
   so that this mechanism triggers also when fetching with configured
   refspec.

 * Our HTTP client code used to advertise that we accept gzip encoding
   from the other side; instead, just let cURL library to advertise
   and negotiate the best one.

 * "git p4" learned to "unshelve" shelved commit from P4.
   (merge 123f631761 ld/p4-unshelve later to maint).

Revision 1.78.2.1 / (download) - annotate - [select for diffs], Fri Jun 8 10:39:05 2018 UTC (5 years, 3 months ago) by bsiegert
Branch: pkgsrc-2018Q1
Changes since 1.78: +5 -5 lines
Diff to previous 1.78 (colored) next main 1.79 (colored)

Pullup ticket #5769 - requested by leot
devel/git: security fix

This was submitted as a manual patch.

---
   git: Update devel/git to 2.16.4

   Changes:
   Git v2.16.4 Release Notes
   =========================
   This release is to forward-port the fixes made in the v2.13.7 version
   of Git.  See its release notes for details.

   [...2.13.7 release notes...:]

    * Submodule "names" come from the untrusted .gitmodules file, but we
      blindly append them to $GIT_DIR/modules to create our on-disk repo
      paths. This means you can do bad things by putting "../" into the
      name. We now enforce some rules for submodule names which will cause
      Git to ignore these malicious names (CVE-2018-11235).

      Credit for finding this vulnerability and the proof of concept from
      which the test script was adapted goes to Etienne Stalmans.

    * It was possible to trick the code that sanity-checks paths on NTFS
      into reading random piece of memory (CVE-2018-11233).

   Credit for fixing for these bugs goes to Jeff King, Johannes
   Schindelin and others.

Revision 1.81 / (download) - annotate - [select for diffs], Wed May 30 06:40:43 2018 UTC (5 years, 4 months ago) by adam
Branch: MAIN
Changes since 1.80: +5 -5 lines
Diff to previous 1.80 (colored)

git: updated to 2.17.1

Git v2.17.1:

Fixes:

 * This release contains the same fixes made in the v2.13.7 version of
   Git, covering CVE-2018-11233 and 11235, and forward-ported to
   v2.14.4, v2.15.2 and v2.16.4 releases.  See release notes to
   v2.13.7 for details.

 * In addition to the above fixes, this release has support on the
   server side to reject pushes to repositories that attempt to create
   such problematic .gitmodules file etc. as tracked contents, to help
   hosting sites protect their customers by preventing malicious
   contents from spreading.

Revision 1.80 / (download) - annotate - [select for diffs], Sat Apr 14 06:18:24 2018 UTC (5 years, 5 months ago) by adam
Branch: MAIN
Changes since 1.79: +2 -2 lines
Diff to previous 1.79 (colored)

git-base: fixed PERLLIBDIR; removed unused SUBST

Revision 1.79 / (download) - annotate - [select for diffs], Wed Apr 11 19:39:34 2018 UTC (5 years, 5 months ago) by adam
Branch: MAIN
Changes since 1.78: +6 -8 lines
Diff to previous 1.78 (colored)

git: updated to 2.17.0

Git 2.17:

UI, Workflows & Features
* "diff" family of commands learned "--find-object=<object-id>" option
  to limit the findings to changes that involve the named object.
* "git format-patch" learned to give 72-cols to diffstat, which is
  consistent with other line length limits the subcommand uses for
  its output meant for e-mails.
* The log from "git daemon" can be redirected with a new option; one
  relevant use case is to send the log to standard error (instead of
  syslog) when running it from inetd.
* "git rebase" learned to take "--allow-empty-message" option.
* "git am" has learned the "--quit" option, in addition to the
  existing "--abort" option; having the pair mirrors a few other
  commands like "rebase" and "cherry-pick".
* "git worktree add" learned to run the post-checkout hook, just like
  "git clone" runs it upon the initial checkout.
* "git tag" learned an explicit "--edit" option that allows the
  message given via "-m" and "-F" to be further edited.
* "git fetch --prune-tags" may be used as a handy short-hand for
  getting rid of stale tags that are locally held.
* The new "--show-current-patch" option gives an end-user facing way
  to get the diff being applied when "git rebase" (and "git am")
  stops with a conflict.
* "git add -p" used to offer "/" (look for a matching hunk) as a
  choice, even there was only one hunk, which has been corrected.
  Also the single-key help is now given only for keys that are
  enabled (e.g. help for '/' won't be shown when there is only one
  hunk).
* Since Git 1.7.9, "git merge" defaulted to --no-ff (i.e. even when
  the side branch being merged is a descendant of the current commit,
  create a merge commit instead of fast-forwarding) when merging a
  tag object.  This was appropriate default for integrators who pull
  signed tags from their downstream contributors, but caused an
  unnecessary merges when used by downstream contributors who
  habitually "catch up" their topic branches with tagged releases
  from the upstream.  Update "git merge" to default to --no-ff only
  when merging a tag object that does *not* sit at its usual place in
  refs/tags/ hierarchy, and allow fast-forwarding otherwise, to
  mitigate the problem.
* "git status" can spend a lot of cycles to compute the relation
  between the current branch and its upstream, which can now be
  disabled with "--no-ahead-behind" option.
* "git diff" and friends learned funcname patterns for Go language
  source files.
* "git send-email" learned "--reply-to=<address>" option.
* Funcname pattern used for C# now recognizes "async" keyword.
* In a way similar to how "git tag" learned to honor the pager
  setting only in the list mode, "git config" learned to ignore the
  pager setting when it is used for setting values (i.e. when the
  purpose of the operation is not to "show").

Performance, Internal Implementation, Development Support etc.
* More perf tests for threaded grep
* "perf" test output can be sent to codespeed server.
* The build procedure for perl/ part has been greatly simplified by
  weaning ourselves off of MakeMaker.
* Perl 5.8 or greater has been required since Git 1.7.4 released in
  2010, but we continued to assume some core modules may not exist and
  used a conditional "eval { require <<module>> }"; we no longer do
  this.  Some platforms (Fedora/RedHat/CentOS, for example) ship Perl
  without all core modules by default (e.g. Digest::MD5, File::Temp,
  File::Spec, Net::Domain, Net::SMTP).  Users on such platforms may
  need to install these additional modules.
* As a convenience, we install copies of Perl modules we require which
  are not part of the core Perl distribution (e.g. Error and
  Mail::Address).  Users and packagers whose operating system provides
  these modules can set NO_PERL_CPAN_FALLBACKS to avoid installing the
  bundled modules.
* In preparation for implementing narrow/partial clone, the machinery
  for checking object connectivity used by gc and fsck has been
  taught that a missing object is OK when it is referenced by a
  packfile specially marked as coming from trusted repository that
  promises to make them available on-demand and lazily.
* The machinery to clone & fetch, which in turn involves packing and
  unpacking objects, has been told how to omit certain objects using
  the filtering mechanism introduced by another topic.  It now knows
  to mark the resulting pack as a promisor pack to tolerate missing
  objects, laying foundation for "narrow" clones.
* The first step to getting rid of mru API and using the
  doubly-linked list API directly instead.
* Retire mru API as it does not give enough abstraction over
  underlying list API to be worth it.
* Rewrite two more "git submodule" subcommands in C.
* The tracing machinery learned to report tweaking of environment
  variables as well.
* Update Coccinelle rules to catch and optimize strbuf_addf(&buf, "%s", str)
* Prevent "clang-format" from breaking line after function return type.
* The sequencer infrastructure is shared across "git cherry-pick",
  "git rebase -i", etc., and has always spawned "git commit" when it
  needs to create a commit.  It has been taught to do so internally,
  when able, by reusing the codepath "git commit" itself uses, which
  gives performance boost for a few tens of percents in some sample
  scenarios.
* Push the submodule version of collision-detecting SHA-1 hash
  implementation a bit harder on builders.
* Avoid mmapping small files while using packed refs (especially ones
  with zero size, which would cause later munmap() to fail).
* Conversion from uchar[20] to struct object_id continues.
* More tests for wildmatch functions.
* The code to binary search starting from a fan-out table (which is
  how the packfile is indexed with object names) has been refactored
  into a reusable helper.
* We now avoid using identifiers that clash with C++ keywords.  Even
  though it is not a goal to compile Git with C++ compilers, changes
  like this help use of code analysis tools that targets C++ on our
  codebase.
* The executable is now built in 'script' phase in Travis CI integration,
  to follow the established practice, rather than during 'before_script'
  phase.  This allows the CI categorize the failures better ('failed'
  is project's fault, 'errored' is build environment's).
* Writing out the index file when the only thing that changed in it
  is the untracked cache information is often wasteful, and this has
  been optimized out.
* Various pieces of Perl code we have have been cleaned up.
* Internal API clean-up to allow write_locked_index() optionally skip
  writing the in-core index when it is not modified.

Revision 1.78 / (download) - annotate - [select for diffs], Sat Mar 24 08:09:40 2018 UTC (5 years, 6 months ago) by adam
Branch: MAIN
CVS Tags: pkgsrc-2018Q1-base
Branch point for: pkgsrc-2018Q1
Changes since 1.77: +5 -5 lines
Diff to previous 1.77 (colored)

git: updated to 2.16.3

Git v2.16.3 Release Notes

* "git status" after moving a path in the working tree (hence making
  it appear "removed") and then adding with the -N option (hence
  making that appear "added") detected it as a rename, but did not
  report the  old and new pathnames correctly.

* "git commit --fixup" did not allow "-m<message>" option to be used
  at the same time; allow it to annotate resulting commit with more
  text.

* When resetting the working tree files recursively, the working tree
  of submodules are now also reset to match.

* Fix for a commented-out code to adjust it to a rather old API change
  around object ID.

* When there are too many changed paths, "git diff" showed a warning
  message but in the middle of a line.

* The http tracing code, often used to debug connection issues,
  learned to redact potentially sensitive information from its output
  so that it can be more safely sharable.

* Crash fix for a corner case where an error codepath tried to unlock
  what it did not acquire lock on.

* The split-index mode had a few corner case bugs fixed.

* Assorted fixes to "git daemon".

* Completion of "git merge -s<strategy>" (in contrib/) did not work
  well in non-C locale.

* Workaround for segfault with more recent versions of SVN.

* Recently introduced leaks in fsck have been plugged.

* Travis CI integration now builds the executable in 'script' phase
  to follow the established practice, rather than during
  'before_script' phase.  This allows the CI categorize the failures
  better ('failed' is project's fault, 'errored' is build
  environment's).

Revision 1.77 / (download) - annotate - [select for diffs], Tue Feb 20 09:26:56 2018 UTC (5 years, 7 months ago) by adam
Branch: MAIN
Changes since 1.76: +5 -5 lines
Diff to previous 1.76 (colored)

git: updated to 2.16.2

Git v2.16.2 Release Notes

Fixes since v2.16.1

 * An old regression in "git describe --all $annotated_tag^0" has been
   fixed.

 * "git svn dcommit" did not take into account the fact that a
   svn+ssh:// URL with a username@ (typically used for pushing) refers
   to the same SVN repository without the username@ and failed when
   svn.pushmergeinfo option is set.

 * "git merge -Xours/-Xtheirs" learned to use our/their version when
   resolving a conflicting updates to a symbolic link.

 * "git clone $there $here" is allowed even when here directory exists
   as long as it is an empty directory, but the command incorrectly
   removed it upon a failure of the operation.

 * "git stash -- <pathspec>" incorrectly blew away untracked files in
   the directory that matched the pathspec, which has been corrected.

 * "git add -p" was taught to ignore local changes to submodules as
   they do not interfere with the partial addition of regular changes
   anyway.

Revision 1.76 / (download) - annotate - [select for diffs], Tue Jan 23 10:28:55 2018 UTC (5 years, 8 months ago) by adam
Branch: MAIN
Changes since 1.75: +5 -5 lines
Diff to previous 1.75 (colored)

git: updated to 2.16.1

Git v2.16.1 Release Notes

Fixes since v2.16
* "git clone" segfaulted when cloning a project that happens to
  track two paths that differ only in case on a case insensitive
  filesystem.

Revision 1.75 / (download) - annotate - [select for diffs], Mon Jan 22 14:17:24 2018 UTC (5 years, 8 months ago) by adam
Branch: MAIN
Changes since 1.74: +5 -5 lines
Diff to previous 1.74 (colored)

git: updated to 2.16.0

Git 2.16 Release Notes
Backward compatibility notes and other notable changes.
 * Use of an empty string as a pathspec element that is used for
   'everything matches' is now an error.

Updates since v2.15
UI, Workflows & Features

 * An empty string as a pathspec element that means "everything"
   i.e. 'git add ""', is now illegal.  We started this by first
   deprecating and warning a pathspec that has such an element in
   2.11 (Nov 2016).

 * A hook script that is set unexecutable is simply ignored.  Git
   notifies when such a file is ignored, unless the message is
   squelched via advice.ignoredHook configuration.

 * "git pull" has been taught to accept "--[no-]signoff" option and
   pass it down to "git merge".

 * The "--push-option=<string>" option to "git push" now defaults to a
   list of strings configured via push.pushOption variable.

 * "gitweb" checks if a directory is searchable with Perl's "-x"
   operator, which can be enhanced by using "filetest 'access'"
   pragma, which now we do.

 * "git stash save" has been deprecated in favour of "git stash push".

 * The set of paths output from "git status --ignored" was tied
   closely with its "--untracked=<mode>" option, but now it can be
   controlled more flexibly.  Most notably, a directory that is
   ignored because it is listed to be ignored in the ignore/exclude
   mechanism can be handled differently from a directory that ends up
   to be ignored only because all files in it are ignored.

 * The remote-helper for talking to MediaWiki has been updated to
   truncate an overlong pagename so that ".mw" suffix can still be
   added.

 * The remote-helper for talking to MediaWiki has been updated to
   work with mediawiki namespaces.

 * The "--format=..." option "git for-each-ref" takes learned to show
   the name of the 'remote' repository and the ref at the remote side
   that is affected for 'upstream' and 'push' via "%(push:remotename)"
   and friends.

 * Doc and message updates to teach users "bisect view" is a synonym
   for "bisect visualize".

 * "git bisect run" that did not specify any command to run used to go
   ahead and treated all commits to be tested as 'good'.  This has
   been corrected by making the command error out.

 * The SubmittingPatches document has been converted to produce an
   HTML version via AsciiDoc/Asciidoctor.

 * We learned to optionally talk to a file system monitor via new
   fsmonitor extension to speed up "git status" and other operations
   that need to see which paths have been modified.  Currently we only
   support "watchman".  See File System Monitor section of
   git-update-index(1) for more detail.

 * The "diff" family of commands learned to ignore differences in
   carriage return at the end of line.

 * Places that know about "sendemail.to", like documentation and shell
   completion (in contrib/) have been taught about "sendemail.tocmd",
   too.

 * "git add --renormalize ." is a new and safer way to record the fact
   that you are correcting the end-of-line convention and other
   "convert_to_git()" glitches in the in-repository data.

 * "git branch" and "git checkout -b" are now forbidden from creating
   a branch whose name is "HEAD".

 * "git branch --list" learned to show its output through the pager by
   default when the output is going to a terminal, which is controlled
   by the pager.branch configuration variable.  This is similar to a
   recent change to "git tag --list".

 * "git grep -W", "git diff -W" and their friends learned a heuristic
   to extend a pre-context beyond the line that matches the "function
   pattern" (aka "diff.*.xfuncname") to include a comment block, if
   exists, that immediately precedes it.

 * "git config --expiry-date gc.reflogexpire" can read "2.weeks" from
   the configuration and report it as a timestamp, just like "--int"
   would read "1k" and report 1024, to help consumption by scripts.

 * The shell completion (in contrib/) learned that "git pull" can take
   the "--autostash" option.

 * The tagnames "git log --decorate" uses to annotate the commits can
   now be limited to subset of available refs with the two additional
   options, --decorate-refs[-exclude]=<pattern>.

 * "git grep" compiled with libpcre2 sometimes triggered a segfault,
   which is being fixed.

 * "git send-email" tries to see if the sendmail program is available
   in /usr/lib and /usr/sbin; extend the list of locations to be
   checked to also include directories on $PATH.

 * "git diff" learned, "--anchored", a variant of the "--patience"
   algorithm, to which the user can specify which 'unique' line to be
   used as anchoring points.

 * The way "git worktree add" determines what branch to create from
   where and checkout in the new worktree has been updated a bit.

 * Ancient part of codebase still shows dots after an abbreviated
   object name just to show that it is not a full object name, but
   these ellipses are confusing to people who newly discovered Git
   who are used to seeing abbreviated object names and find them
   confusing with the range syntax.

 * With a configuration variable rebase.abbreviateCommands set,
   "git rebase -i" produces the todo list with a single-letter
   command names.

 * "git worktree add" learned to run the post-checkout hook, just like
   "git checkout" does, after the initial checkout.

 * "git svn" has been updated to strip CRs in the commit messages, as
   recent versions of Subversion rejects them.

 * "git imap-send" did not correctly quote the folder name when
   making a request to the server, which has been corrected.

 * Error messages from "git rebase" have been somewhat cleaned up.

 * Git has been taught to support an https:// URL used for http.proxy
   when using recent versions of libcurl.

 * "git merge" learned to pay attention to merge.verifySignatures
   configuration variable and pretend as if '--verify-signatures'
   option was given from the command line.

 * "git describe" was taught to dig trees deeper to find a
   <commit-ish>:<path> that refers to a given blob object.

Revision 1.74 / (download) - annotate - [select for diffs], Thu Nov 30 07:50:01 2017 UTC (5 years, 10 months ago) by adam
Branch: MAIN
CVS Tags: pkgsrc-2017Q4-base, pkgsrc-2017Q4
Changes since 1.73: +5 -5 lines
Diff to previous 1.73 (colored)

git: updated to 2.15.1

Git v2.15.1 Release Notes

Fixes since v2.15
-----------------

 * TravisCI build updates.

 * "auto" as a value for the columnar output configuration ought to
   judge "is the output consumed by humans?" with the same criteria as
   "auto" for coloured output configuration, i.e. either the standard
   output stream is going to tty, or a pager is in use.  We forgot the
   latter, which has been fixed.

 * The experimental "color moved lines differently in diff output"
   feature was buggy around "ignore whitespace changes" edges, which
   has been corrected.

 * Instead of using custom line comparison and hashing functions to
   implement "moved lines" coloring in the diff output, use the pair
   of these functions from lower-layer xdiff/ code.

 * Some codepaths did not check for errors when asking what branch the
   HEAD points at, which have been fixed.

 * "git commit", after making a commit, did not check for errors when
   asking on what branch it made the commit, which has been corrected.

 * "git status --ignored -u" did not stop at a working tree of a
   separate project that is embedded in an ignored directory and
   listed files in that other project, instead of just showing the
   directory itself as ignored.

 * A broken access to object databases in recent update to "git grep
   --recurse-submodules" has been fixed.

 * A recent regression in "git rebase -i" that broke execution of git
   commands from subdirectories via "exec" instruction has been fixed.

 * "git check-ref-format --branch @{-1}" bit a "BUG()" when run
   outside a repository for obvious reasons; clarify the documentation
   and make sure we do not even try to expand the at-mark magic in
   such a case, but still call the validation logic for branch names.

 * Command line completion (in contrib/) update.

 * Description of blame.{showroot,blankboundary,showemail,date}
   configuration variables have been added to "git config --help".

 * After an error from lstat(), diff_populate_filespec() function
   sometimes still went ahead and used invalid data in struct stat,
   which has been fixed.

 * UNC paths are also relevant in Cygwin builds and they are now
   tested just like Mingw builds.

 * Correct start-up sequence so that a repository could be placed
   immediately under the root directory again (which was broken at
   around Git 2.13).

 * The credential helper for libsecret (in contrib/) has been improved
   to allow possibly prompting the end user to unlock secrets that are
   currently locked (otherwise the secrets may not be loaded).

 * Updates from GfW project.

 * "git rebase -i" recently started misbehaving when a submodule that
   is configured with 'submodule.<name>.ignore' is dirty; this has
   been corrected.

 * Some error messages did not quote filenames shown in it, which have
   been fixed.

 * Building with NO_LIBPCRE1_JIT did not disable it, which has been fixed.

 * We used to add an empty alternate object database to the system
   that does not help anything; it has been corrected.

 * Error checking in "git imap-send" for empty response has been
   improved.

 * An ancient bug in "git apply --ignore-space-change" codepath has
   been fixed.

 * There was a recent semantic mismerge in the codepath to write out a
   section of a configuration section, which has been corrected.

Revision 1.70.4.1 / (download) - annotate - [select for diffs], Sat Nov 25 08:49:05 2017 UTC (5 years, 10 months ago) by bsiegert
Branch: pkgsrc-2017Q3
Changes since 1.70: +5 -5 lines
Diff to previous 1.70 (colored) next main 1.71 (colored)

Pullup ticket #5646 - requested by he
devel/git-base: security fix

Revisions pulled up:
- devel/git-base/Makefile                                       1.46
- devel/git-base/distinfo                                       1.71-1.72
- devel/git/Makefile.version                                    1.62-1.63

---
   Module Name:	pkgsrc
   Committed By:	adam
   Date:		Wed Sep 27 06:37:47 UTC 2017

   Modified Files:
   	pkgsrc/devel/git: Makefile.version
   	pkgsrc/devel/git-base: Makefile distinfo

   Log Message:
   git: update to 2.14.2

   Fixes since v2.14.1

    * Because recent Git for Windows do come with a real msgfmt, the
      build procedure for git-gui has been updated to use it instead of a
      hand-rolled substitute.

    * "%C(color name)" in the pretty print format always produced ANSI
      color escape codes, which was an early design mistake.  They now
      honor the configuration (e.g. "color.ui = never") and also tty-ness
      of the output medium.

    * The http.{sslkey,sslCert} configuration variables are to be
      interpreted as a pathname that honors "~[username]/" prefix, but
      weren't, which has been fixed.

    * Numerous bugs in walking of reflogs via "log -g" and friends have
      been fixed.

    * "git commit" when seeing an totally empty message said "you did not
      edit the message", which is clearly wrong.  The message has been
      corrected.

    * When a directory is not readable, "gitweb" fails to build the
      project list.  Work this around by skipping such a directory.

    * A recently added test for the "credential-cache" helper revealed
      that EOF detection done around the time the connection to the cache
      daemon is torn down were flaky.  This was fixed by reacting to
      ECONNRESET and behaving as if we got an EOF.

    * Some versions of GnuPG fail to kill gpg-agent it auto-spawned
      and such a left-over agent can interfere with a test.  Work it
      around by attempting to kill one before starting a new test.

    * "git log --tag=no-such-tag" showed log starting from HEAD, which
      has been fixed---it now shows nothing.

    * The "tag.pager" configuration variable was useless for those who
      actually create tag objects, as it interfered with the use of an
      editor.  A new mechanism has been introduced for commands to enable
      pager depending on what operation is being carried out to fix this,
      and then "git tag -l" is made to run pager by default.

    * "git push --recurse-submodules $there HEAD:$target" was not
      propagated down to the submodules, but now it is.

    * Commands like "git rebase" accepted the --rerere-autoupdate option
      from the command line, but did not always use it.  This has been
      fixed.

    * "git clone --recurse-submodules --quiet" did not pass the quiet
      option down to submodules.

    * "git am -s" has been taught that some input may end with a trailer
      block that is not Signed-off-by: and it should refrain from adding
      an extra blank line before adding a new sign-off in such a case.

    * "git svn" used with "--localtime" option did not compute the tz
      offset for the timestamp in question and instead always used the
      current time, which has been corrected.

    * Memory leaks in a few error codepaths have been plugged.

    * bash 4.4 or newer gave a warning on NUL byte in command
      substitution done in "git stash"; this has been squelched.

    * "git grep -L" and "git grep --quiet -L" reported different exit
      codes; this has been corrected.

    * When handshake with a subprocess filter notices that the process
      asked for an unknown capability, Git did not report what program
      the offending subprocess was running.  This has been corrected.

    * "git apply" that is used as a better "patch -p1" failed to apply a
      taken from a file with CRLF line endings to a file with CRLF line
      endings.  The root cause was because it misused convert_to_git()
      that tried to do "safe-crlf" processing by looking at the index
      entry at the same path, which is a nonsense---in that mode, "apply"
      is not working on the data in (or derived from) the index at all.
      This has been fixed.

    * Killing "git merge --edit" before the editor returns control left
      the repository in a state with MERGE_MSG but without MERGE_HEAD,
      which incorrectly tells the subsequent "git commit" that there was
      a squash merge in progress.  This has been fixed.

    * "git archive" did not work well with pathspecs and the
      export-ignore attribute.

    * "git cvsserver" no longer is invoked by "git daemon" by default,
      as it is old and largely unmaintained.

    * Various Perl scripts did not use safe_pipe_capture() instead of
      backticks, leaving them susceptible to end-user input.  They have
      been corrected.

---
   Module Name:	pkgsrc
   Committed By:	adam
   Date:		Tue Oct 24 06:43:24 UTC 2017

   Modified Files:
   	pkgsrc/devel/git: Makefile.version
   	pkgsrc/devel/git-base: distinfo

   Log Message:
   git: updated to 2.14.3

   Git v2.14.3 Release Notes

   Fixes since v2.14.2

    * A helper function to read a single whole line into strbuf
      mistakenly triggered OOM error at EOF under certain conditions,
      which has been fixed.

    * In addition to "cc: <a@dd.re.ss> # cruft", "cc: a@dd.re.ss # cruft"
      was taught to "git send-email" as a valid way to tell it that it
      needs to also send a carbon copy to <a@dd.re.ss> in the trailer
      section.

    * Fix regression to "gitk --bisect" by a recent update.

    * Unlike "git commit-tree < file", "git commit-tree -F file" did not
      pass the contents of the file verbatim and instead completed an
      incomplete line at the end, if exists.  The latter has been updated
      to match the behaviour of the former.

    * "git archive", especially when used with pathspec, stored an empty
      directory in its output, even though Git itself never does so.
      This has been fixed.

    * API error-proofing which happens to also squelch warnings from GCC.

    * "git gc" tries to avoid running two instances at the same time by
      reading and writing pid/host from and to a lock file; it used to
      use an incorrect fscanf() format when reading, which has been
      corrected.

    * The test linter has been taught that we do not like "echo -e".

    * Code cmp.std.c nitpick.

    * "git describe --match" learned to take multiple patterns in v2.13
      series, but the feature ignored the patterns after the first one
      and did not work at all.  This has been fixed.

    * "git cat-file --textconv" started segfaulting recently, which
      has been corrected.

    * The built-in pattern to detect the "function header" for HTML did
      not match <H1>..<H6> elements without any attributes, which has
      been fixed.

    * "git mailinfo" was loose in decoding quoted printable and produced
      garbage when the two letters after the equal sign are not
      hexadecimal.  This has been fixed.

    * The documentation for '-X<option>' for merges was misleadingly
      written to suggest that "-s theirs" exists, which is not the case.

    * Spell the name of our system as "Git" in the output from
      request-pull script.

    * Fixes for a handful memory access issues identified by valgrind.

    * Backports a moral equivalent of 2015 fix to the poll emulation from
      the upstream gnulib to fix occasional breakages on HPE NonStop.

    * In the "--format=..." option of the "git for-each-ref" command (and
      its friends, i.e. the listing mode of "git branch/tag"), "%(atom:)"
      (e.g. "%(refname:)", "%(body:)" used to error out.  Instead, treat
      them as if the colon and an empty string that follows it were not
      there.

    * Users with "color.ui = always" in their configuration were broken
      by a recent change that made plumbing commands to pay attention to
      them as the patch created internally by "git add -p" were colored
      (heh) and made unusable.  This has been fixed.

    * "git branch -M a b" while on a branch that is completely unrelated
      to either branch a or branch b misbehaved when multiple worktree
      was in use.  This has been fixed.

    * "git fast-export" with -M/-C option issued "copy" instruction on a
      path that is simultaneously modified, which was incorrect.

    * The checkpoint command "git fast-import" did not flush updates to
      refs and marks unless at least one object was created since the
      last checkpoint, which has been corrected, as these things can
      happen without any new object getting created.

    * The scripts to drive TravisCI has been reorganized and then an
      optimization to avoid spending cycles on a branch whose tip is
      tagged has been implemented.

    * "git fetch <there> <src>:<dst>" allows an object name on the <src>
      side when the other side accepts such a request since Git v2.5, but
      the documentation was left stale.

    * A regression in 2.11 that made the code to read the list of
      alternate object stores overrun the end of the string has been
      fixed.

   Also contains various documentation updates and code clean-ups.

Revision 1.73 / (download) - annotate - [select for diffs], Thu Nov 2 06:18:11 2017 UTC (5 years, 11 months ago) by adam
Branch: MAIN
Changes since 1.72: +5 -5 lines
Diff to previous 1.72 (colored)

git: updated to 2.15.0

Git 2.15 Release Notes

Backward compatibility notes and other notable changes.

 * Use of an empty string as a pathspec element that is used for
   'everything matches' is still warned and Git asks users to use a
   more explicit '.' for that instead.  The hope is that existing
   users will not mind this change, and eventually the warning can be
   turned into a hard error, upgrading the deprecation into removal of
   this (mis)feature.  That is now scheduled to happen in Git v2.16,
   the next major release after this one.

 * Git now avoids blindly falling back to ".git" when the setup
   sequence said we are _not_ in Git repository.  A corner case that
   happens to work right now may be broken by a call to BUG().
   We've tried hard to locate such cases and fixed them, but there
   might still be cases that need to be addressed--bug reports are
   greatly appreciated.

 * "branch --set-upstream" that has been deprecated in Git 1.8 has
   finally been retired.


Updates since v2.14
-------------------

UI, Workflows & Features

 * An example that is now obsolete has been removed from a sample hook,
   and an old example in it that added a sign-off manually has been
   improved to use the interpret-trailers command.

 * The advice message given when "git rebase" stops for conflicting
   changes has been improved.

 * The "rerere-train" script (in contrib/) learned the "--overwrite"
   option to allow overwriting existing recorded resolutions.

 * "git contacts" (in contrib/) now lists the address on the
   "Reported-by:" trailer to its output, in addition to those on
   S-o-b: and other trailers, to make it easier to notify (and thank)
   the original bug reporter.

 * "git rebase", especially when it is run by mistake and ends up
   trying to replay many changes, spent long time in silence.  The
   command has been taught to show progress report when it spends
   long time preparing these many changes to replay (which would give
   the user a chance to abort with ^C).

 * "git merge" learned a "--signoff" option to add the Signed-off-by:
   trailer with the committer's name.

 * "git diff" learned to optionally paint new lines that are the same
   as deleted lines elsewhere differently from genuinely new lines.

 * "git interpret-trailers" learned to take the trailer specifications
   from the command line that overrides the configured values.

 * "git interpret-trailers" has been taught a "--parse" and a few
   other options to make it easier for scripts to grab existing
   trailer lines from a commit log message.

 * The "--format=%(trailers)" option "git log" and its friends take
   learned to take the 'unfold' and 'only' modifiers to normalize its
   output, e.g. "git log --format=%(trailers:only,unfold)".

 * "gitweb" shows a link to visit the 'raw' contents of blbos in the
   history overview page.

 * "[gc] rerereResolved = 5.days" used to be invalid, as the variable
   is defined to take an integer counting the number of days.  It now
   is allowed.

 * The code to acquire a lock on a reference (e.g. while accepting a
   push from a client) used to immediately fail when the reference is
   already locked---now it waits for a very short while and retries,
   which can make it succeed if the lock holder was holding it during
   a read-only operation.

 * "branch --set-upstream" that has been deprecated in Git 1.8 has
   finally been retired.

 * The codepath to call external process filter for smudge/clean
   operation learned to show the progress meter.

 * "git rev-parse" learned "--is-shallow-repository", that is to be
   used in a way similar to existing "--is-bare-repository" and
   friends.

 * "git describe --match <pattern>" has been taught to play well with
   the "--all" option.

 * "git branch" learned "-c/-C" to create a new branch by copying an
   existing one.

 * Some commands (most notably "git status") makes an opportunistic
   update when performing a read-only operation to help optimize later
   operations in the same repository.  The new "--no-optional-locks"
   option can be passed to Git to disable them.

 * "git for-each-ref --format=..." learned a new format element,
   %(trailers), to show only the commit log trailer part of the log
   message.


Performance, Internal Implementation, Development Support etc.

...more...

Revision 1.72 / (download) - annotate - [select for diffs], Tue Oct 24 06:43:24 2017 UTC (5 years, 11 months ago) by adam
Branch: MAIN
Changes since 1.71: +5 -5 lines
Diff to previous 1.71 (colored)

git: updated to 2.14.3

Git v2.14.3 Release Notes

Fixes since v2.14.2

 * A helper function to read a single whole line into strbuf
   mistakenly triggered OOM error at EOF under certain conditions,
   which has been fixed.

 * In addition to "cc: <a@dd.re.ss> # cruft", "cc: a@dd.re.ss # cruft"
   was taught to "git send-email" as a valid way to tell it that it
   needs to also send a carbon copy to <a@dd.re.ss> in the trailer
   section.

 * Fix regression to "gitk --bisect" by a recent update.

 * Unlike "git commit-tree < file", "git commit-tree -F file" did not
   pass the contents of the file verbatim and instead completed an
   incomplete line at the end, if exists.  The latter has been updated
   to match the behaviour of the former.

 * "git archive", especially when used with pathspec, stored an empty
   directory in its output, even though Git itself never does so.
   This has been fixed.

 * API error-proofing which happens to also squelch warnings from GCC.

 * "git gc" tries to avoid running two instances at the same time by
   reading and writing pid/host from and to a lock file; it used to
   use an incorrect fscanf() format when reading, which has been
   corrected.

 * The test linter has been taught that we do not like "echo -e".

 * Code cmp.std.c nitpick.

 * "git describe --match" learned to take multiple patterns in v2.13
   series, but the feature ignored the patterns after the first one
   and did not work at all.  This has been fixed.

 * "git cat-file --textconv" started segfaulting recently, which
   has been corrected.

 * The built-in pattern to detect the "function header" for HTML did
   not match <H1>..<H6> elements without any attributes, which has
   been fixed.

 * "git mailinfo" was loose in decoding quoted printable and produced
   garbage when the two letters after the equal sign are not
   hexadecimal.  This has been fixed.

 * The documentation for '-X<option>' for merges was misleadingly
   written to suggest that "-s theirs" exists, which is not the case.

 * Spell the name of our system as "Git" in the output from
   request-pull script.

 * Fixes for a handful memory access issues identified by valgrind.

 * Backports a moral equivalent of 2015 fix to the poll emulation from
   the upstream gnulib to fix occasional breakages on HPE NonStop.

 * In the "--format=..." option of the "git for-each-ref" command (and
   its friends, i.e. the listing mode of "git branch/tag"), "%(atom:)"
   (e.g. "%(refname:)", "%(body:)" used to error out.  Instead, treat
   them as if the colon and an empty string that follows it were not
   there.

 * Users with "color.ui = always" in their configuration were broken
   by a recent change that made plumbing commands to pay attention to
   them as the patch created internally by "git add -p" were colored
   (heh) and made unusable.  This has been fixed.

 * "git branch -M a b" while on a branch that is completely unrelated
   to either branch a or branch b misbehaved when multiple worktree
   was in use.  This has been fixed.

 * "git fast-export" with -M/-C option issued "copy" instruction on a
   path that is simultaneously modified, which was incorrect.

 * The checkpoint command "git fast-import" did not flush updates to
   refs and marks unless at least one object was created since the
   last checkpoint, which has been corrected, as these things can
   happen without any new object getting created.

 * The scripts to drive TravisCI has been reorganized and then an
   optimization to avoid spending cycles on a branch whose tip is
   tagged has been implemented.

 * "git fetch <there> <src>:<dst>" allows an object name on the <src>
   side when the other side accepts such a request since Git v2.5, but
   the documentation was left stale.

 * A regression in 2.11 that made the code to read the list of
   alternate object stores overrun the end of the string has been
   fixed.

Also contains various documentation updates and code clean-ups.

Revision 1.71 / (download) - annotate - [select for diffs], Wed Sep 27 06:37:47 2017 UTC (6 years ago) by adam
Branch: MAIN
Changes since 1.70: +5 -5 lines
Diff to previous 1.70 (colored)

git: update to 2.14.2

Fixes since v2.14.1

 * Because recent Git for Windows do come with a real msgfmt, the
   build procedure for git-gui has been updated to use it instead of a
   hand-rolled substitute.

 * "%C(color name)" in the pretty print format always produced ANSI
   color escape codes, which was an early design mistake.  They now
   honor the configuration (e.g. "color.ui = never") and also tty-ness
   of the output medium.

 * The http.{sslkey,sslCert} configuration variables are to be
   interpreted as a pathname that honors "~[username]/" prefix, but
   weren't, which has been fixed.

 * Numerous bugs in walking of reflogs via "log -g" and friends have
   been fixed.

 * "git commit" when seeing an totally empty message said "you did not
   edit the message", which is clearly wrong.  The message has been
   corrected.

 * When a directory is not readable, "gitweb" fails to build the
   project list.  Work this around by skipping such a directory.

 * A recently added test for the "credential-cache" helper revealed
   that EOF detection done around the time the connection to the cache
   daemon is torn down were flaky.  This was fixed by reacting to
   ECONNRESET and behaving as if we got an EOF.

 * Some versions of GnuPG fail to kill gpg-agent it auto-spawned
   and such a left-over agent can interfere with a test.  Work it
   around by attempting to kill one before starting a new test.

 * "git log --tag=no-such-tag" showed log starting from HEAD, which
   has been fixed---it now shows nothing.

 * The "tag.pager" configuration variable was useless for those who
   actually create tag objects, as it interfered with the use of an
   editor.  A new mechanism has been introduced for commands to enable
   pager depending on what operation is being carried out to fix this,
   and then "git tag -l" is made to run pager by default.

 * "git push --recurse-submodules $there HEAD:$target" was not
   propagated down to the submodules, but now it is.

 * Commands like "git rebase" accepted the --rerere-autoupdate option
   from the command line, but did not always use it.  This has been
   fixed.

 * "git clone --recurse-submodules --quiet" did not pass the quiet
   option down to submodules.

 * "git am -s" has been taught that some input may end with a trailer
   block that is not Signed-off-by: and it should refrain from adding
   an extra blank line before adding a new sign-off in such a case.

 * "git svn" used with "--localtime" option did not compute the tz
   offset for the timestamp in question and instead always used the
   current time, which has been corrected.

 * Memory leaks in a few error codepaths have been plugged.

 * bash 4.4 or newer gave a warning on NUL byte in command
   substitution done in "git stash"; this has been squelched.

 * "git grep -L" and "git grep --quiet -L" reported different exit
   codes; this has been corrected.

 * When handshake with a subprocess filter notices that the process
   asked for an unknown capability, Git did not report what program
   the offending subprocess was running.  This has been corrected.

 * "git apply" that is used as a better "patch -p1" failed to apply a
   taken from a file with CRLF line endings to a file with CRLF line
   endings.  The root cause was because it misused convert_to_git()
   that tried to do "safe-crlf" processing by looking at the index
   entry at the same path, which is a nonsense---in that mode, "apply"
   is not working on the data in (or derived from) the index at all.
   This has been fixed.

 * Killing "git merge --edit" before the editor returns control left
   the repository in a state with MERGE_MSG but without MERGE_HEAD,
   which incorrectly tells the subsequent "git commit" that there was
   a squash merge in progress.  This has been fixed.

 * "git archive" did not work well with pathspecs and the
   export-ignore attribute.

 * "git cvsserver" no longer is invoked by "git daemon" by default,
   as it is old and largely unmaintained.

 * Various Perl scripts did not use safe_pipe_capture() instead of
   backticks, leaving them susceptible to end-user input.  They have
   been corrected.

Revision 1.66.2.1 / (download) - annotate - [select for diffs], Wed Sep 13 17:58:54 2017 UTC (6 years ago) by spz
Branch: pkgsrc-2017Q2
Changes since 1.66: +5 -5 lines
Diff to previous 1.66 (colored) next main 1.67 (colored)

Pullup ticket #5542 - requested by taca
devel/git: security update
devel/git-base: security update
devel/git-docs: security update

Revisions pulled up:
- devel/git-base/Makefile                                       1.42
- devel/git-base/distinfo                                       1.67-1.70
- devel/git-docs/PLIST                                          1.7
- devel/git/Makefile.version                                    1.58-1.61

-------------------------------------------------------------------
   Module Name:	pkgsrc
   Committed By:	adam
   Date:		Thu Jul 13 06:55:19 UTC 2017

   Modified Files:
   	pkgsrc/devel/git: Makefile.version
   	pkgsrc/devel/git-base: distinfo

   Log Message:
   Git v2.13.3:

    * The "collision detecting" SHA-1 implementation shipped with 2.13.2
      was still broken on some platforms.  Update to the upstream code
      again to take their fix.

    * The 'diff-highlight' program (in contrib/) has been restructured
      for easier reuse by an external project 'diff-so-fancy'.

    * "git mergetool" learned to work around a wrapper MacOS X adds
      around underlying meld.

    * An example in documentation that does not work in multi worktree
      configuration has been corrected.

    * The pretty-format specifiers like '%h', '%t', etc. had an
      optimization that no longer works correctly.  In preparation/hope
      of getting it correctly implemented, first discard the optimization
      that is broken.

    * The code to pick up and execute command alias definition from the
      configuration used to switch to the top of the working tree and
      then come back when the expanded alias was executed, which was
      unnecessarilyl complex.  Attempt to simplify the logic by using the
      early-config mechanism that does not chdir around.

    * "git add -p" were updated in 2.12 timeframe to cope with custom
      core.commentchar but the implementation was buggy and a
      metacharacter like $ and * did not work.

    * Fix a recent regression to "git rebase -i" and add tests that would
      have caught it and others.

    * An unaligned 32-bit access in pack-bitmap code ahs been corrected.

    * Tighten error checks for invalid "git apply" input.

    * The split index code did not honor core.sharedrepository setting
      correctly.

    * The Makefile rule in contrib/subtree for building documentation
      learned to honour USE_ASCIIDOCTOR just like the main documentation
      set does.

    * A few tests that tried to verify the contents of push certificates
      did not use 'git rev-parse' to formulate the line to look for in
      the certificate correctly.

    * After "git branch --move" of the currently checked out branch, the
      code to walk the reflog of HEAD via "log -g" and friends
      incorrectly stopped at the reflog entry that records the renaming
      of the branch.

    * The rewrite of "git branch --list" using for-each-ref's internals
      that happened in v2.13 regressed its handling of color.branch.local;
      this has been fixed.


   To generate a diff of this commit:
   cvs rdiff -u -r1.57 -r1.58 pkgsrc/devel/git/Makefile.version
   cvs rdiff -u -r1.66 -r1.67 pkgsrc/devel/git-base/distinfo

-------------------------------------------------------------------
   Module Name:	pkgsrc
   Committed By:	adam
   Date:		Thu Aug  3 07:45:18 UTC 2017

   Modified Files:
   	pkgsrc/devel/git: Makefile.version
   	pkgsrc/devel/git-base: distinfo

   Log Message:
   Git v2.13.4:

   * Update the character width tables.

   * A recent update broke an alias that contained an uppercase letter,
     which has been fixed.

   * On Cygwin, similar to Windows, "git push //server/share/repository"
     ought to mean a repository on a network share that can be accessed
     locally, but this did not work correctly due to stripping the double
     slashes at the beginning.

   * The progress meter did not give a useful output when we haven't had
     0.5 seconds to measure the throughput during the interval.  Instead
     show the overall throughput rate at the end, which is a much more
     useful number.

   * We run an early part of "git gc" that deals with refs before
     daemonising (and not under lock) even when running a background
     auto-gc, which caused multiple gc processes attempting to run the
     early part at the same time.  This is now prevented by running the
     early part also under the GC lock.


   To generate a diff of this commit:
   cvs rdiff -u -r1.58 -r1.59 pkgsrc/devel/git/Makefile.version
   cvs rdiff -u -r1.67 -r1.68 pkgsrc/devel/git-base/distinfo

-------------------------------------------------------------------
   Module Name:	pkgsrc
   Committed By:	adam
   Date:		Mon Aug  7 17:56:14 UTC 2017

   Modified Files:
   	pkgsrc/devel/git: Makefile.version
   	pkgsrc/devel/git-base: Makefile distinfo
   	pkgsrc/devel/git-docs: PLIST

   Log Message:
   Git 2.14 Release Notes
   ===========

   Backward compatibility notes and other notable changes.

    * Use of an empty string as a pathspec element that is used for
      'everything matches' is still warned and Git asks users to use a
      more explicit '.' for that instead.  The hope is that existing
      users will not mind this change, and eventually the warning can be
      turned into a hard error, upgrading the deprecation into removal of
      this (mis)feature.  That is not scheduled to happen in the upcoming
      release (yet).

    * Git now avoids blindly falling back to ".git" when the setup
      sequence said we are _not_ in Git repository.  A corner case that
      happens to work right now may be broken by a call to die("BUG").
      We've tried hard to locate such cases and fixed them, but there
      might still be cases that need to be addressed--bug reports are
      greatly appreciated.

    * The experiment to improve the hunk-boundary selection of textual
      diff output has finished, and the "indent heuristics" has now
      become the default.

    * Git can now be built with PCRE v2 instead of v1 of the PCRE
      library. Replace USE_LIBPCRE=YesPlease with USE_LIBPCRE2=YesPlease
      in existing build scripts to build against the new version.  As the
      upstream PCRE maintainer has abandoned v1 maintenance for all but
      the most critical bug fixes, use of v2 is recommended.

   Updates since v2.13
   -------------------

   UI, Workflows & Features

    * The colors in which "git status --short --branch" showed the names
      of the current branch and its remote-tracking branch are now
      configurable.

    * "git clone" learned the "--no-tags" option not to fetch all tags
      initially, and also set up the tagopt not to follow any tags in
      subsequent fetches.

    * "git archive --format=zip" learned to use zip64 extension when
      necessary to go beyond the 4GB limit.

    * "git reset" learned "--recurse-submodules" option.

    * "git diff --submodule=diff" now recurses into nested submodules.

    * "git repack" learned to accept the --threads=<n> option and pass it
      to pack-objects.

    * "git send-email" learned to run sendemail-validate hook to inspect
      and reject a message before sending it out.

    * There is no good reason why "git fetch $there $sha1" should fail
      when the $sha1 names an object at the tip of an advertised ref,
      even when the other side hasn't enabled allowTipSHA1InWant.

    * The "[includeIf "gitdir:$dir"] path=..." mechanism introduced in
      2.13.0 would canonicalize the path of the gitdir being matched,
      and did not match e.g. "gitdir:~/work/*" against a repo in
      "~/work/main" if "~/work" was a symlink to "/mnt/storage/work".
      Now we match both the resolved canonical path and what "pwd" would
      show. The include will happen if either one matches.

    * The "indent" heuristics is now the default in "diff". The
      diff.indentHeuristic configuration variable can be set to "false"
      for those who do not want it.

    * Many commands learned to pay attention to submodule.recurse
      configuration.

    * The convention for a command line is to follow "git cmdname
      --options" with revisions followed by an optional "--"
      disambiguator and then finally pathspecs.  When "--" is not there,
      we make sure early ones are all interpretable as revs (and do not
      look like paths) and later ones are the other way around.  A
      pathspec with "magic" (e.g. ":/p/a/t/h" that matches p/a/t/h from
      the top-level of the working tree, no matter what subdirectory you
      are working from) are conservatively judged as "not a path", which
      required disambiguation more often.  The command line parser
      learned to say "it's a pathspec" a bit more often when the syntax
      looks like so.

    * Update "perl-compatible regular expression" support to enable JIT
      and also allow linking with the newer PCRE v2 library.

    * "filter-branch" learned a pseudo filter "--setup" that can be used
      to define common functions/variables that can be used by other
      filters.

    * Using "git add d/i/r" when d/i/r is the top of the working tree of
      a separate repository would create a gitlink in the index, which
      would appear as a not-quite-initialized submodule to others.  We
      learned to give warnings when this happens.

    * "git status" learned to optionally give how many stash entries there
      are in its output.

    * "git status" has long shown essentially the same message as "git
      commit"; the message it gives while preparing for the root commit,
      i.e. "Initial commit", was hard to understand for some new users.
      Now it says "No commits yet" to stress more on the current status
      (rather than the commit the user is preparing for, which is more in
      line with the focus of "git commit").

    * "git send-email" now has --batch-size and --relogin-delay options
       which can be used to overcome limitations on SMTP servers that
       restrict on how many of e-mails can be sent in a single session.

    * An old message shown in the commit log template was removed, as it
      has outlived its usefulness.

    * "git pull --rebase --recurse-submodules" learns to rebase the
      branch in the submodules to an updated base.

    * "git log" learned -P as a synonym for --perl-regexp, "git grep"
      already had such a synonym.

    * "git log" didn't understand --regexp-ignore-case when combined with
      --perl-regexp. This has been fixed.

   Performance, Internal Implementation, Development Support etc.

    * The default packed-git limit value has been raised on larger
      platforms to save "git fetch" from a (recoverable) failure while
      "gc" is running in parallel.

    * Code to update the cache-tree has been tightened so that we won't
      accidentally write out any 0{40} entry in the tree object.

    * Attempt to allow us notice "fishy" situation where we fail to
      remove the temporary directory used during the test.

    * Travis CI gained a task to format the documentation with both
      AsciiDoc and AsciiDoctor.

    * Some platforms have ulong that is smaller than time_t, and our
      historical use of ulong for timestamp would mean they cannot
      represent some timestamp that the platform allows.  Invent a
      separate and dedicated timestamp_t (so that we can distingiuish
      timestamps and a vanilla ulongs, which along is already a good
      move), and then declare uintmax_t is the type to be used as the
      timestamp_t.

    * We can trigger Windows auto-build tester (credits: Dscho &
      Microsoft) from our existing Travis CI tester now.

    * Conversion from uchar[20] to struct object_id continues.

    * Simplify parse_pathspec() codepath and stop it from looking at the
      default in-core index.

    * Add perf-test for wildmatch.

    * Code from "conversion using external process" codepath has been
      extracted to a separate sub-process.[ch] module.

    * When "git checkout", "git merge", etc. manipulates the in-core
      index, various pieces of information in the index extensions are
      discarded from the original state, as it is usually not the case
      that they are kept up-to-date and in-sync with the operation on the
      main index.  The untracked cache extension is copied across these
      operations now, which would speed up "git status" (as long as the
      cache is properly invalidated).

    * The internal implementation of "git grep" has seen some clean-up.

    * Update the C style recommendation for notes for translators, as
      recent versions of gettext tools can work with our style of
      multi-line comments.

    * The implementation of "ref" API around the "packed refs" have been
      cleaned up, in preparation for further changes.

    * The internal logic used in "git blame" has been libified to make it
      easier to use by cgit.

    * Our code often opens a path to an optional file, to work on its
      contents when we can successfully open it.  We can ignore a failure
      to open if such an optional file does not exist, but we do want to
      report a failure in opening for other reasons (e.g. we got an I/O
      error, or the file is there, but we lack the permission to open).

      The exact errors we need to ignore are ENOENT (obviously) and
      ENOTDIR (less obvious).  Instead of repeating comparison of errno
      with these two constants, introduce a helper function to do so.

    * We often try to open a file for reading whose existence is
      optional, and silently ignore errors from open/fopen; report such
      errors if they are not due to missing files.

    * When an existing repository is used for t/perf testing, we first
      create bit-for-bit copy of it, which may grab a transient state of
      the repository and freeze it into the repository used for testing,
      which then may cause Git operations to fail.  Single out "the index
      being locked" case and forcibly drop the lock from the copy.

    * Three instances of the same helper function have been consolidated
      to one.

    * "fast-import" uses a default pack chain depth that is consistent
      with other parts of the system.

    * A new test to show the interaction between the pattern [^a-z]
      (which matches '/') and a slash in a path has been added.  The
      pattern should not match the slash with "pathmatch", but should
      with "wildmatch".

    * The 'diff-highlight' program (in contrib/) has been restructured
      for easier reuse by an external project 'diff-so-fancy'.

    * A common pattern to free a piece of memory and assign NULL to the
      pointer that used to point at it has been replaced with a new
      FREE_AND_NULL() macro.

    * Traditionally, the default die() routine had a code to prevent it
      from getting called multiple times, which interacted badly when a
      threaded program used it (one downside is that the real error may
      be hidden and instead the only error message given to the user may
      end up being "die recursion detected", which is not very useful).

    * Introduce a "repository" object to eventually make it easier to
      work in multiple repositories (the primary focus is to work with
      the superproject and its submodules) in a single process.

    * Optimize "what are the object names already taken in an alternate
      object database?" query that is used to derive the length of prefix
      an object name is uniquely abbreviated to.

    * The hashmap API has been updated so that data to customize the
      behaviour of the comparison function can be specified at the time a
      hashmap is initialized.

    * The "collision detecting" SHA-1 implementation shipped with 2.13 is
      now integrated into git.git as a submodule (the first submodule to
      ship with git.git). Clone git.git with --recurse-submodules to get
      it. For now a non-submodule copy of the same code is also shipped
      as part of the tree.

    * A recent update made it easier to use "-fsanitize=" option while
      compiling but supported only one sanitize option.  Allow more than
      one to be combined, joined with a comma, like "make SANITIZE=foo,bar".

    * Use "p4 -G" to make "p4 changes" output more Python-friendly
      to parse.

    * We started using "%" PRItime, imitating "%" PRIuMAX and friends, as
      a way to format the internal timestamp value, but this does not
      play well with gettext(1) i18n framework, and causes "make pot"
      that is run by the l10n coordinator to create a broken po/git.pot
      file.  This is a possible workaround for that problem.

    * It turns out that Cygwin also needs the fopen() wrapper that
      returns failure when a directory is opened for reading.


   To generate a diff of this commit:
   cvs rdiff -u -r1.59 -r1.60 pkgsrc/devel/git/Makefile.version
   cvs rdiff -u -r1.41 -r1.42 pkgsrc/devel/git-base/Makefile
   cvs rdiff -u -r1.68 -r1.69 pkgsrc/devel/git-base/distinfo
   cvs rdiff -u -r1.6 -r1.7 pkgsrc/devel/git-docs/PLIST

-------------------------------------------------------------------
   Module Name:	pkgsrc
   Committed By:	adam
   Date:		Sat Aug 12 22:05:15 UTC 2017

   Modified Files:
   	pkgsrc/devel/git: Makefile.version
   	pkgsrc/devel/git-base: distinfo

   Log Message:
   Git v2.14.1:
   This release forward-ports the fix for "ssh://..." URL from Git v2.7.6


   To generate a diff of this commit:
   cvs rdiff -u -r1.60 -r1.61 pkgsrc/devel/git/Makefile.version
   cvs rdiff -u -r1.69 -r1.70 pkgsrc/devel/git-base/distinfo

Revision 1.70 / (download) - annotate - [select for diffs], Sat Aug 12 22:05:15 2017 UTC (6 years, 1 month ago) by adam
Branch: MAIN
CVS Tags: pkgsrc-2017Q3-base
Branch point for: pkgsrc-2017Q3
Changes since 1.69: +5 -5 lines
Diff to previous 1.69 (colored)

Git v2.14.1:
This release forward-ports the fix for "ssh://..." URL from Git v2.7.6

Revision 1.69 / (download) - annotate - [select for diffs], Mon Aug 7 17:56:14 2017 UTC (6 years, 1 month ago) by adam
Branch: MAIN
Changes since 1.68: +5 -5 lines
Diff to previous 1.68 (colored)

Git 2.14 Release Notes
======================

Backward compatibility notes and other notable changes.

 * Use of an empty string as a pathspec element that is used for
   'everything matches' is still warned and Git asks users to use a
   more explicit '.' for that instead.  The hope is that existing
   users will not mind this change, and eventually the warning can be
   turned into a hard error, upgrading the deprecation into removal of
   this (mis)feature.  That is not scheduled to happen in the upcoming
   release (yet).

 * Git now avoids blindly falling back to ".git" when the setup
   sequence said we are _not_ in Git repository.  A corner case that
   happens to work right now may be broken by a call to die("BUG").
   We've tried hard to locate such cases and fixed them, but there
   might still be cases that need to be addressed--bug reports are
   greatly appreciated.

 * The experiment to improve the hunk-boundary selection of textual
   diff output has finished, and the "indent heuristics" has now
   become the default.

 * Git can now be built with PCRE v2 instead of v1 of the PCRE
   library. Replace USE_LIBPCRE=YesPlease with USE_LIBPCRE2=YesPlease
   in existing build scripts to build against the new version.  As the
   upstream PCRE maintainer has abandoned v1 maintenance for all but
   the most critical bug fixes, use of v2 is recommended.


Updates since v2.13
-------------------

UI, Workflows & Features

 * The colors in which "git status --short --branch" showed the names
   of the current branch and its remote-tracking branch are now
   configurable.

 * "git clone" learned the "--no-tags" option not to fetch all tags
   initially, and also set up the tagopt not to follow any tags in
   subsequent fetches.

 * "git archive --format=zip" learned to use zip64 extension when
   necessary to go beyond the 4GB limit.

 * "git reset" learned "--recurse-submodules" option.

 * "git diff --submodule=diff" now recurses into nested submodules.

 * "git repack" learned to accept the --threads=<n> option and pass it
   to pack-objects.

 * "git send-email" learned to run sendemail-validate hook to inspect
   and reject a message before sending it out.

 * There is no good reason why "git fetch $there $sha1" should fail
   when the $sha1 names an object at the tip of an advertised ref,
   even when the other side hasn't enabled allowTipSHA1InWant.

 * The "[includeIf "gitdir:$dir"] path=..." mechanism introduced in
   2.13.0 would canonicalize the path of the gitdir being matched,
   and did not match e.g. "gitdir:~/work/*" against a repo in
   "~/work/main" if "~/work" was a symlink to "/mnt/storage/work".
   Now we match both the resolved canonical path and what "pwd" would
   show. The include will happen if either one matches.

 * The "indent" heuristics is now the default in "diff". The
   diff.indentHeuristic configuration variable can be set to "false"
   for those who do not want it.

 * Many commands learned to pay attention to submodule.recurse
   configuration.

 * The convention for a command line is to follow "git cmdname
   --options" with revisions followed by an optional "--"
   disambiguator and then finally pathspecs.  When "--" is not there,
   we make sure early ones are all interpretable as revs (and do not
   look like paths) and later ones are the other way around.  A
   pathspec with "magic" (e.g. ":/p/a/t/h" that matches p/a/t/h from
   the top-level of the working tree, no matter what subdirectory you
   are working from) are conservatively judged as "not a path", which
   required disambiguation more often.  The command line parser
   learned to say "it's a pathspec" a bit more often when the syntax
   looks like so.

 * Update "perl-compatible regular expression" support to enable JIT
   and also allow linking with the newer PCRE v2 library.

 * "filter-branch" learned a pseudo filter "--setup" that can be used
   to define common functions/variables that can be used by other
   filters.

 * Using "git add d/i/r" when d/i/r is the top of the working tree of
   a separate repository would create a gitlink in the index, which
   would appear as a not-quite-initialized submodule to others.  We
   learned to give warnings when this happens.

 * "git status" learned to optionally give how many stash entries there
   are in its output.

 * "git status" has long shown essentially the same message as "git
   commit"; the message it gives while preparing for the root commit,
   i.e. "Initial commit", was hard to understand for some new users.
   Now it says "No commits yet" to stress more on the current status
   (rather than the commit the user is preparing for, which is more in
   line with the focus of "git commit").

 * "git send-email" now has --batch-size and --relogin-delay options
    which can be used to overcome limitations on SMTP servers that
    restrict on how many of e-mails can be sent in a single session.

 * An old message shown in the commit log template was removed, as it
   has outlived its usefulness.

 * "git pull --rebase --recurse-submodules" learns to rebase the
   branch in the submodules to an updated base.

 * "git log" learned -P as a synonym for --perl-regexp, "git grep"
   already had such a synonym.

 * "git log" didn't understand --regexp-ignore-case when combined with
   --perl-regexp. This has been fixed.

Performance, Internal Implementation, Development Support etc.

 * The default packed-git limit value has been raised on larger
   platforms to save "git fetch" from a (recoverable) failure while
   "gc" is running in parallel.

 * Code to update the cache-tree has been tightened so that we won't
   accidentally write out any 0{40} entry in the tree object.

 * Attempt to allow us notice "fishy" situation where we fail to
   remove the temporary directory used during the test.

 * Travis CI gained a task to format the documentation with both
   AsciiDoc and AsciiDoctor.

 * Some platforms have ulong that is smaller than time_t, and our
   historical use of ulong for timestamp would mean they cannot
   represent some timestamp that the platform allows.  Invent a
   separate and dedicated timestamp_t (so that we can distingiuish
   timestamps and a vanilla ulongs, which along is already a good
   move), and then declare uintmax_t is the type to be used as the
   timestamp_t.

 * We can trigger Windows auto-build tester (credits: Dscho &
   Microsoft) from our existing Travis CI tester now.

 * Conversion from uchar[20] to struct object_id continues.

 * Simplify parse_pathspec() codepath and stop it from looking at the
   default in-core index.

 * Add perf-test for wildmatch.

 * Code from "conversion using external process" codepath has been
   extracted to a separate sub-process.[ch] module.

 * When "git checkout", "git merge", etc. manipulates the in-core
   index, various pieces of information in the index extensions are
   discarded from the original state, as it is usually not the case
   that they are kept up-to-date and in-sync with the operation on the
   main index.  The untracked cache extension is copied across these
   operations now, which would speed up "git status" (as long as the
   cache is properly invalidated).

 * The internal implementation of "git grep" has seen some clean-up.

 * Update the C style recommendation for notes for translators, as
   recent versions of gettext tools can work with our style of
   multi-line comments.

 * The implementation of "ref" API around the "packed refs" have been
   cleaned up, in preparation for further changes.

 * The internal logic used in "git blame" has been libified to make it
   easier to use by cgit.

 * Our code often opens a path to an optional file, to work on its
   contents when we can successfully open it.  We can ignore a failure
   to open if such an optional file does not exist, but we do want to
   report a failure in opening for other reasons (e.g. we got an I/O
   error, or the file is there, but we lack the permission to open).

   The exact errors we need to ignore are ENOENT (obviously) and
   ENOTDIR (less obvious).  Instead of repeating comparison of errno
   with these two constants, introduce a helper function to do so.

 * We often try to open a file for reading whose existence is
   optional, and silently ignore errors from open/fopen; report such
   errors if they are not due to missing files.

 * When an existing repository is used for t/perf testing, we first
   create bit-for-bit copy of it, which may grab a transient state of
   the repository and freeze it into the repository used for testing,
   which then may cause Git operations to fail.  Single out "the index
   being locked" case and forcibly drop the lock from the copy.

 * Three instances of the same helper function have been consolidated
   to one.

 * "fast-import" uses a default pack chain depth that is consistent
   with other parts of the system.

 * A new test to show the interaction between the pattern [^a-z]
   (which matches '/') and a slash in a path has been added.  The
   pattern should not match the slash with "pathmatch", but should
   with "wildmatch".

 * The 'diff-highlight' program (in contrib/) has been restructured
   for easier reuse by an external project 'diff-so-fancy'.

 * A common pattern to free a piece of memory and assign NULL to the
   pointer that used to point at it has been replaced with a new
   FREE_AND_NULL() macro.

 * Traditionally, the default die() routine had a code to prevent it
   from getting called multiple times, which interacted badly when a
   threaded program used it (one downside is that the real error may
   be hidden and instead the only error message given to the user may
   end up being "die recursion detected", which is not very useful).

 * Introduce a "repository" object to eventually make it easier to
   work in multiple repositories (the primary focus is to work with
   the superproject and its submodules) in a single process.

 * Optimize "what are the object names already taken in an alternate
   object database?" query that is used to derive the length of prefix
   an object name is uniquely abbreviated to.

 * The hashmap API has been updated so that data to customize the
   behaviour of the comparison function can be specified at the time a
   hashmap is initialized.

 * The "collision detecting" SHA-1 implementation shipped with 2.13 is
   now integrated into git.git as a submodule (the first submodule to
   ship with git.git). Clone git.git with --recurse-submodules to get
   it. For now a non-submodule copy of the same code is also shipped
   as part of the tree.

 * A recent update made it easier to use "-fsanitize=" option while
   compiling but supported only one sanitize option.  Allow more than
   one to be combined, joined with a comma, like "make SANITIZE=foo,bar".

 * Use "p4 -G" to make "p4 changes" output more Python-friendly
   to parse.

 * We started using "%" PRItime, imitating "%" PRIuMAX and friends, as
   a way to format the internal timestamp value, but this does not
   play well with gettext(1) i18n framework, and causes "make pot"
   that is run by the l10n coordinator to create a broken po/git.pot
   file.  This is a possible workaround for that problem.

 * It turns out that Cygwin also needs the fopen() wrapper that
   returns failure when a directory is opened for reading.

Revision 1.68 / (download) - annotate - [select for diffs], Thu Aug 3 07:45:18 2017 UTC (6 years, 2 months ago) by adam
Branch: MAIN
Changes since 1.67: +5 -5 lines
Diff to previous 1.67 (colored)

Git v2.13.4:

* Update the character width tables.

* A recent update broke an alias that contained an uppercase letter,
  which has been fixed.

* On Cygwin, similar to Windows, "git push //server/share/repository"
  ought to mean a repository on a network share that can be accessed
  locally, but this did not work correctly due to stripping the double
  slashes at the beginning.

* The progress meter did not give a useful output when we haven't had
  0.5 seconds to measure the throughput during the interval.  Instead
  show the overall throughput rate at the end, which is a much more
  useful number.

* We run an early part of "git gc" that deals with refs before
  daemonising (and not under lock) even when running a background
  auto-gc, which caused multiple gc processes attempting to run the
  early part at the same time.  This is now prevented by running the
  early part also under the GC lock.

Revision 1.67 / (download) - annotate - [select for diffs], Thu Jul 13 06:55:19 2017 UTC (6 years, 2 months ago) by adam
Branch: MAIN
Changes since 1.66: +5 -5 lines
Diff to previous 1.66 (colored)

Git v2.13.3:

 * The "collision detecting" SHA-1 implementation shipped with 2.13.2
   was still broken on some platforms.  Update to the upstream code
   again to take their fix.

 * The 'diff-highlight' program (in contrib/) has been restructured
   for easier reuse by an external project 'diff-so-fancy'.

 * "git mergetool" learned to work around a wrapper MacOS X adds
   around underlying meld.

 * An example in documentation that does not work in multi worktree
   configuration has been corrected.

 * The pretty-format specifiers like '%h', '%t', etc. had an
   optimization that no longer works correctly.  In preparation/hope
   of getting it correctly implemented, first discard the optimization
   that is broken.

 * The code to pick up and execute command alias definition from the
   configuration used to switch to the top of the working tree and
   then come back when the expanded alias was executed, which was
   unnecessarilyl complex.  Attempt to simplify the logic by using the
   early-config mechanism that does not chdir around.

 * "git add -p" were updated in 2.12 timeframe to cope with custom
   core.commentchar but the implementation was buggy and a
   metacharacter like $ and * did not work.

 * Fix a recent regression to "git rebase -i" and add tests that would
   have caught it and others.

 * An unaligned 32-bit access in pack-bitmap code ahs been corrected.

 * Tighten error checks for invalid "git apply" input.

 * The split index code did not honor core.sharedrepository setting
   correctly.

 * The Makefile rule in contrib/subtree for building documentation
   learned to honour USE_ASCIIDOCTOR just like the main documentation
   set does.

 * A few tests that tried to verify the contents of push certificates
   did not use 'git rev-parse' to formulate the line to look for in
   the certificate correctly.

 * After "git branch --move" of the currently checked out branch, the
   code to walk the reflog of HEAD via "log -g" and friends
   incorrectly stopped at the reflog entry that records the renaming
   of the branch.

 * The rewrite of "git branch --list" using for-each-ref's internals
   that happened in v2.13 regressed its handling of color.branch.local;
   this has been fixed.

Revision 1.66 / (download) - annotate - [select for diffs], Sun Jun 25 03:15:11 2017 UTC (6 years, 3 months ago) by mef
Branch: MAIN
CVS Tags: pkgsrc-2017Q2-base
Branch point for: pkgsrc-2017Q2
Changes since 1.65: +5 -6 lines
Diff to previous 1.65 (colored)

Updated devel/git-{base,contrib,docs,git-gitk} to 2.13.2
--------------------------------------------------------
Git v2.13.2 Release Notes
=========================

Fixes since v2.13.1
-------------------

 * The "collision detecting" SHA-1 implementation shipped with 2.13.1
   was still broken on some platforms.  Update to the upstream code
   again to take their fix.

 * "git checkout --recurse-submodules" did not quite work with a
   submodule that itself has submodules.

 * Introduce the BUG() macro to improve die("BUG: ...").

 * The "run-command" API implementation has been made more robust
   against dead-locking in a threaded environment.

 * A recent update to t5545-push-options.sh started skipping all the
   tests in the script when a web server testing is disabled or
   unavailable, not just the ones that require a web server.  Non HTTP
   tests have been salvaged to always run in this script.

 * "git clean -d" used to clean directories that has ignored files,
   even though the command should not lose ignored ones without "-x".
   "git status --ignored"  did not list ignored and untracked files
   without "-uall".  These have been corrected.

 * The timestamp of the index file is now taken after the file is
   closed, to help Windows, on which a stale timestamp is reported by
   fstat() on a file that is opened for writing and data was written
   but not yet closed.

 * "git pull --rebase --autostash" didn't auto-stash when the local history
   fast-forwards to the upstream.

 * "git describe --contains" penalized light-weight tags so much that
   they were almost never considered.  Instead, give them about the
   same chance to be considered as an annotated tag that is the same
   age as the underlying commit would.

 * The result from "git diff" that compares two blobs, e.g. "git diff
   $commit1:$path $commit2:$path", used to be shown with the full
   object name as given on the command line, but it is more natural to
   use the $path in the output and use it to look up .gitattributes.

 * A flaky test has been corrected.

 * Help contributors that visit us at GitHub.

 * "git stash push <pathspec>" did not work from a subdirectory at all.
   Bugfix for a topic in v2.13

Also contains various documentation updates and code clean-ups.

(pkgsrc-changes)
----------------
  drop patch git-base/patches/patch-sha1dc_sha1.c, see the first paragraph
  of above RelNote

Revision 1.65 / (download) - annotate - [select for diffs], Thu Jun 8 09:08:51 2017 UTC (6 years, 3 months ago) by wiz
Branch: MAIN
Changes since 1.64: +2 -1 lines
Diff to previous 1.64 (colored)

Fix endianness issue using upstream commit
https://github.com/git/git/commit/6b851e536b05e0c8c61f77b9e4c3e7cedea39ff8

Bump PKGREVISION.

Revision 1.64 / (download) - annotate - [select for diffs], Mon Jun 5 10:11:39 2017 UTC (6 years, 3 months ago) by adam
Branch: MAIN
Changes since 1.63: +5 -6 lines
Diff to previous 1.63 (colored)

Git v2.13.1 Release Notes
=========================

Fixes since v2.13
-----------------

 * The Web interface to gmane news archive is long gone, even though
   the articles are still accessible via NTTP.  Replace the links with
   ones to public-inbox.org.  Because their message identification is
   based on the actual message-id, it is likely that it will be easier
   to migrate away from it if/when necessary.

 * Update tests to pass under GETTEXT_POISON (a mechanism to ensure
   that output strings that should not be translated are not
   translated by mistake), and tell TravisCI to run them.

 * Setting "log.decorate=false" in the configuration file did not take
   effect in v2.13, which has been corrected.

 * An earlier update to test 7400 needed to be skipped on CYGWIN.

 * Git sometimes gives an advice in a rhetorical question that does
   not require an answer, which can confuse new users and non native
   speakers.  Attempt to rephrase them.

 * "git read-tree -m" (no tree-ish) gave a nonsense suggestion "use
   --empty if you want to clear the index".  With "-m", such a request
   will still fail anyway, as you'd need to name at least one tree-ish
   to be merged.

 * The codepath in "git am" that is used when running "git rebase"
   leaked memory held for the log message of the commits being rebased.

 * "pack-objects" can stream a slice of an existing packfile out when
   the pack bitmap can tell that the reachable objects are all needed
   in the output, without inspecting individual objects.  This
   strategy however would not work well when "--local" and other
   options are in use, and need to be disabled.

 * Clarify documentation for include.path and includeIf.<condition>.path
   configuration variables.

 * Tag objects, which are not reachable from any ref, that point at
   missing objects were mishandled by "git gc" and friends (they
   should silently be ignored instead)

 * A few http:// links that are redirected to https:// in the
   documentation have been updated to https:// links.

 * Make sure our tests would pass when the sources are checked out
   with "platform native" line ending convention by default on
   Windows.  Some "text" files out tests use and the test scripts
   themselves that are meant to be run with /bin/sh, ought to be
   checked out with eol=LF even on Windows.

 * Fix memory leaks pointed out by Coverity (and people).

 * The receive-pack program now makes sure that the push certificate
   records the same set of push options used for pushing.

 * "git cherry-pick" and other uses of the sequencer machinery
   mishandled a trailer block whose last line is an incomplete line.
   This has been fixed so that an additional sign-off etc. are added
   after completing the existing incomplete line.

 * The shell completion script (in contrib/) learned "git stash" has
   a new "push" subcommand.

 * Travis CI gained a task to format the documentation with both
   AsciiDoc and AsciiDoctor.

 * Update the C style recommendation for notes for translators, as
   recent versions of gettext tools can work with our style of
   multi-line comments.

 * "git clone --config var=val" is a way to populate the
   per-repository configuration file of the new repository, but it did
   not work well when val is an empty string.  This has been fixed.

 * A few codepaths in "checkout" and "am" working on an unborn branch
   tried to access an uninitialized piece of memory.

 * "git for-each-ref --format=..." with %(HEAD) in the format used to
   resolve the HEAD symref as many times as it had processed refs,
   which was wasteful, and "git branch" shared the same problem.

 * "git interpret-trailers", when used as GIT_EDITOR for "git commit
   -v", looked for and appended to a trailer block at the very end,
   i.e. at the end of the "diff" output.  The command has been
   corrected to pay attention to the cut-mark line "commit -v" adds to
   the buffer---the real trailer block should appear just before it.

 * A test allowed both "git push" and "git receive-pack" on the other
   end write their traces into the same file.  This is OK on platforms
   that allows atomically appending to a file opened with O_APPEND,
   but on other platforms led to a mangled output, causing
   intermittent test failures.  This has been fixed by disabling
   traces from "receive-pack" in the test.

 * "foo\bar\baz" in "git fetch foo\bar\baz", even though there is no
   slashes in it, cannot be a nickname for a remote on Windows, as
   that is likely to be a pathname on a local filesystem.

 * The "collision detecting" SHA-1 implementation shipped with 2.13
   was quite broken on some big-endian platforms and/or platforms that
   do not like unaligned fetches.  Update to the upstream code which
   has already fixed these issues.

 * "git am -h" triggered a BUG().

 * The interaction of "url.*.insteadOf" and custom URL scheme's
   whitelisting is now documented better.

Revision 1.63 / (download) - annotate - [select for diffs], Thu May 25 03:04:05 2017 UTC (6 years, 4 months ago) by soda
Branch: MAIN
Changes since 1.62: +2 -2 lines
Diff to previous 1.62 (colored)

git-base-2.13.0nb1 broke all little endian platforms on *BSD.
(NOTE: _BIG_ENDIAN is always defined even on litte endian platforms)
from nonaka@

Revision 1.62 / (download) - annotate - [select for diffs], Wed May 24 12:59:01 2017 UTC (6 years, 4 months ago) by martin
Branch: MAIN
Changes since 1.61: +2 -1 lines
Diff to previous 1.61 (colored)

Make it work on platforms requiring strict alignement again.
Patch from upstream, pointed out by maya@.

Revision 1.61 / (download) - annotate - [select for diffs], Wed May 10 18:09:25 2017 UTC (6 years, 4 months ago) by adam
Branch: MAIN
Changes since 1.60: +5 -5 lines
Diff to previous 1.60 (colored)

Git 2.13 Release Notes
======================
Backward compatibility notes.

 * Use of an empty string as a pathspec element that is used for
   'everything matches' is still warned and Git asks users to use a
   more explicit '.' for that instead.  The hope is that existing
   users will not mind this change, and eventually the warning can be
   turned into a hard error, upgrading the deprecation into removal of
   this (mis)feature.  That is not scheduled to happen in the upcoming
   release (yet).

 * The historical argument order "git merge <msg> HEAD <commit>..."
   has been deprecated for quite some time, and is now removed.

 * The default location "~/.git-credential-cache/socket" for the
   socket used to communicate with the credential-cache daemon has
   been moved to "~/.cache/git/credential/socket".

 * Git now avoids blindly falling back to ".git" when the setup
   sequence said we are _not_ in Git repository.  A corner case that
   happens to work right now may be broken by a call to die("BUG").
   We've tried hard to locate such cases and fixed them, but there
   might still be cases that need to be addressed--bug reports are
   greatly appreciated.

Updates since v2.12
-------------------
UI, Workflows & Features

 * "git describe" and "git name-rev" have been taught to take more
   than one refname patterns to restrict the set of refs to base their
   naming output on, and also learned to take negative patterns to
   name refs not to be used for naming via their "--exclude" option.

 * Deletion of a branch "foo/bar" could remove .git/refs/heads/foo
   once there no longer is any other branch whose name begins with
   "foo/", but we didn't do so so far.  Now we do.

 * When "git merge" detects a path that is renamed in one history
   while the other history deleted (or modified) it, it now reports
   both paths to help the user understand what is going on in the two
   histories being merged.

 * The <url> part in "http.<url>.<variable>" configuration variable
   can now be spelled with '*' that serves as wildcard.
   E.g. "http.https://*.example.com.proxy" can be used to specify the
   proxy used for https://a.example.com, https://b.example.com, etc.,
   i.e. any host in the example.com domain.

 * "git tag" did not leave useful message when adding a new entry to
   reflog; this was left unnoticed for a long time because refs/tags/*
   doesn't keep reflog by default.

 * The "negative" pathspec feature was somewhat more cumbersome to use
   than necessary in that its short-hand used "!" which needed to be
   escaped from shells, and it required "exclude from what?" specified.

 * The command line options for ssh invocation needs to be tweaked for
   some implementations of SSH (e.g. PuTTY plink wants "-P <port>"
   while OpenSSH wants "-p <port>" to specify port to connect to), and
   the variant was guessed when GIT_SSH environment variable is used
   to specify it.  The logic to guess now applies to the command
   specified by the newer GIT_SSH_COMMAND and also core.sshcommand
   configuration variable, and comes with an escape hatch for users to
   deal with misdetected cases.

More...

Revision 1.60 / (download) - annotate - [select for diffs], Thu Mar 30 16:23:34 2017 UTC (6 years, 6 months ago) by adam
Branch: MAIN
Changes since 1.59: +5 -5 lines
Diff to previous 1.59 (colored)

Git v2.12.2 Release Notes
=========================

Fixes since v2.12.1
-------------------

 * "git status --porcelain" is supposed to give a stable output, but a
   few strings were left as translatable by mistake.

 * "Dumb http" transport used to misparse a nonsense http-alternates
   response, which has been fixed.

 * "git diff --quiet" relies on the size field in diff_filespec to be
   correctly populated, but diff_populate_filespec() helper function
   made an incorrect short-cut when asked only to populate the size
   field for paths that need to go through convert_to_git() (e.g. CRLF
   conversion).

 * There is no need for Python only to give a few messages to the
   standard error stream, but we somehow did.

 * A leak in a codepath to read from a packed object in (rare) cases
   has been plugged.

 * "git upload-pack", which is a counter-part of "git fetch", did not
   report a request for a ref that was not advertised as invalid.
   This is generally not a problem (because "git fetch" will stop
   before making such a request), but is the right thing to do.

 * A "gc.log" file left by a backgrounded "gc --auto" disables further
   automatic gc; it has been taught to run at least once a day (by
   default) by ignoring a stale "gc.log" file that is too old.

 * "git remote rm X", when a branch has remote X configured as the
   value of its branch.*.remote, tried to remove branch.*.remote and
   branch.*.merge and failed if either is unset.

 * A caller of tempfile API that uses stdio interface to write to
   files may ignore errors while writing, which is detected when
   tempfile is closed (with a call to ferror()).  By that time, the
   original errno that may have told us what went wrong is likely to
   be long gone and was overwritten by an irrelevant value.
   close_tempfile() now resets errno to EIO to make errno at least
   predictable.

 * "git show-branch" expected there were only very short branch names
   in the repository and used a fixed-length buffer to hold them
   without checking for overflow.

 * The code that parses header fields in the commit object has been
   updated for (micro)performance and code hygiene.

 * A test that creates a confusing branch whose name is HEAD has been
   corrected not to do so.

 * "Cc:" on the trailer part does not have to conform to RFC strictly,
   unlike in the e-mail header.  "git send-email" has been updated to
   ignore anything after '>' when picking addresses, to allow non-address
   cruft like " # stable 4.4" after the address.

 * "git push" had a handful of codepaths that could lead to a deadlock
   when unexpected error happened, which has been fixed.

 * Code to read submodule.<name>.ignore config did not state the
   variable name correctly when giving an error message diagnosing
   misconfiguration.

 * "git ls-remote" and "git archive --remote" are designed to work
   without being in a directory under Git's control.  However, recent
   updates revealed that we randomly look into a directory called
   .git/ without actually doing necessary set-up when working in a
   repository.  Stop doing so.

 * The code to parse the command line "git grep <patterns>... <rev>
   [[--] <pathspec>...]" has been cleaned up, and a handful of bugs
   have been fixed (e.g. we used to check "--" if it is a rev).

 * The code to parse "git -c VAR=VAL cmd" and set configuration
   variable for the duration of cmd had two small bugs, which have
   been fixed.
   This supersedes jc/config-case-cmdline topic that has been discarded.

Also contains various documentation updates and code clean-ups.

Revision 1.59 / (download) - annotate - [select for diffs], Sat Feb 25 08:32:57 2017 UTC (6 years, 7 months ago) by adam
Branch: MAIN
CVS Tags: pkgsrc-2017Q1-base, pkgsrc-2017Q1
Changes since 1.58: +6 -6 lines
Diff to previous 1.58 (colored)

Git 2.12 Release Notes
======================

Backward compatibility notes.

 * Use of an empty string that is used for 'everything matches' is
   still warned and Git asks users to use a more explicit '.' for that
   instead.  The hope is that existing users will not mind this
   change, and eventually the warning can be turned into a hard error,
   upgrading the deprecation into removal of this (mis)feature.  That
   is not scheduled to happen in the upcoming release (yet).

 * The historical argument order "git merge <msg> HEAD <commit>..."
   has been deprecated for quite some time, and will be removed in a
   future release.

 * An ancient script "git relink" has been removed.


Updates since v2.11
-------------------

UI, Workflows & Features

 * Various updates to "git p4".

 * "git p4" didn't interact with the internal of .git directory
   correctly in the modern "git-worktree"-enabled world.

 * "git branch --list" and friends learned "--ignore-case" option to
   optionally sort branches and tags case insensitively.

 * In addition to %(subject), %(body), "log --pretty=format:..."
   learned a new placeholder %(trailers).

 * "git rebase" learned "--quit" option, which allows a user to
   remove the metadata left by an earlier "git rebase" that was
   manually aborted without using "git rebase --abort".

 * "git clone --reference $there --recurse-submodules $super" has been
   taught to guess repositories usable as references for submodules of
   $super that are embedded in $there while making a clone of the
   superproject borrow objects from $there; extend the mechanism to
   also allow submodules of these submodules to borrow repositories
   embedded in these clones of the submodules embedded in the clone of
   the superproject.

 * Porcelain scripts written in Perl are getting internationalized.

 * "git merge --continue" has been added as a synonym to "git commit"
   to conclude a merge that has stopped due to conflicts.

 * Finer-grained control of what protocols are allowed for transports
   during clone/fetch/push have been enabled via a new configuration
   mechanism.

 * "git shortlog" learned "--committer" option to group commits by
   committer, instead of author.

 * GitLFS integration with "git p4" has been updated.

 * The isatty() emulation for Windows has been updated to eradicate
   the previous hack that depended on internals of (older) MSVC
   runtime.

 * Some platforms no longer understand "latin-1" that is still seen in
   the wild in e-mail headers; replace them with "iso-8859-1" that is
   more widely known when conversion fails from/to it.

 * "git grep" has been taught to optionally recurse into submodules.

 * "git rm" used to refuse to remove a submodule when it has its own
   git repository embedded in its working tree.  It learned to move
   the repository away to $GIT_DIR/modules/ of the superproject
   instead, and allow the submodule to be deleted (as long as there
   will be no loss of local modifications, that is).

 * A recent updates to "git p4" was not usable for older p4 but it
   could be made to work with minimum changes.  Do so.

 * "git diff" learned diff.interHunkContext configuration variable
   that gives the default value for its --inter-hunk-context option.

 * The prereleaseSuffix feature of version comparison that is used in
   "git tag -l" did not correctly when two or more prereleases for the
   same release were present (e.g. when 2.0, 2.0-beta1, and 2.0-beta2
   are there and the code needs to compare 2.0-beta1 and 2.0-beta2).

 * "git submodule push" learned "--recurse-submodules=only option to
   push submodules out without pushing the top-level superproject.

 * "git tag" and "git verify-tag" learned to put GPG verification
   status in their "--format=<placeholders>" output format.

 * An ancient repository conversion tool left in contrib/ has been
   removed.

 * "git show-ref HEAD" used with "--verify" because the user is not
   interested in seeing refs/remotes/origin/HEAD, and used with
   "--head" because the user does not want HEAD to be filtered out,
   i.e. "git show-ref --head --verify HEAD", did not work as expected.

 * "git submodule add" used to be confused and refused to add a
   locally created repository; users can now use "--force" option
   to add them.
   (merge 619acfc78c sb/submodule-add-force later to maint).

 * Some people feel the default set of colors used by "git log --graph"
   rather limiting.  A mechanism to customize the set of colors has
   been introduced.

 * "git read-tree" and its underlying unpack_trees() machinery learned
   to report problematic paths prefixed with the --super-prefix option.

 * When a submodule "A", which has another submodule "B" nested within
   it, is "absorbed" into the top-level superproject, the inner
   submodule "B" used to be left in a strange state.  The logic to
   adjust the .git pointers in these submodules has been corrected.

 * The user can specify a custom update method that is run when
   "submodule update" updates an already checked out submodule.  This
   was ignored when checking the submodule out for the first time and
   we instead always just checked out the commit that is bound to the
   path in the superproject's index.

 * The command line completion (in contrib/) learned that
   "git diff --submodule=" can take "diff" as a recently added option.

 * The "core.logAllRefUpdates" that used to be boolean has been
   enhanced to take 'always' as well, to record ref updates to refs
   other than the ones that are expected to be updated (i.e. branches,
   remote-tracking branches and notes).

 * Comes with more command line completion (in contrib/) for recently
   introduced options.

Revision 1.58 / (download) - annotate - [select for diffs], Sat Feb 4 11:14:47 2017 UTC (6 years, 7 months ago) by adam
Branch: MAIN
Changes since 1.57: +5 -5 lines
Diff to previous 1.57 (colored)

Git v2.11.1 Release Notes
=========================

Fixes since v2.11
-----------------

 * The default Travis-CI configuration specifies newer P4 and GitLFS.

 * The character width table has been updated to match Unicode 9.0

 * Update the isatty() emulation for Windows by updating the previous
   hack that depended on internals of (older) MSVC runtime.

 * "git rev-parse --symbolic" failed with a more recent notation like
   "HEAD^-1" and "HEAD^!".

 * An empty directory in a working tree that can simply be nuked used
   to interfere while merging or cherry-picking a change to create a
   submodule directory there, which has been fixed..

 * The code in "git push" to compute if any commit being pushed in the
   superproject binds a commit in a submodule that hasn't been pushed
   out was overly inefficient, making it unusable even for a small
   project that does not have any submodule but have a reasonable
   number of refs.

 * "git push --dry-run --recurse-submodule=on-demand" wasn't
   "--dry-run" in the submodules.

 * The output from "git worktree list" was made in readdir() order,
   and was unstable.

 * mergetool.<tool>.trustExitCode configuration variable did not apply
   to built-in tools, but now it does.

 * "git p4" LFS support was broken when LFS stores an empty blob.

 * Fix a corner case in merge-recursive regression that crept in
   during 2.10 development cycle.

 * Update the error messages from the dumb-http client when it fails
   to obtain loose objects; we used to give sensible error message
   only upon 404 but we now forbid unexpected redirects that needs to
   be reported with something sensible.

 * When diff.renames configuration is on (and with Git 2.9 and later,
   it is enabled by default, which made it worse), "git stash"
   misbehaved if a file is removed and another file with a very
   similar content is added.

 * "git diff --no-index" did not take "--no-abbrev" option.

 * "git difftool --dir-diff" had a minor regression when started from
   a subdirectory, which has been fixed.

 * "git commit --allow-empty --only" (no pathspec) with dirty index
   ought to be an acceptable way to create a new commit that does not
   change any paths, but it was forbidden, perhaps because nobody
   needed it so far.

 * A pathname that begins with "//" or "\\" on Windows is special but
   path normalization logic was unaware of it.

 * "git pull --rebase", when there is no new commits on our side since
   we forked from the upstream, should be able to fast-forward without
   invoking "git rebase", but it didn't.

 * The way to specify hotkeys to "xxdiff" that is used by "git
   mergetool" has been modernized to match recent versions of xxdiff.

 * Unlike "git am --abort", "git cherry-pick --abort" moved HEAD back
   to where cherry-pick started while picking multiple changes, when
   the cherry-pick stopped to ask for help from the user, and the user
   did "git reset --hard" to a different commit in order to re-attempt
   the operation.

 * Code cleanup in shallow boundary computation.

 * A recent update to receive-pack to make it easier to drop garbage
   objects made it clear that GIT_ALTERNATE_OBJECT_DIRECTORIES cannot
   have a pathname with a colon in it (no surprise!), and this in turn
   made it impossible to push into a repository at such a path.  This
   has been fixed by introducing a quoting mechanism used when
   appending such a path to the colon-separated list.

 * The function usage_msg_opt() has been updated to say "fatal:"
   before the custom message programs give, when they want to die
   with a message about wrong command line options followed by the
   standard usage string.

 * "git index-pack --stdin" needs an access to an existing repository,
   but "git index-pack file.pack" to generate an .idx file that
   corresponds to a packfile does not.

 * Fix for NDEBUG builds.

 * A lazy "git push" without refspec did not internally use a fully
   specified refspec to perform 'current', 'simple', or 'upstream'
   push, causing unnecessary "ambiguous ref" errors.

 * "git p4" misbehaved when swapping a directory and a symbolic link.

 * Even though an fix was attempted in Git 2.9.3 days, but running
   "git difftool --dir-diff" from a subdirectory never worked. This
   has been fixed.

 * "git p4" that tracks multile p4 paths imported a single changelist
   that touches files in these multiple paths as one commit, followed
   by many empty commits.  This has been fixed.

 * A potential but unlikely buffer overflow in Windows port has been
   fixed.

 * When the http server gives an incomplete response to a smart-http
   rpc call, it could lead to client waiting for a full response that
   will never come.  Teach the client side to notice this condition
   and abort the transfer.

 * Some platforms no longer understand "latin-1" that is still seen in
   the wild in e-mail headers; replace them with "iso-8859-1" that is
   more widely known when conversion fails from/to it.

 * Update the procedure to generate "tags" for developer support.

 * Update the definition of the MacOSX test environment used by
   TravisCI.

 * A few git-svn updates.

 * Compression setting for producing packfiles were spread across
   three codepaths, one of which did not honor any configuration.
   Unify these so that all of them honor core.compression and
   pack.compression variables the same way.

 * "git fast-import" sometimes mishandled while rebalancing notes
   tree, which has been fixed.

 * Recent update to the default abbreviation length that auto-scales
   lacked documentation update, which has been corrected.

 * Leakage of lockfiles in the config subsystem has been fixed.

 * It is natural that "git gc --auto" may not attempt to pack
   everything into a single pack, and there is no point in warning
   when the user has configured the system to use the pack bitmap,
   leading to disabling further "gc".

 * "git archive" did not read the standard configuration files, and
   failed to notice a file that is marked as binary via the userdiff
   driver configuration.

 * "git blame --porcelain" misidentified the "previous" <commit, path>
   pair (aka "source") when contents came from two or more files.

 * "git rebase -i" with a recent update started showing an incorrect
   count when squashing more than 10 commits.

 * "git <cmd> @{push}" on a detached HEAD used to segfault; it has
   been corrected to error out with a message.

 * Tighten a test to avoid mistaking an extended ERE regexp engine as
   a PRE regexp engine.

 * Typing ^C to pager, which usually does not kill it, killed Git and
   took the pager down as a collateral damage in certain process-tree
   structure.  This has been fixed.

Revision 1.57 / (download) - annotate - [select for diffs], Mon Dec 5 14:07:32 2016 UTC (6 years, 9 months ago) by adam
Branch: MAIN
CVS Tags: pkgsrc-2016Q4-base, pkgsrc-2016Q4
Changes since 1.56: +5 -5 lines
Diff to previous 1.56 (colored)

Git 2.11 Release Notes
======================

Backward compatibility notes.

 * An empty string used as a pathspec element has always meant
   'everything matches', but it is too easy to write a script that
   finds a path to remove in $path and run 'git rm "$paht"' by
   mistake (when the user meant to give "$path"), which ends up
   removing everything.  This release starts warning about the
   use of an empty string that is used for 'everything matches' and
   asks users to use a more explicit '.' for that instead.

   The hope is that existing users will not mind this change, and
   eventually the warning can be turned into a hard error, upgrading
   the deprecation into removal of this (mis)feature.

 * The historical argument order "git merge <msg> HEAD <commit>..."
   has been deprecated for quite some time, and will be removed in the
   next release (not this one).

 * The default abbreviation length, which has historically been 7, now
   scales as the repository grows, using the approximate number of
   objects in the repository and a bit of math around the birthday
   paradox.  The logic suggests to use 12 hexdigits for the Linux
   kernel, and 9 to 10 for Git itself.


Updates since v2.10
-------------------

UI, Workflows & Features

 * Comes with new version of git-gui, now at its 0.21.0 tag.

 * "git format-patch --cover-letter HEAD^" to format a single patch
   with a separate cover letter now numbers the output as [PATCH 0/1]
   and [PATCH 1/1] by default.

 * An incoming "git push" that attempts to push too many bytes can now
   be rejected by setting a new configuration variable at the receiving
   end.

 * "git nosuchcommand --help" said "No manual entry for gitnosuchcommand",
   which was not intuitive, given that "git nosuchcommand" said "git:
   'nosuchcommand' is not a git command".

 * "git clone --recurse-submodules --reference $path $URL" is a way to
   reduce network transfer cost by borrowing objects in an existing
   $path repository when cloning the superproject from $URL; it
   learned to also peek into $path for presence of corresponding
   repositories of submodules and borrow objects from there when able.

 * The "git diff --submodule={short,log}" mechanism has been enhanced
   to allow "--submodule=diff" to show the patch between the submodule
   commits bound to the superproject.

 * Even though "git hash-objects", which is a tool to take an
   on-filesystem data stream and put it into the Git object store,
   can perform "outside-world-to-Git" conversions (e.g.
   end-of-line conversions and application of the clean-filter), and
   it has had this feature on by default from very early days, its reverse
   operation "git cat-file", which takes an object from the Git object
   store and externalizes it for consumption by the outside world,
   lacked an equivalent mechanism to run the "Git-to-outside-world"
   conversion.  The command learned the "--filters" option to do so.

 * Output from "git diff" can be made easier to read by intelligently selecting
   which lines are common and which lines are added/deleted
   when the lines before and after the changed section
   are the same.  A command line option (--indent-heuristic) and a
   configuration variable (diff.indentHeuristic) are added to help with the
   experiment to find good heuristics.

 * In some projects, it is common to use "[RFC PATCH]" as the subject
   prefix for a patch meant for discussion rather than application.  A
   new format-patch option "--rfc" is a short-hand for "--subject-prefix=RFC PATCH"
   to help the participants of such projects.

 * "git add --chmod={+,-}x <pathspec>" only changed the
   executable bit for paths that are either new or modified. This has
   been corrected to change the executable bit for all paths that match
   the given pathspec.

 * When "git format-patch --stdout" output is placed as an in-body
   header and it uses RFC2822 header folding, "git am" fails to
   put the header line back into a single logical line.  The
   underlying "git mailinfo" was taught to handle this properly.

 * "gitweb" can spawn "highlight" to show blob contents with
   (programming) language-specific syntax highlighting, but only
   when the language is known.  "highlight" can however be told
   to guess the language itself by giving it "--force" option, which
   has been enabled.

 * "git gui" l10n to Portuguese.

 * When given an abbreviated object name that is not (or more
   realistically, "no longer") unique, we gave a fatal error
   "ambiguous argument".  This error is now accompanied by a hint that
   lists the objects beginning with the given prefix.  During the
   course of development of this new feature, numerous minor bugs were
   uncovered and corrected, the most notable one of which is that we
   gave "short SHA1 xxxx is ambiguous." twice without good reason.

 * "git log rev^..rev" is an often-used revision range specification
   to show what was done on a side branch merged at rev.  This has
   gained a short-hand "rev^-1".  In general "rev^-$n" is the same as
   "^rev^$n rev", i.e. what has happened on other branches while the
   history leading to nth parent was looking the other way.

 * In recent versions of cURL, GSSAPI credential delegation is
   disabled by default due to CVE-2011-2192; introduce a http.delegation
   configuration variable to selectively allow enabling this.
   (merge 26a7b23429 ps/http-gssapi-cred-delegation later to maint).

 * "git mergetool" learned to honor "-O<orderfile>" to control the
   order of paths to present to the end user.

 * "git diff/log --ws-error-highlight=<kind>" lacked the corresponding
   configuration variable (diff.wsErrorHighlight) to set it by default.

 * "git ls-files" learned the "--recurse-submodules" option
   to get a listing of tracked files across submodules (i.e. this
   only works with the "--cached" option, not for listing untracked or
   ignored files).  This would be a useful tool to sit on the upstream
   side of a pipe that is read with xargs to work on all working tree
   files from the top-level superproject.

 * A new credential helper that talks via "libsecret" with
   implementations of XDG Secret Service API has been added to
   contrib/credential/.

 * The GPG verification status shown by the "%G?" pretty format specifier
   was not rich enough to differentiate a signature made by an expired
   key, a signature made by a revoked key, etc.  New output letters
   have been assigned to express them.

 * In addition to purely abbreviated commit object names, "gitweb"
   learned to turn "git describe" output (e.g. v2.9.3-599-g2376d31787)
   into clickable links in its output.

 * "git commit" created an empty commit when invoked with an index
   consisting solely of intend-to-add paths (added with "git add -N").
   It now requires the "--allow-empty" option to create such a commit.
   The same logic prevented "git status" from showing such paths as "new files" in the
   "Changes not staged for commit" section.

 * The smudge/clean filter API spawns an external process
   to filter the contents of each path that has a filter defined.  A
   new type of "process" filter API has been added to allow the first
   request to run the filter for a path to spawn a single process, and
   all filtering is served by this single process for multiple
   paths, reducing the process creation overhead.

 * The user always has to say "stash@{$N}" when naming a single
   element in the default location of the stash, i.e. reflogs in
   refs/stash.  The "git stash" command learned to accept "git stash
   apply 4" as a short-hand for "git stash apply stash@{4}".


Performance, Internal Implementation, Development Support etc.

 * The delta-base-cache mechanism has been a key to the performance in
   a repository with a tightly packed packfile, but it did not scale
   well even with a larger value of core.deltaBaseCacheLimit.

 * Enhance "git status --porcelain" output by collecting more data on
   the state of the index and the working tree files, which may
   further be used to teach git-prompt (in contrib/) to make fewer
   calls to git.

 * Extract a small helper out of the function that reads the authors
   script file "git am" internally uses.
   (merge a77598e jc/am-read-author-file later to maint).

 * Lift calls to exit(2) and die() higher in the callchain in
   sequencer.c files so that more helper functions in it can be used
   by callers that want to handle error conditions themselves.

 * "git am" has been taught to make an internal call to "git apply"'s
   innards without spawning the latter as a separate process.

 * The ref-store abstraction was introduced to the refs API so that we
   can plug in different backends to store references.

 * The "unsigned char sha1[20]" to "struct object_id" conversion
   continues.  Notable changes in this round includes that ce->sha1,
   i.e. the object name recorded in the cache_entry, turns into an
   object_id.

 * JGit can show a fake ref "capabilities^{}" to "git fetch" when it
   does not advertise any refs, but "git fetch" was not prepared to
   see such an advertisement.  When the other side disconnects without
   giving any ref advertisement, we used to say "there may not be a
   repository at that URL", but we may have seen other advertisements
   like "shallow" and ".have" in which case we definitely know that a
   repository is there.  The code to detect this case has also been
   updated.

 * Some codepaths in "git pack-objects" were not ready to use an
   existing pack bitmap; now they are and as a result they have
   become faster.

 * The codepath in "git fsck" to detect malformed tree objects has
   been updated not to die but keep going after detecting them.

 * We call "qsort(array, nelem, sizeof(array[0]), fn)", and most of
   the time third parameter is redundant.  A new QSORT() macro lets us
   omit it.

 * "git pack-objects" in a repository with many packfiles used to
   spend a lot of time looking for/at objects in them; the accesses to
   the packfiles are now optimized by checking the most-recently-used
   packfile first.
   (merge c9af708b1a jk/pack-objects-optim-mru later to maint).

 * Codepaths involved in interacting alternate object stores have
   been cleaned up.

 * In order for the receiving end of "git push" to inspect the
   received history and decide to reject the push, the objects sent
   from the sending end need to be made available to the hook and
   the mechanism for the connectivity check, and this was done
   traditionally by storing the objects in the receiving repository
   and letting "git gc" expire them.  Instead, store the newly
   received objects in a temporary area, and make them available by
   reusing the alternate object store mechanism to them only while we
   decide if we accept the check, and once we decide, either migrate
   them to the repository or purge them immediately.

 * The require_clean_work_tree() helper was recreated in C when "git
   pull" was rewritten from shell; the helper is now made available to
   other callers in preparation for upcoming "rebase -i" work.

 * "git upload-pack" had its code cleaned-up and performance improved
   by reducing use of timestamp-ordered commit-list, which was
   replaced with a priority queue.

 * "git diff --no-index" codepath has been updated not to try to peek
   into a .git/ directory that happens to be under the current
   directory, when we know we are operating outside any repository.

 * Update of the sequencer codebase to make it reusable to reimplement
   "rebase -i" continues.

 * Git generally does not explicitly close file descriptors that were
   open in the parent process when spawning a child process, but most
   of the time the child does not want to access them. As Windows does
   not allow removing or renaming a file that has a file descriptor
   open, a slow-to-exit child can even break the parent process by
   holding onto them.  Use O_CLOEXEC flag to open files in various
   codepaths.

 * Update "interpret-trailers" machinery and teach it that people in
   the real world write all sorts of cruft in the "trailer" that was
   originally designed to have the neat-o "Mail-Header: like thing"
   and nothing else.

Revision 1.56 / (download) - annotate - [select for diffs], Sun Oct 30 11:43:03 2016 UTC (6 years, 11 months ago) by adam
Branch: MAIN
Changes since 1.55: +5 -5 lines
Diff to previous 1.55 (colored)

Git v2.10.2 Release Notes
=========================

Fixes since v2.10.1
-------------------

 * The code that parses the format parameter of for-each-ref command
   has seen a micro-optimization.

 * The "graph" API used in "git log --graph" miscounted the number of
   output columns consumed so far when drawing a padding line, which
   has been fixed; this did not affect any existing code as nobody
   tried to write anything after the padding on such a line, though.

 * Almost everybody uses DEFAULT_ABBREV to refer to the default
   setting for the abbreviation, but "git blame" peeked into
   underlying variable bypassing the macro for no good reason.

 * Doc update to clarify what "log -3 --reverse" does.

 * An author name, that spelled a backslash-quoted double quote in the
   human readable part "My \"double quoted\" name", was not unquoted
   correctly while applying a patch from a piece of e-mail.

 * The original command line syntax for "git merge", which was "git
   merge <msg> HEAD <parent>...", has been deprecated for quite some
   time, and "git gui" was the last in-tree user of the syntax.  This
   is finally fixed, so that we can move forward with the deprecation.

 * Codepaths that read from an on-disk loose object were too loose in
   validating what they are reading is a proper object file and
   sometimes read past the data they read from the disk, which has
   been corrected.  H/t to Gustavo Grieco for reporting.

 * "git worktree", even though it used the default_abbrev setting that
   ought to be affected by core.abbrev configuration variable, ignored
   the variable setting.  The command has been taught to read the
   default set of configuration variables to correct this.

 * A low-level function verify_packfile() was meant to show errors
   that were detected without dying itself, but under some conditions
   it didn't and died instead, which has been fixed.

 * When "git fetch" tries to find where the history of the repository
   it runs in has diverged from what the other side has, it has a
   mechanism to avoid digging too deep into irrelevant side branches.
   This however did not work well over the "smart-http" transport due
   to a design bug, which has been fixed.

 * When we started cURL to talk to imap server when a new enough
   version of cURL library is available, we forgot to explicitly add
   imap(s):// before the destination.  To some folks, that didn't work
   and the library tried to make HTTP(s) requests instead.

 * The ./configure script generated from configure.ac was taught how
   to detect support of SSL by libcurl better.

 * http.emptyauth configuration is a way to allow an empty username to
   pass when attempting to authenticate using mechanisms like
   Kerberos.  We took an unspecified (NULL) username and sent ":"
   (i.e. no username, no password) to CURLOPT_USERPWD, but did not do
   the same when the username is explicitly set to an empty string.

 * "git clone" of a local repository can be done at the filesystem
   level, but the codepath did not check errors while copying and
   adjusting the file that lists alternate object stores.

 * Documentation for "git commit" was updated to clarify that "commit
   -p <paths>" adds to the current contents of the index to come up
   with what to commit.

 * A stray symbolic link in $GIT_DIR/refs/ directory could make name
   resolution loop forever, which has been corrected.

 * The "submodule.<name>.path" stored in .gitmodules is never copied
   to .git/config and such a key in .git/config has no meaning, but
   the documentation described it and submodule.<name>.url next to
   each other as if both belong to .git/config.  This has been fixed.

 * Recent git allows submodule.<name>.branch to use a special token
   "." instead of the branch name; the documentation has been updated
   to describe it.

 * In a worktree connected to a repository elsewhere, created via "git
   worktree", "git checkout" attempts to protect users from confusion
   by refusing to check out a branch that is already checked out in
   another worktree.  However, this also prevented checking out a
   branch, which is designated as the primary branch of a bare
   reopsitory, in a worktree that is connected to the bare
   repository.  The check has been corrected to allow it.

 * "git rebase" immediately after "git clone" failed to find the fork
   point from the upstream.

 * When fetching from a remote that has many tags that are irrelevant
   to branches we are following, we used to waste way too many cycles
   when checking if the object pointed at by a tag (that we are not
   going to fetch!) exists in our repository too carefully.

 * The Travis CI configuration we ship ran the tests with --verbose
   option but this risks non-TAP output that happens to be "ok" to be
   misinterpreted as TAP signalling a test that passed.  This resulted
   in unnecessary failure.  This has been corrected by introducing a
   new mode to run our tests in the test harness to send the verbose
   output separately to the log file.

 * Some AsciiDoc formatter mishandles a displayed illustration with
   tabs in it.  Adjust a few of them in merge-base documentation to
   work around them.

Also contains minor documentation updates and code clean-ups.

Revision 1.55 / (download) - annotate - [select for diffs], Thu Oct 6 10:45:04 2016 UTC (6 years, 11 months ago) by adam
Branch: MAIN
Changes since 1.54: +5 -5 lines
Diff to previous 1.54 (colored)

ixes since v2.10
-----------------

 * Clarify various ways to specify the "revision ranges" in the
   documentation.

 * "diff-highlight" script (in contrib/) learned to work better with
   "git log -p --graph" output.

 * The test framework left the number of tests and success/failure
   count in the t/test-results directory, keyed by the name of the
   test script plus the process ID.  The latter however turned out not
   to serve any useful purpose.  The process ID part of the filename
   has been removed.

 * Having a submodule whose ".git" repository is somehow corrupt
   caused a few commands that recurse into submodules loop forever.

 * "git symbolic-ref -d HEAD" happily removes the symbolic ref, but
   the resulting repository becomes an invalid one.  Teach the command
   to forbid removal of HEAD.

 * A test spawned a short-lived background process, which sometimes
   prevented the test directory from getting removed at the end of the
   script on some platforms.

 * Update a few tests that used to use GIT_CURL_VERBOSE to use the
   newer GIT_TRACE_CURL.

 * Update Japanese translation for "git-gui".

 * "git fetch http::/site/path" did not die correctly and segfaulted
   instead.

 * "git commit-tree" stopped reading commit.gpgsign configuration
   variable that was meant for Porcelain "git commit" in Git 2.9; we
   forgot to update "git gui" to look at the configuration to match
   this change.

 * "git log --cherry-pick" used to include merge commits as candidates
   to be matched up with other commits, resulting a lot of wasted time.
   The patch-id generation logic has been updated to ignore merges to
   avoid the wastage.

 * The http transport (with curl-multi option, which is the default
   these days) failed to remove curl-easy handle from a curlm session,
   which led to unnecessary API failures.

 * "git diff -W" output needs to extend the context backward to
   include the header line of the current function and also forward to
   include the body of the entire current function up to the header
   line of the next one.  This process may have to merge to adjacent
   hunks, but the code forgot to do so in some cases.

 * Performance tests done via "t/perf" did not use the same set of
   build configuration if the user relied on autoconf generated
   configuration.

 * "git format-patch --base=..." feature that was recently added
   showed the base commit information after "-- " e-mail signature
   line, which turned out to be inconvenient.  The base information
   has been moved above the signature line.

 * Even when "git pull --rebase=preserve" (and the underlying "git
   rebase --preserve") can complete without creating any new commit
   (i.e. fast-forwards), it still insisted on having a usable ident
   information (read: user.email is set correctly), which was less
   than nice.  As the underlying commands used inside "git rebase"
   would fail with a more meaningful error message and advice text
   when the bogus ident matters, this extra check was removed.

 * "git gc --aggressive" used to limit the delta-chain length to 250,
   which is way too deep for gaining additional space savings and is
   detrimental for runtime performance.  The limit has been reduced to
   50.

 * Documentation for individual configuration variables to control use
   of color (like `color.grep`) said that their default value is
   'false', instead of saying their default is taken from `color.ui`.
   When we updated the default value for color.ui from 'false' to
   'auto' quite a while ago, all of them broke.  This has been
   corrected.

 * A shell script example in check-ref-format documentation has been
   fixed.

 * "git checkout <word>" does not follow the usual disambiguation
   rules when the <word> can be both a rev and a path, to allow
   checking out a branch 'foo' in a project that happens to have a
   file 'foo' in the working tree without having to disambiguate.
   This was poorly documented and the check was incorrect when the
   command was run from a subdirectory.

 * Some codepaths in "git diff" used regexec(3) on a buffer that was
   mmap(2)ed, which may not have a terminating NUL, leading to a read
   beyond the end of the mapped region.  This was fixed by introducing
   a regexec_buf() helper that takes a <ptr,len> pair with REG_STARTEND
   extension.

 * The procedure to build Git on Mac OS X for Travis CI hardcoded the
   internal directory structure we assumed HomeBrew uses, which was a
   no-no.  The procedure has been updated to ask HomeBrew things we
   need to know to fix this.

 * When "git rebase -i" is given a broken instruction, it told the
   user to fix it with "--edit-todo", but didn't say what the step
   after that was (i.e. "--continue").

 * "git add --chmod=+x" added recently lacked documentation, which has
   been corrected.

 * "git add --chmod=+x <pathspec>" added recently only toggled the
   executable bit for paths that are either new or modified. This has
   been corrected to flip the executable bit for all paths that match
   the given pathspec.

 * "git pack-objects --include-tag" was taught that when we know that
   we are sending an object C, we want a tag B that directly points at
   C but also a tag A that points at the tag B.  We used to miss the
   intermediate tag B in some cases.

 * Documentation around tools to import from CVS was fairly outdated.

 * In the codepath that comes up with the hostname to be used in an
   e-mail when the user didn't tell us, we looked at ai_canonname
   field in struct addrinfo without making sure it is not NULL first.

Also contains minor documentation updates and code clean-ups.

Revision 1.54 / (download) - annotate - [select for diffs], Wed Sep 7 08:56:33 2016 UTC (7 years ago) by adam
Branch: MAIN
CVS Tags: pkgsrc-2016Q3-base, pkgsrc-2016Q3
Changes since 1.53: +6 -6 lines
Diff to previous 1.53 (colored)

Changes 2.10.0:

UI, Workflows & Features

 * "git pull --rebase --verify-signature" learned to warn the user
   that "--verify-signature" is a no-op when rebasing.

 * An upstream project can make a recommendation to shallowly clone
   some submodules in the .gitmodules file it ships.

 * "git worktree add" learned that '-' can be used as a short-hand for
   "@{-1}", the previous branch.

 * Update the funcname definition to support css files.

 * The completion script (in contrib/) learned to complete "git
   status" options.

 * Messages that are generated by auto gc during "git push" on the
   receiving end are now passed back to the sending end in such a way
   that they are shown with "remote: " prefix to avoid confusing the
   users.

 * "git add -i/-p" learned to honor diff.compactionHeuristic
   experimental knob, so that the user can work on the same hunk split
   as "git diff" output.

 * "upload-pack" allows a custom "git pack-objects" replacement when
   responding to "fetch/clone" via the uploadpack.packObjectsHook.
   (merge b738396 jk/upload-pack-hook later to maint).

 * Teach format-patch and mailsplit (hence "am") how a line that
   happens to begin with "From " in the e-mail message is quoted with
   ">", so that these lines can be restored to their original shape.
   (merge d9925d1 ew/mboxrd-format-am later to maint).

 * "git repack" learned the "--keep-unreachable" option, which sends
   loose unreachable objects to a pack instead of leaving them loose.
   This helps heuristics based on the number of loose objects
   (e.g. "gc --auto").
   (merge e26a8c4 jk/repack-keep-unreachable later to maint).

 * "log --graph --format=" learned that "%>|(N)" specifies the width
   relative to the terminal's left edge, not relative to the area to
   draw text that is to the right of the ancestry-graph section.  It
   also now accepts negative N that means the column limit is relative
   to the right border.

 * A careless invocation of "git send-email directory/" after editing
   0001-change.patch with an editor often ends up sending both
   0001-change.patch and its backup file, 0001-change.patch~, causing
   embarrassment and a minor confusion.  Detect such an input and
   offer to skip the backup files when sending the patches out.
   (merge 531220b jc/send-email-skip-backup later to maint).

 * "git submodule update" that drives many "git clone" could
   eventually hit flaky servers/network conditions on one of the
   submodules; the command learned to retry the attempt.

 * The output coloring scheme learned two new attributes, italic and
   strike, in addition to existing bold, reverse, etc.

 * "git log" learns log.showSignature configuration variable, and a
   command line option "--no-show-signature" to countermand it.
   (merge fce04c3 mj/log-show-signature-conf later to maint).

 * More markings of messages for i18n, with updates to various tests
   to pass GETTEXT_POISON tests.

 * "git archive" learned to handle files that are larger than 8GB and
   commits far in the future than expressible by the traditional US-TAR
   format.
   (merge 560b0e8 jk/big-and-future-archive-tar later to maint).


 * A new configuration variable core.sshCommand has been added to
   specify what value for GIT_SSH_COMMAND to use per repository.

 * "git worktree prune" protected worktrees that are marked as
   "locked" by creating a file in a known location.  "git worktree"
   command learned a dedicated command pair to create and remove such
   a file, so that the users do not have to do this with editor.

 * A handful of "git svn" updates.

 * "git push" learned to accept and pass extra options to the
   receiving end so that hooks can read and react to them.

 * "git status" learned to suggest "merge --abort" during a conflicted
   merge, just like it already suggests "rebase --abort" during a
   conflicted rebase.

 * "git jump" script (in contrib/) has been updated a bit.
   (merge a91e692 jk/git-jump later to maint).

 * "git push" and "git clone" learned to give better progress meters
   to the end user who is waiting on the terminal.

 * An entry "git log --decorate" for the tip of the current branch is
   shown as "HEAD -> name" (where "name" is the name of the branch);
   the arrow is now painted in the same color as "HEAD", not in the
   color for commits.

 * "git format-patch" learned format.from configuration variable to
   specify the default settings for its "--from" option.

 * "git am -3" calls "git merge-recursive" when it needs to fall back
   to a three-way merge; this call has been turned into an internal
   subroutine call instead of spawning a separate subprocess.

 * The command line completion scripts (in contrib/) now knows about
   "git branch --delete/--move [--remote]".
   (merge 2703c22 vs/completion-branch-fully-spelled-d-m-r later to maint).

 * "git rev-parse --git-path hooks/<hook>" learned to take
   core.hooksPath configuration variable (introduced during 2.9 cycle)
   into account.
   (merge 9445b49 ab/hooks later to maint).

 * "git log --show-signature" and other commands that display the
   verification status of PGP signature now shows the longer key-id,
   as 32-bit key-id is so last century.

Revision 1.53 / (download) - annotate - [select for diffs], Fri Aug 19 16:11:14 2016 UTC (7 years, 1 month ago) by wiz
Branch: MAIN
Changes since 1.52: +5 -5 lines
Diff to previous 1.52 (colored)

Update git* to 2.9.3.

Fixes since v2.9.2
------------------

* A helper function that takes the contents of a commit object and
finds its subject line did not ignore leading blank lines, as is
commonly done by other codepaths. Make it ignore leading blank
lines to match.

* Git does not know what the contents in the index should be for a
path added with "git add -N" yet, so "git grep --cached" should not
show hits (or show lack of hits, with -L) in such a path, but that
logic does not apply to "git grep", i.e. searching in the working
tree files. But we did so by mistake, which has been corrected.

* "git rebase -i --autostash" did not restore the auto-stashed change
when the operation was aborted.

* "git commit --amend --allow-empty-message -S" for a commit without
any message body could have misidentified where the header of the
commit object ends.

* More mark-up updates to typeset strings that are expected to
literally typed by the end user in fixed-width font.

* For a long time, we carried an in-code comment that said our
colored output would work only when we use fprintf/fputs on
Windows, which no longer is the case for the past few years.

* "gc.autoPackLimit" when set to 1 should not trigger a repacking
when there is only one pack, but the code counted poorly and did
so.

* One part of "git am" had an oddball helper function that called
stuff from outside "his" as opposed to calling what we have "ours",
which was not gender-neutral and also inconsistent with the rest of
the system where outside stuff is usuall called "theirs" in
contrast to "ours".

* The test framework learned a new helper test_match_signal to
check an exit code from getting killed by an expected signal.

* "git blame -M" missed a single line that was moved within the file.

* Fix recently introduced codepaths that are involved in parallel
submodule operations, which gave up on reading too early, and
could have wasted CPU while attempting to write under a corner
case condition.

* "git grep -i" has been taught to fold case in non-ascii locales
correctly.

* A test that unconditionally used "mktemp" learned that the command
is not necessarily available everywhere.

* "git blame file" allowed the lineage of lines in the uncommitted,
unadded contents of "file" to be inspected, but it refused when
"file" did not appear in the current commit. When "file" was
created by renaming an existing file (but the change has not been
committed), this restriction was unnecessarily tight.

* "git add -N dir/file && git write-tree" produced an incorrect tree
when there are other paths in the same directory that sorts after
"file".

* "git fetch http://user:pass [at] hos/repo..." scrubbed the userinfo
part, but "git push" didn't.

* An age old bug that caused "git diff --ignore-space-at-eol"
misbehave has been fixed.

* "git notes merge" had a code to see if a path exists (and fails if
it does) and then open the path for writing (when it doesn't).
Replace it with open with O_EXCL.

* "git pack-objects" and "git index-pack" mostly operate with off_t
when talking about the offset of objects in a packfile, but there
were a handful of places that used "unsigned long" to hold that
value, leading to an unintended truncation.

* Recent update to "git daemon" tries to enable the socket-level
KEEPALIVE, but when it is spawned via inetd, the standard input
file descriptor may not necessarily be connected to a socket.
Suppress an ENOTSOCK error from setsockopt().

* Recent FreeBSD stopped making perl available at /usr/bin/perl;
switch the default the built-in path to /usr/local/bin/perl on not
too ancient FreeBSD releases.

* "git status" learned to suggest "merge --abort" during a conflicted
merge, just like it already suggests "rebase --abort" during a
conflicted rebase.

* The .c/.h sources are marked as such in our .gitattributes file so
that "git diff -W" and friends would work better.

* Existing autoconf generated test for the need to link with pthread
library did not check all the functions from pthread libraries;
recent FreeBSD has some functions in libc but not others, and we
mistakenly thought linking with libc is enough when it is not.

* Allow http daemon tests in Travis CI tests.

* Users of the parse_options_concat() API function need to allocate
extra slots in advance and fill them with OPT_END() when they want
to decide the set of supported options dynamically, which makes the
code error-prone and hard to read. This has been corrected by tweaking
the API to allocate and return a new copy of "struct option" array.

* The use of strbuf in "git rm" to build filename to remove was a bit
suboptimal, which has been fixed.

* "git commit --help" said "--no-verify" is only about skipping the
pre-commit hook, and failed to say that it also skipped the
commit-msg hook.

* "git merge" in Git v2.9 was taught to forbid merging an unrelated
lines of history by default, but that is exactly the kind of thing
the "--rejoin" mode of "git subtree" (in contrib/) wants to do.
"git subtree" has been taught to use the "--allow-unrelated-histories"
option to override the default.

* The build procedure for "git persistent-https" helper (in contrib/)
has been updated so that it can be built with more recent versions
of Go.

* There is an optimization used in "git diff $treeA $treeB" to borrow
an already checked-out copy in the working tree when it is known to
be the same as the blob being compared, expecting that open/mmap of
such a file is faster than reading it from the object store, which
involves inflating and applying delta. This however kicked in even
when the checked-out copy needs to go through the convert-to-git
conversion (including the clean filter), which defeats the whole
point of the optimization. The optimization has been disabled when
the conversion is necessary.

* "git -c grep.patternType=extended log --basic-regexp" misbehaved
because the internal API to access the grep machinery was not
designed well.

* Windows port was failing some tests in t4130, due to the lack of
inum in the returned values by its lstat(2) emulation.

* The characters in the label shown for tags/refs for commits in
"gitweb" output are now properly escaped for proper HTML output.

* FreeBSD can lie when asked mtime of a directory, which made the
untracked cache code to fall back to a slow-path, which in turn
caused tests in t7063 to fail because it wanted to verify the
behaviour of the fast-path.

* Squelch compiler warnings for netmalloc (in compat/) library.

* The API documentation for hashmap was unclear if hashmap_entry
can be safely discarded without any other consideration. State
that it is safe to do so.

* Not-so-recent rewrite of "git am" that started making internal
calls into the commit machinery had an unintended regression, in
that no matter how many seconds it took to apply many patches, the
resulting committer timestamp for the resulting commits were all
the same.

* "git difftool <paths>..." started in a subdirectory failed to
interpret the paths relative to that directory, which has been
fixed.

Also contains minor documentation updates and code clean-ups.

Revision 1.52 / (download) - annotate - [select for diffs], Thu Jul 21 13:12:25 2016 UTC (7 years, 2 months ago) by wiz
Branch: MAIN
Changes since 1.51: +5 -5 lines
Diff to previous 1.51 (colored)

Update git to 2.9.2.

Fixes since v2.9.1
------------------

 * A fix merged to v2.9.1 had a few tests that are not meant to be
   run on platforms without 64-bit long, which caused unnecessary
   test failures on them because we didn't detect the platform and
   skip them.  These tests are now skipped on platforms that they
   are not applicable to.

Fixes since v2.9
----------------

 * When "git daemon" is run without --[init-]timeout specified, a
   connection from a client that silently goes offline can hang around
   for a long time, wasting resources.  The socket-level KEEPALIVE has
   been enabled to allow the OS to notice such failed connections.

 * The commands in `git log` family take %C(auto) in a custom format
   string.  This unconditionally turned the color on, ignoring
   --no-color or with --color=auto when the output is not connected to
   a tty; this was corrected to make the format truly behave as
   "auto".

 * "git rev-list --count" whose walk-length is limited with "-n"
   option did not work well with the counting optimized to look at the
   bitmap index.

 * "git show -W" (extend hunks to cover the entire function, delimited
   by lines that match the "funcname" pattern) used to show the entire
   file when a change added an entire function at the end of the file,
   which has been fixed.

 * The documentation set has been updated so that literal commands,
   configuration variables and environment variables are consistently
   typeset in fixed-width font and bold in manpages.

 * "git svn propset" subcommand that was added in 2.3 days is
   documented now.

 * The documentation tries to consistently spell "GPG"; when
   referring to the specific program name, "gpg" is used.

 * "git reflog" stopped upon seeing an entry that denotes a branch
   creation event (aka "unborn"), which made it appear as if the
   reflog was truncated.

 * The git-prompt scriptlet (in contrib/) was not friendly with those
   who uses "set -u", which has been fixed.

 * A codepath that used alloca(3) to place an unbounded amount of data
   on the stack has been updated to avoid doing so.

 * "git update-index --add --chmod=+x file" may be usable as an escape
   hatch, but not a friendly thing to force for people who do need to
   use it regularly.  "git add --chmod=+x file" can be used instead.

 * Build improvements for gnome-keyring (in contrib/)

 * "git status" used to say "working directory" when it meant "working
   tree".

 * Comments about misbehaving FreeBSD shells have been clarified with
   the version number (9.x and before are broken, newer ones are OK).

 * "git cherry-pick A" worked on an unborn branch, but "git
   cherry-pick A..B" didn't.

 * "git add -i/-p" learned to honor diff.compactionHeuristic
   experimental knob, so that the user can work on the same hunk split
   as "git diff" output.

 * "log --graph --format=" learned that "%>|(N)" specifies the width
   relative to the terminal's left edge, not relative to the area to
   draw text that is to the right of the ancestry-graph section.  It
   also now accepts negative N that means the column limit is relative
   to the right border.

 * The ownership rule for the piece of memory that hold references to
   be fetched in "git fetch" was screwy, which has been cleaned up.

 * "git bisect" makes an internal call to "git diff-tree" when
   bisection finds the culprit, but this call did not initialize the
   data structure to pass to the diff-tree API correctly.

 * Formats of the various data (and how to validate them) where we use
   GPG signature have been documented.

 * Fix an unintended regression in v2.9 that breaks "clone --depth"
   that recurses down to submodules by forcing the submodules to also
   be cloned shallowly, which many server instances that host upstream
   of the submodules are not prepared for.

 * Fix unnecessarily waste in the idiomatic use of ': ${VAR=default}'
   to set the default value, without enclosing it in double quotes.

 * Some platform-specific code had non-ANSI strict declarations of C
   functions that do not take any parameters, which has been
   corrected.

 * The internal code used to show local timezone offset is not
   prepared to handle timestamps beyond year 2100, and gave a
   bogus offset value to the caller.  Use a more benign looking
   +0000 instead and let "git log" going in such a case, instead
   of aborting.

 * One among four invocations of readlink(1) in our test suite has
   been rewritten so that the test can run on systems without the
   command (others are in valgrind test framework and t9802).

 * t/perf needs /usr/bin/time with GNU extension; the invocation of it
   is updated to "gtime" on Darwin.

 * A bug, which caused "git p4" while running under verbose mode to
   report paths that are omitted due to branch prefix incorrectly, has
   been fixed; the command said "Ignoring file outside of prefix" for
   paths that are _inside_.

 * The top level documentation "git help git" still pointed at the
   documentation set hosted at now-defunct google-code repository.
   Update it to point to https://git.github.io/htmldocs/git.html
   instead.

Also contains minor documentation updates and code clean-ups.

Revision 1.51 / (download) - annotate - [select for diffs], Tue Jun 14 16:50:04 2016 UTC (7 years, 3 months ago) by adam
Branch: MAIN
CVS Tags: pkgsrc-2016Q2-base, pkgsrc-2016Q2
Changes since 1.50: +6 -6 lines
Diff to previous 1.50 (colored)

Git 2.9 Release Notes
=====================

Backward compatibility notes

Revision 1.50 / (download) - annotate - [select for diffs], Sun Jun 12 13:27:03 2016 UTC (7 years, 3 months ago) by wiz
Branch: MAIN
Changes since 1.49: +5 -5 lines
Diff to previous 1.49 (colored)

Update git to 2.8.4:

Git v2.8.4 Release Notes
========================

Fixes since v2.8.3
------------------

 * Documentation for "git merge --verify-signatures" has been updated
   to clarify that the signature of only the commit at the tip is
   verified.  Also the phrasing used for signature and key validity is
   adjusted to align with that used by OpenPGP.

 * On Windows, .git and optionally any files whose name starts with a
   dot are now marked as hidden, with a core.hideDotFiles knob to
   customize this behaviour.

 * Portability enhancement for "rebase -i" to help platforms whose
   shell does not like "for i in <empty>" (which is not POSIX-kosher).

 * "git fsck" learned to catch NUL byte in a commit object as
   potential error and warn.

 * CI test was taught to build documentation pages.

 * Many 'linkgit:<git documentation page>' references were broken,
   which are all fixed with this.

 * "git describe --contains" often made a hard-to-justify choice of
   tag to give name to a given commit, because it tried to come up
   with a name with smallest number of hops from a tag, causing an old
   commit whose close descendant that is recently tagged were not
   described with respect to an old tag but with a newer tag.  It did
   not help that its computation of "hop" count was further tweaked to
   penalize being on a side branch of a merge.  The logic has been
   updated to favor using the tag with the oldest tagger date, which
   is a lot easier to explain to the end users: "We describe a commit
   in terms of the (chronologically) oldest tag that contains the
   commit."

 * Running tests with '-x' option to trace the individual command
   executions is a useful way to debug test scripts, but some tests
   that capture the standard error stream and check what the command
   said can be broken with the trace output mixed in.  When running
   our tests under "bash", however, we can redirect the trace output
   to another file descriptor to keep the standard error of programs
   being tested intact.

 * "http.cookieFile" configuration variable clearly wants a pathname,
   but we forgot to treat it as such by e.g. applying tilde expansion.

 * When de-initialising all submodules, "git submodule deinit" gave a
   faulty recommendation to use "git submodule deinit .", which would
   result in a strange error message in a pathological corner case.
   This has been corrected to suggest "submodule deinit --all" instead.

 * Many commands normalize command line arguments from NFD to NFC
   variant of UTF-8 on OSX, but commands in the "diff" family did
   not, causing "git diff $path" to complain that no such path is
   known to Git.  They have been taught to do the normalization.

 * A couple of bugs around core.autocrlf have been fixed.

 * "git difftool" learned to handle unmerged paths correctly in
   dir-diff mode.

 * The "are we talking with TTY, doing an interactive session?"
   detection has been updated to work better for "Git for Windows".


Also contains other minor documentation updates and code clean-ups.

Revision 1.49 / (download) - annotate - [select for diffs], Sun May 22 18:00:37 2016 UTC (7 years, 4 months ago) by wiz
Branch: MAIN
Changes since 1.48: +5 -5 lines
Diff to previous 1.48 (colored)

Update git to 2.8.3.

Git v2.8.3 Release Notes
========================

Fixes since v2.8.2
------------------

 * "git send-email" now uses a more readable timestamps when
   formulating a message ID.

 * The repository set-up sequence has been streamlined (the biggest
   change is that there is no longer git_config_early()), so that we
   do not attempt to look into refs/* when we know we do not have a
   Git repository.

 * When "git worktree" feature is in use, "git branch -d" allowed
   deletion of a branch that is checked out in another worktree

 * When "git worktree" feature is in use, "git branch -m" renamed a
   branch that is checked out in another worktree without adjusting
   the HEAD symbolic ref for the worktree.

 * "git format-patch --help" showed `-s` and `--no-patch` as if these
   are valid options to the command.  We already hide `--patch` option
   from the documentation, because format-patch is about showing the
   diff, and the documentation now hides these options as well.

 * A change back in version 2.7 to "git branch" broke display of a
   symbolic ref in a non-standard place in the refs/ hierarchy (we
   expect symbolic refs to appear in refs/remotes/*/HEAD to point at
   the primary branch the remote has, and as .git/HEAD to point at the
   branch we locally checked out).

 * A partial rewrite of "git submodule" in the 2.7 timeframe changed
   the way the gitdir: pointer in the submodules point at the real
   repository location to use absolute paths by accident.  This has
   been corrected.

 * "git commit" misbehaved in a few minor ways when an empty message
   is given via -m '', all of which has been corrected.

 * Support for CRAM-MD5 authentication method in "git imap-send" did
   not work well.

 * The socks5:// proxy support added back in 2.6.4 days was not aware
   that socks5h:// proxies behave differently.

 * "git config" had a codepath that tried to pass a NULL to
   printf("%s"), which nobody seems to have noticed.

 * On Cygwin, object creation uses the "create a temporary and then
   rename it to the final name" pattern, not "create a temporary,
   hardlink it to the final name and then unlink the temporary"
   pattern.

   This is necessary to use Git on Windows shared directories, and is
   already enabled for the MinGW and plain Windows builds.  It also
   has been used in Cygwin packaged versions of Git for quite a while.
   See http://thread.gmane.org/gmane.comp.version-control.git/291853
   and http://thread.gmane.org/gmane.comp.version-control.git/275680.

 * "git replace -e" did not honour "core.editor" configuration.

 * Upcoming OpenSSL 1.1.0 will break compilation b updating a few APIs
   we use in imap-send, which has been adjusted for the change.

 * "git submodule" reports the paths of submodules the command
   recurses into, but this was incorrect when the command was not run
   from the root level of the superproject.

 * The test scripts for "git p4" (but not "git p4" implementation
   itself) has been updated so that they would work even on a system
   where the installed version of Python is python 3.

 * The "user.useConfigOnly" configuration variable makes it an error
   if users do not explicitly set user.name and user.email.  However,
   its check was not done early enough and allowed another error to
   trigger, reporting that the default value we guessed from the
   system setting was unusable.  This was a suboptimal end-user
   experience as we want the users to set user.name/user.email without
   relying on the auto-detection at all.

 * "git mv old new" did not adjust the path for a submodule that lives
   as a subdirectory inside old/ directory correctly.

 * "git push" from a corrupt repository that attempts to push a large
   number of refs deadlocked; the thread to relay rejection notices
   for these ref updates blocked on writing them to the main thread,
   after the main thread at the receiving end notices that the push
   failed and decides not to read these notices and return a failure.

 * A question by "git send-email" to ask the identity of the sender
   has been updated.

 * Recent update to Git LFS broke "git p4" by changing the output from
   its "lfs pointer" subcommand.

 * Some multi-byte encoding can have a backslash byte as a later part
   of one letter, which would confuse "highlight" filter used in
   gitweb.

Also contains minor documentation updates and code clean-ups.

Revision 1.48 / (download) - annotate - [select for diffs], Mon May 9 09:08:33 2016 UTC (7 years, 4 months ago) by adam
Branch: MAIN
Changes since 1.47: +5 -5 lines
Diff to previous 1.47 (colored)

Version 2.8.2

Fixes since v2.8.1
------------------
* The embedded args argv-array in the child process is used to build
  the command line to run pack-objects instead of using a separate
  array of strings.

* Bunch of tests on "git clone" has been renumbered for better
  organization.

* The tests that involve running httpd leaked the system-wide
  configuration in /etc/gitconfig to the tested environment.

* "index-pack --keep=<msg>" was broken since v2.1.0 timeframe.

* "git config --get-urlmatch", unlike other variants of the "git
  config --get" family, did not signal error with its exit status
  when there was no matching configuration.

* The "--local-env-vars" and "--resolve-git-dir" options of "git
  rev-parse" failed to work outside a repository when the command's
  option parsing was rewritten in 1.8.5 era.

* Fetching of history by naming a commit object name directly didn't
  work across remote-curl transport.

* A small memory leak in an error codepath has been plugged in xdiff
  code.

* strbuf_getwholeline() did not NUL-terminate the buffer on certain
  corner cases in its error codepath.

* The startup_info data, which records if we are working inside a
  repository (among other things), are now uniformly available to Git
  subcommand implementations, and Git avoids attempting to touch
  references when we are not in a repository.

* "git mergetool" did not work well with conflicts that both sides
  deleted.

* "git send-email" had trouble parsing alias file in mailrc format
  when lines in it had trailing whitespaces on them.

* When "git merge --squash" stopped due to conflict, the concluding
  "git commit" failed to read in the SQUASH_MSG that shows the log
  messages from all the squashed commits.

* "git merge FETCH_HEAD" dereferenced NULL pointer when merging
  nothing into an unborn history (which is arguably unusual usage,
  which perhaps was the reason why nobody noticed it).

* Build updates for MSVC.

* "git diff -M" used to work better when two originally identical
  files A and B got renamed to X/A and X/B by pairing A to X/A and B
  to X/B, but this was broken in the 2.0 timeframe.

* "git send-pack --all <there>" was broken when its command line
  option parsing was written in the 2.6 timeframe.

* When running "git blame $path" with unnormalized data in the index
  for the path, the data in the working tree was blamed, even though
  "git add" would not have changed what is already in the index, due
  to "safe crlf" that disables the line-end conversion.  It has been
  corrected.

Revision 1.47 / (download) - annotate - [select for diffs], Thu Apr 7 13:26:37 2016 UTC (7 years, 5 months ago) by adam
Branch: MAIN
Changes since 1.46: +6 -16 lines
Diff to previous 1.46 (colored)

Changes 2.8.1:
* "make rpmbuild" target was broken as its input, git.spec.in, was
   not updated to match a file it describes that has been renamed
   recently.  This has been fixed.

Revision 1.41.2.1 / (download) - annotate - [select for diffs], Tue Mar 22 18:55:23 2016 UTC (7 years, 6 months ago) by bsiegert
Branch: pkgsrc-2015Q4
Changes since 1.41: +15 -5 lines
Diff to previous 1.41 (colored) next main 1.42 (colored)

Pullup ticket #4953 - requested by sevan
devel/git-base: security fix

Revisions pulled up:
- devel/git-base/Makefile                                       1.22-1.23
- devel/git-base/PLIST                                          1.11-1.12
- devel/git-base/distinfo                                       1.42-1.46
- devel/git-base/patches/patch-builtin_pack-objects.c           1.1
- devel/git-base/patches/patch-builtin_rev-list.c               1.1
- devel/git-base/patches/patch-http-push.c                      1.1
- devel/git-base/patches/patch-list-objects.c                   1.1
- devel/git-base/patches/patch-list-objects.h                   1.1
- devel/git-base/patches/patch-pack-bitmap-write.c              1.1
- devel/git-base/patches/patch-pack-bitmap.c                    1.1
- devel/git-base/patches/patch-reachable.c                      1.1
- devel/git-base/patches/patch-revision.c                       1.1
- devel/git-base/patches/patch-revision.h                       1.1
- devel/git/Makefile.version                                    1.36-1.39

---
   Module Name:    pkgsrc
   Committed By:   adam
   Date:           Fri Jan  8 17:37:20 UTC 2016

   Modified Files:
           pkgsrc/devel/git: Makefile.version
           pkgsrc/devel/git-base: PLIST distinfo

   Log Message:
   Changes 2.7.0:
   UI, Workflows & Features

   * The appearance of "gitk", particularly on high DPI monitors, have
     been improved.  "gitk" also comes with an undated translation for
     Swedish and Japanese.

   * "git remote" learned "get-url" subcommand to show the URL for a
     given remote name used for fetching and pushing.

   * There was no way to defeat a configured rebase.autostash variable
     from the command line, as "git rebase --no-autostash" was missing.

   * "git log --date=local" used to only show the normal (default)
     format in the local timezone.  The command learned to take 'local'
     as an instruction to use the local timezone with other formats,

   * The refs used during a "git bisect" session is now per-worktree so
     that independent bisect sessions can be done in different worktrees
     created with "git worktree add".

   * Users who are too busy to type three extra keystrokes to ask for
     "git stash show -p" can now set stash.showPatch configuration
     variable to true to always see the actual patch, not just the list
     of paths affected with feel for the extent of damage via diffstat.

   * "quiltimport" allows to specify the series file by honoring the
     $QUILT_SERIES environment and also --series command line option.

   * The use of 'good/bad' in "git bisect" made it confusing to use when
     hunting for a state change that is not a regression (e.g. bugfix).
     The command learned 'old/new' and then allows the end user to
     say e.g. "bisect start --term-old=fast --term-new=slow" to find a
     performance regression.

   * "git interpret-trailers" can now run outside of a Git repository.

   * "git p4" learned to reencode the pathname it uses to communicate
     with the p4 depot with a new option.

   * Give progress meter to "git filter-branch".

   * Allow a later "!/abc/def" to override an earlier "/abc" that
     appears in the same .gitignore file to make it easier to express
     "everything in /abc directory is ignored, except for ...".

   * Teach "git p4" to send large blobs outside the repository by
     talking to Git LFS.

   * Prepare for Git on-disk repository representation to undergo
     backward incompatible changes by introducing a new repository
     format version "1", with an extension mechanism.

   * "git worktree" learned a "list" subcommand.

   * "git clone --dissociate" learned that it can be used even when
     "--reference" was not used at the same time.

   * "git blame" learnt to take "--first-parent" and "--reverse" at the
     same time when it makes sense.

   * "git checkout" did not follow the usual "--[no-]progress"
     convention and implemented only "--quiet" that is essentially
     a superset of "--no-progress".  Extend the command to support the
     usual "--[no-]progress".

   * The semantics of transfer.hideRefs configuration variable have been
     extended to work better with the ref "namespace" feature that lets
     you throw unrelated bunches of repositories in a single physical
     repository and virtually serve them as separate ones.

   * send-email config variables whose values are pathnames now go
     through the ~username/ expansion.

   * bash completion learnt to TAB-complete recipient addresses given
     to send-email.

   * The credential-cache daemon can be told to ignore SIGHUP to work
     around issue when running Git from inside emacs.

   * "git push" learned new configuration for doing "--recurse-submodules"
     on each push.

   * "format-patch" has learned a new option to zero-out the commit
     object name on the mbox "From " line.

---
   Module Name:    pkgsrc
   Committed By:   adam
   Date:           Sun Feb  7 10:27:23 UTC 2016

   Modified Files:
           pkgsrc/devel/git: Makefile.version
           pkgsrc/devel/git-base: PLIST distinfo

   Log Message:
   Git v2.7.1 Release Notes
   ========================

   Fixes since v2.7
   ----------------

    * An earlier change in 2.5.x-era broke users' hooks and aliases by
      exporting GIT_WORK_TREE to point at the root of the working tree,
      interfering when they tried to use a different working tree without
      setting GIT_WORK_TREE environment themselves.

    * The "exclude_list" structure has the usual "alloc, nr" pair of
      fields to be used by ALLOC_GROW(), but clear_exclude_list() forgot
      to reset 'alloc' to 0 when it cleared 'nr' to discard the managed
      array.

    * "git send-email" was confused by escaped quotes stored in the alias
      files saved by "mutt", which has been corrected.

    * A few unportable C construct have been spotted by clang compiler
      and have been fixed.

    * The documentation has been updated to hint the connection between
      the '--signoff' option and DCO.

    * "git reflog" incorrectly assumed that all objects that used to be
      at the tip of a ref must be commits, which caused it to segfault.

    * The ignore mechanism saw a few regressions around untracked file
      listing and sparse checkout selection areas in 2.7.0; the change
      that is responsible for the regression has been reverted.

    * Some codepaths used fopen(3) when opening a fixed path in $GIT_DIR
      (e.g. COMMIT_EDITMSG) that is meant to be left after the command is
      done.  This however did not work well if the repository is set to
      be shared with core.sharedRepository and the umask of the previous
      user is tighter.  They have been made to work better by calling
      unlink(2) and retrying after fopen(3) fails with EPERM.

    * Asking gitweb for a nonexistent commit left a warning in the server
      log.

    * "git rebase", unlike all other callers of "gc --auto", did not
      ignore the exit code from "gc --auto".

    * Many codepaths that run "gc --auto" before exiting kept packfiles
      mapped and left the file descriptors to them open, which was not
      friendly to systems that cannot remove files that are open.  They
      now close the packs before doing so.

    * A recent optimization to filter-branch in v2.7.0 introduced a
      regression when --prune-empty filter is used, which has been
      corrected.

    * The description for SANITY prerequisite the test suite uses has
      been clarified both in the comment and in the implementation.

    * "git tag" started listing a tag "foo" as "tags/foo" when a branch
      named "foo" exists in the same repository; remove this unnecessary
      disambiguation, which is a regression introduced in v2.7.0.

    * The way "git svn" uses auth parameter was broken by Subversion
      1.9.0 and later.

    * The "split" subcommand of "git subtree" (in contrib/) incorrectly
      skipped merges when it shouldn't, which was corrected.

    * A few options of "git diff" did not work well when the command was
      run from a subdirectory.

    * dirname() emulation has been added, as Msys2 lacks it.

    * The underlying machinery used by "ls-files -o" and other commands
      have been taught not to create empty submodule ref cache for a
      directory that is not a submodule.  This removes a ton of wasted
      CPU cycles.

    * Drop a few old "todo" items by deciding that the change one of them
      suggests is not such a good idea, and doing the change the other
      one suggested to do.

    * Documentation for "git fetch --depth" has been updated for clarity.

    * The command line completion learned a handful of additional options
      and command specific syntax.

   Also includes a handful of documentation and test updates.

---
   Module Name:    pkgsrc
   Committed By:   adam
   Date:           Mon Feb 29 10:50:55 UTC 2016

   Modified Files:
           pkgsrc/devel/git: Makefile.version
           pkgsrc/devel/git-base: distinfo

   Log Message:
   Changes 2.7.2:
   * The low-level merge machinery has been taught to use CRLF line
     termination when inserting conflict markers to merged contents that
     are themselves CRLF line-terminated.
   * "git worktree" had a broken code that attempted to auto-fix
     possible inconsistency that results from end-users moving a
     worktree to different places without telling Git (the original
     repository needs to maintain backpointers to its worktrees, but
     "mv" run by end-users who are not familiar with that fact will
     obviously not adjust them), which actually made things worse
     when triggered.
   * "git push --force-with-lease" has been taught to report if the push
     needed to force (or fast-forwarded).
   * The emulated "yes" command used in our test scripts has been
     tweaked not to spend too much time generating unnecessary output
     that is not used, to help those who test on Windows where it would
     not stop until it fills the pipe buffer due to lack of SIGPIPE.
   * The vimdiff backend for "git mergetool" has been tweaked to arrange
     and number buffers in the order that would match the expectation of
     majority of people who read left to right, then top down and assign
     buffers 1 2 3 4 "mentally" to local base remote merge windows based
     on that order.
   * The documentation for "git clean" has been corrected; it mentioned
     that .git/modules/* are removed by giving two "-f", which has never
     been the case.
   * Paths that have been told the index about with "add -N" are not
     quite yet in the index, but a few commands behaved as if they
     already are in a harmful way.

---
   Module Name:    pkgsrc
   Committed By:   adam
   Date:           Sat Mar 12 11:33:32 UTC 2016

   Modified Files:
           pkgsrc/devel/git: Makefile.version
           pkgsrc/devel/git-base: Makefile distinfo

   Log Message:
   Changes 2.7.3:

   * Traditionally, the tests that try commands that work on the
     contents in the working tree were named with "worktree" in their
     filenames, but with the recent addition of "git worktree"
     subcommand, whose tests are also named similarly, it has become
     harder to tell them apart.  The traditional tests have been renamed
     to use "work-tree" instead in an attempt to differentiate them.

   * Many codepaths forget to check return value from git_config_set();
     the function is made to die() to make sure we do not proceed when
     setting a configuration variable failed.

   * Handling of errors while writing into our internal asynchronous
     process has been made more robust, which reduces flakiness in our
     tests.

   * "git show 'HEAD:Foo[BAR]Baz'" did not interpret the argument as a
     rev, i.e. the object named by the the pathname with wildcard
     characters in a tree object.

   * "git rev-parse --git-common-dir" used in the worktree feature
     misbehaved when run from a subdirectory.

   * The "v(iew)" subcommand of the interactive "git am -i" command was
     broken in 2.6.0 timeframe when the command was rewritten in C.

   * "git merge-tree" used to mishandle "both sides added" conflict with
     its own "create a fake ancestor file that has the common parts of
     what both sides have added and do a 3-way merge" logic; this has
     been updated to use the usual "3-way merge with an empty blob as
     the fake common ancestor file" approach used in the rest of the
     system.

   * The memory ownership rule of fill_textconv() API, which was a bit
     tricky, has been documented a bit better.

   * The documentation did not clearly state that the 'simple' mode is
     now the default for "git push" when push.default configuration is
     not set.

   * Recent versions of GNU grep are pickier when their input contains
     arbitrary binary data, which some of our tests uses.  Rewrite the
     tests to sidestep the problem.

   * A helper function "git submodule" uses since v2.7.0 to list the
     modules that match the pathspec argument given to its subcommands
     (e.g. "submodule add <repo> <path>") has been fixed.

   * "git config section.var value" to set a value in per-repository
     configuration file failed when it was run outside any repository,
     but didn't say the reason correctly.

   * The code to read the pack data using the offsets stored in the pack
     idx file has been made more carefully check the validity of the
     data in the idx.

---
   Module Name:    pkgsrc
   Committed By:   sevan
   Date:           Wed Mar 16 19:38:52 UTC 2016

   Modified Files:
           pkgsrc/devel/git-base: Makefile distinfo
   Added Files:
           pkgsrc/devel/git-base/patches: patch-builtin_pack-objects.c
               patch-builtin_rev-list.c patch-http-push.c patch-list-objects.c
               patch-list-objects.h patch-pack-bitmap-write.c patch-pack-bitmap.c
               patch-reachable.c patch-revision.c patch-revision.h

   Log Message:
   Patch for CVE-2016-2324
    Obtained via Debian Security Tracker
    https://security-tracker.debian.org/tracker/CVE-2016-2324
    https://github.com/git/git/commit/9831e92bfa833ee9c0ce464bbc2f941ae6c2698d
   Bump pkgrev

Revision 1.46 / (download) - annotate - [select for diffs], Wed Mar 16 19:38:52 2016 UTC (7 years, 6 months ago) by sevan
Branch: MAIN
CVS Tags: pkgsrc-2016Q1-base, pkgsrc-2016Q1
Changes since 1.45: +11 -1 lines
Diff to previous 1.45 (colored)

Patch for CVE-2016-2324
 Obtained via Debian Security Tracker
 https://security-tracker.debian.org/tracker/CVE-2016-2324
 https://github.com/git/git/commit/9831e92bfa833ee9c0ce464bbc2f941ae6c2698d
Bump pkgrev

Revision 1.45 / (download) - annotate - [select for diffs], Sat Mar 12 11:33:32 2016 UTC (7 years, 6 months ago) by adam
Branch: MAIN
Changes since 1.44: +5 -5 lines
Diff to previous 1.44 (colored)

Changes 2.7.3:

* Traditionally, the tests that try commands that work on the
  contents in the working tree were named with "worktree" in their
  filenames, but with the recent addition of "git worktree"
  subcommand, whose tests are also named similarly, it has become
  harder to tell them apart.  The traditional tests have been renamed
  to use "work-tree" instead in an attempt to differentiate them.

* Many codepaths forget to check return value from git_config_set();
  the function is made to die() to make sure we do not proceed when
  setting a configuration variable failed.

* Handling of errors while writing into our internal asynchronous
  process has been made more robust, which reduces flakiness in our
  tests.

* "git show 'HEAD:Foo[BAR]Baz'" did not interpret the argument as a
  rev, i.e. the object named by the the pathname with wildcard
  characters in a tree object.

* "git rev-parse --git-common-dir" used in the worktree feature
  misbehaved when run from a subdirectory.

* The "v(iew)" subcommand of the interactive "git am -i" command was
  broken in 2.6.0 timeframe when the command was rewritten in C.

* "git merge-tree" used to mishandle "both sides added" conflict with
  its own "create a fake ancestor file that has the common parts of
  what both sides have added and do a 3-way merge" logic; this has
  been updated to use the usual "3-way merge with an empty blob as
  the fake common ancestor file" approach used in the rest of the
  system.

* The memory ownership rule of fill_textconv() API, which was a bit
  tricky, has been documented a bit better.

* The documentation did not clearly state that the 'simple' mode is
  now the default for "git push" when push.default configuration is
  not set.

* Recent versions of GNU grep are pickier when their input contains
  arbitrary binary data, which some of our tests uses.  Rewrite the
  tests to sidestep the problem.

* A helper function "git submodule" uses since v2.7.0 to list the
  modules that match the pathspec argument given to its subcommands
  (e.g. "submodule add <repo> <path>") has been fixed.

* "git config section.var value" to set a value in per-repository
  configuration file failed when it was run outside any repository,
  but didn't say the reason correctly.

* The code to read the pack data using the offsets stored in the pack
  idx file has been made more carefully check the validity of the
  data in the idx.

Revision 1.44 / (download) - annotate - [select for diffs], Mon Feb 29 10:50:55 2016 UTC (7 years, 7 months ago) by adam
Branch: MAIN
Changes since 1.43: +5 -5 lines
Diff to previous 1.43 (colored)

Changes 2.7.2:
* The low-level merge machinery has been taught to use CRLF line
  termination when inserting conflict markers to merged contents that
  are themselves CRLF line-terminated.
* "git worktree" had a broken code that attempted to auto-fix
  possible inconsistency that results from end-users moving a
  worktree to different places without telling Git (the original
  repository needs to maintain backpointers to its worktrees, but
  "mv" run by end-users who are not familiar with that fact will
  obviously not adjust them), which actually made things worse
  when triggered.
* "git push --force-with-lease" has been taught to report if the push
  needed to force (or fast-forwarded).
* The emulated "yes" command used in our test scripts has been
  tweaked not to spend too much time generating unnecessary output
  that is not used, to help those who test on Windows where it would
  not stop until it fills the pipe buffer due to lack of SIGPIPE.
* The vimdiff backend for "git mergetool" has been tweaked to arrange
  and number buffers in the order that would match the expectation of
  majority of people who read left to right, then top down and assign
  buffers 1 2 3 4 "mentally" to local base remote merge windows based
  on that order.
* The documentation for "git clean" has been corrected; it mentioned
  that .git/modules/* are removed by giving two "-f", which has never
  been the case.
* Paths that have been told the index about with "add -N" are not
  quite yet in the index, but a few commands behaved as if they
  already are in a harmful way.

Revision 1.43 / (download) - annotate - [select for diffs], Sun Feb 7 10:27:23 2016 UTC (7 years, 7 months ago) by adam
Branch: MAIN
Changes since 1.42: +5 -5 lines
Diff to previous 1.42 (colored)

Git v2.7.1 Release Notes
========================

Fixes since v2.7
----------------

 * An earlier change in 2.5.x-era broke users' hooks and aliases by
   exporting GIT_WORK_TREE to point at the root of the working tree,
   interfering when they tried to use a different working tree without
   setting GIT_WORK_TREE environment themselves.

 * The "exclude_list" structure has the usual "alloc, nr" pair of
   fields to be used by ALLOC_GROW(), but clear_exclude_list() forgot
   to reset 'alloc' to 0 when it cleared 'nr' to discard the managed
   array.

 * "git send-email" was confused by escaped quotes stored in the alias
   files saved by "mutt", which has been corrected.

 * A few unportable C construct have been spotted by clang compiler
   and have been fixed.

 * The documentation has been updated to hint the connection between
   the '--signoff' option and DCO.

 * "git reflog" incorrectly assumed that all objects that used to be
   at the tip of a ref must be commits, which caused it to segfault.

 * The ignore mechanism saw a few regressions around untracked file
   listing and sparse checkout selection areas in 2.7.0; the change
   that is responsible for the regression has been reverted.

 * Some codepaths used fopen(3) when opening a fixed path in $GIT_DIR
   (e.g. COMMIT_EDITMSG) that is meant to be left after the command is
   done.  This however did not work well if the repository is set to
   be shared with core.sharedRepository and the umask of the previous
   user is tighter.  They have been made to work better by calling
   unlink(2) and retrying after fopen(3) fails with EPERM.

 * Asking gitweb for a nonexistent commit left a warning in the server
   log.

 * "git rebase", unlike all other callers of "gc --auto", did not
   ignore the exit code from "gc --auto".

 * Many codepaths that run "gc --auto" before exiting kept packfiles
   mapped and left the file descriptors to them open, which was not
   friendly to systems that cannot remove files that are open.  They
   now close the packs before doing so.

 * A recent optimization to filter-branch in v2.7.0 introduced a
   regression when --prune-empty filter is used, which has been
   corrected.

 * The description for SANITY prerequisite the test suite uses has
   been clarified both in the comment and in the implementation.

 * "git tag" started listing a tag "foo" as "tags/foo" when a branch
   named "foo" exists in the same repository; remove this unnecessary
   disambiguation, which is a regression introduced in v2.7.0.

 * The way "git svn" uses auth parameter was broken by Subversion
   1.9.0 and later.

 * The "split" subcommand of "git subtree" (in contrib/) incorrectly
   skipped merges when it shouldn't, which was corrected.

 * A few options of "git diff" did not work well when the command was
   run from a subdirectory.

 * dirname() emulation has been added, as Msys2 lacks it.

 * The underlying machinery used by "ls-files -o" and other commands
   have been taught not to create empty submodule ref cache for a
   directory that is not a submodule.  This removes a ton of wasted
   CPU cycles.

 * Drop a few old "todo" items by deciding that the change one of them
   suggests is not such a good idea, and doing the change the other
   one suggested to do.

 * Documentation for "git fetch --depth" has been updated for clarity.

 * The command line completion learned a handful of additional options
   and command specific syntax.

Also includes a handful of documentation and test updates.

Revision 1.42 / (download) - annotate - [select for diffs], Fri Jan 8 17:37:20 2016 UTC (7 years, 8 months ago) by adam
Branch: MAIN
Changes since 1.41: +5 -5 lines
Diff to previous 1.41 (colored)

Changes 2.7.0:
UI, Workflows & Features

* The appearance of "gitk", particularly on high DPI monitors, have
  been improved.  "gitk" also comes with an undated translation for
  Swedish and Japanese.

* "git remote" learned "get-url" subcommand to show the URL for a
  given remote name used for fetching and pushing.

* There was no way to defeat a configured rebase.autostash variable
  from the command line, as "git rebase --no-autostash" was missing.

* "git log --date=local" used to only show the normal (default)
  format in the local timezone.  The command learned to take 'local'
  as an instruction to use the local timezone with other formats,

* The refs used during a "git bisect" session is now per-worktree so
  that independent bisect sessions can be done in different worktrees
  created with "git worktree add".

* Users who are too busy to type three extra keystrokes to ask for
  "git stash show -p" can now set stash.showPatch configuration
  variable to true to always see the actual patch, not just the list
  of paths affected with feel for the extent of damage via diffstat.

* "quiltimport" allows to specify the series file by honoring the
  $QUILT_SERIES environment and also --series command line option.

* The use of 'good/bad' in "git bisect" made it confusing to use when
  hunting for a state change that is not a regression (e.g. bugfix).
  The command learned 'old/new' and then allows the end user to
  say e.g. "bisect start --term-old=fast --term-new=slow" to find a
  performance regression.

* "git interpret-trailers" can now run outside of a Git repository.

* "git p4" learned to reencode the pathname it uses to communicate
  with the p4 depot with a new option.

* Give progress meter to "git filter-branch".

* Allow a later "!/abc/def" to override an earlier "/abc" that
  appears in the same .gitignore file to make it easier to express
  "everything in /abc directory is ignored, except for ...".

* Teach "git p4" to send large blobs outside the repository by
  talking to Git LFS.

* Prepare for Git on-disk repository representation to undergo
  backward incompatible changes by introducing a new repository
  format version "1", with an extension mechanism.

* "git worktree" learned a "list" subcommand.

* "git clone --dissociate" learned that it can be used even when
  "--reference" was not used at the same time.

* "git blame" learnt to take "--first-parent" and "--reverse" at the
  same time when it makes sense.

* "git checkout" did not follow the usual "--[no-]progress"
  convention and implemented only "--quiet" that is essentially
  a superset of "--no-progress".  Extend the command to support the
  usual "--[no-]progress".

* The semantics of transfer.hideRefs configuration variable have been
  extended to work better with the ref "namespace" feature that lets
  you throw unrelated bunches of repositories in a single physical
  repository and virtually serve them as separate ones.

* send-email config variables whose values are pathnames now go
  through the ~username/ expansion.

* bash completion learnt to TAB-complete recipient addresses given
  to send-email.

* The credential-cache daemon can be told to ignore SIGHUP to work
  around issue when running Git from inside emacs.

* "git push" learned new configuration for doing "--recurse-submodules"
  on each push.

* "format-patch" has learned a new option to zero-out the commit
  object name on the mbox "From " line.

Revision 1.41 / (download) - annotate - [select for diffs], Thu Dec 10 13:35:46 2015 UTC (7 years, 9 months ago) by adam
Branch: MAIN
CVS Tags: pkgsrc-2015Q4-base
Branch point for: pkgsrc-2015Q4
Changes since 1.40: +5 -5 lines
Diff to previous 1.40 (colored)

Fixes since v2.6.3
------------------

 * The "configure" script did not test for -lpthread correctly, which
   upset some linkers.

 * Add support for talking http/https over socks proxy.

 * Portability fix for Windows, which may rewrite $SHELL variable using
   non-POSIX paths.

 * We now consistently allow all hooks to ignore their standard input,
   rather than having git complain of SIGPIPE.

 * Fix shell quoting in contrib script.

 * Test portability fix for a topic in v2.6.1.

 * Allow tilde-expansion in some http config variables.

 * Give a useful special case "diff/show --word-diff-regex=." as an
   example in the documentation.

 * Fix for a corner case in filter-branch.

 * Make git-p4 work on a detached head.

 * Documentation clarification for "check-ignore" without "--verbose".

 * Just like the working tree is cleaned up when the user cancelled
   submission in P4Submit.applyCommit(), clean up the mess if "p4
   submit" fails.

 * Having a leftover .idx file without corresponding .pack file in
   the repository hurts performance; "git gc" learned to prune them.

 * The code to prepare the working tree side of temporary directory
   for the "dir-diff" feature forgot that symbolic links need not be
   copied (or symlinked) to the temporary area, as the code already
   special cases and overwrites them.  Besides, it was wrong to try
   computing the object name of the target of symbolic link, which may
   not even exist or may be a directory.

 * There was no way to defeat a configured rebase.autostash variable
   from the command line, as "git rebase --no-autostash" was missing.

 * Allow "git interpret-trailers" to run outside of a Git repository.

 * Produce correct "dirty" marker for shell prompts, even when we
   are on an orphan or an unborn branch.

 * Some corner cases have been fixed in string-matching done in "git
   status".

 * Apple's common crypto implementation of SHA1_Update() does not take
   more than 4GB at a time, and we now have a compile-time workaround
   for it.

Revision 1.40 / (download) - annotate - [select for diffs], Fri Nov 6 15:45:05 2015 UTC (7 years, 10 months ago) by adam
Branch: MAIN
Changes since 1.39: +5 -5 lines
Diff to previous 1.39 (colored)

Changes 2.6.3:
* The error message from "git blame --contents --reverse" incorrectly
  talked about "--contents --children".

* "git merge-file" tried to signal how many conflicts it found, which
  obviously would not work well when there are too many of them.

* The name-hash subsystem that is used to cope with case insensitive
  filesystems keeps track of directories and their on-filesystem
  cases for all the paths in the index by holding a pointer to a
  randomly chosen cache entry that is inside the directory (for its
  ce->ce_name component).  This pointer was not updated even when the
  cache entry was removed from the index, leading to use after free.
  This was fixed by recording the path for each directory instead of
  borrowing cache entries and restructuring the API somewhat.

* When the "git am" command was reimplemented in C, "git am -3" had a
  small regression where it is aborted in its error handling codepath
  when underlying merge-recursive failed in some ways.

* The synopsis text and the usage string of subcommands that read
  list of things from the standard input are often shown as if they
  only take input from a file on a filesystem, which was misleading.

* A couple of commands still showed "[options]" in their usage string
  to note where options should come on their command line, but we
  spell that "[<options>]" in most places these days.

* The submodule code has been taught to work better with separate
  work trees created via "git worktree add".

* When "git gc --auto" is backgrounded, its diagnosis message is
  lost.  It now is saved to a file in $GIT_DIR and is shown next time
  the "gc --auto" is run.

* Work around "git p4" failing when the P4 depot records the contents
  in UTF-16 without UTF-16 BOM.

* Recent update to "rebase -i" that tries to sanity check the edited
  insn sheet before it uses it has become too picky on Windows where
  CRLF left by the editor is turned into a trailing CR on the line
  read via the "read" built-in command.

* "git clone --dissociate" runs a big "git repack" process at the
  end, and it helps to close file descriptors that are open on the
  packs and their idx files before doing so on filesystems that
  cannot remove a file that is still open.

* Correct "git p4 --detect-labels" so that it does not fail to create
  a tag that points at a commit that is also being imported.

* The internal stripspace() function has been moved to where it
  logically belongs to, i.e. strbuf API, and the command line parser
  of "git stripspace" has been updated to use the parse_options API.

* Prepare for Git on-disk repository representation to undergo
  backward incompatible changes by introducing a new repository
  format version "1", with an extension mechanism.

* "git gc" used to barf when a symbolic ref has gone dangling
  (e.g. the branch that used to be your upstream's default when you
  cloned from it is now gone, and you did "fetch --prune").

* The normalize_ceiling_entry() function does not muck with the end
  of the path it accepts, and the real world callers do rely on that,
  but a test insisted that the function drops a trailing slash.

* "git gc" is safe to run anytime only because it has the built-in
  grace period to protect young objects.  In order to run with no
  grace period, the user must make sure that the repository is
  quiescent.

* A recent "filter-branch --msg-filter" broke skipping of the commit
  object header, which is fixed.

* "git --literal-pathspecs add -u/-A" without any command line
  argument misbehaved ever since Git 2.0.

* Merging a branch that removes a path and another that changes the
  mode bits on the same path should have conflicted at the path, but
  it didn't and silently favoured the removal.

* "git imap-send" did not compile well with older version of cURL library.

* The linkage order of libraries was wrong in places around libcurl.

* It was not possible to use a repository-lookalike created by "git
  worktree add" as a local source of "git clone".

* When "git send-email" wanted to talk over Net::SMTP::SSL,
  Net::Cmd::datasend() did not like to be fed too many bytes at the
  same time and failed to send messages.  Send the payload one line
  at a time to work around the problem.

* We peek objects from submodule's object store by linking it to the
  list of alternate object databases, but the code to do so forgot to
  correctly initialize the list.

* "git status --branch --short" accessed beyond the constant string
  "HEAD", which has been corrected.

* "git daemon" uses "run_command()" without "finish_command()", so it
  needs to release resources itself, which it forgot to do.

Also contains typofixes, documentation updates and trivial code
clean-ups.

Revision 1.39 / (download) - annotate - [select for diffs], Wed Nov 4 17:41:16 2015 UTC (7 years, 11 months ago) by agc
Branch: MAIN
Changes since 1.38: +1 -2 lines
Diff to previous 1.38 (colored)

Remove duplicate SHA512 digests that crept in.

Revision 1.38 / (download) - annotate - [select for diffs], Tue Nov 3 03:27:28 2015 UTC (7 years, 11 months ago) by agc
Branch: MAIN
Changes since 1.37: +2 -1 lines
Diff to previous 1.37 (colored)

Add SHA512 digests for distfiles for devel category

Issues found with existing distfiles:
	distfiles/eclipse-sourceBuild-srcIncluded-3.0.1.zip
	distfiles/fortran-utils-1.1.tar.gz
	distfiles/ivykis-0.39.tar.gz
	distfiles/enum-1.11.tar.gz
	distfiles/pvs-3.2-libraries.tgz
	distfiles/pvs-3.2-linux.tgz
	distfiles/pvs-3.2-solaris.tgz
	distfiles/pvs-3.2-system.tgz
No changes made to these distinfo files.

Otherwise, existing SHA1 digests verified and found to be the same on
the machine holding the existing distfiles (morden).  All existing
SHA1 digests retained for now as an audit trail.

Revision 1.37 / (download) - annotate - [select for diffs], Sat Oct 17 07:44:56 2015 UTC (7 years, 11 months ago) by adam
Branch: MAIN
Changes since 1.36: +6 -5 lines
Diff to previous 1.36 (colored)

Changes 2.6.2:
 * There were some classes of errors that "git fsck" diagnosed to its
   standard error that did not cause it to exit with non-zero status.

 * A test script for the HTTP service had a timing dependent bug,
   which was fixed.

 * Performance-measurement tests did not work without an installed Git.

 * On a case insensitive filesystems, setting GIT_WORK_TREE variable
   using a random cases that does not agree with what the filesystem
   thinks confused Git that it wasn't inside the working tree.

 * When "git am" was rewritten as a built-in, it stopped paying
   attention to user.signingkey, which was fixed.

 * After "git checkout --detach", "git status" reported a fairly
   useless "HEAD detached at HEAD", instead of saying at which exact
   commit.

 * "git rebase -i" had a minor regression recently, which stopped
   considering a line that begins with an indented '#' in its insn
   sheet not a comment, which is now fixed.

 * Description of the "log.follow" configuration variable in "git log"
   documentation is now also copied to "git config" documentation.

 * Allocation related functions and stdio are unsafe things to call
   inside a signal handler, and indeed killing the pager can cause
   glibc to deadlock waiting on allocation mutex as our signal handler
   tries to free() some data structures in wait_for_pager().  Reduce
   these unsafe calls.

 * The way how --ref/--notes to specify the notes tree reference are
   DWIMmed was not clearly documented.

 * Customization to change the behaviour with "make -w" and "make -s"
   in our Makefile was broken when they were used together.

 * The Makefile always runs the library archiver with hardcoded "crs"
   options, which was inconvenient for exotic platforms on which
   people want to use programs with totally different set of command
   line options.

 * The ssh transport, just like any other transport over the network,
   did not clear GIT_* environment variables, but it is possible to
   use SendEnv and AcceptEnv to leak them to the remote invocation of
   Git, which is not a good idea at all.  Explicitly clear them just
   like we do for the local transport.

 * "git blame --first-parent v1.0..v2.0" was not rejected but did not
   limit the blame to commits on the first parent chain.

 * Very small number of options take a parameter that is optional
   (which is not a great UI element as they can only appear at the end
   of the command line).  Add notice to documentation of each and
   every one of them.

Also contains typofixes, documentation updates and trivial code
clean-ups.

Revision 1.36 / (download) - annotate - [select for diffs], Wed Oct 7 14:08:41 2015 UTC (7 years, 11 months ago) by ryoon
Branch: MAIN
Changes since 1.35: +4 -4 lines
Diff to previous 1.35 (colored)

Update to 2.6.1

Changelog:
Git v2.6.1 Release Notes
========================

Fixes since v2.6
----------------

 * xdiff code we use to generate diffs is not prepared to handle
   extremely large files.  It uses "int" in many places, which can
   overflow if we have a very large number of lines or even bytes in
   our input files, for example.  Cap the input size to soemwhere
   around 1GB for now.

 * Some protocols (like git-remote-ext) can execute arbitrary code
   found in the URL.  The URLs that submodules use may come from
   arbitrary sources (e.g., .gitmodules files in a remote
   repository), and can hurt those who blindly enable recursive
   fetch.  Restrict the allowed protocols to well known and safe
   ones.


Git 2.6 Release Notes
=====================

Updates since v2.5
------------------

UI, Workflows & Features

 * An asterisk as a substring (as opposed to the entirety) of a path
   component for both side of a refspec, e.g.
   "refs/heads/o*:refs/remotes/heads/i*", is now allowed.

 * New userdiff pattern definition for fountain screenwriting markup
   format has been added.

 * "git log" and friends learned a new "--date=format:..." option to
   format timestamps using system's strftime(3).

 * "git fast-import" learned to respond to the get-mark command via
   its cat-blob-fd interface.

 * "git rebase -i" learned "drop commit-object-name subject" command
   as another way to skip replaying of a commit.

 * A new configuration variable can enable "--follow" automatically
   when "git log" is run with one pathspec argument.

 * "git status" learned to show a more detailed information regarding
   the "rebase -i" session in progress.

 * "git cat-file" learned "--batch-all-objects" option to enumerate all
   available objects in the repository more quickly than "rev-list
   --all --objects" (the output includes unreachable objects, though).

 * "git fsck" learned to ignore errors on a set of known-to-be-bad
   objects, and also allows the warning levels of various kinds of
   non-critical breakages to be tweaked.

 * "git rebase -i"'s list of todo is made configurable.

 * "git send-email" now performs alias-expansion on names that are
   given via --cccmd, etc.

 * An environment variable GIT_REPLACE_REF_BASE tells Git to look into
   refs hierarchy other than refs/replace/ for the object replacement
   data.

 * Allow untracked cache (experimental) to be used when sparse
   checkout (experimental) is also in use.

 * "git pull --rebase" has been taught to pay attention to
   rebase.autostash configuration.

 * The command-line completion script (in contrib/) has been updated.

 * A negative !ref entry in multi-value transfer.hideRefs
   configuration can be used to say "don't hide this one".

 * After "git am" without "-3" stops, running "git am -3" pays attention
   to "-3" only for the patch that caused the original invocation
   to stop.

 * When linked worktree is used, simultaneous "notes merge" instances
   for the same ref in refs/notes/* are prevented from stomping on
   each other.

 * "git send-email" learned a new option --smtp-auth to limit the SMTP
   AUTH mechanisms to be used to a subset of what the system library
   supports.

 * A new configuration variable http.sslVersion can be used to specify
   what specific version of SSL/TLS to use to make a connection.

 * "git notes merge" can be told with "--strategy=<how>" option how to
   automatically handle conflicts; this can now be configured by
   setting notes.mergeStrategy configuration variable.

 * "git log --cc" did not show any patch, even though most of the time
   the user meant "git log --cc -p -m" to see patch output for commits
   with a single parent, and combined diff for merge commits.  The
   command is taught to DWIM "--cc" (without "--raw" and other forms
   of output specification) to "--cc -p -m".

 * "git config --list" output was hard to parse when values consist of
   multiple lines.  "--name-only" option is added to help this.

 * A handful of usability & cosmetic fixes to gitk and l10n updates.

 * A completely empty e-mail address <> is now allowed in the authors
   file used by git-svn, to match the way it accepts the output from
   authors-prog.


Performance, Internal Implementation, Development Support etc.

 * In preparation for allowing different "backends" to store the refs
   in a way different from the traditional "one ref per file in
   $GIT_DIR or in a $GIT_DIR/packed-refs file" filesystem storage,
   direct filesystem access to ref-like things like CHERRY_PICK_HEAD
   from scripts and programs has been reduced.

 * Computation of untracked status indicator by bash prompt
   script (in contrib/) has been optimized.

 * Memory use reduction when commit-slab facility is used to annotate
   sparsely (which is not recommended in the first place).

 * Clean up refs API and make "git clone" less intimate with the
   implementation detail.

 * "git pull" was reimplemented in C.

 * The packet tracing machinery allows to capture an incoming pack
   data to a file for debugging.

 * Move machinery to parse human-readable scaled numbers like 1k, 4M,
   and 2G as an option parameter's value from pack-objects to
   parse-options API, to make it available to other codepaths.

 * "git verify-tag" and "git verify-commit" have been taught to share
   more code, and then learned to optionally show the verification
   message from the underlying GPG implementation.

 * Various enhancements around "git am" reading patches generated by
   foreign SCM have been made.

 * Ref listing by "git branch -l" and "git tag -l" commands has
   started to be rebuilt, based on the for-each-ref machinery.

 * The code to perform multi-tree merges has been taught to repopulate
   the cache-tree upon a successful merge into the index, so that
   subsequent "diff-index --cached" (hence "status") and "write-tree"
   (hence "commit") will go faster.

   The same logic in "git checkout" may now be removed, but that is a
   separate issue.

 * Tests that assume how reflogs are represented on the filesystem too
   much have been corrected.

 * "git am" has been rewritten in "C".

 * git_path() and mkpath() are handy helper functions but it is easy
   to misuse, as the callers need to be careful to keep the number of
   active results below 4.  Their uses have been reduced.

 * The "lockfile" API has been rebuilt on top of a new "tempfile" API.

 * To prepare for allowing a different "ref" backend to be plugged in
   to the system, update_ref()/delete_ref() have been taught about
   ref-like things like MERGE_HEAD that are per-worktree (they will
   always be written to the filesystem inside $GIT_DIR).

 * The gitmodules API that is accessed from the C code learned to
   cache stuff lazily.


Also contains various documentation updates and code clean-ups.


Fixes since v2.5
----------------

Unless otherwise noted, all the fixes since v2.5 in the maintenance
track are contained in this release (see the maintenance releases'
notes for details).

 * "git subtree" (in contrib/) depended on "git log" output to be
   stable, which was a no-no.  Apply a workaround to force a
   particular date format.
   (merge e7aac44 da/subtree-date-confusion later to maint).

 * An attempt to delete a ref by pushing into a repository whose HEAD
   symbolic reference points at an unborn branch that cannot be
   created due to ref D/F conflict (e.g. refs/heads/a/b exists, HEAD
   points at refs/heads/a) failed.
   (merge b112b14 jx/do-not-crash-receive-pack-wo-head later to maint).

 * The low-level "git send-pack" did not honor 'user.signingkey'
   configuration variable when sending a signed-push.
   (merge d830d39 db/send-pack-user-signingkey later to maint).

 * "sparse checkout" misbehaved for a path that is excluded from the
   checkout when switching between branches that differ at the path.
   (merge 7d78241 as/sparse-checkout-removal later to maint).

 * An experimental "untracked cache" feature used uname(2) in a
   slightly unportable way.
   (merge 100e433 cb/uname-in-untracked later to maint).

 * A "rebase" replays changes of the local branch on top of something
   else, as such they are placed in stage #3 and referred to as
   "theirs", while the changes in the new base, typically a foreign
   work, are placed in stage #2 and referred to as "ours".  Clarify
   the "checkout --ours/--theirs".
   (merge f303016 se/doc-checkout-ours-theirs later to maint).

 * The "rev-parse --parseopt" mode parsed the option specification
   and the argument hint in a strange way to allow '=' and other
   special characters in the option name while forbidding them from
   the argument hint.  This made it impossible to define an option
   like "--pair <key>=<value>" with "pair=key=value" specification,
   which instead would have defined a "--pair=key <value>" option.
   (merge 2d893df ib/scripted-parse-opt-better-hint-string later to maint).

 * Often a fast-import stream builds a new commit on top of the
   previous commit it built, and it often unconditionally emits a
   "from" command to specify the first parent, which can be omitted in
   such a case.  This caused fast-import to forget the tree of the
   previous commit and then re-read it from scratch, which was
   inefficient.  Optimize for this common case.
   (merge 0df3245 mh/fast-import-optimize-current-from later to maint).

 * Running an aliased command from a subdirectory when the .git thing
   in the working tree is a gitfile pointing elsewhere did not work.
   (merge d95138e nd/export-worktree later to maint).

 * "Is this subdirectory a separate repository that should not be
   touched?" check "git clean" was inefficient.  This was replaced
   with a more optimized check.
   (merge fbf2fec ee/clean-remove-dirs later to maint).

 * The "new-worktree-mode" hack in "checkout" that was added in
   nd/multiple-work-trees topic has been removed by updating the
   implementation of new "worktree add".
   (merge 65f9b75 es/worktree-add-cleanup later to maint).

 * Remove remaining cruft from  "git checkout --to", which
   transitioned to "git worktree add".
   (merge 114ff88 es/worktree-add later to maint).

 * An off-by-one error made "git remote" to mishandle a remote with a
   single letter nickname.
   (merge bc598c3 mh/get-remote-group-fix later to maint).

 * "git clone $URL", when cloning from a site whose sole purpose is to
   host a single repository (hence, no path after <scheme>://<site>/),
   tried to use the site name as the new repository name, but did not
   remove username or password when <site> part was of the form
   <user>@<pass>:<host>.  The code is taught to redact these.
   (merge adef956 ps/guess-repo-name-at-root later to maint).

 * Running tests with the "-x" option to make them verbose had some
   unpleasant interactions with other features of the test suite.
   (merge 9b5fe78 jk/test-with-x later to maint).

 * t1509 test that requires a dedicated VM environment had some
   bitrot, which has been corrected.
   (merge faacc5a ps/t1509-chroot-test-fixup later to maint).

 * "git pull" in recent releases of Git has a regression in the code
   that allows custom path to the --upload-pack=<program>.  This has
   been corrected.

   Note that this is irrelevant for 'master' with "git pull" rewritten
   in C.
   (merge 13e0e28 mm/pull-upload-pack later to maint).

 * When trying to see that an object does not exist, a state errno
   leaked from our "first try to open a packfile with O_NOATIME and
   then if it fails retry without it" logic on a system that refuses
   O_NOATIME.  This confused us and caused us to die, saying that the
   packfile is unreadable, when we should have just reported that the
   object does not exist in that packfile to the caller.
   (merge dff6f28 cb/open-noatime-clear-errno later to maint).

 * The codepath to produce error messages had a hard-coded limit to
   the size of the message, primarily to avoid memory allocation while
   calling die().
   (merge f4c3edc jk/long-error-messages later to maint).

 * strbuf_read() used to have one extra iteration (and an unnecessary
   strbuf_grow() of 8kB), which was eliminated.
   (merge 3ebbd00 jh/strbuf-read-use-read-in-full later to maint).

 * We rewrote one of the build scripts in Perl but this reimplements
   in Bourne shell.
   (merge 57cee8a sg/help-group later to maint).

 * The experimental untracked-cache feature were buggy when paths with
   a few levels of subdirectories are involved.
   (merge 73f9145 dt/untracked-subdir later to maint).

 * "interpret-trailers" helper mistook a single-liner log message that
   has a colon as the end of existing trailer.

 * The "interpret-trailers" helper mistook a multi-paragraph title of
   a commit log message with a colon in it as the end of the trailer
   block.
   (merge 5c99995 cc/trailers-corner-case-fix later to maint).

 * "git describe" without argument defaulted to describe the HEAD
   commit, but "git describe --contains" didn't.  Arguably, in a
   repository used for active development, such defaulting would not
   be very useful as the tip of branch is typically not tagged, but it
   is better to be consistent.
   (merge 2bd0706 sg/describe-contains later to maint).

 * The client side codepaths in "git push" have been cleaned up
   and the user can request to perform an optional "signed push",
   i.e. sign only when the other end accepts signed push.
   (merge 68c757f db/push-sign-if-asked later to maint).

 * Because the configuration system does not allow "alias.0foo" and
   "pager.0foo" as the configuration key, the user cannot use '0foo'
   as a custom command name anyway, but "git 0foo" tried to look these
   keys up and emitted useless warnings before saying '0foo is not a
   git command'.  These warning messages have been squelched.
   (merge 9e9de18 jk/fix-alias-pager-config-key-warnings later to maint).

 * "git rev-list" does not take "--notes" option, but did not complain
   when one is given.
   (merge 2aea7a5 jk/rev-list-has-no-notes later to maint).

 * When re-priming the cache-tree opportunistically while committing
   the in-core index as-is, we mistakenly invalidated the in-core
   index too aggressively, causing the experimental split-index code
   to unnecessarily rewrite the on-disk index file(s).
   (merge 475a344 dt/commit-preserve-base-index-upon-opportunistic-cache-tree-update later to maint).

 * "git archive" did not use zip64 extension when creating an archive
   with more than 64k entries, which nobody should need, right ;-)?
   (merge 88329ca rs/archive-zip-many later to maint).

 * The code in "multiple-worktree" support that attempted to recover
   from an inconsistent state updated an incorrect file.
   (merge 82fde87 nd/fixup-linked-gitdir later to maint).

 * On case insensitive systems, "git p4" did not work well with client
   specs.

 * "git init empty && git -C empty log" said "bad default revision 'HEAD'",
   which was found to be a bit confusing to new users.
   (merge ce11360 jk/log-missing-default-HEAD later to maint).

 * Recent versions of scripted "git am" has a performance regression in
   "git am --skip" codepath, which no longer exists in the built-in
   version on the 'master' front.  Fix the regression in the last
   scripted version that appear in 2.5.x maintenance track and older.
   (merge b9d6689 js/maint-am-skip-performance-regression later to maint).

 * The branch descriptions that are set with "git branch --edit-description"
   option were used in many places but they weren't clearly documented.
   (merge 561d2b7 po/doc-branch-desc later to maint).

 * Code cleanups and documentation updates.
   (merge 1c601af es/doc-clean-outdated-tools later to maint).
   (merge 3581304 kn/tag-doc-fix later to maint).
   (merge 3a59e59 kb/i18n-doc later to maint).
   (merge 45abdee sb/remove-unused-var-from-builtin-add later to maint).
   (merge 14691e3 sb/parse-options-codeformat later to maint).
   (merge 4a6ada3 ad/bisect-cleanup later to maint).
   (merge da4c5ad ta/docfix-index-format-tech later to maint).
   (merge ae25fd3 sb/check-return-from-read-ref later to maint).
   (merge b3325df nd/dwim-wildcards-as-pathspecs later to maint).
   (merge 7aa9b9b sg/wt-status-header-inclusion later to maint).
   (merge f04c690 as/docfix-reflog-expire-unreachable later to maint).
   (merge 1269847 sg/t3020-typofix later to maint).
   (merge 8b54c23 jc/calloc-pathspec later to maint).
   (merge a6926b8 po/po-readme later to maint).
   (merge 54d160e ss/fix-config-fd-leak later to maint).
   (merge b80fa84 ah/submodule-typofix-in-error later to maint).
   (merge 99885bc ah/reflog-typofix-in-error later to maint).
   (merge 9476c2c ah/read-tree-usage-string later to maint).
   (merge b8c1d27 ah/pack-objects-usage-strings later to maint).
   (merge 486e1e1 br/svn-doc-include-paths-config later to maint).
   (merge 1733ed3 ee/clean-test-fixes later to maint).
   (merge 5fcadc3 gb/apply-comment-typofix later to maint).
   (merge b894d3e mp/t7060-diff-index-test later to maint).
   (merge d238710 as/config-doc-markup-fix later to maint).

Revision 1.35 / (download) - annotate - [select for diffs], Mon Sep 28 14:21:30 2015 UTC (8 years ago) by adam
Branch: MAIN
Changes since 1.34: +4 -4 lines
Diff to previous 1.34 (colored)

Changes 2.5.3:
 * The experimental untracked-cache feature were buggy when paths with
   a few levels of subdirectories are involved.

 * Recent versions of scripted "git am" has a performance regression
   in "git am --skip" codepath, which no longer exists in the
   built-in version on the 'master' front.  Fix the regression in
   the last scripted version that appear in 2.5.x maintenance track
   and older.

Also contains typofixes, documentation updates and trivial code
clean-ups.

Revision 1.34 / (download) - annotate - [select for diffs], Sun Sep 13 09:24:32 2015 UTC (8 years ago) by wiz
Branch: MAIN
CVS Tags: pkgsrc-2015Q3-base, pkgsrc-2015Q3
Changes since 1.33: +4 -4 lines
Diff to previous 1.33 (colored)

Update to 2.5.2:

Fixes since v2.5.1
------------------

 * "git init empty && git -C empty log" said "bad default revision 'HEAD'",
   which was found to be a bit confusing to new users.

 * The "interpret-trailers" helper mistook a multi-paragraph title of
   a commit log message with a colon in it as the end of the trailer
   block.

 * When re-priming the cache-tree opportunistically while committing
   the in-core index as-is, we mistakenly invalidated the in-core
   index too aggressively, causing the experimental split-index code
   to unnecessarily rewrite the on-disk index file(s).

 * "git archive" did not use zip64 extension when creating an archive
   with more than 64k entries, which nobody should need, right ;-)?

 * The code in "multiple-worktree" support that attempted to recover
   from an inconsistent state updated an incorrect file.

 * "git rev-list" does not take "--notes" option, but did not complain
   when one is given.

 * Because the configuration system does not allow "alias.0foo" and
   "pager.0foo" as the configuration key, the user cannot use '0foo'
   as a custom command name anyway, but "git 0foo" tried to look these
   keys up and emitted useless warnings before saying '0foo is not a
   git command'.  These warning messages have been squelched.

 * We recently rewrote one of the build scripts in Perl, which made it
   necessary to have Perl to build Git.  Reduced Perl dependency by
   rewriting it again using sed.

 * t1509 test that requires a dedicated VM environment had some
   bitrot, which has been corrected.

 * strbuf_read() used to have one extra iteration (and an unnecessary
   strbuf_grow() of 8kB), which was eliminated.

 * The codepath to produce error messages had a hard-coded limit to
   the size of the message, primarily to avoid memory allocation while
   calling die().

 * When trying to see that an object does not exist, a state errno
   leaked from our "first try to open a packfile with O_NOATIME and
   then if it fails retry without it" logic on a system that refuses
   O_NOATIME.  This confused us and caused us to die, saying that the
   packfile is unreadable, when we should have just reported that the
   object does not exist in that packfile to the caller.

 * An off-by-one error made "git remote" to mishandle a remote with a
   single letter nickname.

 * A handful of codepaths that used to use fixed-sized arrays to hold
   pathnames have been corrected to use strbuf and other mechanisms to
   allow longer pathnames without fearing overflows.

Also contains typofixes, documentation updates and trivial code
clean-ups.

Revision 1.33 / (download) - annotate - [select for diffs], Sun Aug 30 16:08:06 2015 UTC (8 years, 1 month ago) by wiz
Branch: MAIN
Changes since 1.32: +4 -4 lines
Diff to previous 1.32 (colored)

Update to 2.5.1:

Git v2.5.1 Release Notes
========================

Fixes since v2.5
----------------

 * Running an aliased command from a subdirectory when the .git thing
   in the working tree is a gitfile pointing elsewhere did not work.

 * Often a fast-import stream builds a new commit on top of the
   previous commit it built, and it often unconditionally emits a
   "from" command to specify the first parent, which can be omitted in
   such a case.  This caused fast-import to forget the tree of the
   previous commit and then re-read it from scratch, which was
   inefficient.  Optimize for this common case.

 * The "rev-parse --parseopt" mode parsed the option specification
   and the argument hint in a strange way to allow '=' and other
   special characters in the option name while forbidding them from
   the argument hint.  This made it impossible to define an option
   like "--pair <key>=<value>" with "pair=key=value" specification,
   which instead would have defined a "--pair=key <value>" option.

 * A "rebase" replays changes of the local branch on top of something
   else, as such they are placed in stage #3 and referred to as
   "theirs", while the changes in the new base, typically a foreign
   work, are placed in stage #2 and referred to as "ours".  Clarify
   the "checkout --ours/--theirs".

 * An experimental "untracked cache" feature used uname(2) in a
   slightly unportable way.

 * "sparse checkout" misbehaved for a path that is excluded from the
   checkout when switching between branches that differ at the path.

 * The low-level "git send-pack" did not honor 'user.signingkey'
   configuration variable when sending a signed-push.

 * An attempt to delete a ref by pushing into a repository whose HEAD
   symbolic reference points at an unborn branch that cannot be
   created due to ref D/F conflict (e.g. refs/heads/a/b exists, HEAD
   points at refs/heads/a) failed.

 * "git subtree" (in contrib/) depended on "git log" output to be
   stable, which was a no-no.  Apply a workaround to force a
   particular date format.

 * "git clone $URL" in recent releases of Git contains a regression in
   the code that invents a new repository name incorrectly based on
   the $URL.  This has been corrected.
   (merge db2e220 jk/guess-repo-name-regression-fix later to maint).

 * Running tests with the "-x" option to make them verbose had some
   unpleasant interactions with other features of the test suite.
   (merge 9b5fe78 jk/test-with-x later to maint).

 * "git pull" in recent releases of Git has a regression in the code
   that allows custom path to the --upload-pack=<program>.  This has
   been corrected.

 * pipe() emulation used in Git for Windows looked at a wrong variable
   when checking for an error from an _open_osfhandle() call.

Also contains typofixes, documentation updates and trivial code
clean-ups.

Revision 1.32 / (download) - annotate - [select for diffs], Fri Jul 31 12:57:23 2015 UTC (8 years, 2 months ago) by adam
Branch: MAIN
Changes since 1.31: +4 -4 lines
Diff to previous 1.31 (colored)

Changes 2.5.0:
UI, Workflows & Features

 * The bash completion script (in contrib/) learned a few options that
   "git revert" takes.

 * Whitespace breakages in deleted and context lines can also be
   painted in the output of "git diff" and friends with the new
   --ws-error-highlight option.

 * List of commands shown by "git help" are grouped along the workflow
   elements to help early learners.

 * "git p4" now detects the filetype (e.g. binary) correctly even when
   the files are opened exclusively.

 * git p4 attempts to better handle branches in Perforce.

 * "git p4" learned "--changes-block-size <n>" to read the changes in
   chunks from Perforce, instead of making one call to "p4 changes"
   that may trigger "too many rows scanned" error from Perforce.

 * More workaround for Perforce's row number limit in "git p4".

 * Unlike "$EDITOR" and "$GIT_EDITOR" that can hold the path to the
   command and initial options (e.g. "/path/to/emacs -nw"), 'git p4'
   did not let the shell interpolate the contents of the environment
   variable that name the editor "$P4EDITOR" (and "$EDITOR", too).
   This release makes it in line with the rest of Git, as well as with
   Perforce.

 * A new short-hand <branch>@{push} denotes the remote-tracking branch
   that tracks the branch at the remote the <branch> would be pushed
   to.

 * "git show-branch --topics HEAD" (with no other arguments) did not
   do anything interesting.  Instead, contrast the given revision
   against all the local branches by default.

 * A replacement for contrib/workdir/git-new-workdir that does not
   rely on symbolic links and make sharing of objects and refs safer
   by making the borrowee and borrowers aware of each other.

   Consider this as still an experimental feature; its UI is still
   likely to change.

 * Tweak the sample "store" backend of the credential helper to honor
   XDG configuration file locations when specified.

 * A heuristic we use to catch mistyped paths on the command line
   "git <cmd> <revs> <pathspec>" is to make sure that all the non-rev
   parameters in the later part of the command line are names of the
   files in the working tree, but that means "git grep $str -- \*.c"
   must always be disambiguated with "--", because nobody sane will
   create a file whose name literally is asterisk-dot-see.  Loosen the
   heuristic to declare that with a wildcard string the user likely
   meant to give us a pathspec.

 * "git merge FETCH_HEAD" learned that the previous "git fetch" could
   be to create an Octopus merge, i.e. recording multiple branches
   that are not marked as "not-for-merge"; this allows us to lose an
   old style invocation "git merge <msg> HEAD $commits..." in the
   implementation of "git pull" script; the old style syntax can now
   be deprecated (but not removed yet).

 * Filter scripts were run with SIGPIPE disabled on the Git side,
   expecting that they may not read what Git feeds them to filter.
   We however treated a filter that does not read its input fully
   before exiting as an error.  We no longer do and ignore EPIPE
   when writing to feed the filter scripts.

   This changes semantics, but arguably in a good way.  If a filter
   can produce its output without fully consuming its input using
   whatever magic, we now let it do so, instead of diagnosing it
   as a programming error.

 * Instead of dying immediately upon failing to obtain a lock, the
   locking (of refs etc) retries after a short while with backoff.

 * Introduce http.<url>.SSLCipherList configuration variable to tweak
   the list of cipher suite to be used with libcURL when talking with
   https:// sites.

 * "git subtree" script (in contrib/) used "echo -n" to produce
   progress messages in a non-portable way.

 * "git subtree" script (in contrib/) does not have --squash option
   when pushing, but the documentation and help text pretended as if
   it did.

 * The Git subcommand completion (in contrib/) no longer lists credential
   helpers among candidates; they are not something the end user would
   invoke interactively.

 * The index file can be taught with "update-index --untracked-cache"
   to optionally remember already seen untracked files, in order to
   speed up "git status" in a working tree with tons of cruft.

 * "git mergetool" learned to drive WinMerge as a backend.

 * "git upload-pack" that serves "git fetch" can be told to serve
   commits that are not at the tip of any ref, as long as they are
   reachable from a ref, with uploadpack.allowReachableSHA1InWant
   configuration variable.

Revision 1.31 / (download) - annotate - [select for diffs], Fri Jul 17 11:24:27 2015 UTC (8 years, 2 months ago) by adam
Branch: MAIN
Changes since 1.30: +4 -4 lines
Diff to previous 1.30 (colored)

Changes 2.4.6:
* "git fetch --depth=<depth>" and "git clone --depth=<depth>" issued
  a shallow transfer request even to an upload-pack that does not
  support the capability.
* "git fsck" used to ignore missing or invalid objects recorded in reflog.
* The tcsh completion writes a bash scriptlet but that would have
  failed for users with noclobber set.
* Recent Mac OS X updates breaks the logic to detect that the machine
  is on the AC power in the sample pre-auto-gc script.
* "git format-patch --ignore-if-upstream A..B" did not like to be fed
  tags as boundary commits.

Revision 1.30 / (download) - annotate - [select for diffs], Sat Jul 4 05:56:29 2015 UTC (8 years, 3 months ago) by ryoon
Branch: MAIN
Changes since 1.29: +4 -4 lines
Diff to previous 1.29 (colored)

Update to 2.4.5

Changelog:
Git v2.4.5 Release Notes
========================

Fixes since v2.4.4
------------------

 * The setup code used to die when core.bare and core.worktree are set
   inconsistently, even for commands that do not need working tree.

 * There was a dead code that used to handle "git pull --tags" and
   show special-cased error message, which was made irrelevant when
   the semantics of the option changed back in Git 1.9 days.

 * "color.diff.plain" was a misnomer; give it 'color.diff.context' as
   a more logical synonym.

 * The configuration reader/writer uses mmap(2) interface to access
   the files; when we find a directory, it barfed with "Out of memory?".

 * Recent "git prune" traverses young unreachable objects to safekeep
   old objects in the reachability chain from them, which sometimes
   showed unnecessary error messages that are alarming.

 * "git rebase -i" fired post-rewrite hook when it shouldn't (namely,
   when it was told to stop sequencing with 'exec' insn).

Also contains typofixes, documentation updates and trivial code
clean-ups.


Git v2.4.4 Release Notes
========================

Fixes since v2.4.3
------------------

 * l10n updates for German.

 * An earlier leakfix to bitmap testing code was incomplete.

 * "git clean pathspec..." tried to lstat(2) and complain even for
   paths outside the given pathspec.

 * Communication between the HTTP server and http_backend process can
   lead to a dead-lock when relaying a large ref negotiation request.
   Diagnose the situation better, and mitigate it by reading such a
   request first into core (to a reasonable limit).

 * The clean/smudge interface did not work well when filtering an
   empty contents (failed and then passed the empty input through).
   It can be argued that a filter that produces anything but empty for
   an empty input is nonsense, but if the user wants to do strange
   things, then why not?

 * Make "git stash something --help" error out, so that users can
   safely say "git stash drop --help".

 * Clarify that "log --raw" and "log --format=raw" are unrelated
   concepts.

 * Catch a programmer mistake to feed a pointer not an array to
   ARRAY_SIZE() macro, by using a couple of GCC extensions.

Also contains typofixes, documentation updates and trivial code
clean-ups.

Revision 1.29 / (download) - annotate - [select for diffs], Sat Jun 6 09:59:07 2015 UTC (8 years, 3 months ago) by adam
Branch: MAIN
CVS Tags: pkgsrc-2015Q2-base, pkgsrc-2015Q2
Changes since 1.28: +4 -4 lines
Diff to previous 1.28 (colored)

Fixes since v2.4.3
------------------

 * Error messages from "git branch" called remote-tracking branches as
   "remote branches".

 * "git rerere forget" in a repository without rerere enabled gave a
   cryptic error message; it should be a silent no-op instead.

 * "git pull --log" and "git pull --no-log" worked as expected, but
   "git pull --log=20" did not.

 * The pull.ff configuration was supposed to override the merge.ff
   configuration, but it didn't.

 * The code to read pack-bitmap wanted to allocate a few hundred
   pointers to a structure, but by mistake allocated and leaked memory
   enough to hold that many actual structures.  Correct the allocation
   size and also have it on stack, as it is small enough.

 * Various documentation mark-up fixes to make the output more
   consistent in general and also make AsciiDoctor (an alternative
   formatter) happier.

 * "git bundle verify" did not diagnose extra parameters on the
   command line.

 * Multi-ref transaction support we merged a few releases ago
   unnecessarily kept many file descriptors open, risking to fail with
   resource exhaustion.

 * The ref API did not handle cases where 'refs/heads/xyzzy/frotz' is
   removed at the same time as 'refs/heads/xyzzy' is added (or vice
   versa) very well.

 * The "log --decorate" enhancement in Git 2.4 that shows the commit
   at the tip of the current branch e.g. "HEAD -> master", did not
   work with --decorate=full.

 * There was a commented-out (instead of being marked to expect
   failure) test that documented a breakage that was fixed since the
   test was written; turn it into a proper test.

 * core.excludesfile (defaulting to $XDG_HOME/git/ignore) is supposed
   to be overridden by repository-specific .git/info/exclude file, but
   the order was swapped from the beginning. This belatedly fixes it.

 * The connection initiation code for "ssh" transport tried to absorb
   differences between the stock "ssh" and Putty-supplied "plink" and
   its derivatives, but the logic to tell that we are using "plink"
   variants were too loose and falsely triggered when "plink" appeared
   anywhere in the path (e.g. "/home/me/bin/uplink/ssh").

 * "git rebase -i" moved the "current" command from "todo" to "done" a
   bit too prematurely, losing a step when a "pick" did not even start.

 * "git add -e" did not allow the user to abort the operation by
   killing the editor.

 * Git 2.4 broke setting verbosity and progress levels on "git clone"
   with native transports.

 * Some time ago, "git blame" (incorrectly) lost the convert_to_git()
   call when synthesizing a fake "tip" commit that represents the
   state in the working tree, which broke folks who record the history
   with LF line ending to make their project portabile across
   platforms while terminating lines in their working tree files with
   CRLF for their platform.

 * Code clean-up for xdg configuration path support.

Also contains typofixes, documentation updates and trivial code
clean-ups.

Revision 1.28 / (download) - annotate - [select for diffs], Sun May 31 22:28:36 2015 UTC (8 years, 4 months ago) by ryoon
Branch: MAIN
Changes since 1.27: +4 -4 lines
Diff to previous 1.27 (colored)

Update git packages to 2.4.2

Changelog:
Git v2.4.2 Release Notes
========================

Fixes since v2.4.1
------------------

 * "git rev-list --objects $old --not --all" to see if everything that
   is reachable from $old is already connected to the existing refs
   was very inefficient.

 * "hash-object --literally" introduced in v2.2 was not prepared to
   take a really long object type name.

 * "git rebase --quiet" was not quite quiet when there is nothing to
   do.

 * The completion for "log --decorate=" parameter value was incorrect.

 * "filter-branch" corrupted commit log message that ends with an
   incomplete line on platforms with some "sed" implementations that
   munge such a line.  Work it around by avoiding to use "sed".

 * "git daemon" fails to build from the source under NO_IPV6
   configuration (regression in 2.4).

 * "git stash pop/apply" forgot to make sure that not just the working
   tree is clean but also the index is clean. The latter is important
   as a stash application can conflict and the index will be used for
   conflict resolution.

 * We have prepended $GIT_EXEC_PATH and the path "git" is installed in
   (typically "/usr/bin") to $PATH when invoking subprograms and hooks
   for almost eternity, but the original use case the latter tried to
   support was semi-bogus (i.e. install git to /opt/foo/git and run it
   without having /opt/foo on $PATH), and more importantly it has
   become less and less relevant as Git grew more mainstream (i.e. the
   users would _want_ to have it on their $PATH).  Stop prepending the
   path in which "git" is installed to users' $PATH, as that would
   interfere the command search order people depend on (e.g. they may
   not like versions of programs that are unrelated to Git in /usr/bin
   and want to override them by having different ones in /usr/local/bin
   and have the latter directory earlier in their $PATH).

Also contains typofixes, documentation updates and trivial code
clean-ups.

Revision 1.27 / (download) - annotate - [select for diffs], Mon May 18 12:51:37 2015 UTC (8 years, 4 months ago) by adam
Branch: MAIN
Changes since 1.26: +4 -4 lines
Diff to previous 1.26 (colored)

Changes 2.4.1:
* The usual "git diff" when seeing a file turning into a directory
  showed a patchset to remove the file and create all files in the
  directory, but "git diff --no-index" simply refused to work.  Also,
  when asked to compare a file and a directory, imitate POSIX "diff"
  and compare the file with the file with the same name in the
  directory, instead of refusing to run.

* The default $HOME/.gitconfig file created upon "git config --global"
  that edits it had incorrectly spelled user.name and user.email
  entries in it.

* "git commit --date=now" or anything that relies on approxidate lost
  the daylight-saving-time offset.

* "git cat-file bl $blob" failed to barf even though there is no
  object type that is "bl".

* Teach the codepaths that read .gitignore and .gitattributes files
  that these files encoded in UTF-8 may have UTF-8 BOM marker at the
  beginning; this makes it in line with what we do for configuration
  files already.

* Access to objects in repositories that borrow from another one on a
  slow NFS server unnecessarily got more expensive due to recent code
  becoming more cautious in a naive way not to lose objects to pruning.

* We avoid setting core.worktree when the repository location is the
  ".git" directory directly at the top level of the working tree, but
  the code misdetected the case in which the working tree is at the
  root level of the filesystem (which arguably is a silly thing to
  do, but still valid).

Also contains typofixes, documentation updates and trivial code
clean-ups.

Revision 1.26 / (download) - annotate - [select for diffs], Sat Apr 25 09:02:45 2015 UTC (8 years, 5 months ago) by adam
Branch: MAIN
Changes since 1.25: +4 -4 lines
Diff to previous 1.25 (colored)

Changes 2.3.6:
* "diff-highlight" (in contrib/) used to show byte-by-byte
   differences, which meant that multi-byte characters can be chopped
   in the middle.  It learned to pay attention to character boundaries
   (assuming the UTF-8 payload).
Also contains typofixes, documentation updates and trivial code
clean-ups.

Revision 1.25 / (download) - annotate - [select for diffs], Wed Apr 8 10:37:07 2015 UTC (8 years, 5 months ago) by adam
Branch: MAIN
Changes since 1.24: +4 -4 lines
Diff to previous 1.24 (colored)

Changes 2.3.5:
* The prompt script (in contrib/) did not show the untracked sign
  when working in a subdirectory without any untracked files.

* Even though "git grep --quiet" is run merely to ask for the exit
  status, we spawned the pager regardless.  Stop doing that.

* Recommend format-patch and send-email for those who want to submit
  patches to this project.

* An failure early in the "git clone" that started creating the
  working tree and repository could have resulted in some directories
  and files left without getting cleaned up.

* "git fetch" that fetches a commit using the allow-tip-sha1-in-want
  extension could have failed to fetch all the requested refs.

* The split-index mode introduced at v2.3.0-rc0~41 was broken in the
  codepath to protect us against a broken reimplementation of Git
  that writes an invalid index with duplicated index entries, etc.

* "git prune" used to largely ignore broken refs when deciding which
  objects are still being used, which could spread an existing small
  damage and make it a larger one.

* "git tag -h" used to show the "--column" and "--sort" options
  that are about listing in a wrong section.

* The transfer.hiderefs support did not quite work for smart-http
  transport.

* The code that reads from the ctags file in the completion script
  (in contrib/) did not spell ${param/pattern/string} substitution
  correctly, which happened to work with bash but not with zsh.

* The explanation on "rebase --preserve-merges", "pull --rebase=preserve",
  and "push --force-with-lease" in the documentation was unclear.

Revision 1.24 / (download) - annotate - [select for diffs], Sun Mar 8 08:12:56 2015 UTC (8 years, 6 months ago) by adam
Branch: MAIN
CVS Tags: pkgsrc-2015Q1-base, pkgsrc-2015Q1
Changes since 1.23: +4 -4 lines
Diff to previous 1.23 (colored)

Changes 2.3.1:

* "update-index --refresh" used to leak when an entry cannot be
  refreshed for whatever reason.

* "git fast-import" used to crash when it could not close and
  conclude the resulting packfile cleanly.

* "git blame" died, trying to free an uninitialized piece of memory.

* "git merge-file" did not work correctly in a subdirectory.

* "git submodule add" failed to squash "path/to/././submodule" to
  "path/to/submodule".

* In v2.2.0, we broke "git prune" that runs in a repository that
  borrows from an alternate object store.

* Certain older vintages of cURL give irregular output from
  "curl-config --vernum", which confused our build system.

* An earlier workaround to squelch unhelpful deprecation warnings
  from the complier on Mac OSX unnecessarily set minimum required
  version of the OS, which the user might want to raise (or lower)
  for other reasons.

* Longstanding configuration variable naming rules has been added to
  the documentation.

* The credential helper for Windows (in contrib/) used to mishandle
  a user name with an at-sign in it.

* Older GnuPG implementations may not correctly import the keyring
  material we prepare for the tests to use.

* Clarify in the documentation that "remote.<nick>.pushURL" and
  "remote.<nick>.URL" are there to name the same repository accessed
  via different transports, not two separate repositories.

* The pack bitmap support did not build with older versions of GCC.

* Reading configuration from a blob object, when it ends with a lone
  CR, use to confuse the configuration parser.

* We didn't format an integer that wouldn't fit in "int" but in
  "uintmax_t" correctly.

* "git push --signed" gave an incorrectly worded error message when
  the other side did not support the capability.

* "git fetch" over a remote-helper that cannot respond to "list"
  command could not fetch from a symbolic reference e.g. HEAD.

* The insn sheet "git rebase -i" creates did not fully honor
  core.abbrev settings.

* The tests that wanted to see that file becomes unreadable after
  running "chmod a-r file", and the tests that wanted to make sure it
  is not run as root, we used "can we write into the / directory?" as
  a cheap substitute, but on some platforms that is not a good
  heuristics.  The tests and their prerequisites have been updated to
  check what they really require.

* The configuration variable 'mailinfo.scissors' was hard to
  discover in the documentation.

* Correct a breakage to git-svn around v2.2 era that triggers
  premature closing of FileHandle.

* Even though we officially haven't dropped Perl 5.8 support, the
  Getopt::Long package that came with it does not support "--no-"
  prefix to negate a boolean option; manually add support to help
  people with older Getopt::Long package.

Revision 1.23 / (download) - annotate - [select for diffs], Sun Feb 8 09:02:11 2015 UTC (8 years, 7 months ago) by adam
Branch: MAIN
Changes since 1.22: +4 -4 lines
Diff to previous 1.22 (colored)

Changes 2.3.0:
This one ended up to be a release with lots of small corrections and
improvements without big uncomfortably exciting features.  The recent
security fix that went to 2.2.1 and older maintenance tracks is also
contained in this update.

Revision 1.22 / (download) - annotate - [select for diffs], Mon Jan 19 15:42:42 2015 UTC (8 years, 8 months ago) by adam
Branch: MAIN
Changes since 1.21: +4 -4 lines
Diff to previous 1.21 (colored)

Changes 2.2.2:
* "git checkout $treeish $path", when $path in the index and the
  working tree already matched what is in $treeish at the $path,
  still overwrote the $path unnecessarily.
* "git config --get-color" did not parse its command line arguments
  carefully.
* open() emulated on Windows platforms did not give EISDIR upon
  an attempt to open a directory for writing.
* A few code paths used abs() when they should have used labs() on
  long integers.
* "gitweb" used to depend on a behaviour recent CGI.pm deprecated.
* "git init" (hence "git clone") initialized the per-repository
  configuration file .git/config with x-bit by mistake.
* Git 2.0 was supposed to make the "simple" mode for the default of
  "git push", but it didn't.
* "Everyday" document had a broken link.
* The build procedure did not bother fixing perl and python scripts
  when NO_PERL and NO_PYTHON build-time configuration changed.
* The code that reads the reflog from the newer to the older entries
  did not handle an entry that crosses a boundary of block it uses to
  read them correctly.
* "git apply" was described in the documentation to take --ignore-date
  option, which it does not.
* Traditionally we tried to avoid interpreting date strings given by
  the user as future dates, e.g. GIT_COMMITTER_DATE=2014-12-10 when
  used early November 2014 was taken as "October 12, 2014" because it
  is likely that a date in the future, December 10, is a mistake.
  This heuristics has been loosened to allow people to express future
  dates (most notably, --until=<date> may want to be far in the
  future) and we no longer tiebreak by future-ness of the date when
   (1) ISO-like format is used, and
   (2) the string can make sense interpreted as both y-m-d and y-d-m.
  Git may still have to use the heuristics to tiebreak between dd/mm/yy
  and mm/dd/yy, though.
* The code to abbreviate an object name to its short unique prefix
  has been optimized when no abbreviation was requested.
* "git add --ignore-errors ..." did not ignore an error to
  give a file that did not exist.
* Git did not correctly read an overlong refname from a packed refs
  file.
Also contains typofixes, documentation updates and trivial code clean-ups.

Revision 1.21 / (download) - annotate - [select for diffs], Fri Dec 19 00:49:53 2014 UTC (8 years, 9 months ago) by schmonz
Branch: MAIN
CVS Tags: pkgsrc-2014Q4-base, pkgsrc-2014Q4
Changes since 1.20: +4 -4 lines
Diff to previous 1.20 (colored)

Update to 2.2.1. From the changelog:

* We used to allow committing a path ".Git/config" with Git that is
  running on a case sensitive filesystem, but an attempt to check out
  such a path with Git that runs on a case insensitive filesystem
  would have clobbered ".git/config", which is definitely not what
  the user would have expected.  Git now prevents you from tracking
  a path with ".Git" (in any case combination) as a path component.

* On Windows, certain path components that are different from ".git"
  are mapped to ".git", e.g. "git~1/config" is treated as if it were
  ".git/config".  HFS+ has a similar issue, where certain unicode
  codepoints are ignored, e.g. ".g\u200cit/config" is treated as if
  it were ".git/config".  Pathnames with these potential issues are
  rejected on the affected systems.  Git on systems that are not
  affected by this issue (e.g. Linux) can also be configured to
  reject them to ensure cross platform interoperability of the hosted
  projects.

* "git fsck" notices a tree object that records such a path that can
  be confused with ".git", and with receive.fsckObjects configuration
  set to true, an attempt to "git push" such a tree object will be
  rejected.  Such a path may not be a problem on some filesystems
  but in order to protect those on HFS+ and on case insensitive
  filesystems, this check is enabled on all platforms.

A big "thanks!" for bringing this issue to us goes to our friends in
the Mercurial land, namely, Matt Mackall and Augie Fackler.

Also contains typofixes, documentation updates and trivial code clean-ups.

Changes since v2.2.0 are as follows:

Hartmut Henkel (1):
      l10n: de.po: fix typos

Jeff King (8):
      unpack-trees: propagate errors adding entries to the index
      read-tree: add tests for confusing paths like ".." and ".git"
      verify_dotfile(): reject .git case-insensitively
      t1450: refactor ".", "..", and ".git" fsck tests
      fsck: notice .git case-insensitively
      utf8: add is_hfs_dotgit() helper
      read-cache: optionally disallow HFS+ .git variants
      fsck: complain about HFS+ ".git" aliases in trees

Johannes Schindelin (3):
      path: add is_ntfs_dotgit() helper
      read-cache: optionally disallow NTFS .git variants
      fsck: complain about NTFS ".git" aliases in trees

Revision 1.20 / (download) - annotate - [select for diffs], Sun Nov 30 18:43:41 2014 UTC (8 years, 10 months ago) by adam
Branch: MAIN
Changes since 1.19: +5 -5 lines
Diff to previous 1.19 (colored)

Changes 2.2.0:
Ports
* Building on older MacOS X systems automatically sets
  the necessary NO_APPLE_COMMON_CRYPTO build-time option.
* Building with NO_PTHREADS has been resurrected.
* Compilation options have been updated a bit to better support the
  z/OS port.

UI, Workflows & Features
* "git archive" learned to filter what gets archived with a pathspec.
* "git config --edit --global" starts from a skeletal per-user
  configuration file contents, instead of a total blank, when the
  user does not already have any global config.  This immediately
  reduces the need to later ask "Have you forgotten to set
  core.user?", and we can add more to the template as we gain
  more experience.
* "git stash list -p" used to be almost always a no-op because each
  stash entry is represented as a merge commit.  It learned to show
  the difference between the base commit version and the working tree
  version, which is in line with what "git stash show" gives.
* Sometimes users want to report a bug they experience on their
  repository, but they are not at liberty to share the contents of
  the repository.  "fast-export" was taught an "--anonymize" option
  to replace blob contents, names of people, paths and log
  messages with bland and simple strings to help them.
* "git difftool" learned an option to stop feeding paths to the
  diff backend when it exits with a non-zero status.
* "git grep" learned to paint (or not paint) partial matches on
  context lines when showing "grep -C<num>" output in color.
* "log --date=iso" uses a slight variant of the ISO 8601 format that is
  more human readable.  A new "--date=iso-strict" option gives
  datetime output that conforms more strictly.
* The logic "git prune" uses is more resilient against various corner
  cases.
* A broken reimplementation of Git could write an invalid index that
  records both stage 0 and higher-stage entries for the same path.
  We now notice and reject such an index, as there is no sensible
  fallback (we do not know if the broken tool wanted to resolve and
  forgot to remove the higher-stage entries, or if it wanted to unresolve
  and forgot to remove the stage 0 entry).
* The temporary files "git mergetool" uses are renamed to avoid too
  many dots in them (e.g. a temporary file for "hello.c" used to be
  named e.g. "hello.BASE.4321.c" but now uses underscore instead,
  e.g. "hello_BASE_4321.c", to allow us to have multiple variants).
* The temporary files "git mergetool" uses can be placed in a newly
  created temporary directory, instead of the current directory, by
  setting the mergetool.writeToTemp configuration variable.
* "git mergetool" understands "--tool bc" now, as version 4 of
  BeyondCompare can be driven the same way as its version 3 and it
  feels awkward to say "--tool bc3" to run version 4.
* The "pre-receive" and "post-receive" hooks are no longer required
  to consume their input fully (not following this requirement used
  to result in intermittent errors in "git push").
* The pretty-format specifier "%d", which expands to " (tagname)"
  for a tagged commit, gained a cousin "%D" that just gives the
  "tagname" without frills.
* "git push" learned "--signed" push, that allows a push (i.e.
  request to update the refs on the other side to point at a new
  history, together with the transmission of necessary objects) to be
  signed, so that it can be verified and audited, using the GPG
  signature of the person who pushed, that the tips of branches at a
  public repository really point the commits the pusher wanted to,
  without having to "trust" the server.
* "git interpret-trailers" is a new filter to programmatically edit
  the tail end of the commit log messages, e.g. "Signed-off-by:".
* "git help everyday" shows the "Everyday Git in 20 commands or so"
  document, whose contents have been updated to match more modern
  Git practice.
* On the "git svn" front, work progresses to reduce memory consumption and
  to improve handling of mergeinfo.

Revision 1.19 / (download) - annotate - [select for diffs], Thu Nov 20 21:43:10 2014 UTC (8 years, 10 months ago) by bsiegert
Branch: MAIN
Changes since 1.18: +2 -2 lines
Diff to previous 1.18 (colored)

Do not attempt to set ownership of some files, this breaks unprivileged
builds on Mac OS X Tiger.

Patch provided by Sevan Janiyan in PR pkg/49051.

Revision 1.18 / (download) - annotate - [select for diffs], Sat Nov 1 11:34:00 2014 UTC (8 years, 11 months ago) by adam
Branch: MAIN
Changes since 1.17: +4 -4 lines
Diff to previous 1.17 (colored)

Changes 2.1.3:
* Some MUAs mangled a line in a message that begins with "From " to
  ">From " when writing to a mailbox file and feeding such an input to
  "git am" used to lose such a line.
* "git daemon" (with NO_IPV6 build configuration) used to incorrectly
  use the hostname even when gethostbyname() reported that the given
  hostname is not found.
* Newer versions of 'meld' breaks the auto-detection we use to see if
  they are new enough to support the `--output` option.
* "git pack-objects" forgot to disable the codepath to generate
  object recheability bitmap when it needs to split the resulting
  pack.
* "gitweb" used deprecated CGI::startfrom, which was removed from
  CGI.pm as of 4.04; use CGI::start_from instead.
* "git log" documentation had an example section marked up not
  quite correctly, which passed AsciiDoc but failed with
  AsciiDoctor.
Also contains some documentation updates.

Revision 1.17 / (download) - annotate - [select for diffs], Wed Oct 1 12:08:24 2014 UTC (9 years ago) by adam
Branch: MAIN
Changes since 1.16: +4 -4 lines
Diff to previous 1.16 (colored)

Changes 2.1.2:
* "git push" over HTTP transport had an artificial limit on number of
  refs that can be pushed imposed by the command line length.
* When receiving an invalid pack stream that records the same object
  twice, multiple threads got confused due to a race.
* An attempt to remove the entire tree in the "git fast-import" input
  stream caused it to misbehave.
* Reachability check (used in "git prune" and friends) did not add a
  detached HEAD as a starting point to traverse objects still in use.
* "git config --add section.var val" used to lose existing
  section.var whose value was an empty string.
* "git fsck" failed to report that it found corrupt objects via its
  exit status in some cases.

Revision 1.16 / (download) - annotate - [select for diffs], Mon Aug 25 07:49:08 2014 UTC (9 years, 1 month ago) by adam
Branch: MAIN
CVS Tags: pkgsrc-2014Q3-base, pkgsrc-2014Q3
Changes since 1.15: +5 -5 lines
Diff to previous 1.15 (colored)

Changes 2.1.0:

Backward compatibility notes

Revision 1.15 / (download) - annotate - [select for diffs], Fri Aug 1 19:18:39 2014 UTC (9 years, 2 months ago) by schmonz
Branch: MAIN
Changes since 1.14: +5 -5 lines
Diff to previous 1.14 (colored)

Even though we specify OpenSSL, on sufficiently new Mac OS X, Git
has been linking with Apple's CommonCrypto instead. Add an
"apple-common-crypto" option that explicitly avoids CommonCrypto
when it's off. Turn it off by default, and set PKG_FAIL_REASON if
it's enabled on an unsuitable system.

While here, regenerate fuzzy patches.

Addresses pkg/49051. Bump PKGREVISION.

Revision 1.14 / (download) - annotate - [select for diffs], Mon Jun 2 16:32:36 2014 UTC (9 years, 4 months ago) by adam
Branch: MAIN
CVS Tags: pkgsrc-2014Q2-base, pkgsrc-2014Q2
Changes since 1.13: +4 -4 lines
Diff to previous 1.13 (colored)

Fixes since v1.9.3
------------------

 * Commands that take pathspecs on the command line misbehaved when
   the pathspec is given as an absolute pathname (which is a
   practice not particularly encouraged) that points at a symbolic
   link in the working tree.

 * An earlier fix to the shell prompt script (in contrib/) for using
   the PROMPT_COMMAND interface did not correctly check if the extra
   code path needs to trigger, causing the branch name not to appear
   when 'promptvars' option is disabled in bash or PROMPT_SUBST is
   unset in zsh.

Revision 1.13 / (download) - annotate - [select for diffs], Sat May 10 11:43:30 2014 UTC (9 years, 4 months ago) by adam
Branch: MAIN
Changes since 1.12: +4 -4 lines
Diff to previous 1.12 (colored)

Changes 1.9.3:
* "git p4" dealing with changes in binary files were broken by a
   change in 1.9 release.
* The shell prompt script (in contrib/), when using the PROMPT_COMMAND
  interface, used an unsafe construct when showing the branch name in
  $PS1.
* "git rebase" used a POSIX shell construct FreeBSD /bin/sh does not
  work well with.
* Some more Unicode codepoints defined in Unicode 6.3 as having
  zero width have been taught to our display column counting logic.
* Some tests used shell constructs that did not work well on
  FreeBSD.

Revision 1.12 / (download) - annotate - [select for diffs], Sun Feb 23 10:00:27 2014 UTC (9 years, 7 months ago) by adam
Branch: MAIN
CVS Tags: pkgsrc-2014Q1-base, pkgsrc-2014Q1
Changes since 1.11: +5 -6 lines
Diff to previous 1.11 (colored)

Changes 1.8.5:

Foreign interfaces, subsystems and ports.

 * The HTTP transport, when talking GSS-Negotiate, uses "100
   Continue" response to avoid having to rewind and resend a large
   payload, which may not be always doable.

 * Various bugfixes to remote-bzr and remote-hg (in contrib/).

 * The build procedure is aware of MirBSD now.

 * Various "git p4", "git svn" and "gitk" updates.


UI, Workflows & Features

 * Fetching from a shallowly-cloned repository used to be forbidden,
   primarily because the codepaths involved were not carefully vetted
   and we did not bother supporting such usage. This release attempts
   to allow object transfer out of a shallowly-cloned repository in a
   more controlled way (i.e. the receiver becomes a shallow repository
   with a truncated history).

 * Just like we give a reasonable default for "less" via the LESS
   environment variable, we now specify a reasonable default for "lv"
   via the "LV" environment variable when spawning the pager.

 * Two-level configuration variable names in "branch.*" and "remote.*"
   hierarchies, whose variables are predominantly three-level, were
   not completed by hitting a <TAB> in bash and zsh completions.

 * Fetching a 'frotz' branch with "git fetch", while a 'frotz/nitfol'
   remote-tracking branch from an earlier fetch was still there, would
   error out, primarily because the command was not told that it is
   allowed to lose any information on our side.  "git fetch --prune"
   now can be used to remove 'frotz/nitfol' to make room for fetching and
   storing the 'frotz' remote-tracking branch.

 * "diff.orderfile=<file>" configuration variable can be used to
   pretend as if the "-O<file>" option were given from the command
   line of "git diff", etc.

 * The negative pathspec syntax allows "git log -- . ':!dir'" to tell
   us "I am interested in everything but 'dir' directory".

 * "git difftool" shows how many different paths there are in total,
   and how many of them have been shown so far, to indicate progress.

 * "git push origin master" used to push our 'master' branch to update
   the 'master' branch at the 'origin' repository.  This has been
   enhanced to use the same ref mapping "git push origin" would use to
   determine what ref at the 'origin' to be updated with our 'master'.
   For example, with this configuration

   [remote "origin"]
      push = refs/heads/*:refs/review/*

   that would cause "git push origin" to push out our local branches
   to corresponding refs under refs/review/ hierarchy at 'origin',
   "git push origin master" would update 'refs/review/master' over
   there.  Alternatively, if push.default is set to 'upstream' and our
   'master' is set to integrate with 'topic' from the 'origin' branch,
   running "git push origin" while on our 'master' would update their
   'topic' branch, and running "git push origin master" while on any
   of our branches does the same.

 * "gitweb" learned to treat ref hierarchies other than refs/heads as
   if they are additional branch namespaces (e.g. refs/changes/ in
   Gerrit).

 * "git for-each-ref --format=..." learned a few formatting directives;
   e.g. "%(color:red)%(HEAD)%(color:reset) %(refname:short) %(subject)".

 * The command string given to "git submodule foreach" is passed
   directly to the shell, without being eval'ed.  This is a backward
   incompatible change that may break existing users.

 * "git log" and friends learned the "--exclude=<glob>" option, to
   allow people to say "list history of all branches except those that
   match this pattern" with "git log --exclude='*/*' --branches".

 * "git rev-parse --parseopt" learned a new "--stuck-long" option to
   help scripts parse options with an optional parameter.

 * The "--tags" option to "git fetch" no longer tells the command to
   fetch _only_ the tags. It instead fetches tags _in addition to_
   what are fetched by the same command line without the option.

Revision 1.11 / (download) - annotate - [select for diffs], Thu Feb 6 17:34:02 2014 UTC (9 years, 7 months ago) by adam
Branch: MAIN
Changes since 1.10: +4 -5 lines
Diff to previous 1.10 (colored)

Changes 1.8.5.4:

 * "git fetch --depth=0" was a no-op, and was silently ignored.
   Diagnose it as an error.

 * Remote repository URL expressed in scp-style host:path notation are
   parsed more carefully (e.g. "foo/bar:baz" is local, "[::1]:/~user" asks
   to connect to user's home directory on host at address ::1.

 * SSL-related options were not passed correctly to underlying socket
   layer in "git send-email".

 * "git commit -v" appends the patch to the log message before
   editing, and then removes the patch when the editor returned
   control. However, the patch was not stripped correctly when the
   first modified path was a submodule.

 * "git mv A B/", when B does not exist as a directory, should error
   out, but it didn't.

 * When we figure out how many file descriptors to allocate for
   keeping packfiles open, a system with non-working getrlimit() could
   cause us to die(), but because we make this call only to get a
   rough estimate of how many is available and we do not even attempt
   to use up all file descriptors available ourselves, it is nicer to
   fall back to a reasonable low value rather than dying.

 * "git log --decorate" did not handle a tag pointed by another tag
   nicely.

 * "git add -A" (no other arguments) in a totally empty working tree
   used to emit an error.

 * There is no reason to have a hardcoded upper limit of the number of
   parents for an octopus merge, created via the graft mechanism, but
   there was.

 * The implementation of 'git stash $cmd "stash@{...}"' did not quote
   the stash argument properly and left it split at IFS whitespace.

 * The documentation to "git pull" hinted there is an "-m" option
   because it incorrectly shared the documentation with "git merge".

Also contains typofixes, documentation updates and trivial code clean-ups.

Revision 1.10 / (download) - annotate - [select for diffs], Fri Jan 17 09:50:38 2014 UTC (9 years, 8 months ago) by adam
Branch: MAIN
Changes since 1.9: +4 -4 lines
Diff to previous 1.9 (colored)

Changes 1.8.5.3:
* The "--[no-]informative-errors" options to "git daemon" were parsed
  a bit too loosely, allowing any other string after these option
  names.
* A "gc" process running as a different user should be able to stop a
  new "gc" process from starting.
* An earlier "clean-up" introduced an unnecessary memory leak to the
  credential subsystem.
* "git mv A B/", when B does not exist as a directory, should error
  out, but it didn't.
* "git rev-parse <revs> -- <paths>" did not implement the usual
  disambiguation rules the commands in the "git log" family used in
  the same way.
* "git cat-file --batch=", an admittedly useless command, did not
  behave very well.
Also contains typofixes, documentation updates and trivial code clean-ups.

Revision 1.9 / (download) - annotate - [select for diffs], Tue Jan 14 18:49:55 2014 UTC (9 years, 8 months ago) by wiz
Branch: MAIN
Changes since 1.8: +2 -1 lines
Diff to previous 1.8 (colored)

Add a patch from the git mailing list fixing a problem with 'git svn':

git-svn: workaround for a bug in svn serf backend

Subversion serf backend in versions 1.8.5 and below has a bug that the
function creating the descriptor of a file change -- add_file() --
doesn't make a copy of its 3d argument when storing it on the returned
descriptor.  As a result, by the time this field is used (in
transactions of file copying or renaming) it may well be released.

This patch works around this bug, by storing the value to be passed as
the 3d argument to add_file() in a local variable with the same scope as
the file change descriptor, making sure their lifetime is the same.

Cc: Benjamin Pabst <benjamin.pabst85 <at> gmail.com>
Cc: Eric Wong <normalperson <at> yhbt.net>
Signed-off-by: Roman Kagan <rkagan <at> mail.ru>
---
 perl/Git/SVN/Editor.pm | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

http://permalink.gmane.org/gmane.comp.version-control.git/239690

Revision 1.8 / (download) - annotate - [select for diffs], Wed Jan 1 16:05:51 2014 UTC (9 years, 9 months ago) by bsiegert
Branch: MAIN
Changes since 1.7: +3 -2 lines
Diff to previous 1.7 (colored)

Add support for MirBSD.

This needs some more work, there is a segfault when trying to pull
or clone. But at least it builds and basic operations work.

Revision 1.7 / (download) - annotate - [select for diffs], Wed Jan 1 11:14:38 2014 UTC (9 years, 9 months ago) by adam
Branch: MAIN
Changes since 1.6: +4 -4 lines
Diff to previous 1.6 (colored)

Changes 1.8.5.2:
* "git diff -- ':(icase)makefile'" was unnecessarily rejected at the
  command line parser.
* "git cat-file --batch-check=ok" did not check the existence of
  the named object.
* "git am --abort" sometimes complained about not being able to write
  a tree with an 0{40} object in it.
* Two processes creating loose objects at the same time could have
  failed unnecessarily when the name of their new objects started
  with the same byte value, due to a race condition.
Also contains typofixes, documentation updates and trivial code clean-ups

Revision 1.6 / (download) - annotate - [select for diffs], Wed Dec 4 12:51:06 2013 UTC (9 years, 10 months ago) by adam
Branch: MAIN
CVS Tags: pkgsrc-2013Q4-base, pkgsrc-2013Q4
Changes since 1.5: +5 -5 lines
Diff to previous 1.5 (colored)

Changes 1.8.5.1:
* "git submodule init" copied "submodule.$name.update" settings from
   .gitmodules to .git/config without making sure if the suggested
   value was sensible.

Revision 1.5 / (download) - annotate - [select for diffs], Tue Nov 12 11:22:10 2013 UTC (9 years, 10 months ago) by adam
Branch: MAIN
Changes since 1.4: +4 -4 lines
Diff to previous 1.4 (colored)

Changes 1.8.4.3:
* The interaction between use of Perl in our test suite and NO_PERL
  has been clarified a bit.
* A fast-import stream expresses a pathname with funny characters by
  quoting them in C style; remote-hg remote helper (in contrib/)
  forgot to unquote such a path.

* One long-standing flaw in the pack transfer protocol used by "git
  clone" was that there was no way to tell the other end which branch
  "HEAD" points at, and the receiving end needed to guess.  A new
  capability has been defined in the pack protocol to convey this
  information so that cloning from a repository with more than one
  branches pointing at the same commit where the HEAD is at now
  reliably sets the initial branch in the resulting repository.
* We did not handle cases where http transport gets redirected during
  the authorization request (e.g. from http:// to https://).
* "git rev-list --objects ^v1.0^ v1.0" gave v1.0 tag itself in the
  output, but "git rev-list --objects v1.0^..v1.0" did not.
* The fall-back parsing of commit objects with broken author or
  committer lines were less robust than ideal in picking up the
  timestamps.
* Bash prompting code to deal with an SVN remote as an upstream
  were coded in a way not supported by older Bash versions (3.x).
* "git checkout topic", when there is not yet a local "topic" branch
  but there is a unique remote-tracking branch for a remote "topic"
  branch, pretended as if "git checkout -t -b topic remote/$r/topic"
  (for that unique remote $r) was run. This hack however was not
  implemented for "git checkout topic --".
* Coloring around octopus merges in "log --graph" output was screwy.
* We did not generate HTML version of documentation to "git subtree"
  in contrib/.
* The synopsis section of "git unpack-objects" documentation has been
  clarified a bit.
* An ancient How-To on serving Git repositories on an HTTP server
  lacked a warning that it has been mostly superseded with more
  modern way.

Revision 1.4 / (download) - annotate - [select for diffs], Sat Nov 2 07:54:04 2013 UTC (9 years, 11 months ago) by adam
Branch: MAIN
Changes since 1.3: +4 -4 lines
Diff to previous 1.3 (colored)

Changes 1.8.4.2:
* "git clone" gave some progress messages to the standard output, not
  to the standard error, and did not allow suppressing them with the
  "--no-progress" option.
* "format-patch --from=<whom>" forgot to omit unnecessary in-body
  from line, i.e. when <whom> is the same as the real author.
* "git shortlog" used to choke and die when there is a malformed
  commit (e.g. missing authors); it now simply ignore such a commit
  and keeps going.
* "git merge-recursive" did not parse its "--diff-algorithm=" command
  line option correctly.
* "git branch --track" had a minor regression in v1.8.3.2 and later
  that made it impossible to base your local work on anything but a
  local branch of the upstream repository you are tracking from.
* "git ls-files -k" needs to crawl only the part of the working tree
  that may overlap the paths in the index to find killed files, but
  shared code with the logic to find all the untracked files, which
  made it unnecessarily inefficient.
* When there is no sufficient overlap between old and new history
  during a "git fetch" into a shallow repository, objects that the
  sending side knows the receiving end has were unnecessarily sent.
* When running "fetch -q", a long silence while the sender side
  computes the set of objects to send can be mistaken by proxies as
  dropped connection.  The server side has been taught to send a
  small empty messages to keep the connection alive.
* When the webserver responds with "405 Method Not Allowed", "git
  http-backend" should tell the client what methods are allowed with
  the "Allow" header.
* "git cvsserver" computed the permission mode bits incorrectly for
  executable files.
* The implementation of "add -i" has a crippling code to work around
  ActiveState Perl limitation but it by mistake also triggered on Git
  for Windows where MSYS perl is used.
* We made sure that we notice the user-supplied GIT_DIR is actually a
  gitfile, but did not do the same when the default ".git" is a
  gitfile.
* When an object is not found after checking the packfiles and then
  loose object directory, read_sha1_file() re-checks the packfiles to
  prevent racing with a concurrent repacker; teach the same logic to
  has_sha1_file().
* "git commit --author=$name", when $name is not in the canonical
  "A. U. Thor <au.thor@example.xz>" format, looks for a matching name
  from existing history, but did not consult mailmap to grab the
  preferred author name.
* The commit object names in the insn sheet that was prepared at the
  beginning of "rebase -i" session can become ambiguous as the
  rebasing progresses and the repository gains more commits. Make
  sure the internal record is kept with full 40-hex object names.
* "git rebase --preserve-merges" internally used the merge machinery
  and as a side effect, left merge summary message in the log, but
  when rebasing, there should not be a need for merge summary.
* "git rebase -i" forgot that the comment character can be
  configurable while reading its insn sheet.

Revision 1.3 / (download) - annotate - [select for diffs], Fri Oct 18 19:48:48 2013 UTC (9 years, 11 months ago) by adam
Branch: MAIN
Changes since 1.2: +4 -5 lines
Diff to previous 1.2 (colored)

Changes 1.8.4.1:

 * Some old versions of bash do not grok some constructs like
   'printf -v varname' which the prompt and completion code started
   to use recently.  The completion and prompt scripts have been
   adjusted to work better with these old versions of bash.

 * In FreeBSD's and NetBSD's "sh", a return in a dot script in a
   function returns from the function, not only in the dot script,
   breaking "git rebase" on these platforms (regression introduced
   in 1.8.4-rc1).

 * "git rebase -i" and other scripted commands were feeding a
   random, data dependant error message to 'echo' and expecting it
   to come out literally.

 * Setting the "submodule.<name>.path" variable to the empty
   "true" caused the configuration parser to segfault.

 * Output from "git log --full-diff -- <pathspec>" looked strange
   because comparison was done with the previous ancestor that
   touched the specified <pathspec>, causing the patches for paths
   outside the pathspec to show more than the single commit has
   changed.

 * The auto-tag-following code in "git fetch" tries to reuse the
   same transport twice when the serving end does not cooperate and
   does not give tags that point to commits that are asked for as
   part of the primary transfer.  Unfortunately, Git-aware transport
   helper interface is not designed to be used more than once, hence
   this did not work over smart-http transfer.  Fixed.

 * Send a large request to read(2)/write(2) as a smaller but still
   reasonably large chunks, which would improve the latency when the
   operation needs to be killed and incidentally works around broken
   64-bit systems that cannot take a 2GB write or read in one go.

 * A ".mailmap" file that ends with an incomplete line, when read
   from a blob, was not handled properly.

 * The recent "short-cut clone connectivity check" topic broke a
   shallow repository when a fetch operation tries to auto-follow
   tags.

 * When send-email comes up with an error message to die with upon
   failure to start an SSL session, it tried to read the error
   string from a wrong place.

 * A call to xread() was used without a loop to cope with short
   read in the codepath to stream large blobs to a pack.

 * On platforms with fgetc() and friends defined as macros, the
   configuration parser did not compile.

 * New versions of MediaWiki introduced a new API for returning
   more than 500 results in response to a query, which would cause
   the MediaWiki remote helper to go into an infinite loop.

 * Subversion's serf access method (the only one available in
   Subversion 1.8) for http and https URLs in skelta mode tells its
   caller to open multiple files at a time, which made "git svn
   fetch" complain that "Temp file with moniker 'svn_delta' already
   in use" instead of fetching.

Also contains a handful of trivial code clean-ups, documentation
updates, updates to the test suite, etc.

Revision 1.2 / (download) - annotate - [select for diffs], Mon Sep 16 10:48:04 2013 UTC (10 years ago) by prlw1
Branch: MAIN
CVS Tags: pkgsrc-2013Q3-base, pkgsrc-2013Q3
Changes since 1.1: +2 -1 lines
Diff to previous 1.1 (colored)

Apply fix for rebase from Matthieu Moy in
https://github.com/git/git/commit/99855dd
Reported Sergey Svishchev.

Revision 1.1 / (download) - annotate - [select for diffs], Mon Sep 9 13:54:44 2013 UTC (10 years ago) by wiz
Branch: MAIN

Reimport scmgit-base as git-base-1.8.4 in devel/git-base.

Git is a free and open source distributed version control system
designed to handle everything from small to very large projects with
speed and efficiency.

Git is easy to learn and has a tiny footprint with lightning fast
performance. It outclasses SCM tools like Subversion, CVS, Perforce,
and ClearCase with features like cheap local branching, convenient
staging areas, and multiple workflows.

This package contains only the git program (and subcommands).  It does
not contain man pages or the tk-based repository browser.

This form allows you to request diff's between any two revisions of a file. You may select a symbolic revision name using the selection box or you may type in a numeric name using the type-in text box.




CVSweb <webmaster@jp.NetBSD.org>