Time for the first links for 2010. This time the process of finding out old entries has been automated so no duplicates ;) (and less time for me to generate these)

Here’s the list of new top links:

  1. 25 Tips for Intermediate Git Users (230): Comprehensive git tips
  2. Using Git to Maintain Your Website (42)
  3. Setting up your Git repositories for open source projects at GitHub (41): Mostly so pulling and pushing works correctly; and pull requests are ok
  4. SmartGit — The Easy-to-Use Git-Client (39)
  5. Persistent Trees in git, Clojure and CouchDB (36)
  6. Amp — Version Control Revolution (24): Meta SCM; aims to support git, bzr, hg, etc. through the same ui
  7. Gerrit — Gerrit Code Review (24): Code review and project management for git based projects
  8. how’s my code (20): Agile review tool for git based projects
  9. Why Git is so fast (20): Interesting thread in git mailing list about why git is so fast: C
  10. On commit messages (16): Peter Hutterer reminds us what good commit messages are

The latest feature release Git 1.6.6 is available at the usual
places:

http://www.kernel.org/pub/software/scm/git/
git-1.6.6.tar.{gz,bz2}                        (source tarball)
git-htmldocs-1.6.6.tar.{gz,bz2}               (preformatted docs)
git-manpages-1.6.6.tar.{gz,bz2}               (preformatted docs)

The RPM binary packages for a few architectures are found in:

RPMS/$arch/git-*-1.6.6-1.fc11.$arch.rpm       (RPM)

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, a 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, and
they continue to be in this release. If you have been using recent
versions of git, you would have seen warnings issued when you used
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:

    1. to wrap text with the “%w()” specifier.

    2. 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.

  • “git svn” learned to recreate empty directories tracked only by SVN.

  • “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.

Fixes since v1.6.5

All of the fixes in v1.6.5.X maintenance series are included in this
release, unless otherwise noted.

Changes since v1.6.5 are as follows:

Alex Riesen (1):
      git-gui: Update russian translation

Alex Vandiver (3):
      git-svn: sort svk merge tickets to account for minimal parents
      git-svn: Set svn.authorsfile to an absolute path when cloning
      git-svn: set svn.authorsfile earlier when cloning

Alexander Gavrilov (1):
      git-gui: Increase blame viewer usability on MacOS.

Alexey Borzenkov (1):
      git-gui: store wm state and fix wm geometry

Anders Kaseorg (1):
      bisect reset: Allow resetting to any commit, not just a branch

Andreas Schwab (1):
      Work around option parsing bug in the busybox tar implementation

Andrew Myrick (1):
      git-svn: Remove obsolete MAXPARENT check

Avery Pennarun (1):
      builtin-merge.c: call exclude_cmds() correctly.

Ben Walton (2):
      configure: add macro to set arbitrary make variables
      configure: add settings for gitconfig, editor and pager

Benjamin Kramer (1):
      Explicitly truncate bswap operand to uint32_t

Bernt Hansen (1):
      gitk: Skip translation of "wrong Tcl version" message

Bert Wesarg (2):
      Give the hunk comment its own color
      get_ref_states: strdup entries and free util in stale list

Björn Gustavsson (24):
      Teach 'rebase -i' the command "reword"
      git-clone.txt: Fix grammar and formatting
      bash: complete more options for 'git rebase'
      Teach 'git merge' and 'git pull' the option --ff-only
      Teach the --all option to 'git fetch'
      Teach the --multiple option to 'git fetch'
      Add the configuration option skipFetchAll
      Add missing test for 'git remote update --prune'
      Re-implement 'git remote update' using 'git fetch'
      format-patch: Always generate a patch
      format-patch documentation: Remove diff options that are not useful
      format-patch documentation: Fix formatting
      format-patch: Add "--no-stat" as a synonym for "-p"
      bash: add the merge option --ff-only
      Clarify and correct -z
      apply: apply works outside a repository
      apply: Format all options using back-quotes
      apply: Use the term "working tree" consistently
      Fix truncated usage messages
      User Manual: Write "Git" instead of "GIT"
      Fix over-simplified documentation for 'git log -z'
      gitworkflows: Consistently back-quote git commands
      bash: Support new 'git fetch' options
      rebase -i: abort cleanly if the editor fails to launch

Björn Steinbrink (2):
      clone: Supply the right commit hash to post-checkout when -b is used
      pre-commit.sample: Diff against the empty tree when HEAD is invalid

Brandon Casey (2):
      t4201: use ISO8859-1 rather than ISO-8859-1
      t9001: use older Getopt::Long boolean prefix '--no' rather than '--no-'

Brian Collins (1):
      grep: Allow case insensitive search of fixed-strings

Brian Gernhardt (1):
      t/gitweb-lib: Split HTTP response with non-GNU sed

Carlos R. Mafra (1):
      Makefile: clean block-sha1/ directory instead of mozilla-sha1/

Christian Couder (7):
      git: add --no-replace-objects option to disable replacing
      Documentation: add "Fighting regressions with git bisect" article
      replace: use a GIT_NO_REPLACE_OBJECTS env variable
      Documentation: fix typos and spelling in replace documentation
      Documentation: talk a little bit about GIT_NO_REPLACE_OBJECTS
      bisect: simplify calling visualizer using '--bisect' option
      Documentation: update descriptions of revision options related to '--bisect'

Clemens Buchacher (4):
      modernize fetch/merge/pull examples
      remote-helpers: return successfully if everything up-to-date
      set httpd port before sourcing lib-httpd
      git-gui: search 4 directories to improve statistic of gc hint

Dan Zwell (1):
      git-gui: Limit display to a maximum number of files

Daniel Barkalow (2):
      Require a struct remote in transport_get()
      Allow curl helper to work without a local repository

David Aguilar (2):
      submodule.c: Squelch a "use before assignment" warning
      help: Do not unnecessarily look for a repository

David Brown (1):
      commit: More generous accepting of RFC-2822 footer lines.

David Kågedal (1):
      git-blame.el: Change how blame information is shown.

David Reiss (1):
      Prevent git blame from segfaulting on a missing author name

David Soria Parra (1):
      Documentation: Document --branch option in git clone synopsis

Dmitry V. Levin (1):
      Makefile: add compat/bswap.h to LIB_H

Eric Wong (13):
      git svn: fix fetch where glob is on the top-level URL
      git svn: read global+system config for clone+init
      git svn: add authorsfile test case for ~/.gitconfig
      git svn: attempt to create empty dirs on clone+rebase
      git svn: always reuse existing remotes on fetch
      git svn: strip leading path when making empty dirs
      git svn: log removals of empty directories
      git svn: make empty directory creation gc-aware
      t9146: use 'svn_cmd' wrapper
      git svn: fix --revision when fetching deleted paths
      update release notes for git svn in 1.6.6
      git svn: lookup new parents correctly from svn:mergeinfo
      git svn: branch/tag commands detect username in URLs

Erick Mattos (1):
      commit -c/-C/--amend: reset timestamp and authorship to committer with --reset-author

Erik Faye-Lund (6):
      imap-send: use separate read and write fds
      imap-send: use run-command API for tunneling
      imap-send: fix compilation-error on Windows
      imap-send: build imap-send on Windows
      mingw: wrap SSL_set_(w|r)fd to call _get_osfhandle
      mingw: enable OpenSSL

Felipe Contreras (5):
      diff.c: stylefix
      Use 'fast-forward' all over the place
      format-patch: fix parsing of "--" on the command line
      format-patch: add test for parsing of "--"
      send-email: automatic envelope sender

Gerrit Pape (1):
      help -i: properly error out if no info viewer can be found

Gisle Aas (2):
      More precise description of 'git describe --abbrev'
      Fix documentation grammar typo

Giuseppe Bilotta (1):
      gitweb: fix esc_param

Greg Price (2):
      Documentation: undocument gc'd function graph_release()
      git svn: Don't create empty directories whose parents were deleted

Guillermo S. Romero (1):
      gitk: Add configuration for UI colour scheme

Heiko Voigt (2):
      git-gui: remove warning when deleting correctly merged remote branch
      git gui: make current branch default in "remote delete branch" merge check

Horst H. von Brand (1):
      git-pull.sh: Fix call to git-merge for new command format

Ingmar Vanhassel (1):
      import-tars: Add support for tarballs compressed with lzma, xz

Jakub Narebski (16):
      gitweb: Add optional "time to generate page" info in footer
      gitweb: Incremental blame (using JavaScript)
      gitweb: Colorize 'blame_incremental' view during processing
      gitweb: Create links leading to 'blame_incremental' using JavaScript
      gitweb: Minify gitweb.js if JSMIN is defined
      gitweb: Add 'show-sizes' feature to show blob sizes in tree view
      gitweb: Do not show 'patch' link for merge commits
      t/gitweb-lib.sh: Split gitweb output into headers and body
      gitweb: Document current snapshot rules via new tests
      gitweb: Refactor 'log' action generation, adding git_log_body()
      gitweb: Refactor common parts of 'log' and 'shortlog' views
      gitweb: Make 'history' view (re)use git_log_generic()
      gitweb.js: Harden setting blamed commit info in incremental blame
      gitweb: Make linking to actions requiring JavaScript a feature
      gitweb: Add link to other blame implementation in blame views
      gitweb: Describe (possible) gitweb.js minification in gitweb/README

Jan Krüger (2):
      rebase -i: more graceful handling of invalid commands
      pull: clarify advice for the unconfigured error case

Jari Aalto (3):
      Documentation/fetch-options.txt: order options alphabetically
      Documentation/git-pull.txt: Add subtitles above included option files
      Documentation/merge-options.txt: order options in alphabetical groups

Jay Soffian (4):
      remote: refactor some logic into get_stale_heads()
      teach warn_dangling_symref to take a FILE argument
      builtin-fetch: add --prune option
      builtin-fetch: add --dry-run option

Jean Privat (1):
      Teach "git describe" --dirty option

Jeff King (18):
      ls-files: excludes should not impact tracked files
      document push's new quiet option
      cvsimport: fix relative argument filenames
      imap-send: remove useless uid code
      push: always load default config
      gitignore: root most patterns at the top-level directory
      add-interactive: handle deletion of empty files
      ls-files: unbreak "ls-files -i"
      t915{0,1}: use $TEST_DIRECTORY
      push: fix typo in usage
      format-patch: make "-p" suppress diffstat
      diffcore-break: free filespec data as we go
      diffcore-break: save cnt_data for other phases
      prune-packed: only show progress when stderr is a tty
      rerere: don't segfault on failure to open rr-cache
      reset: improve worktree safety valves
      add-interactive: fix deletion of non-empty files
      ignore unknown color configuration

Jens Lehmann (7):
      git-gui: display summary when showing diff of a submodule
      git-gui: fix diff for partially staged submodule changes
      git submodule add: make the &lt;path&gt; parameter optional
      git-gui: fix use of uninitialized variable
      add tests for git diff --submodule
      gitk: Fix diffing committed -&gt; staged (typo in diffcmd)
      gitk: Use the --submodule option for displaying diffs when available

Jimmy Angelakos (1):
      git-gui: Added Greek translation &amp; glossary

Jindrich Makovicka (1):
      git-gui: suppress RenderBadPicture X error caused by Tk bug

Joe Perches (1):
      git-send-email.perl: fold multiple entry "Cc:" and multiple single line "RCPT TO:"s

Johan Herland (10):
      Teach "-m &lt;msg&gt;" and "-F &lt;file&gt;" to "git notes edit"
      fast-import: Add support for importing commit notes
      t3302-notes-index-expensive: Speed up create_repo()
      Add flags to get_commit_notes() to control the format of the note string
      Teach notes code to free its internal data structures on request
      Teach the notes lookup code to parse notes trees with various fanout schemes
      Add selftests verifying that we can parse notes trees with various fanouts
      Refactor notes code to concatenate multiple notes annotating the same object
      Add selftests verifying concatenation of multiple notes for the same commit
      Fix crasher on encountering SHA1-like non-note in notes tree

Johannes Schindelin (11):
      print_wrapped_text(): allow hard newlines
      Add strbuf_add_wrapped_text() to utf8.[ch]
      Introduce commit notes
      Add a script to edit/inspect notes
      Speed up git notes lookup
      Add an expensive test for git-notes
      Add '%N'-format for pretty-printing commit notes
      Add the --submodule option to the diff option family
      blame: make sure that the last line ends in an LF
      help -a: do not unnecessarily look for a repository
      diff --color-words -U0: fix the location of hunk headers

Johannes Sixt (7):
      remote-curl: add missing initialization of argv0_path
      Remove a left-over file from t/t5100
      Mark files in t/t5100 as UTF-8
      Windows: use BLK_SHA1 again
      t4014-format-patch: do not assume 'test' is available as non-builtin
      Add a notice that only certain functions can print color escape codes
      help.autocorrect: do not run a command if the command given is junk

Jonathan Nieder (40):
      Add tests for git check-ref-format
      Documentation: describe check-ref-format --branch
      check-ref-format: simplify --print implementation
      clone: detect extra arguments
      Handle more shell metacharacters in editor names
      Add intermediate build products to .gitignore
      Retire fetch--tool helper to contrib/examples
      Show usage string for 'git grep -h'
      Show usage string for 'git cherry -h'
      Show usage string for 'git commit-tree -h'
      Show usage string for 'git merge-ours -h'
      Show usage string for 'git show-ref -h'
      check-ref-format: update usage string
      merge: do not setup worktree twice
      http-fetch: add missing initialization of argv0_path
      Show usage string for 'git check-ref-format -h'
      Show usage string for 'git fast-import -h'
      Show usage string for 'git get-tar-commit-id -h'
      Show usage string for 'git imap-send -h'
      Show usage string for 'git mailsplit -h'
      Show usage string for 'git merge-one-file -h'
      Show usage string for 'git rev-parse -h'
      Show usage string for 'git show-index -h'
      Show usage string for 'git unpack-file -h'
      Show usage string for 'git stripspace -h'
      Let 'git http-fetch -h' show usage outside any git repository
      Show usage string for 'git http-push -h'
      Let 'git &lt;command&gt; -h' show usage without a git dir
      Introduce usagef() that takes a printf-style format
      merge-{recursive,subtree}: use usagef() to print usage
      diff --no-index: make the usage string less scary
      Do not use VISUAL editor on dumb terminals
      Suppress warnings from "git var -l"
      Teach git var about GIT_EDITOR
      Teach git var about GIT_PAGER
      add -i, send-email, svn, p4, etc: use "git var GIT_EDITOR"
      am -i, git-svn: use "git var GIT_PAGER"
      Provide a build time default-editor setting
      Speed up bash completion loading
      Makefile: do not clean arm directory

Julian Phillips (4):
      fetch: Speed up fetch by rewriting find_non_local_tags
      remote: Make ref_remove_duplicates faster for large numbers of refs
      fetch: Speed up fetch of large numbers of refs
      remote: fix use-after-free error detected by glibc in ref_remove_duplicates

Junio C Hamano (86):
      mailinfo: -b option keeps [bracketed] strings that is not a [PATCH] marker
      apply --whitespace=fix: fix handling of blank lines at the eof
      apply --whitespace=fix: detect new blank lines at eof correctly
      apply.c: split check_whitespace() into two
      apply --whitespace=warn/error: diagnose blank at EOF
      apply --whitespace: warn blank but not necessarily empty lines at EOF
      diff.c: the builtin_diff() deals with only two-file comparison
      diff --whitespace=warn/error: obey blank-at-eof
      diff --whitespace=warn/error: fix blank-at-eof check
      diff --color: color blank-at-eof
      core.whitespace: split trailing-space into blank-at-{eol,eof}
      diff --whitespace: fix blank lines at end
      diff.c: shuffling code around
      diff.c: split emit_line() from the first char and the rest of the line
      diff.c: emit_add_line() takes only the rest of the line
      diff -B: colour whitespace errors
      Pretty-format: %[+-]x to tweak inter-item newlines
      diff-lib.c: fix misleading comments on oneway_diff()
      unpack-trees: typofix
      unpack_callback(): use unpack_failed() consistently
      git check-ref-format --print
      info/grafts: allow trailing whitespaces at the end of line
      GIT 1.6.5.1
      Start 1.6.6 cycle
      check_filename(): make verify_filename() callable without dying
      DWIM "git checkout frotz" to "git checkout -b frotz origin/frotz"
      format_commit_message(): fix function signature
      fsck: default to "git fsck --full"
      git checkout --no-guess
      gc --auto --quiet: make the notice a bit less verboase
      receive-pack: run "gc --auto --quiet" and optionally "update-server-info"
      Fix incorrect error check while reading deflated pack data
      Teach --wrap to only indent without wrapping
      Do not fail "describe --always" in a tag-less repository
      Fix list of released versions in the toc document
      GIT 1.6.5.2
      Update draft release notes to 1.6.6
      clone: fix help on options
      Revert "Don't create the $GIT_DIR/branches directory on init"
      diff --color-words: bit of clean-up
      t1200: further modernize test script style
      t1200: prepare for merging with Fast-forward bikeshedding
      builtin-commit.c: fix logic to omit empty line before existing footers
      git-describe.txt: formatting fix
      check-ref-format -h: it does not know the --print option yet
      Provide a build time default-pager setting
      Git 1.6.5.3
      Update draft release notes to 1.6.6
      read_revision_from_stdin(): use strbuf
      Teach --stdin option to "log" family
      setup_revisions(): do not call get_pathspec() too early
      Make --stdin option to "log" family read also pathspecs
      diffcore-rename: reduce memory footprint by freeing blob data early
      Documentation: avoid xmlto input error
      t9001: test --envelope-sender option of send-email
      Git v1.6.6-rc0
      Add trivial tests for --stdin option to log family
      Protect scripted Porcelains from GREP_OPTIONS insanity
      builtin-apply.c: pay attention to -p&lt;n&gt; when determining the name
      Remove dead code from "git am"
      emit_line(): don't emit an empty &lt;SET&gt;&lt;RESET&gt; followed by a newline
      Update draft release notes to 1.6.6 before merging topics for -rc1
      git-merge: a deprecation notice of the ancient command line syntax
      Update draft release notes to 1.6.6 before -rc1
      Do not misidentify "git merge foo HEAD" as an old-style invocation
      merge: do not add standard message when message is given with -m option
      Prepare for 1.6.5.4
      Git 1.6.6-rc1
      Documentation/Makefile: allow man.base.url.for.relative.link to be set from Make
      Unconditionally set man.base.url.for.relative.links
      Git 1.6.5.4
      Documentation: xmlto 0.0.18 does not know --stringparam
      Prepare for 1.6.5.5
      Git 1.6.5.5
      Revert recent "git merge &lt;msg&gt; HEAD &lt;commit&gt;..." deprecation
      Update draft release notes to 1.6.6 before -rc2
      Git 1.6.6-rc2
      Remove post-upload-hook
      Fix archive format with -- on the command line
      Git 1.6.5.6
      Update Release Notes for 1.6.6 to remove old bugfixes
      worktree: don't segfault with an absolute pathspec without a work tree
      Git 1.6.5.7
      Git 1.6.6-rc3
      Git 1.6.6-rc4
      Git 1.6.6

Linus Torvalds (2):
      Add '--bisect' revision machinery argument
      Fix diff -B/--dirstat miscounting of newly added contents

Lukas Sandström (1):
      git am/mailinfo: Don't look at in-body headers when rebasing

Marius Storm-Olsen (1):
      MSVC: Enable OpenSSL, and translate -lcrypto

Mark Lodato (5):
      http-backend: add GIT_PROJECT_ROOT environment var
      http-backend: reword some documentation
      http-backend: use mod_alias instead of mod_rewrite
      http-backend: add example for gitweb on same URL
      http-backend: more explict LocationMatch

Mark Rada (3):
      gitweb: check given hash before trying to create snapshot
      instaweb: support mod_cgid for apache2
      gitweb: Smarter snapshot names

Markus Heidelberg (4):
      t7800-difftool: fix the effectless GIT_DIFFTOOL_PROMPT test
      bash completion: difftool accepts the same options as diff
      t4034-diff-words: add a test for word diff without context
      gitk: Fix "git gui blame" invocation when called from top-level directory

Martin Storsjö (3):
      Disable CURLOPT_NOBODY before enabling CURLOPT_PUT and CURLOPT_POST
      Refactor winsock initialization into a separate function
      Enable support for IPv6 on MinGW

Matt Kraai (2):
      grep: do not segfault when -f is used
      Documentation/git-gc.txt: change "references" to "reference"

Matthew Ogilvie (6):
      core.autocrlf documentation: mention the crlf attribute
      cvsserver doc: database generally can not be reproduced consistently
      config documentation: some configs are auto-set by git-init
      t2300: use documented technique to invoke git-sh-setup
      t3409 t4107 t7406 t9150: use dashless commands
      t/README: Document GIT_TEST_INSTALLED and GIT_TEST_EXEC_PATH

Matthieu Moy (6):
      Expand ~ and ~user in core.excludesfile, commit.template
      expand_user_path: expand ~ to $HOME, not to the actual homedir.
      merge-recursive: point the user to commit when file would be overwritten.
      user-manual: Document that "git merge" doesn't like uncommited changes.
      merge-recursive: make the error-message generation an extern function
      builtin-merge: show user-friendly error messages for fast-forward too.

Michael J Gruber (2):
      Make t9150 and t9151 test scripts executable
      Documentation: Fix a few i.e./e.g. mix-ups

Miklos Vajna (1):
      git-stash documentation: mention default options for 'list'

Mizar (2):
      gitk: Add Japanese translation
      gitk: Update Japanese translation

Nanako Shiraishi (5):
      git push: remove incomplete options list from help text
      git push: say that --tag can't be used with --all or --mirror in help text
      t1200: fix a timing dependent error
      prepare send-email for smoother change of --chain-reply-to default
      Illustrate "filter" attribute with an example

Nasser Grainawi (1):
      Document `delta` attribute in "git help attributes".

Nicolas Pitre (4):
      change throughput display units with fast links
      pack-objects: move thread autodetection closer to relevant code
      give priority to progress messages
      pack-objects: split implications of --all-progress from progress activation

Pat Thoyts (4):
      gitk: Use themed tk widgets
      gitk: Fix errors in the theme patch
      gitk: Default to the system colours on Windows
      gitk: Fix selection of tags

Paul Mackerras (5):
      gitk: Restore scrolling position of diff pane on back/forward in history
      gitk: Add a user preference to enable/disable use of themed widgets
      gitk: Show diff of commits at end of compare-commits output
      gitk: Don't compare fake children when comparing commits
      gitk: Improve appearance of radiobuttons and checkbuttons

Pauli Virtanen (1):
      git-add--interactive: never skip files included in index

Petr Baudis (1):
      gitweb: Fix blob linenr links in pathinfo mode

Philippe Bruhat (1):
      Make sure $PERL_PATH is defined when the test suite is run.

Raman Gupta (1):
      Add branch management for releases to gitworkflows

Ramsay Allan Jones (5):
      Makefile: merge two Cygwin configuration sections into one
      Makefile: keep MSVC and Cygwin configuration separate
      MSVC: Add support for building with NO_MMAP
      t9700-perl-git.sh: Fix a test failure on Cygwin
      git-count-objects: Fix a disk-space under-estimate on Cygwin

René Scharfe (9):
      describe: load refnames before calling describe()
      Implement wrap format %w() as if it is a mode switch
      log --format: don't ignore %w() at the start of format string
      grep: unset GREP_OPTIONS before spawning external grep
      strbuf_add_wrapped_text(): factor out strbuf_add_indented_text()
      log --format: document %w
      strbuf_add_wrapped_text(): skip over colour codes
      mergetool--lib: simplify guess_merge_tool()
      archive: clarify description of path parameter

Robert Zeh (1):
      git svn: add test for a git svn gc followed by a git svn mkdirs

Robin Rosenberg (1):
      Don't create the $GIT_DIR/branches directory on init

SZEDER Gábor (2):
      Documentation: add 'git replace' to main git manpage
      bash: update 'git commit' completion

Sam Vilain (10):
      git-svn: add test data for SVK merge, with script.
      git-svn: allow test setup script to support PERL env. var
      git-svn: convert SVK merge tickets to extra parents
      git-svn: add test data for SVN 1.5+ merge, with script.
      git-svn: convert SVN 1.5+ / svnmerge.py svn:mergeinfo props to parents
      git-svn: expand the svn mergeinfo test suite, highlighting some failures
      git-svn: memoize conversion of SVN merge ticket info to git commit ranges
      git-svn: fix some mistakes with interpreting SVN mergeinfo commit ranges
      git-svn: exclude already merged tips using one rev-list call
      git-svn: detect cherry-picks correctly.

Scott Chacon (2):
      mergetool--lib: add p4merge as a pre-configured mergetool option
      Update packfile transfer protocol documentation

Sebastian Schuberth (3):
      Do not try to remove directories when removing old links
      Use faster byte swapping when compiling with MSVC
      Make the MSVC projects use PDB/IDB files named after the project

Shawn O. Pearce (28):
      git-gui: Ensure submodule path is quoted properly
      sha1_file: Fix infinite loop when pack is corrupted
      pkt-line: Add strbuf based functions
      pkt-line: Make packet_read_line easier to debug
      fetch-pack: Use a strbuf to compose the want list
      Move "get_ack()" back to fetch-pack
      Add multi_ack_detailed capability to fetch-pack/upload-pack
      remote-curl: Refactor walker initialization
      fetch: Allow transport -v -v -v to set verbosity to 3
      remote-helpers: Fetch more than one ref in a batch
      remote-helpers: Support custom transport options
      Move WebDAV HTTP push under remote-curl
      Git-aware CGI to provide dumb HTTP transport
      Add stateless RPC options to upload-pack, receive-pack
      Smart fetch and push over HTTP: server side
      Discover refs via smart HTTP server when available
      Smart push over HTTP: client side
      Smart fetch over HTTP: client side
      Smart HTTP fetch: gzip requests
      http tests: use /dumb/ URL prefix
      test smart http fetch and push
      http-backend: Use http.getanyfile to disable dumb HTTP serving
      http-backend: Test configuration options
      Git-aware CGI to provide dumb HTTP transport
      http-backend: Protect GIT_PROJECT_ROOT from /../ requests
      t5551-http-fetch: Work around some libcurl versions
      t5551-http-fetch: Work around broken Accept header in libcurl
      http-backend: Fix bad treatment of uintmax_t in Content-Length

Sitaram Chamarty (1):
      gitk: Disable checkout of remote branches

Stephen Boyd (13):
      rebase -i: fix reword when using a terminal editor
      gitweb: linkify author/committer names with search
      t1402: Make test executable
      t1200: cleanup and modernize test style
      t1200: Make documentation and test agree
      git-add.txt: fix formatting of --patch section
      t3101: test more ls-tree options
      ls-tree: migrate to parse-options
      gitweb.js: fix null object exception in initials calculation
      instaweb: restart server if already running
      gitweb.js: fix padLeftStr() and its usage
      api-strbuf.txt: fix typos and document launch_editor()
      technical-docs: document hash API

Tarmigan Casebolt (3):
      Check the format of more printf-type functions
      http-backend: Fix access beyond end of string.
      http-backend: Let gcc check the format of more printf-type functions.

Tay Ray Chuan (3):
      http-push: fix check condition on http.c::finish_http_pack_request()
      t5540-http-push: remove redundant fetches
      remote-curl.c: fix rpc_out()

Thiago Farina (1):
      Documentation: update pt-BR

Thomas Rast (15):
      bash completion: complete refs for git-grep
      Let --decorate show HEAD position
      Refactor pretty_print_commit arguments into a struct
      reflog-walk: refactor the branch@{num} formatting
      Introduce new pretty formats %g[sdD] for reflog information
      stash list: use new %g formats instead of sed
      stash list: drop the default limit of 10 stashes
      Quote ' as \(aq in manpages
      describe: when failing, tell the user about options that work
      filter-branch: stop special-casing $filter_subdir argument
      filter-branch: nearest-ancestor rewriting outside subdir filter
      Documentation: clarify 'ours' merge strategy
      rebase docs: clarify --merge and --strategy
      Document git-svn's first-parent rule
      describe: do not use unannotated tag even if exact match

Tim Henigan (2):
      Update 'git remote update' usage string to match man page.
      git remote: Separate usage strings for subcommands

Toby Allsopp (1):
      git svn: handle SVN merges from revisions past the tip of the branch

Todd Zullinger (2):
      Makefile: Ensure rpm packages can be read by older rpm versions
      Documentation: Avoid use of xmlto --stringparam

Uwe Kleine-König (1):
      shortlog: respect commit encoding

Vietor Liu (2):
      git-gui: adjust the minimum height of diff pane for shorter screen height
      imap-send.c: fix compiler warnings for OpenSSL 1.0

Štěpán Němec (1):
      git-update-index.txt: Document the --really-refresh option.

git-cola is a powerful GUI for Git written in Python/PyQt4

git-cola v1.4.1.2 has been tagged and released:

I haven’t sent an announcement in a long time but we’ve
been quite busy working on enhancements nonetheless.
The release notes below summarize all changes since 1.3.8
in case you haven’t kept up with the latest cola.

NYE is fast approaching here on the west coast so I’ve got a
party to catch. Thus, this is the last git-cola for 2009 ;-)
Happy New Years everybody!

git-cola v1.4.1.2

Usability, bells and whistles

  • It is now possible to checkout from the index as well
    as from HEAD. This corresponds to the
    Removed Unstaged Changes action in the Repository Status tool.

  • The remote dialogs (fetch, push, pull) are now slightly
    larger by default.

  • Bookmarks can be selected when git-cola is run outside of a Git repository.

  • Added more user documentation. We now include many links to
    external git resources.

Fixes

  • Fixed a missing `import` when showing right-click actions
    for unmerged files in the Repository Status tool.

  • `git update-index --refresh` is no longer run everytime
    `git cola version` is run.

  • Don’t try to watch non-existant directories when using inotify.

Packaging

  • The `Makefile` will now conditionally include a `config.mak`
    file located at the root of the project. This allows for user
    customizations such as changes to the prefix variable
    to be stored in a file so that custom settings do not need to
    be specified every time on the command-line.

  • The build scripts no longer require a `.git` directory to
    generate the `builtin_version.py` module. The release tarballs
    now include a `version` file at the root of the project which
    is used in lieu of having the Git repository available.
    This allows for `make clean &amp;&amp; make` to function outside of
    a Git repository.

  • Added maintainer’s `make dist` target to the `Makefile`.

  • The built-in simplejson and jsonpickle libraries can be
    excluded from `make install` by specifying the `standalone=true`
    make variable. For example, `make standalone=true install.
    This corresponds to the `
    –standalone“ option to `setup.py`.

git-cola v1.4.1.1

Usability, bells and whistles

  • We now use patience diff by default when it is available via
    git diff --patience.

  • Allow closing the cola classic tool with Ctrl+W.

  • Update desktop menu entry to read Cola Git GUI.

Fixes

  • Fixed an unbound variable error in the push dialog.

Packaging

  • Don’t include simplejson in MANIFEST.in.

  • Update desktop entry to read Cola Git GUI.

git-cola v1.4.1

This feature release adds two new features directly from
git-cola’s github issues backlog. On the developer
front, further work was done towards modularizing the code base.

Usability, bells and whistles

  • Dragging and dropping patches invokes git-am

    http://github.com/davvid/git-cola/issues/closed#issue/3
  • A dialog to allow opening or cloning a repository
    is presented when git-cola is launched outside of a git repository.

    http://github.com/davvid/git-cola/issues/closed/#issue/22
  • Warn when push is used to create a new branch

    http://github.com/davvid/git-cola/issues/closed#issue/35
  • Optimized startup time by removing several calls to git.

Portability

  • git-cola is once again compatible with PyQt 4.3.x.

Developer

  • cola.gitcmds was added to factor out git command-line utilities

  • cola.gitcfg was added for interacting with git-config

  • cola.models.browser was added to factor out repobrowser data

  • Added more tests

git-cola v1.4.0.5

Fixes

  • Fix launching external applications on Windows

  • Ensure that the amend checkbox is unchecked when switching modes

  • Update the status tree when amending commits

git-cola v1.4.0.4

Packaging

  • Fix Lintian warnings

git-cola v1.4.0.3

Fixes

  • Fix X11 warnings on application startup

git-cola v1.4.0.2

Fixes

  • Added missing Exit Diff Mode button for Diff Expression mode

    http://github.com/davvid/git-cola/issues/closed/#issue/31
  • Fix a bug when initializing fonts on Windows

    http://github.com/davvid/git-cola/issues/closed/#issue/32

git-cola v1.4.0.1

Fixes

  • Keep entries in sorted order in the cola classic tool

  • Fix staging untracked files

    http://github.com/davvid/git-cola/issues/closed/#issue/27
  • Fix the show command in the Stash dialog

    http://github.com/davvid/git-cola/issues/closed/#issue/29
  • Fix a typo when loading merge commit messages

    http://github.com/davvid/git-cola/issues/closed/#issue/30

git-cola v1.4.0

This release focuses on a redesign of the git-cola user interface,
a tags interface, and better integration of the cola classic tool.
A flexible interface based on configurable docks is used to manage the
various cola widgets.

Usability, bells and whistles

  • New GUI is flexible and user-configurable

  • Individual widgets can be detached and rearranged arbitrarily

  • Add an interface for creating tags

  • Provide a fallback SSH_ASKPASS implementation to prompt for
    SSH passwords on fetch/push/pull

  • The commit message editor displays the current row/column and
    warns when lines get too long

  • The cola classic tool displays upstream changes

  • git cola --classic launches cola classic in standalone mode

  • Provide more information in log messages

Fixes

  • Inherit the window manager’s font settings

  • Miscellaneous PyQt4 bug fixes and workarounds

Developer

  • Removed all usage of Qt Designer .ui files

  • Simpler model/view architecture

  • Selection is now shared across tools

  • Centralized notifications are used to keep views in sync

  • The cola.git command class was made thread-safe

  • Less coupling between model and view actions

  • The status view was rewritten to use the MVC architecture

  • Added more documentation and tests

git-cola v1.3.9

Usability, bells and whistles

  • Added a cola classic tool for browsing the entire repository

  • Handle diff expressions with spaces

  • Handle renamed files

Portability

  • Handle carat ^ characters in diff expressions on Windows

  • Worked around a PyQt 4.5/4.6 QThreadPool bug

Documentation

  • Added a keyboard shortcuts reference page

  • Added developer API documentation

Fixes

  • Fix the diff expression used when reviewing branches

  • Fix a bug when pushing branches

  • Fix X11 warnings at startup

  • Fix more interrupted system calls on Mac OS X

David

A release candidate Git 1.6.6.rc4 is available at the usual places
for final testing:

http://www.kernel.org/pub/software/scm/git/
git-1.6.6.rc4.tar.{gz,bz2}                    (source tarball)
git-htmldocs-1.6.6.rc4.tar.{gz,bz2}           (preformatted docs)
git-manpages-1.6.6.rc4.tar.{gz,bz2}           (preformatted docs)

The RPM binary packages for a few architectures are found in:

testing/git-*-1.6.6.rc4-1.fc11.$arch.rpm      (RPM)

Hopefully I’ll do the final this Wednesday to make 1.6.6 a holiday gift to
everybody.

I would very much prefer news outlets like kernelpodcast.org and lwn.net
not to say “… is released; it comes with many fixes“. Fixes to
released versions have indeed been included in the master branch, but
they all appear in the maintenance release. The main point of using a
new feature release like 1.6.6 is to get new features, so it is more
appropriate to say “it comes with many new features.”

Thanks for all contributors who have worked hard to whip this release into
shape.

Changes since v1.6.6-rc3 are as follows:

Björn Gustavsson (1):
      rebase -i: abort cleanly if the editor fails to launch

Eric Wong (2):
      git svn: make empty directory creation gc-aware
      t9146: use 'svn_cmd' wrapper

Junio C Hamano (1):
      Git 1.6.6-rc4

Stephen Boyd (2):
      api-strbuf.txt: fix typos and document launch_editor()
      technical-docs: document hash API

The latest maintenance release Git 1.6.5.7 is available at the
usual places:

http://www.kernel.org/pub/software/scm/git/
git-1.6.5.7.tar.{gz,bz2}                      (source tarball)
git-htmldocs-1.6.5.7.tar.{gz,bz2}             (preformatted docs)
git-manpages-1.6.5.7.tar.{gz,bz2}             (preformatted docs)

The RPM binary packages for a few architectures are found in:

RPMS/$arch/git-*-1.6.5.7-1.fc11.$arch.rpm     (RPM)

Nothing spectacular to see here, but as I was tagging 1.6.6-rc3 today, I
wanted to push out fixes accumulated on the maintenance branch in a tagged
release. Everything in this release is also in 1.6.6-rc3.

Changes since v1.6.5.6 are as follows:

Jeff King (1):
      ignore unknown color configuration

Johannes Sixt (1):
      help.autocorrect: do not run a command if the command given is junk

Junio C Hamano (2):
      worktree: don't segfault with an absolute pathspec without a work tree
      Git 1.6.5.7

Nanako Shiraishi (1):
      Illustrate "filter" attribute with an example

A new bugfix-release of cgit is now available.

Clone: git://hjemli.net/pub/git/cgit
Browse: http://hjemli.net/git/cgit

Changes since 0.8.3

Danijel Tašov (1):
Nov is the correct abbreviation

Geoff Johnstone (1):
Fix repolist search links with virtual root

Lars Hjemli (2):
shared.c: return original errno
CGIT 0.8.3.1

Loui Chang (2):
cgitrc.5.txt: Add mansource and manmanual.
cgitrc.5.txt: Change repo.group to section in example config.

Martins Polakovs (1):
Fix segfault on ppc when browsing tree

Rys Sommefeldt (1):
Close fd on error in readfile()

Sami Kyöstilä (1):
Don’t crash when a repo-specific readme file is used

The latest maintenance release Git 1.6.5.6 is available at the
usual places:

http://www.kernel.org/pub/software/scm/git/
git-1.6.5.6.tar.{gz,bz2}                      (source tarball)
git-htmldocs-1.6.5.6.tar.{gz,bz2}             (preformatted docs)
git-manpages-1.6.5.6.tar.{gz,bz2}             (preformatted docs)

The RPM binary packages for a few architectures are found in:

RPMS/$arch/git-*-1.6.5.6-1.fc11.$arch.rpm     (RPM)

Hopefully this will be the last update to the 1.6.5.X series before the
upcoming feature release (1.6.6). It fixes a security issue, and users of
older 1.6.5.X series are strongly recommended to update to this version.

Git v1.6.5.6 Release Notes

Fixes since v1.6.5.5

  • “git add -p” had a regression since v1.6.5.3 that broke deletion of
    non-empty files.

  • “git archive -o o.zip — Makefile” produced an archive in o.zip
    but in POSIX tar format.

  • Error message given to “git pull –rebase” when the user didn’t give
    enough clue as to what branch to integrate with still talked about
    “merging with” the branch.

  • Error messages given by “git merge” when the merge resulted in a
    fast-forward still were in plumbing lingo, even though in v1.6.5
    we reworded messages in other cases.

  • The post-upload-hook run by upload-pack in response to “git fetch” has
    been removed, due to security concerns (the hook first appeared in
    1.6.5).

Changes since v1.6.5.5 are as follows:

Jan Krüger (1):
      pull: clarify advice for the unconfigured error case

Jeff King (1):
      add-interactive: fix deletion of non-empty files

Junio C Hamano (3):
      Remove post-upload-hook
      Fix archive format with -- on the command line
      Git 1.6.5.6

Matthieu Moy (2):
      merge-recursive: make the error-message generation an extern function
      builtin-merge: show user-friendly error messages for fast-forward too.

A release candidate Git 1.6.6.rc2 is available at the usual places
for testing:

http://www.kernel.org/pub/software/scm/git/
git-1.6.6.rc2.tar.{gz,bz2}                    (source tarball)
git-htmldocs-1.6.6.rc2.tar.{gz,bz2}           (preformatted docs)
git-manpages-1.6.6.rc2.tar.{gz,bz2}           (preformatted docs)

The RPM binary packages for a few architectures are found in:

testing/git-*-1.6.6.rc2-1.fc11.$arch.rpm      (RPM)

The changes since rc1 are mostly updates to the subsystems.

The regression to “git pull” that made the command give annoying warning
message when there is no local commit has been fixed; it appeared in rc1.

Changes since v1.6.6-rc1 are as follows:

Alex Vandiver (3):
      git-svn: sort svk merge tickets to account for minimal parents
      git-svn: Set svn.authorsfile to an absolute path when cloning
      git-svn: set svn.authorsfile earlier when cloning

Alexander Gavrilov (1):
      git-gui: Increase blame viewer usability on MacOS.

Bernt Hansen (1):
      gitk: Skip translation of "wrong Tcl version" message

Brandon Casey (2):
      t4201: use ISO8859-1 rather than ISO-8859-1
      t9001: use older Getopt::Long boolean prefix '--no' rather than '--no-'

Clemens Buchacher (1):
      git-gui: search 4 directories to improve statistic of gc hint

Eric Wong (1):
      git svn: log removals of empty directories

Greg Price (1):
      git svn: Don't create empty directories whose parents were deleted

Guillermo S. Romero (1):
      gitk: Add configuration for UI colour scheme

Heiko Voigt (1):
      git gui: make current branch default in "remote delete branch" merge check

Jakub Narebski (1):
      gitweb: Describe (possible) gitweb.js minification in gitweb/README

Jan Krüger (1):
      pull: clarify advice for the unconfigured error case

Jeff King (3):
      rerere: don't segfault on failure to open rr-cache
      reset: improve worktree safety valves
      add-interactive: fix deletion of non-empty files

Jens Lehmann (2):
      gitk: Fix diffing committed -&gt; staged (typo in diffcmd)
      gitk: Use the --submodule option for displaying diffs when available

Jindrich Makovicka (1):
      git-gui: suppress RenderBadPicture X error caused by Tk bug

Johan Herland (1):
      Fix crasher on encountering SHA1-like non-note in notes tree

Junio C Hamano (9):
      Documentation/Makefile: allow man.base.url.for.relative.link to be set from Make
      Unconditionally set man.base.url.for.relative.links
      Git 1.6.5.4
      Documentation: xmlto 0.0.18 does not know --stringparam
      Prepare for 1.6.5.5
      Git 1.6.5.5
      Revert recent "git merge &lt;msg&gt; HEAD &lt;commit&gt;..." deprecation
      Update draft release notes to 1.6.6 before -rc2
      Git 1.6.6-rc2

Linus Torvalds (1):
      Fix diff -B/--dirstat miscounting of newly added contents

Markus Heidelberg (1):
      gitk: Fix "git gui blame" invocation when called from top-level directory

Mizar (2):
      gitk: Add Japanese translation
      gitk: Update Japanese translation

Pat Thoyts (4):
      gitk: Use themed tk widgets
      gitk: Fix errors in the theme patch
      gitk: Default to the system colours on Windows
      gitk: Fix selection of tags

Paul Mackerras (5):
      gitk: Restore scrolling position of diff pane on back/forward in history
      gitk: Add a user preference to enable/disable use of themed widgets
      gitk: Show diff of commits at end of compare-commits output
      gitk: Don't compare fake children when comparing commits
      gitk: Improve appearance of radiobuttons and checkbuttons

René Scharfe (1):
      archive: clarify description of path parameter

SZEDER Gábor (1):
      bash: update 'git commit' completion

Sitaram Chamarty (1):
      gitk: Disable checkout of remote branches

Todd Zullinger (1):
      Documentation: Avoid use of xmlto --stringparam

The latest maintenance release Git 1.6.5.5 is available at the
usual places:

http://www.kernel.org/pub/software/scm/git/
git-1.6.5.5.tar.{gz,bz2}                      (source tarball)
git-htmldocs-1.6.5.5.tar.{gz,bz2}             (preformatted docs)
git-manpages-1.6.5.5.tar.{gz,bz2}             (preformatted docs)

The RPM binary packages for a few architectures are found in:

RPMS/$arch/git-*-1.6.5.5-1.fc11.$arch.rpm     (RPM)

This is primarily to help other distros with older xmlto to partially
revert the change in 1.6.5.4 to help distros with newer docbook
stylesheets, but I also merged some fixes that have already been cooking
and graduated to master as well.

Git v1.6.5.5 Release Notes

Fixes since v1.6.5.4

  • Manual pages can be formatted with older xmlto again.

  • GREP_OPTIONS exported from user’s environment could have broken
    our scripted commands.

  • In configuration files, a few variables that name paths can begin with
    / and username/ and they are expanded as expected. This is not a
    bugfix but 1.6.6 will have this and without backporting users cannot
    easily use the same ~/.gitconfig across versions.

  • “git diff -B -M” did the same computation to hash lines of contents
    twice, and held onto memory after it has used the data in it
    unnecessarily before it freed.

  • “git diff -B” and “git diff –dirstat” was not counting newly added
    contents correctly.

  • “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).

  • “git grep -F -i StRiNg” did not work as expected.

  • Enumeration of available merge strategies iterated over the list of
    commands in a wrong way, sometimes producing an incorrect result.

  • “git shortlog” did not honor the “encoding” header embedded in the
    commit object like “git log” did.

  • Reading progress messages that come from the remote side while running
    “git pull” is given precedence over reading the actual pack data to
    prevent garbled progress message on the user’s terminal.

  • “git rebase” got confused when the log message began with certain
    strings that looked like Subject:, Date: or From: header.

  • “git reset” accidentally run in .git/ directory checked out the
    work tree contents in there.

Other minor documentation updates are included.

Changes since v1.6.5.4 are as follows:

Avery Pennarun (1):
      builtin-merge.c: call exclude_cmds() correctly.

Brandon Casey (1):
      t4201: use ISO8859-1 rather than ISO-8859-1

Brian Collins (1):
      grep: Allow case insensitive search of fixed-strings

Felipe Contreras (2):
      format-patch: fix parsing of "--" on the command line
      format-patch: add test for parsing of "--"

Jeff King (4):
      diffcore-break: free filespec data as we go
      diffcore-break: save cnt_data for other phases
      rerere: don't segfault on failure to open rr-cache
      reset: improve worktree safety valves

Junio C Hamano (7):
      diffcore-rename: reduce memory footprint by freeing blob data early
      Documentation: avoid xmlto input error
      Protect scripted Porcelains from GREP_OPTIONS insanity
      Remove dead code from "git am"
      Documentation: xmlto 0.0.18 does not know --stringparam
      Prepare for 1.6.5.5
      Git 1.6.5.5

Linus Torvalds (1):
      Fix diff -B/--dirstat miscounting of newly added contents

Lukas Sandström (1):
      git am/mailinfo: Don't look at in-body headers when rebasing

Matthew Ogilvie (1):
      core.autocrlf documentation: mention the crlf attribute

Matthieu Moy (4):
      Expand ~ and ~user in core.excludesfile, commit.template
      expand_user_path: expand ~ to $HOME, not to the actual homedir.
      merge-recursive: point the user to commit when file would be overwritten.
      user-manual: Document that "git merge" doesn't like uncommited changes.

Nicolas Pitre (1):
      give priority to progress messages

Philippe Bruhat (1):
      Make sure $PERL_PATH is defined when the test suite is run.

Raman Gupta (1):
      Add branch management for releases to gitworkflows

Ramsay Allan Jones (3):
      Makefile: merge two Cygwin configuration sections into one
      t9700-perl-git.sh: Fix a test failure on Cygwin
      git-count-objects: Fix a disk-space under-estimate on Cygwin

René Scharfe (2):
      mergetool--lib: simplify guess_merge_tool()
      archive: clarify description of path parameter

Tim Henigan (2):
      Update 'git remote update' usage string to match man page.
      git remote: Separate usage strings for subcommands

Todd Zullinger (1):
      Documentation: Avoid use of xmlto --stringparam

Uwe Kleine-König (1):
      shortlog: respect commit encoding

A release candidate GIT 1.6.6.rc1 is available at the usual places
for testing:

http://www.kernel.org/pub/software/scm/git/
git-1.6.6.rc1.tar.{gz,bz2}                    (source tarball)
git-htmldocs-1.6.6.rc1.tar.{gz,bz2}           (preformatted docs)
git-manpages-1.6.6.rc1.tar.{gz,bz2}           (preformatted docs)

The RPM binary packages for a few architectures are found in:

testing/git-*-1.6.6.rc1-1.fc11.$arch.rpm      (RPM)

Git v1.6.6 Release Notes (draft)

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 use 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 tried very hard to
avoid repeating that unpleasantness.

For changes decided to be in 1.7.0, we have been much louder to strongly
discourage such procrastination. If you have been using recent versions
of git, you would have already seen warnings issued when you exercised
features whose behaviour will change, with the instruction on how to
keep the existing behaviour if you want to. You hopefully should be
well prepared already.

Of course, we have also given “this and that will change in 1.7.0;
prepare yourselves” warnings in the release notes and announcement
messages. 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 them
    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 git-gui updates including new translations, wm states, etc.

  • 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:

    1. to wrap text with the “%w()” specifier.

    2. 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.

  • The ancient “git merge <message> HEAD <branch>…” syntax will be
    removed in later versions of git. A warning is given and tells
    users to use the “git merge -m <message> <branch>…” instead.

  • “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.

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).

Changes since v1.6.6-rc0 are as follows:

Avery Pennarun (1):
      builtin-merge.c: call exclude_cmds() correctly.

Benjamin Kramer (1):
      Explicitly truncate bswap operand to uint32_t

Bert Wesarg (2):
      Give the hunk comment its own color
      get_ref_states: strdup entries and free util in stale list

Björn Gustavsson (11):
      Teach the --all option to 'git fetch'
      Teach the --multiple option to 'git fetch'
      Add the configuration option skipFetchAll
      Add missing test for 'git remote update --prune'
      Re-implement 'git remote update' using 'git fetch'
      Clarify and correct -z
      apply: apply works outside a repository
      apply: Format all options using back-quotes
      apply: Use the term "working tree" consistently
      Fix over-simplified documentation for 'git log -z'
      gitworkflows: Consistently back-quote git commands

Brian Gernhardt (1):
      t/gitweb-lib: Split HTTP response with non-GNU sed

Christian Couder (6):
      Documentation: add "Fighting regressions with git bisect" article
      replace: use a GIT_NO_REPLACE_OBJECTS env variable
      Documentation: fix typos and spelling in replace documentation
      Documentation: talk a little bit about GIT_NO_REPLACE_OBJECTS
      bisect: simplify calling visualizer using '--bisect' option
      Documentation: update descriptions of revision options related to '--bisect'

David Aguilar (1):
      help: Do not unnecessarily look for a repository

David Soria Parra (1):
      Documentation: Document --branch option in git clone synopsis

Erick Mattos (1):
      commit -c/-C/--amend: reset timestamp and authorship to committer with --reset-author

Felipe Contreras (3):
      format-patch: fix parsing of "--" on the command line
      format-patch: add test for parsing of "--"
      send-email: automatic envelope sender

Horst H. von Brand (1):
      git-pull.sh: Fix call to git-merge for new command format

Jakub Narebski (10):
      gitweb: Add optional "time to generate page" info in footer
      gitweb: Incremental blame (using JavaScript)
      gitweb: Colorize 'blame_incremental' view during processing
      gitweb: Create links leading to 'blame_incremental' using JavaScript
      gitweb: Minify gitweb.js if JSMIN is defined
      t/gitweb-lib.sh: Split gitweb output into headers and body
      gitweb: Document current snapshot rules via new tests
      gitweb.js: Harden setting blamed commit info in incremental blame
      gitweb: Make linking to actions requiring JavaScript a feature
      gitweb: Add link to other blame implementation in blame views

Jay Soffian (4):
      remote: refactor some logic into get_stale_heads()
      teach warn_dangling_symref to take a FILE argument
      builtin-fetch: add --prune option
      builtin-fetch: add --dry-run option

Jeff King (1):
      prune-packed: only show progress when stderr is a tty

Johannes Sixt (2):
      t4014-format-patch: do not assume 'test' is available as non-builtin
      Add a notice that only certain functions can print color escape codes

Jonathan Nieder (1):
      Makefile: do not clean arm directory

Junio C Hamano (19):
      mailinfo: -b option keeps [bracketed] strings that is not a [PATCH] marker
      Pretty-format: %[+-]x to tweak inter-item newlines
      read_revision_from_stdin(): use strbuf
      Teach --stdin option to "log" family
      setup_revisions(): do not call get_pathspec() too early
      Make --stdin option to "log" family read also pathspecs
      t9001: test --envelope-sender option of send-email
      Add trivial tests for --stdin option to log family
      Protect scripted Porcelains from GREP_OPTIONS insanity
      builtin-apply.c: pay attention to -p&lt;n&gt; when determining the name
      Remove dead code from "git am"
      emit_line(): don't emit an empty &lt;SET&gt;&lt;RESET&gt; followed by a newline
      Update draft release notes to 1.6.6 before merging topics for -rc1
      git-merge: a deprecation notice of the ancient command line syntax
      Update draft release notes to 1.6.6 before -rc1
      Do not misidentify "git merge foo HEAD" as an old-style invocation
      merge: do not add standard message when message is given with -m option
      Prepare for 1.6.5.4
      Git 1.6.6-rc1

Mark Rada (2):
      gitweb: check given hash before trying to create snapshot
      gitweb: Smarter snapshot names

Martin Storsjö (3):
      Disable CURLOPT_NOBODY before enabling CURLOPT_PUT and CURLOPT_POST
      Refactor winsock initialization into a separate function
      Enable support for IPv6 on MinGW

Matthew Ogilvie (5):
      cvsserver doc: database generally can not be reproduced consistently
      config documentation: some configs are auto-set by git-init
      t2300: use documented technique to invoke git-sh-setup
      t3409 t4107 t7406 t9150: use dashless commands
      t/README: Document GIT_TEST_INSTALLED and GIT_TEST_EXEC_PATH

Matthieu Moy (4):
      merge-recursive: point the user to commit when file would be overwritten.
      user-manual: Document that "git merge" doesn't like uncommited changes.
      merge-recursive: make the error-message generation an extern function
      builtin-merge: show user-friendly error messages for fast-forward too.

Michael J Gruber (1):
      Documentation: Fix a few i.e./e.g. mix-ups

Nanako Shiraishi (2):
      t1200: fix a timing dependent error
      prepare send-email for smoother change of --chain-reply-to default

Nicolas Pitre (1):
      pack-objects: split implications of --all-progress from progress activation

Ramsay Allan Jones (1):
      git-count-objects: Fix a disk-space under-estimate on Cygwin

René Scharfe (2):
      strbuf_add_wrapped_text(): skip over colour codes
      mergetool--lib: simplify guess_merge_tool()

Stephen Boyd (3):
      gitweb.js: fix null object exception in initials calculation
      instaweb: restart server if already running
      gitweb.js: fix padLeftStr() and its usage

Tay Ray Chuan (1):
      remote-curl.c: fix rpc_out()

Uwe Kleine-König (1):
      shortlog: respect commit encoding