371 lines
		
	
	
	
		
			13 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			371 lines
		
	
	
	
		
			13 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
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.
 |