2015-03-08 09:12:56 by Adam Ciarcinski | Files touched by this commit (2) | |
Log message:
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-02-08 10:02:11 by Adam Ciarcinski | Files touched by this commit (2) | |
Log message:
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-01-19 16:42:42 by Adam Ciarcinski | Files touched by this commit (2) | |
Log message:
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.
|
2014-12-19 01:49:53 by Amitai Schlair | Files touched by this commit (2) | |
Log message:
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-11-30 19:43:42 by Adam Ciarcinski | Files touched by this commit (5) | |
Log message:
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-01 12:34:00 by Adam Ciarcinski | Files touched by this commit (2) | |
Log message:
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-10-01 14:08:24 by Adam Ciarcinski | Files touched by this commit (3) |
Log message:
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-08-25 09:49:08 by Adam Ciarcinski | Files touched by this commit (7) | |
Log message:
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-06-02 18:32:37 by Adam Ciarcinski | Files touched by this commit (5) |
Log message:
Fixes since v1.9.3
------------------
* Commands that take pathspecs on the command line misbehaved when
the pathspec is given as an absolute pathname (which is a
practice not particularly encouraged) that points at a symbolic
link in the working tree.
* An earlier fix to the shell prompt script (in contrib/) for using
the PROMPT_COMMAND interface did not correctly check if the extra
code path needs to trigger, causing the branch name not to appear
when 'promptvars' option is disabled in bash or PROMPT_SUBST is
unset in zsh.
|
2014-05-10 13:43:30 by Adam Ciarcinski | Files touched by this commit (4) |
Log message:
Changes 1.9.3:
* "git p4" dealing with changes in binary files were broken by a
change in 1.9 release.
* The shell prompt script (in contrib/), when using the PROMPT_COMMAND
interface, used an unsafe construct when showing the branch name in
$PS1.
* "git rebase" used a POSIX shell construct FreeBSD /bin/sh does not
work well with.
* Some more Unicode codepoints defined in Unicode 6.3 as having
zero width have been taught to our display column counting logic.
* Some tests used shell constructs that did not work well on
FreeBSD.
|