| Git v1.6.6 Release Notes | 
 | ======================== | 
 |  | 
 | Notes on behaviour change | 
 | ------------------------- | 
 |  | 
 |  * In this release, "git fsck" defaults to "git fsck --full" and | 
 |  checks packfiles, and because of this it will take much longer to | 
 |  complete than before. If you prefer a quicker check only on loose | 
 |  objects (the old default), you can say "git fsck --no-full". This | 
 |  has been supported by 1.5.4 and newer versions of git, so it is | 
 |  safe to write it in your script even if you use slightly older git | 
 |  on some of your machines. | 
 |  | 
 | Preparing yourselves for compatibility issues in 1.7.0 | 
 | ------------------------------------------------------ | 
 |  | 
 | In git 1.7.0, which is planned to be the release after 1.6.6, there will | 
 | be a handful of behaviour changes that will break backward compatibility. | 
 |  | 
 | These changes were discussed long time ago and existing behaviours have | 
 | been identified as more problematic to the userbase than keeping them for | 
 | the sake of backward compatibility. | 
 |  | 
 | When necessary, transition strategy for existing users has been designed | 
 | not to force them running around setting configuration variables and | 
 | updating their scripts in order to either keep the traditional behaviour | 
 | or adjust to the new behaviour on the day their sysadmin decides to install | 
 | the new version of git. When we switched from "git-foo" to "git foo" in | 
 | 1.6.0, even though the change had been advertised and the transition | 
 | guide had been provided for a very long time, the users procrastinated | 
 | during the entire transtion period, and ended up panicking on the day | 
 | their sysadmins updated their git installation. We are trying to avoid | 
 | repeating that unpleasantness in the 1.7.0 release. | 
 |  | 
 | For changes decided to be in 1.7.0, commands that will be affected | 
 | have been much louder to strongly discourage such procrastination. If | 
 | you have been using recent versions of git, you would have seen | 
 | warnings issued when you exercised features whose behaviour will | 
 | change, with a clear instruction on how to keep the existing behaviour | 
 | if you want to. You hopefully are already well prepared. | 
 |  | 
 | Of course, we have also been giving "this and that will change in | 
 | 1.7.0; prepare yourselves" warnings in the release notes and | 
 | announcement messages for the past few releases. Let's see how well | 
 | users will fare this time. | 
 |  | 
 |  * "git push" into a branch that is currently checked out (i.e. pointed by | 
 |  HEAD in a repository that is not bare) will be refused by default. | 
 |  | 
 |  Similarly, "git push $there :$killed" to delete the branch $killed | 
 |  in a remote repository $there, when $killed branch is the current | 
 |  branch pointed at by its HEAD, will be refused by default. | 
 |  | 
 |  Setting the configuration variables receive.denyCurrentBranch and | 
 |  receive.denyDeleteCurrent to 'ignore' in the receiving repository | 
 |  can be used to override these safety features. Versions of git | 
 |  since 1.6.2 have issued a loud warning when you tried to do these | 
 |  operations without setting the configuration, so repositories of | 
 |  people who still need to be able to perform such a push should | 
 |  already have been future proofed. | 
 |  | 
 |  Please refer to: | 
 |  | 
 |  http://git.or.cz/gitwiki/GitFaq#non-bare | 
 |  http://thread.gmane.org/gmane.comp.version-control.git/107758/focus=108007 | 
 |  | 
 |  for more details on the reason why this change is needed and the | 
 |  transition process that already took place so far. | 
 |  | 
 |  * "git send-email" will not make deep threads by default when sending a | 
 |  patch series with more than two messages. All messages will be sent | 
 |  as a reply to the first message, i.e. cover letter. Git 1.6.6 (this | 
 |  release) will issue a warning about the upcoming default change, when | 
 |  it uses the traditional "deep threading" behaviour as the built-in | 
 |  default. To squelch the warning but still use the "deep threading" | 
 |  behaviour, give --chain-reply-to option or set sendemail.chainreplyto | 
 |  to true. | 
 |  | 
 |  It has been possible to configure send-email to send "shallow thread" | 
 |  by setting sendemail.chainreplyto configuration variable to false. | 
 |  The only thing 1.7.0 release will do is to change the default when | 
 |  you haven't configured that variable. | 
 |  | 
 |  * "git status" will not be "git commit --dry-run". This change does not | 
 |  affect you if you run the command without pathspec. | 
 |  | 
 |  Nobody sane found the current behaviour of "git status Makefile" useful | 
 |  nor meaningful, and it confused users. "git commit --dry-run" has been | 
 |  provided as a way to get the current behaviour of this command since | 
 |  1.6.5. | 
 |  | 
 |  * "git diff" traditionally treated various "ignore whitespace" options | 
 |  only as a way to filter the patch output. "git diff --exit-code -b" | 
 |  exited with non-zero status even if all changes were about changing the | 
 |  ammount of whitespace and nothing else. and "git diff -b" showed the | 
 |  "diff --git" header line for such a change without patch text. | 
 |  | 
 |  In 1.7.0, the "ignore whitespaces" will affect the semantics of the | 
 |  diff operation itself. A change that does not affect anything but | 
 |  whitespaces will be reported with zero exit status when run with | 
 |  --exit-code, and there will not be "diff --git" header for such a | 
 |  change. | 
 |  | 
 |  | 
 | Updates since v1.6.5 | 
 | -------------------- | 
 |  | 
 | (subsystems) | 
 |  | 
 |  * various gitk updates including use of themed widgets under Tk 8.5, | 
 |  Japanese translation, a fix to a bug when running "gui blame" from | 
 |  a subdirectory, etc. | 
 |  | 
 |  * various git-gui updates including new translations, wm states fixes, | 
 |  Tk bug workaround after quitting, improved heuristics to trigger gc, | 
 |  etc. | 
 |  | 
 |  * various git-svn updates. | 
 |  | 
 |  * "git fetch" over http learned a new mode that is different from the | 
 |  traditional "dumb commit walker". | 
 |  | 
 | (portability) | 
 |  | 
 |  * imap-send can be built on mingw port. | 
 |  | 
 | (performance) | 
 |  | 
 |  * "git diff -B" has smaller memory footprint. | 
 |  | 
 | (usability, bells and whistles) | 
 |  | 
 |  * The object replace mechanism can be bypassed with --no-replace-objects | 
 |  global option given to the "git" program. | 
 |  | 
 |  * In configuration files, a few variables that name paths can begin with ~/ | 
 |  and ~username/ and they are expanded as expected. | 
 |  | 
 |  * "git subcmd -h" now shows short usage help for many more subcommands. | 
 |  | 
 |  * "git bisect reset" can reset to an arbitrary commit. | 
 |  | 
 |  * "git checkout frotz" when there is no local branch "frotz" but there | 
 |  is only one remote tracking branch "frotz" is taken as a request to | 
 |  start the named branch at the corresponding remote tracking branch. | 
 |  | 
 |  * "git commit -c/-C/--amend" can be told with a new "--reset-author" option | 
 |  to ignore authorship information in the commit it is taking the message | 
 |  from. | 
 |  | 
 |  * "git describe" can be told to add "-dirty" suffix with "--dirty" option. | 
 |  | 
 |  * "git diff" learned --submodule option to show a list of one-line logs | 
 |  instead of differences between the commit object names. | 
 |  | 
 |  * "git diff" learned to honor diff.color.func configuration to paint | 
 |  function name hint printed on the hunk header "@@ -j,k +l,m @@" line | 
 |  in the specified color. | 
 |  | 
 |  * "git fetch" learned --all and --multiple options, to run fetch from | 
 |  many repositories, and --prune option to remove remote tracking | 
 |  branches that went stale. These make "git remote update" and "git | 
 |  remote prune" less necessary (there is no plan to remove "remote | 
 |  update" nor "remote prune", though). | 
 |  | 
 |  * "git fsck" by default checks the packfiles (i.e. "--full" is the | 
 |  default); you can turn it off with "git fsck --no-full". | 
 |  | 
 |  * "git grep" can use -F (fixed strings) and -i (ignore case) together. | 
 |  | 
 |  * import-tars contributed fast-import frontend learned more types of | 
 |  compressed tarballs. | 
 |  | 
 |  * "git instaweb" knows how to talk with mod_cgid to apache2. | 
 |  | 
 |  * "git log --decorate" shows the location of HEAD as well. | 
 |  | 
 |  * "git log" and "git rev-list" learned to take revs and pathspecs from | 
 |  the standard input with the new "--stdin" option. | 
 |  | 
 |  * "--pretty=format" option to "log" family of commands learned: | 
 |  | 
 |  . to wrap text with the "%w()" specifier. | 
 |  . to show reflog information with "%g[sdD]" specifier. | 
 |  | 
 |  * "git notes" command to annotate existing commits. | 
 |  | 
 |  * "git merge" (and "git pull") learned --ff-only option to make it fail | 
 |  if the merge does not result in a fast-forward. | 
 |  | 
 |  * "git mergetool" learned to use p4merge. | 
 |  | 
 |  * "git rebase -i" learned "reword" that acts like "edit" but immediately | 
 |  starts an editor to tweak the log message without returning control to | 
 |  the shell, which is done by "edit" to give an opportunity to tweak the | 
 |  contents. | 
 |  | 
 |  * "git send-email" can be told with "--envelope-sender=auto" to use the | 
 |  same address as "From:" address as the envelope sender address. | 
 |  | 
 |  * "git send-email" will issue a warning when it defaults to the | 
 |  --chain-reply-to behaviour without being told by the user and | 
 |  instructs to prepare for the change of the default in 1.7.0 release. | 
 |  | 
 |  * In "git submodule add <repository> <path>", <path> is now optional and | 
 |  inferred from <repository> the same way "git clone <repository>" does. | 
 |  | 
 |  * "git svn" learned to read SVN 1.5+ and SVK merge tickets. | 
 |  | 
 |  * "gitweb" can optionally render its "blame" output incrementally (this | 
 |  requires JavaScript on the client side). | 
 |  | 
 |  * Author names shown in gitweb output are links to search commits by the | 
 |  author. | 
 |  | 
 |  | 
 | (developers) | 
 |  | 
 | Fixes since v1.6.5 | 
 | ------------------ | 
 |  | 
 | All of the fixes in v1.6.5.X maintenance series are included in this | 
 | release, unless otherwise noted. | 
 |  | 
 |  * Enumeration of available merge strategies iterated over the list of | 
 |  commands in a wrong way, sometimes producing an incorrect result. | 
 |  Will backport by merging ed87465 (builtin-merge.c: call | 
 |  exclude_cmds() correctly., 2009-11-25). | 
 |  | 
 |  * "git format-patch revisions... -- path" issued an incorrect error | 
 |  message that suggested to use "--" on the command line when path | 
 |  does not exist in the current work tree (it is a separate matter if | 
 |  it makes sense to limit format-patch with pathspecs like that | 
 |  without using the --full-diff option). Will backport by merging | 
 |  7e93d3b (format-patch: add test for parsing of "--", 2009-11-26). | 
 |  | 
 |  * "git shortlog" did not honor the "encoding" header embedded in the | 
 |  commit object like "git log" did. Will backport by merging 79f7ca0 | 
 |  (shortlog: respect commit encoding, 2009-11-25). | 
 |  | 
 | --- | 
 | exec >/var/tmp/1 | 
 | echo O=$(git describe master) | 
 | O=v1.6.6-rc1-79-g529f8c6 | 
 | git shortlog --no-merges $O..master --not maint |