./devel/git, GIT version control suite meta-package

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

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

This package is a meta package, collecting the components normally
expected to be installed for the GIT distributed version control
suite (the tool itself, the tk-based browser gitk, and the man pages).

Required to run:
[devel/git-base] [devel/git-gitk] [devel/git-docs] [devel/git-contrib]

Required to build:
[pkgtools/cwrappers]

### Version history: (Expand)

• (2017-06-25) Updated to version: git-2.13.2
• (2017-06-05) Updated to version: git-2.13.1
• (2017-05-11) Updated to version: git-2.13.0
• (2017-03-31) Updated to version: git-2.12.2
• (2017-02-27) Updated to version: git-2.12.0
• (2017-02-04) Updated to version: git-2.11.1

### CVS history: (Expand)

 2017-06-25 05:15:11 by Makoto Fujiwara | Files touched by this commit (3) | Log message: 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 " 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  2017-06-05 12:11:39 by Adam Ciarcinski | Files touched by this commit (4) | Log message: 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..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.  2017-05-10 20:09:25 by Adam Ciarcinski | Files touched by this commit (4) | Log message: 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 HEAD \ ..." 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 part in "http.." \ 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 " while OpenSSH wants "-p " 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...  2017-03-30 18:23:34 by Adam Ciarcinski | Files touched by this commit (2) | Log message: 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..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 ... [[--] ...]" 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.  2017-02-25 09:32:57 by Adam Ciarcinski | Files touched by this commit (6) | 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 HEAD \ ..." 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 --referencethere --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=" 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.  2017-02-04 12:14:47 by Adam Ciarcinski | Files touched by this commit (3) | Log message: 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..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" \ 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 @{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.  2016-12-05 15:07:32 by Adam Ciarcinski | Files touched by this commit (3) | 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 HEAD \ ..." 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 " 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" to \ control the order of paths to present to the end user. * "git diff/log --ws-error-highlight=" 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.  2016-10-30 12:43:03 by Adam Ciarcinski | Files touched by this commit (3) | Log message: 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 HEAD ...", 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 " 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..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..url next to each other as if both belong to .git/config. This has been fixed. * Recent git allows submodule..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.