mirror of
https://github.com/git/git
synced 2024-08-28 20:20:07 +00:00
![Mike Ralphson](/assets/img/avatar_default.png)
Signed-off-by: Mike Ralphson <mike@abacus.co.uk> Signed-off-by: Junio C Hamano <gitster@pobox.com>
367 lines
14 KiB
Plaintext
367 lines
14 KiB
Plaintext
GIT v1.5.3 Release Notes
|
|
========================
|
|
|
|
Updates since v1.5.2
|
|
--------------------
|
|
|
|
* The commit walkers other than http are officially deprecated,
|
|
but still supported for now.
|
|
|
|
* The submodule support has Porcelain layer.
|
|
|
|
Note that the current submodule support is minimal and this is
|
|
deliberately so. A design decision we made is that operations
|
|
at the supermodule level do not recurse into submodules by
|
|
default. The expectation is that later we would add a
|
|
mechanism to tell git which submodules the user is interested
|
|
in, and this information might be used to determine the
|
|
recursive behaviour of certain commands (e.g. "git checkout"
|
|
and "git diff"), but currently we haven't agreed on what that
|
|
mechanism should look like. Therefore, if you use submodules,
|
|
you would probably need "git submodule update" on the
|
|
submodules you care about after running a "git checkout" at
|
|
the supermodule level.
|
|
|
|
* There are a handful pack-objects changes to help you cope better
|
|
with repositories with pathologically large blobs in them.
|
|
|
|
* For people who need to import from Perforce, a front-end for
|
|
fast-import is in contrib/fast-import/.
|
|
|
|
* Comes with git-gui 0.8.2.
|
|
|
|
* Comes with updated gitk.
|
|
|
|
* New commands and options.
|
|
|
|
- "git log --date=<format>" can use more formats: iso8601, rfc2822.
|
|
|
|
- The hunk header output from "git diff" family can be customized
|
|
with the attributes mechanism. See gitattributes(5) for details.
|
|
|
|
- "git stash" allows you to quickly save away your work in
|
|
progress and replay it later on an updated state.
|
|
|
|
- "git rebase" learned an "interactive" mode that let you
|
|
pick and reorder which commits to rebuild.
|
|
|
|
- "git fsck" can save its findings in $GIT_DIR/lost-found, without a
|
|
separate invocation of "git lost-found" command. The blobs stored by
|
|
lost-found are stored in plain format to allow you to grep in them.
|
|
|
|
- $GIT_WORK_TREE environment variable can be used together with
|
|
$GIT_DIR to work in a subdirectory of a working tree that is
|
|
not located at "$GIT_DIR/..".
|
|
|
|
- Giving "--file=<file>" option to "git config" is the same as
|
|
running the command with GIT_CONFIG=<file> environment.
|
|
|
|
- "git log" learned a new option "--follow", to follow
|
|
renaming history of a single file.
|
|
|
|
- "git filter-branch" lets you rewrite the revision history of
|
|
specified branches. You can specify a number of filters to
|
|
modify the commits, files and trees.
|
|
|
|
- "git cvsserver" learned new options (--base-path, --export-all,
|
|
--strict-paths) inspired by "git daemon".
|
|
|
|
- "git daemon --base-path-relaxed" can help migrating a repository URL
|
|
that did not use to use --base-path to use --base-path.
|
|
|
|
- "git commit" can use "-t templatefile" option and commit.template
|
|
configuration variable to prime the commit message given to you in the
|
|
editor.
|
|
|
|
- "git submodule" command helps you manage the projects from
|
|
the superproject that contain them.
|
|
|
|
- In addition to core.compression configuration option,
|
|
core.loosecompression and pack.compression options can
|
|
independently tweak zlib compression levels used for loose
|
|
and packed objects.
|
|
|
|
- "git ls-tree -l" shows size of blobs pointed at by the
|
|
tree entries, similar to "/bin/ls -l".
|
|
|
|
- "git rev-list" learned --regexp-ignore-case and
|
|
--extended-regexp options to tweak its matching logic used
|
|
for --grep filtering.
|
|
|
|
- "git describe --contains" is a handier way to call more
|
|
obscure command "git name-rev --tags".
|
|
|
|
- "git gc --aggressive" tells the command to spend more cycles
|
|
to optimize the repository harder.
|
|
|
|
- "git repack" learned a "window-memory" limit which
|
|
dynamically reduces the window size to stay within the
|
|
specified memory usage.
|
|
|
|
- "git repack" can be told to split resulting packs to avoid
|
|
exceeding limit specified with "--max-pack-size".
|
|
|
|
- "git fsck" gained --verbose option. This is really really
|
|
verbose but it might help you identify exact commit that is
|
|
corrupt in your repository.
|
|
|
|
- "git format-patch" learned --numbered-files option. This
|
|
may be useful for MH users.
|
|
|
|
- "git format-patch" learned format.subjectprefix configuration
|
|
variable, which serves the same purpose as "--subject-prefix"
|
|
option.
|
|
|
|
- "git tag -n -l" shows tag annotations while listing tags.
|
|
|
|
- "git cvsimport" can optionally use the separate-remote layout.
|
|
|
|
- "git blame" can be told to see through commits that change
|
|
whitespaces and indentation levels with "-w" option.
|
|
|
|
- "git send-email" can be told not to thread the messages when
|
|
sending out more than one patches.
|
|
|
|
- "git send-email" can also be told how to find whom to cc the
|
|
message to for each message via --cc-cmd.
|
|
|
|
- "git config" learned NUL terminated output format via -z to
|
|
help scripts.
|
|
|
|
- "git add" learned "--refresh <paths>..." option to selectively refresh
|
|
the cached stat information.
|
|
|
|
- "git init -q" makes the command quieter.
|
|
|
|
- "git -p command" now has a cousin of opposite sex, "git --no-pager
|
|
command".
|
|
|
|
* Updated behavior of existing commands.
|
|
|
|
- "gitweb" can offer multiple snapshot formats.
|
|
|
|
***NOTE*** Unfortunately, this changes the format of the
|
|
$feature{snapshot}{default} entry in the per-site
|
|
configuration file 'gitweb_config.perl'. It used to be a
|
|
three-element tuple that describe a single format; with the
|
|
new configuration item format, you only have to say the name
|
|
of the format ('tgz', 'tbz2' or 'zip'). Please update the
|
|
your configuration file accordingly.
|
|
|
|
- "git clone" uses -l (hardlink files under .git) by default when
|
|
cloning locally.
|
|
|
|
- URL used for "git clone" and friends can specify nonstandard SSH port
|
|
by using ssh://host:port/path/to/repo syntax.
|
|
|
|
- "git bundle create" can now create a bundle without negative refs,
|
|
i.e. "everything since the beginning up to certain points".
|
|
|
|
- "git diff" (but not the plumbing level "git diff-tree") now
|
|
recursively descends into trees by default.
|
|
|
|
- "git diff" does not show differences that come only from
|
|
stat-dirtiness in the form of "diff --git" header anymore.
|
|
It runs "update-index --refresh" silently as needed.
|
|
|
|
- "git tag -l" used to match tags by globbing its parameter as if it
|
|
has wildcard '*' on both ends, which made "git tag -l gui" to match
|
|
tag 'gitgui-0.7.0'; this was very annoying. You now have to add
|
|
asterisk on the sides you want to wildcard yourself.
|
|
|
|
- The editor to use with many interactive commands can be
|
|
overridden with GIT_EDITOR environment variable, or if it
|
|
does not exist, with core.editor configuration variable. As
|
|
before, if you have neither, environment variables VISUAL
|
|
and EDITOR are consulted in this order, and then finally we
|
|
fall back on "vi".
|
|
|
|
- "git rm --cached" does not complain when removing a newly
|
|
added file from the index anymore.
|
|
|
|
- Options to "git log" to affect how --grep/--author options look for
|
|
given strings now have shorter abbreviations. -i is for ignore case,
|
|
and -E is for extended regexp.
|
|
|
|
- "git log" learned --log-size to show the number of bytes in
|
|
the log message part of the output to help qgit.
|
|
|
|
- "git log --name-status" does not require you to give "-r" anymore.
|
|
As a general rule, Porcelain commands should recurse when showing
|
|
diff.
|
|
|
|
- "git format-patch --root A" can be used to format everything
|
|
since the beginning up to A. This was supported with
|
|
"git format-patch --root A A" for a long time, but was not
|
|
properly documented.
|
|
|
|
- "git svn dcommit" retains local merge information.
|
|
|
|
- "git svnimport" allows an empty string to be specified as the
|
|
trunk/ directory. This is necessary to suck data from a SVN
|
|
repository that doe not have trunk/ branches/ and tags/ organization
|
|
at all.
|
|
|
|
- "git config" to set values also honors type flags like --bool
|
|
and --int.
|
|
|
|
- core.quotepath configuration can be used to make textual git
|
|
output to emit most of the characters in the path literally.
|
|
|
|
- "git mergetool" chooses its backend more wisely, taking
|
|
notice of its environment such as use of X, Gnome/KDE, etc.
|
|
|
|
- "gitweb" shows merge commits a lot nicer than before. The
|
|
default view uses more compact --cc format, while the UI
|
|
allows to choose normal diff with any parent.
|
|
|
|
- snapshot files "gitweb" creates from a repository at
|
|
$path/$project/.git are more useful. We use $project part
|
|
in the filename, which we used to discard.
|
|
|
|
- "git cvsimport" creates lightweight tags; there is no
|
|
interesting information we can record in an annotated tag,
|
|
and the handcrafted ones the old code created was not
|
|
properly formed anyway.
|
|
|
|
- "git push" pretends that you immediately fetched back from
|
|
the remote by updating corresponding remote tracking
|
|
branches if you have any.
|
|
|
|
- The diffstat given after a merge (or a pull) honors the
|
|
color.diff configuration.
|
|
|
|
- "git commit --amend" is now compatible with various message source
|
|
options such as -m/-C/-c/-F.
|
|
|
|
- "git apply --whitespace=strip" removes blank lines added at
|
|
the end of the file.
|
|
|
|
- "git fetch" over git native protocols with "-v" option shows
|
|
connection status, and the IP address of the other end, to
|
|
help diagnosing problems.
|
|
|
|
- We used to have core.legacyheaders configuration, when
|
|
set to false, allowed git to write loose objects in a format
|
|
that mimics the format used by objects stored in packs. It
|
|
turns out that this was not so useful. Although we will
|
|
continue to read objects written in that format, we do not
|
|
honor that configuration anymore and create loose objects in
|
|
the legacy/traditional format.
|
|
|
|
- "--find-copies-harder" option to diff family can now be
|
|
spelled as "-C -C" for brevity.
|
|
|
|
- "git mailsplit" (hence "git am") can read from Maildir
|
|
formatted mailboxes.
|
|
|
|
- "git cvsserver" does not barf upon seeing "cvs login"
|
|
request.
|
|
|
|
- "pack-objects" honors "delta" attribute set in
|
|
.gitattributes. It does not attempt to deltify blobs that
|
|
come from paths with delta attribute set to false.
|
|
|
|
- "new-workdir" script (in contrib) can now be used with a
|
|
bare repository.
|
|
|
|
- "git mergetool" learned to use gvimdiff.
|
|
|
|
- "gitview" (in contrib) has a better blame interface.
|
|
|
|
- "git log" and friends did not handle a commit log message
|
|
that is larger than 16kB; they do now.
|
|
|
|
- "--pretty=oneline" output format for "git log" and friends
|
|
deals with "malformed" commit log messages that have more
|
|
than one lines in the first paragraph better. We used to
|
|
show the first line, cutting the title at mid-sentence; we
|
|
concatenate them into a single line and treat the result as
|
|
"oneline".
|
|
|
|
- "git p4import" has been demoted to contrib status. For
|
|
a superior option, checkout the "git p4" front end to
|
|
"git fast-import" (also in contrib). The man page and p4
|
|
rpm have been removed as well.
|
|
|
|
- "git mailinfo" (hence "am") now tries to see if the message
|
|
is in utf-8 first, instead of assuming iso-8859-1, if
|
|
incoming e-mail does not say what encoding it is in.
|
|
|
|
* Builds
|
|
|
|
- old-style function definitions (most notably, a function
|
|
without parameter defined with "func()", not "func(void)")
|
|
have been eradicated.
|
|
|
|
- "git tag" and "git verify-tag" have been rewritten in C.
|
|
|
|
* Performance Tweaks
|
|
|
|
- "git pack-objects" avoids re-deltification cost by caching
|
|
small enough delta results it creates while looking for the
|
|
best delta candidates.
|
|
|
|
- "git pack-objects" learned a new heuristic to prefer delta
|
|
that is shallower in depth over the smallest delta
|
|
possible. This improves both overall packfile access
|
|
performance and packfile density.
|
|
|
|
- diff-delta code that is used for packing has been improved
|
|
to work better on big files.
|
|
|
|
- when there are more than one pack files in the repository,
|
|
the runtime used to try finding an object always from the
|
|
newest packfile; it now tries the same packfile as we found
|
|
the object requested the last time, which exploits the
|
|
locality of references.
|
|
|
|
- verifying pack contents done by "git fsck --full" got boost
|
|
by carefully choosing the order to verify objects in them.
|
|
|
|
- "git read-tree -m" to read into an already populated index
|
|
has been optimized vastly. The effect of this can be seen
|
|
when switching branches that have differences in only a
|
|
handful paths.
|
|
|
|
- "git add paths..." and "git commit paths..." has also been
|
|
heavily optimized.
|
|
|
|
Fixes since v1.5.2
|
|
------------------
|
|
|
|
All of the fixes in v1.5.2 maintenance series are included in
|
|
this release, unless otherwise noted.
|
|
|
|
* Bugfixes
|
|
|
|
- "gitweb" had trouble handling non UTF-8 text with older
|
|
Encode.pm Perl module.
|
|
|
|
- "git svn" misparsed the data from the commits in the repository when
|
|
the user had "color.diff = true" in the configuration. This has been
|
|
fixed.
|
|
|
|
- There was a case where "git svn dcommit" clobbered changes made on the
|
|
SVN side while committing multiple changes.
|
|
|
|
- "git-write-tree" had a bad interaction with racy-git avoidance and
|
|
gitattributes mechanisms.
|
|
|
|
- "git --bare command" overrode existing GIT_DIR setting and always
|
|
made it treat the current working directory as GIT_DIR.
|
|
|
|
- "git ls-files --error-unmatch" does not complain if you give the
|
|
same path pattern twice by mistake.
|
|
|
|
- "git init" autodetected core.filemode but not core.symlinks, which
|
|
made a new directory created automatically by "git clone" cumbersome
|
|
to use on filesystems that require these configurations to be set.
|
|
|
|
- "git log" family of commands behaved differently when run as "git
|
|
log" (no pathspec) and as "git log --" (again, no pathspec). This
|
|
inconsistency was introduced somewhere in v1.3.0 series but now has
|
|
been corrected.
|
|
|
|
- "git rebase -m" incorrectly displayed commits that were skipped.
|