Commit graph

76 commits

Author SHA1 Message Date
adam
3b88bd43a5 Revbump post boost update 2016-10-07 18:25:29 +00:00
adam
7d36c6e2e5 ixes since v2.10
-----------------

 * Clarify various ways to specify the "revision ranges" in the
   documentation.

 * "diff-highlight" script (in contrib/) learned to work better with
   "git log -p --graph" output.

 * The test framework left the number of tests and success/failure
   count in the t/test-results directory, keyed by the name of the
   test script plus the process ID.  The latter however turned out not
   to serve any useful purpose.  The process ID part of the filename
   has been removed.

 * Having a submodule whose ".git" repository is somehow corrupt
   caused a few commands that recurse into submodules loop forever.

 * "git symbolic-ref -d HEAD" happily removes the symbolic ref, but
   the resulting repository becomes an invalid one.  Teach the command
   to forbid removal of HEAD.

 * A test spawned a short-lived background process, which sometimes
   prevented the test directory from getting removed at the end of the
   script on some platforms.

 * Update a few tests that used to use GIT_CURL_VERBOSE to use the
   newer GIT_TRACE_CURL.

 * Update Japanese translation for "git-gui".

 * "git fetch http::/site/path" did not die correctly and segfaulted
   instead.

 * "git commit-tree" stopped reading commit.gpgsign configuration
   variable that was meant for Porcelain "git commit" in Git 2.9; we
   forgot to update "git gui" to look at the configuration to match
   this change.

 * "git log --cherry-pick" used to include merge commits as candidates
   to be matched up with other commits, resulting a lot of wasted time.
   The patch-id generation logic has been updated to ignore merges to
   avoid the wastage.

 * The http transport (with curl-multi option, which is the default
   these days) failed to remove curl-easy handle from a curlm session,
   which led to unnecessary API failures.

 * "git diff -W" output needs to extend the context backward to
   include the header line of the current function and also forward to
   include the body of the entire current function up to the header
   line of the next one.  This process may have to merge to adjacent
   hunks, but the code forgot to do so in some cases.

 * Performance tests done via "t/perf" did not use the same set of
   build configuration if the user relied on autoconf generated
   configuration.

 * "git format-patch --base=..." feature that was recently added
   showed the base commit information after "-- " e-mail signature
   line, which turned out to be inconvenient.  The base information
   has been moved above the signature line.

 * Even when "git pull --rebase=preserve" (and the underlying "git
   rebase --preserve") can complete without creating any new commit
   (i.e. fast-forwards), it still insisted on having a usable ident
   information (read: user.email is set correctly), which was less
   than nice.  As the underlying commands used inside "git rebase"
   would fail with a more meaningful error message and advice text
   when the bogus ident matters, this extra check was removed.

 * "git gc --aggressive" used to limit the delta-chain length to 250,
   which is way too deep for gaining additional space savings and is
   detrimental for runtime performance.  The limit has been reduced to
   50.

 * Documentation for individual configuration variables to control use
   of color (like `color.grep`) said that their default value is
   'false', instead of saying their default is taken from `color.ui`.
   When we updated the default value for color.ui from 'false' to
   'auto' quite a while ago, all of them broke.  This has been
   corrected.

 * A shell script example in check-ref-format documentation has been
   fixed.

 * "git checkout <word>" does not follow the usual disambiguation
   rules when the <word> can be both a rev and a path, to allow
   checking out a branch 'foo' in a project that happens to have a
   file 'foo' in the working tree without having to disambiguate.
   This was poorly documented and the check was incorrect when the
   command was run from a subdirectory.

 * Some codepaths in "git diff" used regexec(3) on a buffer that was
   mmap(2)ed, which may not have a terminating NUL, leading to a read
   beyond the end of the mapped region.  This was fixed by introducing
   a regexec_buf() helper that takes a <ptr,len> pair with REG_STARTEND
   extension.

 * The procedure to build Git on Mac OS X for Travis CI hardcoded the
   internal directory structure we assumed HomeBrew uses, which was a
   no-no.  The procedure has been updated to ask HomeBrew things we
   need to know to fix this.

 * When "git rebase -i" is given a broken instruction, it told the
   user to fix it with "--edit-todo", but didn't say what the step
   after that was (i.e. "--continue").

 * "git add --chmod=+x" added recently lacked documentation, which has
   been corrected.

 * "git add --chmod=+x <pathspec>" added recently only toggled the
   executable bit for paths that are either new or modified. This has
   been corrected to flip the executable bit for all paths that match
   the given pathspec.

 * "git pack-objects --include-tag" was taught that when we know that
   we are sending an object C, we want a tag B that directly points at
   C but also a tag A that points at the tag B.  We used to miss the
   intermediate tag B in some cases.

 * Documentation around tools to import from CVS was fairly outdated.

 * In the codepath that comes up with the hostname to be used in an
   e-mail when the user didn't tell us, we looked at ai_canonname
   field in struct addrinfo without making sure it is not NULL first.

Also contains minor documentation updates and code clean-ups.
2016-10-06 10:45:04 +00:00
adam
a7a5e7cb6c Changes 2.10.0:
UI, Workflows & Features

 * "git pull --rebase --verify-signature" learned to warn the user
   that "--verify-signature" is a no-op when rebasing.

 * An upstream project can make a recommendation to shallowly clone
   some submodules in the .gitmodules file it ships.

 * "git worktree add" learned that '-' can be used as a short-hand for
   "@{-1}", the previous branch.

 * Update the funcname definition to support css files.

 * The completion script (in contrib/) learned to complete "git
   status" options.

 * Messages that are generated by auto gc during "git push" on the
   receiving end are now passed back to the sending end in such a way
   that they are shown with "remote: " prefix to avoid confusing the
   users.

 * "git add -i/-p" learned to honor diff.compactionHeuristic
   experimental knob, so that the user can work on the same hunk split
   as "git diff" output.

 * "upload-pack" allows a custom "git pack-objects" replacement when
   responding to "fetch/clone" via the uploadpack.packObjectsHook.
   (merge b738396 jk/upload-pack-hook later to maint).

 * Teach format-patch and mailsplit (hence "am") how a line that
   happens to begin with "From " in the e-mail message is quoted with
   ">", so that these lines can be restored to their original shape.
   (merge d9925d1 ew/mboxrd-format-am later to maint).

 * "git repack" learned the "--keep-unreachable" option, which sends
   loose unreachable objects to a pack instead of leaving them loose.
   This helps heuristics based on the number of loose objects
   (e.g. "gc --auto").
   (merge e26a8c4 jk/repack-keep-unreachable later to maint).

 * "log --graph --format=" learned that "%>|(N)" specifies the width
   relative to the terminal's left edge, not relative to the area to
   draw text that is to the right of the ancestry-graph section.  It
   also now accepts negative N that means the column limit is relative
   to the right border.

 * A careless invocation of "git send-email directory/" after editing
   0001-change.patch with an editor often ends up sending both
   0001-change.patch and its backup file, 0001-change.patch~, causing
   embarrassment and a minor confusion.  Detect such an input and
   offer to skip the backup files when sending the patches out.
   (merge 531220b jc/send-email-skip-backup later to maint).

 * "git submodule update" that drives many "git clone" could
   eventually hit flaky servers/network conditions on one of the
   submodules; the command learned to retry the attempt.

 * The output coloring scheme learned two new attributes, italic and
   strike, in addition to existing bold, reverse, etc.

 * "git log" learns log.showSignature configuration variable, and a
   command line option "--no-show-signature" to countermand it.
   (merge fce04c3 mj/log-show-signature-conf later to maint).

 * More markings of messages for i18n, with updates to various tests
   to pass GETTEXT_POISON tests.

 * "git archive" learned to handle files that are larger than 8GB and
   commits far in the future than expressible by the traditional US-TAR
   format.
   (merge 560b0e8 jk/big-and-future-archive-tar later to maint).


 * A new configuration variable core.sshCommand has been added to
   specify what value for GIT_SSH_COMMAND to use per repository.

 * "git worktree prune" protected worktrees that are marked as
   "locked" by creating a file in a known location.  "git worktree"
   command learned a dedicated command pair to create and remove such
   a file, so that the users do not have to do this with editor.

 * A handful of "git svn" updates.

 * "git push" learned to accept and pass extra options to the
   receiving end so that hooks can read and react to them.

 * "git status" learned to suggest "merge --abort" during a conflicted
   merge, just like it already suggests "rebase --abort" during a
   conflicted rebase.

 * "git jump" script (in contrib/) has been updated a bit.
   (merge a91e692 jk/git-jump later to maint).

 * "git push" and "git clone" learned to give better progress meters
   to the end user who is waiting on the terminal.

 * An entry "git log --decorate" for the tip of the current branch is
   shown as "HEAD -> name" (where "name" is the name of the branch);
   the arrow is now painted in the same color as "HEAD", not in the
   color for commits.

 * "git format-patch" learned format.from configuration variable to
   specify the default settings for its "--from" option.

 * "git am -3" calls "git merge-recursive" when it needs to fall back
   to a three-way merge; this call has been turned into an internal
   subroutine call instead of spawning a separate subprocess.

 * The command line completion scripts (in contrib/) now knows about
   "git branch --delete/--move [--remote]".
   (merge 2703c22 vs/completion-branch-fully-spelled-d-m-r later to maint).

 * "git rev-parse --git-path hooks/<hook>" learned to take
   core.hooksPath configuration variable (introduced during 2.9 cycle)
   into account.
   (merge 9445b49 ab/hooks later to maint).

 * "git log --show-signature" and other commands that display the
   verification status of PGP signature now shows the longer key-id,
   as 32-bit key-id is so last century.
2016-09-07 08:56:32 +00:00
wiz
5e6a40336e Update git* to 2.9.3.
Fixes since v2.9.2
------------------

* A helper function that takes the contents of a commit object and
finds its subject line did not ignore leading blank lines, as is
commonly done by other codepaths. Make it ignore leading blank
lines to match.

* Git does not know what the contents in the index should be for a
path added with "git add -N" yet, so "git grep --cached" should not
show hits (or show lack of hits, with -L) in such a path, but that
logic does not apply to "git grep", i.e. searching in the working
tree files. But we did so by mistake, which has been corrected.

* "git rebase -i --autostash" did not restore the auto-stashed change
when the operation was aborted.

* "git commit --amend --allow-empty-message -S" for a commit without
any message body could have misidentified where the header of the
commit object ends.

* More mark-up updates to typeset strings that are expected to
literally typed by the end user in fixed-width font.

* For a long time, we carried an in-code comment that said our
colored output would work only when we use fprintf/fputs on
Windows, which no longer is the case for the past few years.

* "gc.autoPackLimit" when set to 1 should not trigger a repacking
when there is only one pack, but the code counted poorly and did
so.

* One part of "git am" had an oddball helper function that called
stuff from outside "his" as opposed to calling what we have "ours",
which was not gender-neutral and also inconsistent with the rest of
the system where outside stuff is usuall called "theirs" in
contrast to "ours".

* The test framework learned a new helper test_match_signal to
check an exit code from getting killed by an expected signal.

* "git blame -M" missed a single line that was moved within the file.

* Fix recently introduced codepaths that are involved in parallel
submodule operations, which gave up on reading too early, and
could have wasted CPU while attempting to write under a corner
case condition.

* "git grep -i" has been taught to fold case in non-ascii locales
correctly.

* A test that unconditionally used "mktemp" learned that the command
is not necessarily available everywhere.

* "git blame file" allowed the lineage of lines in the uncommitted,
unadded contents of "file" to be inspected, but it refused when
"file" did not appear in the current commit. When "file" was
created by renaming an existing file (but the change has not been
committed), this restriction was unnecessarily tight.

* "git add -N dir/file && git write-tree" produced an incorrect tree
when there are other paths in the same directory that sorts after
"file".

* "git fetch http://user:pass [at] hos/repo..." scrubbed the userinfo
part, but "git push" didn't.

* An age old bug that caused "git diff --ignore-space-at-eol"
misbehave has been fixed.

* "git notes merge" had a code to see if a path exists (and fails if
it does) and then open the path for writing (when it doesn't).
Replace it with open with O_EXCL.

* "git pack-objects" and "git index-pack" mostly operate with off_t
when talking about the offset of objects in a packfile, but there
were a handful of places that used "unsigned long" to hold that
value, leading to an unintended truncation.

* Recent update to "git daemon" tries to enable the socket-level
KEEPALIVE, but when it is spawned via inetd, the standard input
file descriptor may not necessarily be connected to a socket.
Suppress an ENOTSOCK error from setsockopt().

* Recent FreeBSD stopped making perl available at /usr/bin/perl;
switch the default the built-in path to /usr/local/bin/perl on not
too ancient FreeBSD releases.

* "git status" learned to suggest "merge --abort" during a conflicted
merge, just like it already suggests "rebase --abort" during a
conflicted rebase.

* The .c/.h sources are marked as such in our .gitattributes file so
that "git diff -W" and friends would work better.

* Existing autoconf generated test for the need to link with pthread
library did not check all the functions from pthread libraries;
recent FreeBSD has some functions in libc but not others, and we
mistakenly thought linking with libc is enough when it is not.

* Allow http daemon tests in Travis CI tests.

* Users of the parse_options_concat() API function need to allocate
extra slots in advance and fill them with OPT_END() when they want
to decide the set of supported options dynamically, which makes the
code error-prone and hard to read. This has been corrected by tweaking
the API to allocate and return a new copy of "struct option" array.

* The use of strbuf in "git rm" to build filename to remove was a bit
suboptimal, which has been fixed.

* "git commit --help" said "--no-verify" is only about skipping the
pre-commit hook, and failed to say that it also skipped the
commit-msg hook.

* "git merge" in Git v2.9 was taught to forbid merging an unrelated
lines of history by default, but that is exactly the kind of thing
the "--rejoin" mode of "git subtree" (in contrib/) wants to do.
"git subtree" has been taught to use the "--allow-unrelated-histories"
option to override the default.

* The build procedure for "git persistent-https" helper (in contrib/)
has been updated so that it can be built with more recent versions
of Go.

* There is an optimization used in "git diff $treeA $treeB" to borrow
an already checked-out copy in the working tree when it is known to
be the same as the blob being compared, expecting that open/mmap of
such a file is faster than reading it from the object store, which
involves inflating and applying delta. This however kicked in even
when the checked-out copy needs to go through the convert-to-git
conversion (including the clean filter), which defeats the whole
point of the optimization. The optimization has been disabled when
the conversion is necessary.

* "git -c grep.patternType=extended log --basic-regexp" misbehaved
because the internal API to access the grep machinery was not
designed well.

* Windows port was failing some tests in t4130, due to the lack of
inum in the returned values by its lstat(2) emulation.

* The characters in the label shown for tags/refs for commits in
"gitweb" output are now properly escaped for proper HTML output.

* FreeBSD can lie when asked mtime of a directory, which made the
untracked cache code to fall back to a slow-path, which in turn
caused tests in t7063 to fail because it wanted to verify the
behaviour of the fast-path.

* Squelch compiler warnings for netmalloc (in compat/) library.

* The API documentation for hashmap was unclear if hashmap_entry
can be safely discarded without any other consideration. State
that it is safe to do so.

* Not-so-recent rewrite of "git am" that started making internal
calls into the commit machinery had an unintended regression, in
that no matter how many seconds it took to apply many patches, the
resulting committer timestamp for the resulting commits were all
the same.

* "git difftool <paths>..." started in a subdirectory failed to
interpret the paths relative to that directory, which has been
fixed.

Also contains minor documentation updates and code clean-ups.
2016-08-19 16:11:14 +00:00
wiz
e5fe132d52 Update git to 2.9.2.
Fixes since v2.9.1
------------------

 * A fix merged to v2.9.1 had a few tests that are not meant to be
   run on platforms without 64-bit long, which caused unnecessary
   test failures on them because we didn't detect the platform and
   skip them.  These tests are now skipped on platforms that they
   are not applicable to.

Fixes since v2.9
----------------

 * When "git daemon" is run without --[init-]timeout specified, a
   connection from a client that silently goes offline can hang around
   for a long time, wasting resources.  The socket-level KEEPALIVE has
   been enabled to allow the OS to notice such failed connections.

 * The commands in `git log` family take %C(auto) in a custom format
   string.  This unconditionally turned the color on, ignoring
   --no-color or with --color=auto when the output is not connected to
   a tty; this was corrected to make the format truly behave as
   "auto".

 * "git rev-list --count" whose walk-length is limited with "-n"
   option did not work well with the counting optimized to look at the
   bitmap index.

 * "git show -W" (extend hunks to cover the entire function, delimited
   by lines that match the "funcname" pattern) used to show the entire
   file when a change added an entire function at the end of the file,
   which has been fixed.

 * The documentation set has been updated so that literal commands,
   configuration variables and environment variables are consistently
   typeset in fixed-width font and bold in manpages.

 * "git svn propset" subcommand that was added in 2.3 days is
   documented now.

 * The documentation tries to consistently spell "GPG"; when
   referring to the specific program name, "gpg" is used.

 * "git reflog" stopped upon seeing an entry that denotes a branch
   creation event (aka "unborn"), which made it appear as if the
   reflog was truncated.

 * The git-prompt scriptlet (in contrib/) was not friendly with those
   who uses "set -u", which has been fixed.

 * A codepath that used alloca(3) to place an unbounded amount of data
   on the stack has been updated to avoid doing so.

 * "git update-index --add --chmod=+x file" may be usable as an escape
   hatch, but not a friendly thing to force for people who do need to
   use it regularly.  "git add --chmod=+x file" can be used instead.

 * Build improvements for gnome-keyring (in contrib/)

 * "git status" used to say "working directory" when it meant "working
   tree".

 * Comments about misbehaving FreeBSD shells have been clarified with
   the version number (9.x and before are broken, newer ones are OK).

 * "git cherry-pick A" worked on an unborn branch, but "git
   cherry-pick A..B" didn't.

 * "git add -i/-p" learned to honor diff.compactionHeuristic
   experimental knob, so that the user can work on the same hunk split
   as "git diff" output.

 * "log --graph --format=" learned that "%>|(N)" specifies the width
   relative to the terminal's left edge, not relative to the area to
   draw text that is to the right of the ancestry-graph section.  It
   also now accepts negative N that means the column limit is relative
   to the right border.

 * The ownership rule for the piece of memory that hold references to
   be fetched in "git fetch" was screwy, which has been cleaned up.

 * "git bisect" makes an internal call to "git diff-tree" when
   bisection finds the culprit, but this call did not initialize the
   data structure to pass to the diff-tree API correctly.

 * Formats of the various data (and how to validate them) where we use
   GPG signature have been documented.

 * Fix an unintended regression in v2.9 that breaks "clone --depth"
   that recurses down to submodules by forcing the submodules to also
   be cloned shallowly, which many server instances that host upstream
   of the submodules are not prepared for.

 * Fix unnecessarily waste in the idiomatic use of ': ${VAR=default}'
   to set the default value, without enclosing it in double quotes.

 * Some platform-specific code had non-ANSI strict declarations of C
   functions that do not take any parameters, which has been
   corrected.

 * The internal code used to show local timezone offset is not
   prepared to handle timestamps beyond year 2100, and gave a
   bogus offset value to the caller.  Use a more benign looking
   +0000 instead and let "git log" going in such a case, instead
   of aborting.

 * One among four invocations of readlink(1) in our test suite has
   been rewritten so that the test can run on systems without the
   command (others are in valgrind test framework and t9802).

 * t/perf needs /usr/bin/time with GNU extension; the invocation of it
   is updated to "gtime" on Darwin.

 * A bug, which caused "git p4" while running under verbose mode to
   report paths that are omitted due to branch prefix incorrectly, has
   been fixed; the command said "Ignoring file outside of prefix" for
   paths that are _inside_.

 * The top level documentation "git help git" still pointed at the
   documentation set hosted at now-defunct google-code repository.
   Update it to point to https://git.github.io/htmldocs/git.html
   instead.

Also contains minor documentation updates and code clean-ups.
2016-07-21 13:12:25 +00:00
wiz
2b0a009d0e Bump PKGREVISION for perl-5.24.0 for everything mentioning perl. 2016-07-09 06:37:46 +00:00
adam
ee3b82188d Git 2.9 Release Notes
=====================

Backward compatibility notes
----------------------------

The end-user facing Porcelain level commands in the "git diff" and
"git log" family by default enable the rename detection; you can still
use "diff.renames" configuration variable to disable this.

Merging two branches that have no common ancestor with "git merge" is
by default forbidden now to prevent creating such an unusual merge by
mistake.

The output formats of "git log" that indents the commit log message by
4 spaces now expands HT in the log message by default.  You can use
the "--no-expand-tabs" option to disable this.

"git commit-tree" plumbing command required the user to always sign
its result when the user sets the commit.gpgsign configuration
variable, which was an ancient mistake, which this release corrects.
A script that drives commit-tree, if it relies on this mistake, now
needs to read commit.gpgsign and pass the -S option as necessary.


Updates since v2.8
------------------

UI, Workflows & Features

 * Comes with git-multimail 1.3.1 (in contrib/).

 * The end-user facing commands like "git diff" and "git log"
   now enable the rename detection by default.

 * The credential.helper configuration variable is cumulative and
   there is no good way to override it from the command line.  As
   a special case, giving an empty string as its value now serves
   as the signal to clear the values specified in various files.

 * A new "interactive.diffFilter" configuration can be used to
   customize the diff shown in "git add -i" sessions.

 * "git p4" now allows P4 author names to be mapped to Git author
   names.

 * "git rebase -x" can be used without passing "-i" option.

 * "git -c credential.<var>=<value> submodule" can now be used to
   propagate configuration variables related to credential helper
   down to the submodules.

 * "git tag" can create an annotated tag without explicitly given an
   "-a" (or "-s") option (i.e. when a tag message is given).  A new
   configuration variable, tag.forceSignAnnotated, can be used to tell
   the command to create signed tag in such a situation.

 * "git merge" used to allow merging two branches that have no common
   base by default, which led to a brand new history of an existing
   project created and then get pulled by an unsuspecting maintainer,
   which allowed an unnecessary parallel history merged into the
   existing project.  The command has been taught not to allow this by
   default, with an escape hatch "--allow-unrelated-histories" option
   to be used in a rare event that merges histories of two projects
   that started their lives independently.

 * "git pull" has been taught to pass the "--allow-unrelated-histories"
   option to underlying "git merge".

 * "git apply -v" learned to report paths in the patch that were
   skipped via --include/--exclude mechanism or being outside the
   current working directory.

 * Shell completion (in contrib/) updates.

 * The commit object name reported when "rebase -i" stops has been
   shortened.

 * "git worktree add" can be given "--no-checkout" option to only
   create an empty worktree without checking out the files.

 * "git mergetools" learned to drive ExamDiff.

 * "git pull --rebase" learned "--[no-]autostash" option, so that
   the rebase.autostash configuration variable set to true can be
   overridden from the command line.

 * When "git log" shows the log message indented by 4-spaces, the
   remainder of a line after a HT does not align in the way the author
   originally intended.  The command now expands tabs by default to help
   such a case, and allows the users to override it with a new option,
   "--no-expand-tabs".

 * "git send-email" now uses a more readable timestamps when
   formulating a message ID.

 * "git rerere" can encounter two or more files with the same conflict
   signature that have to be resolved in different ways, but there was
   no way to record these separate resolutions.

 * "git p4" learned to record P4 jobs in Git commit that imports from
   the history in Perforce.

 * "git describe --contains" often made a hard-to-justify choice of
   tag to name a given commit, because it tried to come up
   with a name with smallest number of hops from a tag, causing an old
   commit whose close descendant that is recently tagged were not
   described with respect to an old tag but with a newer tag.  It did
   not help that its computation of "hop" count was further tweaked to
   penalize being on a side branch of a merge.  The logic has been
   updated to favor using the tag with the oldest tagger date, which
   is a lot easier to explain to the end users: "We describe a commit
   in terms of the (chronologically) oldest tag that contains the
   commit."

 * "git clone" learned the "--shallow-submodules" option.

 * HTTP transport clients learned to throw extra HTTP headers at the
   server, specified via http.extraHeader configuration variable.

 * The "--compaction-heuristic" option to "git diff" family of
   commands enables a heuristic to make the patch output more readable
   by using a blank line as a strong hint that the contents before and
   after it belong to logically separate units.  It is still
   experimental.

 * A new configuration variable core.hooksPath allows customizing
   where the hook directory is.

 * An earlier addition of "sanitize_submodule_env" with 14111fc4 (git:
   submodule honor -c credential.* from command line, 2016-02-29)
   turned out to be a convoluted no-op; implement what it wanted to do
   correctly, and stop filtering settings given via "git -c var=val".

 * "git commit --dry-run" reported "No, no, you cannot commit." in one
   case where "git commit" would have allowed you to commit, and this
   improves it a little bit ("git commit --dry-run --short" still does
   not give you the correct answer, for example).  This is a stop-gap
   measure in that "commit --short --dry-run" still gives an incorrect
   result.

 * The experimental "multiple worktree" feature gains more safety to
   forbid operations on a branch that is checked out or being actively
   worked on elsewhere, by noticing that e.g. it is being rebased.

 * "git format-patch" learned a new "--base" option to record what
   (public, well-known) commit the original series was built on in
   its output.

 * "git commit" learned to pay attention to the "commit.verbose"
   configuration variable and act as if the "--verbose" option
   was given from the command line.

 * Updated documentation gives hints to GMail users with two-factor
   auth enabled that they need app-specific-password when using
   "git send-email".

 * The manpage output of our documentation did not render well in
   terminal; typeset literals in bold by default to make them stand
   out more.

 * The mark-up in the top-level README.md file has been updated to
   typeset CLI command names differently from the body text.


Performance, Internal Implementation, Development Support etc.

 * The embedded args argv-array in the child process is used to build
   the command line to run pack-objects instead of using a separate
   array of strings.

 * A test for tags has been restructured so that more parts of it can
   easily be run on a platform without a working GnuPG.

 * The startup_info data, which records if we are working inside a
   repository (among other things), are now uniformly available to Git
   subcommand implementations, and Git avoids attempting to touch
   references when we are not in a repository.

 * The command line argument parser for "receive-pack" has been
   rewritten to use parse-options.

 * A major part of "git submodule update" has been ported to C to take
   advantage of the recently added framework to run download tasks in
   parallel.  Other updates to "git submodule" that move pieces of
   logic to C continues.

 * Rename bunch of tests on "git clone" for better organization.

 * The tests that involve running httpd leaked the system-wide
   configuration in /etc/gitconfig to the tested environment.

 * Build updates for MSVC.

 * The repository set-up sequence has been streamlined (the biggest
   change is that there is no longer git_config_early()), so that we
   do not attempt to look into refs/* when we know we do not have a
   Git repository.

 * Code restructuring around the "refs" API to prepare for pluggable
   refs backends.

 * Sources to many test helper binaries and the generated helpers
   have been moved to t/helper/ subdirectory to reduce clutter at the
   top level of the tree.

 * Unify internal logic between "git tag -v" and "git verify-tag"
   commands by making one directly call into the other.

 * "merge-recursive" strategy incorrectly checked if a path that is
   involved in its internal merge exists in the working tree.

 * The test scripts for "git p4" (but not "git p4" implementation
   itself) has been updated so that they would work even on a system
   where the installed version of Python is python 3.

 * As nobody maintains our in-tree git.spec.in and distros use their
   own spec file, we stopped pretending that we support "make rpm".

 * Move from "unsigned char[20]" to "struct object_id" continues.

 * The code for warning_errno/die_errno has been refactored and a new
   error_errno() reporting helper is introduced.
   (merge 1da045f nd/error-errno later to maint).

 * Running tests with '-x' option to trace the individual command
   executions is a useful way to debug test scripts, but some tests
   that capture the standard error stream and check what the command
   said can be broken with the trace output mixed in.  When running
   our tests under "bash", however, we can redirect the trace output
   to another file descriptor to keep the standard error of programs
   being tested intact.

 * t0040 had too many unnecessary repetitions in its test data.  Teach
   test-parse-options program so that a caller can tell what it
   expects in its output, so that these repetitions can be cleaned up.

 * Add perf test for "rebase -i".

 * Common mistakes when writing gitlink: in our documentation are
   found by "make check-docs".

 * t9xxx series has been updated primarily for readability, while
   fixing small bugs in it.  A few scripted Porcelain commands have
   also been updated to fix possible bugs around their use of
   "test -z" and "test -n".

 * CI test was taught to run git-svn tests.

 * "git cat-file --batch-all" has been sped up, by taking advantage
   of the fact that it does not have to read a list of objects, in two
   ways.

 * test updates to make it more readable and maintainable.
   (merge e6273f4 es/t1500-modernize later to maint).

 * "make DEVELOPER=1" worked as expected; setting DEVELOPER=1 in
   config.mak didn't.
   (merge 51dd3e8 mm/makefile-developer-can-be-in-config-mak later to maint).

 * The way how "submodule--helper list" signals unmatch error to its
   callers has been updated.

 * A bash-ism "local" has been removed from "git submodule" scripted
   Porcelain.

Also contains various documentation updates and code clean-ups.
2016-06-14 16:50:03 +00:00
wiz
c55dbe1024 Reset PKGREVISION after update. 2016-06-12 20:07:16 +00:00
wiz
97247526fe Update git to 2.8.4:
Git v2.8.4 Release Notes
========================

Fixes since v2.8.3
------------------

 * Documentation for "git merge --verify-signatures" has been updated
   to clarify that the signature of only the commit at the tip is
   verified.  Also the phrasing used for signature and key validity is
   adjusted to align with that used by OpenPGP.

 * On Windows, .git and optionally any files whose name starts with a
   dot are now marked as hidden, with a core.hideDotFiles knob to
   customize this behaviour.

 * Portability enhancement for "rebase -i" to help platforms whose
   shell does not like "for i in <empty>" (which is not POSIX-kosher).

 * "git fsck" learned to catch NUL byte in a commit object as
   potential error and warn.

 * CI test was taught to build documentation pages.

 * Many 'linkgit:<git documentation page>' references were broken,
   which are all fixed with this.

 * "git describe --contains" often made a hard-to-justify choice of
   tag to give name to a given commit, because it tried to come up
   with a name with smallest number of hops from a tag, causing an old
   commit whose close descendant that is recently tagged were not
   described with respect to an old tag but with a newer tag.  It did
   not help that its computation of "hop" count was further tweaked to
   penalize being on a side branch of a merge.  The logic has been
   updated to favor using the tag with the oldest tagger date, which
   is a lot easier to explain to the end users: "We describe a commit
   in terms of the (chronologically) oldest tag that contains the
   commit."

 * Running tests with '-x' option to trace the individual command
   executions is a useful way to debug test scripts, but some tests
   that capture the standard error stream and check what the command
   said can be broken with the trace output mixed in.  When running
   our tests under "bash", however, we can redirect the trace output
   to another file descriptor to keep the standard error of programs
   being tested intact.

 * "http.cookieFile" configuration variable clearly wants a pathname,
   but we forgot to treat it as such by e.g. applying tilde expansion.

 * When de-initialising all submodules, "git submodule deinit" gave a
   faulty recommendation to use "git submodule deinit .", which would
   result in a strange error message in a pathological corner case.
   This has been corrected to suggest "submodule deinit --all" instead.

 * Many commands normalize command line arguments from NFD to NFC
   variant of UTF-8 on OSX, but commands in the "diff" family did
   not, causing "git diff $path" to complain that no such path is
   known to Git.  They have been taught to do the normalization.

 * A couple of bugs around core.autocrlf have been fixed.

 * "git difftool" learned to handle unmerged paths correctly in
   dir-diff mode.

 * The "are we talking with TTY, doing an interactive session?"
   detection has been updated to work better for "Git for Windows".


Also contains other minor documentation updates and code clean-ups.
2016-06-12 13:27:03 +00:00
khorben
21cc674559 Move dependency on devel/cvsps to the new git-cvs package
As suggested by wiz@

Bumps PKGREVISION
2016-05-26 15:41:06 +00:00
khorben
e3c147d0f0 Bump PKGREVISION
As required for the new dependency on cvsps.
2016-05-26 14:08:22 +00:00
khorben
c529ed476a Register dependency on devel/cvsps for git-cvsimport(1) 2016-05-26 14:04:04 +00:00
wiz
5b8495d435 Update git to 2.8.3.
Git v2.8.3 Release Notes
========================

Fixes since v2.8.2
------------------

 * "git send-email" now uses a more readable timestamps when
   formulating a message ID.

 * The repository set-up sequence has been streamlined (the biggest
   change is that there is no longer git_config_early()), so that we
   do not attempt to look into refs/* when we know we do not have a
   Git repository.

 * When "git worktree" feature is in use, "git branch -d" allowed
   deletion of a branch that is checked out in another worktree

 * When "git worktree" feature is in use, "git branch -m" renamed a
   branch that is checked out in another worktree without adjusting
   the HEAD symbolic ref for the worktree.

 * "git format-patch --help" showed `-s` and `--no-patch` as if these
   are valid options to the command.  We already hide `--patch` option
   from the documentation, because format-patch is about showing the
   diff, and the documentation now hides these options as well.

 * A change back in version 2.7 to "git branch" broke display of a
   symbolic ref in a non-standard place in the refs/ hierarchy (we
   expect symbolic refs to appear in refs/remotes/*/HEAD to point at
   the primary branch the remote has, and as .git/HEAD to point at the
   branch we locally checked out).

 * A partial rewrite of "git submodule" in the 2.7 timeframe changed
   the way the gitdir: pointer in the submodules point at the real
   repository location to use absolute paths by accident.  This has
   been corrected.

 * "git commit" misbehaved in a few minor ways when an empty message
   is given via -m '', all of which has been corrected.

 * Support for CRAM-MD5 authentication method in "git imap-send" did
   not work well.

 * The socks5:// proxy support added back in 2.6.4 days was not aware
   that socks5h:// proxies behave differently.

 * "git config" had a codepath that tried to pass a NULL to
   printf("%s"), which nobody seems to have noticed.

 * On Cygwin, object creation uses the "create a temporary and then
   rename it to the final name" pattern, not "create a temporary,
   hardlink it to the final name and then unlink the temporary"
   pattern.

   This is necessary to use Git on Windows shared directories, and is
   already enabled for the MinGW and plain Windows builds.  It also
   has been used in Cygwin packaged versions of Git for quite a while.
   See http://thread.gmane.org/gmane.comp.version-control.git/291853
   and http://thread.gmane.org/gmane.comp.version-control.git/275680.

 * "git replace -e" did not honour "core.editor" configuration.

 * Upcoming OpenSSL 1.1.0 will break compilation b updating a few APIs
   we use in imap-send, which has been adjusted for the change.

 * "git submodule" reports the paths of submodules the command
   recurses into, but this was incorrect when the command was not run
   from the root level of the superproject.

 * The test scripts for "git p4" (but not "git p4" implementation
   itself) has been updated so that they would work even on a system
   where the installed version of Python is python 3.

 * The "user.useConfigOnly" configuration variable makes it an error
   if users do not explicitly set user.name and user.email.  However,
   its check was not done early enough and allowed another error to
   trigger, reporting that the default value we guessed from the
   system setting was unusable.  This was a suboptimal end-user
   experience as we want the users to set user.name/user.email without
   relying on the auto-detection at all.

 * "git mv old new" did not adjust the path for a submodule that lives
   as a subdirectory inside old/ directory correctly.

 * "git push" from a corrupt repository that attempts to push a large
   number of refs deadlocked; the thread to relay rejection notices
   for these ref updates blocked on writing them to the main thread,
   after the main thread at the receiving end notices that the push
   failed and decides not to read these notices and return a failure.

 * A question by "git send-email" to ask the identity of the sender
   has been updated.

 * Recent update to Git LFS broke "git p4" by changing the output from
   its "lfs pointer" subcommand.

 * Some multi-byte encoding can have a backslash byte as a later part
   of one letter, which would confuse "highlight" filter used in
   gitweb.

Also contains minor documentation updates and code clean-ups.
2016-05-22 18:00:37 +00:00
adam
cb9341dc69 Version 2.8.2
Fixes since v2.8.1
------------------
* The embedded args argv-array in the child process is used to build
  the command line to run pack-objects instead of using a separate
  array of strings.

* Bunch of tests on "git clone" has been renumbered for better
  organization.

* The tests that involve running httpd leaked the system-wide
  configuration in /etc/gitconfig to the tested environment.

* "index-pack --keep=<msg>" was broken since v2.1.0 timeframe.

* "git config --get-urlmatch", unlike other variants of the "git
  config --get" family, did not signal error with its exit status
  when there was no matching configuration.

* The "--local-env-vars" and "--resolve-git-dir" options of "git
  rev-parse" failed to work outside a repository when the command's
  option parsing was rewritten in 1.8.5 era.

* Fetching of history by naming a commit object name directly didn't
  work across remote-curl transport.

* A small memory leak in an error codepath has been plugged in xdiff
  code.

* strbuf_getwholeline() did not NUL-terminate the buffer on certain
  corner cases in its error codepath.

* The startup_info data, which records if we are working inside a
  repository (among other things), are now uniformly available to Git
  subcommand implementations, and Git avoids attempting to touch
  references when we are not in a repository.

* "git mergetool" did not work well with conflicts that both sides
  deleted.

* "git send-email" had trouble parsing alias file in mailrc format
  when lines in it had trailing whitespaces on them.

* When "git merge --squash" stopped due to conflict, the concluding
  "git commit" failed to read in the SQUASH_MSG that shows the log
  messages from all the squashed commits.

* "git merge FETCH_HEAD" dereferenced NULL pointer when merging
  nothing into an unborn history (which is arguably unusual usage,
  which perhaps was the reason why nobody noticed it).

* Build updates for MSVC.

* "git diff -M" used to work better when two originally identical
  files A and B got renamed to X/A and X/B by pairing A to X/A and B
  to X/B, but this was broken in the 2.0 timeframe.

* "git send-pack --all <there>" was broken when its command line
  option parsing was written in the 2.6 timeframe.

* When running "git blame $path" with unnormalized data in the index
  for the path, the data in the working tree was blamed, even though
  "git add" would not have changed what is already in the index, due
  to "safe crlf" that disables the line-end conversion.  It has been
  corrected.
2016-05-09 09:08:33 +00:00
dbj
dde82c09aa update PKG_{FAIL,SKIP}_REASON with += 2016-04-11 04:22:33 +00:00
adam
b116195642 Changes 2.8.1:
* "make rpmbuild" target was broken as its input, git.spec.in, was
   not updated to match a file it describes that has been renamed
   recently.  This has been fixed.
2016-04-07 13:26:36 +00:00
sevan
0f9a14f977 Patch for CVE-2016-2324
Obtained via Debian Security Tracker
 https://security-tracker.debian.org/tracker/CVE-2016-2324
 9831e92bfa
Bump pkgrev
2016-03-16 19:38:52 +00:00
adam
4d2c6f7650 Changes 2.7.3:
* Traditionally, the tests that try commands that work on the
  contents in the working tree were named with "worktree" in their
  filenames, but with the recent addition of "git worktree"
  subcommand, whose tests are also named similarly, it has become
  harder to tell them apart.  The traditional tests have been renamed
  to use "work-tree" instead in an attempt to differentiate them.

* Many codepaths forget to check return value from git_config_set();
  the function is made to die() to make sure we do not proceed when
  setting a configuration variable failed.

* Handling of errors while writing into our internal asynchronous
  process has been made more robust, which reduces flakiness in our
  tests.

* "git show 'HEAD:Foo[BAR]Baz'" did not interpret the argument as a
  rev, i.e. the object named by the the pathname with wildcard
  characters in a tree object.

* "git rev-parse --git-common-dir" used in the worktree feature
  misbehaved when run from a subdirectory.

* The "v(iew)" subcommand of the interactive "git am -i" command was
  broken in 2.6.0 timeframe when the command was rewritten in C.

* "git merge-tree" used to mishandle "both sides added" conflict with
  its own "create a fake ancestor file that has the common parts of
  what both sides have added and do a 3-way merge" logic; this has
  been updated to use the usual "3-way merge with an empty blob as
  the fake common ancestor file" approach used in the rest of the
  system.

* The memory ownership rule of fill_textconv() API, which was a bit
  tricky, has been documented a bit better.

* The documentation did not clearly state that the 'simple' mode is
  now the default for "git push" when push.default configuration is
  not set.

* Recent versions of GNU grep are pickier when their input contains
  arbitrary binary data, which some of our tests uses.  Rewrite the
  tests to sidestep the problem.

* A helper function "git submodule" uses since v2.7.0 to list the
  modules that match the pathspec argument given to its subcommands
  (e.g. "submodule add <repo> <path>") has been fixed.

* "git config section.var value" to set a value in per-repository
  configuration file failed when it was run outside any repository,
  but didn't say the reason correctly.

* The code to read the pack data using the offsets stored in the pack
  idx file has been made more carefully check the validity of the
  data in the idx.
2016-03-12 11:33:32 +00:00
jperkin
17661ff9a5 Bump PKGREVISION for security/openssl ABI bump. 2016-03-05 11:27:40 +00:00
adam
30ea7e3fef Changes 2.7.2:
* The low-level merge machinery has been taught to use CRLF line
  termination when inserting conflict markers to merged contents that
  are themselves CRLF line-terminated.
* "git worktree" had a broken code that attempted to auto-fix
  possible inconsistency that results from end-users moving a
  worktree to different places without telling Git (the original
  repository needs to maintain backpointers to its worktrees, but
  "mv" run by end-users who are not familiar with that fact will
  obviously not adjust them), which actually made things worse
  when triggered.
* "git push --force-with-lease" has been taught to report if the push
  needed to force (or fast-forwarded).
* The emulated "yes" command used in our test scripts has been
  tweaked not to spend too much time generating unnecessary output
  that is not used, to help those who test on Windows where it would
  not stop until it fills the pipe buffer due to lack of SIGPIPE.
* The vimdiff backend for "git mergetool" has been tweaked to arrange
  and number buffers in the order that would match the expectation of
  majority of people who read left to right, then top down and assign
  buffers 1 2 3 4 "mentally" to local base remote merge windows based
  on that order.
* The documentation for "git clean" has been corrected; it mentioned
  that .git/modules/* are removed by giving two "-f", which has never
  been the case.
* Paths that have been told the index about with "add -N" are not
  quite yet in the index, but a few commands behaved as if they
  already are in a harmful way.
2016-02-29 10:50:55 +00:00
adam
d0093a1c8a Git v2.7.1 Release Notes
========================

Fixes since v2.7
----------------

 * An earlier change in 2.5.x-era broke users' hooks and aliases by
   exporting GIT_WORK_TREE to point at the root of the working tree,
   interfering when they tried to use a different working tree without
   setting GIT_WORK_TREE environment themselves.

 * The "exclude_list" structure has the usual "alloc, nr" pair of
   fields to be used by ALLOC_GROW(), but clear_exclude_list() forgot
   to reset 'alloc' to 0 when it cleared 'nr' to discard the managed
   array.

 * "git send-email" was confused by escaped quotes stored in the alias
   files saved by "mutt", which has been corrected.

 * A few unportable C construct have been spotted by clang compiler
   and have been fixed.

 * The documentation has been updated to hint the connection between
   the '--signoff' option and DCO.

 * "git reflog" incorrectly assumed that all objects that used to be
   at the tip of a ref must be commits, which caused it to segfault.

 * The ignore mechanism saw a few regressions around untracked file
   listing and sparse checkout selection areas in 2.7.0; the change
   that is responsible for the regression has been reverted.

 * Some codepaths used fopen(3) when opening a fixed path in $GIT_DIR
   (e.g. COMMIT_EDITMSG) that is meant to be left after the command is
   done.  This however did not work well if the repository is set to
   be shared with core.sharedRepository and the umask of the previous
   user is tighter.  They have been made to work better by calling
   unlink(2) and retrying after fopen(3) fails with EPERM.

 * Asking gitweb for a nonexistent commit left a warning in the server
   log.

 * "git rebase", unlike all other callers of "gc --auto", did not
   ignore the exit code from "gc --auto".

 * Many codepaths that run "gc --auto" before exiting kept packfiles
   mapped and left the file descriptors to them open, which was not
   friendly to systems that cannot remove files that are open.  They
   now close the packs before doing so.

 * A recent optimization to filter-branch in v2.7.0 introduced a
   regression when --prune-empty filter is used, which has been
   corrected.

 * The description for SANITY prerequisite the test suite uses has
   been clarified both in the comment and in the implementation.

 * "git tag" started listing a tag "foo" as "tags/foo" when a branch
   named "foo" exists in the same repository; remove this unnecessary
   disambiguation, which is a regression introduced in v2.7.0.

 * The way "git svn" uses auth parameter was broken by Subversion
   1.9.0 and later.

 * The "split" subcommand of "git subtree" (in contrib/) incorrectly
   skipped merges when it shouldn't, which was corrected.

 * A few options of "git diff" did not work well when the command was
   run from a subdirectory.

 * dirname() emulation has been added, as Msys2 lacks it.

 * The underlying machinery used by "ls-files -o" and other commands
   have been taught not to create empty submodule ref cache for a
   directory that is not a submodule.  This removes a ton of wasted
   CPU cycles.

 * Drop a few old "todo" items by deciding that the change one of them
   suggests is not such a good idea, and doing the change the other
   one suggested to do.

 * Documentation for "git fetch --depth" has been updated for clarity.

 * The command line completion learned a handful of additional options
   and command specific syntax.

Also includes a handful of documentation and test updates.
2016-02-07 10:27:23 +00:00
adam
2dc883f36f Changes 2.7.0:
UI, Workflows & Features

* The appearance of "gitk", particularly on high DPI monitors, have
  been improved.  "gitk" also comes with an undated translation for
  Swedish and Japanese.

* "git remote" learned "get-url" subcommand to show the URL for a
  given remote name used for fetching and pushing.

* There was no way to defeat a configured rebase.autostash variable
  from the command line, as "git rebase --no-autostash" was missing.

* "git log --date=local" used to only show the normal (default)
  format in the local timezone.  The command learned to take 'local'
  as an instruction to use the local timezone with other formats,

* The refs used during a "git bisect" session is now per-worktree so
  that independent bisect sessions can be done in different worktrees
  created with "git worktree add".

* Users who are too busy to type three extra keystrokes to ask for
  "git stash show -p" can now set stash.showPatch configuration
  variable to true to always see the actual patch, not just the list
  of paths affected with feel for the extent of damage via diffstat.

* "quiltimport" allows to specify the series file by honoring the
  $QUILT_SERIES environment and also --series command line option.

* The use of 'good/bad' in "git bisect" made it confusing to use when
  hunting for a state change that is not a regression (e.g. bugfix).
  The command learned 'old/new' and then allows the end user to
  say e.g. "bisect start --term-old=fast --term-new=slow" to find a
  performance regression.

* "git interpret-trailers" can now run outside of a Git repository.

* "git p4" learned to reencode the pathname it uses to communicate
  with the p4 depot with a new option.

* Give progress meter to "git filter-branch".

* Allow a later "!/abc/def" to override an earlier "/abc" that
  appears in the same .gitignore file to make it easier to express
  "everything in /abc directory is ignored, except for ...".

* Teach "git p4" to send large blobs outside the repository by
  talking to Git LFS.

* Prepare for Git on-disk repository representation to undergo
  backward incompatible changes by introducing a new repository
  format version "1", with an extension mechanism.

* "git worktree" learned a "list" subcommand.

* "git clone --dissociate" learned that it can be used even when
  "--reference" was not used at the same time.

* "git blame" learnt to take "--first-parent" and "--reverse" at the
  same time when it makes sense.

* "git checkout" did not follow the usual "--[no-]progress"
  convention and implemented only "--quiet" that is essentially
  a superset of "--no-progress".  Extend the command to support the
  usual "--[no-]progress".

* The semantics of transfer.hideRefs configuration variable have been
  extended to work better with the ref "namespace" feature that lets
  you throw unrelated bunches of repositories in a single physical
  repository and virtually serve them as separate ones.

* send-email config variables whose values are pathnames now go
  through the ~username/ expansion.

* bash completion learnt to TAB-complete recipient addresses given
  to send-email.

* The credential-cache daemon can be told to ignore SIGHUP to work
  around issue when running Git from inside emacs.

* "git push" learned new configuration for doing "--recurse-submodules"
  on each push.

* "format-patch" has learned a new option to zero-out the commit
  object name on the mbox "From " line.
2016-01-08 17:37:20 +00:00
adam
f8cd514db2 Fixes since v2.6.3
------------------

 * The "configure" script did not test for -lpthread correctly, which
   upset some linkers.

 * Add support for talking http/https over socks proxy.

 * Portability fix for Windows, which may rewrite $SHELL variable using
   non-POSIX paths.

 * We now consistently allow all hooks to ignore their standard input,
   rather than having git complain of SIGPIPE.

 * Fix shell quoting in contrib script.

 * Test portability fix for a topic in v2.6.1.

 * Allow tilde-expansion in some http config variables.

 * Give a useful special case "diff/show --word-diff-regex=." as an
   example in the documentation.

 * Fix for a corner case in filter-branch.

 * Make git-p4 work on a detached head.

 * Documentation clarification for "check-ignore" without "--verbose".

 * Just like the working tree is cleaned up when the user cancelled
   submission in P4Submit.applyCommit(), clean up the mess if "p4
   submit" fails.

 * Having a leftover .idx file without corresponding .pack file in
   the repository hurts performance; "git gc" learned to prune them.

 * The code to prepare the working tree side of temporary directory
   for the "dir-diff" feature forgot that symbolic links need not be
   copied (or symlinked) to the temporary area, as the code already
   special cases and overwrites them.  Besides, it was wrong to try
   computing the object name of the target of symbolic link, which may
   not even exist or may be a directory.

 * There was no way to defeat a configured rebase.autostash variable
   from the command line, as "git rebase --no-autostash" was missing.

 * Allow "git interpret-trailers" to run outside of a Git repository.

 * Produce correct "dirty" marker for shell prompts, even when we
   are on an orphan or an unborn branch.

 * Some corner cases have been fixed in string-matching done in "git
   status".

 * Apple's common crypto implementation of SHA1_Update() does not take
   more than 4GB at a time, and we now have a compile-time workaround
   for it.
2015-12-10 13:35:46 +00:00
adam
e5bcdf3e12 Changes 2.6.3:
* The error message from "git blame --contents --reverse" incorrectly
  talked about "--contents --children".

* "git merge-file" tried to signal how many conflicts it found, which
  obviously would not work well when there are too many of them.

* The name-hash subsystem that is used to cope with case insensitive
  filesystems keeps track of directories and their on-filesystem
  cases for all the paths in the index by holding a pointer to a
  randomly chosen cache entry that is inside the directory (for its
  ce->ce_name component).  This pointer was not updated even when the
  cache entry was removed from the index, leading to use after free.
  This was fixed by recording the path for each directory instead of
  borrowing cache entries and restructuring the API somewhat.

* When the "git am" command was reimplemented in C, "git am -3" had a
  small regression where it is aborted in its error handling codepath
  when underlying merge-recursive failed in some ways.

* The synopsis text and the usage string of subcommands that read
  list of things from the standard input are often shown as if they
  only take input from a file on a filesystem, which was misleading.

* A couple of commands still showed "[options]" in their usage string
  to note where options should come on their command line, but we
  spell that "[<options>]" in most places these days.

* The submodule code has been taught to work better with separate
  work trees created via "git worktree add".

* When "git gc --auto" is backgrounded, its diagnosis message is
  lost.  It now is saved to a file in $GIT_DIR and is shown next time
  the "gc --auto" is run.

* Work around "git p4" failing when the P4 depot records the contents
  in UTF-16 without UTF-16 BOM.

* Recent update to "rebase -i" that tries to sanity check the edited
  insn sheet before it uses it has become too picky on Windows where
  CRLF left by the editor is turned into a trailing CR on the line
  read via the "read" built-in command.

* "git clone --dissociate" runs a big "git repack" process at the
  end, and it helps to close file descriptors that are open on the
  packs and their idx files before doing so on filesystems that
  cannot remove a file that is still open.

* Correct "git p4 --detect-labels" so that it does not fail to create
  a tag that points at a commit that is also being imported.

* The internal stripspace() function has been moved to where it
  logically belongs to, i.e. strbuf API, and the command line parser
  of "git stripspace" has been updated to use the parse_options API.

* Prepare for Git on-disk repository representation to undergo
  backward incompatible changes by introducing a new repository
  format version "1", with an extension mechanism.

* "git gc" used to barf when a symbolic ref has gone dangling
  (e.g. the branch that used to be your upstream's default when you
  cloned from it is now gone, and you did "fetch --prune").

* The normalize_ceiling_entry() function does not muck with the end
  of the path it accepts, and the real world callers do rely on that,
  but a test insisted that the function drops a trailing slash.

* "git gc" is safe to run anytime only because it has the built-in
  grace period to protect young objects.  In order to run with no
  grace period, the user must make sure that the repository is
  quiescent.

* A recent "filter-branch --msg-filter" broke skipping of the commit
  object header, which is fixed.

* "git --literal-pathspecs add -u/-A" without any command line
  argument misbehaved ever since Git 2.0.

* Merging a branch that removes a path and another that changes the
  mode bits on the same path should have conflicted at the path, but
  it didn't and silently favoured the removal.

* "git imap-send" did not compile well with older version of cURL library.

* The linkage order of libraries was wrong in places around libcurl.

* It was not possible to use a repository-lookalike created by "git
  worktree add" as a local source of "git clone".

* When "git send-email" wanted to talk over Net::SMTP::SSL,
  Net::Cmd::datasend() did not like to be fed too many bytes at the
  same time and failed to send messages.  Send the payload one line
  at a time to work around the problem.

* We peek objects from submodule's object store by linking it to the
  list of alternate object databases, but the code to do so forgot to
  correctly initialize the list.

* "git status --branch --short" accessed beyond the constant string
  "HEAD", which has been corrected.

* "git daemon" uses "run_command()" without "finish_command()", so it
  needs to release resources itself, which it forgot to do.

Also contains typofixes, documentation updates and trivial code
clean-ups.
2015-11-06 15:45:05 +00:00
agc
efd9ad4549 Remove duplicate SHA512 digests that crept in. 2015-11-04 17:41:15 +00:00
agc
d9e4cfe05d Add SHA512 digests for distfiles for devel category
Issues found with existing distfiles:
	distfiles/eclipse-sourceBuild-srcIncluded-3.0.1.zip
	distfiles/fortran-utils-1.1.tar.gz
	distfiles/ivykis-0.39.tar.gz
	distfiles/enum-1.11.tar.gz
	distfiles/pvs-3.2-libraries.tgz
	distfiles/pvs-3.2-linux.tgz
	distfiles/pvs-3.2-solaris.tgz
	distfiles/pvs-3.2-system.tgz
No changes made to these distinfo files.

Otherwise, existing SHA1 digests verified and found to be the same on
the machine holding the existing distfiles (morden).  All existing
SHA1 digests retained for now as an audit trail.
2015-11-03 03:27:11 +00:00
adam
af1460d11c Changes 2.6.2:
* There were some classes of errors that "git fsck" diagnosed to its
   standard error that did not cause it to exit with non-zero status.

 * A test script for the HTTP service had a timing dependent bug,
   which was fixed.

 * Performance-measurement tests did not work without an installed Git.

 * On a case insensitive filesystems, setting GIT_WORK_TREE variable
   using a random cases that does not agree with what the filesystem
   thinks confused Git that it wasn't inside the working tree.

 * When "git am" was rewritten as a built-in, it stopped paying
   attention to user.signingkey, which was fixed.

 * After "git checkout --detach", "git status" reported a fairly
   useless "HEAD detached at HEAD", instead of saying at which exact
   commit.

 * "git rebase -i" had a minor regression recently, which stopped
   considering a line that begins with an indented '#' in its insn
   sheet not a comment, which is now fixed.

 * Description of the "log.follow" configuration variable in "git log"
   documentation is now also copied to "git config" documentation.

 * Allocation related functions and stdio are unsafe things to call
   inside a signal handler, and indeed killing the pager can cause
   glibc to deadlock waiting on allocation mutex as our signal handler
   tries to free() some data structures in wait_for_pager().  Reduce
   these unsafe calls.

 * The way how --ref/--notes to specify the notes tree reference are
   DWIMmed was not clearly documented.

 * Customization to change the behaviour with "make -w" and "make -s"
   in our Makefile was broken when they were used together.

 * The Makefile always runs the library archiver with hardcoded "crs"
   options, which was inconvenient for exotic platforms on which
   people want to use programs with totally different set of command
   line options.

 * The ssh transport, just like any other transport over the network,
   did not clear GIT_* environment variables, but it is possible to
   use SendEnv and AcceptEnv to leak them to the remote invocation of
   Git, which is not a good idea at all.  Explicitly clear them just
   like we do for the local transport.

 * "git blame --first-parent v1.0..v2.0" was not rejected but did not
   limit the blame to commits on the first parent chain.

 * Very small number of options take a parameter that is optional
   (which is not a great UI element as they can only appear at the end
   of the command line).  Add notice to documentation of each and
   every one of them.

Also contains typofixes, documentation updates and trivial code
clean-ups.
2015-10-17 07:44:56 +00:00
ryoon
32b46836ef Update to 2.6.1
Changelog:
Git v2.6.1 Release Notes
========================

Fixes since v2.6
----------------

 * xdiff code we use to generate diffs is not prepared to handle
   extremely large files.  It uses "int" in many places, which can
   overflow if we have a very large number of lines or even bytes in
   our input files, for example.  Cap the input size to soemwhere
   around 1GB for now.

 * Some protocols (like git-remote-ext) can execute arbitrary code
   found in the URL.  The URLs that submodules use may come from
   arbitrary sources (e.g., .gitmodules files in a remote
   repository), and can hurt those who blindly enable recursive
   fetch.  Restrict the allowed protocols to well known and safe
   ones.


Git 2.6 Release Notes
=====================

Updates since v2.5
------------------

UI, Workflows & Features

 * An asterisk as a substring (as opposed to the entirety) of a path
   component for both side of a refspec, e.g.
   "refs/heads/o*:refs/remotes/heads/i*", is now allowed.

 * New userdiff pattern definition for fountain screenwriting markup
   format has been added.

 * "git log" and friends learned a new "--date=format:..." option to
   format timestamps using system's strftime(3).

 * "git fast-import" learned to respond to the get-mark command via
   its cat-blob-fd interface.

 * "git rebase -i" learned "drop commit-object-name subject" command
   as another way to skip replaying of a commit.

 * A new configuration variable can enable "--follow" automatically
   when "git log" is run with one pathspec argument.

 * "git status" learned to show a more detailed information regarding
   the "rebase -i" session in progress.

 * "git cat-file" learned "--batch-all-objects" option to enumerate all
   available objects in the repository more quickly than "rev-list
   --all --objects" (the output includes unreachable objects, though).

 * "git fsck" learned to ignore errors on a set of known-to-be-bad
   objects, and also allows the warning levels of various kinds of
   non-critical breakages to be tweaked.

 * "git rebase -i"'s list of todo is made configurable.

 * "git send-email" now performs alias-expansion on names that are
   given via --cccmd, etc.

 * An environment variable GIT_REPLACE_REF_BASE tells Git to look into
   refs hierarchy other than refs/replace/ for the object replacement
   data.

 * Allow untracked cache (experimental) to be used when sparse
   checkout (experimental) is also in use.

 * "git pull --rebase" has been taught to pay attention to
   rebase.autostash configuration.

 * The command-line completion script (in contrib/) has been updated.

 * A negative !ref entry in multi-value transfer.hideRefs
   configuration can be used to say "don't hide this one".

 * After "git am" without "-3" stops, running "git am -3" pays attention
   to "-3" only for the patch that caused the original invocation
   to stop.

 * When linked worktree is used, simultaneous "notes merge" instances
   for the same ref in refs/notes/* are prevented from stomping on
   each other.

 * "git send-email" learned a new option --smtp-auth to limit the SMTP
   AUTH mechanisms to be used to a subset of what the system library
   supports.

 * A new configuration variable http.sslVersion can be used to specify
   what specific version of SSL/TLS to use to make a connection.

 * "git notes merge" can be told with "--strategy=<how>" option how to
   automatically handle conflicts; this can now be configured by
   setting notes.mergeStrategy configuration variable.

 * "git log --cc" did not show any patch, even though most of the time
   the user meant "git log --cc -p -m" to see patch output for commits
   with a single parent, and combined diff for merge commits.  The
   command is taught to DWIM "--cc" (without "--raw" and other forms
   of output specification) to "--cc -p -m".

 * "git config --list" output was hard to parse when values consist of
   multiple lines.  "--name-only" option is added to help this.

 * A handful of usability & cosmetic fixes to gitk and l10n updates.

 * A completely empty e-mail address <> is now allowed in the authors
   file used by git-svn, to match the way it accepts the output from
   authors-prog.


Performance, Internal Implementation, Development Support etc.

 * In preparation for allowing different "backends" to store the refs
   in a way different from the traditional "one ref per file in
   $GIT_DIR or in a $GIT_DIR/packed-refs file" filesystem storage,
   direct filesystem access to ref-like things like CHERRY_PICK_HEAD
   from scripts and programs has been reduced.

 * Computation of untracked status indicator by bash prompt
   script (in contrib/) has been optimized.

 * Memory use reduction when commit-slab facility is used to annotate
   sparsely (which is not recommended in the first place).

 * Clean up refs API and make "git clone" less intimate with the
   implementation detail.

 * "git pull" was reimplemented in C.

 * The packet tracing machinery allows to capture an incoming pack
   data to a file for debugging.

 * Move machinery to parse human-readable scaled numbers like 1k, 4M,
   and 2G as an option parameter's value from pack-objects to
   parse-options API, to make it available to other codepaths.

 * "git verify-tag" and "git verify-commit" have been taught to share
   more code, and then learned to optionally show the verification
   message from the underlying GPG implementation.

 * Various enhancements around "git am" reading patches generated by
   foreign SCM have been made.

 * Ref listing by "git branch -l" and "git tag -l" commands has
   started to be rebuilt, based on the for-each-ref machinery.

 * The code to perform multi-tree merges has been taught to repopulate
   the cache-tree upon a successful merge into the index, so that
   subsequent "diff-index --cached" (hence "status") and "write-tree"
   (hence "commit") will go faster.

   The same logic in "git checkout" may now be removed, but that is a
   separate issue.

 * Tests that assume how reflogs are represented on the filesystem too
   much have been corrected.

 * "git am" has been rewritten in "C".

 * git_path() and mkpath() are handy helper functions but it is easy
   to misuse, as the callers need to be careful to keep the number of
   active results below 4.  Their uses have been reduced.

 * The "lockfile" API has been rebuilt on top of a new "tempfile" API.

 * To prepare for allowing a different "ref" backend to be plugged in
   to the system, update_ref()/delete_ref() have been taught about
   ref-like things like MERGE_HEAD that are per-worktree (they will
   always be written to the filesystem inside $GIT_DIR).

 * The gitmodules API that is accessed from the C code learned to
   cache stuff lazily.


Also contains various documentation updates and code clean-ups.


Fixes since v2.5
----------------

Unless otherwise noted, all the fixes since v2.5 in the maintenance
track are contained in this release (see the maintenance releases'
notes for details).

 * "git subtree" (in contrib/) depended on "git log" output to be
   stable, which was a no-no.  Apply a workaround to force a
   particular date format.
   (merge e7aac44 da/subtree-date-confusion later to maint).

 * An attempt to delete a ref by pushing into a repository whose HEAD
   symbolic reference points at an unborn branch that cannot be
   created due to ref D/F conflict (e.g. refs/heads/a/b exists, HEAD
   points at refs/heads/a) failed.
   (merge b112b14 jx/do-not-crash-receive-pack-wo-head later to maint).

 * The low-level "git send-pack" did not honor 'user.signingkey'
   configuration variable when sending a signed-push.
   (merge d830d39 db/send-pack-user-signingkey later to maint).

 * "sparse checkout" misbehaved for a path that is excluded from the
   checkout when switching between branches that differ at the path.
   (merge 7d78241 as/sparse-checkout-removal later to maint).

 * An experimental "untracked cache" feature used uname(2) in a
   slightly unportable way.
   (merge 100e433 cb/uname-in-untracked later to maint).

 * A "rebase" replays changes of the local branch on top of something
   else, as such they are placed in stage #3 and referred to as
   "theirs", while the changes in the new base, typically a foreign
   work, are placed in stage #2 and referred to as "ours".  Clarify
   the "checkout --ours/--theirs".
   (merge f303016 se/doc-checkout-ours-theirs later to maint).

 * The "rev-parse --parseopt" mode parsed the option specification
   and the argument hint in a strange way to allow '=' and other
   special characters in the option name while forbidding them from
   the argument hint.  This made it impossible to define an option
   like "--pair <key>=<value>" with "pair=key=value" specification,
   which instead would have defined a "--pair=key <value>" option.
   (merge 2d893df ib/scripted-parse-opt-better-hint-string later to maint).

 * Often a fast-import stream builds a new commit on top of the
   previous commit it built, and it often unconditionally emits a
   "from" command to specify the first parent, which can be omitted in
   such a case.  This caused fast-import to forget the tree of the
   previous commit and then re-read it from scratch, which was
   inefficient.  Optimize for this common case.
   (merge 0df3245 mh/fast-import-optimize-current-from later to maint).

 * Running an aliased command from a subdirectory when the .git thing
   in the working tree is a gitfile pointing elsewhere did not work.
   (merge d95138e nd/export-worktree later to maint).

 * "Is this subdirectory a separate repository that should not be
   touched?" check "git clean" was inefficient.  This was replaced
   with a more optimized check.
   (merge fbf2fec ee/clean-remove-dirs later to maint).

 * The "new-worktree-mode" hack in "checkout" that was added in
   nd/multiple-work-trees topic has been removed by updating the
   implementation of new "worktree add".
   (merge 65f9b75 es/worktree-add-cleanup later to maint).

 * Remove remaining cruft from  "git checkout --to", which
   transitioned to "git worktree add".
   (merge 114ff88 es/worktree-add later to maint).

 * An off-by-one error made "git remote" to mishandle a remote with a
   single letter nickname.
   (merge bc598c3 mh/get-remote-group-fix later to maint).

 * "git clone $URL", when cloning from a site whose sole purpose is to
   host a single repository (hence, no path after <scheme>://<site>/),
   tried to use the site name as the new repository name, but did not
   remove username or password when <site> part was of the form
   <user>@<pass>:<host>.  The code is taught to redact these.
   (merge adef956 ps/guess-repo-name-at-root later to maint).

 * Running tests with the "-x" option to make them verbose had some
   unpleasant interactions with other features of the test suite.
   (merge 9b5fe78 jk/test-with-x later to maint).

 * t1509 test that requires a dedicated VM environment had some
   bitrot, which has been corrected.
   (merge faacc5a ps/t1509-chroot-test-fixup later to maint).

 * "git pull" in recent releases of Git has a regression in the code
   that allows custom path to the --upload-pack=<program>.  This has
   been corrected.

   Note that this is irrelevant for 'master' with "git pull" rewritten
   in C.
   (merge 13e0e28 mm/pull-upload-pack later to maint).

 * When trying to see that an object does not exist, a state errno
   leaked from our "first try to open a packfile with O_NOATIME and
   then if it fails retry without it" logic on a system that refuses
   O_NOATIME.  This confused us and caused us to die, saying that the
   packfile is unreadable, when we should have just reported that the
   object does not exist in that packfile to the caller.
   (merge dff6f28 cb/open-noatime-clear-errno later to maint).

 * The codepath to produce error messages had a hard-coded limit to
   the size of the message, primarily to avoid memory allocation while
   calling die().
   (merge f4c3edc jk/long-error-messages later to maint).

 * strbuf_read() used to have one extra iteration (and an unnecessary
   strbuf_grow() of 8kB), which was eliminated.
   (merge 3ebbd00 jh/strbuf-read-use-read-in-full later to maint).

 * We rewrote one of the build scripts in Perl but this reimplements
   in Bourne shell.
   (merge 57cee8a sg/help-group later to maint).

 * The experimental untracked-cache feature were buggy when paths with
   a few levels of subdirectories are involved.
   (merge 73f9145 dt/untracked-subdir later to maint).

 * "interpret-trailers" helper mistook a single-liner log message that
   has a colon as the end of existing trailer.

 * The "interpret-trailers" helper mistook a multi-paragraph title of
   a commit log message with a colon in it as the end of the trailer
   block.
   (merge 5c99995 cc/trailers-corner-case-fix later to maint).

 * "git describe" without argument defaulted to describe the HEAD
   commit, but "git describe --contains" didn't.  Arguably, in a
   repository used for active development, such defaulting would not
   be very useful as the tip of branch is typically not tagged, but it
   is better to be consistent.
   (merge 2bd0706 sg/describe-contains later to maint).

 * The client side codepaths in "git push" have been cleaned up
   and the user can request to perform an optional "signed push",
   i.e. sign only when the other end accepts signed push.
   (merge 68c757f db/push-sign-if-asked later to maint).

 * Because the configuration system does not allow "alias.0foo" and
   "pager.0foo" as the configuration key, the user cannot use '0foo'
   as a custom command name anyway, but "git 0foo" tried to look these
   keys up and emitted useless warnings before saying '0foo is not a
   git command'.  These warning messages have been squelched.
   (merge 9e9de18 jk/fix-alias-pager-config-key-warnings later to maint).

 * "git rev-list" does not take "--notes" option, but did not complain
   when one is given.
   (merge 2aea7a5 jk/rev-list-has-no-notes later to maint).

 * When re-priming the cache-tree opportunistically while committing
   the in-core index as-is, we mistakenly invalidated the in-core
   index too aggressively, causing the experimental split-index code
   to unnecessarily rewrite the on-disk index file(s).
   (merge 475a344 dt/commit-preserve-base-index-upon-opportunistic-cache-tree-update later to maint).

 * "git archive" did not use zip64 extension when creating an archive
   with more than 64k entries, which nobody should need, right ;-)?
   (merge 88329ca rs/archive-zip-many later to maint).

 * The code in "multiple-worktree" support that attempted to recover
   from an inconsistent state updated an incorrect file.
   (merge 82fde87 nd/fixup-linked-gitdir later to maint).

 * On case insensitive systems, "git p4" did not work well with client
   specs.

 * "git init empty && git -C empty log" said "bad default revision 'HEAD'",
   which was found to be a bit confusing to new users.
   (merge ce11360 jk/log-missing-default-HEAD later to maint).

 * Recent versions of scripted "git am" has a performance regression in
   "git am --skip" codepath, which no longer exists in the built-in
   version on the 'master' front.  Fix the regression in the last
   scripted version that appear in 2.5.x maintenance track and older.
   (merge b9d6689 js/maint-am-skip-performance-regression later to maint).

 * The branch descriptions that are set with "git branch --edit-description"
   option were used in many places but they weren't clearly documented.
   (merge 561d2b7 po/doc-branch-desc later to maint).

 * Code cleanups and documentation updates.
   (merge 1c601af es/doc-clean-outdated-tools later to maint).
   (merge 3581304 kn/tag-doc-fix later to maint).
   (merge 3a59e59 kb/i18n-doc later to maint).
   (merge 45abdee sb/remove-unused-var-from-builtin-add later to maint).
   (merge 14691e3 sb/parse-options-codeformat later to maint).
   (merge 4a6ada3 ad/bisect-cleanup later to maint).
   (merge da4c5ad ta/docfix-index-format-tech later to maint).
   (merge ae25fd3 sb/check-return-from-read-ref later to maint).
   (merge b3325df nd/dwim-wildcards-as-pathspecs later to maint).
   (merge 7aa9b9b sg/wt-status-header-inclusion later to maint).
   (merge f04c690 as/docfix-reflog-expire-unreachable later to maint).
   (merge 1269847 sg/t3020-typofix later to maint).
   (merge 8b54c23 jc/calloc-pathspec later to maint).
   (merge a6926b8 po/po-readme later to maint).
   (merge 54d160e ss/fix-config-fd-leak later to maint).
   (merge b80fa84 ah/submodule-typofix-in-error later to maint).
   (merge 99885bc ah/reflog-typofix-in-error later to maint).
   (merge 9476c2c ah/read-tree-usage-string later to maint).
   (merge b8c1d27 ah/pack-objects-usage-strings later to maint).
   (merge 486e1e1 br/svn-doc-include-paths-config later to maint).
   (merge 1733ed3 ee/clean-test-fixes later to maint).
   (merge 5fcadc3 gb/apply-comment-typofix later to maint).
   (merge b894d3e mp/t7060-diff-index-test later to maint).
   (merge d238710 as/config-doc-markup-fix later to maint).
2015-10-07 14:08:41 +00:00
adam
a9c50e1512 Changes 2.5.3:
* The experimental untracked-cache feature were buggy when paths with
   a few levels of subdirectories are involved.

 * Recent versions of scripted "git am" has a performance regression
   in "git am --skip" codepath, which no longer exists in the
   built-in version on the 'master' front.  Fix the regression in
   the last scripted version that appear in 2.5.x maintenance track
   and older.

Also contains typofixes, documentation updates and trivial code
clean-ups.
2015-09-28 14:21:30 +00:00
wiz
c0229f9e72 Update to 2.5.2:
Fixes since v2.5.1
------------------

 * "git init empty && git -C empty log" said "bad default revision 'HEAD'",
   which was found to be a bit confusing to new users.

 * The "interpret-trailers" helper mistook a multi-paragraph title of
   a commit log message with a colon in it as the end of the trailer
   block.

 * When re-priming the cache-tree opportunistically while committing
   the in-core index as-is, we mistakenly invalidated the in-core
   index too aggressively, causing the experimental split-index code
   to unnecessarily rewrite the on-disk index file(s).

 * "git archive" did not use zip64 extension when creating an archive
   with more than 64k entries, which nobody should need, right ;-)?

 * The code in "multiple-worktree" support that attempted to recover
   from an inconsistent state updated an incorrect file.

 * "git rev-list" does not take "--notes" option, but did not complain
   when one is given.

 * Because the configuration system does not allow "alias.0foo" and
   "pager.0foo" as the configuration key, the user cannot use '0foo'
   as a custom command name anyway, but "git 0foo" tried to look these
   keys up and emitted useless warnings before saying '0foo is not a
   git command'.  These warning messages have been squelched.

 * We recently rewrote one of the build scripts in Perl, which made it
   necessary to have Perl to build Git.  Reduced Perl dependency by
   rewriting it again using sed.

 * t1509 test that requires a dedicated VM environment had some
   bitrot, which has been corrected.

 * strbuf_read() used to have one extra iteration (and an unnecessary
   strbuf_grow() of 8kB), which was eliminated.

 * The codepath to produce error messages had a hard-coded limit to
   the size of the message, primarily to avoid memory allocation while
   calling die().

 * When trying to see that an object does not exist, a state errno
   leaked from our "first try to open a packfile with O_NOATIME and
   then if it fails retry without it" logic on a system that refuses
   O_NOATIME.  This confused us and caused us to die, saying that the
   packfile is unreadable, when we should have just reported that the
   object does not exist in that packfile to the caller.

 * An off-by-one error made "git remote" to mishandle a remote with a
   single letter nickname.

 * A handful of codepaths that used to use fixed-sized arrays to hold
   pathnames have been corrected to use strbuf and other mechanisms to
   allow longer pathnames without fearing overflows.

Also contains typofixes, documentation updates and trivial code
clean-ups.
2015-09-13 09:24:32 +00:00
wiz
04cfdf1432 Update to 2.5.1:
Git v2.5.1 Release Notes
========================

Fixes since v2.5
----------------

 * Running an aliased command from a subdirectory when the .git thing
   in the working tree is a gitfile pointing elsewhere did not work.

 * Often a fast-import stream builds a new commit on top of the
   previous commit it built, and it often unconditionally emits a
   "from" command to specify the first parent, which can be omitted in
   such a case.  This caused fast-import to forget the tree of the
   previous commit and then re-read it from scratch, which was
   inefficient.  Optimize for this common case.

 * The "rev-parse --parseopt" mode parsed the option specification
   and the argument hint in a strange way to allow '=' and other
   special characters in the option name while forbidding them from
   the argument hint.  This made it impossible to define an option
   like "--pair <key>=<value>" with "pair=key=value" specification,
   which instead would have defined a "--pair=key <value>" option.

 * A "rebase" replays changes of the local branch on top of something
   else, as such they are placed in stage #3 and referred to as
   "theirs", while the changes in the new base, typically a foreign
   work, are placed in stage #2 and referred to as "ours".  Clarify
   the "checkout --ours/--theirs".

 * An experimental "untracked cache" feature used uname(2) in a
   slightly unportable way.

 * "sparse checkout" misbehaved for a path that is excluded from the
   checkout when switching between branches that differ at the path.

 * The low-level "git send-pack" did not honor 'user.signingkey'
   configuration variable when sending a signed-push.

 * An attempt to delete a ref by pushing into a repository whose HEAD
   symbolic reference points at an unborn branch that cannot be
   created due to ref D/F conflict (e.g. refs/heads/a/b exists, HEAD
   points at refs/heads/a) failed.

 * "git subtree" (in contrib/) depended on "git log" output to be
   stable, which was a no-no.  Apply a workaround to force a
   particular date format.

 * "git clone $URL" in recent releases of Git contains a regression in
   the code that invents a new repository name incorrectly based on
   the $URL.  This has been corrected.
   (merge db2e220 jk/guess-repo-name-regression-fix later to maint).

 * Running tests with the "-x" option to make them verbose had some
   unpleasant interactions with other features of the test suite.
   (merge 9b5fe78 jk/test-with-x later to maint).

 * "git pull" in recent releases of Git has a regression in the code
   that allows custom path to the --upload-pack=<program>.  This has
   been corrected.

 * pipe() emulation used in Git for Windows looked at a wrong variable
   when checking for an error from an _open_osfhandle() call.

Also contains typofixes, documentation updates and trivial code
clean-ups.
2015-08-30 16:08:06 +00:00
adam
53e7a47abd Changes 2.5.0:
UI, Workflows & Features

 * The bash completion script (in contrib/) learned a few options that
   "git revert" takes.

 * Whitespace breakages in deleted and context lines can also be
   painted in the output of "git diff" and friends with the new
   --ws-error-highlight option.

 * List of commands shown by "git help" are grouped along the workflow
   elements to help early learners.

 * "git p4" now detects the filetype (e.g. binary) correctly even when
   the files are opened exclusively.

 * git p4 attempts to better handle branches in Perforce.

 * "git p4" learned "--changes-block-size <n>" to read the changes in
   chunks from Perforce, instead of making one call to "p4 changes"
   that may trigger "too many rows scanned" error from Perforce.

 * More workaround for Perforce's row number limit in "git p4".

 * Unlike "$EDITOR" and "$GIT_EDITOR" that can hold the path to the
   command and initial options (e.g. "/path/to/emacs -nw"), 'git p4'
   did not let the shell interpolate the contents of the environment
   variable that name the editor "$P4EDITOR" (and "$EDITOR", too).
   This release makes it in line with the rest of Git, as well as with
   Perforce.

 * A new short-hand <branch>@{push} denotes the remote-tracking branch
   that tracks the branch at the remote the <branch> would be pushed
   to.

 * "git show-branch --topics HEAD" (with no other arguments) did not
   do anything interesting.  Instead, contrast the given revision
   against all the local branches by default.

 * A replacement for contrib/workdir/git-new-workdir that does not
   rely on symbolic links and make sharing of objects and refs safer
   by making the borrowee and borrowers aware of each other.

   Consider this as still an experimental feature; its UI is still
   likely to change.

 * Tweak the sample "store" backend of the credential helper to honor
   XDG configuration file locations when specified.

 * A heuristic we use to catch mistyped paths on the command line
   "git <cmd> <revs> <pathspec>" is to make sure that all the non-rev
   parameters in the later part of the command line are names of the
   files in the working tree, but that means "git grep $str -- \*.c"
   must always be disambiguated with "--", because nobody sane will
   create a file whose name literally is asterisk-dot-see.  Loosen the
   heuristic to declare that with a wildcard string the user likely
   meant to give us a pathspec.

 * "git merge FETCH_HEAD" learned that the previous "git fetch" could
   be to create an Octopus merge, i.e. recording multiple branches
   that are not marked as "not-for-merge"; this allows us to lose an
   old style invocation "git merge <msg> HEAD $commits..." in the
   implementation of "git pull" script; the old style syntax can now
   be deprecated (but not removed yet).

 * Filter scripts were run with SIGPIPE disabled on the Git side,
   expecting that they may not read what Git feeds them to filter.
   We however treated a filter that does not read its input fully
   before exiting as an error.  We no longer do and ignore EPIPE
   when writing to feed the filter scripts.

   This changes semantics, but arguably in a good way.  If a filter
   can produce its output without fully consuming its input using
   whatever magic, we now let it do so, instead of diagnosing it
   as a programming error.

 * Instead of dying immediately upon failing to obtain a lock, the
   locking (of refs etc) retries after a short while with backoff.

 * Introduce http.<url>.SSLCipherList configuration variable to tweak
   the list of cipher suite to be used with libcURL when talking with
   https:// sites.

 * "git subtree" script (in contrib/) used "echo -n" to produce
   progress messages in a non-portable way.

 * "git subtree" script (in contrib/) does not have --squash option
   when pushing, but the documentation and help text pretended as if
   it did.

 * The Git subcommand completion (in contrib/) no longer lists credential
   helpers among candidates; they are not something the end user would
   invoke interactively.

 * The index file can be taught with "update-index --untracked-cache"
   to optionally remember already seen untracked files, in order to
   speed up "git status" in a working tree with tons of cruft.

 * "git mergetool" learned to drive WinMerge as a backend.

 * "git upload-pack" that serves "git fetch" can be told to serve
   commits that are not at the tip of any ref, as long as they are
   reachable from a ref, with uploadpack.allowReachableSHA1InWant
   configuration variable.
2015-07-31 12:57:23 +00:00
adam
9a45688a7b Changes 2.4.6:
* "git fetch --depth=<depth>" and "git clone --depth=<depth>" issued
  a shallow transfer request even to an upload-pack that does not
  support the capability.
* "git fsck" used to ignore missing or invalid objects recorded in reflog.
* The tcsh completion writes a bash scriptlet but that would have
  failed for users with noclobber set.
* Recent Mac OS X updates breaks the logic to detect that the machine
  is on the AC power in the sample pre-auto-gc script.
* "git format-patch --ignore-if-upstream A..B" did not like to be fed
  tags as boundary commits.
2015-07-17 11:24:27 +00:00
wiz
40bbad7ac6 Comment out dependencies of the style
{perl>=5.16.6,p5-ExtUtils-ParseXS>=3.15}:../../devel/p5-ExtUtils-ParseXS
since pkgsrc enforces the newest perl version anyway, so they
should always pick perl, but sometimes (pkg_add) don't due to the
design of the {,} syntax.

No effective change for the above reason.

Ok joerg
2015-07-12 18:56:06 +00:00
ryoon
bd8fa27fc2 Update to 2.4.5
Changelog:
Git v2.4.5 Release Notes
========================

Fixes since v2.4.4
------------------

 * The setup code used to die when core.bare and core.worktree are set
   inconsistently, even for commands that do not need working tree.

 * There was a dead code that used to handle "git pull --tags" and
   show special-cased error message, which was made irrelevant when
   the semantics of the option changed back in Git 1.9 days.

 * "color.diff.plain" was a misnomer; give it 'color.diff.context' as
   a more logical synonym.

 * The configuration reader/writer uses mmap(2) interface to access
   the files; when we find a directory, it barfed with "Out of memory?".

 * Recent "git prune" traverses young unreachable objects to safekeep
   old objects in the reachability chain from them, which sometimes
   showed unnecessary error messages that are alarming.

 * "git rebase -i" fired post-rewrite hook when it shouldn't (namely,
   when it was told to stop sequencing with 'exec' insn).

Also contains typofixes, documentation updates and trivial code
clean-ups.


Git v2.4.4 Release Notes
========================

Fixes since v2.4.3
------------------

 * l10n updates for German.

 * An earlier leakfix to bitmap testing code was incomplete.

 * "git clean pathspec..." tried to lstat(2) and complain even for
   paths outside the given pathspec.

 * Communication between the HTTP server and http_backend process can
   lead to a dead-lock when relaying a large ref negotiation request.
   Diagnose the situation better, and mitigate it by reading such a
   request first into core (to a reasonable limit).

 * The clean/smudge interface did not work well when filtering an
   empty contents (failed and then passed the empty input through).
   It can be argued that a filter that produces anything but empty for
   an empty input is nonsense, but if the user wants to do strange
   things, then why not?

 * Make "git stash something --help" error out, so that users can
   safely say "git stash drop --help".

 * Clarify that "log --raw" and "log --format=raw" are unrelated
   concepts.

 * Catch a programmer mistake to feed a pointer not an array to
   ARRAY_SIZE() macro, by using a couple of GCC extensions.

Also contains typofixes, documentation updates and trivial code
clean-ups.
2015-07-04 05:56:29 +00:00
wiz
0982effce2 Recursive PKGREVISION bump for all packages mentioning 'perl',
having a PKGNAME of p5-*, or depending such a package,
for perl-5.22.0.
2015-06-12 10:48:20 +00:00
adam
402c14b180 Fixes since v2.4.3
------------------

 * Error messages from "git branch" called remote-tracking branches as
   "remote branches".

 * "git rerere forget" in a repository without rerere enabled gave a
   cryptic error message; it should be a silent no-op instead.

 * "git pull --log" and "git pull --no-log" worked as expected, but
   "git pull --log=20" did not.

 * The pull.ff configuration was supposed to override the merge.ff
   configuration, but it didn't.

 * The code to read pack-bitmap wanted to allocate a few hundred
   pointers to a structure, but by mistake allocated and leaked memory
   enough to hold that many actual structures.  Correct the allocation
   size and also have it on stack, as it is small enough.

 * Various documentation mark-up fixes to make the output more
   consistent in general and also make AsciiDoctor (an alternative
   formatter) happier.

 * "git bundle verify" did not diagnose extra parameters on the
   command line.

 * Multi-ref transaction support we merged a few releases ago
   unnecessarily kept many file descriptors open, risking to fail with
   resource exhaustion.

 * The ref API did not handle cases where 'refs/heads/xyzzy/frotz' is
   removed at the same time as 'refs/heads/xyzzy' is added (or vice
   versa) very well.

 * The "log --decorate" enhancement in Git 2.4 that shows the commit
   at the tip of the current branch e.g. "HEAD -> master", did not
   work with --decorate=full.

 * There was a commented-out (instead of being marked to expect
   failure) test that documented a breakage that was fixed since the
   test was written; turn it into a proper test.

 * core.excludesfile (defaulting to $XDG_HOME/git/ignore) is supposed
   to be overridden by repository-specific .git/info/exclude file, but
   the order was swapped from the beginning. This belatedly fixes it.

 * The connection initiation code for "ssh" transport tried to absorb
   differences between the stock "ssh" and Putty-supplied "plink" and
   its derivatives, but the logic to tell that we are using "plink"
   variants were too loose and falsely triggered when "plink" appeared
   anywhere in the path (e.g. "/home/me/bin/uplink/ssh").

 * "git rebase -i" moved the "current" command from "todo" to "done" a
   bit too prematurely, losing a step when a "pick" did not even start.

 * "git add -e" did not allow the user to abort the operation by
   killing the editor.

 * Git 2.4 broke setting verbosity and progress levels on "git clone"
   with native transports.

 * Some time ago, "git blame" (incorrectly) lost the convert_to_git()
   call when synthesizing a fake "tip" commit that represents the
   state in the working tree, which broke folks who record the history
   with LF line ending to make their project portabile across
   platforms while terminating lines in their working tree files with
   CRLF for their platform.

 * Code clean-up for xdg configuration path support.

Also contains typofixes, documentation updates and trivial code
clean-ups.
2015-06-06 09:59:07 +00:00
ryoon
fe78233447 Update git packages to 2.4.2
Changelog:
Git v2.4.2 Release Notes
========================

Fixes since v2.4.1
------------------

 * "git rev-list --objects $old --not --all" to see if everything that
   is reachable from $old is already connected to the existing refs
   was very inefficient.

 * "hash-object --literally" introduced in v2.2 was not prepared to
   take a really long object type name.

 * "git rebase --quiet" was not quite quiet when there is nothing to
   do.

 * The completion for "log --decorate=" parameter value was incorrect.

 * "filter-branch" corrupted commit log message that ends with an
   incomplete line on platforms with some "sed" implementations that
   munge such a line.  Work it around by avoiding to use "sed".

 * "git daemon" fails to build from the source under NO_IPV6
   configuration (regression in 2.4).

 * "git stash pop/apply" forgot to make sure that not just the working
   tree is clean but also the index is clean. The latter is important
   as a stash application can conflict and the index will be used for
   conflict resolution.

 * We have prepended $GIT_EXEC_PATH and the path "git" is installed in
   (typically "/usr/bin") to $PATH when invoking subprograms and hooks
   for almost eternity, but the original use case the latter tried to
   support was semi-bogus (i.e. install git to /opt/foo/git and run it
   without having /opt/foo on $PATH), and more importantly it has
   become less and less relevant as Git grew more mainstream (i.e. the
   users would _want_ to have it on their $PATH).  Stop prepending the
   path in which "git" is installed to users' $PATH, as that would
   interfere the command search order people depend on (e.g. they may
   not like versions of programs that are unrelated to Git in /usr/bin
   and want to override them by having different ones in /usr/local/bin
   and have the latter directory earlier in their $PATH).

Also contains typofixes, documentation updates and trivial code
clean-ups.
2015-05-31 22:28:36 +00:00
adam
65f67004ec 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.
2015-05-18 12:51:37 +00:00
adam
59626ebf7f Changes 2.3.6:
* "diff-highlight" (in contrib/) used to show byte-by-byte
   differences, which meant that multi-byte characters can be chopped
   in the middle.  It learned to pay attention to character boundaries
   (assuming the UTF-8 payload).
Also contains typofixes, documentation updates and trivial code
clean-ups.
2015-04-25 09:02:45 +00:00
adam
5e1356c3d4 Changes 2.3.5:
* The prompt script (in contrib/) did not show the untracked sign
  when working in a subdirectory without any untracked files.

* Even though "git grep --quiet" is run merely to ask for the exit
  status, we spawned the pager regardless.  Stop doing that.

* Recommend format-patch and send-email for those who want to submit
  patches to this project.

* An failure early in the "git clone" that started creating the
  working tree and repository could have resulted in some directories
  and files left without getting cleaned up.

* "git fetch" that fetches a commit using the allow-tip-sha1-in-want
  extension could have failed to fetch all the requested refs.

* The split-index mode introduced at v2.3.0-rc0~41 was broken in the
  codepath to protect us against a broken reimplementation of Git
  that writes an invalid index with duplicated index entries, etc.

* "git prune" used to largely ignore broken refs when deciding which
  objects are still being used, which could spread an existing small
  damage and make it a larger one.

* "git tag -h" used to show the "--column" and "--sort" options
  that are about listing in a wrong section.

* The transfer.hiderefs support did not quite work for smart-http
  transport.

* The code that reads from the ctags file in the completion script
  (in contrib/) did not spell ${param/pattern/string} substitution
  correctly, which happened to work with bash but not with zsh.

* The explanation on "rebase --preserve-merges", "pull --rebase=preserve",
  and "push --force-with-lease" in the documentation was unclear.
2015-04-08 10:37:07 +00:00
adam
e797f69c10 Changes 2.3.1:
* "update-index --refresh" used to leak when an entry cannot be
  refreshed for whatever reason.

* "git fast-import" used to crash when it could not close and
  conclude the resulting packfile cleanly.

* "git blame" died, trying to free an uninitialized piece of memory.

* "git merge-file" did not work correctly in a subdirectory.

* "git submodule add" failed to squash "path/to/././submodule" to
  "path/to/submodule".

* In v2.2.0, we broke "git prune" that runs in a repository that
  borrows from an alternate object store.

* Certain older vintages of cURL give irregular output from
  "curl-config --vernum", which confused our build system.

* An earlier workaround to squelch unhelpful deprecation warnings
  from the complier on Mac OSX unnecessarily set minimum required
  version of the OS, which the user might want to raise (or lower)
  for other reasons.

* Longstanding configuration variable naming rules has been added to
  the documentation.

* The credential helper for Windows (in contrib/) used to mishandle
  a user name with an at-sign in it.

* Older GnuPG implementations may not correctly import the keyring
  material we prepare for the tests to use.

* Clarify in the documentation that "remote.<nick>.pushURL" and
  "remote.<nick>.URL" are there to name the same repository accessed
  via different transports, not two separate repositories.

* The pack bitmap support did not build with older versions of GCC.

* Reading configuration from a blob object, when it ends with a lone
  CR, use to confuse the configuration parser.

* We didn't format an integer that wouldn't fit in "int" but in
  "uintmax_t" correctly.

* "git push --signed" gave an incorrectly worded error message when
  the other side did not support the capability.

* "git fetch" over a remote-helper that cannot respond to "list"
  command could not fetch from a symbolic reference e.g. HEAD.

* The insn sheet "git rebase -i" creates did not fully honor
  core.abbrev settings.

* The tests that wanted to see that file becomes unreadable after
  running "chmod a-r file", and the tests that wanted to make sure it
  is not run as root, we used "can we write into the / directory?" as
  a cheap substitute, but on some platforms that is not a good
  heuristics.  The tests and their prerequisites have been updated to
  check what they really require.

* The configuration variable 'mailinfo.scissors' was hard to
  discover in the documentation.

* Correct a breakage to git-svn around v2.2 era that triggers
  premature closing of FileHandle.

* Even though we officially haven't dropped Perl 5.8 support, the
  Getopt::Long package that came with it does not support "--no-"
  prefix to negate a boolean option; manually add support to help
  people with older Getopt::Long package.
2015-03-08 08:12:56 +00:00
adam
2581d9d1c6 Changes 2.3.0:
This one ended up to be a release with lots of small corrections and
improvements without big uncomfortably exciting features.  The recent
security fix that went to 2.2.1 and older maintenance tracks is also
contained in this update.
2015-02-08 09:02:11 +00:00
adam
498d94cb17 Changes 2.2.2:
* "git checkout $treeish $path", when $path in the index and the
  working tree already matched what is in $treeish at the $path,
  still overwrote the $path unnecessarily.
* "git config --get-color" did not parse its command line arguments
  carefully.
* open() emulated on Windows platforms did not give EISDIR upon
  an attempt to open a directory for writing.
* A few code paths used abs() when they should have used labs() on
  long integers.
* "gitweb" used to depend on a behaviour recent CGI.pm deprecated.
* "git init" (hence "git clone") initialized the per-repository
  configuration file .git/config with x-bit by mistake.
* Git 2.0 was supposed to make the "simple" mode for the default of
  "git push", but it didn't.
* "Everyday" document had a broken link.
* The build procedure did not bother fixing perl and python scripts
  when NO_PERL and NO_PYTHON build-time configuration changed.
* The code that reads the reflog from the newer to the older entries
  did not handle an entry that crosses a boundary of block it uses to
  read them correctly.
* "git apply" was described in the documentation to take --ignore-date
  option, which it does not.
* Traditionally we tried to avoid interpreting date strings given by
  the user as future dates, e.g. GIT_COMMITTER_DATE=2014-12-10 when
  used early November 2014 was taken as "October 12, 2014" because it
  is likely that a date in the future, December 10, is a mistake.
  This heuristics has been loosened to allow people to express future
  dates (most notably, --until=<date> may want to be far in the
  future) and we no longer tiebreak by future-ness of the date when
   (1) ISO-like format is used, and
   (2) the string can make sense interpreted as both y-m-d and y-d-m.
  Git may still have to use the heuristics to tiebreak between dd/mm/yy
  and mm/dd/yy, though.
* The code to abbreviate an object name to its short unique prefix
  has been optimized when no abbreviation was requested.
* "git add --ignore-errors ..." did not ignore an error to
  give a file that did not exist.
* Git did not correctly read an overlong refname from a packed refs
  file.
Also contains typofixes, documentation updates and trivial code clean-ups.
2015-01-19 15:42:42 +00:00
schmonz
9a1384c382 Update to 2.2.1. From the changelog:
* We used to allow committing a path ".Git/config" with Git that is
  running on a case sensitive filesystem, but an attempt to check out
  such a path with Git that runs on a case insensitive filesystem
  would have clobbered ".git/config", which is definitely not what
  the user would have expected.  Git now prevents you from tracking
  a path with ".Git" (in any case combination) as a path component.

* On Windows, certain path components that are different from ".git"
  are mapped to ".git", e.g. "git~1/config" is treated as if it were
  ".git/config".  HFS+ has a similar issue, where certain unicode
  codepoints are ignored, e.g. ".g\u200cit/config" is treated as if
  it were ".git/config".  Pathnames with these potential issues are
  rejected on the affected systems.  Git on systems that are not
  affected by this issue (e.g. Linux) can also be configured to
  reject them to ensure cross platform interoperability of the hosted
  projects.

* "git fsck" notices a tree object that records such a path that can
  be confused with ".git", and with receive.fsckObjects configuration
  set to true, an attempt to "git push" such a tree object will be
  rejected.  Such a path may not be a problem on some filesystems
  but in order to protect those on HFS+ and on case insensitive
  filesystems, this check is enabled on all platforms.

A big "thanks!" for bringing this issue to us goes to our friends in
the Mercurial land, namely, Matt Mackall and Augie Fackler.

Also contains typofixes, documentation updates and trivial code clean-ups.

Changes since v2.2.0 are as follows:

Hartmut Henkel (1):
      l10n: de.po: fix typos

Jeff King (8):
      unpack-trees: propagate errors adding entries to the index
      read-tree: add tests for confusing paths like ".." and ".git"
      verify_dotfile(): reject .git case-insensitively
      t1450: refactor ".", "..", and ".git" fsck tests
      fsck: notice .git case-insensitively
      utf8: add is_hfs_dotgit() helper
      read-cache: optionally disallow HFS+ .git variants
      fsck: complain about HFS+ ".git" aliases in trees

Johannes Schindelin (3):
      path: add is_ntfs_dotgit() helper
      read-cache: optionally disallow NTFS .git variants
      fsck: complain about NTFS ".git" aliases in trees
2014-12-19 00:49:53 +00:00
adam
11015567e8 Changes 2.2.0:
Ports
* Building on older MacOS X systems automatically sets
  the necessary NO_APPLE_COMMON_CRYPTO build-time option.
* Building with NO_PTHREADS has been resurrected.
* Compilation options have been updated a bit to better support the
  z/OS port.

UI, Workflows & Features
* "git archive" learned to filter what gets archived with a pathspec.
* "git config --edit --global" starts from a skeletal per-user
  configuration file contents, instead of a total blank, when the
  user does not already have any global config.  This immediately
  reduces the need to later ask "Have you forgotten to set
  core.user?", and we can add more to the template as we gain
  more experience.
* "git stash list -p" used to be almost always a no-op because each
  stash entry is represented as a merge commit.  It learned to show
  the difference between the base commit version and the working tree
  version, which is in line with what "git stash show" gives.
* Sometimes users want to report a bug they experience on their
  repository, but they are not at liberty to share the contents of
  the repository.  "fast-export" was taught an "--anonymize" option
  to replace blob contents, names of people, paths and log
  messages with bland and simple strings to help them.
* "git difftool" learned an option to stop feeding paths to the
  diff backend when it exits with a non-zero status.
* "git grep" learned to paint (or not paint) partial matches on
  context lines when showing "grep -C<num>" output in color.
* "log --date=iso" uses a slight variant of the ISO 8601 format that is
  more human readable.  A new "--date=iso-strict" option gives
  datetime output that conforms more strictly.
* The logic "git prune" uses is more resilient against various corner
  cases.
* A broken reimplementation of Git could write an invalid index that
  records both stage 0 and higher-stage entries for the same path.
  We now notice and reject such an index, as there is no sensible
  fallback (we do not know if the broken tool wanted to resolve and
  forgot to remove the higher-stage entries, or if it wanted to unresolve
  and forgot to remove the stage 0 entry).
* The temporary files "git mergetool" uses are renamed to avoid too
  many dots in them (e.g. a temporary file for "hello.c" used to be
  named e.g. "hello.BASE.4321.c" but now uses underscore instead,
  e.g. "hello_BASE_4321.c", to allow us to have multiple variants).
* The temporary files "git mergetool" uses can be placed in a newly
  created temporary directory, instead of the current directory, by
  setting the mergetool.writeToTemp configuration variable.
* "git mergetool" understands "--tool bc" now, as version 4 of
  BeyondCompare can be driven the same way as its version 3 and it
  feels awkward to say "--tool bc3" to run version 4.
* The "pre-receive" and "post-receive" hooks are no longer required
  to consume their input fully (not following this requirement used
  to result in intermittent errors in "git push").
* The pretty-format specifier "%d", which expands to " (tagname)"
  for a tagged commit, gained a cousin "%D" that just gives the
  "tagname" without frills.
* "git push" learned "--signed" push, that allows a push (i.e.
  request to update the refs on the other side to point at a new
  history, together with the transmission of necessary objects) to be
  signed, so that it can be verified and audited, using the GPG
  signature of the person who pushed, that the tips of branches at a
  public repository really point the commits the pusher wanted to,
  without having to "trust" the server.
* "git interpret-trailers" is a new filter to programmatically edit
  the tail end of the commit log messages, e.g. "Signed-off-by:".
* "git help everyday" shows the "Everyday Git in 20 commands or so"
  document, whose contents have been updated to match more modern
  Git practice.
* On the "git svn" front, work progresses to reduce memory consumption and
  to improve handling of mergeinfo.
2014-11-30 18:43:41 +00:00
bsiegert
8259160428 Do not attempt to set ownership of some files, this breaks unprivileged
builds on Mac OS X Tiger.

Patch provided by Sevan Janiyan in PR pkg/49051.
2014-11-20 21:43:10 +00:00
adam
6762903443 Changes 2.1.3:
* Some MUAs mangled a line in a message that begins with "From " to
  ">From " when writing to a mailbox file and feeding such an input to
  "git am" used to lose such a line.
* "git daemon" (with NO_IPV6 build configuration) used to incorrectly
  use the hostname even when gethostbyname() reported that the given
  hostname is not found.
* Newer versions of 'meld' breaks the auto-detection we use to see if
  they are new enough to support the `--output` option.
* "git pack-objects" forgot to disable the codepath to generate
  object recheability bitmap when it needs to split the resulting
  pack.
* "gitweb" used deprecated CGI::startfrom, which was removed from
  CGI.pm as of 4.04; use CGI::start_from instead.
* "git log" documentation had an example section marked up not
  quite correctly, which passed AsciiDoc but failed with
  AsciiDoctor.
Also contains some documentation updates.
2014-11-01 11:34:00 +00:00
adam
1862d7a2a6 Changes 2.1.2:
* "git push" over HTTP transport had an artificial limit on number of
  refs that can be pushed imposed by the command line length.
* When receiving an invalid pack stream that records the same object
  twice, multiple threads got confused due to a race.
* An attempt to remove the entire tree in the "git fast-import" input
  stream caused it to misbehave.
* Reachability check (used in "git prune" and friends) did not add a
  detached HEAD as a starting point to traverse objects still in use.
* "git config --add section.var val" used to lose existing
  section.var whose value was an empty string.
* "git fsck" failed to report that it found corrupt objects via its
  exit status in some cases.
2014-10-01 12:08:24 +00:00
adam
971b663ae7 Changes 2.1.0:
Backward compatibility notes
----------------------------
 * The default value we give to the environment variable LESS has been
   changed from "FRSX" to "FRX", losing "S" (chop long lines instead
   of wrapping).  Existing users who prefer not to see line-wrapped
   output may want to set
     $ git config core.pager "less -S"
   to restore the traditional behaviour.  It is expected that people
   find output from most subcommands easier to read with the new
   default, except for "blame" which tends to produce really long
   lines.  To override the new default only for "git blame", you can
   do this:
     $ git config pager.blame "less -S"
 * A few disused directories in contrib/ have been retired.

Updates since v2.0
------------------
UI, Workflows & Features
 * Since the very beginning of Git, we gave the LESS environment a
   default value "FRSX" when we spawn "less" as the pager.  "S" (chop
   long lines instead of wrapping) has been removed from this default
   set of options, because it is more or less a personal taste thing,
   as opposed to the others that have good justifications (i.e. "R" is
   very much justified because many kinds of output we produce are
   colored and "FX" is justified because output we produce is often
   shorter than a page).
 * The logic and data used to compute the display width needed for
   UTF-8 strings have been updated to match Unicode 7.0 better.
 * HTTP-based transports learned to better propagate the error messages from
   the webserver to the client coming over the HTTP transport.
 * The completion script for bash (in contrib/) has been updated to
   better handle aliases that define a complex sequence of commands.
 * The "core.preloadindex" configuration variable is enabled by default,
   allowing modern platforms to take advantage of their
   multiple cores.
 * "git clone" applies the "if cloning from a local disk, physically
   copy the repository using hardlinks, unless otherwise told not to with
   --no-local" optimization when the url.*.insteadOf mechanism rewrites a
   remote-repository "git clone $URL" into a
   clone from a local disk.
 * "git commit --date=<date>" option learned more
   timestamp formats, including "--date=now".
 * The `core.commentChar` configuration variable is used to specify a
   custom comment character (other than the default "#") for
   the commit message editor.  This can be set to `auto` to attempt to
   choose a different character that does not conflict with any that
   already starts a line in the message being edited, for cases like
   "git commit --amend".
 * "git format-patch" learned --signature-file=<file> to add the contents
   of a file as a signature to the mail message it produces.
 * "git grep" learned the grep.fullname configuration variable to force
   "--full-name" to be the default.  This may cause regressions for
   scripted users who do not expect this new behaviour.
 * "git imap-send" learned to ask the credential helper for auth
   material.
 * "git log" and friends now understand the value "auto" for the
   "log.decorate" configuration variable to enable the "--decorate"
   option automatically when the output is sent to tty.
 * "git merge" without an argument, even when there is an upstream
   defined for the current branch, refused to run until
   merge.defaultToUpstream is set to true.  Flip the default of that
   configuration variable to true.
 * "git mergetool" learned to drive the vimdiff3 backend.
 * mergetool.prompt used to default to 'true', always asking "do you
   really want to run the tool on this path?".  The default has been
   changed to 'false'.  However, the prompt will still appear if
   mergetool used its autodetection system to guess which tool to use.
   Users who explicitly specify or configure a tool will no longer see
   the prompt by default.
   Strictly speaking, this is a backward incompatible change and
   users need to explicitly set the variable to 'true' if they want
   to be prompted to confirm running the tool on each path.
 * "git replace" learned the "--edit" subcommand to create a
   replacement by editing an existing object.
 * "git replace" learned a "--graft" option to rewrite the parents of a
   commit.
 * "git send-email" learned "--to-cover" and "--cc-cover" options, to
   tell it to copy To: and Cc: headers found in the first input file
   when emitting later input files.
 * "git svn" learned to cope with malformed timestamps with only one
   digit in the hour part, e.g. 2014-01-07T5:01:02.048176Z, emitted
   by some broken subversion server implementations.
 * "git tag" when editing the tag message shows the name of the tag
   being edited as a comment in the editor.
 * "git tag" learned to pay attention to "tag.sort" configuration, to
   be used as the default sort order when no --sort=<value> option
   is given.
 * A new "git verify-commit" command, to check GPG signatures in signed
   commits, in a way similar to "git verify-tag" is used to check
   signed tags, was added.
2014-08-25 07:49:08 +00:00