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