./devel/git-gitk, GIT Tree History Storage Tool (gitk)

[ CVSweb ] [ Homepage ] [ RSS ] [ Required by ] [ Add to tracker ]


Branch: CURRENT, Version: 2.24.0, Package name: git-gitk-2.24.0, Maintainer: pkgsrc-users

gitk is a Tk-based graphical tool for viewing git repository history,
including a commit diff viewer.


Required to run:
[x11/tk] [devel/git-base]

Required to build:
[pkgtools/cwrappers]

Master sites:

SHA1: 851537fc03f5a99419ef20e9b836de965c7928bd
RMD160: 28b19ca928fcf8182f27031b3e2ec3e08a2b0584
Filesize: 5630.914 KB

Version history: (Expand)


CVS history: (Expand)


   2019-11-08 13:24:31 by Adam Ciarcinski | Files touched by this commit (14) | Package updated
Log message:
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.
   2019-11-03 11:39:32 by Roland Illig | Files touched by this commit (274)
Log message:
devel: align variable assignments

pkglint -Wall -F --only aligned --only indent -r

No manual corrections.
   2019-09-01 01:51:52 by Maya Rashish | Files touched by this commit (1)
Log message:
git-gitk: add missing PLIST entries for Darwin

from Vincent Povirk in PR pkg/54512
   2019-08-20 15:00:02 by Adam Ciarcinski | Files touched by this commit (9) | Package updated
Log message:
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).
   2018-04-11 21:39:35 by Adam Ciarcinski | Files touched by this commit (12) | Package updated
Log message:
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.
   2017-02-25 09:32:57 by Adam Ciarcinski | Files touched by this commit (6) | Package updated
Log message:
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.
   2016-12-05 15:07:32 by Adam Ciarcinski | Files touched by this commit (3) | Package updated
Log message:
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.
   2015-05-18 14:51:37 by Adam Ciarcinski | Files touched by this commit (4) | Package updated
Log message:
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.