Git v1.9.1

The latest maintenance release Git v1.9.1 is now available at
the usual places.

The release tarballs are found at:

The following public repositories all have a copy of the v1.9.1
tag and the maint branch that the tag points at:

url =
url = git://
url =
url = git://
url = git://
url =

Git v1.9.1 Release Notes

Fixes since v1.9.0

  • “git clean -d pathspec” did not use the given pathspec correctly
    and ended up cleaning too much.

  • “git difftool” misbehaved when the repository is bound to the
    working tree with the “.git file” mechanism, where a textual file
    “.git” tells us where it is.

  • “git push” did not pay attention to branch.*.pushremote if it is
    defined earlier than remote.pushdefault; the order of these two
    variables in the configuration file should not matter, but it did
    by mistake.

  • Codepaths that parse timestamps in commit objects have been

  • “git diff –external-diff” incorrectly fed the submodule directory
    in the working tree to the external diff driver when it knew it is
    the same as one of the versions being compared.

  • “git reset” needs to refresh the index when working in a working
    tree (it can also be used to match the index to the HEAD in an
    otherwise bare repository), but it failed to set up the working
    tree properly, causing GIT_WORK_TREE to be ignored.

  • “git check-attr” when working on a repository with a working tree
    did not work well when the working tree was specified via the
    –work-tree (and obviously with –git-dir) option.

  • “merge-recursive” was broken in 1.7.7 era and stopped working in
    an empty (temporary) working tree, when there are renames
    involved. This has been corrected.

  • “git rev-parse” was loose in rejecting command line arguments
    that do not make sense, e.g. “–default” without the required
    value for that option.

  • include.path variable (or any variable that expects a path that
    can use \~username expansion) in the configuration file is not a
    boolean, but the code failed to check it.

  • “git diff –quiet — pathspec1 pathspec2” sometimes did not return
    correct status value.

  • Attempting to deepen a shallow repository by fetching over smart
    HTTP transport failed in the protocol exchange, when no-done
    extension was used. The fetching side waited for the list of
    shallow boundary commits after the sending end stopped talking to

  • Allow “git cmd path/”, when the path is where a submodule is
    bound to the top-level working tree, to match path, despite the
    extra and unnecessary trailing slash (such a slash is often
    given by command line completion).

Changes since v1.9.0 are as follows:

Brad King (4):
      t3030-merge-recursive: test known breakage with empty work tree
      read-cache.c: refactor --ignore-missing implementation
      read-cache.c: extend make_cache_entry refresh flag with options
      merge-recursive.c: tolerate missing files while refreshing index

David Aguilar (1):
      difftool: support repositories with .git-files

David Sharp (1):
      rev-parse: check i before using argv[i] against argc

Jeff King (12):
      expand_user_path: do not look at NULL path
      handle_path_include: don't look at NULL value
      tests: auto-set LIB_HTTPD_PORT from test name
      t4212: test bogus timestamps with git-log
      fsck: report integer overflow in author timestamps
      date: check date overflow against time_t
      log: handle integer overflow in timestamps
      log: do not segfault on gmtime errors
      remote: handle pushremote config in any order
      show_ident_date: fix tz range check
      clean: respect pathspecs with "-d"
      clean: simplify dir/not-dir logic

Junio C Hamano (4):
      t0003: do not chdir the whole test process
      check-attr: move to the top of working tree when in non-bare repository
      t7800: add a difftool test for .git-files
      Git 1.9.1

Nguyễn Thái Ngọc Duy (17):
      test: rename http fetch and push test files
      pack-protocol.txt: clarify 'obj-id' in the last ACK after 'done'
      protocol-capabilities.txt: refer multi_ack_detailed back to pack-protocol.txt
      protocol-capabilities.txt: document no-done
      fetch-pack: fix deepen shallow over smart http with no-done cap
      t5537: move http tests out to t5539
      reset: optionally setup worktree and refresh index on --mixed
      pathspec: convert some match_pathspec_depth() to ce_path_match()
      pathspec: convert some match_pathspec_depth() to dir_path_match()
      pathspec: rename match_pathspec_depth() to match_pathspec()
      dir.c: prepare match_pathspec_item for taking more flags
      match_pathspec: match pathspec "foo/" against directory "foo"
      pathspec: pass directory indicator to match_pathspec_item()
      clean: replace match_pathspec() with dir_path_match()
      clean: use cache_name_is_other()
      diff.c: move diffcore_skip_stat_unmatch core logic out for reuse later
      diff: do not quit early on stat-dirty files

Sandy Carter (1):
      i18n: proposed command missing leading dash

Thomas Rast (1):
      diff: do not reuse_worktree_file for submodules

Junio C Hamano wrote on 18 Mar 2014