mirror of
https://github.com/git/git.git
synced 2024-12-04 15:34:05 +08:00
c3c135291a
Signed-off-by: Junio C Hamano <gitster@pobox.com>
378 lines
14 KiB
Plaintext
378 lines
14 KiB
Plaintext
GIT v1.5.4 Release Notes
|
|
========================
|
|
|
|
Removal
|
|
-------
|
|
|
|
* "git svnimport" was removed in favor of "git svn". It is still there
|
|
in the source tree (contrib/examples) but unsupported.
|
|
|
|
* As git-commit and git-status have been rewritten, "git runstatus"
|
|
helper script lost all its users and has been removed.
|
|
|
|
|
|
Temporarily disabled
|
|
--------------------
|
|
|
|
* "git http-push" is known not to work well with cURL library older
|
|
than 7.16, and we had reports of repository corruption. It is
|
|
disabled on such platforms for now. Unfortunately, 1.5.3.8 shares
|
|
the same issue. In other words, this does not mean you will be
|
|
fine if you stick to an older git release. For now, please do not
|
|
use http-push from older git with cURL older than 7.16 if you
|
|
value your data. A proper fix will hopefully materialize in
|
|
later versions.
|
|
|
|
|
|
Deprecation notices
|
|
-------------------
|
|
|
|
* From v1.6.0, git will by default install dashed form of commands
|
|
(e.g. "git-commit") outside of users' normal $PATH, and will install
|
|
only selected commands ("git" itself, and "gitk") in $PATH. This
|
|
implies:
|
|
|
|
- Using dashed forms of git commands (e.g. "git-commit") from the
|
|
command line has been informally deprecated since early 2006, but
|
|
now it officially is, and will be removed in the future. Use
|
|
dash-less forms (e.g. "git commit") instead.
|
|
|
|
- Using dashed forms from your scripts, without first prepending the
|
|
return value from "git --exec-path" to the scripts' PATH, has been
|
|
informally deprecated since early 2006, but now it officially is.
|
|
|
|
- Use of dashed forms with "PATH=$(git --exec-path):$PATH; export
|
|
PATH" early in your script is not deprecated with this change.
|
|
|
|
Users are strongly encouraged to adjust their habits and scripts now
|
|
to prepare for this change.
|
|
|
|
* The post-receive hook was introduced in March 2007 to supersede
|
|
the post-update hook, primarily to overcome the command line length
|
|
limitation of the latter. Use of post-update hook will be deprecated
|
|
in future versions of git, starting from v1.6.0.
|
|
|
|
* "git lost-found" was deprecated in favor of "git fsck"'s --lost-found
|
|
option, and will be removed in the future.
|
|
|
|
* "git peek-remote" is deprecated, as "git ls-remote" was written in C
|
|
and works for all transports; "git peek-remote" will be removed in
|
|
the future.
|
|
|
|
* "git repo-config" which was an old name for "git config" command
|
|
has been supported without being advertised for a long time. The
|
|
next feature release will remove it.
|
|
|
|
* From v1.6.0, the repack.usedeltabaseoffset config option will default
|
|
to true, which will give denser packfiles (i.e. more efficient storage).
|
|
The downside is that git older than version 1.4.4 will not be able
|
|
to directly use a repository packed using this setting.
|
|
|
|
* From v1.6.0, the pack.indexversion config option will default to 2,
|
|
which is slightly more efficient, and makes repacking more immune to
|
|
data corruptions. Git older than version 1.5.2 may revert to version 1
|
|
of the pack index with a manual "git index-pack" to be able to directly
|
|
access corresponding pack files.
|
|
|
|
|
|
Updates since v1.5.3
|
|
--------------------
|
|
|
|
* Comes with much improved gitk, with i18n.
|
|
|
|
* Comes with git-gui 0.9.2 with i18n.
|
|
|
|
* gitk is now merged as a subdirectory of git.git project, in
|
|
preparation for its i18n.
|
|
|
|
* progress displays from many commands are a lot nicer to the eye.
|
|
Transfer commands show throughput data.
|
|
|
|
* many commands that pay attention to per-directory .gitignore now do
|
|
so lazily, which makes the usual case go much faster.
|
|
|
|
* Output processing for '--pretty=format:<user format>' has been
|
|
optimized.
|
|
|
|
* Rename detection of diff family while detecting exact matches has
|
|
been greatly optimized.
|
|
|
|
* Rename detection of diff family tries to make more natural looking
|
|
pairing. Earlier, if multiple identical rename sources were
|
|
found in the preimage, the source used was picked pretty much at random.
|
|
|
|
* Value "true" for color.diff and color.status configuration used to
|
|
mean "always" (even when the output is not going to a terminal).
|
|
This has been corrected to mean the same thing as "auto".
|
|
|
|
* "git diff" Porcelain now respects diff.external configuration, which
|
|
is another way to specify GIT_EXTERNAL_DIFF.
|
|
|
|
* "git diff" can be told to use different prefixes other than
|
|
"a/" and "b/" e.g. "git diff --src-prefix=l/ --dst-prefix=k/".
|
|
|
|
* "git diff" sometimes did not quote paths with funny
|
|
characters properly.
|
|
|
|
* "git log" (and any revision traversal commands) misbehaved
|
|
when --diff-filter is given but was not asked to actually
|
|
produce diff.
|
|
|
|
* HTTP proxy can be specified per remote repository using
|
|
remote.*.httpproxy configuration, or global http.proxy configuration
|
|
variable.
|
|
|
|
* Various Perforce importer updates.
|
|
|
|
* Example update and post-receive hooks have been improved.
|
|
|
|
* Any command that wants to take a commit object name can now use
|
|
":/string" syntax to name a commit.
|
|
|
|
* "git reset" is now built-in and its output can be squelched with -q.
|
|
|
|
* "git reset --hard" does not make any sense in a bare
|
|
repository, but did not error out; fixed.
|
|
|
|
* "git send-email" can optionally talk over ssmtp and use SMTP-AUTH.
|
|
|
|
* "git rebase" learned --whitespace option.
|
|
|
|
* In "git rebase", when you decide not to replay a particular change
|
|
after the command stopped with a conflict, you can say "git rebase
|
|
--skip" without first running "git reset --hard", as the command now
|
|
runs it for you.
|
|
|
|
* "git rebase --interactive" mode can now work on detached HEAD.
|
|
|
|
* Other minor to serious bugs in "git rebase -i" have been fixed.
|
|
|
|
* "git rebase" now detaches head during its operation, so after a
|
|
successful "git rebase" operation, the reflog entry branch@{1} for
|
|
the current branch points at the commit before the rebase was
|
|
started.
|
|
|
|
* "git rebase -i" also triggers rerere to help your repeated merges.
|
|
|
|
* "git merge" can call the "post-merge" hook.
|
|
|
|
* "git pack-objects" can optionally run deltification with multiple
|
|
threads.
|
|
|
|
* "git archive" can optionally substitute keywords in files marked with
|
|
export-subst attribute.
|
|
|
|
* "git cherry-pick" made a misguided attempt to repeat the original
|
|
command line in the generated log message, when told to cherry-pick a
|
|
commit by naming a tag that points at it. It does not anymore.
|
|
|
|
* "git for-each-ref" learned %(xxxdate:<date-format>) syntax to show the
|
|
various date fields in different formats.
|
|
|
|
* "git gc --auto" is a low-impact way to automatically run a variant of
|
|
"git repack" that does not lose unreferenced objects (read: safer
|
|
than the usual one) after the user accumulates too many loose
|
|
objects.
|
|
|
|
* "git clean" has been rewritten in C.
|
|
|
|
* You need to explicitly set clean.requireForce to "false" to allow
|
|
"git clean" without -f to do any damage (lack of the configuration
|
|
variable used to mean "do not require -f option to lose untracked
|
|
files", but we now use the safer default).
|
|
|
|
* The kinds of whitespace errors "git diff" and "git apply" notice (and
|
|
fix) can be controlled via 'core.whitespace' configuration variable
|
|
and 'whitespace' attribute in .gitattributes file.
|
|
|
|
* "git push" learned --dry-run option to show what would happen if a
|
|
push is run.
|
|
|
|
* "git push" does not update a tracking ref on the local side when the
|
|
remote refused to update the corresponding ref.
|
|
|
|
* "git push" learned --mirror option. This is to push the local refs
|
|
one-to-one to the remote, and deletes refs from the remote that do
|
|
not exist anymore in the repository on the pushing side.
|
|
|
|
* "git push" can remove a corrupt ref at the remote site with the usual
|
|
":ref" refspec.
|
|
|
|
* "git remote" knows --mirror mode. This is to set up configuration to
|
|
push into a remote repository to store local branch heads to the same
|
|
branch on the remote side, and remove branch heads locally removed
|
|
from local repository at the same time. Suitable for pushing into a
|
|
back-up repository.
|
|
|
|
* "git remote" learned "rm" subcommand.
|
|
|
|
* "git cvsserver" can be run via "git shell". Also, "cvs" is
|
|
recognized as a synonym for "git cvsserver", so that CVS users
|
|
can be switched to git just by changing their login shell.
|
|
|
|
* "git cvsserver" acts more like receive-pack by running post-receive
|
|
and post-update hooks.
|
|
|
|
* "git am" and "git rebase" are far less verbose.
|
|
|
|
* "git pull" learned to pass --[no-]ff option to underlying "git
|
|
merge".
|
|
|
|
* "git pull --rebase" is a different way to integrate what you fetched
|
|
into your current branch.
|
|
|
|
* "git fast-export" produces data-stream that can be fed to fast-import
|
|
to reproduce the history recorded in a git repository.
|
|
|
|
* "git add -i" takes pathspecs to limit the set of files to work on.
|
|
|
|
* "git add -p" is a short-hand to go directly to the selective patch
|
|
subcommand in the interactive command loop and to exit when done.
|
|
|
|
* "git add -i" UI has been colorized. The interactive prompt
|
|
and menu can be colored by setting color.interactive
|
|
configuration. The diff output (including the hunk picker)
|
|
are colored with color.diff configuration.
|
|
|
|
* "git commit --allow-empty" allows you to create a single-parent
|
|
commit that records the same tree as its parent, overriding the usual
|
|
safety valve.
|
|
|
|
* "git commit --amend" can amend a merge that does not change the tree
|
|
from its first parent.
|
|
|
|
* "git commit" used to unconditionally strip comment lines that
|
|
began with '#' and removed excess blank lines. This behavior has
|
|
been made configurable.
|
|
|
|
* "git commit" has been rewritten in C.
|
|
|
|
* "git stash random-text" does not create a new stash anymore. It was
|
|
a UI mistake. Use "git stash save random-text", or "git stash"
|
|
(without extra args) for that.
|
|
|
|
* "git stash clear extra-text" does not clear the whole stash
|
|
anymore. It is tempting to expect "git stash clear stash@{2}"
|
|
to drop only a single named stash entry, and it is rude to
|
|
discard everything when that is asked (but not provided).
|
|
|
|
* "git prune --expire <time>" can exempt young loose objects from
|
|
getting pruned.
|
|
|
|
* "git branch --contains <commit>" can list branches that are
|
|
descendants of a given commit.
|
|
|
|
* "git log" learned --early-output option to help interactive GUI
|
|
implementations.
|
|
|
|
* "git bisect" learned "skip" action to mark untestable commits.
|
|
|
|
* "git bisect visualize" learned a shorter synonym "git bisect view".
|
|
|
|
* "git bisect visualize" runs "git log" in a non-windowed
|
|
environments. It also can be told what command to run (e.g. "git
|
|
bisect visualize tig").
|
|
|
|
* "git format-patch" learned "format.numbered" configuration variable
|
|
to automatically turn --numbered option on when more than one commits
|
|
are formatted.
|
|
|
|
* "git ls-files" learned "--exclude-standard" to use the canned set of
|
|
exclude files.
|
|
|
|
* "git tag -a -f existing" begins the editor session using the existing
|
|
annotation message.
|
|
|
|
* "git tag -m one -m bar" (multiple -m options) behaves similarly to
|
|
"git commit"; the parameters to -m options are formatted as separate
|
|
paragraphs.
|
|
|
|
* The format "git show" outputs an annotated tag has been updated to
|
|
include "Tagger: " and "Date: " lines from the tag itself. Strictly
|
|
speaking this is a backward incompatible change, but this is a
|
|
reasonable usability fix and people's scripts shouldn't have been
|
|
relying on the exact output from "git show" Porcelain anyway.
|
|
|
|
* "git cvsimport" did not notice errors from underlying "cvsps"
|
|
and produced a corrupt import silently.
|
|
|
|
* "git cvsexportcommit" learned -w option to specify and switch to the
|
|
CVS working directory.
|
|
|
|
* "git checkout" from a subdirectory learned to use "../path" to allow
|
|
checking out a path outside the current directory without cd'ing up.
|
|
|
|
* "git checkout" from and to detached HEAD leaves a bit more
|
|
information in the reflog.
|
|
|
|
* "git send-email --dry-run" shows full headers for easier diagnosis.
|
|
|
|
* "git merge-ours" is now built-in.
|
|
|
|
* "git svn" learned "info" and "show-externals" subcommands.
|
|
|
|
* "git svn" run from a subdirectory failed to read settings from the
|
|
.git/config.
|
|
|
|
* "git svn" learned --use-log-author option, which picks up more
|
|
descriptive name from From: and Signed-off-by: lines in the commit
|
|
message.
|
|
|
|
* "git svn" wasted way too much disk to record revision mappings
|
|
between svn and git; a new representation that is much more compact
|
|
for this information has been introduced to correct this.
|
|
|
|
* "git svn" left temporary index files it used without cleaning them
|
|
up; this was corrected.
|
|
|
|
* "git status" from a subdirectory now shows relative paths, which
|
|
makes copy-and-pasting for git-checkout/git-add/git-rm easier. The
|
|
traditional behavior to show the full path relative to the top of
|
|
the work tree can be had by setting status.relativepaths
|
|
configuration variable to false.
|
|
|
|
* "git blame" kept text for each annotated revision in core needlessly;
|
|
this has been corrected.
|
|
|
|
* "git shortlog" learned to default to HEAD when the standard input is
|
|
a terminal and the user did not give any revision parameter.
|
|
|
|
* "git shortlog" learned "-e" option to show e-mail addresses as well as
|
|
authors' names.
|
|
|
|
* "git help" learned "-w" option to show documentation in browsers.
|
|
|
|
* In addition there are quite a few internal clean-ups. Notably:
|
|
|
|
- many fork/exec have been replaced with run-command API,
|
|
brought from the msysgit effort.
|
|
|
|
- introduction and more use of the option parser API.
|
|
|
|
- enhancement and more use of the strbuf API.
|
|
|
|
* Makefile tweaks to support HP-UX is in.
|
|
|
|
Fixes since v1.5.3
|
|
------------------
|
|
|
|
All of the fixes in v1.5.3 maintenance series are included in
|
|
this release, unless otherwise noted.
|
|
|
|
These fixes are only in v1.5.4 and not backported to v1.5.3 maintenance
|
|
series.
|
|
|
|
* The way "git diff --check" behaves is much more consistent with the way
|
|
"git apply --whitespace=warn" works.
|
|
|
|
* "git svn" talking with the SVN over HTTP will correctly quote branch
|
|
and project names.
|
|
|
|
* "git config" did not work correctly on platforms that define
|
|
REG_NOMATCH to an even number.
|
|
|
|
* Recent versions of AsciiDoc 8 has a change to break our
|
|
documentation; a workaround has been implemented.
|
|
|
|
* "git diff --color-words" colored context lines in a wrong color.
|