Documentation / RelNotes-1.6.0.txton commit Merge branch 'tr/workflow-doc' (310d188)
   1GIT v1.6.0 Release Notes
   2========================
   3
   4User visible changes
   5--------------------
   6
   7With the default Makefile settings, most of the programs are now
   8installed outside your $PATH, except for "git", "gitk" and
   9some server side programs that need to be accessible for technical
  10reasons.  Invoking a git subcommand as "git-xyzzy" from the command
  11line has been deprecated since early 2006 (and officially announced in
  121.5.4 release notes); use of them from your scripts after adding
  13output from "git --exec-path" to the $PATH is still supported in this
  14release, but users are again strongly encouraged to adjust their
  15scripts to use "git xyzzy" form, as we will stop installing
  16"git-xyzzy" hardlinks for built-in commands in later releases.
  17
  18An earlier change to page "git status" output was overwhelmingly unpopular
  19and has been reverted.
  20
  21Source changes needed for porting to MinGW environment are now all in the
  22main git.git codebase.
  23
  24By default, packfiles created with this version uses delta-base-offset
  25encoding introduced in v1.4.4.  Pack idx files are using version 2 that
  26allows larger packs and added robustness thanks to its CRC checking,
  27introduced in v1.5.2 and v1.4.4.5.  If you want to keep your repositories
  28backwards compatible past these versions, set repack.useDeltaBaseOffset
  29to false or pack.indexVersion to 1, respectively.
  30
  31We used to prevent sample hook scripts shipped in templates/ from
  32triggering by default by relying on the fact that we install them as
  33unexecutable, but on some filesystems, this approach does not work.
  34They are now shipped with ".sample" suffix.  If you want to activate
  35any of these samples as-is, rename them to drop the ".sample" suffix,
  36instead of running "chmod +x" on them.  For example, you can rename
  37hooks/post-update.sample to hooks/post-update to enable the sample
  38hook that runs update-server-info, in order to make repositories
  39friendly to dumb protocols (i.e. HTTP).
  40
  41GIT_CONFIG, which was only documented as affecting "git config", but
  42actually affected all git commands, now only affects "git config".
  43GIT_LOCAL_CONFIG, also only documented as affecting "git config" and
  44not different from GIT_CONFIG in a useful way, is removed.
  45
  46The ".dotest" temporary area "git am" and "git rebase" use is now moved
  47inside the $GIT_DIR, to avoid mistakes of adding it to the project by
  48accident.
  49
  50An ancient merge strategy "stupid" has been removed.
  51
  52
  53Updates since v1.5.6
  54--------------------
  55
  56(subsystems)
  57
  58* git-p4 in contrib learned "allowSubmit" configuration to control on
  59  which branch to allow "submit" subcommand.
  60
  61* git-gui learned to stage changes per-line.
  62
  63(portability)
  64
  65* Changes for MinGW port have been merged, thanks to Johannes Sixt and
  66  gangs.
  67
  68* Sample hook scripts shipped in templates/ are now suffixed with
  69  *.sample.
  70
  71* perl's in-place edit (-i) does not work well without backup files on Windows;
  72  some tests are rewritten to cope with this.
  73
  74(documentation)
  75
  76* Updated howto/update-hook-example
  77
  78* Got rid of usage of "git-foo" from the tutorial and made typography
  79  more consistent.
  80
  81* Disambiguating "--" between revs and paths is finally documented.
  82
  83(performance, robustness, sanity etc.)
  84
  85* index-pack used too much memory when dealing with a deep delta chain.
  86  This has been optimized.
  87
  88* reduced excessive inlining to shrink size of the "git" binary.
  89
  90* verify-pack checks the object CRC when using version 2 idx files.
  91
  92* When an object is corrupt in a pack, the object became unusable even
  93  when the same object is available in a loose form,  We now try harder to
  94  fall back to these redundant objects when able.  In particular, "git
  95  repack -a -f" can be used to fix such a corruption as long as necessary
  96  objects are available.
  97
  98* Performance of "git-blame -C -C" operation is vastly improved.
  99
 100* git-clone does not create refs in loose form anymore (it behaves as
 101  if you immediately ran git-pack-refs after cloning).  This will help
 102  repositories with insanely large number of refs.
 103
 104* core.fsyncobjectfiles configuration can be used to ensure that the loose
 105  objects created will be fsync'ed (this is only useful on filesystems
 106  that does not order data writes properly).
 107
 108* "git commit-tree" plumbing can make Octopus with more than 16 parents.
 109  "git commit" has been capable of this for quite some time.
 110
 111(usability, bells and whistles)
 112
 113* even more documentation pages are now accessible via "man" and "git help".
 114
 115* A new environment variable GIT_CEILING_DIRECTORIES can be used to stop
 116  the discovery process of the toplevel of working tree; this may be useful
 117  when you are working in a slow network disk and are outside any working tree,
 118  as bash-completion and "git help" may still need to run in these places.
 119
 120* By default, stash entries never expire.  Set reflogexpire in [gc
 121  "refs/stash"] to a reasonable value to get traditional auto-expiration
 122  behaviour back
 123
 124* Longstanding latency issue with bash completion script has been
 125  addressed.  This will need to be backmerged to 'maint' later.
 126
 127* pager.<cmd> configuration variable can be used to enable/disable the
 128  default paging behaviour per command.
 129
 130* "git-add -i" has a new action 'e/dit' to allow you edit the patch hunk
 131  manually.
 132
 133* git-am records the original tip of the branch in ORIG_HEAD before it
 134  starts applying patches.
 135
 136* git-apply can handle a patch that touches the same path more than once
 137  much better than before.
 138
 139* git-apply can be told not to trust the line counts recorded in the input
 140  patch but recount, with the new --recount option.
 141
 142* git-apply can be told to apply a patch to a path deeper than what the
 143  patch records with --directory option.
 144
 145* git-archive can be told to omit certain paths from its output using
 146  export-ignore attributes.
 147
 148* git-archive uses the zlib default compression level when creating
 149  zip archive.
 150
 151* git-archive's command line options --exec and --remote can take their
 152  parameters as separate command line arguments, similar to other commands.
 153  IOW, both "--exec=path" and "--exec path" are now supported.
 154
 155* With -v option, git-branch describes the remote tracking statistics
 156  similar to the way git-checkout reports by how many commits your branch
 157  is ahead/behind.
 158
 159* git-branch's --contains option used to always require a commit parameter
 160  to limit the branches with; it now defaults to list branches that
 161  contains HEAD if this parameter is omitted.
 162
 163* git-branch's --merged and --no-merged option used to always limit the
 164  branches relative to the HEAD, but they can now take an optional commit
 165  argument that is used in place of HEAD.
 166
 167* git-bundle can read the revision arguments from the standard input.
 168
 169* git-cherry-pick can replay a root commit now.
 170
 171* git-clone can clone from a remote whose URL would be rewritten by
 172  configuration stored in $HOME/.gitconfig now.
 173
 174* "git-clone --mirror" is a handy way to set up a bare mirror repository.
 175
 176* git-cvsserver learned to respond to "cvs co -c".
 177
 178* git-diff --check now checks leftover merge conflict markers.
 179
 180* "git-diff -p" learned to grab a better hunk header lines in
 181  BibTex, Pascal/Delphi, and Ruby files and also pays attention to
 182  chapter and part boundary in TeX documents.
 183
 184* When remote side used to have branch 'foo' and git-fetch finds that now
 185  it has branch 'foo/bar', it refuses to lose the existing remote tracking
 186  branch and its reflog.  The error message has been improved to suggest
 187  pruning the remote if the user wants to proceed and get the latest set
 188  of branches from the remote, including such 'foo/bar'.
 189
 190* fast-export learned to export and import marks file; this can be used to
 191  interface with fast-import incrementally.
 192
 193* fast-import and fast-export learned to export and import gitlinks.
 194
 195* "gitk" left background process behind after being asked to dig very deep
 196  history and the user killed the UI; the process is killed when the UI goes
 197  away now.
 198
 199* git-rebase records the original tip of branch in ORIG_HEAD before it is
 200  rewound.
 201
 202* "git rerere" can be told to update the index with auto-reused resolution
 203  with rerere.autoupdate configuration variable.
 204
 205* git-rev-parse learned $commit^! and $commit^@ notations used in "log"
 206  family.  These notations are available in gitk as well, because the gitk
 207  command internally uses rev-parse to interpret its arguments.
 208
 209* git-rev-list learned --children option to show child commits it
 210  encountered during the traversal, instead of showing parent commits.
 211
 212* git-send-mail can talk not just over SSL but over TLS now.
 213
 214* git-shortlog honors custom output format specified with "--pretty=format:".
 215
 216* "git-stash save" learned --keep-index option.  This lets you stash away the
 217  local changes and bring the changes staged in the index to your working
 218  tree for examination and testing.
 219
 220* git-stash also learned branch subcommand to create a new branch out of
 221  stashed changes.
 222
 223* git-status gives the remote tracking statistics similar to the way
 224  git-checkout reports by how many commits your branch is ahead/behind.
 225
 226* "git-svn dcommit" is now aware of auto-props setting the subversion user
 227  has.
 228
 229* You can tell "git status -u" to even more aggressively omit checking
 230  untracked files with --untracked-files=no.
 231
 232* Original SHA-1 value for "update-ref -d" is optional now.
 233
 234* Error codes from gitweb are made more descriptive where possible, rather
 235  than "403 forbidden" as we used to issue everywhere.
 236
 237(internal)
 238
 239* git-merge has been reimplemented in C.
 240
 241
 242Fixes since v1.5.6
 243------------------
 244
 245All of the fixes in v1.5.6 maintenance series are included in
 246this release, unless otherwise noted.
 247
 248 * git-clone ignored its -u option; the fix needs to be backported to
 249   'maint';
 250
 251 * git-mv used to lose the distinction between changes that are staged
 252   and that are only in the working tree, by staging both in the index
 253   after moving such a path.
 254
 255 * "git-rebase -i -p" rewrote the parents to wrong ones when amending
 256   (either edit or squash) was involved, and did not work correctly
 257   when fast forwarding.
 258