Sunday, September 30, 2012


The second maintenance release in Git 1.7.12.X series has been tagged, with a handful of further bugfixes that have been cooking in the master branch for the upcoming feature release Git 1.8.0.

Some highlights:

  • When "git am" is fed an input that has multiple "Content-type: ..."  header, it did not grok charset= attribute correctly.
  • Even during a conflicted merge, "git blame $path" always meant to blame uncommitted changes to the "working tree" version; make it more useful by showing cleanly merged parts as coming from the other branch that is being merged.
  • "git blame MAKEFILE" run in a history that has "Makefile" but not "MAKEFILE" should say "No such file MAKEFILE in HEAD", but got confused on a case insensitive filesystem and failed to do so.
  • "git fetch --all", when passed "--no-tags", did not honor the "--no-tags" option while fetching from individual remotes (the same issue existed with "--tags", but combination "--all --tags" makes much less sense than "--all --no-tags").
  • "git log/diff/format-patch --stat" showed the "N line(s) added" comment in user's locale and caused careless submitters to send patches with such a line in them to projects whose project language is not their language, mildly irritating others. Localization to the line has been disabled for now.
  • "git log --all-match --grep=A --grep=B" ought to show commits that mention both A and B, but when these three options are used with --author or --committer, it showed commits that mention either A or B (or both) instead.
  • The subcommand to remove the definition of a remote in "git remote" was named "rm" even though all other subcommands were spelled out.  Introduce "git remote remove" to remove confusion, and keep "rm" as a backward compatible synonym.
Upgrade and enjoy.

Wednesday, September 26, 2012

Git User's Survey 2012 edition

This year's Git User's Survey is now up, thanks to a contributor Jakub Narębski.

Please devote a few minutes of your time to fill out the simple questionnaire; it'll help the Git community understand what you do with Git, what you like about Git (and what you don't), and overall will help us improve the system.


Tuesday, September 18, 2012


The first maintenance release for Git 1.7.12.X series has been tagged, with many usability fixes that have been cooking in the 'next'/'master' front (they will all be in the upcoming major release 1.8.0).

All users of 1.7.12.X series must upgrade (eh, must is not quite true, but I just wanted to say it after seeing Greg-KH doing so on the kernel mailing list).

Some highlights:

  • "git cherry-pick A C B" used to replay changes in A and then B and then C if these three commits had committer timestamps in that order, which is not what the user who said "A C B" naturally expects. This has been fixed.
  • "git for-each-ref" did not correctly support more than one --sort option.
  • When "git push" triggered the automatic gc on the receiving end, a message from "git prune" that said it was removing cruft leaked to the standard output, breaking the communication protocol.
  • The interactive prompt "git send-email" gives was error prone. It asked "What e-mail address do you want to use?" with the address it guessed (correctly) the user would want to use in its prompt, tempting the user to say "y". But the response was taken as "No, please use 'y' as the e-mail address instead", which is most certainly not what the user meant. We now ask for confirmation against such input.
  • After "gitk" showed the contents of a tag, neither "Reread references" nor "Reload" did not update what is shown as the contents of it, when the user overwrote the tag with "git tag -f".
Please see the full changelog for details.