Documentation / RelNotes-1.5.1.txton commit git-svn: allow subset of branches/tags to be specified in glob spec (0757620)
   1GIT v1.5.1 Release Notes
   2========================
   3
   4Updates since v1.5.0
   5--------------------
   6
   7* Deprecated commands and options.
   8
   9  - git-diff-stages and git-resolve have been removed.
  10
  11* New commands and options.
  12
  13  - "git log" and friends take --reverse, which instructs them
  14    to give their output in the order opposite from their usual.
  15    They typically output from new to old, but with this option
  16    their output would read from old to new.  "git shortlog"
  17    usually lists older commits first, but with this option,
  18    they are shown from new to old.
  19
  20  - "git log --pretty=format:<string>" to allow more flexible
  21    custom log output.
  22
  23  - "git diff" learned --ignore-space-at-eol.  This is a weaker
  24    form of --ignore-space-change.
  25
  26  - "git diff --no-index pathA pathB" can be used as diff
  27    replacement with git specific enhancements.
  28
  29  - "git diff --no-index" can read from '-' (standard input).
  30
  31  - "git diff" also learned --exit-code to exit with non-zero
  32    status when it found differences.  In the future we might
  33    want to make this the default but that would be a rather big
  34    backward incompatible change; it will stay as an option for
  35    now.
  36
  37  - "git diff --quiet" is --exit-code with output turned off,
  38    meant for scripted use to quickly determine if there is any
  39    tree-level difference.
  40
  41  - Textual patch generation with "git diff" without -w/-b
  42    option has been significantly optimized.  "git blame" got
  43    faster because of the same change.
  44
  45  - "git log" and "git rev-list" has been optimized
  46    significantly when they are used with pathspecs.
  47
  48  - "git branch --track" can be used to set up configuration
  49    variables to help it easier to base your work on branches
  50    you track from a remote site.
  51
  52  - "git format-patch --attach" now emits attachments.  Use
  53    --inline to get an inlined multipart/mixed.
  54
  55  - "git name-rev" learned --refs=<pattern>, to limit the tags
  56    used for naming the given revisions only to the ones
  57    matching the given pattern.
  58
  59  - "git remote update" is to run "git fetch" for defined remotes
  60    to update tracking branches.
  61
  62  - "git cvsimport" can now take '-d' to talk with a CVS
  63    repository different from what are recorded in CVS/Root
  64    (overriding it with environment CVSROOT does not work).
  65
  66  - "git bundle" can help sneaker-netting your changes between
  67    repositories.
  68
  69  - "git mergetool" can help 3-way file-level conflict
  70    resolution with your favorite graphical merge tools.
  71
  72  - A new configuration "core.symlinks" can be used to disable
  73    symlinks on filesystems that do not support them; they are
  74    checked out as regular files instead.
  75
  76  - You can name a commit object with its first line of the
  77    message.  The syntax to use is ':/message text'.  E.g.
  78
  79    $ git show ":/object name: introduce ':/<oneline prefix>' notation"
  80
  81    means the same thing as:
  82
  83    $ git show 28a4d940443806412effa246ecc7768a21553ec7
  84
  85  - "git bisect" learned a new command "run" that takes a script
  86    to run after each revision is checked out to determine if it
  87    is good or bad, to automate the bisection process.
  88
  89  - "git log" family learned a new traversal option --first-parent,
  90    which does what the name suggests.
  91
  92
  93* Updated behavior of existing commands.
  94
  95  - "git-merge-recursive" used to barf when there are more than
  96    one common ancestors for the merge, and merging them had a
  97    rename/rename conflict.  This has been fixed.
  98
  99  - "git fsck" does not barf on corrupt loose objects.
 100
 101  - "git rm" does not remove newly added files without -f.
 102
 103  - "git archimport" allows remapping when coming up with git
 104    branch names from arch names.
 105
 106  - git-svn got almost a rewrite.
 107
 108  - core.autocrlf configuration, when set to 'true', makes git
 109    to convert CRLF at the end of lines in text files to LF when
 110    reading from the filesystem, and convert in reverse when
 111    writing to the filesystem.  The variable can be set to
 112    'input', in which case the conversion happens only while
 113    reading from the filesystem but files are written out with
 114    LF at the end of lines.  Currently, which paths to consider
 115    'text' (i.e. be subjected to the autocrlf mechanism) is
 116    decided purely based on the contents, but the plan is to
 117    allow users to explicitly override this heuristic based on
 118    paths.
 119
 120  - The behavior of 'git-apply', when run in a subdirectory,
 121    without --index nor --cached were inconsistent with that of
 122    the command with these options.  This was fixed to match the
 123    behavior with --index.  A patch that is meant to be applied
 124    with -p1 from the toplevel of the project tree can be
 125    applied with any custom -p<n> option.  A patch that is not
 126    relative to the toplevel needs to be applied with -p<n>
 127    option with or without --index (or --cached).
 128
 129  - "git diff" outputs a trailing HT when pathnames have embedded
 130    SP on +++/--- header lines, in order to help "GNU patch" to
 131    parse its output.  "git apply" was already updated to accept
 132    this modified output format since ce74618d (Sep 22, 2006).
 133
 134  - "git cvsserver" runs hooks/update and honors its exit status.
 135
 136  - "git cvsserver" can be told to send everything with -kb.
 137
 138  - "git diff --check" also honors the --color output option.
 139
 140  - "git name-rev" used to stress the fact that a ref is a tag too
 141    much, by saying something like "v1.2.3^0~22".  It now says
 142    "v1.2.3~22" in such a case (it still says "v1.2.3^0" if it does
 143    not talk about an ancestor of the commit that is tagged, which
 144    makes sense).
 145
 146  - "git rev-list --boundary" now shows boundary markers for the
 147    commits omitted by --max-age and --max-count condition.
 148
 149  - The configuration mechanism now reads $(prefix)/etc/gitconfig.
 150
 151  - "git apply --verbose" shows what preimage lines were wanted
 152    when it couldn't find them.
 153
 154  - "git status" in a read-only repository got a bit saner.
 155
 156  - "git fetch" (hence "git clone" and "git pull") are less
 157    noisy when the output does not go to tty.
 158
 159  - "git fetch" between repositories with many refs were slow
 160    even when there are not many changes that needed
 161    transferring.  This has been sped up by partially rewriting
 162    the heaviest parts in C.
 163
 164  - "git mailinfo" which splits an e-mail into a patch and the
 165    meta-information was rewritten, thanks to Don Zickus.  It
 166    handles nested multipart better.  The command was broken for
 167    a brief period on 'master' branch since 1.5.0 but the
 168    breakage is fixed now.
 169
 170  - send-email learned configurable bcc and chain-reply-to.
 171
 172  - "git remote show $remote" also talks about branches that
 173    would be pushed if you run "git push remote".
 174
 175  - Using objects from packs is now seriously optimized by clever
 176    use of a cache.  This should be most noticeable in git-log
 177    family of commands that involve reading many tree objects.
 178    In addition, traversing revisions while filtering changes
 179    with pathspecs is made faster by terminating the comparison
 180    between the trees as early as possible.
 181
 182
 183* Hooks
 184
 185  - The part to send out notification e-mails was removed from
 186    the sample update hook, as it was not an appropriate place
 187    to do so.  The proper place to do this is the new post-receive
 188    hook.  An example hook has been added to contrib/hooks/.
 189
 190
 191* Others
 192
 193  - git-revert, git-gc and git-cherry-pick are now built-ins.
 194
 195Fixes since v1.5.0
 196------------------
 197
 198These are all in v1.5.0.x series.
 199
 200* Documentation updates
 201
 202  - Clarifications and corrections to 1.5.0 release notes.
 203
 204  - The main documentation did not link to git-remote documentation.
 205
 206  - Clarified introductory text of git-rebase documentation.
 207
 208  - Converted remaining mentions of update-index on Porcelain
 209    documents to git-add/git-rm.
 210
 211  - Some i18n.* configuration variables were incorrectly
 212    described as core.*; fixed.
 213
 214  - added and clarified core.bare, core.legacyheaders configurations.
 215
 216  - updated "git-clone --depth" documentation.
 217
 218  - user-manual updates.
 219
 220  - Options to 'git remote add' were described insufficiently.
 221
 222  - Configuration format.suffix was not documented.
 223
 224  - Other formatting and spelling fixes.
 225
 226  - user-manual has better cross references.
 227
 228  - gitweb installation/deployment procedure is now documented.
 229
 230
 231* Bugfixes
 232
 233  - git-upload-pack closes unused pipe ends; earlier this caused
 234    many zombies to hang around.
 235
 236  - git-rerere was recording the contents of earlier hunks
 237    duplicated in later hunks.  This prevented resolving the same
 238    conflict when performing the same merge the other way around.
 239
 240  - git-add and git-update-index on a filesystem on which
 241    executable bits are unreliable incorrectly reused st_mode
 242    bits even when the path changed between symlink and regular
 243    file.
 244
 245  - git-daemon marks the listening sockets with FD_CLOEXEC so
 246    that it won't be leaked into the children.
 247
 248  - segfault from git-blame when the mandatory pathname
 249    parameter was missing was fixed; usage() message is given
 250    instead.
 251
 252  - git-rev-list did not read $GIT_DIR/config file, which means
 253    that did not honor i18n.logoutputencoding correctly.
 254
 255  - Automated merge conflict handling when changes to symbolic
 256    links conflicted were completely broken.  The merge-resolve
 257    strategy created a regular file with conflict markers in it
 258    in place of the symbolic link.  The default strategy,
 259    merge-recursive was even more broken.  It removed the path
 260    that was pointed at by the symbolic link.  Both of these
 261    problems have been fixed.
 262
 263  - 'git diff maint master next' did not correctly give combined
 264    diff across three trees.
 265
 266  - 'git fast-import' portability fix for Solaris.
 267
 268  - 'git show-ref --verify' without arguments did not error out
 269    but segfaulted.
 270
 271  - 'git diff :tracked-file `pwd`/an-untracked-file' gave an extra
 272    slashes after a/ and b/.
 273
 274  - 'git format-patch' produced too long filenames if the commit
 275    message had too long line at the beginning.
 276
 277  - Running 'make all' and then without changing anything
 278    running 'make install' still rebuilt some files.  This
 279    was inconvenient when building as yourself and then
 280    installing as root (especially problematic when the source
 281    directory is on NFS and root is mapped to nobody).
 282
 283  - 'git-rerere' failed to deal with two unconflicted paths that
 284    sorted next to each other.
 285
 286  - 'git-rerere' attempted to open(2) a symlink and failed if
 287    there was a conflict.  Since a conflicting change to a
 288    symlink would not benefit from rerere anyway, the command
 289    now ignores conflicting changes to symlinks.
 290
 291  - 'git-repack' did not like to pass more than 64 arguments
 292    internally to underlying 'rev-list' logic, which made it
 293    impossible to repack after accumulating many (small) packs
 294    in the repository.
 295
 296  - 'git-diff' to review the combined diff during a conflicted
 297    merge were not reading the working tree version correctly
 298    when changes to a symbolic link conflicted.  It should have
 299    read the data using readlink(2) but read from the regular
 300    file the symbolic link pointed at.
 301
 302  - 'git-remote' did not like period in a remote's name.
 303
 304  - 'git.el' honors the commit coding system from the configuration.
 305
 306  - 'blameview' in contrib/ correctly digs deeper when a line is
 307    clicked.
 308
 309  - 'http-push' correctly makes sure the remote side has leading
 310    path.  Earlier it started in the middle of the path, and
 311    incorrectly.
 312
 313  - 'git-merge' did not exit with non-zero status when the
 314    working tree was dirty and cannot fast forward.  It does
 315    now.
 316
 317  - 'cvsexportcommit' does not lose yet-to-be-used message file.
 318
 319  - int-vs-size_t typefix when running combined diff on files
 320    over 2GB long.
 321
 322  - 'git apply --whitespace=strip' should not touch unmodified
 323    lines.
 324
 325  - 'git-mailinfo' choke when a logical header line was too long.
 326
 327  - 'git show A..B' did not error out.  Negative ref ("not A" in
 328    this example) does not make sense for the purpose of the
 329    command, so now it errors out.
 330
 331  - 'git fmt-merge-msg --file' without file parameter did not
 332    correctly error out.
 333
 334  - 'git archimport' barfed upon encountering a commit without
 335    summary.
 336
 337  - 'git index-pack' did not protect itself from getting a short
 338    read out of pread(2).
 339
 340  - 'git http-push' had a few buffer overruns.
 341
 342  - Build dependency fixes to rebuild fetch.o when other headers
 343    change.
 344
 345  - git.el does not add duplicate sign-off lines.
 346
 347  - git-commit shows the full stat of the resulting commit, not
 348    just about the files in the current directory, when run from
 349    a subdirectory.
 350
 351  - "git-checkout -m '@{8 hours ago}'" had a funny failure from
 352    eval; fixed.
 353
 354  - git-merge (hence git-pull) did not refuse fast-forwarding
 355    when the working tree had local changes that would have
 356    conflicted with it.
 357
 358  - a handful small fixes to gitweb.
 359
 360  - build procedure for user-manual is fixed not to require locally
 361    installed stylesheets.
 362
 363  - "git commit $paths" on paths whose earlier contents were
 364    already updated in the index were failing out.
 365
 366
 367* Tweaks
 368
 369  - sliding mmap() inefficiently mmaped the same region of a
 370    packfile with an access pattern that used objects in the
 371    reverse order.  This has been made more efficient.