1Git v1.6.6 Release Notes 2======================== 3 4Notes on behaviour change 5------------------------- 6 7 * In this release, "git fsck" defaults to "git fsck --full" and 8 checks packfiles, and because of this it will take much longer to 9 complete than before. If you prefer a quicker check only on loose 10 objects (the old default), you can say "git fsck --no-full". This 11 has been supported by 1.5.4 and newer versions of git, so it is 12 safe to write it in your script even if you use slightly older git 13 on some of your machines. 14 15Preparing yourselves for compatibility issues in 1.7.0 16------------------------------------------------------ 17 18In git 1.7.0, which is planned to be the release after 1.6.6, there will 19be a handful of behaviour changes that will break backward compatibility. 20 21These changes were discussed long time ago and existing behaviours have 22been identified as more problematic to the userbase than keeping them for 23the sake of backward compatibility. 24 25When necessary, a transition strategy for existing users has been designed 26not to force them running around setting configuration variables and 27updating their scripts in order to either keep the traditional behaviour 28or adjust to the new behaviour, on the day their sysadmin decides to install 29the new version of git. When we switched from "git-foo" to "git foo" in 301.6.0, even though the change had been advertised and the transition 31guide had been provided for a very long time, the users procrastinated 32during the entire transition period, and ended up panicking on the day 33their sysadmins updated their git installation. We are trying to avoid 34repeating that unpleasantness in the 1.7.0 release. 35 36For changes decided to be in 1.7.0, commands that will be affected 37have been much louder to strongly discourage such procrastination, and 38they continue to be in this release. If you have been using recent 39versions of git, you would have seen warnings issued when you used 40features whose behaviour will change, with a clear instruction on how 41to keep the existing behaviour if you want to. You hopefully are 42already well prepared. 43 44Of course, we have also been giving "this and that will change in 451.7.0; prepare yourselves" warnings in the release notes and 46announcement messages for the past few releases. Let's see how well 47users will fare this time. 48 49 * "git push" into a branch that is currently checked out (i.e. pointed by 50 HEAD in a repository that is not bare) will be refused by default. 51 52 Similarly, "git push $there :$killed" to delete the branch $killed 53 in a remote repository $there, when $killed branch is the current 54 branch pointed at by its HEAD, will be refused by default. 55 56 Setting the configuration variables receive.denyCurrentBranch and 57 receive.denyDeleteCurrent to 'ignore' in the receiving repository 58 can be used to override these safety features. Versions of git 59 since 1.6.2 have issued a loud warning when you tried to do these 60 operations without setting the configuration, so repositories of 61 people who still need to be able to perform such a push should 62 already have been future proofed. 63 64 Please refer to: 65 66 http://git.or.cz/gitwiki/GitFaq#non-bare 67 http://thread.gmane.org/gmane.comp.version-control.git/107758/focus=108007 68 69 for more details on the reason why this change is needed and the 70 transition process that already took place so far. 71 72 * "git send-email" will not make deep threads by default when sending a 73 patch series with more than two messages. All messages will be sent 74 as a reply to the first message, i.e. cover letter. Git 1.6.6 (this 75 release) will issue a warning about the upcoming default change, when 76 it uses the traditional "deep threading" behaviour as the built-in 77 default. To squelch the warning but still use the "deep threading" 78 behaviour, give --chain-reply-to option or set sendemail.chainreplyto 79 to true. 80 81 It has been possible to configure send-email to send "shallow thread" 82 by setting sendemail.chainreplyto configuration variable to false. 83 The only thing 1.7.0 release will do is to change the default when 84 you haven't configured that variable. 85 86 * "git status" will not be "git commit --dry-run". This change does not 87 affect you if you run the command without pathspec. 88 89 Nobody sane found the current behaviour of "git status Makefile" useful 90 nor meaningful, and it confused users. "git commit --dry-run" has been 91 provided as a way to get the current behaviour of this command since 92 1.6.5. 93 94 * "git diff" traditionally treated various "ignore whitespace" options 95 only as a way to filter the patch output. "git diff --exit-code -b" 96 exited with non-zero status even if all changes were about changing the 97 amount of whitespace and nothing else. and "git diff -b" showed the 98 "diff --git" header line for such a change without patch text. 99 100 In 1.7.0, the "ignore whitespaces" will affect the semantics of the 101 diff operation itself. A change that does not affect anything but 102 whitespaces will be reported with zero exit status when run with 103 --exit-code, and there will not be "diff --git" header for such a 104 change. 105 106 107Updates since v1.6.5 108-------------------- 109 110(subsystems) 111 112 * various gitk updates including use of themed widgets under Tk 8.5, 113 Japanese translation, a fix to a bug when running "gui blame" from 114 a subdirectory, etc. 115 116 * various git-gui updates including new translations, wm states fixes, 117 Tk bug workaround after quitting, improved heuristics to trigger gc, 118 etc. 119 120 * various git-svn updates. 121 122 * "git fetch" over http learned a new mode that is different from the 123 traditional "dumb commit walker". 124 125(portability) 126 127 * imap-send can be built on mingw port. 128 129(performance) 130 131 * "git diff -B" has smaller memory footprint. 132 133(usability, bells and whistles) 134 135 * The object replace mechanism can be bypassed with --no-replace-objects 136 global option given to the "git" program. 137 138 * In configuration files, a few variables that name paths can begin with ~/ 139 and ~username/ and they are expanded as expected. 140 141 * "git subcmd -h" now shows short usage help for many more subcommands. 142 143 * "git bisect reset" can reset to an arbitrary commit. 144 145 * "git checkout frotz" when there is no local branch "frotz" but there 146 is only one remote tracking branch "frotz" is taken as a request to 147 start the named branch at the corresponding remote tracking branch. 148 149 * "git commit -c/-C/--amend" can be told with a new "--reset-author" option 150 to ignore authorship information in the commit it is taking the message 151 from. 152 153 * "git describe" can be told to add "-dirty" suffix with "--dirty" option. 154 155 * "git diff" learned --submodule option to show a list of one-line logs 156 instead of differences between the commit object names. 157 158 * "git diff" learned to honor diff.color.func configuration to paint 159 function name hint printed on the hunk header "@@ -j,k +l,m @@" line 160 in the specified color. 161 162 * "git fetch" learned --all and --multiple options, to run fetch from 163 many repositories, and --prune option to remove remote tracking 164 branches that went stale. These make "git remote update" and "git 165 remote prune" less necessary (there is no plan to remove "remote 166 update" nor "remote prune", though). 167 168 * "git fsck" by default checks the packfiles (i.e. "--full" is the 169 default); you can turn it off with "git fsck --no-full". 170 171 * "git grep" can use -F (fixed strings) and -i (ignore case) together. 172 173 * import-tars contributed fast-import frontend learned more types of 174 compressed tarballs. 175 176 * "git instaweb" knows how to talk with mod_cgid to apache2. 177 178 * "git log --decorate" shows the location of HEAD as well. 179 180 * "git log" and "git rev-list" learned to take revs and pathspecs from 181 the standard input with the new "--stdin" option. 182 183 * "--pretty=format" option to "log" family of commands learned: 184 185 . to wrap text with the "%w()" specifier. 186 . to show reflog information with "%g[sdD]" specifier. 187 188 * "git notes" command to annotate existing commits. 189 190 * "git merge" (and "git pull") learned --ff-only option to make it fail 191 if the merge does not result in a fast-forward. 192 193 * "git mergetool" learned to use p4merge. 194 195 * "git rebase -i" learned "reword" that acts like "edit" but immediately 196 starts an editor to tweak the log message without returning control to 197 the shell, which is done by "edit" to give an opportunity to tweak the 198 contents. 199 200 * "git send-email" can be told with "--envelope-sender=auto" to use the 201 same address as "From:" address as the envelope sender address. 202 203 * "git send-email" will issue a warning when it defaults to the 204 --chain-reply-to behaviour without being told by the user and 205 instructs to prepare for the change of the default in 1.7.0 release. 206 207 * In "git submodule add <repository> <path>", <path> is now optional and 208 inferred from <repository> the same way "git clone <repository>" does. 209 210 * "git svn" learned to read SVN 1.5+ and SVK merge tickets. 211 212 * "git svn" learned to recreate empty directories tracked only by SVN. 213 214 * "gitweb" can optionally render its "blame" output incrementally (this 215 requires JavaScript on the client side). 216 217 * Author names shown in gitweb output are links to search commits by the 218 author. 219 220Fixes since v1.6.5 221------------------ 222 223All of the fixes in v1.6.5.X maintenance series are included in this 224release, unless otherwise noted.