Git 2.7.0 RC0 发布,Git 2.7.0 更新内容如下:
UI, Workflows & Features
- "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
varible 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 tranfer.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.
Performance, Internal Implementation, Development Support etc.
-
The infrastructure to rewrite "git submodule" in C is being built
- Let's polish these early parts well enough and make
- graduate to 'next' and 'master', so that the more involved
follow-up can start cooking on a solid ground.
- Some features from "git tag -l" and "git branch -l" have been made
available to "git for-each-ref" so that eventually the unified
implementation can be shared across all three. The version merged
to the 'master' branch earlier had a performance regression in "tag
--contains", which has since been corrected.
- Because "test_when_finished" in our test framework queues the
clean-up tasks to be done in a shell variable, it should not be
used inside a subshell. Add a mechanism to allow 'bash' to catch
such uses, and fix the ones that were found.
- The debugging infrastructure for pkt-line based communication has
been improved to mark the side-band communication specifically.
(merge fd89433 jk/async-pkt-line later to maint).
- Update "git branch" that list existing branches, using the
ref-filter API that is shared with "git tag" and "git
for-each-ref".
- The test for various line-ending conversions has been enhanced.
- A few test scripts around "git p4" have been improved for
portability. - Many allocations that is manually counted (correctly) that are
followed by strcpy/sprintf have been replaced with a less error
prone constructs such as xstrfmt.
- 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.
- "git am" used to spawn "git mailinfo" via run_command() API once
per each patch, but learned to make a direct call to mailinfo()
instead.
- The implementation of "git mailinfo" was refactored so that a
mailinfo() function can be directly called from inside a process. - With a "debug" helper, debugging of a single "git" invocation in
our test scripts has become a lot easier. - The "configure" script did not test for -lpthread correctly, which
upset some linkers. - Cross completed task off of subtree project's todo list.
- Test cleanups for the subtree project.
- Clean up style in an ancient test t9300.
- Work around some test flakiness with p4d.
- Fsck did not correctly detect a NUL-truncated header in a tag.
- Use a safer behavior when we hit errors verifying remote certificates.
- Speed up filter-branch for cases where we only care about rewriting
commits, not tree data. - The parse-options API has been updated to make "-h" command line
option work more consistently in all commands. - "git svn rebase/mkdirs" got optimized by keeping track of empty
directories better. - Fix some racy client/server tests by treating SIGPIPE the same as a
normal non-zero exit. - The necessary infrastructure to build topics using the free Travis
CI has been added. Developers forking from this topic (and enabling
Travis) can do their own builds, and we can turn on auto-builds for
git/git (including build-status for pull requests that people
open).
下载:https://github.com/git/git/archive/v2.7.0-rc0.zip
详细改进请看更新日志:https://github.com/git/git/blob/master/Documentation/RelNotes/2.7.0.txt
Git是一个开源的分布式版本控制系统,用以有效、高速的处理从很小到非常大的项目版本管理。
开源中国 Git 代码托管平台:http://git.oschina.net/
文章转载自 开源中国社区[https://www.oschina.net]