Hello,

After a long time of silence, here is a brand new version of tig with
changes that has accummulated since version 0.14.1. It mainly brings
minor improvements for tweaking tig usage via keybindings and options.

Thanks to everybody who provided patches.

What is tig?

Tig is an ncurses-based text-mode interface for git. It functions mainly
as a git repository browser, but can also assist in staging changes for
commit at chunk level and act as a pager for output from various git
commands.

Release notes

Incompatibilities:

  • Setting the cursor color no longer automatically sets the text to
    bold. The old lazy behavior was a bug.

  • Remove check for git-repo-config, which was officially deprecated in
    git version 1.5.4. The configure script no longer depends on git
    being installed.

Improvements:

  • Provide the manual as a man page named tigmanual(7).

  • Add ability to toggle between showing shorter dates (without time
    info) and relative dates. Use D to toggle between date formats.

  • Show the active (instead of the default) keybindings in the help
    view. Furthermore, honor the keymap when suggesting actions in the
    help messages.

  • Add branch view for choosing which branch to display in the main
    view. Bound to H by default.

  • Tree view: show entry to parent directory (..) when running from
    subdirectory.

  • Tree view: sort entries by name, date or author. Toggling is bound to
    i by default, with I controlling whether or not to sort in
    ascending order.

  • Make height of the lower view in a split view configurable by setting
    the split-view-height variable to a number or a percentage.
    Defaults to 2/3 of the total view height.

  • Allow multiple text attributes for color commands:

    color cursor white blue underline bold

Bug fixes:

  • Blame view: fix loading of blame data when opened from the tree view
    and CWD is not the repo root. (Debian bug 540766)

  • Tree view: fix searching.

Change summary

The diffstat and log summary for changes made in this release.

.gitignore          |    1 +
INSTALL             |   40 +-
Makefile            |   13 +-
NEWS                |   39 ++
TODO                |    3 -
VERSION             |    2 +-
configure.ac        |    7 -
contrib/aspell.dict |    8 +-
manual.txt          |  249 ++++----
tig.1.txt           |    2 +-
tig.c               | 1549 ++++++++++++++++++++++++++++++-------------
tigmanual.7.txt     |   20 +
tigrc.5.txt         |  365 +++++------
13 files changed, 1497 insertions(+), 801 deletions(-)

Giuseppe Bilotta (2):
Fix previous/next with branch+main view
Predefined external command: git commit

Ingmar Vanhassel (1):
Makefile: Fix typo in 157ebf54

Jeff King (1):
Add missing NULL in blame_grep

Jonas Fonseca (40):
Add small cache for author names to reduce memory foot-print
Reduce memory and startup time by storing author times as time_t
Simplify searching in view lines by defining grep_text utility
Define a tree_grep and fixing searching
Make the granular allocators more customizable using macros
Remove the need for alloc variables
Define an allocator for run requests
Update the current branch information when reloading all references
Fix a potential problem with reading tokens larger then BUFSIZ
Add primitive branch view
Minor fix to always sort even if allocation fails in get_refs
Use temporary variable in refs loop in main_draw
Branch view: fix loading to handle when two branches have same commit
Add support for sorting tree entries by name, date or author
Add support for sorting branch entries by name, date and author
Fix reloading of references to not cause access to freed memory
Restore the branch view position after refreshing
Add simple support for showing menues and use it for showing option menu
Use menus with the commit subject to present selectable commit parents
Fix memory allocation check in open_commit_parent_menu
Manual: document that :<number> jumps to the line number
Remove macros which are only used for default option values
Allow multiple text attributes for color commands
Build with asciidoc-8.4.5
Show the active (instead of the default) keybindings in the help view
Merge remote branch samb/short-dates
NEWS: Mention date-shorten feature
Add support for displaying relative dates
Fix draw_date to not format anything when time arg is NULL
Fix loading of blame data when opened from the tree view
NEWS: Improve bug fix description
Update asciidoc table syntax to the one supported by version 8.4.4
tigmanual(7): provide the manual as a man page
Remove build dependency on git from the configure script
begin_update: simplify control flow
run_io_dir: take dir argument
run_io_rd_dir: obsolete by switching call sites to run_io_rd_dir
io_open: take path as a vararg format
Status view: special case revert of unmerged entries with no physical file
tig-0.15

Samuel Bronson (1):
Add an option (and toggle) for shortening the date column by skipping the time.

Sebastian Harl (1):
Fixed some uninitialized variable warnings

Tilo Schwarz (1):
Make height of split view configurable

bill lam (1):
Fix whitespace

Jonas Fonseca

The latest maintenance release GIT 1.6.5.3 is available at the
usual places:

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

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

RPMS/$arch/git-*-1.6.5.3-1.fc9.$arch.rpm      (RPM)

Git v1.6.5.3 Release Notes

Fixes since v1.6.5.2

  • info/grafts file didn’t ignore trailing CR at the end of lines.

  • Packages generated on newer FC were unreadable by older versions of
    RPM as the new default is to use stronger hash.

  • output from “git blame” was unreadable when the file ended in an
    incomplete line.

  • “git add -i/-p” didn’t handle deletion of empty files correctly.

  • “git clone” takes up to two parameters, but did not complain when
    given more arguments than necessary and silently ignored them.

  • “git cvsimport” did not read files given as command line arguments
    correctly when it is run from a subdirectory.

  • “git diff –color-words -U0″ didn’t work correctly.

  • The handling of blank lines at the end of file by “git diff/apply
    –whitespace” was inconsistent with the other kinds of errors.
    They are now colored, warned against, and fixed the same way as others.

  • There was no way to allow blank lines at the end of file without
    allowing extra blanks at the end of lines. You can use blank-at-eof
    and blank-at-eol whitespace error class to specify them separately.
    The old trailing-space error class is now a short-hand to set both.

  • “-p” option to “git format-patch” was supposed to suppress diffstat
    generation, but it was broken since 1.6.1.

  • “git imap-send” did not compile cleanly with newer OpenSSL.

  • “git help -a” outside of a git repository was broken.

  • “git ls-files -i” was supposed to be inverse of “git ls-files” without -i
    with respect to exclude patterns, but it was broken since 1.6.5.2.

  • “git ls-remote” outside of a git repository over http was broken.

  • “git rebase -i” gave bogus error message when the command word was
    misspelled.

  • “git receive-pack” that is run in response to “git push” did not run
    garbage collection nor update-server-info, but in larger hosting sites,
    these almost always need to be run. To help site administrators, the
    command now runs “gc –auto” and “u-s-i” by setting receive.autogc
    and receive.updateserverinfo configuration variables, respectively.

  • Release notes spelled the package name with incorrect capitalization.

  • “gitweb” did not escape non-ascii characters correctly in the URL.

  • “gitweb” showed “patch” link even for merge commits.

  • “gitweb” showed incorrect links for blob line numbers in pathinfo mode.

Other minor documentation updates are included.

Changes since v1.6.5.2 are as follows:

Björn Gustavsson (1):
      git-clone.txt: Fix grammar and formatting

Björn Steinbrink (1):
      pre-commit.sample: Diff against the empty tree when HEAD is invalid

Clemens Buchacher (1):
      modernize fetch/merge/pull examples

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

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

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

Jakub Narebski (1):
      gitweb: Do not show 'patch' link for merge commits

Jan Krüger (1):
      rebase -i: more graceful handling of invalid commands

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

Jeff King (6):
      cvsimport: fix relative argument filenames
      push: always load default config
      add-interactive: handle deletion of empty files
      ls-files: unbreak "ls-files -i"
      push: fix typo in usage
      format-patch: make "-p" suppress diffstat

Johannes Schindelin (3):
      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

Jonathan Nieder (4):
      clone: detect extra arguments
      Add intermediate build products to .gitignore
      check-ref-format: update usage string
      merge: do not setup worktree twice

Junio C Hamano (22):
      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
      info/grafts: allow trailing whitespaces at the end of line
      gc --auto --quiet: make the notice a bit less verboase
      receive-pack: run "gc --auto --quiet" and optionally "update-server-info"
      clone: fix help on options
      diff --color-words: bit of clean-up
      check-ref-format -h: it does not know the --print option yet
      Git 1.6.5.3

Markus Heidelberg (1):
      t4034-diff-words: add a test for word diff without context

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

Sebastian Schuberth (1):
      Do not try to remove directories when removing old links

Stephen Boyd (1):
      git-add.txt: fix formatting of --patch section

Thomas Rast (1):
      Quote ' as \(aq in manpages

Todd Zullinger (1):
      Makefile: Ensure rpm packages can be read by older rpm versions

Vietor Liu (1):
      imap-send.c: fix compiler warnings for OpenSSL 1.0
Hello!
  I would like to announce Girocco-1.0, the first stable release of
a universal Git project hosting infrastructure. You can get it at
http://repo.or.cz/w/girocco.git
  You guessed right, Girocco is the software repo.or.cz runs at;
however, compared to the past, it's much cleaned up, cleanly packaged
for easy re-deployment and fully configurable, thanks to sponsorship
of Novartis and Novell. (Apologies for switching repo.or.cz to it and
releasing it one year later than it should've been done.)
  Thus, you should be able to easily deploy a local Girocco instance
at your site and configure it to do only what you want. Girocco allows
both full push-based project hosting, or just mirroring and showing
existing projects (either local or remote) - i.e. you can also use it
just to collect scattered repositories of your developers and present
them all at single place. The push-based hosting offers currently two
models, chroot hosting and hooks-based permissions (for trusted
environments) - it should be easy to add other models.
  This way, Girocco might present an interesting alternative to
Gitorious for people who prefer mirroring over full project hosting,
prefer then rawer gitweb interface ;-) , like the repo.or.cz simple
forking model or want to make use of the GitHub-like flexible
commit notifications mechanism.
  (If you are actually going to deploy Girocco somewhere, it's good to
tell me so that I can take it into account to e.g. provide upgrade paths
for future Girocco changes.)
  If you are used to repo.or.cz, what's new in Girocco at the user's
end?
  • Friendlier homepage.

  • Friendlier project/user management interface.

  • Friendlier mirror cloning process (you can see the progress in your
    browser).

  • Support for automatic Git mirroring of SVN repositories.

  • Support for new-commit notifications, both for push and mirror
    project modes:

  • Get a notification to specified mail address(es)

  • Get a notification by receiving a POST HTTP request with
    GitHub-compatible JSON payload

  • Have repo.or.cz send commit notifications to the CIA
    service [http://cia.vc/]

  • Much easier to contribute a change to Girocco if you are missing
    any feature on repo.or.cz!

    Well, have fun!

These are the top 20 links for November (and previous months). I haven’t had time to work on this so that’s why I’m aggregating the months of September and October too and the list is bigger than usual.

I’ve improved my tools to generate this, so hopefully I’ll be able to post these more often. I’ll also post them soon just in case people want to help too.

As you can see the first two links were overwhelmingly popular, it seems people like stuff from Scott Chacon :)

  1. Pro Git (483): A book by Git experts to turn you into a Git expert.
  2. Why You Should Switch from Subversion to Git (384): Very detailed article that summarizes the advantages of Git over Subversion.
  3. learn.github (257): Compilation of online training courses
  4. Easy Version Control with Git (155): Compact and comprehensive guide to get started with git.
  5. Gource (88): Software version control visualization.
  6. How We Made GitHub Fast (78): Detailed explanation of how github was optimized in many areas.
  7. Understanding Git Conceptually (75): Simple yet useful tutorial to get familiar with Git concepts.
  8. git (72): Git’s home-page
  9. The Git Community Book (64)
  10. Git – SVN Crash Course (54): Straight-to-the-point crash course for subversion users
  11. Setting up Gitorious on your own server (53): Detailed guide to setup your own Gitorious.
  12. Feature Branch (53): Explanation of feature branches, continuous and promiscuous integration.
  13. Hosting Git repositories, The Easy (and Secure) Way (47): Instructions to setup gitosus for git hosting.
  14. pimping out git log (47): Tips to prettify git log format.
  15. Setting up a new remote git repository (46)
  16. GitCasts (43): Comprehensive screen-casts showing git tricks
  17. Git: Your New Best Friend (42): Straightforward introduction got Git, using command line and ‘git gui’.
  18. Subversion ユーザーのための Git: 第 1 回 Git 入門 (41): Simple introduction to Git for Subversion users (Japanese).
  19. github (39): Popular Git hosting with social networking capabilities.
  20. Git and Microsoft Development: A Success Story (36): A success story of Git on Windows development, and why other tools are not as
  21. git ready (30): Big collection of git tips
  22. Setting up a Mac to Work with Git and GitHub (29)
  23. 「入門 GIT」が神本である件。 git 利用者だけでなくすべての開発者が読むべき本 (29)
  24. Everyday GIT With 20 Commands Or So (26)
  25. gity: The Git App For MAC (26)
  26. Git in One Hour (24)
  27. そろそろ真剣にGitを・・・という人のための『ProGit』が鋭意翻訳進行中っぽい (23)
  28. [技術][Git]Git初心者が絶対に覚えておくべきコマンド (23)
  29. Bananajour – Local git publication and collaboration (23): Local ad-hoc git hosting with web interface and Bonjour discovery.
  30. TortoiseGit The coolest Interface to (Git) Version Control (22): Comprehensive (all-in-one) GUI for Git, just like TortoiseSVN
  31. GitX (20): Attractive Git GUI made for Mac OS X.
  32. indefero: Better code management (19): 100% vendor lock-in free hosted code and project management.
  33. Git# –> Git for .NET and Mono (16): Implementation of Git for the Dot.Net Framework and Mono.
  34. Why Git is Better than X (16)
  35. Git Machine (15): Interesting presentation about git and github
  36. git ready: tig, the ncurses front-end to Git (15): Intoduction to tig.
  37. Git Magic (15): Comprehensive guide from getting started to advanced concepts.
  38. Starting with Git (14): Guide to get started with Git in github.
  39. Easy Fabric Deployment, Part 1: Git/Mercurial and SSH (14)
  40. Git Extensions (13): Toolkit to make working with Git on Windows more intuitive.
  41. Rails deployment made easy with Inploy (12)
  42. chat sheets. $ cheat git (12)
  43. Gitorious (12)
  44. Using p4merge with Git (11)
  45. git merge vs git rebase: avoiding rebase hell (11)
  46. Git – Working on a User Story (11)
  47. msysgit: Git on Windows (11)
  48. Push to multiple Git repos (11)
  49. メモcache: gitの概念図 (11)
  50. Pro Gitの日本語版PDF (10)
  51. When GitHub goes down… (10)
  52. The Git Parable (10)
  53. git ready: reflog, your safety net (10)
  54. Git For Windows Developers (10)
  55. homebrew (9): Packaging system for Mac OS X 10.5 and above.

The latest maintenance release GIT 1.6.5.2 is available at the
usual places:

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

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

RPMS/$arch/git-*-1.6.5.2-1.fc9.$arch.rpm      (RPM)

GIT v1.6.5.2 Release Notes

Fixes since v1.6.5.1

  • Installation of templates triggered a bug in busybox when using tar
    implementation from it.

  • “git add -i” incorrectly ignored paths that are already in the index
    if they matched .gitignore patterns.

  • “git describe —always” should have produced some output even there
    were no tags in the repository, but it didn’t.

  • “git ls-files” when showing tracked files incorrectly paid attention
    to the exclude patterns.

Other minor documentation updates are included.

Changes since v1.6.5.1 are as follows:

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

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

Jeff King (2):
      ls-files: excludes should not impact tracked files
      document push's new quiet option

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

Johannes Sixt (2):
      Remove a left-over file from t/t5100
      Mark files in t/t5100 as UTF-8

Jonathan Nieder (1):
      Documentation: describe check-ref-format --branch

Junio C Hamano (4):
      Fix incorrect error check while reading deflated pack data
      Do not fail "describe --always" in a tag-less repository
      Fix list of released versions in the toc document
      GIT 1.6.5.2

Markus Heidelberg (1):
      t7800-difftool: fix the effectless GIT_DIFFTOOL_PROMPT test

Matt Kraai (1):
      Documentation/git-gc.txt: change "references" to "reference"

Nanako Shiraishi (2):
      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

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

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

StGit is a Python application providing functionality similar to Quilt
(i.e. pushing/popping patches to/from a stack) on top of Git. These
operations are performed using Git commands, and the patches are
stored as Git commit objects, allowing easy merging of the StGit
patches into other repositories using standard Git functionality.

Download:         http://download.gna.org/stgit/stgit-0.15.tar.gz
Main repository:  git://repo.or.cz/stgit.git
Project homepage: http://www.procode.org/stgit/
Mailing list:     git@vger.kernel.org (please use "StGit" in the subject)
Bug tracker:      https://gna.org/bugs/?group=stgit

The main changes since release 0.14.3 are

  • New core infrastructure for repository operations, including

    + Infinite undo/redo operations and corresponding commands.
    + Automatic rollback of changes following a failed operation
      (using transactions)---this ensures that StGit commands either
      succeed or do nothing. Previously, every commands had its own
      ad hoc implementation of this.
  • Some commands were added, including

    + "stg squash", for combining two or more patches into one.
    + "stg publish", for maintaining merge-friendly branches (which
      are not rebased).
    + "stg prev/next" for printing the name of the previous or next
      patch in the series.
  • The commands “stg add”, “stg rm”, “stg cp”, and “stg resolved”
    were removed, since there are corresponding Git equivalents.

  • The “stg import” and “stg fold” commands support the “-p N” option
    for stripping leading slashes from diff paths.

  • The “stg import” and “stg fold” commands support the “—reject”
    option for leaving rejected hunks in corresponding *.rej files.

  • New patch identification syntax: &lt;branch&gt;:&lt;patch&gt; (see
    documentation for the “stg id” command).

  • Autosigning of imported patches when “sign.autosign” configuration
    option is set.

  • A powerful Emacs mode for StGit was added to the “contrib”
    directory. It displays the patch stack in an Emacs buffer, and can
    handle all common StGit tasks.

  • Improved bash tab-completion, automatically generated from the stg
    command definitions.

  • Man pages and an improved tutorial.

Special thanks go to Karl Wiberg for the hard work done on the new
StGit features, to Catalin Marinas for many new features and bugfixes,
and to David K

Download:
http://tortoisegit.googlecode.com/files/TortoiseGit-1.1.1.0-32bit.msi
http://tortoisegit.googlecode.com/files/TortoiseGit-1.1.1.0-64bit.msi

Release 1.1.1.0

Features

  • Improve Rebase Dialog
    Allow lanuch new rebase dialog again after finish rebase dialog
    Disable “force rebase” checkbox during rebase.

  • Git SVN
    Append svn:ignore settings to the default git exclude file Add
    shell extension command to import svn ignore settings.
    Need press “Shift” key to show “import svn ignore” command.

  • Drag-drop copy\move support
    File only

  • Add paste command at shell extension
    Copy and paste file is okay. But there are problems when including
    directory.
    Cut and paste working

  • Update notepad2 to 4.022

  • Sync Dialog
    Ability to sync submodules in TGit sync dialog

  • Statics
    Sort commits by dates before processed by StatGraphDlg

  • Log Dialog
    Show &lt;No branch&gt; replace ref error message at log dialog

  • Add Check software updater support.

Bug Fix

  • Fixed issue #185. “Can’t find Super-project” when pathname include space.

  • Fixed issue #190: Access violation in Blame and wrong path name
    when root dir is git repository

  • Fixed issue #180: Create patch serial doesn’t work when there is
    “\” at end of path

  • Fixed issue #173: SVN Rebase does not work The correct handle below
    case git config svn-remote.svn.fetch
    myproject/trunk:refs/remotes/trunk

  • Fixed issue #169: Force rebase checkbox is fixed

  • Fixed issue #163: Conflict “theirs” and “mine” are reversed during a rebase

  • Fixed issue #165: Incorect path to Notepad2

  • Fixed issue #158: Rebase can act on the wrong branch

The latest maintenance release GIT 1.6.5.1 is available at the
usual places:

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

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

RPMS/$arch/git-*-1.6.5.1-1.fc9.$arch.rpm      (RPM)

GIT v1.6.5.1 Release Notes

Fixes since v1.6.5

  • An corrupt pack could make codepath to read objects into an
    infinite loop.

  • Download throughput display was always shown in KiB/s but on fast links
    it is more appropriate to show it in MiB/s.

  • “git grep -f filename” used uninitialized variable and segfaulted.

  • “git clone -b branch” gave a wrong commit object name to post-checkout
    hook.

  • “git pull” over http did not work on msys.

Other minor documentation updates are included.

Changes since v1.6.5 are as follows:

Björn Steinbrink (1):
      clone: Supply the right commit hash to post-checkout when -b is used

Johannes Sixt (1):
      remote-curl: add missing initialization of argv0_path

Junio C Hamano (1):
      GIT 1.6.5.1

Matt Kraai (1):
      grep: do not segfault when -f is used

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

Nicolas Pitre (1):
      change throughput display units with fast links

Shawn O. Pearce (1):
      sha1_file: Fix infinite loop when pack is corrupted

Hello git community,

GitSharp intends to bring best native git support to Windows. So far
the command line interface is still alpha but the library
GitSharp.Core is already quite usable.

Status Report:
Porting of the jgit core is done, we are waiting for the jgit people
to commit something

The latest feature release GIT 1.6.5 is available at the usual
places:

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

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

RPMS/$arch/git-*-1.6.5-1.fc9.$arch.rpm        (RPM)

This cycle took a bit longer than I hoped, but here it is. We already
have some new features cooking in next, and I expect we may be able to
have 1.6.6 by the end of the year.

Enjoy.

GIT v1.6.5 Release Notes

In git 1.7.0, which was planned to be the release after 1.6.5, “git
push” into a branch that is currently checked out will be refused by
default.

You can choose what should happen upon such a push by setting the
configuration variable receive.denyCurrentBranch in the receiving
repository.

Also, “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.

You can choose what should happen upon such a push by setting the
configuration variable receive.denyDeleteCurrent in the receiving
repository.

To ease the transition plan, the receiving repository of such a
push running this release will issue a big warning when the
configuration variable is missing. 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 plan.

Updates since v1.6.4

(subsystems)

  • various updates to gitk, git-svn and gitweb.

(portability)

  • more improvements on mingw port.

  • mingw will also give FRSX as the default value for the LESS
    environment variable when the user does not have one.

  • initial support to compile git on Windows with MSVC.

(performance)

  • On major platforms, the system can be compiled to use with Linus’s
    block-sha1 implementation of the SHA-1 hash algorithm, which
    outperforms the default fallback implementation we borrowed from
    Mozilla.

  • Unnecessary inefficiency in deepening of a shallow repository has
    been removed.

  • “git clone” does not grab objects that it does not need (i.e.
    referenced only from refs outside refs/heads and refs/tags
    hierarchy) anymore.

  • The “git” main binary used to link with libcurl, which then dragged
    in a large number of external libraries. When using basic plumbing
    commands in scripts, this unnecessarily slowed things down. We now
    implement http/https/ftp transfer as a separate executable as we
    used to.

  • “git clone” run locally hardlinks or copies the files in .git/ to
    newly created repository. It used to give new mtime to copied files,
    but this delayed garbage collection to trigger unnecessarily in the
    cloned repository. We now preserve mtime for these files to avoid
    this issue.

(usability, bells and whistles)

  • Human writable date format to various options, e.g. —since=yesterday,
    master@{2000.09.17}, are taught to infer some omitted input properly.

  • A few programs gave verbose “advice” messages to help uninitiated
    people when issuing error messages. An infrastructure to allow
    users to squelch them has been introduced, and a few such messages
    can be silenced now.

  • refs/replace/ hierarchy is designed to be usable as a replacement
    of the “grafts” mechanism, with the added advantage that it can be
    transferred across repositories.

  • “git am” learned to optionally ignore whitespace differences.

  • “git am” handles input e-mail files that has CRLF line endings sensibly.

  • “git am” learned “—scissors” option to allow you to discard early part
    of an incoming e-mail.

  • “git archive -o output.zip” works without being told what format to
    use with an explicit “—format=zip”.option.

  • “git checkout”, “git reset” and “git stash” learned to pick and
    choose to use selected changes you made, similar to “git add -p”.

  • “git clone” learned a “-b” option to pick a HEAD to check out
    different from the remote’s default branch.

  • “git clone” learned —recursive option.

  • “git clone” from a local repository on a different filesystem used to
    copy individual object files without preserving the old timestamp, giving
    them extra lifetime in the new repository until they gc’ed.

  • “git commit —dry-run $args” is a new recommended way to ask “what would
    happen if I try to commit with these arguments.”

  • “git commit —dry-run” and “git status” shows conflicted paths in a
    separate section to make them easier to spot during a merge.

  • “git cvsimport” now supports password-protected pserver access even
    when the password is not taken from ~/.cvspass file.

  • “git fast-export” learned —no-data option that can be useful when
    reordering commits and trees without touching the contents of
    blobs.

  • “git fast-import” has a pair of new front-end in contrib/ area.

  • “git init” learned to mkdir/chdir into a directory when given an
    extra argument (i.e. “git init this”).

  • “git instaweb” optionally can use mongoose as the web server.

  • “git log —decorate” can optionally be told with —decorate=full to
    give the reference name in full.

  • “git merge” issued an unnecessarily scary message when it detected
    that the merge may have to touch the path that the user has local
    uncommitted changes to. The message has been reworded to make it
    clear that the command aborted, without doing any harm.

  • “git push” can be told to be —quiet.

  • “git push” pays attention to url.$base.pushInsteadOf and uses a URL
    that is derived from the URL used for fetching.

  • informational output from “git reset” that lists the locally modified
    paths is made consistent with that of “git checkout $another_branch”.

  • “git submodule” learned to give submodule name to scripts run with
    “foreach” subcommand.

  • various subcommands to “git submodule” learned —recursive option.

  • “git submodule summary” learned —files option to compare the work
    tree vs the commit bound at submodule path, instead of comparing
    the index.

  • “git upload-pack”, which is the server side support for “git clone” and
    “git fetch”, can call a new post-upload-pack hook for statistics purposes.

(developers)

  • With GIT_TEST_OPTS=”—root=/p/a/t/h”, tests can be run outside the
    source directory; using tmpfs may give faster turnaround.

  • With NO_PERL_MAKEMAKER set, DESTDIR= is now honoured, so you can
    build for one location, and install into another location to tar it
    up.

Fixes since v1.6.4

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