Documentation / RelNotes / 1.5.2.txton commit Merge branch 'pw/prompt-cherry-pick-revert-fix' (8a4acc5)
   1GIT v1.5.2 Release Notes
   2========================
   3
   4Updates since v1.5.1
   5--------------------
   6
   7* Plumbing level superproject support.
   8
   9  You can include a subdirectory that has an independent git
  10  repository in your index and tree objects of your project
  11  ("superproject").  This plumbing (i.e. "core") level
  12  superproject support explicitly excludes recursive behaviour.
  13
  14  The "subproject" entries in the index and trees of a superproject
  15  are incompatible with older versions of git.  Experimenting with
  16  the plumbing level support is encouraged, but be warned that
  17  unless everybody in your project updates to this release or
  18  later, using this feature would make your project
  19  inaccessible by people with older versions of git.
  20
  21* Plumbing level gitattributes support.
  22
  23  The gitattributes mechanism allows you to add 'attributes' to
  24  paths in your project, and affect the way certain git
  25  operations work.  Currently you can influence if a path is
  26  considered a binary or text (the former would be treated by
  27  'git diff' not to produce textual output; the latter can go
  28  through the line endings conversion process in repositories
  29  with core.autocrlf set), expand and unexpand '$Id$' keyword
  30  with blob object name, specify a custom 3-way merge driver,
  31  and specify a custom diff driver.  You can also apply
  32  arbitrary filter to contents on check-in/check-out codepath
  33  but this feature is an extremely sharp-edged razor and needs
  34  to be handled with caution (do not use it unless you
  35  understand the earlier mailing list discussion on keyword
  36  expansion).  These conversions apply when checking files in
  37  or out, and exporting via git-archive.
  38
  39* The packfile format now optionally supports 64-bit index.
  40
  41  This release supports the "version 2" format of the .idx
  42  file.  This is automatically enabled when a huge packfile
  43  needs more than 32-bit to express offsets of objects in the
  44  pack.
  45
  46* Comes with an updated git-gui 0.7.1
  47
  48* Updated gitweb:
  49
  50  - can show combined diff for merges;
  51  - uses font size of user's preference, not hardcoded in pixels;
  52  - can now 'grep';
  53
  54* New commands and options.
  55
  56  - "git bisect start" can optionally take a single bad commit and
  57    zero or more good commits on the command line.
  58
  59  - "git shortlog" can optionally be told to wrap its output.
  60
  61  - "subtree" merge strategy allows another project to be merged in as
  62    your subdirectory.
  63
  64  - "git format-patch" learned a new --subject-prefix=<string>
  65    option, to override the built-in "[PATCH]".
  66
  67  - "git add -u" is a quick way to do the first stage of "git
  68    commit -a" (i.e. update the index to match the working
  69    tree); it obviously does not make a commit.
  70
  71  - "git clean" honors a new configuration, "clean.requireforce".  When
  72    set to true, this makes "git clean" a no-op, preventing you
  73    from losing files by typing "git clean" when you meant to
  74    say "make clean".  You can still say "git clean -f" to
  75    override this.
  76
  77  - "git log" family of commands learned --date={local,relative,default}
  78    option.  --date=relative is synonym to the --relative-date.
  79    --date=local gives the timestamp in local timezone.
  80
  81* Updated behavior of existing commands.
  82
  83  - When $GIT_COMMITTER_EMAIL or $GIT_AUTHOR_EMAIL is not set
  84    but $EMAIL is set, the latter is used as a substitute.
  85
  86  - "git diff --stat" shows size of preimage and postimage blobs
  87    for binary contents.  Earlier it only said "Bin".
  88
  89  - "git lost-found" shows stuff that are unreachable except
  90    from reflogs.
  91
  92  - "git checkout branch^0" now detaches HEAD at the tip commit
  93    on the named branch, instead of just switching to the
  94    branch (use "git checkout branch" to switch to the branch,
  95    as before).
  96
  97  - "git bisect next" can be used after giving only a bad commit
  98    without giving a good one (this starts bisection half-way to
  99    the root commit).  We used to refuse to operate without a
 100    good and a bad commit.
 101
 102  - "git push", when pushing into more than one repository, does
 103    not stop at the first error.
 104
 105  - "git archive" does not insist you to give --format parameter
 106    anymore; it defaults to "tar".
 107
 108  - "git cvsserver" can use backends other than sqlite.
 109
 110  - "gitview" (in contrib/ section) learned to better support
 111    "git-annotate".
 112
 113  - "git diff $commit1:$path2 $commit2:$path2" can now report
 114    mode changes between the two blobs.
 115
 116  - Local "git fetch" from a repository whose object store is
 117    one of the alternates (e.g. fetching from the origin in a
 118    repository created with "git clone -l -s") avoids
 119    downloading objects unnecessarily.
 120
 121  - "git blame" uses .mailmap to canonicalize the author name
 122    just like "git shortlog" does.
 123
 124  - "git pack-objects" pays attention to pack.depth
 125    configuration variable.
 126
 127  - "git cherry-pick" and "git revert" does not use .msg file in
 128    the working tree to prepare commit message; instead it uses
 129    $GIT_DIR/MERGE_MSG as other commands do.
 130
 131* Builds
 132
 133  - git-p4import has never been installed; now there is an
 134    installation option to do so.
 135
 136  - gitk and git-gui can be configured out.
 137
 138  - Generated documentation pages automatically get version
 139    information from GIT_VERSION.
 140
 141  - Parallel build with "make -j" descending into subdirectory
 142    was fixed.
 143
 144* Performance Tweaks
 145
 146  - Optimized "git-rev-list --bisect" (hence "git-bisect").
 147
 148  - Optimized "git-add $path" in a large directory, most of
 149    whose contents are ignored.
 150
 151  - Optimized "git-diff-tree" for reduced memory footprint.
 152
 153  - The recursive merge strategy updated a worktree file that
 154    was changed identically in two branches, when one of them
 155    renamed it.  We do not do that when there is no rename, so
 156    match that behaviour.  This avoids excessive rebuilds.
 157
 158  - The default pack depth has been increased to 50, as the
 159    recent addition of delta_base_cache makes deeper delta chains
 160    much less expensive to access.  Depending on the project, it was
 161    reported that this reduces the resulting pack file by 10%
 162    or so.
 163
 164
 165Fixes since v1.5.1
 166------------------
 167
 168All of the fixes in v1.5.1 maintenance series are included in
 169this release, unless otherwise noted.
 170
 171* Bugfixes
 172
 173  - Switching branches with "git checkout" refused to work when
 174    a path changes from a file to a directory between the
 175    current branch and the new branch, in order not to lose
 176    possible local changes in the directory that is being turned
 177    into a file with the switch.  We now allow such a branch
 178    switch after making sure that there is no locally modified
 179    file nor un-ignored file in the directory.  This has not
 180    been backported to 1.5.1.x series, as it is rather an
 181    intrusive change.
 182
 183  - Merging branches that have a file in one and a directory in
 184    another at the same path used to get quite confused.  We
 185    handle such a case a bit more carefully, even though that is
 186    still left as a conflict for the user to sort out.  This
 187    will not be backported to 1.5.1.x series, as it is rather an
 188    intrusive change.
 189
 190  - git-fetch had trouble with a remote with insanely large number
 191    of refs.
 192
 193  - "git clean -d -X" now does not remove non-excluded directories.
 194
 195  - rebasing (without -m) a series that changes a symlink to a directory
 196    in the middle of a path confused git-apply greatly and refused to
 197    operate.