You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
371 lines
13 KiB
371 lines
13 KiB
GIT v1.5.1 Release Notes |
|
======================== |
|
|
|
Updates since v1.5.0 |
|
-------------------- |
|
|
|
* Deprecated commands and options. |
|
|
|
- git-diff-stages and git-resolve have been removed. |
|
|
|
* New commands and options. |
|
|
|
- "git log" and friends take --reverse, which instructs them |
|
to give their output in the order opposite from their usual. |
|
They typically output from new to old, but with this option |
|
their output would read from old to new. "git shortlog" |
|
usually lists older commits first, but with this option, |
|
they are shown from new to old. |
|
|
|
- "git log --pretty=format:<string>" to allow more flexible |
|
custom log output. |
|
|
|
- "git diff" learned --ignore-space-at-eol. This is a weaker |
|
form of --ignore-space-change. |
|
|
|
- "git diff --no-index pathA pathB" can be used as diff |
|
replacement with git specific enhancements. |
|
|
|
- "git diff --no-index" can read from '-' (standard input). |
|
|
|
- "git diff" also learned --exit-code to exit with non-zero |
|
status when it found differences. In the future we might |
|
want to make this the default but that would be a rather big |
|
backward incompatible change; it will stay as an option for |
|
now. |
|
|
|
- "git diff --quiet" is --exit-code with output turned off, |
|
meant for scripted use to quickly determine if there is any |
|
tree-level difference. |
|
|
|
- Textual patch generation with "git diff" without -w/-b |
|
option has been significantly optimized. "git blame" got |
|
faster because of the same change. |
|
|
|
- "git log" and "git rev-list" has been optimized |
|
significantly when they are used with pathspecs. |
|
|
|
- "git branch --track" can be used to set up configuration |
|
variables to help it easier to base your work on branches |
|
you track from a remote site. |
|
|
|
- "git format-patch --attach" now emits attachments. Use |
|
--inline to get an inlined multipart/mixed. |
|
|
|
- "git name-rev" learned --refs=<pattern>, to limit the tags |
|
used for naming the given revisions only to the ones |
|
matching the given pattern. |
|
|
|
- "git remote update" is to run "git fetch" for defined remotes |
|
to update tracking branches. |
|
|
|
- "git cvsimport" can now take '-d' to talk with a CVS |
|
repository different from what are recorded in CVS/Root |
|
(overriding it with environment CVSROOT does not work). |
|
|
|
- "git bundle" can help sneaker-netting your changes between |
|
repositories. |
|
|
|
- "git mergetool" can help 3-way file-level conflict |
|
resolution with your favorite graphical merge tools. |
|
|
|
- A new configuration "core.symlinks" can be used to disable |
|
symlinks on filesystems that do not support them; they are |
|
checked out as regular files instead. |
|
|
|
- You can name a commit object with its first line of the |
|
message. The syntax to use is ':/message text'. E.g. |
|
|
|
$ git show ":/object name: introduce ':/<oneline prefix>' notation" |
|
|
|
means the same thing as: |
|
|
|
$ git show 28a4d940443806412effa246ecc7768a21553ec7 |
|
|
|
- "git bisect" learned a new command "run" that takes a script |
|
to run after each revision is checked out to determine if it |
|
is good or bad, to automate the bisection process. |
|
|
|
- "git log" family learned a new traversal option --first-parent, |
|
which does what the name suggests. |
|
|
|
|
|
* Updated behavior of existing commands. |
|
|
|
- "git-merge-recursive" used to barf when there are more than |
|
one common ancestors for the merge, and merging them had a |
|
rename/rename conflict. This has been fixed. |
|
|
|
- "git fsck" does not barf on corrupt loose objects. |
|
|
|
- "git rm" does not remove newly added files without -f. |
|
|
|
- "git archimport" allows remapping when coming up with git |
|
branch names from arch names. |
|
|
|
- git-svn got almost a rewrite. |
|
|
|
- core.autocrlf configuration, when set to 'true', makes git |
|
to convert CRLF at the end of lines in text files to LF when |
|
reading from the filesystem, and convert in reverse when |
|
writing to the filesystem. The variable can be set to |
|
'input', in which case the conversion happens only while |
|
reading from the filesystem but files are written out with |
|
LF at the end of lines. Currently, which paths to consider |
|
'text' (i.e. be subjected to the autocrlf mechanism) is |
|
decided purely based on the contents, but the plan is to |
|
allow users to explicitly override this heuristic based on |
|
paths. |
|
|
|
- The behavior of 'git-apply', when run in a subdirectory, |
|
without --index nor --cached were inconsistent with that of |
|
the command with these options. This was fixed to match the |
|
behavior with --index. A patch that is meant to be applied |
|
with -p1 from the toplevel of the project tree can be |
|
applied with any custom -p<n> option. A patch that is not |
|
relative to the toplevel needs to be applied with -p<n> |
|
option with or without --index (or --cached). |
|
|
|
- "git diff" outputs a trailing HT when pathnames have embedded |
|
SP on +++/--- header lines, in order to help "GNU patch" to |
|
parse its output. "git apply" was already updated to accept |
|
this modified output format since ce74618d (Sep 22, 2006). |
|
|
|
- "git cvsserver" runs hooks/update and honors its exit status. |
|
|
|
- "git cvsserver" can be told to send everything with -kb. |
|
|
|
- "git diff --check" also honors the --color output option. |
|
|
|
- "git name-rev" used to stress the fact that a ref is a tag too |
|
much, by saying something like "v1.2.3^0~22". It now says |
|
"v1.2.3~22" in such a case (it still says "v1.2.3^0" if it does |
|
not talk about an ancestor of the commit that is tagged, which |
|
makes sense). |
|
|
|
- "git rev-list --boundary" now shows boundary markers for the |
|
commits omitted by --max-age and --max-count condition. |
|
|
|
- The configuration mechanism now reads $(prefix)/etc/gitconfig. |
|
|
|
- "git apply --verbose" shows what preimage lines were wanted |
|
when it couldn't find them. |
|
|
|
- "git status" in a read-only repository got a bit saner. |
|
|
|
- "git fetch" (hence "git clone" and "git pull") are less |
|
noisy when the output does not go to tty. |
|
|
|
- "git fetch" between repositories with many refs were slow |
|
even when there are not many changes that needed |
|
transferring. This has been sped up by partially rewriting |
|
the heaviest parts in C. |
|
|
|
- "git mailinfo" which splits an e-mail into a patch and the |
|
meta-information was rewritten, thanks to Don Zickus. It |
|
handles nested multipart better. The command was broken for |
|
a brief period on 'master' branch since 1.5.0 but the |
|
breakage is fixed now. |
|
|
|
- send-email learned configurable bcc and chain-reply-to. |
|
|
|
- "git remote show $remote" also talks about branches that |
|
would be pushed if you run "git push remote". |
|
|
|
- Using objects from packs is now seriously optimized by clever |
|
use of a cache. This should be most noticeable in git-log |
|
family of commands that involve reading many tree objects. |
|
In addition, traversing revisions while filtering changes |
|
with pathspecs is made faster by terminating the comparison |
|
between the trees as early as possible. |
|
|
|
|
|
* Hooks |
|
|
|
- The part to send out notification e-mails was removed from |
|
the sample update hook, as it was not an appropriate place |
|
to do so. The proper place to do this is the new post-receive |
|
hook. An example hook has been added to contrib/hooks/. |
|
|
|
|
|
* Others |
|
|
|
- git-revert, git-gc and git-cherry-pick are now built-ins. |
|
|
|
Fixes since v1.5.0 |
|
------------------ |
|
|
|
These are all in v1.5.0.x series. |
|
|
|
* Documentation updates |
|
|
|
- Clarifications and corrections to 1.5.0 release notes. |
|
|
|
- The main documentation did not link to git-remote documentation. |
|
|
|
- Clarified introductory text of git-rebase documentation. |
|
|
|
- Converted remaining mentions of update-index on Porcelain |
|
documents to git-add/git-rm. |
|
|
|
- Some i18n.* configuration variables were incorrectly |
|
described as core.*; fixed. |
|
|
|
- added and clarified core.bare, core.legacyheaders configurations. |
|
|
|
- updated "git-clone --depth" documentation. |
|
|
|
- user-manual updates. |
|
|
|
- Options to 'git remote add' were described insufficiently. |
|
|
|
- Configuration format.suffix was not documented. |
|
|
|
- Other formatting and spelling fixes. |
|
|
|
- user-manual has better cross references. |
|
|
|
- gitweb installation/deployment procedure is now documented. |
|
|
|
|
|
* Bugfixes |
|
|
|
- git-upload-pack closes unused pipe ends; earlier this caused |
|
many zombies to hang around. |
|
|
|
- git-rerere was recording the contents of earlier hunks |
|
duplicated in later hunks. This prevented resolving the same |
|
conflict when performing the same merge the other way around. |
|
|
|
- git-add and git-update-index on a filesystem on which |
|
executable bits are unreliable incorrectly reused st_mode |
|
bits even when the path changed between symlink and regular |
|
file. |
|
|
|
- git-daemon marks the listening sockets with FD_CLOEXEC so |
|
that it won't be leaked into the children. |
|
|
|
- segfault from git-blame when the mandatory pathname |
|
parameter was missing was fixed; usage() message is given |
|
instead. |
|
|
|
- git-rev-list did not read $GIT_DIR/config file, which means |
|
that did not honor i18n.logoutputencoding correctly. |
|
|
|
- Automated merge conflict handling when changes to symbolic |
|
links conflicted were completely broken. The merge-resolve |
|
strategy created a regular file with conflict markers in it |
|
in place of the symbolic link. The default strategy, |
|
merge-recursive was even more broken. It removed the path |
|
that was pointed at by the symbolic link. Both of these |
|
problems have been fixed. |
|
|
|
- 'git diff maint master next' did not correctly give combined |
|
diff across three trees. |
|
|
|
- 'git fast-import' portability fix for Solaris. |
|
|
|
- 'git show-ref --verify' without arguments did not error out |
|
but segfaulted. |
|
|
|
- 'git diff :tracked-file `pwd`/an-untracked-file' gave an extra |
|
slashes after a/ and b/. |
|
|
|
- 'git format-patch' produced too long filenames if the commit |
|
message had too long line at the beginning. |
|
|
|
- Running 'make all' and then without changing anything |
|
running 'make install' still rebuilt some files. This |
|
was inconvenient when building as yourself and then |
|
installing as root (especially problematic when the source |
|
directory is on NFS and root is mapped to nobody). |
|
|
|
- 'git-rerere' failed to deal with two unconflicted paths that |
|
sorted next to each other. |
|
|
|
- 'git-rerere' attempted to open(2) a symlink and failed if |
|
there was a conflict. Since a conflicting change to a |
|
symlink would not benefit from rerere anyway, the command |
|
now ignores conflicting changes to symlinks. |
|
|
|
- 'git-repack' did not like to pass more than 64 arguments |
|
internally to underlying 'rev-list' logic, which made it |
|
impossible to repack after accumulating many (small) packs |
|
in the repository. |
|
|
|
- 'git-diff' to review the combined diff during a conflicted |
|
merge were not reading the working tree version correctly |
|
when changes to a symbolic link conflicted. It should have |
|
read the data using readlink(2) but read from the regular |
|
file the symbolic link pointed at. |
|
|
|
- 'git-remote' did not like period in a remote's name. |
|
|
|
- 'git.el' honors the commit coding system from the configuration. |
|
|
|
- 'blameview' in contrib/ correctly digs deeper when a line is |
|
clicked. |
|
|
|
- 'http-push' correctly makes sure the remote side has leading |
|
path. Earlier it started in the middle of the path, and |
|
incorrectly. |
|
|
|
- 'git-merge' did not exit with non-zero status when the |
|
working tree was dirty and cannot fast forward. It does |
|
now. |
|
|
|
- 'cvsexportcommit' does not lose yet-to-be-used message file. |
|
|
|
- int-vs-size_t typefix when running combined diff on files |
|
over 2GB long. |
|
|
|
- 'git apply --whitespace=strip' should not touch unmodified |
|
lines. |
|
|
|
- 'git-mailinfo' choke when a logical header line was too long. |
|
|
|
- 'git show A..B' did not error out. Negative ref ("not A" in |
|
this example) does not make sense for the purpose of the |
|
command, so now it errors out. |
|
|
|
- 'git fmt-merge-msg --file' without file parameter did not |
|
correctly error out. |
|
|
|
- 'git archimport' barfed upon encountering a commit without |
|
summary. |
|
|
|
- 'git index-pack' did not protect itself from getting a short |
|
read out of pread(2). |
|
|
|
- 'git http-push' had a few buffer overruns. |
|
|
|
- Build dependency fixes to rebuild fetch.o when other headers |
|
change. |
|
|
|
- git.el does not add duplicate sign-off lines. |
|
|
|
- git-commit shows the full stat of the resulting commit, not |
|
just about the files in the current directory, when run from |
|
a subdirectory. |
|
|
|
- "git-checkout -m '@{8 hours ago}'" had a funny failure from |
|
eval; fixed. |
|
|
|
- git-merge (hence git-pull) did not refuse fast-forwarding |
|
when the working tree had local changes that would have |
|
conflicted with it. |
|
|
|
- a handful small fixes to gitweb. |
|
|
|
- build procedure for user-manual is fixed not to require locally |
|
installed stylesheets. |
|
|
|
- "git commit $paths" on paths whose earlier contents were |
|
already updated in the index were failing out. |
|
|
|
|
|
* Tweaks |
|
|
|
- sliding mmap() inefficiently mmaped the same region of a |
|
packfile with an access pattern that used objects in the |
|
reverse order. This has been made more efficient.
|
|
|