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.
