| GIT v1.5.2 Release Notes | 
 | ======================== | 
 |  | 
 | Updates since v1.5.1 | 
 | -------------------- | 
 |  | 
 | * Plumbing level superproject support. | 
 |  | 
 |  You can include a subdirectory that has an independent git | 
 |  repository in your index and tree objects of your project | 
 |  ("superproject"). This plumbing (i.e. "core") level | 
 |  superproject support explicitly excludes recursive behaviour. | 
 |  | 
 |  The "subproject" entries in the index and trees of a superproject | 
 |  are incompatible with older versions of git. Experimenting with | 
 |  the plumbing level support is encouraged, but be warned that | 
 |  unless everybody in your project updates to this release or | 
 |  later, using this feature would make your project | 
 |  inaccessible by people with older versions of git. | 
 |  | 
 | * Plumbing level gitattributes support. | 
 |  | 
 |  The gitattributes mechanism allows you to add 'attributes' to | 
 |  paths in your project, and affect the way certain git | 
 |  operations work. Currently you can influence if a path is | 
 |  considered a binary or text (the former would be treated by | 
 |  'git diff' not to produce textual output; the latter can go | 
 |  through the line endings conversion process in repositories | 
 |  with core.autocrlf set), expand and unexpand '$Id$' keyword | 
 |  with blob object name, specify a custom 3-way merge driver, | 
 |  and specify a custom diff driver. You can also apply | 
 |  arbitrary filter to contents on check-in/check-out codepath | 
 |  but this feature is an extremely sharp-edged razor and needs | 
 |  to be handled with caution (do not use it unless you | 
 |  understand the earlier mailing list discussion on keyword | 
 |  expansion). These conversions apply when checking files in | 
 |  or out, and exporting via git-archive. | 
 |  | 
 | * The packfile format now optionally suports 64-bit index. | 
 |  | 
 |  This release supports the "version 2" format of the .idx | 
 |  file. This is automatically enabled when a huge packfile | 
 |  needs more than 32-bit to express offsets of objects in the | 
 |  pack. | 
 |  | 
 | * Comes with an updated git-gui 0.7.1 | 
 |  | 
 | * Updated gitweb: | 
 |  | 
 |  - can show combined diff for merges; | 
 |  - uses font size of user's preference, not hardcoded in pixels; | 
 |  - can now 'grep'; | 
 |  | 
 | * New commands and options. | 
 |  | 
 |  - "git bisect start" can optionally take a single bad commit and | 
 |  zero or more good commits on the command line. | 
 |  | 
 |  - "git shortlog" can optionally be told to wrap its output. | 
 |  | 
 |  - "subtree" merge strategy allows another project to be merged in as | 
 |  your subdirectory. | 
 |  | 
 |  - "git format-patch" learned a new --subject-prefix=<string> | 
 |  option, to override the built-in "[PATCH]". | 
 |  | 
 |  - "git add -u" is a quick way to do the first stage of "git | 
 |  commit -a" (i.e. update the index to match the working | 
 |  tree); it obviously does not make a commit. | 
 |  | 
 |  - "git clean" honors a new configuration, "clean.requireforce". When | 
 |  set to true, this makes "git clean" a no-op, preventing you | 
 |  from losing files by typing "git clean" when you meant to | 
 |  say "make clean". You can still say "git clean -f" to | 
 |  override this. | 
 |  | 
 |  - "git log" family of commands learned --date={local,relative,default} | 
 |  option. --date=relative is synonym to the --relative-date. | 
 |  --date=local gives the timestamp in local timezone. | 
 |  | 
 | * Updated behavior of existing commands. | 
 |  | 
 |  - When $GIT_COMMITTER_EMAIL or $GIT_AUTHOR_EMAIL is not set | 
 |  but $EMAIL is set, the latter is used as a substitute. | 
 |  | 
 |  - "git diff --stat" shows size of preimage and postimage blobs | 
 |  for binary contents. Earlier it only said "Bin". | 
 |  | 
 |  - "git lost-found" shows stuff that are unreachable except | 
 |  from reflogs. | 
 |  | 
 |  - "git checkout branch^0" now detaches HEAD at the tip commit | 
 |  on the named branch, instead of just switching to the | 
 |  branch (use "git checkout branch" to switch to the branch, | 
 |  as before). | 
 |  | 
 |  - "git bisect next" can be used after giving only a bad commit | 
 |  without giving a good one (this starts bisection half-way to | 
 |  the root commit). We used to refuse to operate without a | 
 |  good and a bad commit. | 
 |  | 
 |  - "git push", when pushing into more than one repository, does | 
 |  not stop at the first error. | 
 |  | 
 |  - "git archive" does not insist you to give --format parameter | 
 |  anymore; it defaults to "tar". | 
 |  | 
 |  - "git cvsserver" can use backends other than sqlite. | 
 |  | 
 |  - "gitview" (in contrib/ section) learned to better support | 
 |  "git-annotate". | 
 |  | 
 |  - "git diff $commit1:$path2 $commit2:$path2" can now report | 
 |  mode changes between the two blobs. | 
 |  | 
 |  - Local "git fetch" from a repository whose object store is | 
 |  one of the alternates (e.g. fetching from the origin in a | 
 |  repository created with "git clone -l -s") avoids | 
 |  downloading objects unnecessarily. | 
 |  | 
 |  - "git blame" uses .mailmap to canonicalize the author name | 
 |  just like "git shortlog" does. | 
 |  | 
 |  - "git pack-objects" pays attention to pack.depth | 
 |  configuration variable. | 
 |  | 
 |  - "git cherry-pick" and "git revert" does not use .msg file in | 
 |  the working tree to prepare commit message; instead it uses | 
 |  $GIT_DIR/MERGE_MSG as other commands do. | 
 |  | 
 | * Builds | 
 |  | 
 |  - git-p4import has never been installed; now there is an | 
 |  installation option to do so. | 
 |  | 
 |  - gitk and git-gui can be configured out. | 
 |  | 
 |  - Generated documentation pages automatically get version | 
 |  information from GIT_VERSION. | 
 |  | 
 |  - Parallel build with "make -j" descending into subdirectory | 
 |  was fixed. | 
 |  | 
 | * Performance Tweaks | 
 |  | 
 |  - Optimized "git-rev-list --bisect" (hence "git-bisect"). | 
 |  | 
 |  - Optimized "git-add $path" in a large directory, most of | 
 |  whose contents are ignored. | 
 |  | 
 |  - Optimized "git-diff-tree" for reduced memory footprint. | 
 |  | 
 |  - The recursive merge strategy updated a worktree file that | 
 |  was changed identically in two branches, when one of them | 
 |  renamed it. We do not do that when there is no rename, so | 
 |  match that behaviour. This avoids excessive rebuilds. | 
 |  | 
 |  - The default pack depth has been increased to 50, as the | 
 |  recent addition of delta_base_cache makes deeper delta chains | 
 |  much less expensive to access. Depending on the project, it was | 
 |  reported that this reduces the resulting pack file by 10% | 
 |  or so. | 
 |  | 
 |  | 
 | Fixes since v1.5.1 | 
 | ------------------ | 
 |  | 
 | All of the fixes in v1.5.1 maintenance series are included in | 
 | this release, unless otherwise noted. | 
 |  | 
 | * Bugfixes | 
 |  | 
 |  - Switching branches with "git checkout" refused to work when | 
 |  a path changes from a file to a directory between the | 
 |  current branch and the new branch, in order not to lose | 
 |  possible local changes in the directory that is being turned | 
 |  into a file with the switch. We now allow such a branch | 
 |  switch after making sure that there is no locally modified | 
 |  file nor un-ignored file in the directory. This has not | 
 |  been backported to 1.5.1.x series, as it is rather an | 
 |  intrusive change. | 
 |  | 
 |  - Merging branches that have a file in one and a directory in | 
 |  another at the same path used to get quite confused. We | 
 |  handle such a case a bit more carefully, even though that is | 
 |  still left as a conflict for the user to sort out. This | 
 |  will not be backported to 1.5.1.x series, as it is rather an | 
 |  intrusive change. | 
 |  | 
 |  - git-fetch had trouble with a remote with insanely large number | 
 |  of refs. | 
 |  | 
 |  - "git clean -d -X" now does not remove non-excluded directories. | 
 |  | 
 |  - rebasing (without -m) a series that changes a symlink to a directory | 
 |  in the middle of a path confused git-apply greatly and refused to | 
 |  operate. |