Version v2.19.2; changes since v2.19.1:
---------------------------------------

Alexander Pyhalov (1):
      t7005-editor: quote filename to fix whitespace-issue

Andreas Heiduk (6):
      doc: clarify boundaries of 'git worktree list --porcelain'
      doc: fix ASCII art tab spacing
      doc: fix inappropriate monospace formatting
      doc: fix descripion for 'git tag --format'
      doc: fix indentation of listing blocks in gitweb.conf.txt
      doc: fix formatting in git-update-ref

Ben Peart (1):
      git-mv: allow submodules and fsmonitor to work together

Brandon Williams (1):
      config: document value 2 for protocol.version

Daniels Umanovskis (3):
      doc: move git-rev-parse from porcelain to plumbing
      doc: move git-get-tar-commit-id to plumbing
      doc: move git-cherry to plumbing

David Zych (1):
      doc: clarify gitcredentials path component matching

Derrick Stolee (6):
      commit-graph: update design document
      test-repository: properly init repo
      commit-graph: not compatible with replace objects
      commit-graph: not compatible with grafts
      commit-graph: not compatible with uninitialized repo
      commit-graph: close_commit_graph before shallow walk

Elijah Newren (7):
      Remove superfluous trailing semicolons
      t4200: demonstrate rerere segfault on specially crafted merge
      rerere: avoid buffer overrun
      update-ref: fix type of update_flags variable to match its usage
      update-ref: allow --no-deref with --stdin
      sequencer: fix --allow-empty-message behavior, make it smarter
      commit: fix erroneous BUG, 'multiple renames on the same target? how?'

Frederick Eaton (3):
      git-archimport.1: specify what kind of Arch we're talking about
      git-column.1: clarify initial description, provide examples
      git-describe.1: clarify that "human readable" is also git-readable

Jeff Hostetler (2):
      t0051: test GIT_TRACE to a windows named pipe
      mingw: fix mingw_open_append to work with named pipes

Jeff King (16):
      trailer: use size_t for string offsets
      trailer: use size_t for iterating trailer list
      trailer: pass process_trailer_opts to trailer_info_get()
      interpret-trailers: tighten check for "---" patch boundary
      interpret-trailers: allow suppressing "---" divider
      pretty, ref-filter: format %(trailers) with no_divider option
      sequencer: ignore "---" divider when parsing trailers
      append_signoff: use size_t for string offsets
      reopen_tempfile(): truncate opened file
      config.mak.dev: add -Wformat-security
      receive-pack: update comment with check_everything_connected
      run-command: mark path lookup errors with ENOENT
      upload-pack: fix broken if/else chain in config callback
      t1450: check large blob in trailing-garbage test
      check_stream_sha1(): handle input underflow
      cat-file: handle streaming failures consistently

Johannes Schindelin (8):
      rebase -i --autosquash: demonstrate a problem skipping the last squash
      rebase -i: be careful to wrap up fixup/squash chains
      pack-objects: fix typo 'detla' -> 'delta'
      pack-objects (mingw): demonstrate a segmentation fault with large deltas
      pack-objects (mingw): initialize `packing_data` mutex in the correct spot
      repack: point out a bug handling stale shallow info
      shallow: offer to prune only non-existing entries
      repack -ad: prune the list of shallow commits

Johannes Sixt (2):
      diff: don't attempt to strip prefix from absolute Windows paths
      t3404-rebase-interactive: test abbreviated commands

Jonathan Nieder (2):
      mailmap: consistently normalize brian m. carlson's name
      git doc: direct bug reporters to mailing list archive

Jonathan Tan (4):
      fetch-object: unify fetch_object[s] functions
      fetch-object: set exact_oid when fetching
      fetch-pack: avoid object flags if no_dependents
      fetch-pack: exclude blobs when lazy-fetching trees

Junio C Hamano (5):
      CodingGuidelines: document the API in *.h files
      receive: denyCurrentBranch=updateinstead should not blindly update
      cocci: simplify "if (++u > 1)" to "if (u++)"
      fsck: s/++i > 1/i++/
      Git 2.19.2

Martin Ågren (5):
      git-commit-graph.txt: fix bullet lists
      git-commit-graph.txt: typeset more in monospace
      git-commit-graph.txt: refer to "*commit*-graph file"
      Doc: refer to the "commit-graph file" with dash
      t1400: drop debug `echo` to actually execute `test`

Matthew DeVore (2):
      Documentation/git-log.txt: do not show --exclude-promisor-objects
      exclude-promisor-objects: declare when option is allowed

Michael Witten (3):
      docs: typo: s/go/to/
      docs: graph: remove unnecessary `graph_update()' call
      docs: typo: s/isimilar/similar/

Mihir Mehta (1):
      doc: fix a typo and clarify a sentence

Nguyễn Thái Ngọc Duy (2):
      add: do not accept pathspec magic 'attr'
      config.txt: correct the note about uploadpack.packObjectsHook

Noam Postavsky (1):
      log: fix coloring of certain octopus merge shapes

René Scharfe (1):
      sequencer: use return value of oidset_insert()

SZEDER Gábor (12):
      Documentation/git.txt: clarify that GIT_TRACE=/path appends
      t3701-add-interactive: tighten the check of trace output
      t1700-split-index: drop unnecessary 'grep'
      t0090: disable GIT_TEST_SPLIT_INDEX for the test checking split index
      t1700-split-index: document why FSMONITOR is disabled in this test script
      split-index: add tests to demonstrate the racy split index problem
      t1700-split-index: date back files to avoid racy situations
      split-index: count the number of deleted entries
      split-index: don't compare cached data of entries already marked for split index
      split-index: smudge and add racily clean cache entries to split index
      split-index: BUG() when cache entry refers to non-existing shared entry
      test-lib: introduce the '-V' short option for '--verbose-log'

Sam McKelvie (1):
      rev-parse: --show-superproject-working-tree should work during a merge

Saulius Gurklys (1):
      doc: fix small typo in git show-branch

Sebastian Staudt (1):
      travis-ci: no longer use containers

Shulhan (1):
      builtin/remote: quote remote name on error to display empty name

Stefan Beller (4):
      refs.c: migrate internal ref iteration to pass thru repository argument
      refs.c: upgrade for_each_replace_ref to be a each_repo_ref_fn callback
      string-list: remove unused function print_string_list
      strbuf.h: format according to coding guidelines

Tao Qingyun (3):
      refs: docstring typo
      builtin/branch.c: remove useless branch_get
      branch: trivial style fix

Thomas Gummerer (4):
      .gitattributes: add conflict-marker-size for relevant files
      linear-assignment: fix potential out of bounds memory access
      t5551: move setup code inside test_expect blocks
      t5551: compare sorted cookies files

Tim Schumacher (1):
      Documentation/Makefile: make manpage-base-url.xsl generation quieter

Torsten Bögershausen (2):
      Make git_check_attr() a void function
      path.c: char is not (always) signed

Uwe Kleine-König (1):
      howto/using-merge-subtree: mention --allow-unrelated-histories


Version v2.19.1; changes since v2.19.0:
---------------------------------------

Jeff King (5):
      submodule--helper: use "--" to signal end of clone options
      submodule-config: ban submodule urls that start with dash
      submodule-config: ban submodule paths that start with a dash
      fsck: detect submodule urls starting with dash
      fsck: detect submodule paths starting with dash

Junio C Hamano (6):
      Git 2.14.5
      Git 2.15.3
      Git 2.16.5
      Git 2.17.2
      Git 2.18.1
      Git 2.19.1


Version v2.19.0; changes since v2.19.0-rc2:
-------------------------------------------

Alexander Shopov (1):
      l10n: bg.po: Updated Bulgarian translation (3958t)

Christopher Díaz Riveros (1):
      l10n: es.po v2.19.0 round 2

Dimitriy Ryazantcev (1):
      l10n: ru.po: update Russian translation

Jean-Noël Avila (2):
      l10n: fr.po v2.19.0 rnd 1
      l10n: fr.po v2.19.0 rnd 2

Jiang Xin (4):
      l10n: zh_CN: review for git 2.18.0
      l10n: git.pot: v2.19.0 round 1 (382 new, 30 removed)
      l10n: git.pot: v2.19.0 round 2 (3 new, 5 removed)
      l10n: zh_CN: for git v2.19.0 l10n round 1 to 2

Jonathan Nieder (1):
      Revert "Merge branch 'sb/submodule-core-worktree'"

Junio C Hamano (1):
      Git 2.19

Max Kirillov (1):
      http-backend: allow empty CONTENT_LENGTH

Peter Krefting (2):
      l10n: sv.po: Update Swedish translation(3608t0f0u)
      l10n: sv.po: Update Swedish translation (3958t0f0u)

Ralf Thielow (1):
      l10n: de.po: translate 108 new messages

Raphaël Hertzog (1):
      l10n: fr: fix a message seen in git bisect

Trần Ngọc Quân (1):
      l10n: vi.po(3958t): updated Vietnamese translation v2.19.0 round 2


Version v2.19.0-rc2; changes since v2.19.0-rc1:
-----------------------------------------------

Derrick Stolee (1):
      commit: don't use generation numbers if not needed

Elijah Newren (3):
      t3401: add another directory rename testcase for rebase and am
      merge-recursive: add ability to turn off directory rename detection
      am: avoid directory rename detection when calling recursive merge machinery

Eric Sunshine (2):
      chainlint: match "quoted" here-doc tags
      config.mak.uname: resolve FreeBSD iconv-related compilation warning

Junio C Hamano (1):
      Git 2.19-rc2

Phillip Wood (2):
      sequencer: handle errors from read_author_ident()
      sequencer: fix quoting in write_author_script

Ævar Arnfjörð Bjarmason (8):
      tests: fix and add lint for non-portable head -c N
      tests: fix and add lint for non-portable seq
      tests: fix comment syntax in chainlint.sed for AIX sed
      tests: use shorter labels in chainlint.sed for AIX sed
      tests: fix version-specific portability issue in Perl JSON
      tests: fix and add lint for non-portable grep --file
      tests: fix non-portable "${var:-"str"}" construct
      tests: fix non-portable iconv invocation


Version v2.19.0-rc1; changes since v2.19.0-rc0:
-----------------------------------------------

Derrick Stolee (2):
      commit: use timestamp_t for author_date_slab
      config: fix commit-graph related config docs

Elia Pinto (1):
      worktree: add --quiet option

Jean-Noël Avila (1):
      i18n: fix mistakes in translated strings

Jeff King (2):
      test-tool.h: include git-compat-util.h
      hashcmp: assert constant hash size

Junio C Hamano (3):
      config.txt: clarify core.checkStat
      Getting ready for -rc1
      Git 2.19-rc1

Kyle Meyer (1):
      range-diff: update stale summary of --no-dual-color

Nguyễn Thái Ngọc Duy (2):
      pack-objects: fix performance issues on packing large deltas
      generate-cmdlist.sh: collect config from all config.txt files

René Scharfe (3):
      checkout-index: improve argument help for --stage
      remote: improve argument help for add --mirror
      parseopt: group literal string alternatives in argument help

SZEDER Gábor (11):
      tests: use 'test_must_be_empty' instead of '! test -s'
      tests: use 'test_must_be_empty' instead of 'test ! -s'
      tests: use 'test_must_be_empty' instead of 'test_cmp /dev/null <out>'
      tests: use 'test_must_be_empty' instead of 'test_cmp <empty> <out>'
      t7501-commit: drop silly command substitution
      t0020-crlf: check the right file
      t4051-diff-function-context: read the right file
      t6018-rev-list-glob: fix 'empty stdin' test
      t3903-stash: don't try to grep non-existing file
      t3420-rebase-autostash: don't try to grep non-existing files
      t/lib-rebase.sh: support explicit 'pick' commands in 'fake_editor.sh'

Samuel Maftoul (1):
      branch: support configuring --sort via .gitconfig

Ævar Arnfjörð Bjarmason (1):
      refactor various if (x) FREE_AND_NULL(x) to just FREE_AND_NULL(x)


Version v2.19.0-rc0; changes since v2.18.1:
-------------------------------------------

Aaron Schrab (1):
      sequencer: use configured comment character

Alban Gruin (4):
      rebase: introduce a dedicated backend for --preserve-merges
      rebase: strip unused code in git-rebase--preserve-merges.sh
      rebase: use the new git-rebase--preserve-merges.sh
      rebase: remove -p code from git-rebase--interactive.sh

Alejandro R. Sedeño (1):
      Makefile: tweak sed invocation

Aleksandr Makarov (1):
      for-each-ref: consistently pass WM_IGNORECASE flag

Andrei Rybak (2):
      Documentation: fix --color option formatting
      t4150: fix broken test for am --scissors

Anthony Sottile (1):
      config.c: fix regression for core.safecrlf false

Antonio Ospite (6):
      config: move config_from_gitmodules to submodule-config.c
      submodule-config: add helper function to get 'fetch' config from .gitmodules
      submodule-config: add helper to get 'update-clone' config from .gitmodules
      submodule-config: make 'config_from_gitmodules' private
      submodule-config: pass repository as argument to config_from_gitmodules
      submodule-config: reuse config_from_gitmodules in repo_read_gitmodules

Beat Bolli (10):
      builtin/config: work around an unsized array forward declaration
      unicode: update the width tables to Unicode 11
      connect.h: avoid forward declaration of an enum
      refs/refs-internal.h: avoid forward declaration of an enum
      convert.c: replace "\e" escapes with "\033".
      sequencer.c: avoid empty statements at top level
      string-list.c: avoid conversion from void * to function pointer
      utf8.c: avoid char overflow
      Makefile: add a DEVOPTS flag to get pedantic compilation
      packfile: ensure that enum object_type is defined

Ben Peart (3):
      convert log_ref_write_fd() to use strbuf
      handle lower case drive letters on Windows
      t3507: add a testcase showing failure with sparse checkout

Brandon Williams (15):
      commit: convert commit_graft_pos() to handle arbitrary repositories
      commit: convert register_commit_graft to handle arbitrary repositories
      commit: convert read_graft_file to handle arbitrary repositories
      test-pkt-line: add unpack-sideband subcommand
      docs: link to gitsubmodules
      upload-pack: implement ref-in-want
      upload-pack: test negotiation with changing repository
      fetch: refactor the population of peer ref OIDs
      fetch: refactor fetch_refs into two functions
      fetch: refactor to make function args narrower
      fetch-pack: put shallow info in output parameter
      fetch-pack: implement ref-in-want
      clone: send ref-prefixes when using protocol v2
      fetch-pack: mark die strings for translation
      pack-protocol: mention and point to docs for protocol v2

Chen Bin (1):
      git-p4: add the `p4-pre-submit` hook

Christian Couder (1):
      t9104: kosherly remove remote refs

Derrick Stolee (43):
      ref-filter: fix outdated comment on in_commit_list
      commit: add generation number to struct commit
      commit-graph: compute generation numbers
      commit: use generations in paint_down_to_common()
      commit-graph: always load commit-graph information
      ref-filter: use generation number for --contains
      commit: use generation numbers for in_merge_bases()
      commit: add short-circuit to paint_down_to_common()
      commit: use generation number in remove_redundant()
      merge: check config before loading commits
      commit-graph.txt: update design document
      commit-graph: fix UX issue when .lock file exists
      ewah/bitmap.c: delete unused 'bitmap_clear()'
      ewah/bitmap.c: delete unused 'bitmap_each_bit()'
      ewah_bitmap: delete unused 'ewah_and()'
      ewah_bitmap: delete unused 'ewah_and_not()'
      ewah_bitmap: delete unused 'ewah_not()'
      ewah_bitmap: delete unused 'ewah_or()'
      ewah_io: delete unused 'ewah_serialize()'
      t5318-commit-graph.sh: use core.commitGraph
      commit-graph: UNLEAK before die()
      commit-graph: fix GRAPH_MIN_SIZE
      commit-graph: parse commit from chosen graph
      commit: force commit to parse from object database
      commit-graph: load a root tree from specific graph
      commit-graph: add 'verify' subcommand
      commit-graph: verify catches corrupt signature
      commit-graph: verify required chunks are present
      commit-graph: verify corrupt OID fanout and lookup
      commit-graph: verify objects exist
      commit-graph: verify root tree OIDs
      commit-graph: verify parent list
      commit-graph: verify generation number
      commit-graph: verify commit date
      commit-graph: test for corrupted octopus edge
      commit-graph: verify contents match checksum
      fsck: verify commit-graph
      commit-graph: use string-list API for input
      commit-graph: add '--reachable' option
      gc: automatically write commit-graph files
      commit-graph: update design document
      commit-graph: fix documentation inconsistencies
      coccinelle: update commit.cocci

Elijah Newren (63):
      t6036, t6042: use test_create_repo to keep tests independent
      t6036, t6042: use test_line_count instead of wc -l
      t6036, t6042: prefer test_path_is_file, test_path_is_missing
      t6036, t6042: prefer test_cmp to sequences of test
      t6036: prefer test_when_finished to manual cleanup in following test
      merge-recursive: fix miscellaneous grammar error in comment
      merge-recursive: fix numerous argument alignment issues
      merge-recursive: align labels with their respective code blocks
      merge-recursive: clarify the rename_dir/RENAME_DIR meaning
      merge-recursive: rename conflict_rename_*() family of functions
      merge-recursive: add pointer about unduly complex looking code
      git-rebase.txt: document incompatible options
      git-rebase.sh: update help messages a bit
      t3422: new testcases for checking when incompatible options passed
      git-rebase: error out when incompatible options passed
      git-rebase.txt: address confusion between --no-ff vs --force-rebase
      directory-rename-detection.txt: technical docs on abilities and limitations
      git-rebase.txt: document behavioral differences between modes
      t3401: add directory rename testcases for rebase and am
      git-rebase: make --allow-empty-message the default
      t3418: add testcase showing problems with rebase -i and strategy options
      Fix use of strategy options with interactive rebases
      git-rebase--merge: modernize "git-$cmd" to "git $cmd"
      apply: fix grammar error in comment
      t5407: fix test to cover intended arguments
      read-cache.c: move index_has_changes() from merge.c
      index_has_changes(): avoid assuming operating on the_index
      t6044: verify that merges expected to abort actually abort
      t6036: add a failed conflict detection case with symlink modify/modify
      t6036: add a failed conflict detection case with symlink add/add
      t6036: add a failed conflict detection case with submodule modify/modify
      t6036: add a failed conflict detection case with submodule add/add
      t6036: add a failed conflict detection case with conflicting types
      t6042: add testcase covering rename/add/delete conflict type
      t6042: add testcase covering rename/rename(2to1)/delete/delete conflict
      t6042: add testcase covering long chains of rename conflicts
      t6036: add lots of detail for directory/file conflicts in recursive case
      t6036: add a failed conflict detection case: regular files, different modes
      t6044: add a testcase for index matching head, when head doesn't match HEAD
      merge-recursive: make sure when we say we abort that we actually abort
      merge-recursive: fix assumption that head tree being merged is HEAD
      t6044: add more testcases with staged changes before a merge is invoked
      merge-recursive: enforce rule that index matches head before merging
      merge: fix misleading pre-merge check documentation
      t7405: add a file/submodule conflict
      t7405: add a directory/submodule conflict
      t7405: verify 'merge --abort' works after submodule/path conflicts
      merge-recursive: preserve skip_worktree bit when necessary
      t1015: demonstrate directory/file conflict recovery failures
      read-cache: fix directory/file conflict handling in read_index_unmerged()
      t3031: update test description to mention desired behavior
      t7406: fix call that was failing for the wrong reason
      t7406: simplify by using diff --name-only instead of diff --raw
      t7406: avoid having git commands upstream of a pipe
      t7406: prefer test_* helper functions to test -[feds]
      t7406: avoid using test_must_fail for commands other than git
      git-update-index.txt: reword possibly confusing example
      Add missing includes and forward declarations
      alloc: make allocate_alloc_state and clear_alloc_state more consistent
      Move definition of enum branch_track from cache.h to branch.h
      urlmatch.h: fix include guard
      compat/precompose_utf8.h: use more common include guard style
      Remove forward declaration of an enum

Eric Sunshine (53):
      t: use test_might_fail() instead of manipulating exit code manually
      t: use test_write_lines() instead of series of 'echo' commands
      t: use sane_unset() rather than 'unset' with broken &&-chain
      t: drop unnecessary terminating semicolon in subshell
      t/lib-submodule-update: fix "absorbing" test
      t5405: use test_must_fail() instead of checking exit code manually
      t5406: use write_script() instead of birthing shell script manually
      t5505: modernize and simplify hard-to-digest test
      t6036: fix broken "merge fails but has appropriate contents" tests
      t7201: drop pointless "exit 0" at end of subshell
      t7400: fix broken "submodule add/reconfigure --force" test
      t7810: use test_expect_code() instead of hand-rolled comparison
      t9001: fix broken "invoke hook" test
      t9814: simplify convoluted check that command correctly errors out
      t0000-t0999: fix broken &&-chains
      t1000-t1999: fix broken &&-chains
      t2000-t2999: fix broken &&-chains
      t3000-t3999: fix broken &&-chains
      t3030: fix broken &&-chains
      t4000-t4999: fix broken &&-chains
      t5000-t5999: fix broken &&-chains
      t6000-t6999: fix broken &&-chains
      t7000-t7999: fix broken &&-chains
      t9000-t9999: fix broken &&-chains
      t9119: fix broken &&-chains
      t6046/t9833: fix use of "VAR=VAL cmd" with a shell function
      t/check-non-portable-shell: stop being so polite
      t/check-non-portable-shell: make error messages more compact
      t/check-non-portable-shell: detect "FOO=bar shell_func"
      t/test-lib: teach --chain-lint to detect broken &&-chains in subshells
      t/Makefile: add machinery to check correctness of chainlint.sed
      t/chainlint: add chainlint "basic" test cases
      t/chainlint: add chainlint "whitespace" test cases
      t/chainlint: add chainlint "one-liner" test cases
      t/chainlint: add chainlint "nested subshell" test cases
      t/chainlint: add chainlint "loop" and "conditional" test cases
      t/chainlint: add chainlint "cuddled" test cases
      t/chainlint: add chainlint "complex" test cases
      t/chainlint: add chainlint "specialized" test cases
      diff: --color-moved: rename "dimmed_zebra" to "dimmed-zebra"
      mw-to-git/t9360: fix broken &&-chain
      t/chainlint.sed: drop extra spaces from regex character class
      sequencer: fix "rebase -i --root" corrupting author header
      sequencer: fix "rebase -i --root" corrupting author header timezone
      sequencer: fix "rebase -i --root" corrupting author header timestamp
      sequencer: don't die() on bogus user-edited timestamp
      color: protect against out-of-bounds reads and writes
      chainlint: match arbitrary here-docs tags rather than hard-coded names
      chainlint: match 'quoted' here-doc tags
      chainlint: recognize multi-line $(...) when command cuddled with "$("
      chainlint: let here-doc and multi-line string commence on same line
      chainlint: recognize multi-line quoted strings more robustly
      chainlint: add test of pathological case which triggered false positive

Han-Wen Nienhuys (2):
      config: document git config getter return value
      sideband: highlight keywords in remote sideband output

Henning Schild (9):
      builtin/receive-pack: use check_signature from gpg-interface
      gpg-interface: make parse_gpg_output static and remove from interface header
      gpg-interface: add new config to select how to sign a commit
      t/t7510: check the validation of the new config gpg.format
      gpg-interface: introduce an abstraction for multiple gpg formats
      gpg-interface: do not hardcode the key string len anymore
      gpg-interface: introduce new config to select per gpg format program
      gpg-interface: introduce new signature format "x509" using gpgsm
      gpg-interface t: extend the existing GPG tests with GPGSM

Isabella Stephens (2):
      blame: prevent error if range ends past end of file
      log: prevent error if line range ends past end of file

Jameson Miller (8):
      read-cache: teach refresh_cache_entry to take istate
      read-cache: teach make_cache_entry to take object_id
      block alloc: add lifecycle APIs for cache_entry structs
      mem-pool: only search head block for available space
      mem-pool: add life cycle management functions
      mem-pool: fill out functionality
      block alloc: allocate cache entries from mem_pool
      block alloc: add validations around cache_entry lifecyle

Jeff Hostetler (1):
      json_writer: new routines to create JSON data

Jeff King (48):
      make show-index a builtin
      show-index: update documentation for index v2
      fetch-pack: don't try to fetch peel values with --all
      ewah: drop ewah_deserialize function
      ewah: drop ewah_serialize_native function
      t3200: unset core.logallrefupdates when testing reflog creation
      t: switch "branch -l" to "branch --create-reflog"
      branch: deprecate "-l" option
      config: turn die_on_error into caller-facing enum
      config: add CONFIG_ERROR_SILENT handler
      config: add options parameter to git_config_from_mem
      fsck: silence stderr when parsing .gitmodules
      t6300: add a test for --ignore-case
      ref-filter: avoid backend filtering with --ignore-case
      t5500: prettify non-commit tag tests
      sequencer: handle empty-set cases consistently
      sequencer: don't say BUG on bogus input
      has_uncommitted_changes(): fall back to empty tree
      fsck: split ".gitmodules too large" error from parse failure
      fsck: downgrade gitmodulesParse default to "info"
      blame: prefer xsnprintf to strcpy for colors
      check_replace_refs: fix outdated comment
      check_replace_refs: rename to read_replace_refs
      add core.usereplacerefs config option
      reencode_string: use st_add/st_mult helpers
      reencode_string: use size_t for string lengths
      strbuf: use size_t for length in intermediate variables
      strbuf_readlink: use ssize_t
      pass st.st_size as hint for strbuf_readlink()
      strbuf_humanise: use unsigned variables
      automatically ban strcpy()
      banned.h: mark strcat() as banned
      banned.h: mark sprintf() as banned
      banned.h: mark strncpy() as banned
      score_trees(): fix iteration over trees with missing entries
      add a script to diff rendered documentation
      t5552: suppress upload-pack trace output
      for_each_*_object: store flag definitions in a single location
      for_each_*_object: take flag arguments as enum
      for_each_*_object: give more comprehensive docstrings
      for_each_packed_object: support iterating in pack-order
      t1006: test cat-file --batch-all-objects with duplicates
      cat-file: rename batch_{loose,packed}_object callbacks
      cat-file: support "unordered" output for --batch-all-objects
      cat-file: use oidset check-and-insert
      cat-file: split batch "buf" into two variables
      cat-file: use a single strbuf for all output
      for_each_*_object: move declarations to object-store.h

Johannes Schindelin (41):
      Makefile: fix the "built from commit" code
      merge: allow reading the merge commit message from a file
      rebase --rebase-merges: add support for octopus merges
      rebase --rebase-merges: adjust man page for octopus support
      vcbuild/README: update to accommodate for missing common-cmds.h
      t7406: avoid failures solely due to timing issues
      contrib: add a script to initialize VS Code configuration
      vscode: hard-code a couple defines
      cache.h: extract enum declaration from inside a struct declaration
      mingw: define WIN32 explicitly
      vscode: only overwrite C/C++ settings
      vscode: wrap commit messages at column 72 by default
      vscode: use 8-space tabs, no trailing ws, etc for Git's source code
      vscode: add a dictionary for cSpell
      vscode: let cSpell work on commit messages, too
      pull --rebase=<type>: allow single-letter abbreviations for the type
      t3430: demonstrate what -r, --autosquash & --exec should do
      git-compat-util.h: fix typo
      remote-curl: remove spurious period
      rebase --exec: make it work with --rebase-merges
      linear-assignment: a function to solve least-cost assignment problems
      Introduce `range-diff` to compare iterations of a topic branch
      range-diff: first rudimentary implementation
      range-diff: improve the order of the shown commits
      range-diff: also show the diff between patches
      range-diff: right-trim commit messages
      range-diff: indent the diffs just like tbdiff
      range-diff: suppress the diff headers
      range-diff: adjust the output of the commit pairs
      range-diff: do not show "function names" in hunk headers
      range-diff: use color for the commit pairs
      color: add the meta color GIT_COLOR_REVERSE
      diff: add an internal option to dual-color diffs of diffs
      range-diff: offer to dual-color the diffs
      range-diff --dual-color: skip white-space warnings
      range-diff: populate the man page
      completion: support `git range-diff`
      range-diff: left-pad patch numbers
      range-diff: make --dual-color the default mode
      range-diff: use dim/bold cues to improve dual color mode
      chainlint: fix for core.autocrlf=true

Johannes Sixt (1):
      mingw: enable atomic O_APPEND

Jonathan Nieder (11):
      object: add repository argument to grow_object_hash
      object: move grafts to object parser
      commit: add repository argument to commit_graft_pos
      commit: add repository argument to register_commit_graft
      commit: add repository argument to read_graft_file
      commit: add repository argument to prepare_commit_graft
      commit: add repository argument to lookup_commit_graft
      subtree test: add missing && to &&-chain
      subtree test: simplify preparation of expected results
      doc hash-function-transition: pick SHA-256 as NewHash
      partial-clone: render design doc using asciidoc

Jonathan Tan (28):
      list-objects: check if filter is NULL before using
      fetch-pack: split up everything_local()
      fetch-pack: clear marks before re-marking
      fetch-pack: directly end negotiation if ACK ready
      fetch-pack: use ref adv. to prune "have" sent
      fetch-pack: make negotiation-related vars local
      fetch-pack: move common check and marking together
      fetch-pack: introduce negotiator API
      pack-bitmap: remove bitmap_git global variable
      pack-bitmap: add free function
      fetch-pack: write shallow, then check connectivity
      fetch-pack: support negotiation tip whitelist
      upload-pack: send refs' objects despite "filter"
      clone: check connectivity even if clone is partial
      revision: tolerate promised targets of tags
      tag: don't warn if target is missing but promised
      negotiator/skipping: skip commits during fetch
      commit-graph: refactor preparing commit graph
      object-store: add missing include
      commit-graph: add missing forward declaration
      commit-graph: add free_commit_graph
      commit-graph: store graph in struct object_store
      commit-graph: add repo arg to graph readers
      t5702: test fetch with multiple refspecs at a time
      fetch: send "refs/tags/" prefix upon CLI refspecs
      fetch-pack: unify ref in and out param
      repack: refactor setup of pack-objects cmd
      repack: repack promisor objects if -a or -A is set

Josh Steadmon (1):
      protocol-v2 doc: put HTTP headers after request

Jules Maselbas (1):
      send-email: fix tls AUTH when sending batch

Junio C Hamano (18):
      tests: clean after SANITY tests
      ewah: delete unused 'rlwit_discharge_empty()'
      Prepare to start 2.19 cycle
      First batch for 2.19 cycle
      Second batch for 2.19 cycle
      fixup! connect.h: avoid forward declaration of an enum
      fixup! refs/refs-internal.h: avoid forward declaration of an enum
      t3404: fix use of "VAR=VAL cmd" with a shell function
      Third batch for 2.19 cycle
      Fourth batch for 2.19 cycle
      remote: make refspec follow the same disambiguation rule as local refs
      Fifth batch for 2.19 cycle
      update-index: there no longer is `apply --index-info`
      gpg-interface: propagate exit status from gpg back to the callers
      Sixth batch for 2.19 cycle
      Seventh batch for 2.19 cycle
      sideband: do not read beyond the end of input
      Git 2.19-rc0

Kana Natsuno (2):
      t4018: add missing test cases for PHP
      userdiff: support new keywords in PHP hunk header

Kim Gybels (1):
      gc --auto: release pack files before auto packing

Kirill Smelkov (1):
      fetch-pack: test explicitly that --all can fetch tag references pointing to non-commits

Luis Marsano (2):
      git-credential-netrc: use in-tree Git.pm for tests
      git-credential-netrc: fix exit status when tests fail

Luke Diamand (6):
      git-p4: python3: replace <> with !=
      git-p4: python3: replace dict.has_key(k) with "k in dict"
      git-p4: python3: remove backticks
      git-p4: python3: basestring workaround
      git-p4: python3: use print() function
      git-p4: python3: fix octal constants

Marc Strapetz (1):
      Documentation: declare "core.ignoreCase" as internal variable

Martin Ågren (1):
      refspec: initalize `refspec_item` in `valid_fetch_refspec()`

Masaya Suzuki (2):
      builtin/send-pack: populate the default configs
      doc: fix want-capability separator

Max Kirillov (4):
      http-backend: cleanup writing to child process
      http-backend: respect CONTENT_LENGTH as specified by rfc3875
      unpack-trees: do not fail reset because of unmerged skipped entry
      http-backend: respect CONTENT_LENGTH for receive-pack

Michael Barabanov (1):
      filter-branch: skip commits present on --state-branch

Mike Hommey (1):
      fast-import: do not call diff_delta() with empty buffer

Nguyễn Thái Ngọc Duy (98):
      commit-slab.h: code split
      commit-slab: support shared commit-slab
      blame: use commit-slab for blame suspects instead of commit->util
      describe: use commit-slab for commit names instead of commit->util
      shallow.c: use commit-slab for commit depth instead of commit->util
      sequencer.c: use commit-slab to mark seen commits
      sequencer.c: use commit-slab to associate todo items to commits
      revision.c: use commit-slab for show_source
      bisect.c: use commit-slab for commit weight instead of commit->util
      name-rev: use commit-slab for rev-name instead of commit->util
      show-branch: use commit-slab for commit-name instead of commit->util
      show-branch: note about its object flags usage
      log: use commit-slab in prepare_bases() instead of commit->util
      merge: use commit-slab in merge remote desc instead of commit->util
      commit.h: delete 'util' field in struct commit
      diff: ignore --ita-[in]visible-in-index when diffing worktree-to-tree
      diff: turn --ita-invisible-in-index on by default
      t2203: add a test about "diff HEAD" case
      apply: add --intent-to-add
      parse-options: option to let --git-completion-helper show negative form
      completion: suppress some -no- options
      Add and use generic name->id mapping code for color slot parsing
      grep: keep all colors in an array
      fsck: factor out msg_id_info[] lazy initialization code
      help: add --config to list all available config
      fsck: produce camelCase config key names
      advice: keep config name in camelCase in advice_config[]
      am: move advice.amWorkDir parsing back to advice.c
      completion: drop the hard coded list of config vars
      completion: keep other config var completion in camelCase
      completion: support case-insensitive config vars
      log-tree: allow to customize 'grafted' color
      completion: complete general config vars in two steps
      upload-pack: reject shallow requests that would return nothing
      completion: collapse extra --no-.. options
      Update messages in preparation for i18n
      archive-tar.c: mark more strings for translation
      archive-zip.c: mark more strings for translation
      builtin/config.c: mark more strings for translation
      builtin/grep.c: mark strings for translation
      builtin/pack-objects.c: mark more strings for translation
      builtin/replace.c: mark more strings for translation
      commit-graph.c: mark more strings for translation
      config.c: mark more strings for translation
      connect.c: mark more strings for translation
      convert.c: mark more strings for translation
      dir.c: mark more strings for translation
      environment.c: mark more strings for translation
      exec-cmd.c: mark more strings for translation
      object.c: mark more strings for translation
      pkt-line.c: mark more strings for translation
      refs.c: mark more strings for translation
      refspec.c: mark more strings for translation
      replace-object.c: mark more strings for translation
      sequencer.c: mark more strings for translation
      sha1-file.c: mark more strings for translation
      transport.c: mark more strings for translation
      transport-helper.c: mark more strings for translation
      pack-objects: document about thread synchronization
      apply.h: drop extern on func declaration
      attr.h: drop extern from function declaration
      blame.h: drop extern on func declaration
      cache-tree.h: drop extern from function declaration
      convert.h: drop 'extern' from function declaration
      diffcore.h: drop extern from function declaration
      diff.h: remove extern from function declaration
      line-range.h: drop extern from function declaration
      rerere.h: drop extern from function declaration
      repository.h: drop extern from function declaration
      revision.h: drop extern from function declaration
      submodule.h: drop extern from function declaration
      config.txt: reorder blame stuff to keep config keys sorted
      Makefile: add missing dependency for command-list.h
      diff.c: move read_index() code back to the caller
      cache-tree: wrap the_index based wrappers with #ifdef
      attr: remove an implicit dependency on the_index
      convert.c: remove an implicit dependency on the_index
      dir.c: remove an implicit dependency on the_index in pathspec code
      preload-index.c: use the right index instead of the_index
      ls-files: correct index argument to get_convert_attr_ascii()
      unpack-trees: remove 'extern' on function declaration
      unpack-trees: add a note about path invalidation
      unpack-trees: don't shadow global var the_index
      unpack-trees: convert clear_ce_flags* to avoid the_index
      unpack-trees: avoid the_index in verify_absent()
      pathspec.c: use the right index instead of the_index
      submodule.c: use the right index instead of the_index
      entry.c: use the right index instead of the_index
      attr: remove index from git_attr_set_direction()
      grep: use the right index instead of the_index
      archive.c: avoid access to the_index
      archive-*.c: use the right repository
      resolve-undo.c: use the right index instead of the_index
      apply.c: pass struct apply_state to more functions
      apply.c: make init_apply_state() take a struct repository
      apply.c: remove implicit dependency on the_index
      blame.c: remove implicit dependency on the_index
      cherry-pick: fix --quit not deleting CHERRY_PICK_HEAD

Nicholas Guriev (1):
      mergetool: don't suggest to continue after last file

Olga Telezhnaya (5):
      ref-filter: add info_source to valid_atom
      ref-filter: fill empty fields with empty values
      ref-filter: initialize eaten variable
      ref-filter: merge get_obj and get_object
      ref-filter: use oid_object_info() to get object

Phillip Wood (5):
      add -p: fix counting empty context lines in edited patches
      sequencer: do not squash 'reword' commits when we hit conflicts
      rebase -i: fix numbering in squash message
      t3430: add conflicting commit
      rebase -i: fix SIGSEGV when 'merge <branch>' fails

Prathamesh Chavan (4):
      submodule foreach: correct '$path' in nested submodules from a subdirectory
      submodule foreach: document '$sm_path' instead of '$path'
      submodule foreach: document variable '$displaypath'
      submodule: port submodule subcommand 'foreach' from shell to C

Ramsay Jones (3):
      fsck: check skiplist for object in fsck_blob()
      t6036: fix broken && chain in sub-shell
      t5562: avoid non-portable "export FOO=bar" construct

René Scharfe (7):
      remote: clear string_list after use in mv()
      add, update-index: fix --chmod argument help
      difftool: remove angular brackets from argument help
      pack-objects: specify --index-version argument help explicitly
      send-pack: specify --force-with-lease argument help explicitly
      shortlog: correct option help for -w
      parse-options: automatically infer PARSE_OPT_LITERAL_ARGHELP

SZEDER Gábor (19):
      update-ref --stdin: use skip_prefix()
      t7510-signed-commit: use 'test_must_fail'
      tests: make forging GPG signed commits and tags more robust
      t5541: clean up truncating access log
      t/lib-httpd: add the strip_access_log() helper function
      t/lib-httpd: avoid occasional failures when checking access.log
      t5608: fix broken &&-chain
      t9300: wait for background fast-import process to die after killing it
      travis-ci: run Coccinelle static analysis with two parallel jobs
      travis-ci: fail if Coccinelle static analysis found something to transform
      coccinelle: mark the 'coccicheck' make target as .PHONY
      coccinelle: use $(addsuffix) in 'coccicheck' make target
      coccinelle: exclude sha1dc source files from static analysis
      coccinelle: put sane filenames into output patches
      coccinelle: extract dedicated make target to clean Coccinelle's results
      travis-ci: include the trash directories of failed tests in the trace log
      t5318: use 'test_cmp_bin' to compare commit-graph files
      t5318: avoid unnecessary command substitutions
      t5310-pack-bitmaps: fix bogus 'pack-objects to file can use bitmap' test

Sebastian Kisela (2):
      git-instaweb: support Fedora/Red Hat apache module path
      git-instaweb: fix apache2 config with apache >= 2.4

Stefan Beller (87):
      repository: introduce parsed objects field
      object: add repository argument to create_object
      alloc: add repository argument to alloc_blob_node
      alloc: add repository argument to alloc_tree_node
      alloc: add repository argument to alloc_commit_node
      alloc: add repository argument to alloc_tag_node
      alloc: add repository argument to alloc_object_node
      alloc: add repository argument to alloc_report
      alloc: add repository argument to alloc_commit_index
      object: allow grow_object_hash to handle arbitrary repositories
      object: allow create_object to handle arbitrary repositories
      alloc: allow arbitrary repositories for alloc functions
      object-store: move object access functions to object-store.h
      shallow: add repository argument to set_alternate_shallow_file
      shallow: add repository argument to register_shallow
      shallow: add repository argument to check_shallow_file_for_update
      shallow: add repository argument to is_repository_shallow
      cache: convert get_graft_file to handle arbitrary repositories
      path.c: migrate global git_path_* to take a repository argument
      shallow: migrate shallow information into the object parser
      commit: allow prepare_commit_graft to handle arbitrary repositories
      commit: allow lookup_commit_graft to handle arbitrary repositories
      refs/packed-backend.c: close fd of empty file
      submodule--helper: plug mem leak in print_default_remote
      sequencer.c: plug leaks in do_pick_commit
      submodule: fix NULL correctness in renamed broken submodules
      t5526: test recursive submodules when fetching moved submodules
      submodule: unset core.worktree if no working tree is present
      submodule: ensure core.worktree is set after update
      submodule deinit: unset core.worktree
      submodule.c: report the submodule that an error occurs in
      sequencer.c: plug mem leak in git_sequencer_config
      .mailmap: merge different spellings of names
      object: add repository argument to parse_object
      object: add repository argument to lookup_object
      object: add repository argument to parse_object_buffer
      object: add repository argument to object_as_type
      blob: add repository argument to lookup_blob
      tree: add repository argument to lookup_tree
      commit: add repository argument to lookup_commit_reference_gently
      commit: add repository argument to lookup_commit_reference
      commit: add repository argument to lookup_commit
      commit: add repository argument to parse_commit_buffer
      commit: add repository argument to set_commit_buffer
      commit: add repository argument to get_cached_commit_buffer
      tag: add repository argument to lookup_tag
      tag: add repository argument to parse_tag_buffer
      tag: add repository argument to deref_tag
      object: allow object_as_type to handle arbitrary repositories
      object: allow lookup_object to handle arbitrary repositories
      blob: allow lookup_blob to handle arbitrary repositories
      tree: allow lookup_tree to handle arbitrary repositories
      commit: allow lookup_commit to handle arbitrary repositories
      tag: allow lookup_tag to handle arbitrary repositories
      tag: allow parse_tag_buffer to handle arbitrary repositories
      commit.c: allow parse_commit_buffer to handle arbitrary repositories
      commit-slabs: remove realloc counter outside of slab struct
      commit.c: migrate the commit buffer to the parsed object store
      commit.c: allow set_commit_buffer to handle arbitrary repositories
      commit.c: allow get_cached_commit_buffer to handle arbitrary repositories
      object.c: allow parse_object_buffer to handle arbitrary repositories
      object.c: allow parse_object to handle arbitrary repositories
      tag.c: allow deref_tag to handle arbitrary repositories
      commit.c: allow lookup_commit_reference_gently to handle arbitrary repositories
      commit.c: allow lookup_commit_reference to handle arbitrary repositories
      xdiff/xdiff.h: remove unused flags
      xdiff/xdiffi.c: remove unneeded function declarations
      t4015: avoid git as a pipe input
      diff.c: do not pass diff options as keydata to hashmap
      diff.c: adjust hash function signature to match hashmap expectation
      diff.c: add a blocks mode for moved code detection
      diff.c: decouple white space treatment from move detection algorithm
      diff.c: factor advance_or_nullify out of mark_color_as_moved
      diff.c: add white space mode to move detection that allows indent changes
      diff.c: offer config option to control ws handling in move detection
      xdiff/xhistogram: pass arguments directly to fall_back_to_classic_diff
      xdiff/xhistogram: factor out memory cleanup into free_index()
      xdiff/xhistogram: move index allocation into find_lcs
      Documentation/git-interpret-trailers: explain possible values
      xdiff/histogram: remove tail recursion
      t1300: document current behavior of setting options
      xdiff: reduce indent heuristic overhead
      config: fix case sensitive subsection names on writing
      git-config: document accidental multi-line setting in deprecated syntax
      git-submodule.sh: accept verbose flag in cmd_update to be non-quiet
      t7410: update to new style
      builtin/submodule--helper: remove stray new line

Taylor Blau (9):
      Documentation/config.txt: camel-case lineNumber for consistency
      grep.c: expose {,inverted} match column in match_line()
      grep.[ch]: extend grep_opt to allow showing matched column
      grep.c: display column number of first match
      builtin/grep.c: add '--column' option to 'git-grep(1)'
      grep.c: add configuration variables to show matched option
      contrib/git-jump/git-jump: jump to exact location
      grep.c: extract show_line_header()
      grep.c: teach 'git grep --only-matching'

Thomas Rast (1):
      range-diff: add tests

Tobias Klauser (1):
      git-rebase--preserve-merges: fix formatting of todo help message

Todd Zullinger (4):
      git-credential-netrc: minor whitespace cleanup in test script
      git-credential-netrc: make "all" default target of Makefile
      gitignore.txt: clarify default core.excludesfile path
      dir.c: fix typos in core.excludesfile comment

Ville Skyttä (1):
      Documentation: spelling and grammar fixes

Vladimir Parfinenko (1):
      rebase: fix documentation formatting

William Chargin (2):
      sha1-name.c: for ":/", find detached HEAD commits
      t: factor out FUNNYNAMES as shared lazy prereq

Xiaolong Ye (1):
      format-patch: clear UNINTERESTING flag before prepare_bases

brian m. carlson (21):
      send-email: add an auto option for transfer encoding
      send-email: accept long lines with suitable transfer encoding
      send-email: automatically determine transfer-encoding
      docs: correct RFC specifying email line length
      sequencer: pass absolute GIT_WORK_TREE to exec commands
      cache: update object ID functions for the_hash_algo
      tree-walk: replace hard-coded constants with the_hash_algo
      hex: switch to using the_hash_algo
      commit: express tree entry constants in terms of the_hash_algo
      strbuf: allocate space with GIT_MAX_HEXSZ
      sha1-name: use the_hash_algo when parsing object names
      refs/files-backend: use the_hash_algo for writing refs
      builtin/update-index: convert to using the_hash_algo
      builtin/update-index: simplify parsing of cacheinfo
      builtin/fmt-merge-msg: make hash independent
      builtin/merge: switch to use the_hash_algo
      builtin/merge-recursive: make hash independent
      diff: switch GIT_SHA1_HEXSZ to use the_hash_algo
      log-tree: switch GIT_SHA1_HEXSZ to the_hash_algo->hexsz
      sha1-file: convert constants to uses of the_hash_algo
      pretty: switch hard-coded constants to the_hash_algo

Ævar Arnfjörð Bjarmason (36):
      checkout tests: index should be clean after dwim checkout
      checkout.h: wrap the arguments to unique_tracking_name()
      checkout.c: introduce an *_INIT macro
      checkout.c: change "unique" member to "num_matches"
      checkout: pass the "num_matches" up to callers
      builtin/checkout.c: use "ret" variable for return
      checkout: add advice for ambiguous "checkout <branch>"
      checkout & worktree: introduce checkout.defaultRemote
      refspec: s/refspec_item_init/&_or_die/g
      refspec: add back a refspec_item_init() function
      doc hash-function-transition: note the lack of a changelog
      receive.fsck.<msg-id> tests: remove dead code
      config doc: don't describe *.fetchObjects twice
      config doc: unify the description of fsck.* and receive.fsck.*
      config doc: elaborate on what transfer.fsckObjects does
      config doc: elaborate on fetch.fsckObjects security
      transfer.fsckObjects tests: untangle confusing setup
      fetch: implement fetch.fsck.*
      fsck: test & document {fetch,receive}.fsck.* config fallback
      fsck: add stress tests for fsck.skipList
      fsck: test and document unknown fsck.<msg-id> values
      tests: make use of the test_must_be_empty function
      tests: make use of the test_must_be_empty function
      fetch tests: change "Tag" test tag to "testTag"
      push tests: remove redundant 'git push' invocation
      push tests: fix logic error in "push" test assertion
      push tests: add more testing for forced tag pushing
      push tests: assert re-pushing annotated tags
      negotiator: unknown fetch.negotiationAlgorithm should error out
      fetch doc: cross-link two new negotiation options
      sha1dc: update from upstream
      push: use PARSE_OPT_LITERAL_ARGHELP instead of unbalanced brackets
      fetch tests: correct a comment "remove it" -> "remove them"
      pull doc: fix a long-standing grammar error
      submodule: add more exhaustive up-path testing
      t2024: mark test using "checkout -p" with PERL prerequisite

Łukasz Stelmach (1):
      completion: complete remote names too


Version v2.18.1; changes since v2.18.0:
---------------------------------------

Jeff King (5):
      submodule--helper: use "--" to signal end of clone options
      submodule-config: ban submodule urls that start with dash
      submodule-config: ban submodule paths that start with a dash
      fsck: detect submodule urls starting with dash
      fsck: detect submodule paths starting with dash

Junio C Hamano (5):
      Git 2.14.5
      Git 2.15.3
      Git 2.16.5
      Git 2.17.2
      Git 2.18.1


Version v2.18.0; changes since v2.18.0-rc2:
-------------------------------------------

Alexander Shopov (2):
      l10n: bg.po: Updated Bulgarian translation (3608t)
      l10n: bg.po: Updated Bulgarian translation (3608t)

Andre Hinrichs (1):
      l10n: de.po: fix typos

Changwoo Ryu (1):
      l10n: ko.po: Update Korean translation

Christopher Díaz Riveros (3):
      l10n: es.po: Spanish update for v2.18.0 round 1
      l10n: es.po: Spanish update for v2.18.0 round 2
      l10n: es.po: Spanish update for v2.18.0 round 3

Eric Sunshine (1):
      Makefile: make NO_ICONV really mean "no iconv"

Jean-Noël Avila (2):
      l10n: fr.po v2.18 round 1
      l10n: fr.po v2.18.0 round 3

Jeff King (2):
      ewah_read_mmap: bounds-check mmap reads
      ewah: adjust callers of ewah_read_mmap()

Jeremy Linton (1):
      packfile: correct zlib buffer handling

Jiang Xin (4):
      l10n: git.pot: v2.18.0 round 1 (108 new, 14 removed)
      l10n: git.pot: v2.18.0 round 2 (144 new, 6 removed)
      l10n: git.pot: v2.18.0 round 3 (1 new, 1 removed)
      l10n: zh_CN: for git v2.18.0 l10n round 1 to 3

Johannes Schindelin (1):
      rebase --root: fix amending root commit messages

Jordi Mas (1):
      l10n: Update Catalan translation

Junio C Hamano (3):
      A bunch of micro-fixes before going 2.18 final
      Almost 2.18 final
      Git 2.18

Kaartic Sivaraam (1):
      t3200: clarify description of --set-upstream test

Karthikeyan Singaravelan (1):
      doc: fix typos in documentation and release notes

Kyle Meyer (1):
      gitworkflows: fix grammar in 'Merge upwards' rule

Luke Diamand (6):
      git-p4: disable-rebase: allow setting this via configuration
      git-p4: add option to disable syncing of p4/master with p4
      git-p4: better error reporting when p4 fails
      git-p4: raise exceptions from p4CmdList based on error from p4 server
      git-p4: narrow the scope of exceptions caught when parsing an int
      git-p4: auto-size the block

Meng-Sung Wu (1):
      doc: update the order of the syntax `git merge --continue`

Peter Krefting (2):
      l10n: sv.po: Update Swedish translation (3470t0f0u)
      l10n: sv.po: Update Swedish translation (3608t0f0u)

Ralf Thielow (1):
      l10n: TEAMS: remove inactive de team members

René Scharfe (3):
      merge-recursive: use xstrdup() instead of fixed buffer
      blame: release string_list after use in parse_color_fields()
      merge-recursive: use xstrdup() instead of fixed buffer

Robert P. J. Day (3):
      sha1-file.c: correct $GITDIR to $GIT_DIR in a comment
      diff-options.txt: fix minor typos, font inconsistencies, in docs
      Use hyphenated "remote-tracking branch" (docs and comments)

Romain Merland (1):
      git-p4: add options --commit and --disable-rebase

SZEDER Gábor (2):
      t7406-submodule-update: fix broken &&-chains
      RelNotes 2.18: minor fix to entry about dynamically loading completions

Stefan Beller (1):
      t7400: encapsulate setup code in test_expect_success

Todd Zullinger (2):
      rebase --root: demonstrate a bug while amending root commit messages
      t3404: check root commit in 'rebase -i --root reword root commit'

Trần Ngọc Quân (3):
      l10n: vi(3470t): Updated Vietnamese translation for v2.18.0
      l10n: vi.po(3608t): Update Vietnamese translation for v2.18.0 round2
      l10n: vi.po(3608t): Update Vietnamese translation for v2.18.0 round 3

Ævar Arnfjörð Bjarmason (1):
      git-credential-netrc: remove use of "autodie"


Version v2.18.0-rc2; changes since v2.18.0-rc1:
-----------------------------------------------

Elijah Newren (1):
      RelNotes 2.18: clarify where directory rename detection applies

Jeff King (4):
      prepare_commit_graft: treat non-repository as a noop
      index-pack: handle --strict checks of non-repo packs
      t7415: don't bother creating commit for symlink test
      fsck: avoid looking at NULL blob->object

Junio C Hamano (3):
      RelNotes 2.18: typofixes
      index-pack: correct install_packed_git() args
      Git 2.18-rc2

Leif Middelschulte (1):
      merge-submodule: reduce output verbosity

SZEDER Gábor (1):
      completion: correct zsh detection when run from git-completion.zsh


Version v2.18.0-rc1; changes since v2.18.0-rc0:
-----------------------------------------------

Christian Couder (1):
      t990X: use '.git/objects' as 'deep inside .git' path

David Turner (1):
      t: make many tests depend less on the refs being files

Elijah Newren (2):
      rev-parse: check lookup'ed commit references for NULL
      RelNotes: remove duplicate release note

Jonathan Nieder (1):
      fetch: do not pass ref-prefixes for fetch by exact SHA1

Jonathan Tan (1):
      submodule: do not pass null OID to setup_revisions

Junio C Hamano (3):
      refspec-api: avoid uninitialized field in refspec item
      A bit more topics before -rc1
      Git 2.18-rc1

Luke Diamand (1):
      git-p4: add unshelve command

Nguyễn Thái Ngọc Duy (20):
      generate-cmds.sh: factor out synopsis extract code
      generate-cmds.sh: export all commands to command-list.h
      help: use command-list.h for common command list
      Remove common-cmds.h
      git.c: convert --list-* to --list-cmds=*
      git --list-cmds: collect command list in a string_list
      completion: implement and use --list-cmds=main,others
      git: support --list-cmds=list-<category>
      help: add "-a --verbose" to list all commands with synopsis
      help: use command-list.txt for the source of guides
      command-list.txt: documentation and guide line
      completion: let git provide the completable command list
      completion: reduce completable command list
      Move declaration for alias.c to alias.h
      completion: add and use --list-cmds=nohelpers
      completion: add and use --list-cmds=alias
      completion: allow to customize the completable command list
      Use OPT_SET_INT_F() for cmdline option specification
      remote.txt: update documentation for 'update' command
      remote: doc typofix

Orgad Shaneh (1):
      git-rebase--interactive: fix copy-paste mistake

Pedro Alvarez Piedehierro (1):
      import-tars: read overlong names from pax extended header

Robert P. J. Day (4):
      Use proper syntax for replaceables in command docs
      tag: clarify in the doc that a tag can refer to a non-commit object
      init: fix grammar in "templates not found" msg
      p4.txt: Use backquotes for variable names

Thomas Gummerer (2):
      SubmittingPatches: replace numbered attributes with names
      note git-security@googlegroups.com in more places

brian m. carlson (2):
      sequencer: ensure labels that are object IDs are rewritten
      t3430: test clean-up


Version v2.18.0-rc0; changes since v2.17.2:
-------------------------------------------

Anders Kaseorg (1):
      Documentation/git-bisect.txt: git bisect term → git bisect terms

Andreas Heiduk (9):
      git-svn: search --authors-prog in PATH too
      git-svn: allow empty email-address using authors-prog and authors-file
      doc: improve formatting in githooks.txt
      doc: align 'diff --no-index' in text and synopsis
      doc: clarify ignore rules for git ls-files
      doc: add '-d' and '-o' for 'git push'
      git-svn: remove ''--add-author-from' for 'commit-diff'
      doc: add note about shell quoting to revision.txt
      doc: normalize [--options] to [options] in git-diff

Antonio Ospite (1):
      doc: fix config API documentation about config_with_options

Beat Bolli (1):
      git-gui: search for all current SSH key types

Ben Peart (7):
      fsmonitor: fix incorrect buffer size when printing version number
      fsmonitor: force index write after full scan
      test-drop-caches: simplify delay loading of NtSetSystemInformation
      merge: update documentation for {merge,diff}.renameLimit
      merge: add merge.renames config setting
      merge: pass aggressive when rename detection is turned off
      add status config and command line options for rename detection

Bill Ritcher (1):
      mergetools: add support for guiffy

Birger Skogeng Pedersen (1):
      git-gui: bind CTRL/CMD+numpad ENTER to do_commit

Brandon Williams (79):
      pkt-line: introduce packet_read_with_status
      pkt-line: allow peeking a packet line without consuming it
      pkt-line: add delim packet support
      upload-pack: convert to a builtin
      upload-pack: factor out processing lines
      transport: use get_refs_via_connect to get refs
      connect: convert get_remote_heads to use struct packet_reader
      connect: discover protocol version outside of get_remote_heads
      transport: store protocol version
      protocol: introduce enum protocol_version value protocol_v2
      test-pkt-line: introduce a packet-line test helper
      serve: introduce git-serve
      ls-refs: introduce ls-refs server command
      connect: request remote refs using v2
      transport: convert get_refs_list to take a list of ref prefixes
      transport: convert transport_get_remote_refs to take a list of ref prefixes
      ls-remote: pass ref prefixes when requesting a remote's refs
      fetch: pass ref prefixes when fetching
      push: pass ref prefixes when pushing
      upload-pack: introduce fetch server command
      fetch-pack: perform a fetch using v2
      fetch-pack: support shallow requests
      connect: refactor git_connect to only get the protocol version once
      connect: don't request v2 when pushing
      transport-helper: remove name parameter
      transport-helper: refactor process_connect_service
      transport-helper: introduce stateless-connect
      pkt-line: add packet_buf_write_len function
      remote-curl: create copy of the service name
      remote-curl: store the protocol version the server responded with
      http: allow providing extra headers for http requests
      http: don't always add Git-Protocol header
      http: eliminate "# service" line when using protocol v2
      remote-curl: implement stateless-connect command
      remote-curl: don't request v2 when pushing
      commit: allow partial commits with relative paths
      serve: introduce the server-option capability
      ls-remote: send server options when using protocol v2
      fetch: send server options when using protocol v2
      refspec: move refspec parsing logic into its own file
      refspec: rename struct refspec to struct refspec_item
      refspec: factor out parsing a single refspec
      refspec: introduce struct refspec
      refspec: convert valid_fetch_refspec to use parse_refspec
      submodule--helper: convert push_check to use struct refspec
      pull: convert get_tracking_branch to use refspec_item_init
      transport: convert transport_push to use struct refspec
      remote: convert check_push_refs to use struct refspec
      remote: convert match_push_refs to use struct refspec
      clone: convert cmd_clone to use refspec_item_init
      fast-export: convert to use struct refspec
      remote: convert push refspecs to struct refspec
      remote: convert fetch refspecs to struct refspec
      remote: remove add_prune_tags_to_fetch_refspec
      transport-helper: convert to use struct refspec
      fetch: convert fetch_one to use struct refspec
      fetch: convert refmap to use struct refspec
      refspec: remove the deprecated functions
      fetch: convert do_fetch to take a struct refspec
      fetch: convert get_ref_map to take a struct refspec
      fetch: convert prune_refs to take a struct refspec
      remote: convert get_stale_heads to take a struct refspec
      remote: convert apply_refspecs to take a struct refspec
      remote: convert query_refspecs to take a struct refspec
      remote: convert get_ref_match to take a struct refspec
      remote: convert match_explicit_refs to take a struct refspec
      push: check for errors earlier
      push: convert to use struct refspec
      transport: convert transport_push to take a struct refspec
      send-pack: store refspecs in a struct refspec
      transport: remove transport_verify_remote_names
      http-push: store refspecs in a struct refspec
      remote: convert match_push_refs to take a struct refspec
      remote: convert check_push_refs to take a struct refspec
      submodule: convert push_unpushed_submodules to take a struct refspec
      refspec: consolidate ref-prefix generation logic
      fetch: generate ref-prefixes when using a configured refspec
      remote-curl: accept all encodings supported by curl
      remote-curl: accept compressed responses with protocol v2

Casey Fitzpatrick (3):
      submodule: clean up substitutions in script
      submodule: add --progress option to add command
      submodule: add --dissociate option to add/update commands

Christian Couder (6):
      perf/aggregate: add display_dir()
      perf/aggregate: add --sort-by=regression option
      perf/run: add --subsection option
      t/perf: add scripts to bisect performance regressions
      perf/aggregate: use Getopt::Long for option parsing
      perf/bisect_run_script: disable codespeed

Christian Hesse (2):
      perl: fix installing modules from contrib
      Makefile: mark perllibdir as a .PHONY target

Clemens Buchacher (2):
      git-gui: workaround ttk:style theme use
      completion: improve ls-files filter performance

Dan Jacques (3):
      Makefile: generate Perl header from template file
      Makefile: add Perl runtime prefix support
      exec_cmd: RUNTIME_PREFIX on some POSIX systems

Derrick Stolee (20):
      packfile: define and use bsearch_pack()
      sha1_name: use bsearch_pack() for abbreviations
      csum-file: rename hashclose() to finalize_hashfile()
      csum-file: refactor finalize_hashfile() method
      commit-graph: add format document
      graph: add commit graph design document
      commit-graph: create git-commit-graph builtin
      commit-graph: implement write_commit_graph()
      commit-graph: implement git-commit-graph write
      commit-graph: implement git commit-graph read
      commit-graph: add core.commitGraph setting
      commit-graph: close under reachability
      commit: integrate commit graph with commit parsing
      commit-graph: read only from specific pack-indexes
      commit-graph: build graph from starting commits
      commit-graph: implement "--append" option
      treewide: rename tree to maybe_tree
      commit: create get_commit_tree() method
      treewide: replace maybe_tree with accessor methods
      commit-graph: lazy-load trees for commits

Drew DeVault (1):
      git-send-email: allow re-editing of message

Eckhard S. Maaß (1):
      wt-status: use settings from git_diff_ui_config

Elijah Newren (70):
      directory rename detection: basic testcases
      directory rename detection: directory splitting testcases
      directory rename detection: testcases to avoid taking detection too far
      directory rename detection: partially renamed directory testcase/discussion
      directory rename detection: files/directories in the way of some renames
      directory rename detection: testcases checking which side did the rename
      directory rename detection: more involved edge/corner testcases
      directory rename detection: testcases exploring possibly suboptimal merges
      directory rename detection: miscellaneous testcases to complete coverage
      directory rename detection: tests for handling overwriting untracked files
      directory rename detection: tests for handling overwriting dirty files
      merge-recursive: move the get_renames() function
      merge-recursive: introduce new functions to handle rename logic
      merge-recursive: fix leaks of allocated renames and diff_filepairs
      merge-recursive: make !o->detect_rename codepath more obvious
      merge-recursive: split out code for determining diff_filepairs
      merge-recursive: make a helper function for cleanup for handle_renames
      merge-recursive: add get_directory_renames()
      merge-recursive: check for directory level conflicts
      merge-recursive: add computation of collisions due to dir rename & merging
      merge-recursive: check for file level conflicts then get new name
      merge-recursive: when comparing files, don't include trees
      merge-recursive: apply necessary modifications for directory renames
      merge-recursive: avoid clobbering untracked files with directory renames
      merge-recursive: fix overwriting dirty files involved in renames
      merge-recursive: fix remaining directory rename + dirty overwrite cases
      directory rename detection: new testcases showcasing a pair of bugs
      merge-recursive: avoid spurious rename/rename conflict from dir renames
      merge-recursive: ensure we write updates for directory-renamed file
      Documentation: fix several one-character-off spelling errors
      Documentation: normalize spelling of 'normalised'
      directory rename detection: basic testcases
      directory rename detection: directory splitting testcases
      directory rename detection: testcases to avoid taking detection too far
      directory rename detection: partially renamed directory testcase/discussion
      directory rename detection: files/directories in the way of some renames
      directory rename detection: testcases checking which side did the rename
      directory rename detection: more involved edge/corner testcases
      directory rename detection: testcases exploring possibly suboptimal merges
      directory rename detection: miscellaneous testcases to complete coverage
      directory rename detection: tests for handling overwriting untracked files
      directory rename detection: tests for handling overwriting dirty files
      merge-recursive: move the get_renames() function
      merge-recursive: introduce new functions to handle rename logic
      merge-recursive: fix leaks of allocated renames and diff_filepairs
      merge-recursive: make !o->detect_rename codepath more obvious
      merge-recursive: split out code for determining diff_filepairs
      merge-recursive: make a helper function for cleanup for handle_renames
      Make running git under other debugger-like programs easy
      unpack_trees: fix breakage when o->src_index != o->dst_index
      merge-recursive: add get_directory_renames()
      merge-recursive: check for directory level conflicts
      merge-recursive: add computation of collisions due to dir rename & merging
      merge-recursive: check for file level conflicts then get new name
      merge-recursive: when comparing files, don't include trees
      merge-recursive: apply necessary modifications for directory renames
      merge-recursive: avoid clobbering untracked files with directory renames
      merge-recursive: fix overwriting dirty files involved in renames
      merge-recursive: fix remaining directory rename + dirty overwrite cases
      directory rename detection: new testcases showcasing a pair of bugs
      merge-recursive: avoid spurious rename/rename conflict from dir renames
      merge-recursive: improve add_cacheinfo error handling
      merge-recursive: move more is_dirty handling to merge_content
      merge-recursive: avoid triggering add_cacheinfo error with dirty mod
      t6046: testcases checking whether updates can be skipped in a merge
      merge-recursive: fix was_tracked() to quit lying with some renamed paths
      merge-recursive: fix remainder of was_dirty() to use original index
      merge-recursive: make "Auto-merging" comment show for other merges
      merge-recursive: fix check for skipability of working tree updates
      merge-recursive: provide pair of `unpack_trees_{start,finish}()`

Eric Sunshine (5):
      t3200: verify "branch --list" sanity when rebasing from detached HEAD
      t2028: tighten grep expression to make "move worktree" test more robust
      git-worktree.txt: recommend 'git worktree remove' over manual deletion
      git-worktree.txt: unify command-line prompt in example blocks
      configure.ac: fix botched FREAD_READS_DIRECTORIES check

Erik E Brady (1):
      credential: ignore SIGPIPE when writing to credential helpers

Florian Gamböck (1):
      completion: load completion file for external subcommand

Harald Nordgren (1):
      ls-remote: create '--sort' option

Jameson Miller (3):
      fast-import: rename mem_pool type to mp_block
      fast-import: introduce mem_pool type
      mem-pool: move reusable parts of memory pool into its own file

Jeff King (36):
      diff-highlight: correct test graph diagram
      diff-highlight: use test_tick in graph test
      diff-highlight: prefer "echo" to "cat" in tests
      diff-highlight: test interleaved parallel lines of history
      diff-highlight: test graphs with --color
      diff-highlight: use flush() helper consistently
      diff-highlight: detect --graph by indent
      set_git_dir: die when setenv() fails
      add chdir-notify API
      set_work_tree: use chdir_notify
      refs: use chdir_notify to update cached relative paths
      config: move flockfile() closer to unlocked functions
      t5561: drop curl stderr redirects
      t5561: skip tests if curl is not available
      ref-filter: use "struct object_id" consistently
      ref-filter: make ref_array_item allocation more consistent
      ref-filter: factor ref_array pushing into its own function
      t7004: fix mistaken tag name
      gpg-interface: handle bool user.signingkey
      gpg-interface: modernize function declarations
      gpg-interface: use size_t for signature buffer size
      gpg-interface: fix const-correctness of "eol" pointer
      gpg-interface: extract gpg line matching helper
      gpg-interface: find the last gpg signature line
      apply: clarify "-p" documentation
      pager: set COLUMNS to term_columns()
      mark_tree_contents_uninteresting(): drop missing object check
      mark_parents_uninteresting(): drop missing object check
      mark_parents_uninteresting(): replace list with stack
      mark_parents_uninteresting(): avoid most allocation
      get_main_ref_store: BUG() when outside a repository
      config: die when --blob is used outside a repository
      http: use strbufs instead of fixed buffers
      log_write_email_headers: use strbufs
      shorten_unambiguous_ref: use xsnprintf
      fmt_with_err: add a comment that truncation is OK

Johannes Schindelin (66):
      git_config_set: fix off-by-two
      t1300: rename it to reflect that `repo-config` was deprecated
      t1300: demonstrate that --replace-all can "invent" newlines
      config --replace-all: avoid extra line breaks
      t1300: avoid relying on a bug
      t1300: remove unreasonable expectation from TODO
      t5404: relax overzealous test
      t1300: add a few more hairy examples of sections becoming empty
      t1300: `--unset-all` can leave an empty section behind (bug)
      config: introduce an optional event stream while parsing
      config: avoid using the global variable `store`
      config_set_store: rename some fields for consistency
      git_config_set: do not use a state machine
      git_config_set: make use of the config parser's event stream
      git config --unset: remove empty sections (in the common case)
      git_config_set: reuse empty sections
      exec_cmd: provide a new-style RUNTIME_PREFIX helper for Windows
      mingw/msvc: use the new-style RUNTIME_PREFIX helper
      color: introduce support for colorizing stderr
      push: test to verify that push errors are colored
      config: document the settings to colorize push errors/hints
      gettext: avoid initialization if the locale dir is not present
      git_setup_gettext: plug memory leak
      sequencer: avoid using errno clobbered by rollback_lock_file()
      sequencer: make rearrange_squash() a bit more obvious
      sequencer: refactor how original todo list lines are accessed
      sequencer: offer helpful advice when a command was rescheduled
      sequencer: introduce new commands to reset the revision
      sequencer: introduce the `merge` command
      sequencer: fast-forward `merge` commands, if possible
      rebase-helper --make-script: introduce a flag to rebase merges
      rebase: introduce the --rebase-merges option
      sequencer: make refs generated by the `label` command worktree-local
      sequencer: handle post-rewrite for merge commands
      rebase --rebase-merges: avoid "empty merges"
      pull: accept --rebase=merges to recreate the branch topology
      rebase -i: introduce --rebase-merges=[no-]rebase-cousins
      rebase -i --rebase-merges: add a section to the man page
      argv_array: offer to split a string by whitespace
      commit: Let the callback of for_each_mergetag return on error
      replace: avoid using die() to indicate a bug
      tests: introduce test_unset_prereq, for debugging
      replace: "libify" create_graft() and callees
      replace: prepare create_graft() for converting graft files wholesale
      replace: introduce --convert-graft-file
      Add a test for `git replace --convert-graft-file`
      Deprecate support for .git/info/grafts
      filter-branch: stop suggesting to use grafts
      technical/shallow: stop referring to grafts
      technical/shallow: describe why shallow cannot use replace refs
      Remove obsolete script to convert grafts to replace refs
      rebase -i: demonstrate bugs with fixup!/squash! commit messages
      rebase -i: Handle "combination of <n> commits" with GETTEXT_POISON
      sequencer: always commit without editing when asked for
      rebase --skip: clean up commit message after a failed fixup/squash
      sequencer: extract helper to update active_cache_tree
      sequencer: learn about the special "fake root commit" handling
      rebase -i --root: let the sequencer handle even the initial part
      sequencer: allow introducing new root commits
      rebase --rebase-merges: a "merge" into a new root is a fast-forward
      rebase --rebase-merges: root commits can be cousins, too
      test-tool: help verifying BUG() code paths
      run-command: use BUG() to report bugs, not die()
      Replace all die("BUG: ...") calls by BUG() ones
      Convert remaining die*(BUG) messages
      config: a user-provided invalid section is not a BUG

Johannes Sixt (2):
      sequencer: reset the committer date before commits
      git: add -P as a short option for --no-pager

Jonathan Nieder (5):
      sha1_file: allow map_sha1_file_1 to handle arbitrary repositories
      sha1_file: allow sha1_loose_object_info to handle arbitrary repositories
      Makefile: remove unused @@PERLLIBDIR@@ substitution variable
      Makefile: quote $INSTLIBDIR when passing it to sed
      packfile: add repository argument to packed_object_info

Jonathan Tan (4):
      grep: remove "repo" arg from non-supporting funcs
      upload-pack: fix error message typo
      upload-pack: read config when serving protocol v2
      {fetch,upload}-pack: support filter in protocol v2

Junio C Hamano (13):
      stash: fix nonsense pipeline
      The first batch for 2.18 cycle
      The second batch for 2.18
      The third batch for 2.18
      Revert "Merge branch 'en/rename-directory-detection'"
      gc: do not upcase error message shown with die()
      parseopt: handle malformed --expire arguments more nicely
      The fourth batch for 2.18
      The fifth batch for 2.18
      argv-array: return the pushed string from argv_push*()
      The sixth batch for 2.18
      The seventh batch for 2.18
      Git 2.18-rc0

Kaartic Sivaraam (1):
      branch --list: print useful info whilst interactive rebasing a detached HEAD

Lars Schneider (10):
      strbuf: remove unnecessary NUL assignment in xstrdup_tolower()
      strbuf: add xstrdup_toupper()
      strbuf: add a case insensitive starts_with()
      utf8: teach same_encoding() alternative UTF encoding names
      utf8: add function to detect prohibited UTF-16/32 BOM
      utf8: add function to detect a missing UTF-16/32 BOM
      convert: add 'working-tree-encoding' attribute
      convert: check for detectable errors in UTF encodings
      convert: add tracing for 'working-tree-encoding' attribute
      convert: add round trip check based on 'core.checkRoundtripEncoding'

Leif Middelschulte (1):
      merge-recursive: give notice when submodule commit gets fast-forwarded

Loganaden Velvindron (1):
      http: allow use of TLS 1.3

Lucas Werkmeister (1):
      daemon.c: fix condition for redirecting stderr

Luis Marsano (2):
      git-credential-netrc: adapt to test framework for git
      git-credential-netrc: accept gpg option

Martin Ågren (24):
      git-shortlog.txt: reorder usages
      shortlog: add usage-string for stdin-reading
      shortlog: disallow left-over arguments outside repo
      doc: convert \--option to --option
      doc: convert [\--] to [--]
      git-[short]log.txt: unify quoted standalone --
      git-submodule.txt: quote usage in monospace, drop backslash
      fast-export: fix regression skipping some merge-commits
      http-fetch: make `-a` standard behaviour
      walker: drop fields of `struct walker` which are always 1
      t/helper/test-write-cache: clean up lock-handling
      refs.c: do not die if locking fails in `write_pseudoref()`
      refs.c: do not die if locking fails in `delete_pseudoref()`
      lock_file: make function-local locks non-static
      lock_file: move static locks into functions
      refs.c: refer to "object ID", not "sha1", in error messages
      t1400: add tests around adding/deleting pseudorefs
      refs: handle zero oid for pseudorefs
      merge: setup `opts` later in `checkout_fast_forward()`
      config: free resources of `struct config_store_data`
      config: let `config_store_data_clear()` handle `value_regex`
      config: let `config_store_data_clear()` handle `key`
      regex: do not call `regfree()` if compilation fails
      unpack_trees_options: free messages when done

Michal Nazarewicz (1):
      send-email: simplify Gmail example in the documentation

Michele Locati (1):
      filter-branch: return 2 when nothing to rewrite

Nguyễn Thái Ngọc Duy (88):
      repository: initialize the_repository in main()
      repository.c: move env-related setup code back to environment.c
      repository.c: delete dead functions
      sha1_file.c: move delayed getenv(altdb) back to setup_git_env()
      repository: delete ignore_env member
      gc.txt: more details about what gc does
      worktree: delete dead code
      worktree prune: improve prune logic when worktree is moved
      repository.h: add comment and clarify repo_set_gitdir
      git.c: move cmd_struct declaration up
      git.c: add hidden option --list-parseopt-builtins
      completion: mention the oldest version we need to support
      completion: factor out _git_xxx calling code
      completion: add --option completion for most builtin commands
      completion: delete option-only completion commands
      completion: use __gitcomp_builtin in _git_ls_tree
      completion: use __gitcomp_builtin in _git_cherry
      packfile: keep prepare_packed_git() private
      t/helper: add an empty test-tool program
      t/helper: merge test-chmtime into test-tool
      t/helper: merge test-sha1 into test-tool
      t/helper: merge test-lazy-init-name-hash into test-tool
      t/helper: merge test-config into test-tool
      t/helper: merge test-ctype into test-tool
      t/helper: merge test-date into test-tool
      t/helper: merge (unused) test-delta into test-tool
      t/helper: merge test-drop-caches into test-tool
      t/helper: merge test-dump-cache-tree into test-tool
      t/helper: merge test-dump-split-index into test-tool
      t/helper: merge test-example-decorate into test-tool
      t/helper: merge test-genrandom into test-tool
      t/helper: merge test-hashmap into test-tool
      t/helper: merge test-index-version into test-tool
      t/helper: merge (unused) test-match-trees into test-tool
      t/helper: merge (unused) test-mergesort into test-tool
      t/helper: merge test-mktemp into test-tool
      t/helper: merge test-online-cpus into test-tool
      t/helper: merge test-path-utils into test-tool
      t/helper: merge test-prio-queue into test-tool
      t/helper: merge test-read-cache into test-tool
      t/helper: merge test-ref-store into test-tool
      t/helper: merge test-regex into test-tool
      t/helper: merge test-revision-walking into test-tool
      t/helper: merge test-run-command into test-tool
      t/helper: merge test-scrap-cache-tree into test-tool
      t/helper: merge test-sha1-array into test-tool
      t/helper: merge test-sigchain into test-tool
      t/helper: merge test-strcmp-offset into test-tool
      t/helper: merge test-string-list into test-tool
      t/helper: merge test-submodule-config into test-tool
      t/helper: merge test-subprocess into test-tool
      t/helper: merge test-urlmatch-normalization into test-tool
      t/helper: merge test-wildmatch into test-tool
      t/helper: merge test-write-cache into test-tool
      trace.c: export trace_setup_key
      read-cache.c: make $GIT_TEST_SPLIT_INDEX boolean
      pack-objects: a bit of document about struct object_entry
      pack-objects: turn type and in_pack_type to bitfields
      pack-objects: use bitfield for object_entry::dfs_state
      pack-objects: use bitfield for object_entry::depth
      pack-objects: move in_pack_pos out of struct object_entry
      pack-objects: move in_pack out of struct object_entry
      pack-objects: refer to delta objects by index instead of pointer
      pack-objects: shrink z_delta_size field in struct object_entry
      pack-objects: don't check size when the object is bad
      pack-objects: clarify the use of object_entry::size
      pack-objects: shrink size field in struct object_entry
      pack-objects: shrink delta_size field in struct object_entry
      pack-objects: reorder members to shrink struct object_entry
      ci: exercise the whole test suite with uncommon code in pack-objects
      t7700: have closing quote of a test at the beginning of line
      repack: add --keep-pack option
      gc: add --keep-largest-pack option
      gc: add gc.bigPackThreshold config
      gc: handle a corner case in gc.bigPackThreshold
      gc --auto: exclude base pack if not enough mem to "repack -ad"
      pack-objects: show some progress when counting kept objects
      connect.c: mark die_initial_contact() NORETURN
      Makefile: detect compiler and enable more warnings in DEVELOPER=1
      submodule--helper: don't print null in 'submodule status'
      doc: keep first level section header in upper case
      pack-objects: validation and documentation about unreachable options
      completion: fix misspelled config key aliasesfiletype
      repository: fix free problem with repo_clear(the_repository)
      pack-format.txt: more details on pack file format
      column: fix off-by-one default width
      commit.h: rearrange 'index' to shrink struct commit
      travis-ci: run gcc-8 on linux-gcc jobs

Olga Telezhnaya (6):
      ref-filter: add shortcut to work with strbufs
      ref-filter: start adding strbufs with errors
      ref-filter: add return value && strbuf to handlers
      ref-filter: change parsing function error handling
      ref-filter: add return value to parsers
      ref-filter: libify get_ref_atom_value()

Paul-Sebastian Ungureanu (2):
      parse-options: do not show usage upon invalid option value
      t/helper: 'test-chmtime (--get|-g)' to print only the mtime

Philip Oakley (1):
      Avoid multiple PREFIX definitions

Phillip Wood (7):
      rebase --root: stop assuming squash_onto is unset
      rebase -i --keep-empty: don't prune empty commits
      rebase: respect --no-keep-empty
      rebase: extend --signoff support
      rebase -p: error out if --signoff is given
      rebase --keep-empty: always use interactive rebase
      rebase --rebase-merges: add test for --keep-empty

Pratik Karki (1):
      test: avoid pipes in git related commands for test

Ramsay Jones (1):
      BUG_exit_code: fix sparse "symbol not declared" warning

René Scharfe (8):
      sha1_name: use bsearch_pack() in unique_in_pack()
      bisect: use oid_to_hex() for converting object_id hashes to hex strings
      run-command: use strbuf_addstr() for adding a string to a strbuf
      submodule: check for NULL return of get_submodule_ref_store()
      replace_object: use oidmap
      fast-export: avoid NULL pointer arithmetic
      t5512: run git fetch inside test
      fsmonitor: use internal argv_array of struct child_process

Ryan Dammrose (1):
      push: colorize errors

SZEDER Gábor (22):
      test_must_be_empty: simplify file existence check
      t9902-completion: add tests demonstrating issues with quoted pathnames
      completion: move __git_complete_index_file() next to its helpers
      completion: simplify prefix path component handling during path completion
      completion: support completing non-ASCII pathnames
      completion: improve handling quoted paths on the command line
      completion: let 'ls-files' and 'diff-index' filter matching paths
      completion: use 'awk' to strip trailing path components
      t9902-completion: ignore COMPREPLY element order in some tests
      completion: remove repeated dirnames with 'awk' during path completion
      completion: improve handling quoted paths in 'git ls-files's output
      completion: fill COMPREPLY directly when completing paths
      completion: reduce overhead of clearing cached --options
      docs/git-gc: fix minor rendering issue
      coccinelle: avoid wrong transformation suggestions from commit.cocci
      t6050-replace: don't disable stdin for the whole test script
      t5310-pack-bitmaps: make JGit tests work with GIT_TEST_SPLIT_INDEX
      t5516-fetch-push: fix 'push with dry-run' test
      t5516-fetch-push: fix broken &&-chain
      t7005-editor: get rid of the SPACES_IN_FILENAMES prereq
      completion: don't return with error from __gitcomp_file_direct()
      t9902-completion: exercise __git_complete_index_file() directly

Sergey Organov (1):
      glossary: substitute "ancestor" for "direct ancestor" in 'push' description.

Stefan Agner (1):
      send-email: avoid duplicate In-Reply-To/References

Stefan Beller (81):
      repository: introduce raw object store field
      object-store: migrate alternates struct and functions from cache.h
      object-store: move alt_odb_list and alt_odb_tail to object store
      object-store: free alt_odb_list
      object-store: move packed_git and packed_git_mru to object store
      object-store: close all packs upon clearing the object store
      pack: move prepare_packed_git_run_once to object store
      pack: move approximate object count to object store
      sha1_file: add raw_object_store argument to alt_odb_usable
      sha1_file: add repository argument to link_alt_odb_entry
      sha1_file: add repository argument to read_info_alternates
      sha1_file: add repository argument to link_alt_odb_entries
      sha1_file: add repository argument to prepare_alt_odb
      sha1_file: allow link_alt_odb_entries to handle arbitrary repositories
      sha1_file: allow prepare_alt_odb to handle arbitrary repositories
      sha1_file: add repository argument to sha1_file_name
      sha1_file: add repository argument to stat_sha1_file
      sha1_file: add repository argument to open_sha1_file
      sha1_file: add repository argument to map_sha1_file_1
      sha1_file: add repository argument to map_sha1_file
      sha1_file: add repository argument to sha1_loose_object_info
      sha1_file: allow sha1_file_name to handle arbitrary repositories
      sha1_file: allow stat_sha1_file to handle arbitrary repositories
      sha1_file: allow open_sha1_file to handle arbitrary repositories
      sha1_file: allow map_sha1_file to handle arbitrary repositories
      packfile: allow prepare_packed_git_mru to handle arbitrary repositories
      packfile: allow rearrange_packed_git to handle arbitrary repositories
      packfile: allow install_packed_git to handle arbitrary repositories
      packfile: add repository argument to prepare_packed_git_one
      packfile: add repository argument to prepare_packed_git
      packfile: add repository argument to reprepare_packed_git
      packfile: allow prepare_packed_git_one to handle arbitrary repositories
      packfile: allow prepare_packed_git to handle arbitrary repositories
      packfile: allow reprepare_packed_git to handle arbitrary repositories
      packfile: add repository argument to find_pack_entry
      packfile: allow find_pack_entry to handle arbitrary repositories
      submodule.h: drop declaration of connect_work_tree_and_git_dir
      submodule-config: allow submodule_free to handle arbitrary repositories
      submodule-config: add repository argument to submodule_from_{name, path}
      submodule-config: remove submodule_from_cache
      submodule: fixup nested submodules after moving the submodule
      write_or_die.c: rename to use dashes in file name
      unicode_width.h: rename to use dash in file name
      exec_cmd: rename to use dash in file name
      sha1_name.c: rename to use dash in file name
      sha1_file.c: rename to use dash in file name
      replace_object.c: rename to use dash in file name
      replace-object: move replace_map to object store
      object-store: move lookup_replace_object to replace-object.h
      replace-object: eliminate replace objects prepared flag
      replace-object: check_replace_refs is safe in multi repo environment
      refs: add repository argument to get_main_ref_store
      refs: add repository argument to for_each_replace_ref
      replace-object: add repository argument to prepare_replace_object
      replace-object: add repository argument to do_lookup_replace_object
      replace-object: add repository argument to lookup_replace_object
      refs: store the main ref store inside the repository struct
      refs: allow for_each_replace_ref to handle arbitrary repositories
      replace-object: allow prepare_replace_object to handle arbitrary repositories
      replace-object: allow do_lookup_replace_object to handle arbitrary repositories
      replace-object: allow lookup_replace_object to handle arbitrary repositories
      worktree: accept -f as short for --force for removal
      builtin/blame: dim uninteresting metadata lines
      builtin/blame: highlight recently changed lines
      builtin/blame: add new coloring scheme config
      cache.h: add repository argument to oid_object_info_extended
      cache.h: add repository argument to oid_object_info
      packfile: add repository argument to retry_bad_packed_offset
      packfile: add repository argument to packed_to_object_type
      packfile: add repository argument to read_object
      packfile: add repository argument to unpack_entry
      packfile: add repository argument to cache_or_unpack_entry
      cache.h: allow oid_object_info to handle arbitrary repositories
      git-rebase--interactive: clarify arguments
      object.c: free replace map in raw_object_store_clear
      replace-object.c: remove the_repository from prepare_replace_object
      grep: handle corrupt index files early
      git-submodule.sh: try harder to fetch a submodule
      submodule.c: move submodule merging to merge-recursive.c
      merge-recursive: i18n submodule merge output and respect verbosity
      object.c: clear replace map before freeing it

Takuto Ikuta (1):
      fetch-pack.c: use oidset to check existence of loose object

Tao Qingyun (1):
      t1510-repo-setup.sh: remove useless mkdir

Taylor Blau (5):
      builtin/config.c: treat type specifiers singularly
      builtin/config.c: support `--type=<type>` as preferred alias for `--<type>`
      builtin/config: introduce `--default`
      config.c: introduce 'git_config_color' to parse ANSI colors
      builtin/config: introduce `color` type specifier

Thomas Gummerer (10):
      stash push: avoid printing errors
      stash push -u: don't create empty stash
      stash: drop superfluos pathspec parameter
      SubmittingPatches: mention the git contacts command
      completion: stop showing 'save' for stash by default
      completion: make stash -p and alias for stash push -p
      worktree: remove extra members from struct add_opts
      worktree: improve message when creating a new worktree
      worktree: factor out dwim_branch function
      worktree: teach "add" to check out existing branches

Todd Zullinger (1):
      doc/clone: update caption for GIT URLS cross-reference

Torsten Bögershausen (1):
      test: correct detection of UTF8_NFD_TO_NFC for APFS

Wink Saville (8):
      rebase-interactive: simplify pick_on_preserving_merges
      rebase: update invocation of rebase dot-sourced scripts
      rebase: reindent function git_rebase__interactive
      rebase: extract functions out of git_rebase__interactive
      rebase: add and use git_rebase__interactive__preserve_merges
      rebase: remove unused code paths from git_rebase__interactive
      rebase: remove unused code paths from git_rebase__interactive__preserve_merges
      rebase: remove merges_option and a blank line

Yuki Kokubun (1):
      filter-branch: fix errors caused by refs that point at non-committish

brian m. carlson (121):
      bulk-checkin: convert index_bulk_checkin to struct object_id
      builtin/write-tree: convert to struct object_id
      cache-tree: convert write_*_as_tree to object_id
      cache-tree: convert remnants to struct object_id
      resolve-undo: convert struct resolve_undo_info to object_id
      tree: convert read_tree_recursive to struct object_id
      ref-filter: convert grab_objectname to struct object_id
      strbuf: convert strbuf_add_unique_abbrev to use struct object_id
      wt-status: convert struct wt_status_state to object_id
      Convert find_unique_abbrev* to struct object_id
      http-walker: convert struct object_request to use struct object_id
      send-pack: convert remaining functions to struct object_id
      replace_object: convert struct replace_object to object_id
      builtin/mktag: convert to struct object_id
      archive: convert write_archive_entry_fn_t to object_id
      archive: convert sha1_file_to_archive to struct object_id
      builtin/index-pack: convert struct ref_delta_entry to object_id
      sha1_file: convert read_loose_object to use struct object_id
      sha1_file: convert check_sha1_signature to struct object_id
      streaming: convert open_istream to use struct object_id
      builtin/mktree: convert to struct object_id
      sha1_file: convert assert_sha1_type to object_id
      sha1_file: convert retry_bad_packed_offset to struct object_id
      packfile: convert unpack_entry to struct object_id
      Convert remaining callers of sha1_object_info_extended to object_id
      sha1_file: convert sha1_object_info* to object_id
      builtin/fmt-merge-msg: convert remaining code to object_id
      builtin/notes: convert static functions to object_id
      tree-walk: convert get_tree_entry_follow_symlinks internals to object_id
      streaming: convert istream internals to struct object_id
      tree-walk: convert tree entry functions to object_id
      sha1_file: convert read_object_with_reference to object_id
      sha1_file: convert read_sha1_file to struct object_id
      Convert lookup_replace_object to struct object_id
      sha1_file: introduce a constant for max header length
      convert: convert to struct object_id
      sha1_name: convert struct min_abbrev_data to object_id
      t1011: abstract away SHA-1-specific constants
      t1304: abstract away SHA-1-specific constants
      t1300: abstract away SHA-1-specific constants
      t1405: sort reflog entries in a hash-independent way
      t1411: abstract away SHA-1-specific constants
      t1507: abstract away SHA-1-specific constants
      t2020: abstract away SHA-1 specific constants
      t2101: modernize test style
      t2101: abstract away SHA-1-specific constants
      t2107: abstract away SHA-1-specific constants
      format-patch: make cover letters always text/plain
      cache: add a function to read an object ID from a buffer
      server-info: remove unused members from struct pack_info
      Remove unused member in struct object_context
      packfile: remove unused member from struct pack_entry
      packfile: convert has_sha1_pack to object_id
      sha1-file: convert freshen functions to object_id
      packfile: convert find_pack_entry to object_id
      packfile: abstract away hash constant values
      pack-objects: abstract away hash algorithm
      pack-redundant: abstract away hash algorithm
      tree-walk: avoid hard-coded 20 constant
      tree-walk: convert get_tree_entry_follow_symlinks to object_id
      fsck: convert static functions to struct object_id
      submodule-config: convert structures to object_id
      split-index: convert struct split_index to object_id
      Update struct index_state to use struct object_id
      pack-redundant: convert linked lists to use struct object_id
      index-pack: abstract away hash function constant
      commit: convert uses of get_sha1_hex to get_oid_hex
      dir: convert struct untracked_cache_dir to object_id
      http: eliminate hard-coded constants
      revision: replace use of hard-coded constants
      upload-pack: replace use of several hard-coded constants
      diff: specify abbreviation size in terms of the_hash_algo
      builtin/receive-pack: avoid hard-coded constants for push certs
      sha1-file: add functions for hex empty tree and blob OIDs
      builtin/am: convert uses of EMPTY_TREE_SHA1_BIN to the_hash_algo
      builtin/merge: switch tree functions to use object_id
      merge: convert empty tree constant to the_hash_algo
      sequencer: convert one use of EMPTY_TREE_SHA1_HEX
      submodule: convert several uses of EMPTY_TREE_SHA1_HEX
      wt-status: convert two uses of EMPTY_TREE_SHA1_HEX
      builtin/receive-pack: convert one use of EMPTY_TREE_SHA1_HEX
      builtin/reset: convert use of EMPTY_TREE_SHA1_BIN
      sha1_file: convert cached object code to struct object_id
      cache-tree: use is_empty_tree_oid
      sequencer: use the_hash_algo for empty tree object ID
      dir: use the_hash_algo for empty blob object ID
      sha1_file: only expose empty object constants through git_hash_algo
      Update shell scripts to compute empty tree object ID
      add--interactive: compute the empty tree value
      merge-one-file: compute empty blob object ID
      Documentation: use 8-space tabs with Asciidoctor
      Documentation: render revisions correctly under Asciidoctor
      mailmap: update brian m. carlson's email address
      t/test-lib: add an SHA1 prerequisite
      t/test-lib: introduce ZERO_OID
      t: switch $_z40 to $ZERO_OID
      t/test-lib: introduce OID_REGEX
      t: switch $_x40 to $OID_REGEX
      t0000: annotate with SHA1 prerequisite
      t1007: annotate with SHA1 prerequisite
      t1512: skip test if not using SHA-1
      t4044: skip test if not using SHA-1
      t: skip pack tests if not using SHA-1
      t2203: abstract away SHA-1-specific constants
      t3103: abstract away SHA-1-specific constants
      t3702: abstract away SHA-1-specific constants
      t3905: abstract away SHA-1-specific constants
      t4007: abstract away SHA-1-specific constants
      t4008: abstract away SHA-1-specific constants
      t4014: abstract away SHA-1-specific constants
      t4020: abstract away SHA-1-specific constants
      t4022: abstract away SHA-1-specific constants
      t4029: fix test indentation
      t4029: abstract away SHA-1-specific constants
      t4030: abstract away SHA-1-specific constants
      t/lib-diff-alternative: abstract away SHA-1-specific constants
      t4205: sort log output in a hash-independent way
      t4042: abstract away SHA-1-specific constants
      t4045: abstract away SHA-1-specific constants
      t4208: abstract away SHA-1-specific constants
      t5300: abstract away SHA-1-specific constants

Ævar Arnfjörð Bjarmason (21):
      configure: fix a regression in PCRE v1 detection
      configure: detect redundant --with-libpcre & --with-libpcre1
      Makefile: make USE_LIBPCRE=YesPlease mean v2, not v1
      Makefile: fix broken bindir_relative variable
      Makefile: add a gitexecdir_relative variable
      Makefile: optionally symlink libexec/git-core binaries to bin/git
      Remove contrib/examples/*
      doc hash-function-transition: clarify how older gits die on NewHash
      doc hash-function-transition: clarify what SHAttered means
      git-svn: avoid warning on undef readline()
      Makefile: add a DEVOPTS to suppress -Werror under DEVELOPER
      Makefile: add a DEVOPTS to get all of -Wextra
      git{,-blame}.el: remove old bitrotting Emacs code
      .gitattributes: add *.pl extension for Perl
      .gitattributes: use the "perl" differ for Perl
      .gitattributes: add a diff driver for Python
      sha1-name.c: remove stray newline
      sha1-array.h: align function arguments
      git-p4: change "commitish" typo to "committish"
      sha1-name.c: move around the collect_ambiguous() function
      get_short_oid: sort ambiguous objects by type, then SHA-1


Version v2.17.2; changes since v2.17.1:
---------------------------------------

Jeff King (5):
      submodule--helper: use "--" to signal end of clone options
      submodule-config: ban submodule urls that start with dash
      submodule-config: ban submodule paths that start with a dash
      fsck: detect submodule urls starting with dash
      fsck: detect submodule paths starting with dash

Junio C Hamano (4):
      Git 2.14.5
      Git 2.15.3
      Git 2.16.5
      Git 2.17.2


Version v2.17.1; changes since v2.17.0:
---------------------------------------

Jeff King (18):
      submodule-config: verify submodule names as paths
      is_ntfs_dotgit: use a size_t for traversing string
      is_hfs_dotgit: match other .git files
      skip_prefix: add case-insensitive variant
      verify_path: drop clever fallthrough
      verify_dotfile: mention case-insensitivity in comment
      update-index: stat updated files earlier
      verify_path: disallow symlinks in .gitmodules
      index-pack: make fsck error message more specific
      fsck: simplify ".git" check
      fsck: actually fsck blob data
      fsck: detect gitmodules files
      fsck: handle promisor objects in .gitmodules check
      fsck: check .gitmodules content
      fsck: call fsck_finish() after fscking objects
      unpack-objects: call fsck_finish() after fscking objects
      index-pack: check .gitmodules files with --strict
      fsck: complain when .gitmodules is a symlink

Johannes Schindelin (2):
      is_ntfs_dotgit: match other .git files
      is_{hfs,ntfs}_dotgitmodules: add tests

Junio C Hamano (5):
      Git 2.13.7
      Git 2.14.4
      Git 2.15.2
      Git 2.16.4
      Git 2.17.1


Version v2.17.0; changes since v2.17.0-rc2:
-------------------------------------------

Alexander Shopov (1):
      l10n: bg.po: Updated Bulgarian translation (3376t)

Changwoo Ryu (1):
      l10n: ko.po: Update Korean translation

Christopher Díaz Riveros (2):
      l10n: es.po: fixes to Spanish translation
      l10n: es.po: Update Spanish translation 2.17.0

Jean-Noël Avila (2):
      l10n: fr.po v2.17.0 round 1
      l10n: fr.po: v2.17.0 no fuzzy

Jiang Xin (2):
      l10n: git.pot: v2.17.0 round 1 (132 new, 44 removed)
      l10n: zh_CN: for git v2.17.0 l10n round 1

Jonathan Nieder (1):
      upload-pack: disable object filtering when disabled by config

Jordi Mas (1):
      l10n: Update Catalan translation

Junio C Hamano (1):
      Git 2.17

Peter Krefting (1):
      l10n: sv.po: Update Swedish translation (3376t0f0u)

Ralf Thielow (1):
      l10n: de.po: translate 132 new messages

Ray Chen (1):
      l10n: zh_CN: review for git v2.17.0 l10n round 1

René Scharfe (1):
      unpack-trees: release oid_array after use in check_updates()

Trần Ngọc Quân (1):
      l10n: vi.po(3376t): Updated Vietnamese translation for v2.17

Ævar Arnfjörð Bjarmason (1):
      add -p: fix 2.17.0-rc* regression due to moved code


Version v2.17.0-rc2; changes since v2.17.0-rc1:
-----------------------------------------------

Junio C Hamano (3):
      Git 2.16.3
      t9902: disable test on the list of merge-strategies under GETTEXT_POISON
      Git 2.17-rc2

SZEDER Gábor (1):
      completion: clear cached --options when sourcing the completion script

Stefan Beller (1):
      submodule deinit: handle non existing pathspecs gracefully

Thomas Gummerer (1):
      git-stash.txt: remove extra square bracket


Version v2.17.0-rc1; changes since v2.17.0-rc0:
-----------------------------------------------

Ben Peart (1):
      Fix bugs preventing adding updated cache entries to the name hash

David Pursehouse (1):
      Documentation/merge-strategies: typofix

Jeff King (1):
      doc/gitattributes: mention non-recursive behavior

Johannes Schindelin (1):
      mingw: abort on invalid strftime formats

Jonathan Tan (3):
      sha1_file: restore OBJECT_INFO_QUICK functionality
      index-pack: support checking objects but not links
      fetch-pack: do not check links for partial fetch

Junio C Hamano (1):
      Git 2.17-rc1

Kaartic Sivaraam (1):
      t/t3200: fix a typo in a test description

Martin Ågren (4):
      t7006: add tests for how git config paginates
      config: respect `pager.config` in list/get-mode only
      config: change default of `pager.config` to "on"
      write_locked_index(): add flag to avoid writing unchanged index

Michele Locati (1):
      filter-branch: use printf instead of echo -e

Ramsay Jones (3):
      http: fix an unused variable warning for 'curl_no_proxy'
      -Wuninitialized: remove some 'init-self' workarounds
      read-cache: fix an -Wmaybe-uninitialized warning

Todd Zullinger (2):
      RelNotes: add details on Perl module changes
      completion: complete tags with git tag --delete/--verify


Version v2.17.0-rc0; changes since v2.16.5:
-------------------------------------------

Adam Borowski (1):
      hooks/pre-auto-gc-battery: allow gc to run on non-laptops

Alban Gruin (1):
      userdiff: add built-in pattern for golang

Alex Bennée (1):
      send-email: add test for Linux's get_maintainer.pl

Alexander Shopov (1):
      Mark messages for translations

Ben Peart (2):
      dir.c: don't flag the index as dirty for changes to the untracked cache
      name-hash: properly fold directory names in adjust_dirname_case()

Bernhard M. Wiedemann (1):
      perl: call timegm and timelocal with 4-digit year

Brandon Williams (38):
      object_info: change member name from 'typename' to 'type_name'
      object: rename function 'typename' to 'type_name'
      blame: rename 'this' variables
      pack-objects: rename 'this' variables
      rev-parse: rename 'this' variable
      submodule: indicate that 'submodule.recurse' doesn't apply to clone
      diff: rename 'this' variables
      apply: rename 'try' variables
      apply: rename 'new' variables
      checkout: rename 'new' variables
      help: rename 'new' variables
      pack-redundant: rename 'new' variables
      reflog: rename 'new' variables
      remote: rename 'new' variables
      combine-diff: rename 'new' variables
      commit: rename 'new' variables
      diff-lib: rename 'new' variable
      diff: rename 'new' variables
      diffcore-delta: rename 'new' variables
      entry: rename 'new' variables
      http: rename 'new' variables
      imap-send: rename 'new' variables
      line-log: rename 'new' variables
      read-cache: rename 'new' variables
      ref-filter: rename 'new' variables
      remote: rename 'new' variables
      split-index: rename 'new' variables
      submodule: rename 'new' variables
      trailer: rename 'new' variables
      unpack-trees: rename 'new' variables
      init-db: rename 'template' variables
      environment: rename 'template' variables
      diff: rename 'template' variables
      environment: rename 'namespace' variables
      wrapper: rename 'template' variables
      tempfile: rename 'template' variables
      trailer: rename 'template' variables
      replace: rename 'new' variables

Christian Couder (12):
      perf/aggregate: fix checking ENV{GIT_PERF_SUBSECTION}
      perf/aggregate: refactor printing results
      perf/aggregate: implement codespeed JSON output
      perf/run: add conf_opts argument to get_var_from_env_or_config()
      perf/run: learn about perf.codespeedOutput
      perf/run: learn to send output to codespeed server
      perf/run: read GIT_PERF_REPO_NAME from perf.repoName
      sha1_file: remove static strbuf from sha1_file_name()
      sha1_file: improve sha1_file_name() perfs
      perf/aggregate: add --subsection option
      perf/aggregate: add --reponame option
      perf/aggregate: sort JSON fields in output

Christian Ludwig (2):
      send-email: rename variable for clarity
      send-email: support separate Reply-To address

Derrick Stolee (3):
      packfile: use get_be64() for large offsets
      sha1_name: fix uninitialized memory errors
      revision.c: reduce object database queries

Elijah Newren (3):
      Tighten and correct a few testcases for merging and cherry-picking
      merge-recursive: fix logic ordering issue
      merge-recursive: add explanation for src_entry and dst_entry

Eric Sunshine (2):
      worktree: add: fix 'post-checkout' not knowing new worktree location
      t2028: fix minor error and issues in newly-added "worktree move" tests

Gargi Sharma (1):
      mru: Replace mru.[ch] with list.h implementation

Genki Sky (1):
      rebase: add --allow-empty-message option

Gregory Herrero (1):
      rebase -p: fix incorrect commit message when calling `git merge`.

Jeff Hostetler (12):
      upload-pack: add object filtering for partial clone
      fetch-pack, index-pack, transport: partial clone
      fetch-pack: add --no-filter
      fetch: support filters
      partial-clone: define partial clone settings in config
      t5616: end-to-end tests for partial clone
      fetch: inherit filter-spec from partial clone
      t5616: test bulk prefetch after partial fetch
      stat_tracking_info: return +1 when branches not equal
      status: add --[no-]ahead-behind to status and commit for V2 format.
      status: update short status to respect --no-ahead-behind
      status: support --no-ahead-behind in long format

Jeff King (20):
      sq_quote_argv: drop maxlen parameter
      trace: avoid unnecessary quoting
      correct error messages for NULL packet_read_line()
      CodingGuidelines: mention "static" and "extern"
      t0002: simplify error checking
      describe: confirm that blobs actually exist
      test-hashmap: use ALLOC_ARRAY rather than bare malloc
      test-hashmap: check allocation computation for overflow
      test-hashmap: use xsnprintf rather than snprintf
      test-hashmap: use strbuf_getline rather than fgets
      test-hashmap: simplify alloc_test_entry
      test-hashmap: use "unsigned int" for hash storage
      sq_dequote: fix extra consumption of source string
      t5545: factor out http repository setup
      remote-curl: unquote incoming push-options
      t: send verbose test-helper output to fd 4
      strbuf_read_file(): preserve errno across close() call
      smart-http: document flush after "# service" line
      t3701: add a test for interactive.diffFilter
      add--interactive: detect bogus diffFilter output

Johannes Schindelin (2):
      sequencer: assign only free()able strings to gpg_sign
      apply: demonstrate a problem applying svn diffs

Jon Simons (1):
      always check for NULL return from packet_read_line()

Jonathan Nieder (1):
      perl: treat PERLLIB_EXTRA as an extra path again

Jonathan Tan (18):
      extension.partialclone: introduce partial clone extension
      fsck: introduce partialclone extension
      fsck: support refs pointing to promisor objects
      fsck: support referenced promisor objects
      fsck: support promisor objects as CLI argument
      index-pack: refactor writing of .keep files
      introduce fetch-object: fetch one promisor object
      sha1_file: support lazily fetching missing objects
      rev-list: support termination at promisor objects
      gc: do not repack promisor packfiles
      fetch-pack: test support excluding large blobs
      fetch: refactor calculation of remote list
      clone: partial clone
      unpack-trees: batch fetching of missing blobs
      fetch-pack: restore save_commit_buffer after use
      Docs: split out long-running subprocess handshake
      packfile: remove GIT_DEBUG_LOOKUP log statements
      packfile: refactor hash search with fanout table

Junio C Hamano (14):
      Start 2.17 cycle
      First batch after 2.16
      blame: tighten command line parser
      Second batch for 2.17
      Third batch for 2.17
      merge: allow fast-forward when merging a tracked tag
      Fourth batch for 2.17
      Fifth batch for 2.17
      test_must_be_empty: make sure the file exists, not just empty
      untracked cache: use git_env_bool() not getenv() for customization
      Sixth batch for 2.17
      Seventh batch for 2.17
      Eighth batch for 2.17
      Git 2.17-rc0

Kim Gybels (1):
      packed_ref_cache: don't use mmap() for small files

Lucas Werkmeister (1):
      daemon: add --log-destination=(stderr|syslog|none)

Martin Ågren (5):
      sequencer: make lockfiles non-static
      sequencer: always roll back lock in `do_recursive_merge()`
      merge-recursive: always roll back lock in `merge_recursive_generic()`
      merge: always roll back lock in `checkout_fast_forward()`
      sequencer: do not roll back lockfile unnecessarily

Matthieu Moy (2):
      send-email: add and use a local copy of Mail::Address
      perl/Git: remove now useless email-address parsing code

Michael Haggerty (5):
      struct snapshot: store `start` rather than `header_len`
      create_snapshot(): use `xmemdupz()` rather than a strbuf
      find_reference_location(): make function safe for empty snapshots
      packed_ref_iterator_begin(): make optimization more general
      load_contents(): don't try to mmap an empty file

Mårten Kongstad (1):
      docs/pretty-formats: fix typo '% <(<N>)' -> '%<|(<N>)'

Nathan Payre (1):
      send-email: extract email-parsing code into a subroutine

Nguyễn Thái Ngọc Duy (72):
      trace.c: move strbuf_release() out of print_trace_line()
      run-command.c: introduce trace_run_command()
      run-command.c: print program 'git' when tracing git_cmd mode
      run-command.c: print env vars in trace_run_command()
      run-command.c: print new cwd in trace_run_command()
      worktree.c: add validate_worktree()
      dir.c: avoid stat() in valid_cached_dir()
      dir.c: fix missing dir invalidation in untracked code
      format-patch: keep cover-letter diffstat wrapped in 72 columns
      dir.c: stop ignoring opendir() error in open_cached_dir()
      format-patch: reduce patch diffstat width to 72
      trace: measure where the time is spent in the index-heavy operations
      diff.c: refactor pprint_rename() to use strbuf
      dir.c: ignore paths containing .git when invalidating untracked cache
      parse-options: support --git-completion-helper
      parse-options: add OPT_xxx_F() variants
      parse-options: let OPT__FORCE take optional flags argument
      git-completion.bash: introduce __gitcomp_builtin
      completion: use __gitcomp_builtin in _git_add
      completion: use __gitcomp_builtin in _git_am
      completion: use __gitcomp_builtin in _git_apply
      completion: use __gitcomp_builtin in _git_branch
      completion: use __gitcomp_builtin in _git_checkout
      completion: use __gitcomp_builtin in _git_cherry_pick
      completion: use __gitcomp_builtin in _git_clean
      completion: use __gitcomp_builtin in _git_clone
      completion: use __gitcomp_builtin in _git_commit
      completion: use __gitcomp_builtin in _git_config
      completion: use __gitcomp_builtin in _git_describe
      completion: use __gitcomp_builtin in _git_difftool
      completion: use __gitcomp_builtin in _git_fetch
      completion: use __gitcomp_builtin in _git_fsck
      completion: use __gitcomp_builtin in _git_gc
      completion: use __gitcomp_builtin in _git_grep
      completion: use __gitcomp_builtin in _git_help
      completion: use __gitcomp_builtin in _git_init
      completion: use __gitcomp_builtin in _git_ls_files
      completion: use __gitcomp_builtin in _git_ls_remote
      completion: use __gitcomp_builtin in _git_merge
      completion: use __gitcomp_builtin in _git_merge_base
      completion: use __gitcomp_builtin in _git_mv
      completion: use __gitcomp_builtin in _git_name_rev
      completion: use __gitcomp_builtin in _git_notes
      completion: use __gitcomp_builtin in _git_pull
      completion: use __gitcomp_builtin in _git_push
      completion: use __gitcomp_builtin in _git_remote
      remote: force completing --mirror= instead of --mirror
      completion: use __gitcomp_builtin in _git_replace
      completion: use __gitcomp_builtin in _git_reset
      completion: use __gitcomp_builtin in _git_revert
      completion: use __gitcomp_builtin in _git_rm
      completion: use __gitcomp_builtin in _git_show_branch
      completion: use __gitcomp_builtin in _git_status
      completion: use __gitcomp_builtin in _git_tag
      completion: use __gitcomp_builtin in _git_worktree
      worktree.c: add update_worktree_location()
      worktree move: new command
      worktree move: accept destination as directory
      worktree move: refuse to move worktrees with submodules
      worktree remove: new command
      worktree remove: allow it when $GIT_WORK_TREE is already gone
      am: add --show-current-patch
      rebase: add --show-current-patch
      rebase: introduce and use pseudo-ref REBASE_HEAD
      am: support --quit
      diff: add --compact-summary
      object.h: update flag allocation comment
      object.h: realign object flag allocation comment
      completion: don't set PARSE_OPT_NOCOMPLETE on --rerere-autoupdate
      completion: simplify _git_notes
      completion: complete --{reuse,reedit}-message= for all notes subcmds
      completion: more subcommands in _git_notes()

Nicolas Morey-Chaisemartin (1):
      tag: add --edit option

Olga Telezhnaya (3):
      mru: use double-linked list from list.h
      ref-filter: get rid of duplicate code
      ref-filter: get rid of goto

Patryk Obara (14):
      clang-format: adjust penalty for return type line break
      http-push: improve error log
      sha1_file: convert pretend_sha1_file to object_id
      dir: convert struct sha1_stat to use object_id
      sha1_file: convert hash_sha1_file to object_id
      cache: clear whole hash buffer with oidclr
      match-trees: convert splice_tree to object_id
      commit: convert commit_tree* to object_id
      notes: convert combine_notes_* to object_id
      notes: convert write_notes_tree to object_id
      sha1_file: convert write_sha1_file to object_id
      sha1_file: convert force_object_loose to object_id
      sha1_file: convert write_loose_object to object_id
      sha1_file: rename hash_sha1_file_literally

Phillip Wood (25):
      t3404: check intermediate squash messages
      commit: move empty message checks to libgit
      Add a function to update HEAD after creating a commit
      commit: move post-rewrite code to libgit
      commit: move print_commit_summary() to libgit
      sequencer: simplify adding Signed-off-by: trailer
      sequencer: load commit related config
      sequencer: try to commit without forking 'git commit'
      t3512/t3513: remove KNOWN_FAILURE_CHERRY_PICK_SEES_EMPTY_COMMIT=1
      sequencer: improve config handling
      t7505: style fixes
      t7505: add tests for cherry-pick and rebase -i/-p
      sequencer: run 'prepare-commit-msg' hook
      add -p: only display help for active keys
      add -p: only bind search key if there's more than one hunk
      add -p: improve error messages
      add -i: add function to format hunk header
      t3701: indent here documents
      t3701: use test_write_lines and write_script
      t3701: don't hard code sha1 hash values
      t3701: add failing test for pathological context lines
      add -p: adjust offsets of subsequent hunks when one is skipped
      add -p: calculate offset delta for edited patches
      add -p: fix counting when splitting and coalescing
      add -p: don't rely on apply's '--recount' option

Prathamesh Chavan (2):
      submodule: port submodule subcommand 'sync' from shell to C
      submodule: port submodule subcommand 'deinit' from shell to C

Ramsay Jones (1):
      t4151: consolidate multiple calls to test_i18ngrep

Rasmus Villemoes (2):
      grep: move grep_source_init outside critical section
      grep: simplify grep_oid and grep_file

René Scharfe (4):
      cocci: use format keyword instead of a literal string
      check-ignore: fix mix of directories and other file types
      sequencer: factor out strbuf_read_file_or_whine()
      perf: use GIT_PERF_REPEAT_COUNT=3 by default even without config file

SZEDER Gábor (22):
      Use MOVE_ARRAY
      travis-ci: use 'set -x' for the commands under 'su' in the 32 bit Linux build
      travis-ci: use 'set -e' in the 32 bit Linux build job
      travis-ci: don't repeat the path of the cache directory
      travis-ci: don't run the test suite as root in the 32 bit Linux build
      travis-ci: don't fail if user already exists on 32 bit Linux build job
      t6300-for-each-ref: fix "more than one quoting style" tests
      Makefile: generate Git(3pm) as dependency of the 'doc' and 'man' targets
      t: prevent '-x' tracing from interfering with test helpers' stderr
      t: add means to disable '-x' tracing for individual test scripts
      t1507-rev-parse-upstream: don't check the stderr of a shell function
      t5536: simplify checking of messages output to stderr
      t3030-merge-recursive: don't check the stderr of a subshell
      t5500-fetch-pack: don't check the stderr of a subshell
      t5526: use $TRASH_DIRECTORY to specify the path of GIT_TRACE log file
      t5570-git-daemon: don't check the stderr of a subshell
      t9903-bash-prompt: don't check the stderr of __git_ps1()
      t1510-repo-setup: mark as untraceable with '-x'
      t/README: add a note about don't saving stderr of compound commands
      travis-ci: run tests with '-x' tracing
      t9400-git-cvsserver-server: don't rely on the output of 'test_cmp'
      t9402-git-cvsserver-refs: don't check the stderr of a subshell

Stefan Beller (9):
      diff.h: make pickaxe_opts an unsigned bit field
      diff: migrate diff_flags.pickaxe_ignore_case to a pickaxe_opts bit
      diff: introduce DIFF_PICKAXE_KINDS_MASK
      diffcore: add a pickaxe option to find a specific blob
      diff: properly error out when combining multiple pickaxe options
      diff: use HAS_MULTI_BITS instead of counting bits manually
      builtin/pull: respect verbosity settings in submodules
      send-email: error out when relogin delay is missing
      color.h: document and modernize header

Stephen R Guglielmo (1):
      subtree: fix add and pull for GPG-signed commits

Tatyana Krasnukha (1):
      apply: handle Subversion diffs with /dev/null gracefully

Thomas Gummerer (1):
      reset --hard: make use of the pretty machinery

Thomas Levesque (1):
      userdiff.c: add C# async keyword in diff pattern

Todd Zullinger (2):
      Makefile: remove *.spec from clean target
      Makefile: add NO_PERL_CPAN_FALLBACKS knob

Torsten Bögershausen (1):
      convert_to_git(): safe_crlf/checksafe becomes int conv_flags

brian m. carlson (13):
      hash: move SHA-1 macros to hash.h
      hash: create union for hash context allocation
      builtin/index-pack: improve hash function abstraction
      builtin/unpack-objects: switch uses of SHA-1 to the_hash_algo
      sha1_file: switch uses of SHA-1 to the_hash_algo
      fast-import: switch various uses of SHA-1 to the_hash_algo
      pack-check: convert various uses of SHA-1 to abstract forms
      pack-write: switch various SHA-1 values to abstract forms
      read-cache: abstract away uses of SHA-1
      csum-file: rename sha1file to hashfile
      csum-file: abstract uses of SHA-1
      bulk-checkin: abstract SHA-1 usage
      hash: update obsolete reference to SHA1_HEADER

Ævar Arnfjörð Bjarmason (49):
      Makefile: don't error out under DC_SHA1_EXTERNAL if DC_SHA1_SUBMODULE=auto
      Makefile: under "make dist", include the sha1collisiondetection submodule
      sha1dc_git.h: re-arrange an ifdef chain for a subsequent change
      Makefile: replace perl/Makefile.PL with simple make rules
      perl: avoid *.pmc and fix Error.pm further
      status: add a failing test showing a core.untrackedCache bug
      wildmatch test: indent with tabs, not spaces
      wildmatch test: use more standard shell style
      wildmatch test: don't try to vertically align our output
      wildmatch test: use a paranoia pattern from nul_match()
      wildmatch test: remove dead fnmatch() test code
      wildmatch test: use test_must_fail, not ! for test-wildmatch
      wildmatch test: perform all tests under all wildmatch() modes
      wildmatch test: create & test files on disk in addition to in-memory
      test-lib: add an EXPENSIVE_ON_WINDOWS prerequisite
      wildmatch test: mark test as EXPENSIVE_ON_WINDOWS
      fetch: don't redundantly NULL something calloc() gave us
      fetch: trivially refactor assignment to ref_nr
      fetch: stop accessing "remote" variable indirectly
      remote: add a macro for "refs/tags/*:refs/tags/*"
      fetch tests: refactor in preparation for testing tag pruning
      fetch tests: re-arrange arguments for future readability
      fetch tests: add a tag to be deleted to the pruning tests
      fetch tests: test --prune and refspec interaction
      fetch tests: double quote a variable for interpolation
      fetch tests: expand case/esac for later change
      fetch tests: fetch <url> <spec> as well as fetch [<remote>]
      git fetch doc: add a new section to explain the ins & outs of pruning
      git remote doc: correct dangerous lies about what prune does
      git-fetch & config doc: link to the new PRUNING section
      fetch tests: add scaffolding for the new fetch.pruneTags
      fetch: add a --prune-tags option and fetch.pruneTags config
      fetch: make the --prune-tags work with <url>
      update-index doc: note a fixed bug in the untracked cache
      update-index doc: note the caveat with "could not open..."
      perl: *.pm files should not have the executable bit
      Git.pm: remove redundant "use strict" from sub-package
      Git.pm: add the "use warnings" pragma
      commit: run git gc --auto just before the post-commit hook
      gitweb: hard-depend on the Digest::MD5 5.8 module
      Git.pm: hard-depend on the File::{Temp,Spec} modules
      git-send-email: unconditionally use Net::{SMTP,Domain}
      perl: update our ancient copy of Error.pm
      perl: update our copy of Mail::Address
      perl: move CPAN loader wrappers to another namespace
      perl: generalize the Git::LoadCPAN facility
      perl: move the perl/Git/FromCPAN tree to perl/FromCPAN
      perl Git::LoadCPAN: emit better errors under NO_PERL_CPAN_FALLBACKS
      git manpage: note git-security@googlegroups.com


Version v2.16.5; changes since v2.16.4:
---------------------------------------

Jeff King (3):
      submodule--helper: use "--" to signal end of clone options
      submodule-config: ban submodule urls that start with dash
      submodule-config: ban submodule paths that start with a dash

Junio C Hamano (3):
      Git 2.14.5
      Git 2.15.3
      Git 2.16.5


Version v2.16.4; changes since v2.16.3:
---------------------------------------

Jeff King (8):
      submodule-config: verify submodule names as paths
      is_ntfs_dotgit: use a size_t for traversing string
      is_hfs_dotgit: match other .git files
      skip_prefix: add case-insensitive variant
      verify_path: drop clever fallthrough
      verify_dotfile: mention case-insensitivity in comment
      update-index: stat updated files earlier
      verify_path: disallow symlinks in .gitmodules

Johannes Schindelin (2):
      is_ntfs_dotgit: match other .git files
      is_{hfs,ntfs}_dotgitmodules: add tests

Junio C Hamano (4):
      Git 2.13.7
      Git 2.14.4
      Git 2.15.2
      Git 2.16.4


Version v2.16.3; changes since v2.16.2:
---------------------------------------

Ben Peart (1):
      fsmonitor: update documentation to remove reference to invalid config settings

Brandon Williams (1):
      oidmap: ensure map is initialized

Christian Ludwig (1):
      t9001: use existing helper in send-email test

Eric Sunshine (2):
      git-worktree.txt: fix missing ")" typo
      git-worktree.txt: fix indentation of example and text of 'add' command

Eric Wong (2):
      fsck: fix leak when traversing trees
      git-svn: control destruction order to avoid segfault

Genki Sky (1):
      test-lib.sh: unset XDG_CACHE_HOME

Jeff King (10):
      t5570: use ls-remote instead of clone for interp tests
      t/lib-git-daemon: record daemon log
      daemon: fix off-by-one in logging extended attributes
      daemon: handle NULs in extended attribute string
      t/lib-git-daemon: add network-protocol helpers
      daemon: fix length computation in newline stripping
      t0205: drop redundant test
      git-sh-i18n: check GETTEXT_POISON before USE_GETTEXT_SCHEME
      commit: drop uses of get_cached_commit_buffer()
      revision: drop --show-all option

Jonathan Tan (2):
      http: support cookie redaction when tracing
      http: support omitting data from traces

Juan F. Codagnone (1):
      mailinfo: avoid segfault when can't open files

Junio C Hamano (2):
      worktree: say that "add" takes an arbitrary commit in short-help
      Git 2.16.3

Kaartic Sivaraam (2):
      Doc/gitsubmodules: make some changes to improve readability and syntax
      Doc/git-submodule: improve readability and grammar of a sentence

Mathias Rav (1):
      files_initial_transaction_commit(): only unlock if locked

Motoki Seki (1):
      Documentation/gitsubmodules.txt: avoid non-ASCII apostrophes

Nguyễn Thái Ngọc Duy (12):
      t2203: test status output with porcelain v2 format
      Use DIFF_DETECT_RENAME for detect_rename assignments
      wt-status.c: coding style fix
      wt-status.c: catch unhandled diff status codes
      wt-status.c: rename rename-related fields in wt_status_change_data
      wt-status.c: handle worktree renames
      read-cache.c: change type of "temp" in write_shared_index()
      read-cache.c: move tempfile creation/cleanup out of write_shared_index
      diff.c: flush stdout before printing rename warnings
      read-cache: don't write index twice if we can't write shared index
      completion: fix completing merge strategies on non-C locales
      gitignore.txt: elaborate shell glob syntax

Ramsay Jones (2):
      config.mak.uname: remove SPARSE_FLAGS setting for cygwin
      Makefile: suppress a sparse warning for pack-revindex.c

Randall S. Becker (1):
      hashmap.h: remove unused variable

René Scharfe (2):
      describe: use strbuf_add_unique_abbrev() for adding short hashes
      cocci: simplify check for trivial format strings

Robert P. J. Day (2):
      t/: correct obvious typo "detahced"
      Correct mispellings of ".gitmodule" to ".gitmodules"

SZEDER Gábor (11):
      travis-ci: build Git during the 'script' phase
      t5541: add 'test_i18ngrep's missing filename parameter
      t5812: add 'test_i18ngrep's missing filename parameter
      t6022: don't run 'git merge' upstream of a pipe
      t4001: don't run 'git status' upstream of a pipe
      t5510: consolidate 'grep' and 'test_i18ngrep' patterns
      t5536: let 'test_i18ngrep' read the file without redirection
      t: move 'test_i18ncmp' and 'test_i18ngrep' to 'test-lib-functions.sh'
      t: validate 'test_i18ngrep's parameters
      t: make 'test_i18ngrep' more informative on failure
      t: document 'test_must_fail ok=<signal-name>'

Stefan Beller (5):
      t/lib-submodule-update.sh: clarify test
      t/lib-submodule-update.sh: fix test ignoring ignored files in submodules
      unpack-trees: oneway_merge to update submodules
      submodule: submodule_move_head omits old argument in forced case
      Documentation/git-status: clarify status table for porcelain mode

Stefan Moch (2):
      t7001: add test case for --dry-run
      mv: remove unneeded 'if (!show_only)'

Thomas Gummerer (3):
      read-cache: fix reading the shared index for other repos
      split-index: don't write cache tree with null oid entries
      travis: run tests with GIT_TEST_SPLIT_INDEX

Todd Zullinger (1):
      doc: mention 'git show' defaults to HEAD

Yasushi SHOJI (1):
      bisect: debug: convert struct object to object_id

brian m. carlson (1):
      docs/interpret-trailers: fix agreement error

Ævar Arnfjörð Bjarmason (2):
      commit doc: document that -c, -C, -F and --fixup with -m error
      commit: add support for --fixup <commit> -m"<extra message>"


Version v2.16.2; changes since v2.16.1:
---------------------------------------

Andreas G. Schacker (1):
      doc/read-tree: remove obsolete remark

Daniel Knittl-Frank (1):
      describe: prepend "tags/" when describing tags with embedded name

Jason Merrill (1):
      git-svn: fix svn.pushmergeinfo handling of svn+ssh usernames.

Jeff King (4):
      t5600: fix outdated comment about unborn HEAD
      t5600: modernize style
      clone: factor out dir_exists() helper
      clone: do not clean up directories we didn't create

Junio C Hamano (2):
      merge: teach -Xours/-Xtheirs to symbolic link merge
      Git 2.16.2

Nguyễn Thái Ngọc Duy (1):
      add--interactive: ignore submodule changes except HEAD

René Scharfe (9):
      commit: avoid allocation in clear_commit_marks_many()
      commit: use clear_commit_marks_many() in remove_redundant()
      ref-filter: use clear_commit_marks_many() in do_merge_filter()
      object: add clear_commit_marks_all()
      bisect: avoid using the rev_info flag leak_pending
      bundle: avoid using the rev_info flag leak_pending
      checkout: avoid using the rev_info flag leak_pending
      revision: remove the unused flag leak_pending
      commit: remove unused function clear_commit_marks_for_object_array()

Thomas Gummerer (1):
      stash: don't delete untracked files that match pathspec

Ævar Arnfjörð Bjarmason (2):
      perf: amend the grep tests to test grep.threads
      cat-file doc: document that -e will return some output


Version v2.16.1; changes since v2.16.0:
---------------------------------------

Eric Sunshine (1):
      t5601-clone: test case-conflicting files on case-insensitive filesystem

Junio C Hamano (1):
      Git 2.16.1

brian m. carlson (1):
      repository: pre-initialize hash algo pointer


Version v2.16.0; changes since v2.16.0-rc2:
-------------------------------------------

Alexander Shopov (2):
      l10n: bg.po: Updated Bulgarian translation (3284t)
      l10n: bg.po: Updated Bulgarian translation (3288t)

Changwoo Ryu (2):
      l10n: ko.po: Update Korean translation
      l10n: TEAMS: Add ko team members

Christopher Díaz Riveros (3):
      l10n: Update Spanish translation
      l10n: es.po: Update Spanish Translation v2.16.0
      l10n: es.po: Spanish translation 2.16.0 round 2

Dimitriy Ryazantcev (1):
      l10n: ru.po: update Russian translation

Fangyi Zhou (2):
      l10n: zh_CN Fix typo
      l10n: zh_CN translate parameter name

Jean-Noël Avila (2):
      l10n: fr.po v2.16.0 round 1
      l10n: fr.po 2.16 round 2

Jiang Xin (4):
      l10n: git.pot: v2.16.0 round 1 (64 new, 25 removed)
      l10n: git.pot: v2.16.0 round 2 (8 new, 4 removed)
      l10n: zh_CN: for git v2.16.0 l10n round 2
      l10n: TEAMS: add zh_CN team members

Jordi Mas (1):
      l10n: Fixes to Catalan translation

Junio C Hamano (1):
      Git 2.16

Louis Bettens (1):
      l10n: fr.po: "worktree list" mistranslated as prune

Peter Krefting (2):
      l10n: sv.po: Update Swedish translation (3284t0f0u)
      l10n: sv.po: Update Swedish translation (3288t0f0u)

Ralf Thielow (2):
      l10n: de.po: improve messages when a branch starts to track another ref
      l10n: de.po: translate 72 new messages

Robert Abel (1):
      l10n: fixes to German translation

SZEDER Gábor (1):
      RelNotes: minor typofix

Trần Ngọc Quân (1):
      l10n: vi.po(3288t): Updated Vietnamese translation for v2.16.0 round 2


Version v2.16.0-rc2; changes since v2.16.0-rc1:
-----------------------------------------------

Beat Bolli (1):
      t3900: add some more quotes

Jeff King (1):
      docs/diff-options: clarify scope of diff-filter types

Johannes Schindelin (8):
      Allow the test suite to pass in a directory whose name contains spaces
      t0302 & t3900: add forgotten quotes
      rebase -p: fix quoting when calling `git merge`
      git gui: fix staging a second line to a 1-line file
      git-gui: avoid exception upon Ctrl+T in an empty list
      git-gui: fix exception when trying to stage with empty file list
      git-gui: allow Ctrl+T to toggle multiple paths
      mingw: handle GITPERLLIB in t0021 in a Windows-compatible way

Junio C Hamano (3):
      merge-recursive: do not look at the index during recursive merge
      RelNotes update before -rc2
      Git 2.16-rc2

Ralf Thielow (1):
      Documentation/git-worktree.txt: add missing `

SZEDER Gábor (9):
      travis-ci: fine tune the use of 'set -x' in 'ci/*' scripts
      travis-ci: don't install default addon packages for the 32 bit Linux build
      travis-ci: save prove state for the 32 bit Linux build
      travis-ci: only print test failures if there are test results available
      travis-ci: print the "tip of branch is exactly at tag" message in color
      travis-ci: create the cache directory early in the build process
      travis-ci: record and skip successfully built trees
      travis-ci: don't store P4 and Git LFS in the working tree
      travis-ci: check that all build artifacts are .gitignore-d

Thomas Gummerer (1):
      oidset: don't return value from oidset_init

Todd Zullinger (2):
      doc/SubmittingPatches: improve text formatting
      http: fix v1 protocol tests with apache httpd < 2.4

Ævar Arnfjörð Bjarmason (2):
      Makefile: NO_OPENSSL=1 should no longer imply BLK_SHA1=1
      bisect: fix a regression causing a segfault


Version v2.16.0-rc1; changes since v2.16.0-rc0:
-----------------------------------------------

Dave Borowitz (1):
      config.txt: document behavior of backslashes in subsections

Elijah Newren (3):
      t6044: recursive can silently incorporate dirty changes in a merge
      move index_has_changes() from builtin/am.c to merge.c for reuse
      merge-recursive: avoid incorporating uncommitted changes in a merge

Jeff King (4):
      test-lib: silence "-x" cleanup under bash
      t5615: avoid re-using descriptor 4
      test-lib: make "-x" work with "--verbose-log"
      t/Makefile: introduce TEST_SHELL_PATH

Johannes Schindelin (5):
      rebase: do not continue when the todo list generation failed
      sequencer: strip bogus LF at end of error messages
      sequencer: remove superfluous conditional
      sequencer: report when noop has an argument
      sequencer: do not invent whitespace when transforming OIDs

Julien Dusser (1):
      strbuf: fix urlencode format string on signed char

Junio C Hamano (1):
      Git 2.16-rc1

Luke Diamand (1):
      git-p4: update multiple shelved change lists

René Scharfe (2):
      http: use internal argv_array of struct child_process
      send-pack: use internal argv_array of struct child_process

Stefan Beller (1):
      t/helper/test-lazy-name-hash: fix compilation

Torsten Bögershausen (1):
      check-non-portable-shell.pl: `wc -l` may have leading WS


Version v2.16.0-rc0; changes since v2.15.3:
-------------------------------------------

Albert Astals Cid (1):
      completion: add --autostash and --no-autostash to pull

Alex Vandiver (7):
      fsmonitor: read entirety of watchman output
      fsmonitor: set the PWD to the top of the working tree
      fsmonitor: don't bother pretty-printing JSON from watchman
      fsmonitor: document GIT_TRACE_FSMONITOR
      fsmonitor: delay updating state until after split index is merged
      fsmonitor: read from getcwd(), not the PWD environment variable
      fsmonitor: store fsmonitor bitmap before splitting index

Anders Kaseorg (1):
      git-gui: sort entries in optimized tclIndex

Andrey Okoshkin (1):
      merge-recursive: check GIT_MERGE_VERBOSITY only once

Ann T Ropea (7):
      Documentation: revisions: fix typo: "three dot" ---> "three-dot" (in line with "two-dot").
      Documentation: user-manual: limit usage of ellipsis
      print_sha1_ellipsis: introduce helper
      checkout: describe_detached_head: remove ellipsis after committish
      t4013: prepare for upcoming "diff --raw --abbrev" output format change
      diff: diff_aligned_abbrev: remove ellipsis after abbreviated SHA-1 value
      t4013: test new output from diff --abbrev --raw

Antoine Beaupré (6):
      remote-mediawiki: limit filenames to legal
      remote-mediawiki: show known namespace choices on failure
      remote-mediawiki: skip virtual namespaces
      remote-mediawiki: support fetching from (Main) namespace
      remote-mediawiki: process namespaces in order
      remote-mediawiki: show progress while fetching namespaces

Beat Bolli (1):
      contrib/git-jump: allow to configure the grep command

Ben Peart (16):
      bswap: add 64 bit endianness helper get_be64
      preload-index: add override to enable testing preload-index
      update-index: add a new --force-write-index option
      fsmonitor: teach git to optionally utilize a file system monitor to speed up detecting new or changed files.
      fsmonitor: add documentation for the fsmonitor extension.
      ls-files: Add support in ls-files to display the fsmonitor valid bit
      update-index: add fsmonitor support to update-index
      fsmonitor: add a test tool to dump the index extension
      split-index: disable the fsmonitor extension when running the split index test
      fsmonitor: add test cases for fsmonitor extension
      fsmonitor: add a sample integration script for Watchman
      fsmonitor: add a performance test
      fsmonitor: MINGW support for watchman integration
      fsmonitor: preserve utf8 filenames in fsmonitor-watchman log
      read_index_from(): speed index loading by skipping verification of the entry order
      fsmonitor: simplify determining the git worktree under Windows

Brandon Williams (23):
      pkt-line: add packet_write function
      protocol: introduce protocol extension mechanisms
      daemon: recognize hidden request arguments
      upload-pack, receive-pack: introduce protocol version 1
      connect: teach client to recognize v1 server response
      connect: tell server that the client understands v1
      http: tell server that the client understands v1
      i5700: add interop test for protocol transition
      ssh: introduce a 'simple' ssh variant
      add, reset: use DIFF_OPT_SET macro to set a diff flag
      diff: convert flags to be stored in bitfields
      diff: add flag to indicate textconv was set via cmdline
      diff: remove touched flags
      diff: remove DIFF_OPT_TST macro
      diff: remove DIFF_OPT_SET macro
      diff: remove DIFF_OPT_CLR macro
      diff: make struct diff_flags members lowercase
      pathspec: only match across submodule boundaries when requested
      diff-tree: read the index so attribute checks work in bare repositories
      submodule: convert stage_updated_gitmodules to take a struct index_state
      submodule: used correct index in is_staging_gitmodules_ok
      submodule: convert get_next_submodule to not rely on the_index
      path: document path functions

Christian Couder (24):
      perf/run: add '--config' option to the 'run' script
      perf/run: add get_var_from_env_or_config()
      perf/run: add GIT_PERF_DIRS_OR_REVS
      perf/run: add calls to get_var_from_env_or_config()
      perf/run: add get_subsections()
      perf/run: update get_var_from_env_or_config() for subsections
      perf/run: add run_subsection()
      perf/run: show name of rev being built
      perf: store subsection results in "test-results/$GIT_PERF_SUBSECTION/"
      t0021/rot13-filter: fix list comparison
      t0021/rot13-filter: refactor packet reading functions
      t0021/rot13-filter: improve 'if .. elsif .. else' style
      t0021/rot13-filter: improve error message
      t0021/rot13-filter: add packet_initialize()
      t0021/rot13-filter: refactor checking final lf
      t0021/rot13-filter: add capability functions
      Git/Packet.pm: extract parts of t0021/rot13-filter.pl for reuse
      Git/Packet: clarify that packet_required_key_val_read allows EOF
      Git/Packet.pm: use 'if' instead of 'unless'
      list-objects-filter-options: fix 'keword' typo in comment
      git-compat-util: introduce skip_to_optional_arg()
      index-pack: use skip_to_optional_arg()
      diff: use skip_to_optional_arg()
      diff: use skip_to_optional_arg_default()

Damien Marié (1):
      run-command: add hint when a hook is ignored

Daniel Bensoussan (1):
      doc: reword gitworkflows.txt for neutrality

Derrick Stolee (5):
      p4211-line-log.sh: add log --online --raw --parents perf test
      sha1_name: unroll len loop in find_unique_abbrev_r()
      sha1_name: parse less while finding common prefix
      sha1_name: minimize OID comparisons during disambiguation
      sha1_file: use strbuf_add() instead of strbuf_addf()

Elijah Newren (6):
      sequencer: warn when internal merge may be suboptimal due to renameLimit
      progress: fix progress meters when dealing with lots of work
      diff: remove silent clamp of renameLimit
      sequencer: show rename progress during cherry picks
      merge-recursive: ignore_case shouldn't reject intentional removals
      strbuf: remove unused stripspace function alias

Emily Xie (1):
      pathspec: die on empty strings as pathspec

Eric Sunshine (3):
      worktree: invoke post-checkout hook (unless --no-checkout)
      clone: support 'clone --shared' from a worktree
      version --build-options: also report host CPU

Eric Wong (1):
      git-svn: convert CRLF to LF in commit message to SVN

Florian Klink (1):
      git-send-email: honor $PATH for sendmail binary

Gennady Kupava (2):
      trace: remove trace key normalization
      trace: improve performance while category is disabled

Guillaume Castagnino (1):
      gitweb: use filetest to allow ACLs

Haaris Mehmood (1):
      config: add --expiry-date

Hans Jerry Illikainen (2):
      merge: add config option for verifySignatures
      t: add tests for pull --verify-signatures

Heiko Voigt (3):
      fetch: add test to make sure we stay backwards compatible
      implement fetching of moved submodules
      submodule: simplify decision tree whether to or not to fetch

Ingo Ruhnke (1):
      remote-mediawiki: allow fetching namespaces with spaces

J Wyman (1):
      for-each-ref: let upstream/push report the remote ref name

Jacob Keller (1):
      diff: add tests for --relative without optional prefix value

Jameson Miller (4):
      status: add option to show ignored files differently
      status: report matching ignored and normal untracked
      status: document options to show matching ignored files
      status: test ignored modes

Jean-Noël Avila (1):
      submodule--helper.c: i18n: add a missing space in message

Jeff Hostetler (9):
      dir: allow exclusions from blob in addition to file
      oidmap: add oidmap iterator methods
      oidset: add iterator methods to oidset
      list-objects: filter objects in traverse_commit_list
      rev-list: add list-objects filtering support
      pack-objects: add list-objects filtering
      list-objects-filter-options: support --no-filter
      rev-list: support --no-filter argument
      partial-clone: design doc

Jeff King (11):
      revision: quit pruning diff more quickly when possible
      git-jump: give contact instructions in the README
      p5550: factor out nonsense-pack creation
      t/perf/lib-pack: use fast-import checkpoint to create packs
      p5551: add a script to test fetch pack-dir rescans
      everything_local: use "quick" object existence check
      sha1_file: fast-path null sha1 as a missing object
      git-status.txt: mention --no-optional-locks
      progress: set default delay threshold to 100%, not 0%
      docs/pretty-formats: mention commas in %(trailers) syntax
      cvsimport: apply shell-quoting regex globally

Johannes Schindelin (4):
      for-each-ref: let upstream/push optionally report the remote name
      for-each-ref: test :remotename and :remoteref
      hashmap: adjust documentation to reflect reality
      version --build-options: report commit, too, if possible

Jonathan Nieder (10):
      ssh test: make copy_ssh_wrapper_as clean up after itself
      connect: move no_fork fallback to git_tcp_connect
      connect: split git:// setup into a separate function
      connect: split ssh command line options into separate function
      connect: split ssh option computation to its own function
      ssh: 'auto' variant to select between 'ssh' and 'simple'
      ssh: 'simple' variant does not support -4/-6
      ssh: 'simple' variant does not support --port
      connect: correct style of C-style comment
      generate-cmdlist: avoid non-deterministic output

Jonathan Tan (10):
      connect: in ref advertisement, shallows are last
      Documentation: document Extra Parameters
      Tests: clean up and document submodule helpers
      Tests: clean up submodule recursive helpers
      diff: support anchoring line(s)
      diffcore-rename: make diff-tree -l0 mean -l<large>
      decorate: clean up and document API
      transport: remove unused "push" in vtable
      clone, fetch: remove redundant transport check
      transport: make transport vtable more private

Junio C Hamano (26):
      t0027: do not use an empty string as a pathspec element
      describe: do not use cmd_*() as a subroutine
      merge-ours: do not use cmd_*() as a subroutine
      branch: streamline "attr_only" handling in validate_new_branchname()
      branch: split validate_new_branchname() into two
      xdiff: reassign xpparm_t.flags bits
      The first batch for 2.16
      RelNotes: the second batch post 2.15 comes
      diff: --ignore-cr-at-eol
      RelNotes: the third batch for 2.16
      branch: correctly reject refs/heads/{-dash,HEAD}
      RelNotes: the fourth batch for 2.16
      RelNotes: the fifth batch for 2.16
      hooks doc: clarify when receive-pack invokes its hooks
      RelNotes: the sixth batch for 2.16
      RelNotes: the seventh batch
      t2020: test variations that matter
      RelNotes: the eighth batch
      diff: use skip_to_optional_arg_default() in parsing --relative
      t4045: reindent to make helpers readable
      RelNotes: the ninth batch
      RelNotes: the tenth batch
      t5573, t7612: clean up after unexpected success of 'pull' and 'merge'
      sequencer.c: drop 'const' from function return type
      RelNotes: the eleventh batch
      Git 2.16-rc0

Kaartic Sivaraam (11):
      builtin/branch: remove redundant check for HEAD
      git-rebase: clean up dashed-usages in messages
      Doc/checkout: checking out using @{-N} can lead to detached state
      branch: improve documentation and naming of create_branch() parameters
      branch: group related arguments of create_branch()
      branch: update warning message shown when copying a misnamed branch
      builtin/branch: strip refs/heads/ using skip_prefix
      Doc/check-ref-format: clarify information about @{-N} syntax
      rebase: consistently use branch_name variable
      rebase: distinguish user input by quoting it
      rebase: rebasing can also be done when HEAD is detached

Kevin (1):
      remote-mediawiki: add namespace support

Lars Schneider (3):
      refactor "dumb" terminal determination
      progress: drop delay-threshold code
      launch_editor(): indicate that Git waits for user input

Liam Beguin (9):
      Documentation: move rebase.* configs to new file
      Documentation: use preferred name for the 'todo list' script
      rebase -i: set commit to null in exec commands
      rebase -i: refactor transform_todo_ids
      rebase -i: replace reference to sha1 with oid
      rebase -i: update functions to use a flags parameter
      rebase -i -x: add exec commands via the rebase--helper
      rebase -i: learn to abbreviate command names
      t3404: add test case for abbreviated commands

Marius Paliga (1):
      builtin/push.c: add push.pushOption config

Martin Ågren (15):
      sha1_file: do not leak `lock_file`
      treewide: prefer lockfiles on the stack
      lockfile: fix documentation on `close_lock_file_gently()`
      tempfile: fix documentation on `delete_tempfile()`
      checkout-index: simplify locking logic
      cache-tree: simplify locking logic
      apply: move lockfile into `apply_state`
      apply: remove `newfd` from `struct apply_state`
      cache.h: document `write_locked_index()`
      read-cache: drop explicit `CLOSE_LOCK`-flag
      read-cache: leave lock in right state in `write_locked_index()`
      read_cache: roll back lock in `update_index_if_able()`
      t7006: add tests for how git branch paginates
      branch: respect `pager.branch` in list-mode only
      branch: change default of `pager.branch` to "on"

Michael Haggerty (10):
      t0000: check whether the shell supports the "local" keyword
      files_transaction_prepare(): don't leak flags to packed transaction
      prune_ref(): call `ref_transaction_add_update()` directly
      ref_transaction_update(): die on disallowed flags
      ref_transaction_add_update(): remove a check
      refs: tidy up and adjust visibility of the `ref_update` flags
      refs: rename constant `REF_NODEREF` to `REF_NO_DEREF`
      refs: rename constant `REF_ISPRUNING` to `REF_IS_PRUNING`
      write_packed_entry(): take `object_id` arguments
      refs: update some more docs to use "oid" rather than "sha1"

Nicolas Morey-Chaisemartin (1):
      imap-send: URI encode server folder

Olga Telezhnaya (2):
      format: create pretty.h file
      format: create docs for pretty.h

Phil Hord (2):
      doc: prefer 'stash push' over 'stash save'
      stash: learn to parse -m/--message like commit does

Pranit Bauva (6):
      bisect--helper: use OPT_CMDMODE instead of OPT_BOOL
      bisect--helper: rewrite `check_term_format` shell function in C
      bisect--helper: `write_terms` shell function in C
      bisect--helper: `bisect_clean_state` shell function in C
      t6030: explicitly test for bisection cleanup
      bisect--helper: `is_expected_rev` & `check_expected_revs` shell function in C

Prathamesh Chavan (3):
      submodule--helper: introduce get_submodule_displaypath()
      submodule--helper: introduce for_each_listed_submodule()
      submodule: port submodule subcommand 'status' from shell to C

Rafael Ascensão (1):
      log: add option to choose which refs to decorate

Ramsay Jones (1):
      repository: fix a sparse 'using integer as NULL pointer' warning

Randall S. Becker (1):
      install-doc-quick: allow specifying what ref to install

Rasmus Villemoes (2):
      Documentation/config: add sendemail.tocmd to list preceding "See git-send-email(1)"
      completion: add git config sendemail.tocmd

René Scharfe (14):
      notes: move hex_to_bytes() to hex.c and export it
      http-push: use hex_to_bytes()
      sha1_file: use hex_to_bytes()
      t4051: add test for comments preceding function lines
      xdiff: factor out is_func_rec()
      xdiff: show non-empty lines before functions with -W
      t7810: improve check of -W with user-defined function lines
      grep: update boundary variable for pre-context
      grep: show non-empty lines before functions with -W
      am: release strbuf after use in split_mail_mbox()
      fmt-merge-msg: avoid leaking strbuf in shortlog()
      strbuf: release memory on read error in strbuf_read_once()
      transport-helper: plug strbuf and string_list leaks
      p7519: improve check for prerequisite WATCHMAN

Robert Abel (2):
      git-prompt: make __git_eread intended use explicit
      git-prompt: fix reading files with windows line endings

Robert P. J. Day (4):
      bisect: mention "view" as an alternative to "visualize"
      doc: add missing "-n" (dry-run) option to reflog man page
      prune: add "--progress" to man page and usage msg
      notes: correct 'git notes prune' options to '[-n] [-v]'

SZEDER Gábor (5):
      setup.c: fix comment about order of .git directory discovery
      travis-ci: introduce a $jobname variable for 'ci/*' scripts
      travis-ci: move setting environment variables to 'ci/lib-travisci.sh'
      travis-ci: set GIT_TEST_HTTPD in 'ci/lib-travisci.sh'
      travis-ci: use 'set -x' in 'ci/*' scripts for extra tracing output

Simon Ruderich (1):
      config: document default value of http.sslVerify

Stefan Beller (11):
      recursive submodules: detach HEAD from new state
      Documentation/checkout: clarify submodule HEADs to be detached
      t6120: fix typo in test name
      list-objects.c: factor out traverse_trees_and_blobs
      revision.h: introduce blob/tree walking in order of the commits
      builtin/describe.c: rename `oid` to avoid variable shadowing
      builtin/describe.c: print debug statements earlier
      builtin/describe.c: factor out describe_commit
      Documentation/git-clone: improve description for submodule recursing
      t/helper: ignore everything but sources
      builtin/describe.c: describe a blob

Steffen Prohaska (1):
      doc: Mention info/attributes in gitrepository-layout

Stephan Beyer (1):
      bisect run: die if no command is given

Thomas Gummerer (11):
      stash: replace "git stash save" with "git stash push" in the documentation
      stash: mark "git stash save" deprecated in the man page
      stash: remove now superfluos help for "stash push"
      checkout: factor out functions to new lib file
      worktree: add can be created from any commit-ish
      worktree: add --[no-]track option to the add subcommand
      worktree: make add <path> <branch> dwim
      t/README: remove mention of adding copyright notices
      t/README: document test_cmp_rev
      worktree: add --guess-remote flag to add subcommand
      add worktree.guessRemote config option

Todd Zullinger (4):
      branch doc: remove --set-upstream from synopsis
      t/lib-git-svn: cleanup inconsistent tab/space usage
      t/lib-git-svn.sh: improve svnserve tests with parallel make test
      RelNotes: minor typo fixes in 2.16.0 draft

Torsten Bögershausen (3):
      add: introduce "--renormalize"
      convert: tighten the safe autocrlf handling
      t0027: Adapt the new MIX tests to Windows

W. Trevor King (1):
      pull: pass --signoff/--no-signoff to "git merge"

Wei Shuyu (1):
      http: support CURLPROXY_HTTPS

brian m. carlson (29):
      walker: convert to struct object_id
      refs/files-backend: convert struct ref_to_prune to object_id
      refs: convert delete_ref and refs_delete_ref to struct object_id
      refs: convert update_ref and refs_update_ref to use struct object_id
      refs: prevent accidental NULL dereference in write_pseudoref
      refs: update ref transactions to use struct object_id
      Convert check_connected to use struct object_id
      refs: convert resolve_refdup and refs_resolve_refdup to struct object_id
      refs: convert read_ref and read_ref_full to object_id
      refs: convert dwim_ref and expand_ref to struct object_id
      builtin/reflog: convert remaining unsigned char uses to object_id
      refs: convert dwim_log to struct object_id
      pack-bitmap: convert traverse_bitmap_commit_list to object_id
      builtin/pack-objects: convert to struct object_id
      refs: convert peel_ref to struct object_id
      refs: convert read_ref_at to struct object_id
      refs: convert reflog_expire parameter to struct object_id
      sha1_file: convert index_path and index_fd to struct object_id
      Convert remaining callers of resolve_gitlink_ref to object_id
      refs: convert resolve_gitlink_ref to struct object_id
      worktree: convert struct worktree to object_id
      refs: convert resolve_ref_unsafe to struct object_id
      refs: convert peel_object to struct object_id
      refs: convert read_raw_ref backends to struct object_id
      refs/files-backend: convert static functions to object_id
      setup: expose enumerated repo info
      Add structure representing hash algorithm
      Integrate hash algorithm support with repo setup
      Switch empty tree and blob lookups to use hash abstraction

Ævar Arnfjörð Bjarmason (2):
      test-lib: add LIBPCRE1 & LIBPCRE2 prerequisites
      grep: fix segfault under -P + PCRE2 <=10.30 + (*NO_JIT)

Łukasz Stelmach (1):
      git-gui: prevent double UTF-8 conversion


Version v2.15.3; changes since v2.15.2:
---------------------------------------

Jeff King (3):
      submodule--helper: use "--" to signal end of clone options
      submodule-config: ban submodule urls that start with dash
      submodule-config: ban submodule paths that start with a dash

Junio C Hamano (2):
      Git 2.14.5
      Git 2.15.3


Version v2.15.2; changes since v2.15.1:
---------------------------------------

Elijah Newren (1):
      merge-recursive: handle addition of submodule on our side of history

Eric Wong (1):
      rebase: use mboxrd format to avoid split errors

Jeff King (8):
      submodule-config: verify submodule names as paths
      is_ntfs_dotgit: use a size_t for traversing string
      is_hfs_dotgit: match other .git files
      skip_prefix: add case-insensitive variant
      verify_path: drop clever fallthrough
      verify_dotfile: mention case-insensitivity in comment
      update-index: stat updated files earlier
      verify_path: disallow symlinks in .gitmodules

Johannes Schindelin (2):
      is_ntfs_dotgit: match other .git files
      is_{hfs,ntfs}_dotgitmodules: add tests

Junio C Hamano (5):
      merge-base --fork-point doc: clarify the example and failure modes
      Prepare for 2.15.2
      Git 2.13.7
      Git 2.14.4
      Git 2.15.2

Michael Haggerty (2):
      t1409: check that `packed-refs` is not rewritten unnecessarily
      files-backend: don't rewrite the `packed-refs` file unnecessarily

Phillip Wood (2):
      config: avoid "write_in_full(fd, buf, len) != len" pattern
      sequencer: reschedule pick if index can't be locked

René Scharfe (1):
      apply: update line lengths for --inaccurate-eof

Stefan Beller (1):
      t/3512: demonstrate unrelated submodule/file conflict as cherry-pick failure

Todd Zullinger (4):
      t/lib-gpg: fix gpgconf stderr redirect to /dev/null
      rebase: fix stderr redirect in apply_autostash()
      notes: send "Automatic notes merge failed" messages to stderr
      completion: add '--copy' option to 'git branch'

Wei Shuyu (1):
      pull: pass -4/-6 option to 'git fetch'

brian m. carlson (2):
      Documentation: enable compat-mode for Asciidoctor
      Documentation: convert SubmittingPatches to AsciiDoc


Version v2.15.1; changes since v2.15.0:
---------------------------------------

Adam Dinwoodie (3):
      t5580: add Cygwin support
      rebase -i: fix comment typo
      doc/SubmittingPatches: correct subject guidance

Andrey Okoshkin (2):
      commit: check result of resolve_ref_unsafe
      diff: fix lstat() error handling in diff_populate_filespec()

Brandon Williams (1):
      wt-status: actually ignore submodules when requested

Carlos Martín Nieto (1):
      diff: --indent-heuristic is no longer experimental

Charles Bailey (2):
      t4201: make use of abbreviation in the test more robust
      grep: fix NO_LIBPCRE1_JIT to fully disable JIT

Dennis Kaarsemaker (1):
      credential-libsecret: unlock locked secrets

Jacob Keller (1):
      sequencer: pass absolute GIT_DIR to exec commands

Jakub Bereżański (2):
      t0302: check helper can handle empty credentials
      wincred: handle empty username/password correctly

Jean Carlo Machado (1):
      fix typos in 2.15.0 release notes

Jeff King (11):
      t4015: refactor --color-moved whitespace test
      t4015: check "negative" case for "-w --color-moved"
      t4015: test the output of "diff --color-moved -b"
      diff: fix whitespace-skipping with --color-moved
      diff: handle NULs in get_string_hash()
      test-ref-store: avoid passing NULL to printf
      remote: handle broken symrefs
      log: handle broken HEAD in decoration check
      worktree: handle broken symrefs in find_shared_symref()
      setup: avoid double slashes when looking for HEAD
      link_alt_odb_entries: make empty input a noop

Johannes Schindelin (5):
      status: do not get confused by submodules in excluded directories
      mingw: include the full version information in the resources
      mingw: add experimental feature to redirect standard handles
      mingw: optionally redirect stderr/stdout via the same handle
      mingw: document the standard handle redirection

Junio C Hamano (9):
      t5601: rm the target file of cp that could still be executing
      check-ref-format --branch: do not expand @{...} outside repository
      check-ref-format --branch: strip refs/heads/ using skip_prefix
      check-ref-format doc: --branch validates and expands <branch>
      column: do not include pager.c
      Start preparation for 2.15.1
      Almost ready for 2.15.1
      A bit more fixes for 2.15.1
      Git 2.15.1

Kaartic Sivaraam (1):
      mailmap: use Kaartic Sivaraam's new address

Kevin Daudt (1):
      column: show auto columns when pager is active

Martin Ågren (7):
      grep: take the read-lock when adding a submodule
      bisect: change calling-convention of `find_bisection()`
      bisect: fix memory leak in `find_bisection()`
      bisect: fix off-by-one error in `best_bisection_sorted()`
      bisect: fix memory leak when returning best element
      builtin/merge-base: free commit lists
      reduce_heads: fix memory leaks

René Scharfe (6):
      sequencer: factor out rewrite_file()
      sequencer: use O_TRUNC to truncate files
      imap-send: handle NULL return of next_arg()
      imap-send: handle missing response codes gracefully
      apply: avoid out-of-bounds access in fuzzy_matchlines()
      config: flip return value of write_section()

SZEDER Gábor (2):
      travis-ci: fix running P4 and Git LFS tests in Linux build jobs
      travis-ci: don't build Git for the static analysis job

Simon Ruderich (2):
      sequencer.c: check return value of close() in rewrite_file()
      wrapper.c: consistently quote filenames in error messages

Stefan Beller (3):
      xdiff-interface: export comparing and hashing strings
      diff.c: get rid of duplicate implementation
      config: document blame configuration

Thomas Braun (1):
      completion: add remaining flags to checkout

Todd Zullinger (3):
      Replace Free Software Foundation address in license notices
      Replace Free Software Foundation address in license notices
      RelNotes: minor typo fixes in 2.15.1 draft


Version v2.15.0; changes since v2.15.0-rc2:
-------------------------------------------

Alexander Shopov (1):
      l10n: bg.po: Updated Bulgarian translation (3245t)

Andre Hinrichs (1):
      l10n: de.po: fix typos

Andrey Okoshkin (1):
      path.c: use xmalloc() in add_to_trie()

Changwoo Ryu (1):
      l10n: ko.po: Update Korean translation

Christopher Díaz (3):
      l10n: es.po: initial Spanish version git 2.14.0
      l10n: es.po: spanish added to TEAMS
      l10n: es.po: Update translation v2.15.0 round 1

Christopher Díaz Riveros (1):
      l10n: es.po: v2.15.0 round 2

Dimitriy Ryazantcev (2):
      l10n: ru.po: update Russian translation
      l10n: ru.po: update Russian translation

Jean-Noel Avila (1):
      l10n: fr.po fix some mistakes

Jean-Noël Avila (1):
      l10n: fr.po: v2.15.0 round 2

Jiang Xin (3):
      l10n: git.pot: v2.15.0 round 1 (68 new, 36 removed)
      l10n: git.pot: v2.15.0 round 2 (2 new, 2 removed)
      l10n: zh_CN: for git v2.15.0 l10n round 2

Jordi Mas (2):
      l10n: Update Catalan translation
      l10n: Update Catalan translation

Junio C Hamano (3):
      Git 2.14.3
      Hopefully final batch before 2.15
      Git 2.15

Michael Haggerty (2):
      t1404: add a bunch of tests of D/F conflicts
      files_transaction_prepare(): fix handling of ref lock failure

Nathan Payre (1):
      config doc: clarify "git config --path" example

Nicolas Cornu (1):
      l10n: fr.po change translation of "First, rewinding"

Peter Krefting (2):
      l10n: sv.po: Update Swedish translation (3245t0f0u)
      l10n: sv.po: Update Swedish translation (3245t0f0u)

Ralf Thielow (1):
      l10n: de.po: translate 70 new messages

Ray Chen (1):
      l10n: zh_CN: review for git v2.15.0 l10n round 2

SZEDER Gábor (1):
      rev-list-options.txt: use correct directional reference

Sebastian Schuberth (1):
      docs: fix formatting of rev-parse's --show-superproject-working-tree

Trần Ngọc Quân (2):
      l10n: vi.po(3245t): Updated Vietnamese translation for v2.15.0
      l10n: vi.po(3245t): Updated Vietnamese translation for v2.15.0 round 2


Version v2.15.0-rc2; changes since v2.15.0-rc1:
-----------------------------------------------

David Glasser (1):
      doc: list filter-branch subdirectory-filter first

Jeff King (5):
      diff: fix infinite loop with --color-moved --ignore-space-change
      Revert "color: make "always" the same as "auto" in config"
      Revert "t6006: drop "always" color config tests"
      Revert "color: check color.ui in git_default_config()"
      tag: respect color.ui config

Junio C Hamano (7):
      checkout doc: clarify command line args for "checkout paths" mode
      Crawling towards -rc2
      fetch doc: src side of refspec could be full SHA-1
      Preparing for rc2 continues
      branch doc: sprinkle a few commas for readability
      Prepare for 2.14.3
      Git 2.15-rc2

Ralf Thielow (2):
      sequencer.c: fix and unify error messages in rearrange_squash()
      sequencer.c: unify an error message

W. Trevor King (1):
      Documentation/merge-options.txt: describe -S/--gpg-sign for 'pull'


Version v2.15.0-rc1; changes since v2.15.0-rc0:
-----------------------------------------------

Derrick Stolee (1):
      cleanup: fix possible overflow errors in binary search

Jean-Noël Avila (1):
      i18n: add a missing space in message

Jeff King (19):
      test-terminal: set TERM=vt100
      t4015: prefer --color to -c color.diff=always
      t3701: use test-terminal to collect color output
      t7508: use test_terminal for color output
      t7502: use diff.noprefix for --verbose test
      t6006: drop "always" color config tests
      t3203: drop "always" color test
      t3205: use --color instead of color.branch=always
      provide --color option for all ref-filter users
      color: make "always" the same as "auto" in config
      t4015: use --color with --color-moved
      t7301: use test_terminal to check color
      path.c: fix uninitialized memory access
      sha1_loose_object_info: handle errors from unpack_sha1_rest
      t3308: create a real ref directory/file conflict
      refs_resolve_ref_unsafe: handle d/f conflicts for writes
      write_entry: fix leak when retrying delayed filter
      write_entry: avoid reading blobs in CE_RETRY case
      write_entry: untangle symlink and regular-file cases

Johannes Sixt (1):
      sub-process: use child_process.args instead of child_process.argv

Jonathan Nieder (2):
      technical doc: add a design doc for hash function transition
      strbuf doc: reuse after strbuf_release is fine

Jonathan Tan (1):
      oidmap: map with OID as key

Junio C Hamano (2):
      Prepare for -rc1
      Git 2.15-rc1

Kaartic Sivaraam (2):
      branch: change the error messages to be more meaningful
      setup: update error message to be more meaningful

Lars Schneider (2):
      entry.c: update cache entry only for existing files
      entry.c: check if file exists after checkout

Martin Ågren (1):
      builtin/: add UNLEAKs

Randall S. Becker (1):
      poll.c: always set revents, even if to zero

René Scharfe (3):
      test-stringlist: avoid buffer underrun when sorting nothing
      fsck: handle NULL return of lookup_blob() and lookup_tree()
      .mailmap: normalize name for René Scharfe

Stefan Beller (2):
      branch: reset instead of release a strbuf
      tests: fix diff order arguments in test_cmp

Taylor Blau (8):
      pretty.c: delimit "%(trailers)" arguments with ","
      t4205: unfold across multiple lines
      doc: 'trailers' is the preferred way to format trailers
      doc: use "`<literal>`"-style quoting for literal strings
      t6300: refactor %(trailers) tests
      ref-filter.c: use trailer_opts to format trailers
      ref-filter.c: parse trailers arguments with %(contents) atom
      ref-filter.c: pass empty-string as NULL to atom parsers

Thomas Braun (1):
      completion: add --broken and --dirty to describe

Thomas Gummerer (1):
      http-push: fix construction of hex value from path

Todd Zullinger (1):
      api-argv-array.txt: remove broken link to string-list API


Version v2.15.0-rc0; changes since v2.14.5:
-------------------------------------------

Brandon Casey (7):
      t1502: demonstrate rev-parse --parseopt option mis-parsing
      rev-parse parseopt: do not search help text for flag chars
      rev-parse parseopt: interpret any whitespace as start of help text
      git-rebase: don't ignore unexpected command line arguments
      t0040,t1502: Demonstrate parse_options bugs
      parse-options: write blank line to correct output stream
      parse-options: only insert newline in help text if needed

Brandon Williams (27):
      repo_read_index: don't discard the index
      repository: have the_repository use the_index
      cache.h: add GITMODULES_FILE macro
      config: add config_from_gitmodules
      submodule: remove submodule.fetchjobs from submodule-config parsing
      submodule: remove fetch.recursesubmodules from submodule-config parsing
      submodule: check for unstaged .gitmodules outside of config parsing
      submodule: check for unmerged .gitmodules outside of config parsing
      submodule: merge repo_read_gitmodules and gitmodules_config
      grep: recurse in-process using 'struct repository'
      t7411: check configuration parsing errors
      submodule: don't use submodule_from_name
      add, reset: ensure submodules can be added or reset
      submodule--helper: don't overlay config in remote_submodule_branch
      submodule--helper: don't overlay config in update-clone
      fetch: don't overlay config with submodule-config
      submodule: don't rely on overlayed config when setting diffopts
      unpack-trees: don't respect submodule.update
      submodule: remove submodule_config callback routine
      diff: stop allowing diff to have submodules configured in .git/config
      submodule-config: remove support for overlaying repository config
      submodule-config: move submodule-config functions to submodule-config.c
      submodule-config: lazy-load a repository's .gitmodules file
      unpack-trees: improve loading of .gitmodules
      submodule: remove gitmodules_config
      clang-format: outline the git project's coding style
      Makefile: add style build rule

Eric Blake (1):
      git-contacts: also recognise "Reported-by:"

Han-Wen Nienhuys (4):
      submodule.c: describe submodule_to_gitdir() in a new comment
      real_path: clarify return value ownership
      read_gitfile_gently: clarify return value ownership.
      string-list.h: move documentation from Documentation/api/ into header

Heiko Voigt (1):
      add test for bug in git-mv for recursive submodules

Ian Campbell (4):
      filter-branch: reset $GIT_* before cleaning up
      filter-branch: preserve and restore $GIT_AUTHOR_* and $GIT_COMMITTER_*
      filter-branch: stash away ref map in a branch
      filter-branch: use hash-object instead of mktag

Jameson Miller (1):
      Improve performance of git status --ignored

Jeff Hostetler (1):
      hashmap: add API to disable item counting when threaded

Jeff King (53):
      strbuf: use designated initializers in STRBUF_INIT
      trailer: put process_trailers() options into a struct
      interpret-trailers: add an option to show only the trailers
      interpret-trailers: add an option to show only existing trailers
      interpret-trailers: add an option to unfold values
      interpret-trailers: add --parse convenience option
      pretty: move trailer formatting to trailer.c
      t4205: refactor %(trailers) tests
      pretty: support normalization options for %(trailers)
      write_index_as_tree: cleanup tempfile on error
      setup_temporary_shallow: avoid using inactive tempfile
      setup_temporary_shallow: move tempfile struct into function
      verify_signed_buffer: prefer close_tempfile() to close()
      always check return value of close_tempfile
      tempfile: do not delete tempfile on failed close
      lockfile: do not rollback lock on failed close
      tempfile: prefer is_tempfile_active to bare access
      tempfile: handle NULL tempfile pointers gracefully
      tempfile: replace die("BUG") with BUG()
      tempfile: factor out activation
      tempfile: factor out deactivation
      tempfile: robustify cleanup handler
      tempfile: release deactivated strbufs instead of resetting
      tempfile: use list.h for linked list
      tempfile: remove deactivated list entries
      tempfile: auto-allocate tempfiles on heap
      lockfile: update lifetime requirements in documentation
      ref_lock: stop leaking lock_files
      stop leaking lock structs in some simple cases
      test-lib: --valgrind should not override --verbose-log
      test-lib: set LSAN_OPTIONS to abort by default
      add: free leaked pathspec after add_files_to_cache()
      update-index: fix cache entry leak in add_one_file()
      config: plug user_config leak
      reset: make tree counting less confusing
      reset: free allocated tree buffers
      repository: free fields before overwriting them
      set_git_dir: handle feeding gitdir to itself
      add UNLEAK annotation for reducing leak false positives
      shortlog: skip format/parse roundtrip for internal traversal
      prefix_ref_iterator: break when we leave the prefix
      revision: replace "struct cmdline_pathspec" with argv_array
      test-line-buffer: simplify command parsing
      curl_trace(): eliminate switch fallthrough
      consistently use "fallthrough" comments in switches
      files-backend: prefer "0" for write_in_full() error check
      notes-merge: drop dead zero-write code
      prefer "!=" when checking read_in_full() result
      avoid looking at errno for short read_in_full() returns
      distinguish error versus short read from read_in_full()
      worktree: use xsize_t to access file size
      worktree: check the result of read_in_full()
      git: add --no-optional-locks option

Job Snijders (1):
      gitweb: add 'raw' blob_plain link in history overview

Joel Teichroeb (3):
      stash: add a test for stash create with no files
      stash: add a test for when apply fails during stash branch
      stash: add a test for stashing in a detached state

Johannes Schindelin (12):
      t3415: verify that an empty instructionFormat is handled as before
      rebase -i: generate the script via rebase--helper
      rebase -i: remove useless indentation
      rebase -i: do not invent onelines when expanding/collapsing SHA-1s
      rebase -i: also expand/collapse the SHA-1s via the rebase--helper
      t3404: relax rebase.missingCommitsCheck tests
      rebase -i: check for missing commits in the rebase--helper
      rebase -i: skip unnecessary picks using the rebase--helper
      t3415: test fixup with wrapped oneline
      rebase -i: rearrange fixup/squash lines using the rebase--helper
      Win32: simplify loading of DLL functions
      clang-format: adjust line break penalties

Jonathan Nieder (2):
      pack: make packed_git_mru global a value instead of a pointer
      pathspec doc: parse_pathspec does not maintain references to args

Jonathan Tan (31):
      sha1_file: set whence in storage-specific info fn
      sha1_file: remove read_packed_sha1()
      diff: avoid redundantly clearing a flag
      diff: respect MIN_BLOCK_LENGTH for last block
      diff: define block by number of alphanumeric chars
      pack: move pack name-related functions
      pack: move static state variables
      pack: move pack_report()
      pack: move open_pack_index(), parse_pack_index()
      pack: move release_pack_memory()
      pack: move pack-closing functions
      pack: move use_pack()
      pack: move unuse_pack()
      pack: move add_packed_git()
      pack: move install_packed_git()
      pack: move {,re}prepare_packed_git and approximate_object_count
      pack: move unpack_object_header_buffer()
      pack: move get_size_from_delta()
      pack: move unpack_object_header()
      pack: move clear_delta_base_cache(), packed_object_info(), unpack_entry()
      pack: move nth_packed_object_{sha1,oid}
      pack: move check_pack_index_ptr(), nth_packed_object_offset()
      pack: move find_pack_entry_one(), is_pack_valid()
      pack: move find_sha1_pack()
      pack: move find_pack_entry() and make it global
      pack: move has_sha1_pack()
      pack: move has_pack_index()
      pack: move for_each_packed_object()
      Remove inadvertently added outgoing/packfile.h
      Add t/helper/test-write-cache to .gitignore
      git-compat-util: make UNLEAK less error-prone

Junio C Hamano (25):
      t1408: add a test of stale packed refs covered by loose refs
      clean.c: use designated initializer
      Start post 2.14 cycle
      The first batch of topics after the 2.14 cycle
      diff: retire sane_truncate_fn
      progress: simplify "delayed" progress API
      The second batch post 2.14
      t4200: give us a clean slate after "rerere gc" tests
      t4200: make "rerere gc" test more robust
      t4200: gather "rerere gc" together
      t4200: parameterize "rerere gc" custom expiry test
      rerere: represent time duration in timestamp_t internally
      rerere: allow approxidate in gc.rerereResolved/gc.rerereUnresolved
      The third batch post 2.14
      The fourth batch post 2.14
      The fifth batch post 2.14
      The sixth batch post 2.14
      The seventh batch post 2.14
      The eighth batch for 2.15
      branch: fix "copy" to never touch HEAD
      The ninth batch for 2.15
      The tenth batch for 2.15
      The eleventh batch for 2.15
      The twelfth batch for 2.15
      Git 2.15-rc0

Kaartic Sivaraam (10):
      hook: cleanup script
      hook: name the positional variables
      hook: add sign-off using "interpret-trailers"
      hook: add a simple first example
      hook: use correct logical variable
      t3200: cleanup cruft of a test
      builtin/branch: stop supporting the "--set-upstream" option
      branch: quote branch/ref names to improve readability
      help: change a message to be more precise
      commit-template: change a message to be more intuitive

Kevin Willford (9):
      format-patch: have progress option while generating patches
      rebase: turn on progress option by default for format-patch
      commit: skip discarding the index if there is no pre-commit hook
      perf: add test for writing the index
      read-cache: fix memory leak in do_write_index
      read-cache: avoid allocating every ondisk entry when writing
      merge-recursive: fix memory leak
      merge-recursive: remove return value from get_files_dirs
      merge-recursive: change current file dir string_lists to hashmap

Lars Schneider (1):
      convert: display progress for filtered objects that have been delayed

Martin Koegler (2):
      diff-delta: fix encoding size that would not fit in "unsigned int"
      diff-delta: do not allow delta offset truncation

Martin Ågren (20):
      Doc/git-{push,send-pack}: correct --sign= to --signed=
      t5334: document that git push --signed=1 does not work
      config: introduce git_parse_maybe_bool_text
      config: make git_{config,parse}_maybe_bool equivalent
      treewide: deprecate git_config_maybe_bool, use git_parse_maybe_bool
      parse_decoration_style: drop unused argument `var`
      doc/interpret-trailers: fix "the this" typo
      Documentation/user-manual: update outdated example output
      treewide: correct several "up-to-date" to "up to date"
      config: remove git_config_maybe_bool
      refs/files-backend: add longer-scoped copy of string to list
      refs/files-backend: fix memory leak in lock_ref_for_update
      refs/files-backend: correct return value in lock_ref_for_update
      refs/files-backend: add `refname`, not "HEAD", to list
      builtin/commit: fix memory leak in `prepare_index()`
      commit: fix memory leak in `reduce_heads()`
      leak_pending: use `object_array_clear()`, not `free()`
      object_array: use `object_array_clear()`, not `free()`
      object_array: add and use `object_array_pop()`
      pack-bitmap[-write]: use `object_array_clear()`, don't leak

Max Kirillov (1):
      describe: teach --match to handle branches and remotes

Michael Haggerty (76):
      add_packed_ref(): teach function to overwrite existing refs
      packed_ref_store: new struct
      packed_ref_store: move `packed_refs_path` here
      packed_ref_store: move `packed_refs_lock` member here
      clear_packed_ref_cache(): take a `packed_ref_store *` parameter
      validate_packed_ref_cache(): take a `packed_ref_store *` parameter
      get_packed_ref_cache(): take a `packed_ref_store *` parameter
      get_packed_refs(): take a `packed_ref_store *` parameter
      add_packed_ref(): take a `packed_ref_store *` parameter
      lock_packed_refs(): take a `packed_ref_store *` parameter
      commit_packed_refs(): take a `packed_ref_store *` parameter
      rollback_packed_refs(): take a `packed_ref_store *` parameter
      get_packed_ref(): take a `packed_ref_store *` parameter
      repack_without_refs(): take a `packed_ref_store *` parameter
      packed_peel_ref(): new function, extracted from `files_peel_ref()`
      packed_ref_store: support iteration
      packed_read_raw_ref(): new function, replacing `resolve_packed_ref()`
      packed-backend: new module for handling packed references
      packed_ref_store: make class into a subclass of `ref_store`
      commit_packed_refs(): report errors rather than dying
      commit_packed_refs(): use a staging file separate from the lockfile
      packed_refs_lock(): function renamed from lock_packed_refs()
      packed_refs_lock(): report errors via a `struct strbuf *err`
      packed_refs_unlock(), packed_refs_is_locked(): new functions
      clear_packed_ref_cache(): don't protest if the lock is held
      commit_packed_refs(): remove call to `packed_refs_unlock()`
      repack_without_refs(): don't lock or unlock the packed refs
      t3210: add some tests of bogus packed-refs file contents
      read_packed_refs(): die if `packed-refs` contains bogus data
      packed_ref_store: handle a packed-refs file that is a symlink
      files-backend: cheapen refname_available check when locking refs
      refs: retry acquiring reference locks for 100ms
      notes: make GET_NIBBLE macro more robust
      load_subtree(): remove unnecessary conditional
      load_subtree(): reduce the scope of some local variables
      load_subtree(): fix incorrect comment
      load_subtree(): separate logic for internal vs. terminal entries
      load_subtree(): check earlier whether an internal node is a tree entry
      load_subtree(): only consider blobs to be potential notes
      get_oid_hex_segment(): return 0 on success
      load_subtree(): combine some common code
      get_oid_hex_segment(): don't pad the rest of `oid`
      hex_to_bytes(): simpler replacement for `get_oid_hex_segment()`
      load_subtree(): declare some variables to be `size_t`
      load_subtree(): check that `prefix_len` is in the expected range
      packed-backend: don't adjust the reference count on lock/unlock
      struct ref_transaction: add a place for backends to store data
      packed_ref_store: implement reference transactions
      packed_delete_refs(): implement method
      files_pack_refs(): use a reference transaction to write packed refs
      prune_refs(): also free the linked list
      files_initial_transaction_commit(): use a transaction for packed refs
      t1404: demonstrate two problems with reference transactions
      files_ref_store: use a transaction to update packed refs
      packed-backend: rip out some now-unused code
      files_transaction_finish(): delete reflogs before references
      ref_iterator: keep track of whether the iterator output is ordered
      packed_ref_cache: add a backlink to the associated `packed_ref_store`
      die_unterminated_line(), die_invalid_line(): new functions
      read_packed_refs(): use mmap to read the `packed-refs` file
      read_packed_refs(): only check for a header at the top of the file
      read_packed_refs(): make parsing of the header line more robust
      read_packed_refs(): read references with minimal copying
      packed_ref_cache: remember the file-wide peeling state
      mmapped_ref_iterator: add iterator over a packed-refs file
      mmapped_ref_iterator_advance(): no peeled value for broken refs
      packed-backend.c: reorder some definitions
      packed_ref_cache: keep the `packed-refs` file mmapped if possible
      read_packed_refs(): ensure that references are ordered when read
      packed_ref_iterator_begin(): iterate using `mmapped_ref_iterator`
      packed_read_raw_ref(): read the reference from the mmapped buffer
      ref_store: implement `refs_peel_ref()` generically
      packed_ref_store: get rid of the `ref_cache` entirely
      ref_cache: remove support for storing peeled values
      mmapped_ref_iterator: inline into `packed_ref_iterator`
      packed-backend.c: rename a bunch of things and update comments

Michael J Gruber (4):
      t7004: move limited stack prereq to test-lib
      t6120: test name-rev --all and --stdin
      t6120: clean up state after breaking repo
      t6120: test describe and name-rev with deep repos

Nguyễn Thái Ngọc Duy (16):
      revision.h: new flag in struct rev_info wrt. worktree-related refs
      refs.c: use is_dir_sep() in resolve_gitlink_ref()
      revision.c: refactor add_index_objects_to_pending()
      revision.c: --indexed-objects add objects from all worktrees
      refs.c: refactor get_submodule_ref_store(), share common free block
      refs: move submodule slash stripping code to get_submodule_ref_store
      refs: add refs_head_ref()
      revision.c: use refs_for_each*() instead of for_each_*_submodule()
      refs.c: move for_each_remote_ref_submodule() to submodule.c
      refs: remove dead for_each_*_submodule()
      revision.c: --all adds HEAD from all worktrees
      files-backend: make reflog iterator go through per-worktree reflog
      revision.c: --reflog add HEAD reflog from all worktrees
      rev-list: expose and document --single-worktree
      refs.c: remove fallback-to-main-store code get_submodule_ref_store()
      refs.c: reindent get_submodule_ref_store()

Nicolas Morey-Chaisemartin (7):
      stash: clean untracked files before reset
      pull: fix cli and config option parsing order
      pull: honor submodule.recurse config option
      imap-send: return with error if curl failed
      imap-send: add wrapper to get server credentials if needed
      imap_send: setup_curl: retreive credentials if not set in config file
      imap-send: use curl by default when possible

Paolo Bonzini (4):
      trailers: export action enums and corresponding lookup functions
      trailers: introduce struct new_trailer_item
      interpret-trailers: add options for actions
      interpret-trailers: fix documentation typo

Patryk Obara (10):
      sha1_file: fix definition of null_sha1
      commit: replace the raw buffer with strbuf in read_graft_line
      commit: allocate array using object_id size
      commit: rewrite read_graft_line
      builtin/hash-object: convert to struct object_id
      read-cache: convert to struct object_id
      sha1_file: convert index_path to struct object_id
      sha1_file: convert index_fd to struct object_id
      sha1_file: convert hash_sha1_file_literally to struct object_id
      sha1_file: convert index_stream to struct object_id

Raman Gupta (1):
      contrib/rerere-train: optionally overwrite existing resolutions

Ramsay Jones (3):
      test-lib: don't use ulimit in test prerequisites on cygwin
      test-lib: use more compact expression in PIPE prerequisite
      t9010-*.sh: skip all tests if the PIPE prereq is missing

René Scharfe (49):
      tree-diff: don't access hash of NULL object_id pointer
      notes: don't access hash of NULL object_id pointer
      receive-pack: don't access hash of NULL object_id pointer
      tree-walk: convert fill_tree_descriptor() to object_id
      apply: check date of potential epoch timestamps first
      apply: remove epoch date from regex
      am: release strbufs after use in detect_patch_format()
      am: release strbuf on error return in hg_patch_to_mail()
      am: release strbuf after use in safe_to_abort()
      check-ref-format: release strbuf after use in check_ref_format_branch()
      clean: release strbuf after use in remove_dirs()
      clone: release strbuf after use in remove_junk()
      commit: release strbuf on error return in commit_tree_extended()
      connect: release strbuf on error return in git_connect()
      convert: release strbuf on error return in filter_buffer_or_fd()
      diff: release strbuf after use in diff_summary()
      diff: release strbuf after use in show_rename_copy()
      diff: release strbuf after use in show_stats()
      help: release strbuf on error return in exec_man_konqueror()
      help: release strbuf on error return in exec_man_man()
      help: release strbuf on error return in exec_woman_emacs()
      mailinfo: release strbuf after use in handle_from()
      mailinfo: release strbuf on error return in handle_boundary()
      merge: release strbuf after use in save_state()
      merge: release strbuf after use in write_merge_heads()
      notes: release strbuf after use in notes_copy_from_stdin()
      refs: release strbuf on error return in write_pseudoref()
      remote: release strbuf after use in read_remote_branches()
      remote: release strbuf after use in migrate_file()
      remote: release strbuf after use in set_url()
      send-pack: release strbuf on error return in send_pack()
      sha1_file: release strbuf on error return in index_path()
      shortlog: release strbuf after use in insert_one_record()
      sequencer: release strbuf after use in save_head()
      transport-helper: release strbuf after use in process_connect_service()
      userdiff: release strbuf after use in userdiff_get_textconv()
      utf8: release strbuf on error return in strbuf_utf8_replace()
      vcs-svn: release strbuf after use in end_revision()
      wt-status: release strbuf after use in read_rebase_todolist()
      wt-status: release strbuf after use in wt_longstatus_print_tracking()
      refs: make sha1 output parameter of refs_resolve_ref_unsafe() optional
      refs: pass NULL to refs_resolve_ref_unsafe() if hash is not needed
      refs: pass NULL to resolve_ref_unsafe() if hash is not needed
      refs: pass NULL to refs_resolve_refdup() if hash is not needed
      refs: pass NULL to resolve_refdup() if hash is not needed
      path: use strbuf_add_real_path()
      use strbuf_addstr() for adding strings to strbufs
      graph: use strbuf_addchars() to add spaces
      repository: use FREE_AND_NULL

Sahil Dua (2):
      config: create a function to format section headers
      branch: add a --copy (-c) option to go with --move (-m)

Stefan Beller (46):
      diff.c: readability fix
      diff.c: move line ending check into emit_hunk_header
      diff.c: factor out diff_flush_patch_all_file_pairs
      diff.c: introduce emit_diff_symbol
      diff.c: emit_diff_symbol learns DIFF_SYMBOL_CONTEXT_MARKER
      diff.c: emit_diff_symbol learns DIFF_SYMBOL_CONTEXT_FRAGINFO
      diff.c: emit_diff_symbol learns DIFF_SYMBOL_NO_LF_EOF
      diff.c: migrate emit_line_checked to use emit_diff_symbol
      diff.c: emit_diff_symbol learns DIFF_SYMBOL_WORDS[_PORCELAIN]
      diff.c: emit_diff_symbol learns DIFF_SYMBOL_CONTEXT_INCOMPLETE
      diff.c: emit_diff_symbol learns DIFF_SYMBOL_FILEPAIR_{PLUS, MINUS}
      diff.c: emit_diff_symbol learns DIFF_SYMBOL_HEADER
      diff.c: emit_diff_symbol learns about DIFF_SYMBOL_BINARY_FILES
      diff.c: emit_diff_symbol learns DIFF_SYMBOL_REWRITE_DIFF
      submodule.c: migrate diff output to use emit_diff_symbol
      diff.c: convert emit_binary_diff_body to use emit_diff_symbol
      diff.c: convert show_stats to use emit_diff_symbol
      diff.c: convert word diffing to use emit_diff_symbol
      diff.c: emit_diff_symbol learns about DIFF_SYMBOL_STAT_SEP
      diff.c: emit_diff_symbol learns about DIFF_SYMBOL_SUMMARY
      diff.c: buffer all output if asked to
      diff.c: color moved lines differently
      diff.c: color moved lines differently, plain mode
      diff.c: add dimming to moved line detection
      diff: document the new --color-moved setting
      attr.c: drop hashmap_cmp_fn cast
      builtin/difftool.c: drop hashmap_cmp_fn cast
      builtin/describe: drop hashmap_cmp_fn cast
      config.c: drop hashmap_cmp_fn cast
      convert/sub-process: drop cast to hashmap_cmp_fn
      patch-ids.c: drop hashmap_cmp_fn cast
      remote.c: drop hashmap_cmp_fn cast
      submodule-config.c: drop hashmap_cmp_fn cast
      name-hash.c: drop hashmap_cmp_fn cast
      t/helper/test-hashmap: use custom data instead of duplicate cmp functions
      commit: convert lookup_commit_graft to struct object_id
      tag: convert gpg_verify_tag to use struct object_id
      t1200: remove t1200-tutorial.sh
      builtin/merge: honor commit-msg hook for merges
      push, fetch: error out for submodule entries not pointing to commits
      replace-objects: evaluate replacement refs without using the object store
      Documentation/githooks: mention merge in commit-msg hook
      Documentation/config: clarify the meaning of submodule.<name>.update
      t7406: submodule.<name>.update command must not be run from .gitmodules
      diff: correct newline in summary for renamed files
      submodule: correct error message for missing commits

Stephan Beyer (1):
      clang-format: add a comment about the meaning/status of the

Takashi Iwai (2):
      sha1dc: build git plumbing code more explicitly
      sha1dc: allow building with the external sha1dc library

Thomas Gummerer (1):
      read-cache: fix index corruption with index v4

Tom G. Christensen (2):
      http: fix handling of missing CURLPROTO_*
      http: use a feature check to enable GSSAPI delegation control

William Duclot (1):
      rebase: make resolve message clearer for inexperienced users

brian m. carlson (12):
      builtin/fsck: convert remaining caller of get_sha1 to object_id
      builtin/merge-tree: convert remaining caller of get_sha1 to object_id
      submodule: convert submodule config lookup to use object_id
      remote: convert struct push_cas to struct object_id
      sequencer: convert to struct object_id
      builtin/update_ref: convert to struct object_id
      bisect: convert bisect_checkout to struct object_id
      builtin/unpack-file: convert to struct object_id
      Convert remaining callers of get_sha1 to get_oid.
      sha1_name: convert get_sha1* to get_oid*
      sha1_name: convert GET_SHA1* flags to GET_OID*
      sha1_name: convert uses of 40 to GIT_SHA1_HEXSZ

Ævar Arnfjörð Bjarmason (1):
      branch: add test for -m renaming multiple config sections

Øystein Walle (1):
      rev-parse: rev-parse: add --is-shallow-repository

Łukasz Gryglicki (1):
      merge: add a --signoff flag


Version v2.14.5; changes since v2.14.4:
---------------------------------------

Jeff King (3):
      submodule--helper: use "--" to signal end of clone options
      submodule-config: ban submodule urls that start with dash
      submodule-config: ban submodule paths that start with a dash

Junio C Hamano (1):
      Git 2.14.5


Version v2.14.4; changes since v2.14.3:
---------------------------------------

Jeff King (8):
      submodule-config: verify submodule names as paths
      is_ntfs_dotgit: use a size_t for traversing string
      is_hfs_dotgit: match other .git files
      skip_prefix: add case-insensitive variant
      verify_path: drop clever fallthrough
      verify_dotfile: mention case-insensitivity in comment
      update-index: stat updated files earlier
      verify_path: disallow symlinks in .gitmodules

Johannes Schindelin (2):
      is_ntfs_dotgit: match other .git files
      is_{hfs,ntfs}_dotgitmodules: add tests

Junio C Hamano (2):
      Git 2.13.7
      Git 2.14.4


Version v2.14.3; changes since v2.14.2:
---------------------------------------

Adam Dinwoodie (1):
      doc: correct command formatting

Ann T Ropea (1):
      request-pull: capitalise "Git" to make it a proper noun

Ben Boeckel (1):
      Documentation: mention that `eol` can change the dirty status of paths

Christian Couder (1):
      sha1-lookup: remove sha1_entry_pos() from header file

Daniel Watkins (1):
      diff-highlight: add clean target to Makefile

Eric Rannaud (1):
      fast-import: checkpoint: dump branches/tags/marks even if object_count==0

Evan Zacks (1):
      doc: fix minor typos (extra/duplicated words)

Han-Wen Nienhuys (1):
      submodule.h: typofix

Ilya Kantor (1):
      userdiff: fix HTML hunk header regexp

Jeff King (36):
      sha1_file: drop experimental GIT_USE_LOOKUP search
      config: use a static lock_file struct
      rev-parse: don't trim bisect refnames
      system_path: move RUNTIME_PREFIX to a sub-function
      git_extract_argv0_path: do nothing without RUNTIME_PREFIX
      config: avoid "write_in_full(fd, buf, len) < len" pattern
      get-tar-commit-id: check write_in_full() return against 0
      avoid "write_in_full(fd, buf, len) != len" pattern
      convert less-trivial versions of "write_in_full() != len"
      pkt-line: check write_in_full() errors against "< 0"
      notes-merge: use ssize_t for write_in_full() return value
      config: flip return value of store_write_*()
      read_pack_header: handle signed/unsigned comparison in read result
      read_info_alternates: read contents into strbuf
      read_info_alternates: warn on non-trivial errors
      cat-file: handle NULL object_context.path
      doc: put literal block delimiter around table
      validate_headref: NUL-terminate HEAD buffer
      validate_headref: use skip_prefix for symref parsing
      validate_headref: use get_oid_hex for detached HEADs
      test-terminal: set TERM=vt100
      t4015: prefer --color to -c color.diff=always
      t3701: use test-terminal to collect color output
      t7508: use test_terminal for color output
      t7502: use diff.noprefix for --verbose test
      t6006: drop "always" color config tests
      t3203: drop "always" color test
      t3205: use --color instead of color.branch=always
      provide --color option for all ref-filter users
      color: make "always" the same as "auto" in config
      path.c: fix uninitialized memory access
      sha1_loose_object_info: handle errors from unpack_sha1_rest
      Revert "color: make "always" the same as "auto" in config"
      Revert "t6006: drop "always" color config tests"
      Revert "color: check color.ui in git_default_config()"
      tag: respect color.ui config

Johannes Sixt (1):
      sub-process: use child_process.args instead of child_process.argv

Jonathan Nieder (1):
      strbuf doc: reuse after strbuf_release is fine

Jonathan Tan (1):
      fast-export: do not copy from modified file

Junio C Hamano (8):
      travis: dedent a few scripts that are indented overly deeply
      subprocess: loudly die when subprocess asks for an unsupported capability
      gc: call fscanf() with %<len>s, not %<len>c, when reading hostname
      merge-strategies: avoid implying that "-s theirs" exists
      checkout doc: clarify command line args for "checkout paths" mode
      fetch doc: src side of refspec could be full SHA-1
      Prepare for 2.14.3
      Git 2.14.3

Kaartic Sivaraam (2):
      t/README: fix typo and grammatically improve a sentence
      doc: camelCase the config variables to improve readability

Kevin Daudt (2):
      doc/for-each-ref: consistently use '=' to between argument names and values
      doc/for-each-ref: explicitly specify option names

Lars Schneider (3):
      travis-ci: move Travis CI code into dedicated scripts
      travis-ci: skip a branch build if equal tag is present
      travis-ci: fix "skip_branch_tip_with_tag()" string comparison

Manav Rathi (1):
      docs: improve discoverability of exclude pathspec

Martin Ågren (5):
      convert: always initialize attr_action in convert_attrs
      pack-objects: take lock before accessing `remaining`
      strbuf_setlen: don't write to strbuf_slopbuf
      ThreadSanitizer: add suppressions
      pkt-line: re-'static'-ify buffer in packet_write_fmt_1()

Matthieu Moy (2):
      send-email: fix garbage removal after address
      send-email: don't use Mail::Address, even if available

Max Kirillov (1):
      describe: fix matching to actually match all patterns

Michael Haggerty (1):
      for_each_string_list_item: avoid undefined behavior for empty list

Michael J Gruber (1):
      name-rev: change ULONG_MAX to TIME_MAX

Nguyễn Thái Ngọc Duy (1):
      branch: fix branch renaming not updating HEADs correctly

Ramsay Jones (4):
      git-compat-util.h: xsize_t() - avoid -Wsign-compare warnings
      commit-slab.h: avoid -Wsign-compare warnings
      cache.h: hex2chr() - avoid -Wsign-compare warnings
      ALLOC_GROW: avoid -Wsign-compare warnings

Randall S. Becker (1):
      poll.c: always set revents, even if to zero

René Scharfe (9):
      strbuf: clear errno before calling getdelim(3)
      archive: don't add empty directories to archives
      mailinfo: don't decode invalid =XY quoted-printable sequences
      coccinelle: remove parentheses that become unnecessary
      tag: avoid NULL pointer arithmetic
      run-command: use ALLOC_ARRAY
      test-stringlist: avoid buffer underrun when sorting nothing
      fsck: handle NULL return of lookup_blob() and lookup_tree()
      .mailmap: normalize name for René Scharfe

Ross Kabus (1):
      commit-tree: do not complete line in -F input

Stefan Beller (1):
      branch: reset instead of release a strbuf

Taylor Blau (1):
      ref-filter.c: pass empty-string as NULL to atom parsers

Thomas Braun (1):
      completion: add --broken and --dirty to describe

Thomas Gummerer (2):
      refs: strip out not allowed flags from ref_transaction_update
      http-push: fix construction of hex value from path

Torsten Bögershausen (1):
      test-lint: echo -e (or -E) is not portable


Version v2.14.2; changes since v2.14.1:
---------------------------------------

Andreas Heiduk (2):
      doc: add missing values "none" and "default" for diff.wsErrorHighlight
      doc: clarify "config --bool" behaviour with empty string

Anthony Sottile (1):
      git-grep: correct exit code with --quiet and -L

Brandon Williams (2):
      submodule--helper: teach push-check to handle HEAD
      clone: teach recursive clones to respect -q

Christian Couder (2):
      refs: use skip_prefix() in ref_is_hidden()
      sub-process: print the cmd when a capability is unsupported

Dimitrios Christidis (1):
      fmt-merge-msg: fix coding style

Heiko Voigt (1):
      t5526: fix some broken && chains

Hielke Christian Braun (1):
      gitweb: skip unreadable subdirectories

Jeff King (32):
      t1414: document some reflog-walk oddities
      revision: disallow reflog walking with revs->limited
      log: clarify comment about reflog cycles
      log: do not free parents when walking reflog
      get_revision_1(): replace do-while with an early return
      rev-list: check reflog_info before showing usage
      reflog-walk: stop using fake parents
      reflog-walk: apply --since/--until to reflog dates
      check return value of verify_ref_format()
      docs/for-each-ref: update pointer to color syntax
      t: use test_decode_color rather than literal ANSI codes
      ref-filter: simplify automatic color reset
      ref-filter: abstract ref format into its own struct
      ref-filter: move need_color_reset_at_eol into ref_format
      ref-filter: provide a function for parsing sort options
      ref-filter: make parse_ref_filter_atom a private function
      ref-filter: factor out the parsing of sorting atoms
      ref-filter: pass ref_format struct to atom parsers
      color: check color.ui in git_default_config()
      for-each-ref: load config earlier
      rev-list: pass diffopt->use_colors through to pretty-print
      pretty: respect color settings for %C placeholders
      ref-filter: consult want_color() before emitting colors
      t6018: flesh out empty input/output rev-list tests
      revision: add rev_input_given flag
      rev-list: don't show usage when we see empty ref patterns
      revision: do not fallback to default when rev_input_given is set
      hashcmp: use memcmp instead of open-coded loop
      doc: fix typo in sendemail.identity
      shell: drop git-cvsserver support by default
      archimport: use safe_pipe_capture for user input
      cvsimport: shell-quote variable used in backticks

Johannes Schindelin (2):
      run_processes_parallel: change confusing task_cb convention
      git-gui (MinGW): make use of MSys2's msgfmt

Jonathan Nieder (4):
      vcs-svn: remove more unused prototypes and declarations
      vcs-svn: remove custom mode constants
      vcs-svn: remove repo_delete wrapper function
      vcs-svn: move remaining repo_tree functions to fast_export.h

Jonathan Tan (7):
      fsck: remove redundant parse_tree() invocation
      object: remove "used" field from struct object
      fsck: cleanup unused variable
      Documentation: migrate sub-process docs to header
      sub-process: refactor handshake to common function
      tests: ensure fsck fails on corrupt packfiles
      Doc: clarify that pack-objects makes packs, plural

Junio C Hamano (11):
      http.c: http.sslcert and http.sslkey are both pathnames
      perl/Git.pm: typofix in a comment
      Prepare for 2.14.2
      RelNotes: further fixes for 2.14.2 from the master front
      cvsserver: move safe_pipe_capture() to the main package
      cvsserver: use safe_pipe_capture for `constant commands` as well
      Git 2.10.5
      Git 2.11.4
      Git 2.12.5
      Git 2.13.6
      Git 2.14.2

Kaartic Sivaraam (1):
      commit: check for empty message before the check for untouched template

Kevin Daudt (1):
      stash: prevent warning about null bytes in input

Lars Schneider (7):
      t0021: keep filter log files on comparison
      t0021: make debug log file name configurable
      t0021: write "OUT <size>" only on success
      convert: put the flags field before the flag itself for consistent style
      convert: move multiple file filter error handling to separate function
      convert: refactor capabilities negotiation
      convert: add "status=delayed" to filter process protocol

Martin Ågren (7):
      builtin.h: take over documentation from api-builtin.txt
      git.c: let builtins opt for handling `pager.foo` themselves
      git.c: provide setup_auto_pager()
      t7006: add tests for how git tag paginates
      tag: respect `pager.tag` in list-mode only
      tag: change default of `pager.tag` to "on"
      git.c: ignore pager.* when launching builtin as dashed external

Michael Forney (1):
      scripts: use "git foo" not "git-foo"

Michael J Gruber (6):
      Documentation: use proper wording for ref format strings
      Documentation/git-for-each-ref: clarify peeling of tags for --format
      Documentation/git-merge: explain --continue
      merge: clarify call chain
      merge: split write_merge_state in two
      merge: save merge state earlier

Philip Oakley (4):
      git-gui: remove duplicate entries from .gitconfig's gui.recentrepo
      git gui: cope with duplicates in _get_recentrepo
      git gui: de-dup selected repo from recentrepo history
      git gui: allow for a long recentrepo list

Phillip Wood (7):
      am: remember --rerere-autoupdate setting
      rebase: honor --rerere-autoupdate
      rebase -i: honor --rerere-autoupdate
      t3504: use test_commit
      cherry-pick/revert: remember --rerere-autoupdate
      cherry-pick/revert: reject --rerere-autoupdate when continuing
      am: fix signoff when other trailers are present

Ramsay Jones (2):
      credential-cache: interpret an ECONNRESET as an EOF
      builtin/add: add detail to a 'cannot chmod' error message

René Scharfe (23):
      bswap: convert to unsigned before shifting in get_be32
      bswap: convert get_be16, get_be32 and put_be32 to inline functions
      add MOVE_ARRAY
      use MOVE_ARRAY
      apply: use COPY_ARRAY and MOVE_ARRAY in update_image()
      ls-files: don't try to prune an empty index
      dir: support platforms that require aligned reads
      pack-objects: remove unnecessary NULL check
      t0001: skip test with restrictive permissions if getpwd(3) respects them
      test-path-utils: handle const parameter of basename and dirname
      t3700: fix broken test under !POSIXPERM
      t4062: use less than 256 repetitions in regex
      sha1_file: avoid comparison if no packed hash matches the first byte
      apply: remove prefix_length member from apply_state
      merge: use skip_prefix()
      win32: plug memory leak on realloc() failure in syslog()
      fsck: free buffers on error in fsck_obj()
      sha1_file: release delta_stack on error in unpack_entry()
      t1002: stop using sum(1)
      t5001: add tests for export-ignore attributes and exclude pathspecs
      archive: factor out helper functions for handling attributes
      archive: don't queue excluded directories
      commit: remove unused inline function single_parent()

Santiago Torres (1):
      t: lib-gpg: flush gpg agent on startup

Stefan Beller (3):
      t8008: rely on rev-parse'd HEAD instead of sha1 value
      sha1_file: make read_info_alternates static
      submodule.sh: remove unused variable

Torsten Bögershausen (2):
      convert: add SAFE_CRLF_KEEP_CRLF
      apply: file commited with CRLF should roundtrip diff and apply

Urs Thuermann (1):
      git svn fetch: Create correct commit timestamp when using --localtime

brian m. carlson (2):
      vcs-svn: remove unused prototypes
      vcs-svn: rename repo functions to "svn_repo"

joernchen (1):
      cvsserver: use safe_pipe_capture instead of backticks

Ævar Arnfjörð Bjarmason (1):
      tests: don't give unportable ">" to "test" built-in, use -gt


Version v2.14.1; changes since v2.14.0:
---------------------------------------

Jeff King (5):
      t/lib-proto-disable: restore protocol.allow after config tests
      t5813: add test for hostname starting with dash
      connect: factor out "looks like command line option" check
      connect: reject dashed arguments for proxy commands
      connect: reject paths that look like command line options

Junio C Hamano (9):
      connect: reject ssh hostname that begins with a dash
      Git 2.7.6
      Git 2.8.6
      Git 2.9.5
      Git 2.10.4
      Git 2.11.3
      Git 2.12.4
      Git 2.13.5
      Git 2.14.1


Version v2.14.0; changes since v2.14.0-rc1:
-------------------------------------------

Alexander Shopov (1):
      l10n: bg.po: Updated Bulgarian translation (3213t)

Andreas Heiduk (1):
      doc: remove unsupported parameter from patch-id

Anthony Sottile (1):
      diff-options doc: grammar fix

Changwoo Ryu (1):
      l10n: ko.po: Update Korean translation

Dimitriy Ryazantcev (1):
      l10n: ru.po: update Russian translation

Hartmut Henkel (1):
      l10n: de.po: various fixes in German translation

Hugues Peccatte (1):
      l10n: fr.po Fix some translations

Jean-Noel Avila (1):
      l10n: fr.po v2.14.0 rnd 2

Jiang Xin (2):
      l10n: zh_CN: for git v2.14.0 l10n round 2
      l10n: zh_CN: review for git v2.14.0 l10n

Jordi Mas (1):
      l10n: Update Catalan translation

Junio C Hamano (3):
      Preparation for 2.13.4 continues
      Git 2.13.4
      Git 2.14

Louis (1):
      l10n: fr.po Fix typo

Ralf Thielow (1):
      l10n: de.po: update German translation

SZEDER Gábor (1):
      blame: fix memory corruption scrambling revision name in error message

Sylvestre Ledru (1):
      l10n: fr.po Fix some french typos

Trần Ngọc Quân (1):
      l10n: vi.po (3213t): Updated 9 new strings


Version v2.14.0-rc1; changes since v2.14.0-rc0:
-----------------------------------------------

Alexander Shopov (1):
      l10n: bg.po: Updated Bulgarian translation (3206t)

Changwoo Ryu (1):
      l10n: ko.po: Update Korean translation

Dimitriy Ryazantcev (1):
      l10n: ru.po: update Russian translation

Eric Wong (1):
      set FD_CLOEXEC properly when O_CLOEXEC is not supported

Jeff King (2):
      gc: run pre-detach operations under lock
      t: handle EOF in test_copy_bytes()

Jiang Xin (2):
      l10n: git.pot: v2.14.0 round 1 (34 new, 23 removed)
      l10n: git.pot: v2.14.0 round 2 (9 new, 2 removed)

Johannes Schindelin (2):
      t1300: demonstrate that CamelCased aliases regressed
      alias: compare alias name *case-insensitively*

Jonathan Nieder (1):
      pre-rebase hook: capture documentation in a <<here document

Jordi Mas (2):
      l10n: Fixes to Catalan translation
      l10n: Update Catalan translation

Junio C Hamano (6):
      A few more topics before 2.14-rc1
      Makefile: help gettext tools to cope with our custom PRItime format
      A few more topics while waiting for the po/PRItime resolution
      Hopefully the final last-minute fix before -rc1
      fixes from 'master' for 2.13.4
      Git 2.14-rc1

Kaartic Sivaraam (2):
      doc: camelCase the i18n config variables to improve readability
      doc: reformat the paragraph containing the 'cut-line'

Miguel Torroja (3):
      git-p4: git-p4 tests with p4 triggers
      git-p4: parse marshal output "p4 -G" in p4 changes
      git-p4: filter for {'code':'info'} in p4CmdList

Peter Krefting (1):
      l10n: sv.po: Update Swedish translation (3206t0f0u)

Ramsay Jones (1):
      config.mak.uname: set FREAD_READS_DIRECTORIES for cygwin

René Scharfe (2):
      progress: show overall rate in last update
      Makefile: allow combining UBSan with other sanitizers

Torsten Bögershausen (1):
      cygwin: allow pushing to UNC paths

Trần Ngọc Quân (1):
      l10n: vi.po(3206t): Update Vietnamese translation

Ævar Arnfjörð Bjarmason (3):
      RelNotes: mention "log: add -P as a synonym for --perl-regexp"
      RelNotes: mention "log: make --regexp-ignore-case work with --perl-regexp"
      RelNotes: mention "sha1dc: optionally use sha1collisiondetection as a submodule"


Version v2.14.0-rc0; changes since v2.13.7:
-------------------------------------------

Andreas Heiduk (4):
      doc: describe git svn init --ignore-refs
      filter-branch: add `--setup` step
      filter-branch: add [--] to usage
      git-svn: document special options for commit-diff

Ben Peart (10):
      convert: remove erroneous tests for errno == EPIPE
      pkt-line: fix packet_read_line() to handle len < 0 errors
      pkt-line: add packet_read_line_gently()
      convert: move packet_write_line() into pkt-line as packet_writel()
      convert: split start_multi_file_filter() into two separate functions
      convert: separate generic structures and variables from the filter specific ones
      convert: update generic functions to only use generic data structures
      convert: rename reusable sub-process functions
      sub-process: move sub-process functions into separate files
      convert: update subprocess_read_status() to not die on EOF

Brandon Williams (95):
      submodule: rename add_sha1_to_array()
      submodule: rename free_submodules_sha1s()
      submodule: remove add_oid_to_argv()
      submodule: change string_list changed_submodule_paths
      submodule: improve submodule_has_commits()
      submodule: refactor logic to determine changed submodules
      dir: stop using the index compatibility macros
      dir: convert read_skip_worktree_file_from_index to take an index
      dir: convert directory_exists_in_index to take index
      dir: convert get_dtype to take index
      dir: convert dir_add* to take an index
      dir: convert last_exclude_matching_from_list to take an index
      dir: convert is_excluded_from_list to take an index
      dir: convert add_excludes to take an index
      dir: convert prep_exclude to take an index
      dir: convert is_excluded to take an index
      dir: convert open_cached_dir to take an index
      dir: convert read_directory_recursive to take an index
      dir: convert read_directory to take an index
      dir: convert fill_directory to take an index
      pathspec: provide a more descriptive die message
      submodule: add die_in_unpopulated_submodule function
      pathspec: remove PATHSPEC_STRIP_SUBMODULE_SLASH_EXPENSIVE flag
      ls-files: prevent prune_cache from overeagerly pruning submodules
      pathspec: remove PATHSPEC_STRIP_SUBMODULE_SLASH_CHEAP
      pathspec: convert find_pathspecs_matching_against_index to take an index
      grep: convert to struct object_id
      diff: convert get_stat_data to struct object_id
      diff: convert diff_index_show_file to struct object_id
      diff: convert diff_addremove to struct object_id
      diff: convert run_diff_files to struct object_id
      diff: convert diff_change to struct object_id
      diff: convert fill_filespec to struct object_id
      diff: convert reuse_worktree_file to struct object_id
      diff: finish conversion for prepare_temp_file to struct object_id
      patch-ids: convert to struct object_id
      diff: convert diff_flush_patch_id to struct object_id
      combine-diff: convert diff_tree_combined to struct object_id
      combine-diff: convert find_paths_* to struct object_id
      tree-diff: convert diff_root_tree_sha1 to struct object_id
      notes-merge: convert notes_merge* to struct object_id
      notes-merge: convert merge_from_diffs to struct object_id
      notes-merge: convert find_notes_merge_pair_ps to struct object_id
      notes-merge: convert verify_notes_filepair to struct object_id
      notes-merge: convert write_note_to_worktree to struct object_id
      diff-tree: convert diff_tree_sha1 to struct object_id
      builtin/diff-tree: cleanup references to sha1
      tree-diff: convert try_to_follow_renames to struct object_id
      tree-diff: convert diff_tree_paths to struct object_id
      tree-diff: convert path_appendnew to object_id
      diffcore-rename: use is_empty_blob_oid
      diff: rename diff_fill_sha1_info to diff_fill_oid_info
      convert: convert get_cached_convert_stats_ascii to take an index
      convert: convert crlf_to_git to take an index
      convert: convert convert_to_git_filter_fd to take an index
      convert: convert convert_to_git to take an index
      convert: convert renormalize_buffer to take an index
      tree: convert read_tree to take an index parameter
      ls-files: convert overlay_tree_on_cache to take an index
      ls-files: convert write_eolinfo to take an index
      ls-files: convert show_killed_files to take an index
      ls-files: convert show_other_files to take an index
      ls-files: convert show_ru_info to take an index
      ls-files: convert ce_excluded to take an index
      ls-files: convert prune_cache to take an index
      ls-files: convert show_ce_entry to take an index
      ls-files: convert show_files to take an index
      ls-files: factor out debug info into a function
      ls-files: factor out tag calculation
      config: create config.h
      config: remove git_config_iter
      config: don't include config.h by default
      setup: teach discover_git_directory to respect the commondir
      config: respect commondir
      config: don't implicitly use gitdir or commondir
      setup: don't perform lazy initialization of repository state
      setup: add comment indicating a hack
      environment: remove namespace_len variable
      repository: introduce the repository object
      environment: place key repository state in the_repository
      environment: store worktree in the_repository
      path: create path.h
      path: always pass in commondir to update_common_dir
      path: convert strbuf_git_common_path to take a 'struct repository'
      path: convert do_git_path to take a 'struct repository'
      path: worktree_git_path() should not use file relocation
      path: add repo_git_path and strbuf_repo_git_path
      path: add repo_worktree_path and strbuf_repo_worktree_path
      config: read config from a repository object
      repository: add index_state to struct repo
      submodule-config: store the_submodule_cache in the_repository
      submodule: add repo_read_gitmodules
      submodule: convert is_submodule_initialized to work on a repository
      repository: enable initialization of submodules
      ls-files: use repository object

Christian Couder (2):
      p3400: add perf tests for rebasing many changes
      sub-process: correct path to API docs in a comment

David Turner (2):
      Increase core.packedGitLimit
      unpack-trees: preserve index extensions

Jeff King (29):
      cache-tree: reject entries with null sha1
      status: fix missing newline when comment chars are disabled
      add--interactive: drop diff.indentHeuristic handling
      pkt-line: annotate packet_writel with LAST_ARG_MUST_BE_NULL
      ref-filter: limit traversal to prefix
      t4208: add check for ":/" without matching file
      check_filename(): refactor ":/" handling
      check_filename(): use skip_prefix
      check_filename(): handle ":^" path magic
      verify_filename(): treat ":(magic)" as a pathspec
      verify_filename(): flip order of checks
      credential: handle invalid arguments earlier
      upload-archive: handle "-h" option early
      remote-{ext,fd}: print usage message on invalid arguments
      submodule--helper: show usage for "-h"
      version: convert to parse-options
      git: add hidden --list-builtins option
      t0012: test "-h" with builtins
      add: warn when adding an embedded repository
      t: move "git add submodule" into test blocks
      configure.ac: loosen FREAD_READS_DIRECTORIES test program
      t0006: check --date=format zone offsets
      date: use localtime() for "-local" time formats
      docs: update 64-bit core.packedGitLimit default
      test-lib: set ASAN_OPTIONS variable before we run git
      test-lib: turn on ASan abort_on_error by default
      Makefile: add helper for compiling with -fsanitize
      Makefile: turn off -fomit-frame-pointer with sanitizers
      Makefile: disable unaligned loads with UBSan

Jeff Smith (29):
      blame: remove unneeded dependency on blob.h
      blame: move textconv_object with related functions
      blame: remove unused parameters
      blame: rename origin structure to blame_origin
      blame: rename scoreboard structure to blame_scoreboard
      blame: rename origin-related functions
      blame: rename coalesce function
      blame: rename ent_score function
      blame: rename nth_line function
      blame: move stat counters to scoreboard
      blame: move copy/move thresholds to scoreboard
      blame: move contents_from to scoreboard
      blame: move reverse flag to scoreboard
      blame: move show_root flag to scoreboard
      blame: move xdl_opts flags to scoreboard
      blame: move no_whole_file_rename flag to scoreboard
      blame: make sanity_check use a callback in scoreboard
      blame: move progress updates to a scoreboard callback
      blame: wrap blame_sort and compare_blame_final
      blame: rework methods that determine 'final' commit
      blame: create scoreboard init function
      blame: create scoreboard setup function
      blame: create entry prepend function
      blame: move core structures to header
      blame: move origin-related methods to libgit
      blame: move fake-commit-related methods to libgit
      blame: move scoreboard-related methods to libgit
      blame: move scoreboard setup to libgit
      blame: move entry prepend to libgit

Johannes Schindelin (9):
      ref-filter: avoid using `unsigned long` for catch-all data type
      t0006 & t5000: prepare for 64-bit timestamps
      t0006 & t5000: skip "far in the future" test when time_t is too limited
      parse_timestamp(): specify explicitly where we parse timestamps
      PRItime: introduce a new "printf format" for timestamps
      timestamp_t: a new data type for timestamps
      date.c: abort if the system time cannot handle one of our timestamps
      use uintmax_t for timestamps
      mingw: verify that paths are not mistaken for remote nicknames

Johannes Sixt (1):
      mingw_fopen: report ENOENT for invalid file names

Jonathan Tan (11):
      fetch-pack: always allow fetching of literal SHA1s
      send-email: support validate hook
      send-email: check for repo before invoking hook
      sha1_file: teach packed_object_info about typename
      sha1_file: rename LOOKUP_UNKNOWN_OBJECT
      sha1_file: rename LOOKUP_REPLACE_OBJECT
      sha1_file: move delta base cache code up
      sha1_file: refactor read_object
      sha1_file: teach sha1_object_info_extended more flags
      sha1_file: do not access pack if unneeded
      sha1_file: refactor has_sha1_file_with_flags

Junio C Hamano (28):
      test-lib.sh: do not barf under --debug at the end of the test
      test-lib: retire $remove_trash variable
      repack: accept --threads=<n> and pass it down to pack-objects
      Start post 2.13 cycle
      name-rev: change a "long" variable to timestamp_t
      Second batch for 2.14
      config.mak.uname: set FREAD_READS_DIRECTORIES for Darwin, too
      Third batch for 2.14
      compat-util: is_missing_file_error()
      treewide: use is_missing_file_error() where ENOENT and ENOTDIR are checked
      Fourth batch for 2.14
      Fifth batch for 2.14
      Sixth batch for 2.14
      Seventh batch for 2.14
      diff- and log- family: handle "git cmd -h" early
      Eighth batch for 2.14
      Ninth batch for 2.14
      Tenth batch for 2.14
      Revert "split-index: add and use unshare_split_index()"
      Eleventh batch for 2.14
      Twelfth batch for 2.14
      Thirteenth batch for 2.14
      sha1collisiondetection: automatically enable when submodule is populated
      Fourteenth batch for 2.14
      Fifteenth batch for 2.14
      Sixteenth batch for 2.14
      Hopefully the last batch before -rc0
      Git 2.14-rc0

Kaartic Sivaraam (4):
      status: contextually notify user about an initial commit
      Documentation/git-submodule: cleanup "add" section
      commit-template: remove outdated notice about explicit paths
      commit-template: distinguish status information unconditionally

Lars Schneider (2):
      travis-ci: handle Git for Windows CI status "failed" explicitly
      travis-ci: retry if Git for Windows CI returns HTTP error 502 or 503

Liam Beguin (3):
      stash: update documentation to use 'stash entry'
      status: add optional stash count information
      glossary: define 'stash entry'

Marc Branchaud (2):
      diff: make the indent heuristic part of diff's basic configuration
      diff: have the diff-* builtins configure diff before initializing revisions

Michael Haggerty (26):
      t3600: clean up permissions test properly
      refs.h: clarify docstring for the ref_transaction_update()-related fns
      ref_iterator_begin_fn(): fix docstring
      files-backend: use `die("BUG: ...")`, not `die("internal error: ...")`
      prefix_ref_iterator: don't trim too much
      refs_ref_iterator_begin(): don't check prefixes redundantly
      refs: use `size_t` indexes when iterating over ref transaction updates
      ref_store: take a `msg` parameter when deleting references
      lockfile: add a new method, is_lock_file_locked()
      files-backend: move `lock` member to `files_ref_store`
      files_ref_store: put the packed files lock directly in this struct
      files_transaction_cleanup(): new helper function
      ref_transaction_commit(): check for valid `transaction->state`
      ref_transaction_prepare(): new optional step for reference updates
      ref_update_reject_duplicates(): expose function to whole refs module
      ref_update_reject_duplicates(): use `size_t` rather than `int`
      ref_update_reject_duplicates(): add a sanity check
      should_pack_ref(): new function, extracted from `files_pack_refs()`
      get_packed_ref_cache(): assume "packed-refs" won't change while locked
      read_packed_refs(): do more of the work of reading packed refs
      read_packed_refs(): report unexpected fopen() failures
      refs_ref_iterator_begin(): handle `GIT_REF_PARANOIA`
      create_ref_entry(): remove `check_name` option
      cache_ref_iterator_begin(): avoid priming unneeded directories
      lock_packed_refs(): fix cache validity check
      for_each_bisect_ref(): don't trim refnames

Mike Hommey (1):
      fast-import: increase the default pack depth to 50

Nguyễn Thái Ngọc Duy (16):
      environment.c: fix potential segfault by get_git_common_dir()
      refs.c: make submodule ref store hashmap generic
      refs: add REFS_STORE_ALL_CAPS
      refs: introduce get_worktree_ref_store()
      worktree.c: kill parse_ref() in favor of refs_resolve_ref_unsafe()
      refs: kill set_worktree_head_symref()
      split-index: add and use unshare_split_index()
      use xfopen() in more places
      clone: use xfopen() instead of fopen()
      config.mak.uname: set FREAD_READS_DIRECTORIES for Linux and FreeBSD
      wrapper.c: add and use warn_on_fopen_errors()
      wrapper.c: add and use fopen_or_warn()
      wrapper.c: make warn_on_inaccessible() static
      print errno when reporting a system call error
      rerere.c: move error_errno() closer to the source system call
      log: fix memory leak in open_next_file()

Prathamesh Chavan (1):
      dir: create function count_slashes()

Ramsay Jones (2):
      archive-tar: fix a sparse 'constant too large' warning
      git_fopen: fix a sparse 'not declared' warning

René Scharfe (17):
      archive-zip: add tests for big ZIP archives
      archive-zip: use strbuf for ZIP directory
      archive-zip: write ZIP dir entry directly to strbuf
      archive-zip: support archives bigger than 4GB
      archive-zip: support files bigger than 4GB
      archive-zip: set version field for big files correctly
      t5004: require 64-bit support for big ZIP tests
      mingw: simplify PATH handling
      strbuf: let strbuf_addftime handle %z and %Z itself
      sha1_name: cache readdir(3) results in find_short_object_filename()
      p4205: add perf test script for pretty log formats
      sha1_file: let for_each_file_in_obj_subdir() handle subdir names
      sha1_file: guard against invalid loose subdirectory numbers
      coccinelle: polish FREE_AND_NULL rules
      urlmatch: use hex2chr() in append_normalized_escapes()
      wt-status: use separate variable for result of shorten_unambiguous_ref
      use DIV_ROUND_UP

Rikard Falkeborn (6):
      completion: add git config gc completions
      completion: add git config core completions
      completion: add git config am.threeWay completion
      completion: add git config advice completions
      completion: add git config credential completions
      completion: add git config credentialCache.ignoreSIGHUP

SZEDER Gábor (1):
      test-lib: abort when can't remove trash directory

Stefan Beller (22):
      entry.c: submodule recursing: respect force flag correctly
      submodule.c: uninitialized submodules are ignored in recursive commands
      submodule.c: submodule_move_head works with broken submodules
      builtin/reset: add --recurse-submodules switch
      diff: recurse into nested submodules for inline diff
      diff: enable indent heuristic by default
      submodule recursing: do not write a config variable twice
      submodule test invocation: only pass additional arguments
      reset/checkout/read-tree: unify config callback for submodule recursion
      submodule loading: separate code path for .gitmodules and config overlay
      Introduce 'submodule.recurse' option for worktree manipulators
      builtin/grep.c: respect 'submodule.recurse' option
      builtin/push.c: respect 'submodule.recurse' option
      builtin/fetch.c: respect 'submodule.recurse' option
      submodules: overhaul documentation
      builtin/fetch: factor submodule recurse parsing out to submodule config
      builtin/fetch: parse recurse-submodules-default at default options parsing
      pull: optionally rebase submodules (remote submodule changes only)
      builtin/fetch cleanup: always set default value for submodule recursing
      hashmap.h: compare function has access to a data field
      patch-ids.c: use hashmap correctly
      hashmap: migrate documentation from Documentation/technical into header

Stephen Kent (1):
      status: add color config slots for branch info in "--short --branch"

Ville Skyttä (1):
      Spelling fixes

brian m. carlson (60):
      fetch-pack: convert to struct object_id
      Clean up outstanding object_id transforms.
      Convert struct cache_tree to use struct object_id
      builtin/name-rev: convert to struct object_id
      builtin/prune: convert to struct object_id
      bundle: convert to struct object_id
      branch: convert to struct object_id
      builtin/blame: convert static function to struct object_id
      builtin/rev-parse: convert to struct object_id
      fast-import: convert internal structs to struct object_id
      fast-import: convert to struct object_id
      submodule: convert merge_submodule to use struct object_id
      notes-cache: convert to struct object_id
      parse-options-cb: convert to struct object_id
      reflog_expire: convert to struct object_id
      builtin/verify-commit: convert to struct object_id
      tag: convert parse_tag_buffer to struct object_id
      http-push: convert some static functions to struct object_id
      notes-utils: convert internals to struct object_id
      revision: convert prepare_show_merge to struct object_id
      shallow: convert shallow registration functions to object_id
      sequencer: convert some functions to struct object_id
      builtin/tag: convert to struct object_id
      Convert remaining callers of lookup_commit_reference* to object_id
      Convert lookup_commit* to struct object_id
      pack: convert struct pack_idx_entry to struct object_id
      builtin/unpack-objects: convert to struct object_id
      Convert remaining callers of lookup_blob to object_id
      Convert lookup_blob to struct object_id
      tree: convert read_tree_1 to use struct object_id internally
      builtin/reflog: convert tree_is_complete to take struct object_id
      Convert lookup_tree to struct object_id
      log-tree: convert to struct object_id
      Convert lookup_tag to struct object_id
      Convert the verify_pack callback to struct object_id
      Convert struct ref_array_item to struct object_id
      ref-filter: convert some static functions to struct object_id
      refs: convert struct ref_update to use struct object_id
      refs/files-backend: convert many internals to struct object_id
      http-push: convert process_ls_object and descendants to object_id
      revision: rename add_pending_sha1 to add_pending_oid
      revision: convert remaining parse_object callers to object_id
      upload-pack: convert remaining parse_object callers to object_id
      sha1_name: convert internals of peel_onion to object_id
      builtin/read-tree: convert to struct object_id
      builtin/ls-files: convert overlay_tree_on_cache to object_id
      sequencer: convert fast_forward_to to struct object_id
      merge: convert checkout_fast_forward to struct object_id
      builtin/ls-tree: convert to struct object_id
      diff-lib: convert do_diff_cache to struct object_id
      sequencer: convert do_recursive_merge to struct object_id
      tree: convert parse_tree_indirect to struct object_id
      object: convert parse_object* to take struct object_id
      notes: convert internal structures to struct object_id
      notes: convert internal parts to struct object_id
      notes: convert for_each_note to struct object_id
      notes: make get_note return pointer to struct object_id
      notes: convert format_display_notes to struct object_id
      builtin/notes: convert to struct object_id
      notes: convert some accessor functions to struct object_id

xiaoqiang zhao (1):
      send-email: --batch-size to work around some SMTP server limit

Ævar Arnfjörð Bjarmason (65):
      tests: change "cd ... && git fetch" to "cd &&\n\tgit fetch"
      clone: add a --no-tags option to clone without tags
      tests: rename a test having to do with shallow submodules
      perf: add function to setup a fresh test repo
      perf: add test showing exponential growth in path globbing
      config: match both symlink & realpath versions in IncludeIf.gitdir:*
      Makefile & configure: reword inaccurate comment about PCRE
      grep & rev-list doc: stop promising libpcre for --perl-regexp
      test-lib: rename the LIBPCRE prerequisite to PCRE
      log: add exhaustive tests for pattern style options & config
      log: make --regexp-ignore-case work with --perl-regexp
      grep: add a test asserting that --perl-regexp dies when !PCRE
      grep: add a test for backreferences in PCRE patterns
      grep: change non-ASCII -i test to stop using --debug
      grep: add tests for --threads=N and grep.threads
      grep: amend submodule recursion test for regex engine testing
      grep: add tests for grep pattern types being passed to submodules
      grep: add a test helper function for less verbose -f \0 tests
      grep: prepare for testing binary regexes containing rx metacharacters
      grep: add tests to fix blind spots with \0 patterns
      perf: add a GIT_PERF_MAKE_COMMAND for when *_MAKE_OPTS won't do
      perf: emit progress output when unpacking & building
      perf: add a comparison test of grep regex engines
      perf: add a comparison test of grep regex engines with -F
      perf: add a comparison test of log --grep regex engines
      perf: add a comparison test of log --grep regex engines with -F
      grep: catch a missing enum in switch statement
      grep: remove redundant regflags assignments
      grep: factor test for \0 in grep patterns into a function
      grep: change the internal PCRE macro names to be PCRE1
      grep: change internal *pcre* variable & function names to be *pcre1*
      grep: move is_fixed() earlier to avoid forward declaration
      test-lib: add a PTHREADS prerequisite
      pack-objects & index-pack: add test for --threads warning
      pack-objects: fix buggy warning about threads
      grep: given --threads with NO_PTHREADS=YesPlease, warn
      grep: assert that threading is enabled when calling grep_{lock,unlock}
      grep: don't redundantly compile throwaway patterns under threading
      grep: skip pthreads overhead when using one thread
      log: add -P as a synonym for --perl-regexp
      grep: add support for the PCRE v1 JIT API
      grep: un-break building with PCRE < 8.32
      grep: un-break building with PCRE < 8.20
      grep: un-break building with PCRE >= 8.32 without --enable-jit
      grep: add support for PCRE v2
      perf: work around the tested repo having an index.lock
      git-compat-util: add a FREE_AND_NULL() wrapper around free(ptr); ptr = NULL
      wildmatch test: cover a blind spot in "/" matching
      coccinelle: add a rule to make "type" code use FREE_AND_NULL()
      coccinelle: make use of the "type" FREE_AND_NULL() rule
      coccinelle: add a rule to make "expression" code use FREE_AND_NULL()
      coccinelle: make use of the "expression" FREE_AND_NULL() rule
      *.[ch] refactoring: make use of the FREE_AND_NULL() macro
      grep: fix erroneously copy/pasted variable in check/assert pattern
      die(): stop hiding errors due to overzealous recursion guard
      wildmatch: remove unused wildopts parameter
      strbuf.h comment: discuss strbuf_addftime() arguments in order
      grep: remove redundant double assignment to 0
      grep: adjust a redundant grep pattern type assignment
      grep: remove redundant "fixed" field re-assignment to 0
      grep: remove redundant and verbose re-assignments to 0
      grep: remove regflags from the public grep_opt API
      grep: remove redundant REG_NEWLINE when compiling fixed regex
      strbuf: change an always NULL/"" strbuf_addftime() param to bool
      sha1dc: optionally use sha1collisiondetection as a submodule


Version v2.13.7; changes since v2.13.6:
---------------------------------------

Jeff King (8):
      submodule-config: verify submodule names as paths
      is_ntfs_dotgit: use a size_t for traversing string
      is_hfs_dotgit: match other .git files
      skip_prefix: add case-insensitive variant
      verify_path: drop clever fallthrough
      verify_dotfile: mention case-insensitivity in comment
      update-index: stat updated files earlier
      verify_path: disallow symlinks in .gitmodules

Johannes Schindelin (2):
      is_ntfs_dotgit: match other .git files
      is_{hfs,ntfs}_dotgitmodules: add tests

Junio C Hamano (1):
      Git 2.13.7


Version v2.13.6; changes since v2.13.5:
---------------------------------------

Jeff King (3):
      shell: drop git-cvsserver support by default
      archimport: use safe_pipe_capture for user input
      cvsimport: shell-quote variable used in backticks

Junio C Hamano (6):
      cvsserver: move safe_pipe_capture() to the main package
      cvsserver: use safe_pipe_capture for `constant commands` as well
      Git 2.10.5
      Git 2.11.4
      Git 2.12.5
      Git 2.13.6

joernchen (1):
      cvsserver: use safe_pipe_capture instead of backticks


Version v2.13.5; changes since v2.13.4:
---------------------------------------

Jeff King (5):
      t/lib-proto-disable: restore protocol.allow after config tests
      t5813: add test for hostname starting with dash
      connect: factor out "looks like command line option" check
      connect: reject dashed arguments for proxy commands
      connect: reject paths that look like command line options

Junio C Hamano (8):
      connect: reject ssh hostname that begins with a dash
      Git 2.7.6
      Git 2.8.6
      Git 2.9.5
      Git 2.10.4
      Git 2.11.3
      Git 2.12.4
      Git 2.13.5


Version v2.13.4; changes since v2.13.3:
---------------------------------------

Beat Bolli (1):
      unicode: update the width tables to Unicode 10

Eric Wong (1):
      set FD_CLOEXEC properly when O_CLOEXEC is not supported

Jeff King (2):
      gc: run pre-detach operations under lock
      t: handle EOF in test_copy_bytes()

Johannes Schindelin (2):
      t1300: demonstrate that CamelCased aliases regressed
      alias: compare alias name *case-insensitively*

Jonathan Nieder (1):
      pre-rebase hook: capture documentation in a <<here document

Junio C Hamano (3):
      fixes from 'master' for 2.13.4
      Preparation for 2.13.4 continues
      Git 2.13.4

Kaartic Sivaraam (3):
      doc: correct a mistake in an illustration
      doc: camelCase the i18n config variables to improve readability
      doc: reformat the paragraph containing the 'cut-line'

Phillip Wood (4):
      add -i: move unquote_path() to Git.pm
      Git::unquote_path(): handle '\a'
      Git::unquote_path(): throw an exception on bad path
      t9700: add tests for Git::unquote_path()

René Scharfe (3):
      apply: use starts_with() in gitdiff_verify_name()
      apply: use strcmp(3) for comparing strings in gitdiff_verify_name()
      progress: show overall rate in last update

Torsten Bögershausen (1):
      cygwin: allow pushing to UNC paths


Version v2.13.3; changes since v2.13.2:
---------------------------------------

A. Wilcox (1):
      subtree: honour USE_ASCIIDOCTOR when set

Alejandro R. Sedeño (1):
      ref-filter.c: drop return from void function

Andreas Heiduk (2):
      doc: do not use `rm .git/index` when normalizing line endings
      doc: clarify syntax for %C(auto,...) in pretty formats

Christian Couder (3):
      read-cache: use shared perms when writing shared index
      t1301: move modebits() to test-lib-functions.sh
      t1700: make sure split-index respects core.sharedrepository

David Aguilar (1):
      mergetools/meld: improve compatibiilty with Meld on macOS X

James Clarke (1):
      pack-bitmap: don't perform unaligned memory access

Jeff King (10):
      diff-highlight: split code into module
      add--interactive: handle EOF in prompt_yesno
      add--interactive: quote commentChar regex
      reflog-walk: skip over double-null oid due to HEAD rename
      reflog-walk: duplicate strings in complete_reflogs list
      reflog-walk: don't free reflogs added to cache
      reflog-walk: include all fields when freeing complete_reflogs
      branch: only perform HEAD check for local branches
      branch: use BRANCH_COLOR_LOCAL in ref-filter format
      branch: set remote color in ref-filter branch immediately

Johannes Schindelin (8):
      discover_git_directory(): avoid setting invalid git_dir
      config: report correct line number upon error
      help: use early config when autocorrecting aliases
      t1308: relax the test verifying that empty alias values are disallowed
      t7006: demonstrate a problem with aliases in subdirectories
      alias: use the early config machinery to expand aliases
      sequencer: print autostash messages to stderr
      t5534: fix misleading grep invocation

Junio C Hamano (5):
      t3420: fix under GETTEXT_POISON build
      t1450: use egrep for regexp "alternation"
      submodule--helper: do not call utf8_fprintf() unnecessarily
      Prepare for 2.13.3
      Git 2.13.3

Kaartic Sivaraam (2):
      t7508: fix a broken indentation
      builtin/commit.c: fix a typo in the comment

Marc Branchaud (1):
      auto-correct: tweak phrasing

Phillip Wood (3):
      rebase -i: add test for reflog message
      rebase: add regression tests for console output
      rebase: add more regression tests for console output

Ralf Thielow (1):
      l10n: de.po: fix typo

René Scharfe (4):
      pretty: recalculate duplicate short hashes
      apply: check git diffs for missing old filenames
      apply: check git diffs for invalid file modes
      apply: check git diffs for mutually exclusive header lines

Stefan Beller (2):
      t4005: modernize style and drop hard coded sha1
      merge-recursive: use DIFF_XDL_SET macro

Ævar Arnfjörð Bjarmason (1):
      sha1dc: update from upstream


Version v2.13.2; changes since v2.13.1:
---------------------------------------

Adam Dinwoodie (1):
      docs: fix formatting and grammar

Brandon Williams (12):
      t5550: use write_script to generate post-update hook
      t0061: run_command executes scripts without a #! line
      run-command: prepare command before forking
      run-command: use the async-signal-safe execv instead of execvp
      string-list: add string_list_remove function
      run-command: prepare child environment before forking
      run-command: don't die in child when duping /dev/null
      run-command: eliminate calls to error handling functions in child
      run-command: handle dup2 and close errors in child
      run-command: add note about forking and threading
      run-command: expose is_executable function
      run-command: restrict PATH search to executable files

Dennis Kaarsemaker (1):
      send-email: Net::SMTP::SSL is obsolete, use only when necessary

Eric Wong (1):
      run-command: block signals between fork and execve

Jeff Hostetler (1):
      read-cache: close index.lock in do_write_index

Jeff King (23):
      usage.c: add BUG() function
      setup_git_env: convert die("BUG") to BUG()
      config: complain about --local outside of a git repo
      usage.c: drop set_error_handle()
      handle_revision_arg: reset "dotdot" consistently
      handle_revision_arg: simplify commit reference lookups
      handle_revision_arg: stop using "dotdot" as a generic pointer
      handle_revision_arg: hoist ".." check out of range parsing
      handle_revision_arg: add handle_dotdot() helper
      sha1_name: consistently refer to object_context as "oc"
      get_sha1_with_context: always initialize oc->symlink_path
      get_sha1_with_context: dynamically allocate oc->path
      t4063: add tests of direct blob diffs
      handle_revision_arg: record modes for "a..b" endpoints
      handle_revision_arg: record paths for pending objects
      diff: pass whole pending entry in blobinfo
      diff: use the word "path" instead of "name" for blobs
      diff: use pending "path" if it is available
      diff: use blob path for blob/file diffs
      connect.c: fix leak in parse_one_symref_info()
      remote: drop free_refspecs() function
      t5313: make extended-table test more deterministic
      sha1dc: ignore indent-with-non-tab whitespace violations

Jonathan Nieder (1):
      send-email: Net::SMTP::starttls was introduced in v2.34

Junio C Hamano (6):
      name-rev: refactor logic to see if a new candidate is a better name
      name-rev: favor describing with tags and use committer date to tiebreak
      test: allow skipping the remainder
      diff-tree: update stale in-code comments
      Prepare for 2.13.2
      Git 2.13.2

Kyle J. McKay (1):
      t5100: add some more mailinfo tests

Lars Schneider (1):
      Configure Git contribution guidelines for github.com

Patrick Steinhardt (1):
      git-stash: fix pushing stash with pathspec from subdir

Ramsay Jones (1):
      usage: add NORETURN to BUG() function definitions

René Scharfe (5):
      p0004: simplify calls of test-lazy-init-name-hash
      p0004: avoid using pipes
      p0004: use test_perf
      p0004: don't abort if multi-threaded is too slow
      p0004: don't error out if test repo is too small

Rikard Falkeborn (1):
      completion: add completions for git config commit

SZEDER Gábor (6):
      revision.h: turn rev_info.early_output back into an unsigned int
      revision.c: stricter parsing of '--no-{min,max}-parents'
      revision.c: stricter parsing of '--early-output'
      revision.c: use skip_prefix() in handle_revision_opt()
      revision.c: use skip_prefix() in handle_revision_pseudo_opt()
      docs/pretty-formats: stress that %- removes all preceding line-feeds

Sahil Dua (1):
      t3200: add test for single parameter passed to -m option

Samuel Lijin (6):
      t7300: clean -d should skip dirs with ignored files
      t7061: status --ignored should search untracked dirs
      dir: recurse into untracked dirs for ignored files
      dir: hide untracked contents of untracked dirs
      dir: expose cmp_name() and check_contains()
      clean: teach clean -d to preserve ignored paths

Stefan Beller (5):
      submodule_move_head: reuse child_process structure for futher commands
      submodule: avoid auto-discovery in new working tree manipulator code
      submodule: properly recurse for read-tree and checkout
      t5545: enhance test coverage when no http server is installed
      Documentation/git-rm: correct submodule description

Tyler Brazier (1):
      pull: ff --rebase --autostash works in dirty repo

Ævar Arnfjörð Bjarmason (2):
      wildmatch test: remove redundant duplicate test
      sha1dc: update from upstream

Štěpán Němec (1):
      doc: git-reset: fix a trivial typo


Version v2.13.1; changes since v2.13.0:
---------------------------------------

Andreas Heiduk (4):
      Documentation: fix reference to ifExists for interpret-trailers
      Documentation: fix formatting typo in pretty-formats.txt
      doc: filter-branch does not require re-export of vars
      doc: rewrite description for rev-parse --short

Brian Malehorn (1):
      interpret-trailers: honor the cut line

Jean-Noël Avila (3):
      usability: don't ask questions if no reply is required
      read-tree -m: make error message for merging 0 trees less smart aleck
      git-filter-branch: be more direct in an error message

Jeff King (14):
      am: fix commit buffer leak in get_commit_info()
      am: simplify allocations in get_commit_info()
      am: shorten ident_split variable name in get_commit_info()
      pack-objects: disable pack reuse for object-selection options
      t5310: fix "; do" style
      docs/config: clarify include/includeIf relationship
      docs/config: give a relative includeIf example
      docs/config: avoid the term "expand" for includes
      docs/config: consistify include.path examples
      t5400: avoid concurrent writes into a trace file
      ref-filter: resolve HEAD when parsing %(HEAD) atom
      revision.c: ignore broken tags with ignore_missing_links
      am: handle "-h" argument earlier
      docs/config: mention protocol implications of url.insteadOf

Johannes Schindelin (31):
      mingw: avoid memory leak when splitting PATH
      winansi: avoid use of uninitialized value
      winansi: avoid buffer overrun
      add_commit_patch_id(): avoid allocating memory unnecessarily
      git_config_rename_section_in_file(): avoid resource leak
      get_mail_commit_oid(): avoid resource leak
      difftool: address a couple of resource/memory leaks
      status: close file descriptor after reading git-rebase-todo
      mailinfo & mailsplit: check for EOF while parsing
      cat-file: fix memory leak
      checkout: fix memory leak
      split_commit_in_progress(): simplify & fix memory leak
      setup_bare_git_dir(): help static analysis
      setup_discovered_git_dir(): plug memory leak
      pack-redundant: plug memory leak
      mktree: plug memory leaks reported by Coverity
      fast-export: avoid leaking memory in handle_tag()
      receive-pack: plug memory leak in update()
      line-log: avoid memory leak
      shallow: avoid memory leak
      add_reflog_for_walk: avoid memory leak
      remote: plug memory leak in match_explicit()
      name-rev: avoid leaking memory in the `deref` case
      show_worktree(): plug memory leak
      submodule_uses_worktrees(): plug memory leak
      Fix build with core.autocrlf=true
      git-new-workdir: mark script as LF-only
      completion: mark bash script as LF-only
      t3901: move supporting files into t/t3901/
      Fix the remaining tests that failed with core.autocrlf=true
      t4051: mark supporting files as requiring LF-only line endings

Johannes Sixt (2):
      mingw.h: permit arguments with side effects for is_dir_sep
      Windows: do not treat a path with backslashes as a remote's nick name

Jonathan Nieder (2):
      credential doc: make multiple-helper behavior more prominent
      clone: handle empty config values in -c

Jonathan Tan (3):
      sequencer: add newline before adding footers
      docs: correct receive.advertisePushOptions default
      receive-pack: verify push options in cert

Junio C Hamano (6):
      apply.c: fix whitespace-only mismerge
      checkout: fix memory leak
      doc: replace more gmane links
      read-tree: "read-tree -m --empty" does not make sense
      Prepare for 2.13.1; more topics to follow
      Git 2.13.1

Kyle Meyer (1):
      config.txt: add an entry for log.showSignature

Lars Schneider (6):
      travis-ci: build documentation with AsciiDoc and Asciidoctor
      travis-ci: parallelize documentation build
      travis-ci: unset compiler for jobs that do not need one
      travis-ci: check AsciiDoc/AsciiDoctor stderr output
      travis-ci: setup "prove cache" in "script" step
      travis-ci: add job to run tests with GETTEXT_POISON

Phillip Wood (3):
      rebase -i: fix reflog message
      rebase -i: silence stash apply
      rebase -i: add missing newline to end of message

Ramsay Jones (1):
      t7400: add !CYGWIN prerequisite to 'add with \\ in path'

René Scharfe (2):
      checkout: check return value of resolve_refdup before using hash
      am: check return value of resolve_refdup before using hash

SZEDER Gábor (1):
      docs/config.txt: fix indefinite article in core.fileMode description

Sahil Dua (1):
      branch test: fix invalid config key access

Stefan Beller (1):
      t5531: fix test description

Sven Strickroth (1):
      doc: use https links to Wikipedia to avoid http redirects

Thomas Gummerer (1):
      completion: add git stash push

Torsten Bögershausen (1):
      t0027: tests are not expensive; remove t0025

brian m. carlson (1):
      builtin/log: honor log.decorate

Ævar Arnfjörð Bjarmason (6):
      config.mak.uname: set NO_REGEX=NeedsStartEnd on AIX
      doc: replace a couple of broken gmane links
      tests: fix tests broken under GETTEXT_POISON=YesPlease
      sha1dc: update from upstream
      tag: duplicate mention of --contains should mention --no-contains
      C style: use standard style for "TRANSLATORS" comments


Version v2.13.0; changes since v2.13.0-rc2:
-------------------------------------------

Alexander Shopov (2):
      l10n: bg.po: Updated Bulgarian translation (3201t)
      l10n: bg.po: Updated Bulgarian translation (3195t)

Jean-Noël Avila (2):
      l10n: fr.po v2.13 round 1
      l10n: fr.po v2.13 rnd 2

Jeff Hostetler (1):
      t1450: avoid use of "sed" on the index, which is a binary file

Jeff King (1):
      shell: disallow repo names beginning with dash

Jiang Xin (4):
      l10n: git.pot: v2.13.0 round 1 (96 new, 37 removed)
      l10n: zh_CN: for git v2.13.0 l10n round 1
      l10n: git.pot: v2.13.0 round 2 (4 new, 7 removed)
      l10n: zh_CN: for git v2.13.0 l10n round 2

Jordi Mas (1):
      l10n: Update Catalan translation

Junio C Hamano (10):
      Git 2.4.12
      Git 2.5.6
      Git 2.6.7
      Git 2.7.5
      Git 2.8.5
      Git 2.9.4
      Git 2.10.3
      Git 2.11.2
      Git 2.12.3
      Git 2.13

Michael J Gruber (1):
      l10n: de.po: lower case after semi-colon

Peter Krefting (2):
      l10n: sv.po: Update Swedish translation (3199t0f0u)
      l10n: sv.po: Update Swedish translation (3195t0f0u)

Ralf Thielow (2):
      l10n: de.po: update German translation
      l10n: de.po: translate 4 new messages

Ray Chen (1):
      l10n: zh_CN: review for git v2.13.0 l10n round 1

Trần Ngọc Quân (2):
      l10n: vi.po(3198t): Updated Vietnamese translation for v2.13.0-rc0
      l10n: vi.po(3195t): Update translation for v2.13.0 round 2

Vasco Almeida (1):
      l10n: pt_PT: update Portuguese translation


Version v2.13.0-rc2; changes since v2.13.0-rc1:
-----------------------------------------------

Jean-Noël Avila (1):
      i18n: remove i18n from tag reflog message

Jeff King (3):
      completion: optionally disable checkout DWIM
      submodule_init: die cleanly on submodules without url defined
      prio_queue_reverse: don't swap elements with themselves

Junio C Hamano (2):
      Merging a handful of topics before -rc2
      Git 2.13-rc2

Lars Schneider (2):
      travis-ci: printf $STATUS as string
      travis-ci: set DEVELOPER knob for Linux32 build

Peter Krefting (1):
      i18n: read-cache: typofix

René Genz (3):
      doc: update SubmittingPatches
      fix minor typos
      doc: git-pull.txt use US spelling, fix minor typo

Simon Ruderich (1):
      githooks.txt: clarify push hooks are always executed in $GIT_DIR

Stephen Hicks (1):
      rebase -i: reread the todo list if `exec` touched it

Ævar Arnfjörð Bjarmason (1):
      t/perf: correctly align non-ASCII descriptions in output


Version v2.13.0-rc1; changes since v2.13.0-rc0:
-----------------------------------------------

Brandon Williams (1):
      submodule: prevent backslash expantion in submodule names

Christian Couder (1):
      read-cache: avoid using git_path() in freshen_shared_index()

David Turner (2):
      http.postbuffer: allow full range of ssize_t values
      xgethostname: handle long hostnames

Giuseppe Bilotta (4):
      builtin/am: honor --signoff also when --rebasing
      builtin/am: fold am_signoff() into am_append_signoff()
      doc: trivial typo in git-format-patch.txt
      rebase: pass --[no-]signoff option to git am

Jacob Keller (2):
      ls-files: fix recurse-submodules with nested submodules
      ls-files: fix path used when recursing into submodules

Jeff Hostetler (8):
      read-cache: force_verify_index_checksum
      string-list: use ALLOC_GROW macro when reallocing string_list
      read-cache: add strcmp_offset function
      unpack-trees: avoid duplicate ODB lookups during checkout
      p0006-read-tree-checkout: perf test to time read-tree
      read-cache: speed up add_index_entry during checkout
      read-cache: speed up has_dir_name (part 1)
      read-cache: speed up has_dir_name (part 2)

Jeff King (16):
      receive-pack: drop tmp_objdir_env from run_update_hook
      receive-pack: document user-visible quarantine effects
      refs: reject ref updates while GIT_QUARANTINE_PATH is set
      bisect: add git_path_bisect_terms helper
      branch: add edit_description() helper
      use git_path_* helper functions
      replace xstrdup(git_path(...)) with git_pathdup(...)
      replace strbuf_addstr(git_path()) with git_path_buf()
      am: drop "dir" parameter from am_state_init
      connect.c: fix leak in handle_ssh_variant
      doc: use https links to avoid http redirect
      doc: replace or.cz gitwiki link with git.wiki.kernel.org
      gitcore-tutorial: update broken link
      docs/archimport: quote sourcecontrol.net reference
      docs/bisect-lk2009: update nist report link
      docs/bisect-lk2009: update java code conventions link

Jonathan Tan (1):
      fetch-pack: show clearer error message upon ERR

Junio C Hamano (3):
      replace: plug a memory leak
      Getting ready for -rc1
      Git 2.13-rc1

Kyle Meyer (1):
      t1400: use consistent style for test_expect_success calls

Lars Schneider (1):
      travis-ci: add static analysis build job to run coccicheck

Michael Haggerty (20):
      get_ref_dir(): don't call read_loose_refs() for "refs/bisect"
      refs_read_raw_ref(): new function
      refs_ref_iterator_begin(): new function
      refs_verify_refname_available(): implement once for all backends
      refs_verify_refname_available(): use function in more places
      ref-cache: rename `add_ref()` to `add_ref_entry()`
      ref-cache: rename `find_ref()` to `find_ref_entry()`
      ref-cache: rename `remove_entry()` to `remove_entry_from_dir()`
      refs: split `ref_cache` code into separate files
      ref-cache: introduce a new type, ref_cache
      refs: record the ref_store in ref_cache, not ref_dir
      ref-cache: use a callback function to fill the cache
      refs: handle "refs/bisect/" in `loose_fill_ref_dir()`
      do_for_each_entry_in_dir(): eliminate `offset` argument
      get_loose_ref_dir(): function renamed from get_loose_refs()
      get_loose_ref_cache(): new function
      cache_ref_iterator_begin(): make function smarter
      commit_packed_refs(): use reference iteration
      files_pack_refs(): use reference iteration
      do_for_each_entry_in_dir(): delete function

Nguyễn Thái Ngọc Duy (6):
      path.c: and an option to call real_path() in expand_user_path()
      config: resolve symlinks in conditional include's patterns
      config: prepare to pass more info in git_config_with_options()
      config: handle conditional include when $GIT_DIR is not set up
      config: correct file reading order in read_early_config()
      worktree add: add --lock option

Patrick Steinhardt (1):
      pathspec: honor `PATHSPEC_PREFIX_ORIGIN` with empty prefix

Prathamesh Chavan (1):
      t2027: avoid using pipes

René Scharfe (4):
      am: close stream on error, but not stdin
      files_for_each_reflog_ent_reverse(): close stream and free strbuf on error
      server-info: avoid calling fclose(3) twice in update_info_file()
      use HOST_NAME_MAX to size buffers for gethostname(2)

Sebastian Schuberth (4):
      sha1_file: remove an used fd variable
      submodule: remove a superfluous second check for the "new" variable
      gitmodules: clarify what history depth a shallow clone has
      gitmodules: clarify the ignore option values

Sergey Ryazanov (2):
      http: honor empty http.proxy option to bypass proxy
      http: fix the silent ignoring of proxy misconfiguraion

Torsten Bögershausen (1):
      gitattributes.txt: document how to normalize the line endings

Ævar Arnfjörð Bjarmason (2):
      push: document & test --force-with-lease with multiple remotes
      completion: expand "push --delete <remote> <ref>" for refs on that <remote>


Version v2.13.0-rc0; changes since v2.12.5:
-------------------------------------------

Alex Henrie (1):
      log: if --decorate is not given, default to --decorate=auto

Andreas Heiduk (2):
      Documentation: improve description for core.quotePath
      diff-files: document --ours etc.

Brandon Williams (36):
      attr: pass struct attr_check to collect_some_attrs
      attr: use hashmap for attribute dictionary
      attr: eliminate global check_all_attr array
      attr: remove maybe-real, maybe-macro from git_attr
      attr: tighten const correctness with git_attr and match_attr
      attr: store attribute stack in attr_check structure
      attr: push the bare repo check into read_attr()
      attr: reformat git_attr_set_direction() function
      pathspec: allow querying for attributes
      pathspec: allow escaped query values
      submodule--helper: add is-active subcommand
      submodule status: use submodule--helper is-active
      submodule sync: skip work for inactive submodules
      submodule sync: use submodule--helper is-active
      submodule--helper clone: check for configured submodules using helper
      grep: fix help text typo
      setup: allow for prefix to be passed to git commands
      grep: fix bug when recursing with relative pathspec
      ls-files: fix typo in variable name
      ls-files: fix bug when recursing with relative pathspec
      grep: set default output method
      submodule: decouple url and submodule interest
      submodule init: initialize active submodules
      clone: teach --recurse-submodules to optionally take a pathspec
      submodule--helper init: set submodule.<name>.active
      submodule add: respect submodule.active and submodule.<name>.active
      grep: fix builds with with no thread support
      send-pack: send push options correctly in stateless-rpc case
      remote-curl: allow push options
      sequencer: fix missing newline
      push: unmark a local variable as static
      push: propagate push-options with --recurse-submodules
      remote: expose parse_push_refspec function
      submodule--helper: add push-check subcommand
      push: propagate remote and refspec with --recurse-submodules
      pathspec: fix segfault in clear_pathspec

Christian Couder (24):
      config: mark an error message up for translation
      t1700: change here document style
      config: add git_config_get_split_index()
      split-index: add {add,remove}_split_index() functions
      read-cache: add and then use tweak_split_index()
      update-index: warn in case of split-index incoherency
      t1700: add tests for core.splitIndex
      Documentation/config: add information for core.splitIndex
      Documentation/git-update-index: talk about core.splitIndex config var
      config: add git_config_get_max_percent_split_change()
      read-cache: regenerate shared index if necessary
      t1700: add tests for splitIndex.maxPercentChange
      Documentation/config: add splitIndex.maxPercentChange
      sha1_file: make check_and_freshen_file() non static
      read-cache: touch shared index files when used
      config: add git_config_get_expiry() from gc.c
      read-cache: unlink old sharedindex files
      t1700: test shared index file expiration
      read-cache: refactor read_index_from()
      read-cache: use freshen_shared_index() in read_index_from()
      Documentation/config: add splitIndex.sharedIndexExpire
      Documentation/git-update-index: explain splitIndex.*
      update-index: fix xgetcwd() related memory leak
      p0004: make perf test executable

Cornelius Weig (1):
      tag: generate useful reflog message

David Aguilar (3):
      t7800: remove whitespace before redirect
      t7800: cleanup cruft left behind by tests
      difftool: handle modified symlinks in dir-diff mode

Devin Lehmacher (3):
      path.c: add xdg_cache_home
      credential-cache: use XDG_CACHE_HOME for socket
      credential-cache: add tests for XDG functionality

Hiroshi Shirosaki (1):
      git svn: fix authentication with 'branch'

Jacob Keller (5):
      doc: add documentation for OPT_STRING_LIST
      name-rev: extend --refs to accept multiple patterns
      name-rev: add support to exclude refs by pattern match
      describe: teach --match to accept multiple patterns
      describe: teach describe negative pattern matches

Jeff Hostetler (9):
      preload-index: avoid lstat for skip-worktree items
      name-hash: specify initial size for istate.dir_hash table
      hashmap: allow memihash computation to be continued
      hashmap: add disallow_rehash setting
      hashmap: document memihash_cont, hashmap_disallow_rehash api
      name-hash: perf improvement for lazy_init_name_hash
      name-hash: add test-lazy-init-name-hash
      name-hash: add perf test for lazy_init_name_hash
      test-online-cpus: helper to return cpu count

Jeff King (58):
      setup_git_env: avoid blind fall-back to ".git"
      for_each_alternate_ref: handle failure from real_pathdup()
      for_each_alternate_ref: stop trimming trailing slashes
      for_each_alternate_ref: use strbuf for path allocation
      for_each_alternate_ref: pass name/oid instead of ref struct
      for_each_alternate_ref: replace transport code with for-each-ref
      fetch-pack: cache results of for_each_alternate_ref
      add oidset API
      receive-pack: use oidset to de-duplicate .have lines
      receive-pack: fix misleading namespace/.have comment
      receive-pack: treat namespace .have lines like alternates
      receive-pack: avoid duplicates between our refs and alternates
      ref-filter: move ref_cbdata definition into ref-filter.c
      ref-filter: use contains_result enum consistently
      ref-filter: die on parse_commit errors
      ref-filter: use separate cache for contains_tag_algo
      add--interactive: do not expand pathspecs with ls-files
      cherry-pick: detect bogus arguments to --mainline
      sha1dc: add collision-detecting sha1 implementation
      sha1dc: adjust header includes for git
      sha1dc: disable safe_hash feature
      sequencer: drop "warning:" when stopping for edit
      Makefile: add DC_SHA1 knob
      t0013: add a basic sha1 collision detection test
      hash-object: fix buffer reuse with --path in a subdirectory
      prefix_filename: move docstring to header file
      prefix_filename: drop length parameter
      prefix_filename: return newly allocated string
      prefix_filename: simplify windows #ifdef
      bundle: use prefix_filename with bundle path
      pager_in_use: use git_env_bool()
      fast-import: use xsnprintf for writing sha1s
      fast-import: use xsnprintf for formatting headers
      encode_in_pack_object_header: respect output buffer length
      pack.h: define largest possible encoded object size
      do not check odb_mkstemp return value for errors
      odb_mkstemp: write filename into strbuf
      odb_mkstemp: use git_path_buf
      Makefile: detect errors in running spatch
      difftool: avoid strcpy
      diff: avoid fixed-size buffer for patch-ids
      tag: use strbuf to format tag header
      fetch: use heap buffer to format reflog
      avoid using fixed PATH_MAX buffers for refs
      avoid using mksnpath for refs
      create_branch: move msg setup closer to point of use
      create_branch: use xstrfmt for reflog message
      name-rev: replace static buffer with strbuf
      receive-pack: print --pack-header directly into argv array
      replace unchecked snprintf calls with heap buffers
      combine-diff: replace malloc/snprintf with xstrfmt
      convert unchecked snprintf into xsnprintf
      transport-helper: replace checked snprintf with xsnprintf
      gc: replace local buffer with git_path
      daemon: use an argv_array to exec children
      sha1_loose_object_info: return error for corrupted objects
      index-pack: detect local corruption in collision check
      connect.c: handle errors from split_cmdline

Johannes Schindelin (20):
      git_connect(): factor out SSH variant handling
      rebase--helper: add a builtin helper for interactive rebases
      rebase -i: use the rebase--helper builtin
      rev-parse: fix several options when running in a subdirectory
      t7006: replace dubious test
      setup_git_directory(): use is_dir_sep() helper
      setup: prepare setup_discovered_git_dir() for the root directory
      setup_git_directory_1(): avoid changing global state
      setup: introduce the discover_git_directory() function
      setup: make read_early_config() reusable
      read_early_config(): avoid .git/config hack when unneeded
      read_early_config(): really discover .git/
      t1309: test read_early_config()
      setup_git_directory_gently_1(): avoid die()ing
      t1309: document cases where we would want early config not to die()
      setup.c: mention unresolved problems
      t7504: document regression: reword no longer calls commit-msg
      sequencer: make commit options more extensible
      sequencer: allow the commit-msg hooks to run during a `reword`
      difftool: fix use-after-free

Jonathan Nieder (1):
      has_sha1_file: don't bother if we are not in a repository

Junio C Hamano (41):
      merge: drop 'git merge <message> HEAD <commit>' syntax
      connect: rename tortoiseplink and putty variables
      commit.c: use strchrnul() to scan for one line
      attr.c: use strchrnul() to scan for one line
      attr.c: update a stale comment on "struct match_attr"
      attr.c: explain the lack of attr-name syntax check in parse_attr()
      attr.c: complete a sentence in a comment
      attr.c: mark where #if DEBUG ends more clearly
      attr.c: simplify macroexpand_one()
      attr.c: tighten constness around "git_attr" structure
      attr.c: plug small leak in parse_attr_line()
      attr.c: add push_stack() helper
      attr.c: outline the future plans by heavily commenting
      attr: rename function and struct related to checking attributes
      attr: (re)introduce git_check_attr() and struct attr_check
      attr: convert git_all_attrs() to use "struct attr_check"
      attr: convert git_check_attrs() callers to use the new API
      attr: retire git_check_attrs() API
      attr: change validity check for attribute names to use positive logic
      ref-filter: resurrect "strip" as a synonym to "lstrip"
      connect.c: stop conflating ssh command names and overrides
      First batch after 2.12
      branch: honor --abbrev/--no-abbrev in --list mode
      Second batch after 2.12
      Third batch after 2.12
      Fourth batch after 2.12
      Makefile: make DC_SHA1 the default
      Fifth batch for 2.13
      Sixth batch for 2.13
      tests: lint for run-away here-doc
      branch doc: update description for `--list`
      Seventh batch for 2.13
      sha1dc: avoid CPP macro collisions
      Eighth batch for 2.13
      Ninth batch for 2.13
      Tenth batch for 2.13
      remote.[ch]: parse_push_cas_option() can be static
      contrib/git-resurrect.sh: do not write \t for HT in sed scripts
      Eleventh batch for 2.13
      Twelfth batch for 2.13
      Git 2.13-rc0

Karthik Nayak (20):
      ref-filter: implement %(if), %(then), and %(else) atoms
      ref-filter: include reference to 'used_atom' within 'atom_value'
      ref-filter: implement %(if:equals=<string>) and %(if:notequals=<string>)
      ref-filter: modify "%(objectname:short)" to take length
      ref-filter: move get_head_description() from branch.c
      ref-filter: introduce format_ref_array_item()
      ref-filter: make %(upstream:track) prints "[gone]" for invalid upstreams
      ref-filter: add support for %(upstream:track,nobracket)
      ref-filter: make "%(symref)" atom work with the ':short' modifier
      ref-filter: introduce refname_atom_parser_internal()
      ref-filter: introduce refname_atom_parser()
      ref-filter: make remote_ref_atom_parser() use refname_atom_parser_internal()
      ref-filter: rename the 'strip' option to 'lstrip'
      ref-filter: Do not abruptly die when using the 'lstrip=<N>' option
      ref-filter: modify the 'lstrip=<N>' option to work with negative '<N>'
      ref-filter: add an 'rstrip=<N>' option to atoms which deal with refnames
      ref-filter: allow porcelain to translate messages in the output
      branch, tag: use porcelain output
      branch: use ref-filter printing APIs
      branch: implement '--format' option

Kevin Willford (2):
      name-hash: fix buffer overrun
      t3008: skip lazy-init test on a single-core box

Kyle Meyer (10):
      delete_ref: accept a reflog message argument
      update-ref: pass reflog message to delete_ref()
      rename_ref: replace empty message in HEAD's log
      branch: record creation of renamed branch in HEAD's log
      t1400: rename test descriptions to be unique
      t1400: set core.logAllRefUpdates in "logged by touch" tests
      t1400: use test_path_is_* helpers
      t1400: remove a set of unused output files
      t1400: use test_when_finished for cleanup
      doc/revisions: remove brackets from rev^-n shorthand

Lars Schneider (1):
      travis-ci: build and test Git on Windows

Linus Torvalds (3):
      pathspec magic: add '^' as alias for '!'
      pathspec: don't error out on all-exclusionary pathspec patterns
      mailinfo: fix in-body header continuations

Luke Diamand (3):
      git-p4: add failing test for name-rev rather than symbolic-ref
      git-p4: add read_pipe_text() internal function
      git-p4: don't use name-rev to get current branch

Matt McCutchen (1):
      merge-recursive: make "CONFLICT (rename/delete)" message show both paths

Michael Haggerty (32):
      files_rename_ref(): tidy up whitespace
      refname_is_safe(): correct docstring
      t5505: use "for-each-ref" to test for the non-existence of references
      safe_create_leading_directories_const(): preserve errno
      safe_create_leading_directories(): set errno on SCLD_EXISTS
      raceproof_create_file(): new function
      lock_ref_sha1_basic(): inline constant
      lock_ref_sha1_basic(): use raceproof_create_file()
      rename_tmp_log(): use raceproof_create_file()
      rename_tmp_log(): improve error reporting
      log_ref_write(): inline function
      log_ref_setup(): separate code for create vs non-create
      log_ref_setup(): improve robustness against races
      log_ref_setup(): pass the open file descriptor back to the caller
      log_ref_write_1(): don't depend on logfile argument
      log_ref_setup(): manage the name of the reflog file internally
      log_ref_write_1(): inline function
      delete_ref_loose(): derive loose reference path from lock
      delete_ref_loose(): inline function
      try_remove_empty_parents(): rename parameter "name" -> "refname"
      try_remove_empty_parents(): don't trash argument contents
      try_remove_empty_parents(): teach to remove parents of reflogs, too
      files_transaction_commit(): clean up empty directories
      refs: reorder some function definitions
      refs: make some ref_store lookup functions private
      refs: remove some unnecessary handling of submodule == ""
      register_ref_store(): new function
      refs: store submodule ref stores in a hashmap
      refs: push the submodule attribute down
      base_ref_store_init(): remove submodule argument
      files_ref_store::submodule: use NULL for the main repository
      read_loose_refs(): read refs using resolve_ref_recursively()

Michael J Gruber (3):
      git-prompt: add a describe style for any tags
      describe: localize debug output fully
      l10n: de: translate describe debug terms

Michael Rappazzo (1):
      rev-parse tests: add tests executed from a subdirectory

Mike Hommey (1):
      notes: do not break note_tree structure in note_tree_consolidate()

Mostyn Bramley-Moore (1):
      Documentation: document elements in "ls-files -s" output in order

Nguyễn Thái Ngọc Duy (33):
      attr: support quoting pathname patterns in C style
      clean: use warning_errno() when appropriate
      config.txt: clarify multiple key values in include.path
      config.txt: reflow the second include.path paragraph
      config: add conditional include
      refs.h: add forward declaration for structs used in this file
      files-backend: make files_log_ref_write() static
      files-backend.c: delete dead code in files_ref_iterator_begin()
      files-backend: delete dead code in files_init_db()
      files-backend: add and use files_packed_refs_path()
      files-backend: make sure files_rename_ref() always reach the end
      files-backend: convert git_path() to strbuf_git_path()
      files-backend: move "logs/" out of TMP_RENAMED_LOG
      files-backend: add and use files_reflog_path()
      files-backend: add and use files_ref_path()
      files-backend: remove the use of git_path()
      refs.c: introduce get_main_ref_store()
      refs: rename lookup_ref_store() to lookup_submodule_ref_store()
      refs.c: flatten get_ref_store() a bit
      refs.c: kill register_ref_store(), add register_submodule_ref_store()
      refs.c: make get_main_ref_store() public and use it
      path.c: move some code out of strbuf_git_path_submodule()
      refs: move submodule code out of files-backend.c
      files-backend: replace submodule_allowed check in files_downcast()
      refs: rename get_ref_store() to get_submodule_ref_store() and make it public
      refs: add new ref-store api
      refs: new transaction related ref-store api
      files-backend: avoid ref api targeting main ref store
      refs: delete pack_refs() in favor of refs_pack_refs()
      t/helper: add test-ref-store to test ref-store functions
      t1405: some basic tests on main ref store
      t1406: new tests for submodule ref store
      refs.h: add a note about sorting order of for_each_ref_*

Patrick Steinhardt (5):
      mailmap: add Patrick Steinhardt's work address
      urlmatch: enable normalization of URLs with globs
      urlmatch: split host and port fields in `struct url_info`
      urlmatch: include host in urlmatch ranking
      urlmatch: allow globbing for the URL host part

Quentin Pradet (1):
      git-bisect.txt: add missing word

Ralf Thielow (2):
      submodule.c: add missing ' in error messages
      git-add--interactive.perl: add missing dot in a message

Ramsay Jones (1):
      name-hash: add test-lazy-init-name-hash to .gitignore

René Scharfe (4):
      log-tree: factor out fmt_output_email_subject()
      pretty: use fmt_output_email_subject()
      strbuf: support long paths w/o read rights in strbuf_getcwd() on FreeBSD
      test-read-cache: setup git dir

SZEDER Gábor (41):
      completion: improve __git_refs()'s in-code documentation
      completion tests: don't add test cruft to the test repository
      completion tests: make the $cur variable local to the test helper functions
      completion tests: consolidate getting path of current working directory
      completion tests: check __gitdir()'s output in the error cases
      completion tests: add tests for the __git_refs() helper function
      completion: ensure that the repository path given on the command line exists
      completion: fix most spots not respecting 'git --git-dir=<path>'
      completion: respect 'git --git-dir=<path>' when listing remote refs
      completion: list refs from remote when remote's name matches a directory
      completion: don't list 'HEAD' when trying refs completion outside of a repo
      completion: list short refs from a remote given as a URL
      completion: don't offer commands when 'git --opt' needs an argument
      completion: fix completion after 'git -C <path>'
      rev-parse: add '--absolute-git-dir' option
      completion: respect 'git -C <path>'
      completion: don't use __gitdir() for git commands
      completion: consolidate silencing errors from git commands
      completion: don't guard git executions with __gitdir()
      completion: extract repository discovery from __gitdir()
      completion: cache the path to the repository
      completion: restore removed line continuating backslash
      completion: remove redundant __gitcomp_nl() options from _git_commit()
      completion: wrap __git_refs() for better option parsing
      completion: support completing full refs after '--option=refs/<TAB>'
      completion: support completing fully qualified non-fast-forward refspecs
      completion: support excluding full refs
      completion: don't disambiguate tags and branches
      completion: don't disambiguate short refs
      completion: let 'for-each-ref' and 'ls-remote' filter matching refs
      completion: let 'for-each-ref' strip the remote name from remote branches
      completion: let 'for-each-ref' filter remote branches for 'checkout' DWIMery
      completion: let 'for-each-ref' sort remote branches for 'checkout' DWIMery
      completion: fill COMPREPLY directly when completing refs
      completion: fill COMPREPLY directly when completing fetch refspecs
      completion: speed up branch and tag completion
      refs.c: use skip_prefix() in prettify_refname()
      completion: put matching ctags symbol names directly into COMPREPLY
      completion: extract completing ctags symbol names into helper function
      completion: offer ctags symbol names for 'git log -S', '-G' and '-L:'
      t6500: wait for detached auto gc at the end of the test script

Segev Finer (2):
      connect: handle putty/plink also in GIT_SSH_COMMAND
      connect: Add the envvar GIT_SSH_VARIANT and ssh.variant config

Stefan Beller (32):
      Documentation: fix a typo
      submodule init: warn about falling back to a local path
      rev-parse: add --show-superproject-working-tree
      connect_work_tree_and_git_dir: safely create leading directories
      lib-submodule-update.sh: reorder create_lib_submodule_repo
      lib-submodule-update.sh: do not use ./. as submodule remote
      lib-submodule-update: teach test_submodule_content the -C <dir> flag
      lib-submodule-update.sh: replace sha1 by hash
      lib-submodule-update.sh: define tests for recursing into submodules
      make is_submodule_populated gently
      update submodules: add submodule config parsing
      update submodules: add a config option to determine if submodules are updated
      submodules: introduce check to see whether to touch a submodule
      update submodules: move up prepare_submodule_repo_env
      submodule.c: get_super_prefix_or_empty
      update submodules: add submodule_move_head
      unpack-trees: pass old oid to verify_clean_submodule
      unpack-trees: check if we can perform the operation for submodules
      entry.c: create submodules when interesting
      builtin/checkout: add --recurse-submodules switch
      builtin/read-tree: add --recurse-submodules switch
      builtin/describe: introduce --broken flag
      submodule.c: use argv_array in is_submodule_modified
      submodule.c: factor out early loop termination in is_submodule_modified
      submodule.c: convert is_submodule_modified to use strbuf_getwholeline
      submodule.c: port is_submodule_modified to use porcelain 2
      submodule.c: stricter checking for submodules in is_submodule_modified
      short status: improve reporting for submodule changes
      unpack-trees.c: align submodule error message to the other error messages
      submodule.c: correctly handle nested submodules in is_submodule_modified
      diff: submodule inline diff to initialize env array.
      submodule--helper: fix typo in is_active error message

Thomas Gummerer (9):
      stash: introduce push verb
      stash: add test for the create command line arguments
      stash: refactor stash_create
      stash: teach 'push' (and 'create_stash') to honor pathspec
      stash: use stash_push for no verb form
      stash: allow pathspecs in the no verb form
      stash: don't show internal implementation details
      stash: pass the pathspec argument to git reset
      stash: keep untracked files intact in stash -k

Valery Tolstov (1):
      submodule--helper.c: remove duplicate code

Vegard Nossum (1):
      xdiff -W: relax end-of-file function detection

brian m. carlson (41):
      hex: introduce parse_oid_hex
      builtin/commit: convert to struct object_id
      builtin/diff-tree: convert to struct object_id
      builtin/describe: convert to struct object_id
      builtin/fast-export: convert to struct object_id
      builtin/fmt-merge-message: convert to struct object_id
      builtin/grep: convert to struct object_id
      builtin/branch: convert to struct object_id
      builtin/clone: convert to struct object_id
      builtin/merge: convert to struct object_id
      Convert remaining callers of resolve_refdup to object_id
      builtin/replace: convert to struct object_id
      reflog-walk: convert struct reflog_info to struct object_id
      refs: convert each_reflog_ent_fn to struct object_id
      refs: simplify parsing of reflog entries
      sha1_file: introduce an nth_packed_object_oid function
      Convert object iteration callbacks to struct object_id
      builtin/merge-base: convert to struct object_id
      wt-status: convert to struct object_id
      hash.h: move SHA-1 implementation selection into a header file
      Define new hash-size constants for allocating memory
      Convert GIT_SHA1_HEXSZ used for allocation to GIT_MAX_HEXSZ
      Convert GIT_SHA1_RAWSZ used for allocation to GIT_MAX_RAWSZ
      builtin/diff: convert to struct object_id
      builtin/pull: convert portions to struct object_id
      builtin/receive-pack: fix incorrect pointer arithmetic
      builtin/receive-pack: convert portions to struct object_id
      fsck: convert init_skiplist to struct object_id
      parse-options-cb: convert sha1_array_append caller to struct object_id
      test-sha1-array: convert most code to struct object_id
      sha1_name: convert struct disambiguate_state to object_id
      sha1_name: convert disambiguate_hint_fn to take object_id
      submodule: convert check_for_new_submodule_commits to object_id
      builtin/pull: convert to struct object_id
      sha1-array: convert internal storage for struct sha1_array to object_id
      Make sha1_array_append take a struct object_id *
      Convert remaining callers of sha1_array_lookup to object_id
      Convert sha1_array_lookup to take struct object_id
      Convert sha1_array_for_each_unique and for_each_abbrev to object_id
      Rename sha1_array to oid_array
      Documentation: update and rename api-sha1-array.txt

Ævar Arnfjörð Bjarmason (25):
      tag doc: move the description of --[no-]merged earlier
      tag doc: split up the --[no-]merged documentation
      tag doc: reword --[no-]merged to talk about commits, not tips
      ref-filter: make combining --merged & --no-merged an error
      doc/SubmittingPatches: clarify the casing convention for "area: change..."
      t/README: link to metacpan.org, not search.cpan.org
      t/README: change "Inside <X> part" to "Inside the <X> part"
      ref-filter: add test for --contains on a non-commit
      tag: remove a TODO item from the test suite
      tag tests: fix a typo in a test description
      for-each-ref: partly change <object> to <commit> in help
      branch doc: change `git branch <pattern>` to use `<branchname>`
      tag: add more incompatibles mode tests
      parse-options: add OPT_NONEG to the "contains" option
      tag: change misleading --list <pattern> documentation
      tag: implicitly supply --list given another list-like option
      tag: change --point-at to default to HEAD
      ref-filter: add --no-contains option to tag/branch/for-each-ref
      ref-filter: reflow recently changed branch/tag/for-each-ref docs
      tag: add tests for --with and --without
      t/README: clarify the test_have_prereq documentation
      doc/SubmittingPatches: show how to get a CLI commit summary
      rev-parse: match @{upstream}, @{u} and @{push} case-insensitively
      perl: regenerate perl.mak if perl -V changes
      grep: plug a trivial memory leak


Version v2.12.5; changes since v2.12.4:
---------------------------------------

Jeff King (3):
      shell: drop git-cvsserver support by default
      archimport: use safe_pipe_capture for user input
      cvsimport: shell-quote variable used in backticks

Junio C Hamano (5):
      cvsserver: move safe_pipe_capture() to the main package
      cvsserver: use safe_pipe_capture for `constant commands` as well
      Git 2.10.5
      Git 2.11.4
      Git 2.12.5

joernchen (1):
      cvsserver: use safe_pipe_capture instead of backticks


Version v2.12.4; changes since v2.12.3:
---------------------------------------

Jeff King (5):
      t/lib-proto-disable: restore protocol.allow after config tests
      t5813: add test for hostname starting with dash
      connect: factor out "looks like command line option" check
      connect: reject dashed arguments for proxy commands
      connect: reject paths that look like command line options

Junio C Hamano (7):
      connect: reject ssh hostname that begins with a dash
      Git 2.7.6
      Git 2.8.6
      Git 2.9.5
      Git 2.10.4
      Git 2.11.3
      Git 2.12.4


Version v2.12.3; changes since v2.12.2:
---------------------------------------

Devin J. Pohly (4):
      t7003: ensure --prune-empty can prune root commit
      t7003: ensure --prune-empty removes entire branch when applicable
      filter-branch: fix --prune-empty on parentless commits
      p7000: add test for filter-branch with --prune-empty

Eric Wong (2):
      http: inform about alternates-as-redirects behavior
      http: release strbuf on disabled alternates

Jeff King (32):
      pack-objects: enforce --depth limit in reused deltas
      pack-objects: convert recursion to iteration in break_delta_chain()
      ident: mark error messages for translation
      ident: handle NULL email when complaining of empty name
      ident: reject all-crud ident name
      ident: do not ignore empty config name/email
      parse_config_key: use skip_prefix instead of starts_with
      parse_config_key: allow matching single-level config
      parse_hide_refs_config: tell parse_config_key we don't want a subsection
      interpret_branch_name(): handle auto-namelen for @{-1}
      interpret_branch_name: move docstring to header file
      strbuf_branchname: drop return value
      strbuf_branchname: add docstring
      interpret_branch_name: allow callers to restrict expansions
      t3204: test git-branch @-expansion corner cases
      branch: restrict @-expansions when deleting
      strbuf_check_ref_format(): expand only local branches
      checkout: restrict @-expansions when finding branch
      t/perf: use $MODERN_GIT for all repo-copying steps
      t/perf: add fallback for pre-bin-wrappers versions of git
      t: add an interoperability test harness
      t/interop: add test of old clients against modern git-daemon
      rev-parse: use skip_prefix when parsing options
      rev-parse: add helper for parsing "--foo/--foo="
      rev-parse: simplify parsing of ref options
      move odb_* declarations out of git-compat-util.h
      sha1_file.c: make pack-name helper globally accessible
      odb_pack_keep(): stop generating keepfile name
      replace snprintf with odb_pack_name()
      index-pack: make pointer-alias fallbacks safer
      run-command: fix segfault when cleaning forked async process
      shell: disallow repo names beginning with dash

Jonathan Tan (1):
      t/perf: export variable used in other blocks

Junio C Hamano (12):
      t5615: fix a here-doc syntax error
      t7406: correct test case for submodule-update initial population
      Prepare for 2.12.3
      Git 2.4.12
      Git 2.5.6
      Git 2.6.7
      Git 2.7.5
      Git 2.8.5
      Git 2.9.4
      Git 2.10.3
      Git 2.11.2
      Git 2.12.3

Kyle Meyer (1):
      doc/config: grammar fixes for core.{editor,commentChar}

Matt McCutchen (3):
      fetch-pack: move code to report unmatched refs to a function
      fetch_refs_via_pack: call report_unmatched_refs
      fetch-pack: add specific error for fetching an unadvertised object

René Scharfe (7):
      cocci: use ALLOC_ARRAY
      strbuf: add strbuf_add_real_path()
      blame: move blame_entry duplication to add_blame_entry()
      receive-pack: simplify run_update_post_hook()
      http-push: don't check return value of lookup_unknown_object()
      revision: remove declaration of path_name()
      shortlog: don't set after_subject to an empty string

SZEDER Gábor (3):
      tests: create an interactive gdb session with the 'debug' helper
      tests: make the 'test_pause' helper work in non-verbose mode
      pickaxe: fix segfault with '-S<...> --pickaxe-regex'

Santiago Torres (1):
      t7004, t7030: fix here-doc syntax errors

Stefan Beller (3):
      refs: parse_hide_refs_config to use parse_config_key
      wt-status: simplify by using for_each_string_list_item
      t3600: rename test to describe its functionality

Ævar Arnfjörð Bjarmason (3):
      cvs tests: skip tests that call "cvs commit" when running as root
      gitweb tests: change confusing "skip_all" phrasing
      gitweb tests: skip tests when we don't have Time::HiRes


Version v2.12.2; changes since v2.12.1:
---------------------------------------

David Turner (1):
      gc: ignore old gc.log files

Eric Wong (1):
      README: create HTTP/HTTPS links from URLs in Markdown

Jeff King (20):
      grep: move thread initialization a little lower
      grep: re-order rev-parsing loop
      grep: fix "--" rev/pathspec disambiguation
      grep: avoid resolving revision names in --no-index case
      grep: do not diagnose misspelt revs with --no-index
      show-branch: drop head_len variable
      show-branch: store resolved head in heap buffer
      remote: avoid reading $GIT_DIR config in non-repo
      grep: treat revs the same for --untracked as for --no-index
      show-branch: use skip_prefix to drop magic numbers
      tempfile: set errno to a known value before calling ferror()
      t6300: avoid creating refs/heads/HEAD
      ewah: fix eword_t/uint64_t confusion
      receive-pack: fix deadlock when we cannot create tmpdir
      send-pack: extract parsing of "unpack" response
      send-pack: use skip_prefix for parsing unpack status
      send-pack: improve unpack-status error messages
      send-pack: read "unpack" status even on pack-objects failure
      send-pack: report signal death of pack-objects
      http-walker: fix buffer underflow processing remote alternates

Johan Hovold (1):
      send-email: only allow one address per body tag

Jonathan Nieder (1):
      remote helpers: avoid blind fall-back to ".git" when setting GIT_DIR

Jonathan Tan (2):
      grep: do not unnecessarily query repo for "--"
      upload-pack: report "not our ref" to client

Junio C Hamano (5):
      config: move a few helper functions up
      config: use git_config_parse_key() in git_config_parse_parameter()
      diff: do not short-cut CHECK_SIZE_ONLY check in diff_populate_filespec()
      Prepare for 2.12.2
      Git 2.12.2

Michael J Gruber (2):
      git-status: make porcelain more robust
      mailmap: use Michael J Gruber's new address

Nguyễn Thái Ngọc Duy (1):
      git-commit.txt: list post-rewrite in HOOKS section

Patrick Steinhardt (2):
      docs/diffcore: fix grammar in diffcore-rename header
      docs/diffcore: unquote "Complete Rewrites" in headers

Ramsay Jones (2):
      wrapper.c: remove unused git_mkstemp() function
      wrapper.c: remove unused gitmkstemps() function

René Scharfe (3):
      sha1_file: release fallback base's memory in unpack_entry()
      commit: be more precise when searching for headers
      commit: don't check for space twice when looking for header

Ross Lagerwall (1):
      remote: ignore failure to remove missing branch.<name>.merge

Sebastian Schuberth (1):
      contrib: git-remote-{bzr,hg} placeholders don't need Python

Stefan Beller (1):
      submodule-config: correct error reporting for invalid ignore value

Ævar Arnfjörð Bjarmason (2):
      doc: change erroneous --[no]-whatever into --[no-]whatever
      push: mention "push.default=tracking" in the documentation


Version v2.12.1; changes since v2.12.0:
---------------------------------------

Allan Xavier (1):
      line-log.c: prevent crash during union of too many ranges

Jeff Hostetler (1):
      mingw: use OpenSSL's SHA-1 routines

Jeff King (3):
      http: restrict auth methods to what the server advertises
      http: add an "auto" mode for http.emptyauth
      add--interactive: fix missing file prompt for patch mode with "-i"

Johannes Schindelin (3):
      Travis: also test on 32-bit Linux
      t1501: demonstrate NULL pointer access with invalid GIT_WORK_TREE
      real_pathdup(): fix callsites that wanted it to die on error

Jonathan Tan (1):
      http: attempt updating base URL only if no error

Junio C Hamano (2):
      Preparing for 2.12.1
      Git 2.12.1

Maxim Moseychuk (2):
      stop_progress_msg: convert xsnprintf to xstrfmt
      bisect_next_all: convert xsnprintf to xstrfmt

Vegard Nossum (1):
      line-log: use COPY_ARRAY to fix mis-sized memcpy


Version v2.12.0; changes since v2.12.0-rc2:
-------------------------------------------

Alexander Shopov (1):
      l10n: bg:  Updated Bulgarian translation (2913t+0f+0u)

Anthony Ramine (1):
      l10n: fr.po: Fix a typo in the French translation

Changwoo Ryu (2):
      l10n: ko.po: Update Korean translation
      l10n: ko.po: Update Korean translation

Damien Regad (1):
      git-check-ref-format: clarify documentation for --normalize

Eric Wong (1):
      git-svn: escape backslashes in refnames

Grégoire Paris (1):
      init: document dotfiles exclusion on template copy

Jean-Noël Avila (2):
      l10n: fr.po: v2.11-rc0 first round
      l10n: fr.po: v2.12.0 round 2 3139t

Jiang Xin (3):
      l10n: git.pot: v2.12.0 round 1 (239 new, 15 removed)
      l10n: git.pot: v2.12.0 round 2 (2 new)
      l10n: zh_CN: for git v2.12.0 l10n round 2

Joachim Jablon (2):
      l10n: fr.po: Fix typos
      l10n: fr.po: Remove gender specific adjectives

Jordi Mas (4):
      l10n: New Catalan translation maintainer
      l10n: fixes to Catalan translation
      l10n: update Catalan translation
      l10n: Update Catalan translation

Junio C Hamano (1):
      Git 2.12

Patrick Steinhardt (1):
      docs/git-gc: fix default value for `--aggressiveDepth`

Peter Krefting (2):
      l10n: sv.po: Update Swedish translation (3137t0f0u)
      l10n: sv.po: Update Swedish translation (3139t0f0u)

Ralf Thielow (2):
      l10n: de.po: translate 241 messages
      git add -i: replace \t with blanks in the help message

Ray Chen (1):
      l10n: zh_CN: review for git v2.11.0 l10n

Trần Ngọc Quân (2):
      l10n: vi.po: Updated Vietnamese translation (3137t)
      l10n: vi.po (3139t): Updated 2 new messages for rc1

Vasco Almeida (1):
      l10n: pt_PT: update Portuguese tranlation

brian m. carlson (2):
      Documentation: correctly spell git worktree --detach
      Documentation: use brackets for optional arguments


Version v2.12.0-rc2; changes since v2.12.0-rc1:
-----------------------------------------------

Cornelius Weig (7):
      completion: teach submodule subcommands to complete options
      completion: add subcommand completion for rerere
      completion: improve bash completion for git-add
      completion: teach ls-remote to complete options
      completion: teach replace to complete options
      completion: teach remote subcommands to complete options
      completion: recognize more long-options

David Pursehouse (1):
      config.txt: fix formatting of submodule.alternateErrorStrategy section

Jacob Keller (1):
      reset: add an example of how to split a commit into two

Jeff King (3):
      docs/gitremote-helpers: fix unbalanced quotes
      docs/git-submodule: fix unbalanced quote
      tempfile: avoid "ferror | fclose" trick

Johannes Schindelin (1):
      mingw: make stderr unbuffered again

Junio C Hamano (4):
      A bit more for -rc2
      Revert "reset: add an example of how to split a commit into two"
      Hopefully the final batch of mini-topics before the final
      Git 2.12-rc2

Lars Schneider (1):
      git-p4: fix git-p4.pathEncoding for removed files

René Scharfe (9):
      add SWAP macro
      apply: use SWAP macro
      use SWAP macro
      diff: use SWAP macro
      graph: use SWAP macro
      cocci: detect useless free(3) calls
      ls-files: pass prefix length explicitly to prune_cache()
      ls-files: move only kept cache entries in prune_cache()
      rm: reuse strbuf for all remove_dir_recursively() calls, again

Stefan Beller (4):
      submodule documentation: add options to the subcommand
      submodule update documentation: don't repeat ourselves
      push options: pass push options to the transport helper
      Documentation: unify bottom "part of git suite" lines

Thomas Gummerer (1):
      Documentation/stash: remove mention of git reset --hard


Version v2.12.0-rc1; changes since v2.12.0-rc0:
-----------------------------------------------

Cornelius Weig (2):
      doc: add doc for git-push --recurse-submodules=only
      completion: add completion for --recurse-submodules=only

David Aguilar (3):
      difftool: fix bug when printing usage
      t7800: simplify basic usage test
      t7800: replace "wc -l" with test_line_count

Denton Liu (1):
      Document the --no-gui option in difftool

Eric Wong (1):
      completion: fix git svn authorship switches

Jacob Keller (1):
      reset: add an example of how to split a commit into two

Jeff King (1):
      diff: print line prefix for --name-only output

Junio C Hamano (1):
      Git 2.12-rc1

Nguyễn Thái Ngọc Duy (1):
      rev-list-options.txt: update --all about HEAD

Patrick Steinhardt (1):
      worktree: fix option descriptions for `prune`

René Scharfe (2):
      p5302: create repositories for index-pack results explicitly
      dir: avoid allocation in fill_directory()


Version v2.12.0-rc0; changes since v2.11.4:
-------------------------------------------

Alex Henrie (3):
      bisect: improve English grammar of not-ancestors message
      receive-pack: improve English grammar of denyCurrentBranch message
      clone,fetch: explain the shallow-clone option a little more clearly

Brandon Williams (38):
      real_path: resolve symlinks by hand
      real_path: convert real_path_internal to strbuf_realpath
      real_path: create real_pathdup
      real_path: have callers use real_pathdup and strbuf_realpath
      lib-proto-disable: variable name fix
      http: always warn if libcurl version is too old
      transport: add protocol policy config option
      http: create function to get curl allowed protocols
      transport: add from_user parameter to is_transport_allowed
      transport: reformat flag #defines to be more readable
      submodules: add RECURSE_SUBMODULES_ONLY value
      push: add option to push only submodules
      submodules: add helper to determine if a submodule is populated
      submodules: add helper to determine if a submodule is initialized
      submodules: load gitmodules file from commit sha1
      grep: add submodules as a grep source type
      grep: optionally recurse into submodules
      grep: enable recurse-submodules to work on <tree> objects
      grep: search history of moved submodules
      mv: remove use of deprecated 'get_pathspec()'
      dir: remove struct path_simplify
      dir: convert fill_directory to use the pathspec struct interface
      ls-tree: convert show_recursive to use the pathspec struct interface
      pathspec: remove the deprecated get_pathspec function
      pathspec: copy and free owned memory
      pathspec: remove unused variable from unsupported_magic
      pathspec: always show mnemonic and name in unsupported_magic
      pathspec: simpler logic to prefix original pathspec elements
      pathspec: factor global magic into its own function
      pathspec: create parse_short_magic function
      pathspec: create parse_long_magic function
      pathspec: create parse_element_magic helper
      pathspec: create strip submodule slash helpers
      pathspec: small readability changes
      pathspec: rename prefix_pathspec to init_pathspec_item
      real_path: prevent redefinition of MAXSYMLINKS
      real_path: set errno when max number of symlinks is exceeded
      index: improve constness for reading blob data

Chris Packham (3):
      merge: add '--continue' option as a synonym for 'git commit'
      completion: add --continue option for merge
      merge: ensure '--abort' option takes no arguments

Cornelius Weig (5):
      doc: clarify distinction between sign-off and pgp-signing
      config: add markup to core.logAllRefUpdates doc
      refs: add option core.logAllRefUpdates = always
      update-ref: add test cases for bare repository
      doc: add note about ignoring '--no-create-reflog'

David Aguilar (1):
      gitk: Remove translated message from comments

Dimitriy Ryazantcev (1):
      gitk: ru.po: Update Russian translation

Elia Pinto (2):
      builtin/commit.c: remove the PATH_MAX limitation via dynamic allocation
      builtin/commit.c: switch to strbuf, instead of snprintf()

George Vanburgh (1):
      git-p4: fix git-p4.mapUser on Windows

Heiko Voigt (1):
      help: improve is_executable() on Windows

Igor Kushnir (1):
      git-p4: do not pass '-r 0' to p4 commands

Jacob Keller (2):
      pretty: add %(trailers) format for displaying trailers of a commit message
      ref-filter: add support to display trailers as part of contents

Jeff King (25):
      xdiff: drop XDL_FAST_HASH
      http: respect protocol.*.allow=user for http-alternates
      merge: mark usage error strings for translation
      shortlog: test and document --committer option
      Revert "vreportf: avoid intermediate buffer"
      vreport: sanitize ASCII control chars
      t1450: refactor loose-object removal
      sha1_file: fix error message for alternate objects
      t1450: test fsck of packed objects
      sha1_file: add read_loose_object() function
      fsck: parse loose object paths directly
      fsck: detect trailing garbage in all object types
      t1450: clean up sub-objects in duplicate-entry test
      fsck: report trees as dangling
      fsck: prepare dummy objects for --connectivity-check
      fsck: tighten error-checks of "git fsck <head>"
      fsck: do not fallback "git fsck <bogus>" to "git fsck"
      fsck: check HAS_OBJ more consistently
      clear_delta_base_cache(): don't modify hashmap while iterating
      t1450: use "mv -f" within loose object directory
      difftool: hack around -Wzero-length-format warning
      fsck: move typename() printing to its own function
      fsck: lazily load types under --connectivity-only
      color_parse_mem: allow empty color spec
      document behavior of empty color name

Johannes Schindelin (50):
      mingw: add a regression test for pushing to UNC paths
      giteveryday: unbreak rendering with AsciiDoctor
      sequencer: avoid unnecessary curly braces
      sequencer: move "else" keyword onto the same line as preceding brace
      sequencer: use a helper to find the commit message
      sequencer: support a new action: 'interactive rebase'
      sequencer (rebase -i): implement the 'noop' command
      sequencer (rebase -i): implement the 'edit' command
      sequencer (rebase -i): implement the 'exec' command
      sequencer (rebase -i): learn about the 'verbose' mode
      sequencer (rebase -i): write the 'done' file
      sequencer (rebase -i): add support for the 'fixup' and 'squash' commands
      sequencer (rebase -i): implement the short commands
      sequencer (rebase -i): write an author-script file
      sequencer (rebase -i): allow continuing with staged changes
      sequencer (rebase -i): remove CHERRY_PICK_HEAD when no longer needed
      sequencer (rebase -i): skip some revert/cherry-pick specific code path
      sequencer (rebase -i): the todo can be empty when continuing
      sequencer (rebase -i): update refs after a successful rebase
      sequencer (rebase -i): leave a patch upon error
      sequencer (rebase -i): implement the 'reword' command
      sequencer (rebase -i): allow fast-forwarding for edit/reword
      sequencer (rebase -i): refactor setting the reflog message
      sequencer (rebase -i): set the reflog message consistently
      sequencer (rebase -i): copy commit notes at end
      sequencer (rebase -i): record interrupted commits in rewritten, too
      sequencer (rebase -i): run the post-rewrite hook, if needed
      sequencer (rebase -i): respect the rebase.autostash setting
      sequencer (rebase -i): respect strategy/strategy_opts settings
      sequencer (rebase -i): allow rescheduling commands
      sequencer (rebase -i): implement the 'drop' command
      sequencer (rebase -i): differentiate between comments and 'noop'
      difftool: add a skeleton for the upcoming builtin
      sequencer: update reading author-script
      sequencer: use run_command() directly
      sequencer (rebase -i): show only failed `git commit`'s output
      sequencer (rebase -i): show only failed cherry-picks' output
      sequencer (rebase -i): suggest --edit-todo upon unknown command
      sequencer (rebase -i): show the progress
      sequencer (rebase -i): write the progress into files
      sequencer (rebase -i): write out the final message
      difftool: implement the functionality in the builtin
      difftool: retire the scripted version
      remote rename: demonstrate a bogus "remote exists" bug
      remote rename: more carefully determine whether a remote is configured
      relink: retire the command
      status: be prepared for not-yet-started interactive rebase
      t/Makefile: add a rule to re-run previously-failed tests
      test-lib: on FreeBSD, look for unzip(1) in /usr/local/bin/
      mingw: allow hooks to be .exe files

Johannes Sixt (1):
      real_path: canonicalize directory separators in root parts

Jonathan Tan (5):
      trailer: be stricter in parsing separators
      commit: make ignore_non_trailer take buf/len
      trailer: avoid unnecessary splitting on lines
      trailer: have function to describe trailer layout
      sequencer: use trailer's trailer layout

Junio C Hamano (25):
      git_open(): untangle possible NOATIME and CLOEXEC interactions
      git_open_cloexec(): use fcntl(2) w/ FD_CLOEXEC fallback
      sha1_file: stop opening files with O_NOATIME
      Start post 2.11 cycle
      wt-status: implement opportunisitc index update correctly
      hold_locked_index(): align error handling with hold_lockfile_for_update()
      lockfile: LOCK_REPORT_ON_ERROR
      Early fixes for 2.11.x series
      First batch for 2.12
      Second batch for 2.12
      i18n: fix misconversion in shell scripts
      t4201: make tests work with and without the MINGW prerequiste
      Third batch for 2.12
      diff: retire "compaction" heuristics
      lockfile: move REPORT_ON_ERROR bit elsewhere
      Fourth batch for 2.12
      Fifth batch 2.12
      RelNotes: drop merge-later comments for maint
      Sixth batch for 2.12
      Seventh batch for 2.12
      show-ref: remove a stale comment
      relink: really remove the command
      Eighth batch for 2.12
      Ninth batch for 2.12; almost ready for -rc0
      Git 2.12-rc0

Lars Schneider (2):
      git-p4: add config to retry p4 commands; retry 3 times by default
      git-p4: add diff/merge properties to .gitattributes for GitLFS files

Linus Torvalds (1):
      shortlog: group by committer information

Lukas Puehringer (3):
      gpg-interface, tag: add GPG_VERIFY_OMIT_STATUS flag
      ref-filter: add function to print single ref_array_item
      builtin/tag: add --format argument for tag -v

Luke Diamand (2):
      git-p4: support updating an existing shelved changelist
      git-p4: support git worktrees

Markus Hitter (3):
      gitk: Turn off undo manager in the text widget
      gitk: Remove closed file descriptors from $blobdifffd
      gitk: Clear array 'commitinfo' on reload

Matt McCutchen (1):
      t0001: don't let a default ACL interfere with the umask test

Nguyễn Thái Ngọc Duy (5):
      tag, branch, for-each-ref: add --ignore-case for sorting and filtering
      rebase: add --quit to cleanup rebase, leave everything else untouched
      color.c: fix color_parse_mem() with value_len == 0
      color.c: trim leading spaces in color_parse_mem()
      log --graph: customize the graph lines with config log.graphColors

Paul Mackerras (2):
      gitk: Use explicit RGB green instead of "lime"
      gitk: Update copyright notice to 2016

Peter Law (1):
      Completion: Add support for --submodule=diff

Philip Oakley (3):
      doc: gitk: remove gitview reference
      doc: gitk: add the upstream repo location
      doc: git-gui browser does not default to HEAD

Pranit Bauva (2):
      don't use test_must_fail with grep
      t9813: avoid using pipes

Ramsay Jones (1):
      GIT-VERSION-GEN: do not force abbreviation length used by 'describe'

René Scharfe (11):
      compat: add qsort_s()
      add QSORT_S
      perf: add basic sort performance test
      string-list: use QSORT_S in string_list_sort()
      ref-filter: use QSORT_S in ref_array_sort()
      abspath: add absolute_pathdup()
      use absolute_pathdup()
      use oid_to_hex_r() for converting struct object_id hashes to hex strings
      use oidcpy() for copying hashes between instances of struct object_id
      checkout: convert post_checkout_hook() to struct object_id
      receive-pack: call string_list_clear() unconditionally

Richard Hansen (16):
      .mailmap: record canonical email for Richard Hansen
      rev-parse doc: pass "--" to rev-parse in the --prefix example
      t7610: update branch names to match test number
      t7610: move setup code to the 'setup' test case
      t7610: use test_when_finished for cleanup tasks
      t7610: don't rely on state from previous test
      t7610: run 'git reset --hard' after each test to clean up
      t7610: delete some now-unnecessary 'git reset --hard' lines
      t7610: always work on a test-specific branch
      t7610: don't assume the checked-out commit
      t7610: spell 'git reset --hard' consistently
      t7610: add test case for rerere+mergetool+subdir bug
      mergetool: take the "-O" out of $orderfile
      mergetool: fix running in subdir when rerere enabled
      diff: document behavior of relative diff.orderFile
      diff: document the format of the -O (diff.orderFile) file

Rogier Goossens (3):
      gitk: Add a 'rename' option to the branch context menu
      gitk: Allow checking out a remote branch
      gitk: Include commit title in branch dialog

SZEDER Gábor (9):
      t7004-tag: delete unnecessary tags with test_when_finished
      t7004-tag: use test_config helper
      t7004-tag: add version sort tests to show prerelease reordering issues
      versioncmp: pass full tagnames to swap_prereleases()
      versioncmp: cope with common part overlapping with prerelease suffix
      versioncmp: use earliest-longest contained suffix to determine sorting order
      versioncmp: factor out helper for suffix matching
      versioncmp: generalize version sort suffix reordering
      .mailmap: update Gábor Szeder's email address

Santiago Torres (3):
      builtin/verify-tag: add --format to verify-tag
      t/t7030-verify-tag: Add --format specifier tests
      t/t7004-tag: Add --format specifier tests

Satoshi Yasushima (1):
      gitk: Fix Japanese translation for "marked commit"

Stefan Beller (35):
      submodule config: inline config_from_{name, path}
      submodule-config: rename commit_sha1 to treeish_name
      submodule-config: clarify parsing of null_sha1 element
      submodule add: extend force flag to add existing repos
      submodule: use absolute path for computing relative path connecting
      submodule helper: support super prefix
      test-lib-functions.sh: teach test_commit -C <dir>
      worktree: check if a submodule uses worktrees
      move connect_work_tree_and_git_dir to dir.h
      submodule: add absorb-git-dir function
      worktree: initialize return value for submodule_uses_worktrees
      submodule.h: add extern keyword to functions
      submodule: modernize ok_to_remove_submodule to use argv_array
      submodule: rename and add flags to ok_to_remove_submodule
      rm: absorb a submodules git dir before deletion
      submodule.c: use GIT_DIR_ENVIRONMENT consistently
      contrib: remove gitview
      pathspec: give better message for submodule related pathspec error
      unpack-trees: move checkout state into check_updates
      unpack-trees: remove unneeded continue
      unpack-trees: factor progress setup out of check_updates
      read-tree: use OPT_BOOL instead of OPT_SET_INT
      t1000: modernize style
      t1001: modernize style
      submodule absorbgitdirs: mention in docstring help
      t7411: quote URLs
      t7411: test lookup of uninitialized submodules
      submodule update --init: display correct path from submodule
      lib-submodule-update.sh: reduce use of subshell by using "git -C"
      contrib: remove git-convert-objects
      unpack-trees: support super-prefix option
      setup: add gentle version of resolve_git_dir
      cache.h: expose the dying procedure for reading gitlinks
      submodule absorbing: fix worktree/gitdir pointers recursively for non-moves
      submodule update: run custom update script for initial populating as well

Stefan Dotterweich (1):
      gitk: Fix missing commits when using -S or -G

Steven Penny (2):
      Makefile: POSIX windres
      Makefile: put LIBS after LDFLAGS for imap-send

Vasco Almeida (18):
      gitk: Makefile: create install bin directory
      gitk: Add Portuguese translation
      Git.pm: add subroutines for commenting lines
      i18n: add--interactive: mark strings for translation
      i18n: add--interactive: mark simple here-documents for translation
      i18n: add--interactive: mark strings with interpolation for translation
      i18n: clean.c: match string with git-add--interactive.perl
      i18n: add--interactive: mark plural strings
      i18n: add--interactive: mark patch prompt for translation
      i18n: add--interactive: i18n of help_patch_cmd
      i18n: add--interactive: mark edit_hunk_manually message for translation
      i18n: add--interactive: remove %patch_modes entries
      i18n: add--interactive: mark status words for translation
      i18n: send-email: mark strings for translation
      i18n: send-email: mark warnings and errors for translation
      i18n: send-email: mark string with interpolation for translation
      i18n: send-email: mark composing message for translation
      i18n: difftool: mark warnings for translation

Vegard Nossum (1):
      diff: add interhunk context config option

Vinicius Kursancew (1):
      git-p4: allow submit to create shelved changelists.

Vitaly "_Vi" Shukela (1):
      submodule--helper: set alternateLocation for cloned submodules

Vladimir Panteleev (5):
      show-ref: accept HEAD with --verify
      show-ref: allow -d to work with --verify
      show-ref: move --quiet handling into show_one()
      show-ref: detect dangling refs under --verify as well
      show-ref: remove dead `if (verify)' check

brian m. carlson (8):
      Documentation: fix warning in cat-texi.perl
      Documentation: modernize cat-texi.perl
      Documentation: remove unneeded argument in cat-texi.perl
      Documentation: sort sources for gitman.texi
      Documentation: add XSLT to fix DocBook for Texinfo
      Documentation: move dblatex arguments into variable
      Makefile: add a knob to enable the use of Asciidoctor
      Documentation: implement linkgit macro for Asciidoctor

마누엘 (1):
      asciidoctor: fix user-manual to be built by `asciidoctor`


Version v2.11.4; changes since v2.11.3:
---------------------------------------

Jeff King (3):
      shell: drop git-cvsserver support by default
      archimport: use safe_pipe_capture for user input
      cvsimport: shell-quote variable used in backticks

Junio C Hamano (4):
      cvsserver: move safe_pipe_capture() to the main package
      cvsserver: use safe_pipe_capture for `constant commands` as well
      Git 2.10.5
      Git 2.11.4

joernchen (1):
      cvsserver: use safe_pipe_capture instead of backticks


Version v2.11.3; changes since v2.11.2:
---------------------------------------

Jeff King (4):
      t5813: add test for hostname starting with dash
      connect: factor out "looks like command line option" check
      connect: reject dashed arguments for proxy commands
      connect: reject paths that look like command line options

Junio C Hamano (6):
      connect: reject ssh hostname that begins with a dash
      Git 2.7.6
      Git 2.8.6
      Git 2.9.5
      Git 2.10.4
      Git 2.11.3


Version v2.11.2; changes since v2.11.1:
---------------------------------------

Jeff King (1):
      shell: disallow repo names beginning with dash

Junio C Hamano (8):
      Git 2.4.12
      Git 2.5.6
      Git 2.6.7
      Git 2.7.5
      Git 2.8.5
      Git 2.9.4
      Git 2.10.3
      Git 2.11.2


Version v2.11.1; changes since v2.11.0:
---------------------------------------

Alan Davies (1):
      mingw: fix colourization on Cygwin pseudo terminals

Andreas Krey (2):
      commit: make --only --allow-empty work without paths
      commit: remove 'Clever' message for --only --amend

Beat Bolli (6):
      update_unicode.sh: move it into contrib/update-unicode
      update_unicode.sh: remove an unnecessary subshell level
      update_unicode.sh: pin the uniset repo to a known good commit
      update_unicode.sh: automatically download newer definition files
      update_unicode.sh: remove the plane filter
      unicode_width.h: update the width tables to Unicode 9.0

Brandon Williams (2):
      push: --dry-run updates submodules when --recurse-submodules=on-demand
      push: fix --dry-run to not push submodules

Christian Couder (1):
      Documentation/bisect: improve on (bad|new) and (good|bad)

David Aguilar (8):
      mergetool: honor mergetool.$tool.trustExitCode for built-in tools
      mergetools/vimdiff: trust Vim's exit code
      difftool: fix dir-diff index creation when in a subdirectory
      difftool: fix dir-diff index creation when in a subdirectory
      difftool: sanitize $workdir as early as possible
      difftool: chdir as early as possible
      difftool: rename variables for consistency
      mergetools: fix xxdiff hotkeys

David Turner (5):
      submodules: allow empty working-tree dirs in merge/cherry-pick
      remote-curl: don't hang when a server dies before any output
      upload-pack: optionally allow fetching any sha1
      auto gc: don't write bitmaps for incremental repacks
      repack: die on incremental + write-bitmap-index

Dennis Kaarsemaker (1):
      push: test pushing ambiguously named branches

Eric Wong (2):
      git-svn: allow "0" in SVN path components
      git-svn: document useLogAuthor and addAuthorFrom config keys

George Vanburgh (1):
      git-p4: fix multi-path changelist empty commits

Heiko Voigt (4):
      serialize collection of changed submodules
      serialize collection of refs that contain submodule changes
      batch check whether submodule needs pushing into one call
      submodule_needs_pushing(): explain the behaviour when we cannot answer

Jack Bates (1):
      diff: handle --no-abbrev in no-index case

Jeff Hostetler (1):
      mingw: replace isatty() hack

Jeff King (32):
      rev-parse: fix parent shorthands with --symbolic
      t7610: clean up foo.XXXXXX tmpdir
      http: simplify update_url_from_redirect
      http: always update the base URL for redirects
      remote-curl: rename shadowed options variable
      http: make redirects more obvious
      http: treat http-alternates like redirects
      http-walker: complain about non-404 loose object errors
      stash: prefer plumbing over git-diff
      alternates: accept double-quoted paths
      tmp-objdir: quote paths we add to alternates
      Makefile: reformat FIND_SOURCE_FILES
      Makefile: exclude test cruft from FIND_SOURCE_FILES
      Makefile: match shell scripts in FIND_SOURCE_FILES
      Makefile: exclude contrib from FIND_SOURCE_FILES
      parse-options: print "fatal:" before usage_msg_opt()
      README: replace gmane link with public-inbox
      t5000: extract nongit function to test-lib-functions.sh
      index-pack: complain when --stdin is used outside of a repo
      t: use nongit() function where applicable
      index-pack: skip collision check when not in repository
      archive-zip: load userdiff config
      rebase--interactive: count squash commits above 10 correctly
      blame: fix alignment with --abbrev=40
      blame: handle --no-abbrev
      blame: output porcelain "previous" header for each file
      git_exec_path: do not return the result of getenv()
      execv_dashed_external: use child_process struct
      execv_dashed_external: stop exiting with negative code
      execv_dashed_external: wait for child on signal death
      t7810: avoid assumption about invalid regex syntax
      CodingGuidelines: clarify multi-line brace style

Johannes Schindelin (6):
      cherry-pick: demonstrate a segmentation fault
      merge-recursive: handle NULL in add_cacheinfo() correctly
      mingw: intercept isatty() to handle /dev/null as Git expects it
      mingw: adjust is_console() to work with stdin
      git_exec_path: avoid Coverity warning about unfree()d result
      mingw: follow-up to "replace isatty() hack"

Johannes Sixt (3):
      t5547-push-quarantine: run the path separator test on Windows, too
      normalize_path_copy(): fix pushing to //server/share/dir on Windows
      t5615-alternate-env: double-quotes in file names do not work on Windows

Jonathan Tan (1):
      fetch: do not redundantly calculate tag refmap

Junio C Hamano (11):
      utf8: refactor code to decide fallback encoding
      utf8: accept "latin-1" as ISO-8859-1
      push: do not use potentially ambiguous default refspec
      compression: unify pack.compression configuration parsing
      pull: fast-forward "pull --rebase=true"
      preparing for 2.10.3
      Revert "sequencer: remove useless get_dir() function"
      config.abbrev: document the new default that auto-scales
      Almost ready for 2.11.1
      Ready for 2.11.1
      Git 2.11.1

Kristoffer Haugsbakk (4):
      doc: add articles (grammar)
      doc: add verb in front of command to run
      doc: make the intent of sentence clearer
      doc: omit needless "for"

Kyle J. McKay (1):
      mailinfo.c: move side-effects outside of assert

Kyle Meyer (1):
      branch_get_push: do not segfault when HEAD is detached

Lars Schneider (6):
      travis-ci: update P4 to 16.2 and GitLFS to 1.5.2 in Linux build
      git-p4: fix empty file processing for large file system backend GitLFS
      t0021: minor filter process test cleanup
      docs: warn about possible '=' in clean/smudge filter process values
      t0021: fix flaky test
      travis-ci: fix Perforce install on macOS

Luis Ressel (1):
      date-formats.txt: Typo fix

Luke Diamand (1):
      git-p4: avoid crash adding symlinked directory

Matt McCutchen (2):
      doc: mention transfer data leaks in more places
      git-gc.txt: expand discussion of races with other processes

Max Kirillov (1):
      mingw: consider that UNICODE_STRING::Length counts bytes

Mike Hommey (1):
      fast-import: properly fanout notes when tree is imported

Nguyễn Thái Ngọc Duy (13):
      worktree.c: zero new 'struct worktree' on allocation
      worktree: reorder an if statement
      get_worktrees() must return main worktree as first item even on error
      worktree.c: get_worktrees() takes a new flag argument
      worktree list: keep the list sorted
      merge-recursive.c: use string_list_sort instead of qsort
      shallow.c: rename fields in paint_info to better express their purposes
      shallow.c: stop abusing COMMIT_SLAB_SIZE for paint_info's memory pools
      shallow.c: make paint_alloc slightly more robust
      shallow.c: remove useless code
      config.c: handle error case for fstat() calls
      config.c: rename label unlock_and_out
      config.c: handle lock file in error case in git_config_rename_...

Rasmus Villemoes (2):
      shallow.c: avoid theoretical pointer wrap-around
      shallow.c: bit manipulation tweaks

Stefan Beller (7):
      unpack-trees: fix grammar for untracked files in directories
      t3600: remove useless redirect
      t3600: slightly modernize style
      cache.h: document index_name_pos
      cache.h: document remove_index_entry_at
      cache.h: document add_[file_]to_index
      documentation: retire unfinished documentation

Stephan Beyer (5):
      am: fix filename in safe_to_abort() error message
      am: change safe_to_abort()'s not rewinding error into a warning
      t3510: test that cherry-pick --abort does not unsafely change HEAD
      sequencer: make sequencer abort safer
      sequencer: remove useless get_dir() function

Torsten Bögershausen (1):
      convert: git cherry-pick -Xrenormalize did not work

Wolfram Sang (1):
      request-pull: drop old USAGE stuff


Version v2.11.0; changes since v2.11.0-rc3:
-------------------------------------------

Alex Henrie (1):
      l10n: ca.po: update translation

Dimitriy Ryazantcev (1):
      l10n: ru.po: update Russian translation

Jeff King (1):
      common-main: stop munging argv[0] path

Jiang Xin (1):
      l10n: fix unmatched single quote in error message

Junio C Hamano (1):
      Git 2.11

Marc Branchaud (1):
      RelNotes: spelling and phrasing fixups

Ralf Thielow (1):
      l10n: de.po: translate 210 new messages


Version v2.11.0-rc3; changes since v2.11.0-rc2:
-----------------------------------------------

Changwoo Ryu (1):
      l10n: ko.po: Update Korean translation

Dimitriy Ryazantcev (1):
      l10n: ru.po: update Russian translation

Jean-Noël Avila (1):
      l10n: fr.po v2.11.0_rnd1

Jiang Xin (5):
      l10n: git.pot: v2.11.0 round 1 (209 new, 53 removed)
      l10n: zh_CN: for git v2.11.0 l10n round 1
      i18n: fix unmatched single quote in error message
      l10n: git.pot: v2.11.0 round 2 (1 new, 1 removed)
      l10n: Fixed typo of git fetch-pack command

Johannes Schindelin (3):
      rebase -i: highlight problems with core.commentchar
      stripspace: respect repository config
      rebase -i: handle core.commentChar=auto

Jonathan Tan (1):
      doc: mention user-configured trailers

Junio C Hamano (4):
      for-each-ref: do not segv with %(HEAD) on an unborn branch
      mailinfo: read local configuration
      archive: read local configuration
      Git 2.11-rc3

Peter Krefting (1):
      l10n: sv.po: Update Swedish translation (2913t0f0u)

Trần Ngọc Quân (1):
      l10n: vi.po: Updated translation to v2.11.0 (2913t)

Vasco Almeida (1):
      l10n: pt_PT: update Portuguese translation

jfbu (1):
      l10n: fr.po fix grammar mistakes


Version v2.11.0-rc2; changes since v2.11.0-rc1:
-----------------------------------------------

Ben North (1):
      git-worktree.txt: fix typo "to"/"two", and add comma

Jeff King (1):
      create_branch: drop unused "head" parameter

Junio C Hamano (1):
      Git 2.11-rc2

Tobias Klauser (1):
      diffcore-delta: remove unused parameter to diffcore_count_changes()


Version v2.11.0-rc1; changes since v2.11.0-rc0:
-----------------------------------------------

Andreas Schwab (2):
      t6026-merge-attr: don't fail if sleep exits early
      t6026-merge-attr: ensure that the merge driver was called

Christian Couder (1):
      split-index: s/eith/with/ typo fix

Jeff King (6):
      t0021: use write_script to create rot13 shell script
      t0021: put $TEST_ROOT in $PATH
      t0021: use $PERL_PATH for rot13-filter.pl
      t0021: fix filehandle usage on older perl
      alternates: re-allow relative paths from environment
      sequencer: silence -Wtautological-constant-out-of-range-compare

Johannes Schindelin (1):
      t6026: ensure that long-running script really is

Johannes Sixt (4):
      t0021: expect more variations in the output of uniq -c
      t0021: compute file size with a single process instead of a pipeline
      t0021, t5615: use $PWD instead of $(pwd) in PATH-like shell variables
      t6026: clarify the point of "kill $(cat sleep.pid)"

Junio C Hamano (5):
      A bit of updates post -rc0
      Revert "t6026-merge-attr: ensure that the merge driver was called"
      Revert "t6026-merge-attr: don't fail if sleep exits early"
      t0021: remove debugging cruft
      Git 2.11.0-rc1

Lars Schneider (2):
      Makefile: set NO_OPENSSL on macOS by default
      travis-ci: disable GIT_TEST_HTTPD for macOS

Patrick Steinhardt (1):
      doc: fix location of 'info/' with $GIT_COMMON_DIR

Ralf Thielow (1):
      fetch-pack.c: correct command at the beginning of an error message

René Scharfe (2):
      sha1_name: make wraparound of the index into ring-buffer explicit
      cocci: avoid self-references in object_id transformations


Version v2.11.0-rc0; changes since v2.10.5:
-------------------------------------------

Aaron M Watson (1):
      stash: allow stashes to be referenced by index only

Alex Riesen (2):
      git-gui: support for $FILENAMES in tool definitions
      git-gui: ensure the file in the diff pane is in the list of selected files

Alexander Shopov (2):
      git-gui i18n: Updated Bulgarian translation (565,0f,0u)
      git-gui: Mark 'All' in remote.tcl for translation

Brandon Williams (4):
      git: make super-prefix option
      ls-files: optionally recurse into submodules
      ls-files: pass through safe options for --recurse-submodules
      ls-files: add pathspec matching for submodules

Christian Couder (42):
      apply: make some names more specific
      apply: move 'struct apply_state' to apply.h
      builtin/apply: make apply_patch() return -1 or -128 instead of die()ing
      builtin/apply: read_patch_file() return -1 instead of die()ing
      builtin/apply: make find_header() return -128 instead of die()ing
      builtin/apply: make parse_chunk() return a negative integer on error
      builtin/apply: make parse_single_patch() return -1 on error
      builtin/apply: make parse_whitespace_option() return -1 instead of die()ing
      builtin/apply: make parse_ignorewhitespace_option() return -1 instead of die()ing
      builtin/apply: move init_apply_state() to apply.c
      apply: make init_apply_state() return -1 instead of exit()ing
      builtin/apply: make check_apply_state() return -1 instead of die()ing
      builtin/apply: move check_apply_state() to apply.c
      builtin/apply: make apply_all_patches() return 128 or 1 on error
      builtin/apply: make parse_traditional_patch() return -1 on error
      builtin/apply: make gitdiff_*() return 1 at end of header
      builtin/apply: make gitdiff_*() return -1 on error
      builtin/apply: change die_on_unsafe_path() to check_unsafe_path()
      builtin/apply: make build_fake_ancestor() return -1 on error
      builtin/apply: make remove_file() return -1 on error
      builtin/apply: make add_conflicted_stages_file() return -1 on error
      builtin/apply: make add_index_file() return -1 on error
      builtin/apply: make create_file() return -1 on error
      builtin/apply: make write_out_one_result() return -1 on error
      builtin/apply: make write_out_results() return -1 on error
      unpack-objects: add --max-input-size=<size> option
      builtin/apply: make try_create_file() return -1 on error
      builtin/apply: make create_one_file() return -1 on error
      builtin/apply: rename option parsing functions
      apply: rename and move opt constants to apply.h
      apply: move libified code from builtin/apply.c to apply.{c,h}
      apply: make some parsing functions static again
      apply: use error_errno() where possible
      apply: make it possible to silently apply
      apply: don't print on stdout in verbosity_silent mode
      usage: add set_warn_routine()
      usage: add get_error_routine() and get_warn_routine()
      apply: change error_routine when silent
      apply: refactor `git apply` option parsing
      apply: pass apply state to build_fake_ancestor()
      apply: learn to use a different index file
      builtin/am: use apply API in run_apply()

David Aguilar (4):
      mergetool: add copyright
      mergetool: move main program flow into a main() function
      mergetool: honor diff.orderFile
      mergetool: honor -O<orderfile>

David Turner (9):
      rename_ref_available(): add docstring
      refs: add methods for reflog
      refs: add method for initial ref transaction commit
      refs: make delete_refs() virtual
      refs: add methods to init refs db
      refs: add method to rename refs
      refs: make lock generic
      refs: implement iteration over only per-worktree refs
      fsck: handle bad trees like other errors

Dimitriy Ryazantcev (1):
      git-gui: Update Russian translation

Elia Pinto (1):
      git-gui/po/glossary/txt-to-pot.sh: use the $( ... ) construct for command substitution

Emily Xie (1):
      pathspec: warn on empty strings as pathspec

Eric Wong (2):
      git-svn: reduce scope of input record separator change
      git-svn: "git worktree" awareness

Gavin Lambert (1):
      git-svn: do not reuse caches memoized for a different architecture

Ian Kelling (2):
      gitweb: remove unused guess_file_syntax() parameter
      gitweb: use highlight's shebang detection

Jacob Keller (9):
      format-patch: show 0/1 and 1/1 for singleton patch with cover letter
      cache: add empty_tree_oid object and helper function
      graph: add support for --line-prefix on all graph-aware output
      diff: prepare for additional submodule formats
      allow do_submodule_path to work even if submodule isn't checked out
      submodule: convert show_submodule_summary to use struct object_id *
      submodule: refactor show_submodule_summary with helper function
      diff: teach diff to display submodule difference with an inline diff
      rev-list: use hdr_termination instead of a always using a newline

Jean-Noël Avila (1):
      i18n: i18n: diff: mark die messages for translation

Jeff Hostetler (9):
      status: rename long-format print routines
      status: cleanup API to wt_status_print
      status: support --porcelain[=<version>]
      status: collect per-file data for --porcelain=v2
      status: print per-file porcelain v2 status data
      status: print branch info with --porcelain=v2 --branch
      git-status.txt: describe --porcelain=v2 format
      test-lib-functions.sh: add lf_to_nul helper
      status: unit tests for --porcelain=v2

Jeff King (75):
      provide an initializer for "struct object_info"
      sha1_file: make packed_object_info public
      pack-objects: break delta cycles before delta-search phase
      pack-objects: use mru list when iterating over packs
      cache_or_unpack_entry: drop keep_cache parameter
      clear_delta_base_cache_entry: use a more descriptive name
      release_delta_base_cache: reuse existing detach function
      delta_base_cache: use list.h for LRU
      delta_base_cache: drop special treatment of blobs
      delta_base_cache: use hashmap.h
      t/perf: add basic perf tests for delta base cache
      index-pack: add --max-input-size=<size> option
      receive-pack: allow a maximum input size to be specified
      add_delta_base_cache: use list_for_each_safe
      hash-object: always try to set up the git repository
      patch-id: use RUN_SETUP_GENTLY
      diff: skip implicit no-index check when given --no-index
      diff: handle --no-index prefixes consistently
      diff: always try to set up the repository
      pager: remove obsolete comment
      pager: stop loading git_default_config()
      pager: make pager_program a file-local static
      pager: use callbacks instead of configset
      pager: handle early config
      t1302: use "git -C"
      test-config: setup git directory
      config: only read .git/config from configured repos
      init: expand comments explaining config trickery
      init: reset cached config when entering new repo
      t1007: factor out repeated setup
      clone: pass --progress decision to recursive submodules
      get_sha1: detect buggy calls with multiple disambiguators
      get_sha1: avoid repeating ourselves via ONLY_TO_DIE
      get_sha1: propagate flags to child functions
      get_short_sha1: parse tags when looking for treeish
      get_short_sha1: refactor init of disambiguation code
      get_short_sha1: NUL-terminate hex prefix
      get_short_sha1: mark ambiguity error for translation
      sha1_array: let callbacks interrupt iteration
      for_each_abbrev: drop duplicate objects
      get_short_sha1: list ambiguous objects on error
      xdiff: rename "struct group" to "struct xdlgroup"
      get_short_sha1: make default disambiguation configurable
      tree-walk: be more specific about corrupt tree errors
      t5613: drop reachable_via function
      t5613: drop test_valid_repo function
      t5613: use test_must_fail
      t5613: whitespace/style cleanups
      t5613: do not chdir in main process
      find_unique_abbrev: move logic out of get_short_sha1()
      t5613: clarify "too deep" recursion tests
      link_alt_odb_entry: handle normalize_path errors
      link_alt_odb_entry: refactor string handling
      alternates: provide helper for adding to alternates list
      alternates: provide helper for allocating alternate
      alternates: encapsulate alt->base munging
      alternates: use a separate scratch space
      fill_sha1_file: write "boring" characters
      alternates: store scratch buffer as strbuf
      fill_sha1_file: write into a strbuf
      count-objects: report alternates via verbose mode
      sha1_file: always allow relative paths to alternates
      alternates: use fspathcmp to detect duplicates
      check_connected: accept an env argument
      tmp-objdir: introduce API for temporary object directories
      receive-pack: quarantine objects until pre-receive accepts
      tmp-objdir: put quarantine information in the environment
      tmp-objdir: do not migrate files starting with '.'
      upload-pack: use priority queue in reachable() check
      read info/{attributes,exclude} only when in repository
      test-*-cache-tree: setup git dir
      find_unique_abbrev: use 4-buffer ring
      diff_unique_abbrev: rename to diff_aligned_abbrev
      diff_aligned_abbrev: use "struct oid"
      diff: handle sha1 abbreviations outside of repository

Johannes Schindelin (54):
      cat-file: fix a grammo in the man page
      sequencer: lib'ify sequencer_pick_revisions()
      sequencer: do not die() in do_pick_commit()
      sequencer: lib'ify write_message()
      sequencer: lib'ify do_recursive_merge()
      sequencer: lib'ify do_pick_commit()
      sequencer: lib'ify walk_revs_populate_todo()
      sequencer: lib'ify prepare_revs()
      sequencer: lib'ify read_and_refresh_cache()
      sequencer: lib'ify read_populate_todo()
      sequencer: lib'ify read_populate_opts()
      sequencer: lib'ify create_seq_dir()
      sequencer: lib'ify save_head()
      sequencer: lib'ify save_todo()
      sequencer: lib'ify save_opts()
      sequencer: lib'ify fast_forward_to()
      sequencer: lib'ify checkout_fast_forward()
      sequencer: ensure to release the lock when we could not read the index
      cat-file: introduce the --filters option
      cat-file --textconv/--filters: allow specifying the path separately
      cat-file: support --textconv/--filters in batch mode
      pull: drop confusing prefix parameter of die_on_unclean_work_tree()
      pull: make code more similar to the shell script again
      wt-status: make the require_clean_work_tree() function reusable
      wt-status: export also the has_un{staged,committed}_changes() functions
      wt-status: teach has_{unstaged,uncommitted}_changes() about submodules
      wt-status: begin error messages with lower-case
      sequencer: use static initializers for replay_opts
      sequencer: use memoized sequencer directory path
      sequencer: avoid unnecessary indirection
      sequencer: future-proof remove_sequencer_state()
      sequencer: plug memory leaks for the option values
      sequencer: future-proof read_populate_todo()
      sequencer: refactor the code to obtain a short commit name
      sequencer: completely revamp the "todo" script parsing
      sequencer: strip CR from the todo script
      sequencer: avoid completely different messages for different actions
      sequencer: get rid of the subcommand field
      sequencer: remember the onelines when parsing the todo file
      sequencer: prepare for rebase -i's commit functionality
      sequencer: introduce a helper to read files written by scripts
      sequencer: allow editing the commit message on a case-by-case basis
      sequencer: support amending commits
      sequencer: support cleaning up commit messages
      sequencer: left-trim lines read from the script
      sequencer: stop releasing the strbuf in write_message()
      sequencer: roll back lock file if write_message() failed
      sequencer: refactor write_message() to take a pointer/length
      sequencer: teach write_message() to append an optional LF
      sequencer: remove overzealous assumption in rebase -i mode
      sequencer: mark action_name() for translation
      sequencer: quote filenames in error messages
      sequencer: start error messages consistently with lower case
      sequencer: mark all error messages for translation

Johannes Sixt (1):
      t0060: sidestep surprising path mangling results on Windows

Jonathan Nieder (1):
      connect: tighten check for unexpected early hang up

Jonathan Tan (13):
      tests: move test_lazy_prereq JGIT to test-lib.sh
      connect: advertized capability is not a ref
      mailinfo: separate in-body header processing
      mailinfo: make is_scissors_line take plain char *
      mailinfo: handle in-body header continuations
      trailer: improve const correctness
      trailer: use list.h for doubly-linked list
      trailer: streamline trailer item create and add
      trailer: make args have their own struct
      trailer: clarify failure modes in parse_trailer
      trailer: allow non-trailers in trailer block
      trailer: forbid leading whitespace in trailers
      trailer: support values folded to multiple lines

Josh Triplett (1):
      format-patch: add "--rfc" for the common case of [RFC PATCH]

Junio C Hamano (27):
      blame: improve diagnosis for "--reverse NEW"
      blame: dwim "blame --reverse OLD" as "blame --reverse OLD.."
      diff.c: remove output_prefix_length field
      Start the 2.11 cycle
      First batch for 2.11
      Second batch for 2.11
      Third batch for 2.11
      Fourth batch for 2.11
      Fifth batch for 2.11
      Sixth batch for 2.11
      abbrev: add FALLBACK_DEFAULT_ABBREV to prepare for auto sizing
      abbrev: prepare for new world order
      Seventh batch for 2.11
      t4015: split out the "setup" part of ws-error-highlight test
      diff.c: refactor parse_ws_error_highlight()
      diff.c: move ws-error-highlight parsing helpers up
      diff: introduce diff.wsErrorHighlight option
      Eighth batch for 2.11
      Ninth batch for 2.11
      Tenth batch for 2.11
      transport: pass summary_width down the callchain
      fetch: pass summary_width down the callchain
      transport: allow summary-width to be computed dynamically
      transport: compute summary-width dynamically
      Eleventh batch for 2.11
      Getting ready for 2.11-rc0
      Git 2.11-rc0

Karsten Blees (2):
      git-gui: unicode file name support on windows
      git-gui: handle the encoding of Git's output correctly

Kirill Smelkov (2):
      pack-objects: respect --local/--honor-pack-keep/--incremental when bitmap is in use
      pack-objects: use reachability bitmap index when generating non-stdout pack

Lars Schneider (17):
      convert: quote filter names in error messages
      convert: modernize tests
      run-command: move check_pipe() from write_or_die to run_command
      run-command: add clean_on_exit_handler
      pkt-line: rename packet_write() to packet_write_fmt()
      pkt-line: extract set_packet_header()
      pkt-line: add packet_write_fmt_gently()
      pkt-line: add packet_flush_gently()
      pkt-line: add packet_write_gently()
      pkt-line: add functions to read/write flush terminated packet streams
      convert: make apply_filter() adhere to standard Git error handling
      convert: prepare filter.<driver>.process option
      convert: add filter.<driver>.process option
      contrib/long-running-filter: add long running filter example
      sha1_file: rename git_open_noatime() to git_open()
      sha1_file: open window into packfiles with O_CLOEXEC
      read-cache: make sure file handles are not inherited by child processes

Linus Torvalds (1):
      abbrev: auto size the default abbreviation

Mantas Mikulėnas (1):
      contrib: add credential helper for libsecret

Michael Haggerty (36):
      xdl_change_compact(): fix compaction heuristic to adjust ixo
      xdl_change_compact(): only use heuristic if group can't be matched
      is_blank_line(): take a single xrecord_t as argument
      recs_match(): take two xrecord_t pointers as arguments
      xdl_change_compact(): introduce the concept of a change group
      resolve_gitlink_ref(): eliminate temporary variable
      refs: rename struct ref_cache to files_ref_store
      refs: create a base class "ref_store" for files_ref_store
      add_packed_ref(): add a files_ref_store argument
      get_packed_ref(): add a files_ref_store argument
      resolve_missing_loose_ref(): add a files_ref_store argument
      {lock,commit,rollback}_packed_refs(): add files_ref_store arguments
      refs: reorder definitions
      resolve_packed_ref(): rename function from resolve_missing_loose_ref()
      resolve_gitlink_packed_ref(): remove function
      read_raw_ref(): take a (struct ref_store *) argument
      resolve_ref_recursively(): new function
      resolve_gitlink_ref(): implement using resolve_ref_recursively()
      resolve_gitlink_ref(): avoid memory allocation in many cases
      resolve_gitlink_ref(): rename path parameter to submodule
      refs: make read_raw_ref() virtual
      refs: make verify_refname_available() virtual
      refs: make pack_refs() virtual
      refs: make create_symref() virtual
      refs: make peel_ref() virtual
      repack_without_refs(): add a files_ref_store argument
      lock_raw_ref(): add a files_ref_store argument
      commit_ref_update(): add a files_ref_store argument
      lock_ref_for_update(): add a files_ref_store argument
      lock_ref_sha1_basic(): add a files_ref_store argument
      split_symref_update(): add a files_ref_store argument
      files_ref_iterator_begin(): take a ref_store argument
      refs: add method iterator_begin
      diff: improve positioning of add/delete blocks in diffs
      parse-options: add parse_opt_unknown_cb()
      blame: honor the diff heuristic options and config

Michael J Gruber (1):
      gpg-interface: use more status letters

Nguyễn Thái Ngọc Duy (36):
      remote-curl.c: convert fetch_git() to use argv_array
      transport-helper.c: refactor set_helper_option()
      upload-pack: move shallow deepen code out of receive_needs()
      upload-pack: move "shallow" sending code out of deepen()
      upload-pack: remove unused variable "backup"
      upload-pack: move "unshallow" sending code out of deepen()
      upload-pack: use skip_prefix() instead of starts_with()
      upload-pack: tighten number parsing at "deepen" lines
      upload-pack: make check_non_tip() clean things up on error
      upload-pack: move rev-list code out of check_non_tip()
      fetch-pack: use skip_prefix() instead of starts_with()
      fetch-pack: use a common function for verbose printing
      fetch-pack.c: mark strings for translating
      fetch-pack: use a separate flag for fetch in deepening mode
      shallow.c: implement a generic shallow boundary finder based on rev-list
      upload-pack: add deepen-since to cut shallow repos based on time
      fetch: define shallow boundary with --shallow-since
      clone: define shallow clone boundary based on time with --shallow-since
      t5500, t5539: tests for shallow depth since a specific date
      refs: add expand_ref()
      upload-pack: support define shallow boundary by excluding revisions
      fetch: define shallow boundary with --shallow-exclude
      clone: define shallow clone boundary with --shallow-exclude
      t5500, t5539: tests for shallow depth excluding a ref
      upload-pack: split check_unreachable() in two, prep for get_reachable_list()
      upload-pack: add get_reachable_list()
      fetch, upload-pack: --deepen=N extends shallow boundary by N commits
      init: correct re-initialization from a linked worktree
      init: call set_git_dir_init() from within init_db()
      init: kill set_git_dir_init()
      init: do not set unnecessary core.worktree
      init: kill git_link variable
      diff-lib: allow ita entries treated as "not yet exist in index"
      diff: add --ita-[in]visible-in-index
      commit: fix empty commit creation when there's no changes but ita entries
      commit: don't be fooled by ita entries when creating initial commit

Olaf Hering (1):
      git-gui: sort entries in tclIndex

Orgad Shaneh (1):
      git-gui: Do not reset author details on amend

Pat Thoyts (7):
      Allow keyboard control to work in the staging widgets.
      Amend tab ordering and text widget border and highlighting.
      git-gui: fix detection of Cygwin
      git-gui (Windows): use git-gui.exe in `Create Desktop Shortcut`
      git-gui: maintain backwards compatibility for merge syntax
      git-gui: avoid persisting modified author identity
      git-gui: set version 0.21

Petr Stodulka (1):
      http: control GSSAPI credential delegation

Ralf Thielow (2):
      help: introduce option --exclude-guides
      help: make option --help open man pages only for Git commands

René Scharfe (8):
      sha1_file: use llist_mergesort() for sorting packs
      introduce CHECKOUT_INIT
      add QSORT
      use QSORT
      remove unnecessary check before QSORT
      coccicheck: use --all-includes by default
      use QSORT, part 2
      show-branch: use QSORT

Ronnie Sahlberg (2):
      refs: add a backend method structure
      refs: add a transaction_commit() method

Stefan Beller (10):
      t7408: modernize style
      t7408: merge short tests, factor out testing method
      submodule--helper module-clone: allow multiple references
      submodule--helper update-clone: allow multiple references
      clone: factor out checking for an alternate path
      clone: clarify option_reference as required
      clone: implement optional references
      clone: recursive and reference option triggers submodule alternates
      submodule: ignore trailing slash on superproject URL
      submodule: ignore trailing slash in relative url

Vasco Almeida (30):
      i18n: blame: mark error messages for translation
      i18n: branch: mark option description for translation
      i18n: config: mark error message for translation
      i18n: merge-recursive: mark error messages for translation
      i18n: merge-recursive: mark verbose message for translation
      i18n: notes: mark error messages for translation
      notes: spell first word of error messages in lowercase
      i18n: receive-pack: mark messages for translation
      i18n: show-branch: mark error messages for translation
      i18n: show-branch: mark plural strings for translation
      i18n: update-index: mark warnings for translation
      i18n: commit: mark message for translation
      i18n: connect: mark die messages for translation
      i18n: ident: mark hint for translation
      i18n: notes-merge: mark die messages for translation
      i18n: stash: mark messages for translation
      git-gui i18n: mark strings for translation
      git-gui: l10n: add Portuguese translation
      git-gui i18n: internationalize use of colon punctuation
      git-gui i18n: mark "usage:" strings for translation
      git-gui: fix incorrect use of Tcl append command
      git-gui i18n: mark string in lib/error.tcl for translation
      t1512: become resilient to GETTEXT_POISON build
      i18n: apply: mark plural string for translation
      i18n: apply: mark info messages for translation
      i18n: apply: mark error messages for translation
      i18n: apply: mark error message for translation
      i18n: convert mark error messages for translation
      i18n: credential-cache--daemon: mark advice for translation
      i18n: diff: mark warnings for translation

Vegard Nossum (1):
      revision: new rev^-n shorthand for rev^n..rev

brian m. carlson (20):
      cache: convert struct cache_entry to use struct object_id
      builtin/apply: convert static functions to struct object_id
      builtin/blame: convert struct origin to use struct object_id
      builtin/log: convert some static functions to use struct object_id
      builtin/cat-file: convert struct expand_data to use struct object_id
      builtin/cat-file: convert some static functions to struct object_id
      builtin: convert textconv_object to use struct object_id
      streaming: make stream_blob_to_fd take struct object_id
      builtin/checkout: convert some static functions to struct object_id
      notes-merge: convert struct notes_merge_pair to struct object_id
      Convert read_mmblob to take struct object_id.
      builtin/blame: convert file to use struct object_id
      builtin/rm: convert to use struct object_id
      notes: convert init_notes to use struct object_id
      builtin/update-index: convert file to struct object_id
      sha1_name: convert get_sha1_mb to struct object_id
      refs: add an update_ref_oid function.
      builtin/am: convert to struct object_id
      builtin/commit-tree: convert to struct object_id
      builtin/reset: convert to use struct object_id

yaras (1):
      git-gui: fix initial git gui message encoding

Ævar Arnfjörð Bjarmason (3):
      gitweb: fix a typo in a comment
      gitweb: link to 7-char+ SHA-1s, not only 8-char+
      gitweb: link to "git describe"'d commits in log messages


Version v2.10.5; changes since v2.10.4:
---------------------------------------

Jeff King (3):
      shell: drop git-cvsserver support by default
      archimport: use safe_pipe_capture for user input
      cvsimport: shell-quote variable used in backticks

Junio C Hamano (3):
      cvsserver: move safe_pipe_capture() to the main package
      cvsserver: use safe_pipe_capture for `constant commands` as well
      Git 2.10.5

joernchen (1):
      cvsserver: use safe_pipe_capture instead of backticks


Version v2.10.4; changes since v2.10.3:
---------------------------------------

Jeff King (4):
      t5813: add test for hostname starting with dash
      connect: factor out "looks like command line option" check
      connect: reject dashed arguments for proxy commands
      connect: reject paths that look like command line options

Junio C Hamano (5):
      connect: reject ssh hostname that begins with a dash
      Git 2.7.6
      Git 2.8.6
      Git 2.9.5
      Git 2.10.4


Version v2.10.3; changes since v2.10.2:
---------------------------------------

Anders Kaseorg (2):
      pre-receive.sample: mark it executable
      git-sh-setup: be explicit where to dot-source git-sh-i18n from.

Andreas Schwab (2):
      t6026-merge-attr: don't fail if sleep exits early
      t6026-merge-attr: ensure that the merge driver was called

Ben North (1):
      git-worktree.txt: fix typo "to"/"two", and add comma

Chris Packham (1):
      completion: support excluding refs

Jeff King (6):
      daemon: detect and reject too-long paths
      git-compat-util: move content inside ifdef/endif guards
      doc: fix missing "::" in config list
      create_branch: drop unused "head" parameter
      common-main: stop munging argv[0] path
      shell: disallow repo names beginning with dash

Johannes Schindelin (1):
      t6026: ensure that long-running script really is

Johannes Sixt (1):
      t6026: clarify the point of "kill $(cat sleep.pid)"

Junio C Hamano (11):
      am: refactor read_author_script()
      Revert "t6026-merge-attr: ensure that the merge driver was called"
      Revert "t6026-merge-attr: don't fail if sleep exits early"
      preparing for 2.10.3
      Git 2.4.12
      Git 2.5.6
      Git 2.6.7
      Git 2.7.5
      Git 2.8.5
      Git 2.9.4
      Git 2.10.3

Lars Schneider (2):
      Makefile: set NO_OPENSSL on macOS by default
      travis-ci: disable GIT_TEST_HTTPD for macOS

Matthieu Moy (3):
      parse_mailboxes: accept extra text after <...> address
      t9000-addresses: update expected results after fix
      Git.pm: add comment pointing to t9000

Patrick Steinhardt (1):
      doc: fix location of 'info/' with $GIT_COMMON_DIR

René Scharfe (4):
      hex: make wraparound of the index into ring-buffer explicit
      valgrind: support test helpers
      commit: simplify building parents list
      cocci: avoid self-references in object_id transformations

Stefan Christ (1):
      Documentation/fmt-merge-msg: fix markup in example

Tobias Klauser (1):
      diffcore-delta: remove unused parameter to diffcore_count_changes()


Version v2.10.2; changes since v2.10.1:
---------------------------------------

Anders Kaseorg (1):
      imap-send: Tell cURL to use imap:// or imaps://

Brandon Williams (1):
      submodules doc: update documentation for "." used for submodule branches

David Turner (2):
      add David Turner's Two Sigma address
      http: http.emptyauth should allow empty (not just NULL) usernames

Dennis Kaarsemaker (1):
      worktree: allow the main brach of a bare repository to be checked out

Dimitriy Ryazantcev (1):
      l10n: ru.po: update Russian translation

Jakub Narębski (1):
      configure.ac: improve description of NO_REGEX test

Jeff King (11):
      verify_packfile: check pack validity before accessing data
      graph: fix extra spaces in graph_padding_line
      clone: detect errors in normalize_path_copy
      files_read_raw_ref: avoid infinite loop on broken symlinks
      files_read_raw_ref: prevent infinite retry loops in general
      merge-base: handle --fork-point without reflog
      fetch: use "quick" has_sha1_file for tag following
      test-lib: handle TEST_OUTPUT_DIRECTORY with spaces
      test-lib: add --verbose-log option
      travis: use --verbose-log test option
      test-lib: bail out when "-v" used under "prove"

Johannes Schindelin (1):
      reset: fix usage

Jonathan Tan (1):
      fetch-pack: do not reset in_vain on non-novel acks

Junio C Hamano (9):
      streaming: make sure to notice corrupt object
      unpack_sha1_header(): detect malformed object header
      worktree: honor configuration variables
      blame: use DEFAULT_ABBREV macro
      diff_unique_abbrev(): document its assumption and limitation
      Start preparing for 2.10.2
      cocci: refactor common patterns to use xstrdup_or_null()
      t3700: fix broken test under !SANITY
      Git 2.10.2

Kevin Daudt (2):
      t5100-mailinfo: replace common path prefix with variable
      mailinfo: unescape quoted-pair in header fields

Nguyễn Thái Ngọc Duy (1):
      git-commit.txt: clarify --patch mode with pathspec

Philip Oakley (2):
      doc: fix merge-base ASCII art tab spacing
      doc: fix the 'revert a faulty merge' ASCII art tab spacing

Pranit Bauva (2):
      rev-list-options: clarify the usage of --reverse
      t0040: convert all possible tests to use `test-parse-options --expect`

Ralf Thielow (2):
      l10n: de.po: fix translation of autostash
      l10n: de.po: translate 260 new messages

René Scharfe (17):
      contrib/coccinelle: fix semantic patch for oid_to_hex_r()
      add coccicheck make target
      use strbuf_addstr() for adding constant strings to a strbuf, part 2
      pretty: let %C(auto) reset all attributes
      add COPY_ARRAY
      use COPY_ARRAY
      git-gui: stop using deprecated merge syntax
      gitignore: ignore output files of coccicheck make target
      use strbuf_addstr() instead of strbuf_addf() with "%s", part 2
      use strbuf_add_unique_abbrev() for adding short hashes, part 2
      pretty: avoid adding reset for %C(auto) if output is empty
      coccicheck: make transformation for strbuf_addf(sb, "...") more precise
      remove unnecessary NULL check before free(3)
      use strbuf_add_unique_abbrev() for adding short hashes, part 3
      pretty: fix document link for color specification
      avoid pointer arithmetic involving NULL in FLEX_ALLOC_MEM
      inline xalloc_flex() into FLEXPTR_ALLOC_MEM

SZEDER Gábor (1):
      ref-filter: strip format option after a field name only once while parsing

Stefan Beller (1):
      documentation: improve submodule.<name>.{url, path} description

Younes Khoudli (1):
      doc: remove reference to the traditional layout in git-tag.txt

Дилян Палаузов (1):
      ./configure.ac: detect SSL in libcurl using curl-config


Version v2.10.1; changes since v2.10.0:
---------------------------------------

Alex Henrie (5):
      am: put spaces around pipe in usage string
      cat-file: put spaces around pipes in usage string
      git-rebase--interactive: fix English grammar
      git-merge-octopus: do not capitalize "octopus"
      unpack-trees: do not capitalize "working"

Beat Bolli (1):
      SubmittingPatches: use gitk's "Copy commit summary" format

Brandon Williams (1):
      pathspec: remove unnecessary function prototypes

Brian Henderson (3):
      diff-highlight: add some tests
      diff-highlight: add failing test for handling --graph output
      diff-highlight: add support for --graph output

Elia Pinto (5):
      t5541-http-push-smart.sh: use the GIT_TRACE_CURL environment var
      test-lib.sh: preserve GIT_TRACE_CURL from the environment
      t5550-http-fetch-dumb.sh: use the GIT_TRACE_CURL environment var
      t5551-http-fetch-smart.sh: use the GIT_TRACE_CURL environment var
      git-check-ref-format.txt: fixup documentation

Eric Wong (3):
      http: warn on curl_multi_add_handle failures
      http: consolidate #ifdefs for curl_multi_remove_handle
      http: always remove curl easy from curlm session on release

Jeff King (20):
      rebase-interactive: drop early check for valid ident
      gc: default aggressive depth to 50
      test-lib: drop PID from test-results/*.count
      diff-highlight: ignore test cruft
      diff-highlight: add multi-byte tests
      diff-highlight: avoid highlighting combined diffs
      error_errno: use constant return similar to error()
      color_parse_mem: initialize "struct color" temporary
      t5305: move cleanup into test block
      t5305: drop "dry-run" of unpack-objects
      t5305: use "git -C"
      t5305: simplify packname handling
      pack-objects: walk tag chains for --include-tag
      remote-curl: handle URLs without protocol
      patch-ids: turn off rename detection
      patch-ids: refuse to compute patch-id for merge commit
      docs/cvsimport: prefer cvs-fast-export to parsecvs
      docs/cvs-migration: update link to cvsps homepage
      docs/cvs-migration: mention cvsimport caveats
      ident: handle NULL ai_canonname

Jiang Xin (1):
      l10n: zh_CN: fixed some typos for git 2.10.0

Johannes Schindelin (4):
      git-gui: respect commit.gpgsign again
      regex: -G<pattern> feeds a non NUL-terminated string to regexec() and fails
      regex: add regexec_buf() that can work on a non NUL-terminated string
      regex: use regexec_buf()

Johannes Sixt (4):
      t9903: fix broken && chain
      t6026-merge-attr: clean up background process at end of test case
      t3700-add: create subdirectory gently
      t3700-add: do not check working tree file mode without POSIXPERM

Josh Triplett (1):
      format-patch: show base info before email signature

Junio C Hamano (6):
      submodule: avoid auto-discovery in prepare_submodule_repo_env()
      symbolic-ref -d: do not allow removal of HEAD
      Prepare for 2.9.4
      Start preparing for 2.10.1
      Prepare for 2.10.1
      Git 2.10.1

Kirill Smelkov (1):
      t/perf/run: copy config.mak.autogen & friends to build area

Lars Schneider (1):
      travis-ci: ask homebrew for its path instead of hardcoding it

Matthieu Moy (1):
      Documentation/config: default for color.* is color.ui

Mike Ralphson (1):
      vcs-svn/fast_export: fix timestamp fmt specifiers

Nguyễn Thái Ngọc Duy (3):
      checkout: add some spaces between code and comment
      checkout.txt: document a common case that ignores ambiguation rules
      checkout: fix ambiguity check in subdir

Philip Oakley (12):
      doc: use 'symmetric difference' consistently
      doc: revisions - name the left and right sides
      doc: show the actual left, right, and boundary marks
      doc: revisions: give headings for the two and three dot notations
      doc: revisions: extra clarification of <rev>^! notation effects
      doc: revisions: single vs multi-parent notation comparison
      doc: gitrevisions - use 'reachable' in page description
      doc: gitrevisions - clarify 'latter case' is revision walk
      doc: revisions - define `reachable`
      doc: revisions - clarify reachability examples
      doc: revisions: show revision expansion in examples
      doc: revisions: sort examples and fix alignment of the unchanged

Ralf Thielow (1):
      rebase -i: improve advice on bad instruction lines

Ray Chen (1):
      l10n: zh_CN: review for git v2.10.0 l10n

René Scharfe (6):
      compat: move strdup(3) replacement to its own file
      introduce hex2chr() for converting two hexadecimal digits to a character
      strbuf: use valid pointer in strbuf_remove()
      checkout: constify parameters of checkout_stage() and checkout_merged()
      unpack-trees: pass checkout state explicitly to check_updates()
      xdiff: fix merging of hunks with -W context and -u context

Satoshi Yasushima (6):
      git-gui: consistently use the same word for "remote" in Japanese
      git-gui: consistently use the same word for "blame" in Japanese
      git-gui: apply po template to Japanese translation
      git-gui: add Japanese language code
      git-gui: update Japanese translation
      git-gui: update Japanese information

Stefan Beller (5):
      xdiff: remove unneeded declarations
      transport: report missing submodule pushes consistently on stderr
      diff.c: use diff_options directly
      diff: omit found pointer from emit_callback
      diff: remove dead code

Thomas Gummerer (4):
      add: document the chmod option
      update-index: add test for chmod flags
      read-cache: introduce chmod_index_entry
      add: modify already added files when --chmod is given

Vasco Almeida (2):
      l10n: pt_PT: update Portuguese translation
      l10n: pt_PT: update Portuguese repository info


Version v2.10.0; changes since v2.10.0-rc2:
-------------------------------------------

Alex Henrie (1):
      l10n: ca.po: update translation

Changwoo Ryu (1):
      l10n: ko.po: Update Korean translation

Jean-Noël Avila (1):
      l10n: fr.po v2.10.0-rc2

Jiang Xin (3):
      l10n: git.pot: v2.10.0 round 1 (248 new, 56 removed)
      l10n: git.pot: v2.10.0 round 2 (12 new, 44 removed)
      l10n: zh_CN: for git v2.10.0 l10n round 2

Junio C Hamano (2):
      A few more fixes before the final 2.10
      Git 2.10

Lars Schneider (1):
      pack-protocol: fix maximum pkt-line size

Peter Krefting (1):
      l10n: sv.po: Update Swedish translation (2757t0f0u)

René Scharfe (1):
      p3400: make test script executable

Thomas Gummerer (1):
      blame: fix segfault on untracked files

Trần Ngọc Quân (2):
      l10n: Updated Vietnamese translation for v2.10.0 (2789t)
      l10n: Updated Vietnamese translation for v2.10.0-rc2 (2757t)

Vasco Almeida (2):
      l10n: pt_PT: merge git.pot
      l10n: pt_PT: update Portuguese translation


Version v2.10.0-rc2; changes since v2.10.0-rc1:
-----------------------------------------------

Ben Wijen (2):
      t6026-merge-attr: child processes must not inherit index.lock handles
      mingw: ensure temporary file handles are not inherited by child processes

David Glasser (1):
      doc: mention `git -c` in git-config(1)

Heiko Voigt (1):
      SubmittingPatches: document how to reference previous commits

Jean-Noël Avila (3):
      i18n: fix typos for translation
      i18n: fix git rebase interactive commit messages
      i18n: simplify numeric error reporting

Johannes Schindelin (1):
      Revert "display HTML in default browser using Windows' shell API"

Junio C Hamano (2):
      Prepare for 2.10.0-rc2
      Git 2.10-rc2

Torsten Bögershausen (2):
      git ls-files: text=auto eol=lf is supported in Git 2.10
      gitattributes: Document the unified "auto" handling


Version v2.10.0-rc1; changes since v2.10.0-rc0:
-----------------------------------------------

Johannes Schindelin (2):
      t/Makefile: ensure that paths are valid on platforms we care
      rev-parse: respect core.hooksPath in --git-path

John Keeping (1):
      difftool: always honor fatal error exit codes

Junio C Hamano (4):
      Relnotes: decribe the updates to the "text=auto" attribute
      relnotes: redo the description of text=auto fix
      RelNotes: final batch of topics before -rc1
      Git 2.10-rc1

Linus Torvalds (1):
      gpg-interface: prefer "long" key format output when verifying pgp signatures

Matthieu Moy (1):
      git-multimail: update to release 1.4.0

René Scharfe (7):
      correct FLEXPTR_* example in comment
      mailinfo: recycle strbuf in check_header()
      commit: use xstrdup() in get_merge_parent()
      commit: factor out set_merge_remote_desc()
      merge-recursive: fix verbose output for multiple base trees
      commit: use FLEX_ARRAY in struct merge_remote_desc
      receive-pack: use FLEX_ALLOC_MEM in queue_command()

SZEDER Gábor (1):
      t1410: remove superfluous 'git reflog' from the 'walk past root' test

Stefan Beller (1):
      checkout: do not mention detach advice for explicit --detach option

Torsten Bögershausen (1):
      convert: Correct NNO tests and missing `LF will be replaced by CRLF`

Vasco Almeida (3):
      t3404: become resilient to GETTEXT_POISON
      t5520: become resilient to GETTEXT_POISON
      t7411: become resilient to GETTEXT_POISON


Version v2.10.0-rc0; changes since v2.9.5:
------------------------------------------

Alexander Hirsch (1):
      pull: warn on --verify-signatures with --rebase

Antoine Queru (1):
      upload-pack.c: use parse-options API

Christian Couder (50):
      builtin/apply: make gitdiff_verify_name() return void
      builtin/apply: avoid parameter shadowing 'p_value' global
      builtin/apply: avoid parameter shadowing 'linenr' global
      builtin/apply: avoid local variable shadowing 'len' parameter
      builtin/apply: extract line_by_line_fuzzy_match() from match_fragment()
      builtin/apply: move 'options' variable into cmd_apply()
      builtin/apply: move 'read_stdin' global into cmd_apply()
      builtin/apply: introduce 'struct apply_state' to start libifying
      builtin/apply: move 'state' init into init_apply_state()
      builtin/apply: move 'unidiff_zero' global into 'struct apply_state'
      builtin/apply: move 'check' global into 'struct apply_state'
      builtin/apply: move 'check_index' global into 'struct apply_state'
      builtin/apply: move 'apply_in_reverse' global into 'struct apply_state'
      builtin/apply: move 'apply_with_reject' global into 'struct apply_state'
      builtin/apply: move 'apply_verbosely' global into 'struct apply_state'
      builtin/apply: move 'update_index' global into 'struct apply_state'
      builtin/apply: move 'allow_overlap' global into 'struct apply_state'
      builtin/apply: move 'cached' global into 'struct apply_state'
      builtin/apply: move 'diffstat' global into 'struct apply_state'
      builtin/apply: move 'numstat' global into 'struct apply_state'
      builtin/apply: move 'summary' global into 'struct apply_state'
      builtin/apply: move 'threeway' global into 'struct apply_state'
      builtin/apply: move 'no_add' global into 'struct apply_state'
      builtin/apply: move 'unsafe_paths' global into 'struct apply_state'
      builtin/apply: move 'line_termination' global into 'struct apply_state'
      builtin/apply: move 'fake_ancestor' global into 'struct apply_state'
      builtin/apply: move 'p_context' global into 'struct apply_state'
      builtin/apply: move 'apply' global into 'struct apply_state'
      builtin/apply: move 'patch_input_file' global into 'struct apply_state'
      builtin/apply: move 'limit_by_name' global into 'struct apply_state'
      builtin/apply: move 'has_include' global into 'struct apply_state'
      builtin/apply: move 'p_value' global into 'struct apply_state'
      builtin/apply: move 'p_value_known' global into 'struct apply_state'
      builtin/apply: move 'root' global into 'struct apply_state'
      builtin/apply: move 'whitespace_error' global into 'struct apply_state'
      builtin/apply: move 'whitespace_option' into 'struct apply_state'
      builtin/apply: remove whitespace_option arg from set_default_whitespace_mode()
      builtin/apply: move 'squelch_whitespace_errors' into 'struct apply_state'
      builtin/apply: move 'applied_after_fixing_ws' into 'struct apply_state'
      builtin/apply: move 'ws_error_action' into 'struct apply_state'
      builtin/apply: move 'ws_ignore_action' into 'struct apply_state'
      builtin/apply: move 'max_change' and 'max_len' into 'struct apply_state'
      builtin/apply: move 'state_linenr' global into 'struct apply_state'
      builtin/apply: move 'fn_table' global into 'struct apply_state'
      builtin/apply: move 'symlink_changes' global into 'struct apply_state'
      builtin/apply: move 'state' check into check_apply_state()
      builtin/apply: move applying patches into apply_all_patches()
      builtin/apply: add 'lock_file' pointer into 'struct apply_state'
      builtin/apply: move 'newfd' global into 'struct apply_state'
      .mailmap: use Christian Couder's Tuxfamily address

Christopher Layne (1):
      git-svn: clone: Fail on missing url argument

David Aguilar (2):
      subtree: adjust style to match CodingGuidelines
      subtree: adjust function definitions to match CodingGuidelines

David Turner (2):
      refs: allow log-only updates
      refs: don't dereference on rename

Elia Pinto (2):
      http.c: implement the GIT_TRACE_CURL environment variable
      imap-send.c: introduce the GIT_TRACE_CURL enviroment variable

Eric Sunshine (1):
      blame: drop strdup of string literal

Eric Wong (17):
      fast-import: implement unpack limit
      fast-import: invalidate pack_id references after loosening
      pretty: support "mboxrd" output format
      mailsplit: support unescaping mboxrd messages
      am: support --patch-format=mboxrd
      git-svn: skip mergeinfo handling with --no-follow-parent
      git-svn: warn instead of dying when commit data is missing
      config.mak.uname: define NEEDS_LIBRT under Linux, for now
      http-walker: remove unused parameter from fetch_object
      http: avoid disconnecting on 404s for loose objects
      http-walker: reduce O(n) ops with doubly-linked list
      list: avoid incompatibility with *BSD sys/queue.h
      git-svn: document svn.authorsProg in config
      git-svn: allow --version to work anywhere
      git svn: migrate tests to use lib-httpd
      pager: move pager-specific setup into the build
      http-backend: buffer headers before sending

Ingo Brückl (3):
      t3700: remove unwanted leftover files before running new tests
      t3700: merge two tests into one
      t3700: add a test_mode_in_index helper function

Jacob Keller (1):
      completion: add completion for --submodule=* diff option

Jeff King (72):
      git_config_with_options: drop "found" counting
      git_config_parse_parameter: refactor cleanup code
      config: set up config_source for command-line config
      config: return configset value for current_config_ functions
      config: add a notion of "scope"
      upload-pack: provide a hook for running pack-objects
      parse_opt_string_list: stop allocating new strings
      interpret-trailers: don't duplicate option strings
      blame,shortlog: don't make local option variables static
      use string_list initializer consistently
      repack: document --unpack-unreachable option
      repack: add --keep-unreachable option
      repack: extend --keep-unreachable to loose objects
      gpg-interface: use child_process.args
      verify_signed_buffer: drop pbuf variable
      verify_signed_buffer: use tempfile object
      run-command: add pipe_command helper
      verify_signed_buffer: use pipe_command
      sign_buffer: use pipe_command
      t/perf: fix regression in testing older versions of git
      p4211: explicitly disable renames in no-rename test
      color: fix max-size comment
      doc: refactor description of color format
      add skip_prefix_mem helper
      color: refactor parse_attr
      color: allow "no-" for negating attributes
      color: support "italic" attribute
      color: support strike-through attribute
      t9300: factor out portable "head -c" replacement
      t5000: test tar files that overflow ustar headers
      archive-tar: write extended headers for file sizes >= 8GB
      archive-tar: write extended headers for far-future mtime
      archive-tar: drop return value
      config: fix bogus fd check when setting up default config
      branch: use non-gentle write_file for branch description
      write_file: drop "gently" form
      write_file: use xopen
      write_file: add pointer+len variant
      write_file: add format attribute
      use write_file_buf where applicable
      branch: use write_file_buf instead of write_file
      walker: let walker_say take arbitrary formats
      avoid using sha1_to_hex output as printf format
      check_everything_connected: always pass --quiet to rev-list
      rev-list: add optional progress reporting
      check_everything_connected: convert to argv_array
      check_everything_connected: use a struct with named options
      check_connected: relay errors to alternate descriptor
      check_connected: add progress flag
      clone: use a real progress meter for connectivity check
      index-pack: add flag for showing delta-resolution progress
      receive-pack: turn on index-pack resolving progress
      receive-pack: relay connectivity errors to sideband
      receive-pack: turn on connectivity progress
      receive-pack: send keepalives during quiet periods
      contrib/git-jump: fix greedy regex when matching hunks
      contrib/git-jump: add whitespace-checking mode
      contrib/git-jump: fix typo in README
      t/perf: add tests for many-pack scenarios
      sha1_file: drop free_pack_by_name
      add generic most-recently-used list
      find_pack_entry: replace last_found_pack with MRU cache
      pack-objects: break out of want_object loop early
      pack-objects: compute local/ignore_pack_keep early
      trace: handle NULL argument in trace_disable()
      trace: stop using write_or_whine_pipe()
      trace: use warning() for printing trace errors
      trace: cosmetic fixes for error messages
      trace: correct variable name in write() error message
      trace: disable key after write error
      write_or_die: drop write_or_whine_pipe()
      trace: do not fall back to stderr

Johannes Schindelin (36):
      log: prepare log/log-tree to reuse the diffopt.close_file attribute
      log-tree: respect diffopt's configured output file stream
      line-log: respect diffopt's configured output file stream
      graph: respect the diffopt.file setting
      shortlog: support outputting to streams other than stdout
      format-patch: explicitly switch off color when writing to files
      format-patch: avoid freopen()
      format-patch: use stdout directly
      shortlog: respect the --output=<file> setting
      t4211: ensure that log respects --output=<file>
      diff: do not color output when --color=auto and --output=<file> is given
      t3404: add a test for the --gpg-sign option
      rebase -i: demonstrate a bug with --autosquash
      rebase -i: we allow extra spaces after fixup!/squash!
      mingw: fix the shortlog --output=<file> test
      mingw: fix regression in t1308-config-set
      fsck: refactor how to describe objects
      fsck_walk(): optionally name objects on the go
      fsck: give the error function a chance to see the fsck_options
      fsck: optionally show more helpful info for broken links
      t5520: verify that `pull --rebase` shows the helpful advice when failing
      die("bug"): report bugs consistently
      die(_("BUG")): avoid translating bug messages
      merge-recursive: clarify code in was_tracked()
      prepare the builtins for a libified merge_recursive()
      merge_recursive: abort properly upon errors
      merge-recursive: avoid returning a wholesale struct
      merge-recursive: allow write_tree_from_memory() to error out
      merge-recursive: handle return values indicating errors
      merge-recursive: switch to returning errors instead of dying
      am -3: use merge_recursive() directly again
      merge-recursive: flush output buffer before printing error messages
      merge-recursive: write the commit title in one go
      merge-recursive: offer an option to retain the output in 'obuf'
      merge_trees(): ensure that the callers release output buffer
      merge-recursive: flush output buffer even when erroring out

Johannes Sixt (5):
      git-submodule: forward exit code of git-submodule--helper more faithfully
      submodule-helper: fix indexing in clone retry error reporting path
      rebase-interactive: trim leading whitespace from progress count
      config.c: avoid duplicated global static variables
      commit-slab.h: avoid duplicated global static variables

Jonathan Tan (1):
      fetch-pack: grow stateless RPC windows exponentially

Jordan DE GEA (1):
      worktree: allow "-" short-hand for @{-1} in add command

Josh Triplett (1):
      format-patch: format.from gives the default for --from

Junio C Hamano (21):
      send-email: detect and offer to skip backup files
      pathspec: rename free_pathspec() to clear_pathspec()
      t1308: do not get fooled by symbolic links to the source tree
      builtin/apply: remove misleading comment on lock_file field
      Start the post-2.9 cycle
      Second batch of topics for 2.10
      Third batch of topics for 2.10
      commit.c: remove print_commit_list()
      Fourth batch of topics for 2.10
      Fifth batch of topics for 2.10
      archive-tar: huge offset and future timestamps would not work on 32-bit
      Sixth batch of topics for 2.10
      Seventh batch of topics for 2.10
      t9100: portability fix
      Eighth batch of topics for 2.10
      Ninth batch of topics for 2.10
      Tenth batch for 2.10
      Eleventh batch for 2.10
      Twelfth batch for 2.10
      Final batch before 2.10-rc0
      Git 2.10-rc0

Kevin Willford (4):
      patch-ids: stop using a hand-rolled hashmap implementation
      patch-ids: replace the seen indicator with a commit pointer
      patch-ids: add flag to create the diff patch id using header only data
      rebase: avoid computing unnecessary patch IDs

Lars Schneider (1):
      git-p4: place temporary refs used for branch import under refs/git-p4-tmp

Lukas Fleischer (1):
      receive-pack: send auto-gc output over sideband 2

Mehul Jain (3):
      t4202: refactor test
      log: add "--no-show-signature" command line option
      log: add log.showSignature configuration variable

Michael Haggerty (50):
      t1404: demonstrate a bug resolving references
      commit_ref(): if there is an empty dir in the way, delete it
      read_raw_ref(): don't get confused by an empty directory
      safe_create_leading_directories(): improve docstring
      remove_dir_recursively(): add docstring
      refname_is_safe(): use skip_prefix()
      refname_is_safe(): don't allow the empty string
      refname_is_safe(): insist that the refname already be normalized
      commit_ref_update(): write error message to *err, not stderr
      rename_ref(): remove unneeded local variable
      ref_transaction_commit(): remove local variables n and updates
      read_raw_ref(): rename flags argument to type
      read_raw_ref(): clear *type at start of function
      read_raw_ref(): rename symref argument to referent
      read_raw_ref(): improve docstring
      read_raw_ref(): move docstring to header file
      lock_ref_sha1_basic(): remove unneeded local variable
      refs: make error messages more consistent
      ref_transaction_create(): disallow recursive pruning
      ref_transaction_commit(): correctly report close_ref() failure
      delete_branches(): use resolve_refdup()
      verify_refname_available(): adjust constness in declaration
      add_update(): initialize the whole ref_update
      lock_ref_for_update(): new function
      unlock_ref(): move definition higher in the file
      ref_transaction_update(): check refname_is_safe() at a minimum
      refs: resolve symbolic refs first
      lock_ref_for_update(): don't re-read non-symbolic references
      lock_ref_for_update(): don't resolve symrefs
      commit_ref_update(): remove the flags parameter
      lock_ref_sha1_basic(): only handle REF_NODEREF mode
      refs: remove unnecessary "extern" keywords
      do_for_each_ref(): move docstring to the header file
      refs: use name "prefix" consistently
      delete_refs(): add a flags argument
      remote rm: handle symbolic refs correctly
      get_ref_cache(): only create an instance if there is a submodule
      entry_resolves_to_object(): rename function from ref_resolves_to_object()
      ref_resolves_to_object(): new function
      refs: introduce an iterator interface
      do_for_each_ref(): reimplement using reference iteration
      for_each_reflog(): don't abort for bad references
      dir_iterator: new API for iterating over a directory tree
      for_each_reflog(): reimplement using iterators
      t1404: rename file to t1404-update-ref-errors.sh
      t1404: remove "prefix" argument to test_update_rejected
      t1404: document function test_update_rejected
      t1404: add more tests of update-ref error handling
      lock_ref_for_update(): make error handling more uniform
      lock_ref_for_update(): avoid a symref resolution

Michael J Gruber (2):
      gpg-interface: check gpg signature creation status
      t/t91*: do not say how to avoid the tests

Nguyễn Thái Ngọc Duy (20):
      completion: support git-worktree
      worktree.c: rewrite mark_current_worktree() to avoid strbuf
      git-worktree.txt: keep subcommand listing in alphabetical order
      worktree.c: use is_dot_or_dotdot()
      worktree: avoid 0{40}, too many zeroes, hard to read
      worktree: simplify prefixing paths
      worktree.c: add find_worktree()
      worktree.c: add is_main_worktree()
      lib-httpd.sh: print error.log on error
      worktree.c: add is_worktree_locked()
      git-fetch.txt: document fetch output
      fetch: refactor ref update status formatting code
      fetch: change flag code for displaying tag update and deleted ref
      fetch: align all "remote -> local" output
      fetch: reduce duplicate in ref update status lines with placeholder
      connect: read $GIT_SSH_COMMAND from config file
      worktree: add "lock" command
      worktree: add "unlock" command
      worktree.c: find_worktree() search by path suffix
      log: decorate HEAD -> branch with the same color for arrow and HEAD

René Scharfe (4):
      am: ignore return value of write_file()
      pass constants as first argument to st_mult()
      use CHILD_PROCESS_INIT to initialize automatic variables
      archive-tar: make write_extended_header() void

Ronald Wampler (1):
      Makefile: add NEEDS_LIBRT to optionally link with librt

Stefan Beller (19):
      submodule update: make use of the existing fetch_in_submodule function
      submodule-config: keep shallow recommendation around
      submodule update: learn `--[no-]recommend-shallow` option
      submodule--helper: initial clone learns retry logic
      submodule update: continue when a clone fails
      push options: {pre,post}-receive hook learns about push options
      receive-pack: implement advertising and receiving push options
      push: accept push options
      add a test for push options
      t7406: future proof tests with hard coded depth
      submodule update: respect depth in subsequent fetches
      submodule update: narrow scope of local variable
      submodule--helper: fix usage string for relative-path
      submodule-config: keep configured branch around
      gitmodules: document shallow recommendation
      submodule--helper: add remote-branch helper
      submodule update: allow '.' for branch value
      submodule--helper: use parallel processor correctly
      t7406: fix breakage on OSX

Thomas Braun (3):
      completion: factor out untracked file modes into a variable
      completion: add __git_get_option_value helper
      completion: add git status

Vasco Almeida (44):
      i18n: builtin/remote.c: fix mark for translation
      i18n: advice: mark string about detached head for translation
      i18n: advice: internationalize message for conflicts
      i18n: transport: mark strings for translation
      i18n: sequencer: mark entire sentences for translation
      i18n: rebase-interactive: mark here-doc strings for translation
      i18n: sequencer: mark string for translation
      i18n: rebase-interactive: mark comments of squash for translation
      i18n: merge-octopus: mark messages for translation
      i18n: setup: mark strings for translation
      merge-octopus: use die shell function from git-sh-setup.sh
      tests: use test_i18n* functions to suppress false positives
      i18n: rebase: fix marked string to use eval_gettext variant
      tests: unpack-trees: update to use test_i18n* functions
      i18n: rebase: mark placeholder for translation
      t9003: become resilient to GETTEXT_POISON
      i18n: bisect: simplify error message for i18n
      t4153: fix negated test_i18ngrep call
      t6030: update to use test_i18ncmp
      t5523: use test_i18ngrep for negation
      i18n: git-sh-setup.sh: mark strings for translation
      i18n: bisect: mark strings for translation
      i18n: rebase-interactive: mark strings for translation
      i18n: transport-helper.c: change N_() call to _()
      i18n: notes: mark strings for translation
      i18n: notes: mark options for translation
      i18n: merge: mark messages for translation
      i18n: merge: change command option help to lowercase
      i18n: sequencer: add period to error message
      i18n: standardise messages
      i18n: remote: mark URL fallback text for translation
      i18n: remote: allow translations to reorder message
      i18n: init-db: join message pieces
      i18n: submodule: join strings marked for translation
      i18n: submodule: escape shell variables inside eval_gettext
      i18n: unmark die messages for translation
      i18n: branch: mark comment when editing branch description for translation
      t5541: become resilient to GETTEXT_POISON
      t5510: skip tests under GETTEXT_POISON build
      i18n: notes: mark comment for translation
      i18n: config: unfold error messages marked for translation
      i18n: setup: mark error messages for translation
      i18n: archive: mark errors for translation
      i18n: git-stash: mark messages for translation

Ville Skyttä (2):
      completion: complete --delete, --move, and --remotes for git branch
      Spelling fixes

William Duclot (1):
      userdiff: add built-in pattern for CSS

brian m. carlson (11):
      hex: add oid_to_hex_r()
      contrib/coccinelle: add basic Coccinelle transforms
      coccinelle: convert hashcpy() with null_sha1 to hashclr()
      coccinelle: apply object_id Coccinelle transformations
      diff: convert struct diff_filespec to struct object_id
      diff: rename struct diff_filespec's sha1_valid member
      merge-recursive: convert struct stage_data to use object_id
      merge-recursive: convert struct merge_file_info to object_id
      merge-recursive: convert leaf functions to use struct object_id
      merge-recursive: convert merge_recursive_generic() to object_id
      diff: convert prep_temp_blob() to struct object_id


Version v2.9.5; changes since v2.9.4:
-------------------------------------

Jeff King (4):
      t5813: add test for hostname starting with dash
      connect: factor out "looks like command line option" check
      connect: reject dashed arguments for proxy commands
      connect: reject paths that look like command line options

Junio C Hamano (4):
      connect: reject ssh hostname that begins with a dash
      Git 2.7.6
      Git 2.8.6
      Git 2.9.5


Version v2.9.4; changes since v2.9.3:
-------------------------------------

Beat Bolli (1):
      SubmittingPatches: use gitk's "Copy commit summary" format

Ben Wijen (2):
      t6026-merge-attr: child processes must not inherit index.lock handles
      mingw: ensure temporary file handles are not inherited by child processes

David Glasser (1):
      doc: mention `git -c` in git-config(1)

Heiko Voigt (1):
      SubmittingPatches: document how to reference previous commits

Jeff King (12):
      add an extra level of indirection to main()
      common-main: call git_extract_argv0_path()
      common-main: call sanitize_stdfds()
      common-main: call restore_sigpipe_to_default()
      common-main: call git_setup_gettext()
      doc/rev-list-options: clarify "commit@{Nth}" for "-g" option
      doc/rev-list-options: explain "-g" output formats
      doc/pretty-formats: describe index/time formats for %gd
      doc/pretty-formats: explain shortening of %gd
      date: document and test "raw-local" mode
      date: add "unix" format
      shell: disallow repo names beginning with dash

Johannes Schindelin (6):
      mingw: declare main()'s argv as const
      import-tars: support hard links
      t5533: make it pass on case-sensitive filesystems
      git mv: do not keep slash in `git mv dir non-existing-dir/`
      t/Makefile: ensure that paths are valid on platforms we care
      Revert "display HTML in default browser using Windows' shell API"

John Keeping (4):
      Documentation/git-push: fix placeholder formatting
      push: add shorthand for --force-with-lease branch creation
      push: allow pushing new branches with --force-with-lease
      difftool: always honor fatal error exit codes

Junio C Hamano (9):
      merge: avoid "safer crlf" during recording of merge results
      date: clarify --date=raw description
      Prepare for 2.9.4
      Git 2.4.12
      Git 2.5.6
      Git 2.6.7
      Git 2.7.5
      Git 2.8.5
      Git 2.9.4

Lars Schneider (1):
      pack-protocol: fix maximum pkt-line size

Michael Stahl (1):
      document git-repack interaction of pack.threads and pack.windowMemory

René Scharfe (10):
      merge-recursive: use STRING_LIST_INIT_NODUP
      merge: use string_list_split() in add_strategies()
      use strbuf_add_unique_abbrev() for adding short hashes
      correct FLEXPTR_* example in comment
      mailinfo: recycle strbuf in check_header()
      commit: use xstrdup() in get_merge_parent()
      commit: factor out set_merge_remote_desc()
      merge-recursive: fix verbose output for multiple base trees
      commit: use FLEX_ARRAY in struct merge_remote_desc
      receive-pack: use FLEX_ALLOC_MEM in queue_command()

SZEDER Gábor (1):
      t1410: remove superfluous 'git reflog' from the 'walk past root' test

Stefan Beller (1):
      checkout: do not mention detach advice for explicit --detach option

Torsten Bögershausen (1):
      convert: unify the "auto" handling of CRLF


Version v2.9.3; changes since v2.9.2:
-------------------------------------

Alex Henrie (1):
      unpack-trees: fix English grammar in do-this-before-that messages

Andreas Brauchli (1):
      gitweb: escape link body in format_ref_marker

Armin Kunaschik (1):
      t7610: test for mktemp before test execution

Charles Bailey (3):
      t7810-grep.sh: fix duplicated test name
      t7810-grep.sh: fix a whitespace inconsistency
      grep: fix grepping for "intent to add" files

Chris Packham (1):
      completion: add option '--recurse-submodules' to 'git clone'

David A. Greene (1):
      contrib/subtree: Add a test for subtree rebase that loses commits

David Aguilar (4):
      t7900-subtree.sh: fix quoting and broken && chains
      subtree: fix "git subtree split --rejoin"
      difftool: avoid $GIT_DIR and $GIT_WORK_TREE
      difftool: use Git::* functions instead of passing around state

David Kastrup (1):
      blame: require 0 context lines while finding moved lines with -M

Eric Wong (6):
      gc: fix off-by-one error with gc.autoPackLimit
      xread: retry after poll on EAGAIN/EWOULDBLOCK
      xwrite: poll on non-blocking FDs
      hoist out handle_nonblock function for xread and xwrite
      daemon: ignore ENOTSOCK from setsockopt
      configure.ac: stronger test for pthread linkage

Heiko Voigt (3):
      submodule-config: passing name reference for .gitmodule blobs
      submodule-config: combine early return code into one goto
      submodule-config: fix test binary crashing when no arguments given

Jeff King (14):
      send-pack: use buffered I/O to talk to pack-objects
      tests: factor portable signal check out of t0005
      t0005: use test_match_signal as appropriate
      test_must_fail: use test_match_signal
      t/lib-git-daemon: use test_match_signal
      parse_options: allocate a new array when concatenating
      Makefile: drop extra dependencies for test helpers
      Makefile: use VCSSVN_LIB to refer to svn library
      push: anonymize URL in status output
      t5541: fix url scrubbing test when GPG is not set
      diff: do not reuse worktree files that need "clean" conversion
      t4205: drop top-level &&-chaining
      t4205: indent here documents
      am: reset cached ident date for each patch

Joey Hess (1):
      clarify %f documentation

Johannes Schindelin (13):
      pretty: make the skip_blank_lines() function public
      commit.c: make find_commit_subject() more robust
      color.h: remove obsolete comment about limitations on Windows
      t3404: fix a grammo (commands are ran -> commands are run)
      commit -C: skip blank lines at the beginning of the message
      sequencer: use skip_blank_lines() to find the commit subject
      reset --hard: skip blank lines when reporting the commit subject
      commit -S: avoid invalid pointer with empty message
      am: counteract gender bias
      diff: demonstrate a bug with --patience and --ignore-space-at-eol
      diff: fix a double off-by-one with --ignore-space-at-eol
      t/test-lib.sh: fix running tests with --valgrind
      nedmalloc: fix misleading indentation

Johannes Sixt (2):
      Windows: add missing definition of ENOTSOCK
      t4130: work around Windows limitation

John Keeping (1):
      difftool: fix argument handling in subdirs

Junio C Hamano (7):
      diff: document diff-filter exclusion
      grep: further simplify setting the pattern type
      Some fixes for 2.9.3
      hashmap: clarify that hashmap_entry can safely be discarded
      Hopefully final batch for 2.9.3
      Yet another batch for 2.9.3
      Git 2.9.3

Lars Schneider (1):
      travis-ci: enable web server tests t55xx on Linux

Lukas Fleischer (3):
      sideband.c: make send_sideband() return void
      upload-pack.c: make send_client_data() return void
      sideband.c: refactor recv_sideband()

Matthieu Moy (8):
      Documentation/git-mv.txt: fix whitespace indentation
      doc: typeset short command-line options as literal
      doc: typeset long command-line options as literal
      doc: typeset '--' as literal
      doc: typeset long options with argument as literal
      CodingGuidelines: formatting HEAD in documentation
      doc: typeset HEAD and variants as literal
      status: suggest 'git merge --abort' when appropriate

Mike Hommey (2):
      blame: allow to blame paths freshly added to the index
      t/t8003-blame-corner-cases.sh: Use here documents

Nguyễn Thái Ngọc Duy (26):
      new-command.txt: correct the command description file
      grep: break down an "if" stmt in preparation for next changes
      test-regex: isolate the bug test code
      test-regex: expose full regcomp() to the command line
      grep/icase: avoid kwsset on literal non-ascii strings
      grep/icase: avoid kwsset when -F is specified
      grep: rewrite an if/else condition to avoid duplicate expression
      grep/pcre: prepare locale-dependent tables for icase matching
      gettext: add is_utf8_locale()
      grep/pcre: support utf-8
      diffcore-pickaxe: Add regcomp_or_die()
      diffcore-pickaxe: support case insensitive match on non-ascii
      grep.c: reuse "icase" variable
      pack-objects: pass length to check_pack_crc() without truncation
      sha1_file.c: use type off_t* for object_info->disk_sizep
      index-pack: correct "len" type in unpack_data()
      index-pack: report correct bad object offsets even if they are large
      index-pack: correct "offset" type in unpack_entry_data()
      pack-objects: do not truncate result in-pack object size on 32-bit systems
      fsck: use streaming interface for large blobs in pack
      test-lib.sh: introduce and use $EMPTY_TREE
      test-lib.sh: introduce and use $EMPTY_BLOB
      cache-tree.c: fix i-t-a entry skipping directory updates sometimes
      cache-tree: do not generate empty trees as a result of all i-t-a subentries
      config.mak.uname: correct perl path on FreeBSD
      t7063: work around FreeBSD's lazy mtime update feature

Nicolas Pitre (1):
      sideband.c: small optimization of strbuf usage

Orgad Shaneh (1):
      commit: describe that --no-verify skips the commit-msg hook in the help text

Parker Moore (2):
      contrib/persistent-https: update ldflags syntax for Go 1.7+
      contrib/persistent-https: use Git version for build label

Patrick Steinhardt (1):
      rebase -i: restore autostash on abort

Pranit Bauva (1):
      builtin/commit.c: memoize git-path for COMMIT_EDITMSG

Ramsay Jones (1):
      write_or_die: remove the unused write_or_whine() function

René Scharfe (10):
      .gitattributes: set file type for C files
      notes-merge: use O_EXCL to avoid overwriting existing files
      rm: reuse strbuf for all remove_dir_recursively() calls
      worktree: use strbuf_add_absolute_path() directly
      use strbuf_addbuf() for appending a strbuf to another
      submodule-config: use explicit empty string instead of strbuf in config_from()
      strbuf: avoid calling strbuf_grow() twice in strbuf_addbuf()
      use strbuf_addstr() for adding constant strings to a strbuf
      use strbuf_addstr() instead of strbuf_addf() with "%s"
      nedmalloc: work around overzealous GCC 6 warning

Stefan Beller (2):
      Documentation: pack-protocol correct NAK response
      submodule deinit: remove outdated comment


Version v2.9.2; changes since v2.9.1:
-------------------------------------

Jeff King (1):
      t0006: skip "far in the future" test when unsigned long is not long enough

Junio C Hamano (1):
      Git 2.9.2


Version v2.9.1; changes since v2.9.0:
-------------------------------------

Alfred Perlstein (1):
      git-svn: document the 'git svn propset' command

Andrew Oakley (1):
      git-p4: correct hasBranchPrefix verbose output

Armin Kunaschik (1):
      t7800: readlink may not be available

Charles Bailey (1):
      t7810: fix duplicated test title

Dave Nicolson (1):
      Documentation: GPG capitalization

David Turner (1):
      mailmap: use main email address for dturner

Ed Maste (1):
      rebase: update comment about FreeBSD /bin/sh

Edward Thomson (2):
      format_commit_message: honor `color=auto` for `%C(auto)`
      add: add --chmod=+x / --chmod=-x options

Eric Wong (1):
      daemon: enable SO_KEEPALIVE for all sockets

Heiko Becker (1):
      gnome-keyring: Don't hard-code pkg-config executable

Jeff King (9):
      rev-list: "adjust" results of "--count --use-bitmap-index -n"
      rev-list: disable bitmaps when "-n" is used with listing objects
      tree-diff: avoid alloca for large allocations
      fetch: document that pruning happens before fetching
      add--interactive: respect diff.compactionHeuristic
      bisect: always call setup_revisions after init_revisions
      t0006: rename test-date's "show" to "relative"
      t0006: test various date formats
      local_tzoffset: detect errors from tm_to_time_t

Johannes Schindelin (3):
      mingw: let the build succeed with DEVELOPER=1
      perf: accommodate for MacOSX
      t2300: "git --exec-path" is not usable in $PATH on Windows as-is

Jonathan Nieder (1):
      doc: git-htmldocs.googlecode.com is no more

Josef Kufner (1):
      pretty: pass graph width to pretty formatting for use in '%>|(N)'

Junio C Hamano (5):
      blame, line-log: do not loop around deref_tag()
      clone: do not let --depth imply --shallow-submodules
      Start preparing for 2.9.1
      More fixes for 2.9.1
      Git 2.9.1

Keith McGuigan (1):
      builtin/fetch.c: don't free remote->name after fetch

LE Manh Cuong (1):
      sh-setup: enclose setting of ${VAR=default} in double-quotes

Lars Vogel (1):
      Use "working tree" instead of "working directory" for git status

Michael J Gruber (5):
      cherry-pick: allow to pick to unborn branches
      Documentation/technical: describe signature formats
      Documentation/technical: signed tag format
      Documentation/technical: signed commit format
      Documentation/technical: signed merge tag format

Nguyễn Thái Ngọc Duy (1):
      pretty.c: support <direction>|(<negative number>) forms

Peter Colberg (2):
      refs.h: fix misspelt "occurred" in a comment
      config.c: fix misspelt "occurred" in an error message

Pranit Bauva (1):
      strbuf: describe the return value of strbuf_read_file

Ramsay Jones (1):
      regex: fix a SIZE_MAX macro redefinition warning

René Scharfe (9):
      t4051: rewrite, add more tests
      xdiff: factor out match_func_rec()
      xdiff: handle appended chunks better with -W
      xdiff: ignore empty lines before added functions with -W
      xdiff: -W: don't include common trailing empty lines in context
      xdiff: don't trim common tail with -W
      t7810: add test for grep -W and trailing empty context lines
      grep: -W: don't extend context to trailing empty lines
      xdiff: fix merging of appended hunk with -W

SZEDER Gábor (1):
      reflog: continue walking the reflog past root commits

Stefan Beller (1):
      t5614: don't use subshells

Tom Russello (4):
      doc: clearer rule about formatting literals
      doc: change environment variables format
      doc: more consistency in environment variables format
      doc: change configuration variables format

Ville Skyttä (1):
      git-prompt.sh: Don't error on null ${ZSH,BASH}_VERSION, $short_sha


Version v2.9.0; changes since v2.9.0-rc2:
-----------------------------------------

Alexander Shopov (1):
      l10n: Updated Bulgarian translation of git (2597t,0f,0u)

Antonin (1):
      l10n: fr.po Fixed grammar mistake

Changwoo Ryu (1):
      l10n: ko.po: Update Korean translation

Dimitriy Ryazantcev (1):
      l10n: ru.po: update Russian translation

Jean-Noël Avila (1):
      l10n: fr.po v2.9.0rnd1

Jeff King (1):
      test-lib: add in-shell "env" replacement

Jiang Xin (2):
      l10n: git.pot: v2.9.0 round 1 (104 new, 37 removed)
      l10n: zh_CN: for git v2.9.0 l10n round 1

Junio C Hamano (5):
      t5500 & t7403: lose bash-ism "local"
      t2300: run git-sh-setup in an environment that better mimics the real life
      diff: disable compaction heuristic for now
      Hopefully the final last-minute update before 2.9 final
      Git 2.9

Peter Krefting (1):
      l10n: sv.po: Update Swedish translation (2597t0f0u)

Ralf Thielow (1):
      l10n: de.po: translate 104 new messages

Ray Chen (1):
      l10n: zh_CN: review for git v2.9.0 l10n round 1

Trần Ngọc Quân (1):
      l10n: Updated Vietnamese translation (2597t)

Vasco Almeida (3):
      l10n: pt_PT: merge git.pot file
      l10n: pt_PT: update according to git-gui glossary
      l10n: pt_PT: update Portuguese translation


Version v2.9.0-rc2; changes since v2.9.0-rc1:
---------------------------------------------

Benjamin Dopplinger (1):
      README.md: format CLI commands with code syntax

Erwan Mathoniere (1):
      Documentation: bold literals in man

Johannes Sixt (1):
      rebase -i: remove an unnecessary 'rerere' invocation

Junio C Hamano (3):
      Almost ready for 2.9-rc2
      Git 2.8.4
      Git 2.9-rc2

Matthieu Moy (2):
      Makefile: move 'ifdef DEVELOPER' after config.mak* inclusion
      Makefile: add $(DEVELOPER_CFLAGS) variable

Pablo Santiago Blum de Aguiar (1):
      git-cherry-pick.txt: correct a small typo

René Scharfe (3):
      apply: remove unused parameters from name_terminate()
      patch-id: use starts_with() and skip_prefix()
      perf: make the tests work without a worktree

SZEDER Gábor (1):
      Documentation/git-send-email: fix typo in gmail 2FA section

Stefan Beller (2):
      submodule--helper: offer a consistent API
      submodule: remove bashism from shell script


Version v2.9.0-rc1; changes since v2.9.0-rc0:
---------------------------------------------

Armin Kunaschik (1):
      t0008: 4 tests fail with ksh88

Eric Sunshine (5):
      t1500: be considerate to future potential tests
      t1500: test_rev_parse: facilitate future test enhancements
      t1500: avoid changing working directory outside of tests
      t1500: avoid setting configuration options outside of tests
      t1500: avoid setting environment variables outside of tests

Felipe Contreras (1):
      fast-import: do not truncate exported marks file

Jeff King (3):
      cat-file: avoid noop calls to sha1_object_info_extended
      cat-file: default to --buffer when --batch-all-objects is used
      archive-tar: convert snprintf to xsnprintf

Johannes Sixt (1):
      t6044: replace seq by test_seq

Junio C Hamano (5):
      t4204: do not let $name variable clobbered
      Start preparing for 2.8.4
      Final batch before 2.9-rc1
      More topics for 2.8.4
      Git 2.9-rc1

Karsten Blees (1):
      mingw: make isatty() recognize MSYS2's pseudo terminals (/dev/pty*)

Michael Rappazzo (1):
      Documentation: add instructions to help setup gmail 2FA

Ramsay Jones (1):
      log: document the --decorate=auto option


Version v2.9.0-rc0; changes since v2.8.6:
-----------------------------------------

Ben Woosley (1):
      git-rebase--merge: don't include absent parent as a base

Christian Couder (1):
      Git/SVN: die when there is no commit metadata

David Turner (5):
      refs: move head_ref{,_submodule} to the common code
      refs: move for_each_*ref* functions into common code
      files-backend: break out ref reading
      refs: move resolve_ref_unsafe into common code
      refs: on symref reflog expire, lock symref not referrent

Dennis Kaarsemaker (1):
      Makefile: remove dependency on git.spec

Elijah Newren (6):
      merge-recursive: remove duplicate code
      merge-recursive: do not check working copy when creating a virtual merge base
      t7605: add a testcase demonstrating a bug with trivial merges
      builtin/merge.c: fix a bug with trivial merges
      t6044: new merge testcases for when index doesn't match HEAD
      merge-octopus: abort if index does not match HEAD

Eric Sunshine (4):
      lib-gpg: drop unnecessary "missing GPG" warning
      t6302: normalize names and descriptions of signed tags
      t6302: also test annotated in addition to signed tags
      t6302: skip only signed tags rather than all tests when GPG is missing

Jacob Keller (7):
      submodule: don't pass empty string arguments to submodule--helper clone
      submodule: check argc count for git submodule--helper clone
      submodule: fix submodule--helper clone usage
      submodule: fix segmentation fault in submodule--helper clone
      quote: implement sq_quotef()
      git: submodule honor -c credential.* from command line
      xdiff: add recs_match helper function

Jacob Nisnevich (2):
      mergetools: create mergetool_find_win32_cmd() helper function for winmerge
      mergetools: add support for ExamDiff

Jan Durovec (2):
      git-p4: clean-up code style in tests
      git-p4: add P4 jobs to git commit message

Jeff King (16):
      credential: let empty credential specs reset helper list
      add--interactive: allow custom diff highlighting programs
      git_config_push_parameter: handle empty GIT_CONFIG_PARAMETERS
      t5550: fix typo in $HTTPD_URL
      t5550: break submodule config test into multiple sub-tests
      submodule: export sanitized GIT_CONFIG_PARAMETERS
      submodule--helper: move config-sanitizing to submodule.c
      submodule: use prepare_submodule_repo_env consistently
      submodule: stop sanitizing config options
      t6302: simplify non-gpg cases
      t/lib-git-svn: drop $remote_git_svn and $git_svn_id
      t9100,t3419: enclose all test code in single-quotes
      t9107: use "return 1" instead of "exit 1"
      t9107: switch inverted single/double quotes in test
      t9103: modernize test style
      always quote shell arguments to test -z/-n

Johannes Schindelin (8):
      http: support sending custom HTTP headers
      tests: adjust the configuration for Apache 2.2
      t5551: make the test for extra HTTP headers more robust
      t3404: fix typo
      submodule: ensure that -c http.extraheader is heeded
      perf: let's disable symlinks when they are not available
      perf: make the tests work in worktrees
      perf: run "rebase -i" under perf

Junio C Hamano (45):
      rerere: split conflict ID further
      rerere: scan $GIT_DIR/rr-cache/$ID when instantiating a rerere_id
      rerere: handle leftover rr-cache/$ID directory and postimage files
      rerere: delay the recording of preimage
      rerere: allow multiple variants to exist
      t4200: rerere a merge with two identical conflicts
      rerere: do use multiple variants
      merge: refuse to create too cool a merge by default
      pretty: enable --expand-tabs by default for selected pretty formats
      pretty: allow tweaking tabwidth in --expand-tabs
      First batch for post 2.8 cycle
      pretty: test --expand-tabs
      Second batch for post 2.8 cycle
      Makefile: stop pretending to support rpmbuild
      rerere: gc and clear
      rerere: move code related to "forget" together
      rerere: split code to call ll_merge() further
      rerere: adjust 'forget' to multi-variant world order
      Third batch for post 2.8 cycle
      Fourth batch for post 2.8 cycle
      ll-merge: fix typo in comment
      Makefile: clean *.o files we create
      Fifth batch for post 2.8 cycle
      t3033: avoid 'ambiguous refs' warning
      pull: pass --allow-unrelated-histories to "git merge"
      Sixth batch for post 2.8 cycle
      Seventh batch for post 2.8 cycle
      Eighth batch for 2.9
      diff: undocument the compaction heuristic knobs for experimentation
      commit-tree: do not pay attention to commit.gpgsign
      Ninth batch for 2.9
      Tenth batch for 2.9
      ll-merge: use a longer conflict marker for internal merge
      t6036: remove pointless test that expects failure
      ci: validate "linkgit:" in documentation
      test-parse-options: fix output when callback option fails
      test-parse-options: --expect=<string> option to simplify tests
      t0040: remove unused test helpers
      t0040: convert a few tests to use test-parse-options --expect
      Eleventh batch for 2.9
      rerere: plug memory leaks upon "rerere forget" failure
      Twelfth batch for 2.9
      Thirteenth batch for 2.9
      rerere: remove an null statement
      Git 2.9-rc0

Lars Schneider (2):
      git-p4: map a P4 user to Git author name and email address
      travis-ci: enable Git SVN tests t91xx on Linux

Laurent Arnoud (1):
      tag: add the option to force signing of annotated tags

Linus Torvalds (1):
      pretty: expand tabs in indented logs to make things line up properly

Matthieu Moy (7):
      Documentation/diff-config: fix description of diff.renames
      t4001-diff-rename: wrap file creations in a test
      t: add tests for diff.renames (true/false/unset)
      log: introduce init_log_defaults()
      diff: activate diff.renames by default
      README.md: don't take 'commandname' literally
      git-multimail: update to release 1.3.1

Mehul Jain (9):
      git-pull.c: introduce git_pull_config()
      pull --rebase: add --[no-]autostash flag
      t5520: use consistent capitalization in test titles
      t5520: ensure consistent test conditions
      t5520: use better test to check stderr output
      t5520: factor out common "successful autostash" code
      t5520: factor out common "failing autostash" code
      t5520: reduce commom lines of code
      t5520: test --[no-]autostash with pull.rebase=true

Michael Haggerty (19):
      t1430: test the output and error of some commands more carefully
      t1430: clean up broken refs/tags/shadow
      t1430: don't rely on symbolic-ref for creating broken symrefs
      t1430: test for-each-ref in the presence of badly-named refs
      t1430: improve test coverage of deletion of badly-named refs
      resolve_missing_loose_ref(): simplify semantics
      resolve_ref_unsafe(): use for loop to count up to MAXDEPTH
      resolve_ref_unsafe(): ensure flags is always set
      resolve_ref_1(): eliminate local variable
      resolve_ref_1(): reorder code
      resolve_ref_1(): eliminate local variable "bad_name"
      read_raw_ref(): manage own scratch space
      files-backend: inline resolve_ref_1() into resolve_ref_unsafe()
      read_raw_ref(): change flags parameter to unsigned int
      fsck_head_link(): remove unneeded flag variable
      cmd_merge(): remove unneeded flag variable
      checkout_paths(): remove unneeded flag variable
      check_aliased_update(): check that dst_name is non-NULL
      show_head_ref(): check the result of resolve_ref_namespace()

Michael J Gruber (1):
      completion: complete --cherry-mark for git log

Nguyễn Thái Ngọc Duy (57):
      apply: report patch skipping in verbose mode
      test helpers: move test-* to t/helper/ subdirectory
      dir.c: rename str(n)cmp_icase to fspath(n)cmp
      path.c: add git_common_path() and strbuf_git_common_path()
      worktree.c: store "id" instead of "git_dir"
      worktree.c: make find_shared_symref() return struct worktree *
      worktree.c: mark current worktree
      path.c: refactor and add worktree_git_path()
      wt-status.c: split rebase detection out of wt_status_get_state()
      wt-status.c: make wt_status_check_rebase() work on any worktree
      worktree.c: avoid referencing to worktrees[i] multiple times
      worktree.c: check whether branch is rebased in another worktree
      wt-status.c: split bisect detection out of wt_status_get_state()
      worktree.c: check whether branch is bisected in another worktree
      branch: do not rename a branch under bisect or rebase
      usage.c: move format processing out of die_errno()
      usage.c: add warning_errno() and error_errno()
      bisect.c: use die_errno() and warning_errno()
      builtin/am.c: use error_errno()
      builtin/branch.c: use error_errno()
      builtin/fetch.c: use error_errno()
      builtin/help.c: use warning_errno()
      builtin/mailsplit.c: use error_errno()
      builtin/merge-file.c: use error_errno()
      builtin/pack-objects.c: use die_errno() and warning_errno()
      builtin/rm.c: use warning_errno()
      builtin/update-index.c: prefer "err" to "errno" in process_lstat_error
      builtin/upload-archive.c: use error_errno()
      builtin/worktree.c: use error_errno()
      check-racy.c: use error_errno()
      combine-diff.c: use error_errno()
      compat/win32/syslog.c: use warning_errno()
      config.c: use error_errno()
      connected.c: use error_errno()
      copy.c: use error_errno()
      credential-cache--daemon.c: use warning_errno()
      diff-no-index.c: use error_errno()
      editor.c: use error_errno()
      entry.c: use error_errno()
      fast-import.c: use error_errno()
      gpg-interface.c: use error_errno()
      grep.c: use error_errno()
      http.c: use error_errno() and warning_errno()
      ident.c: use warning_errno()
      mailmap.c: use error_errno()
      reachable.c: use error_errno()
      rerere.c: use error_errno() and warning_errno()
      run-command.c: use error_errno()
      sequencer.c: use error_errno()
      server-info.c: use error_errno()
      sha1_file.c: use {error,die,warning}_errno()
      transport-helper.c: use error_errno()
      unpack-trees.c: use error_errno()
      upload-pack.c: use error_errno()
      vcs-svn: use error_errno()
      wrapper.c: use warning_errno()
      wrap-for-bin.sh: regenerate bin-wrappers when switching branches

Pranit Bauva (7):
      t0040-test-parse-options.sh: fix style issues
      test-parse-options: print quiet as integer
      t0040-parse-options: improve test coverage
      t/t7507: improve test coverage
      parse-options.c: make OPTION_COUNTUP respect "unspecified" values
      t7507-commit-verbose: improve test coverage by testing number of diffs
      commit: add a commit.verbose config variable

Ralf Thielow (3):
      completion: add option '--guides' to 'git help'
      completion: add 'revisions' and 'everyday' to 'git help'
      rebase-i: print an abbreviated hash when stop for editing

Ray Zhang (1):
      worktree: add: introduce --checkout option

Santiago Torres (6):
      builtin/verify-tag.c: ignore SIGPIPE in gpg-interface
      t7030: test verifying multiple tags
      verify-tag: update variable name and type
      verify-tag: prepare verify_tag for libification
      verify-tag: move tag verification code to tag.c
      tag -v: verify directly rather than exec-ing verify-tag

Sidhant Sharma (1):
      builtin/receive-pack.c: use parse_options API

Stefan Beller (20):
      submodule-config: keep update strategy around
      submodule-config: drop check against NULL
      fetching submodules: respect `submodule.fetchJobs` config option
      submodule update: direct error message to stderr
      run_processes_parallel: treat output of children as byte array
      run_processes_parallel: rename parameters for the callbacks
      git submodule update: have a dedicated helper for cloning
      submodule helper: remove double 'fatal: ' prefix
      submodule update: expose parallelism to the user
      clone: allow an explicit argument for parallel submodule clones
      rebase: decouple --exec from --interactive
      t3404: cleanup double empty lines between tests
      submodule: port resolve_relative_url from shell to C
      submodule: port init from shell to C
      xdiff: implement empty line chunk heuristic
      clone: add `--shallow-submodules` flag
      submodule init: fail gracefully with a missing .gitmodules file
      submodule--helper update-clone: abort gracefully on missing .gitmodules
      submodule deinit test: fix broken && chain in subshell
      submodule init: redirect stdout to stderr

Stephen P. Smith (1):
      wt-status.c: set commitable bit if there is a meaningful merge.

Xiaolong Ye (4):
      patch-ids: make commit_patch_id() a public helper function
      format-patch: add '--base' option to record base tree info
      format-patch: introduce --base=auto option
      format-patch: introduce format.useAutoBase configuration

brian m. carlson (6):
      sha1-name: introduce a get_oid() function
      test-match-trees: convert to use struct object_id
      match-trees: convert shift_tree() and shift_tree_by() to use object_id
      struct name_entry: use struct object_id instead of unsigned char sha1[20]
      tree-walk: convert tree_entry_extract() to use struct object_id
      match-trees: convert several leaf functions to use struct object_id

Ævar Arnfjörð Bjarmason (4):
      githooks.txt: improve the intro section
      githooks.txt: amend dangerous advice about 'update' hook ACL
      githooks.txt: minor improvements to the grammar & phrasing
      hooks: allow customizing where the hook directory is


Version v2.8.6; changes since v2.8.5:
-------------------------------------

Jeff King (4):
      t5813: add test for hostname starting with dash
      connect: factor out "looks like command line option" check
      connect: reject dashed arguments for proxy commands
      connect: reject paths that look like command line options

Junio C Hamano (3):
      connect: reject ssh hostname that begins with a dash
      Git 2.7.6
      Git 2.8.6


Version v2.8.5; changes since v2.8.4:
-------------------------------------

Jeff King (1):
      shell: disallow repo names beginning with dash

Junio C Hamano (5):
      Git 2.4.12
      Git 2.5.6
      Git 2.6.7
      Git 2.7.5
      Git 2.8.5


Version v2.8.4; changes since v2.8.3:
-------------------------------------

Alexander Rinass (1):
      diff: run arguments through precompose_argv

Armin Kunaschik (1):
      t4151: make sure argument to 'test -z' is given

Brian Norris (3):
      Documentation: config: improve word ordering for http.cookieFile
      http: expand http.cookieFile as a path
      config: consistently format $variables in monospaced font

David Aguilar (2):
      difftool: initialize variables for readability
      difftool: handle unmerged files in dir-diff mode

Jeff King (3):
      rebase--interactive: avoid empty list in shell for-loop
      test-lib: set BASH_XTRACEFD automatically
      archive-tar: convert snprintf to xsnprintf

Johannes Schindelin (3):
      name-rev: include taggerdate in considering the best name
      mingw: introduce the 'core.hideDotFiles' setting
      mingw: remove unnecessary definition

Junio C Hamano (9):
      fsck_commit_buffer(): do not special case the last validation
      config: describe 'pathname' value type
      test-lib-functions.sh: remove misleading comment on test_seq
      test-lib-functions.sh: rewrite test_seq without Perl
      Documentation: fix linkgit references
      fsck: detect and warn a commit with embedded NUL
      Start preparing for 2.8.4
      More topics for 2.8.4
      Git 2.8.4

Karsten Blees (1):
      mingw: make isatty() recognize MSYS2's pseudo terminals (/dev/pty*)

Keller Fuchs (1):
      Documentation: clarify signature verification

Lars Schneider (1):
      travis-ci: build documentation

Li Peng (1):
      typofix: assorted typofixes in comments, documentation and messages

Nguyễn Thái Ngọc Duy (1):
      remote.c: specify correct plural form in "commit diverge" message

Stefan Beller (3):
      submodule deinit: require '--all' instead of '.' for all submodules
      t3513: do not compress backup tar file
      t6041: do not compress backup tar file

Torsten Bögershausen (5):
      t0027: make commit_chk_wrnNNO() reliable
      convert: allow core.autocrlf=input and core.eol=crlf
      t0027: test cases for combined attributes
      convert.c: ident + core.autocrlf didn't work
      t5601: Remove trailing space in sed expression

Vasco Almeida (12):
      i18n: index-pack: use plural string instead of normal one
      i18n: builtin/branch.c: mark option for translation
      i18n: unpack-trees: mark strings for translation
      i18n: builtin/rm.c: remove a comma ',' from string
      i18n: branch: unmark string for translation
      i18n: branch: move comment for translators
      i18n: git-parse-remote.sh: mark strings for translation
      i18n: builtin/pull.c: mark placeholders for translation
      i18n: builtin/pull.c: split strings marked for translation
      i18n: remote: add comment for translators
      Documentation/git-mailinfo: fix typo
      i18n: unpack-trees: avoid substituting only a verb in sentences


Version v2.8.3; changes since v2.8.2:
-------------------------------------

Adam Dinwoodie (2):
      config.mak.uname: Cygwin needs OBJECT_CREATION_USES_RENAMES
      commit: --amend -m '' silently fails to wipe message

Christian Couder (3):
      builtin/apply: get rid of useless 'name' variable
      builtin/apply: handle parse_binary() failure
      builtin/apply: free patch when parse_chunk() fails

Eric Sunshine (1):
      git-format-patch.txt: don't show -s as shorthand for multiple options

Eric Wong (4):
      send-email: more meaningful Message-ID
      send-email: do not load Data::Dumper
      pack-objects: warn on split packs disabling bitmaps
      .mailmap: update to my shorter email address

Jeff King (22):
      setup: document check_repository_format()
      wrap shared_repository global in get/set accessors
      lazily load core.sharedrepository
      check_repository_format_gently: stop using git_config_early
      config: drop git_config_early
      setup: refactor repo format reading and verification
      init: use setup.c's repo version verification
      setup: unify repository version callbacks
      setup: drop repository_format_version global
      verify_repository_format: mark messages for translation
      branch: fix shortening of non-remote symrefs
      commit: do not ignore an empty message given by -m ''
      config: lower-case first word of error strings
      git_config_set_multivar_in_file: all non-zero returns are errors
      git_config_set_multivar_in_file: handle "unset" errors
      t5532: use write_script
      send-pack: close demux pipe before finishing async process
      run-command: teach async threads to ignore SIGPIPE
      send-pack: isolate sigpipe in demuxer thread
      fetch-pack: isolate sigpipe in demuxer thread
      t5504: drop sigpipe=ok from push tests
      remote.c: spell __attribute__ correctly

Johannes Schindelin (5):
      replace --edit: respect core.editor
      win32mmap: set errno appropriately
      mmap(win32): avoid copy-on-write when it is unnecessary
      mmap(win32): avoid expensive fstat() call
      Windows: only add a no-op pthread_sigmask() when needed

Johannes Sixt (1):
      Windows: add pthread_sigmask() that does nothing

Junio C Hamano (10):
      apply: remove unused call to free() in gitdiff_{old,new}name()
      submodule--helper: do not borrow absolute_path() result for too long
      setup.c: do not feed NULL to "%.*s" even with precision 0
      http: differentiate socks5:// and socks5h://
      t1020: do not overuse printf and use write_script
      t3404: use write_script
      send-email: fix grammo in the prompt that asks e-mail recipients
      Start preparing for 2.8.3
      Almost ready for 2.8.3
      Git 2.8.3

Kazuki Yamaguchi (10):
      branch -d: refuse deleting a branch which is currently checked out
      refs: add a new function set_worktree_head_symref
      branch -m: update all per-worktree HEADs
      set_worktree_head_symref(): fix error message
      imap-send: use HMAC() function provided by OpenSSL
      imap-send: check NULL return of SSL_CTX_new()
      imap-send: avoid deprecated TLSv1_method()
      configure: remove checking for HMAC_CTX_cleanup
      imap-send: check for NOLOGIN capability only when using LOGIN command
      imap-send: fix CRAM-MD5 response calculation

Lars Schneider (5):
      travis-ci: update Git-LFS and P4 to the latest version
      travis-ci: express Linux/OS X dependency versions more clearly
      git-p4: fix Git LFS pointer parsing
      t9824: fix wrong reference value
      Documentation: add setup instructions for Travis CI

Luke Diamand (3):
      git-p4 tests: cd to / before running python
      git-p4 tests: work with python3 as well as python2
      git-p4 tests: time_in_seconds should use $PYTHON_PATH

Marios Titas (2):
      ident: check for useConfigOnly before auto-detection of name/email
      ident: give "please tell me" message upon useConfigOnly error

Matthieu Moy (1):
      git-multimail: update to release 1.3.0

Nguyễn Thái Ngọc Duy (2):
      dir.c: remove dead function fnmatch_icase()
      wrapper.c: delete dead function git_mkstemps()

Nikola Forró (1):
      difftool/mergetool: make the form of yes/no questions consistent

Ralf Thielow (1):
      string_list: use string-list API in unsorted_string_list_lookup()

René Nyffenegger (1):
      Documentation: fix typo 'In such these cases'

SZEDER Gábor (4):
      for-each-ref: fix description of '--contains' in manpage
      test-lib: simplify '--option=value' parsing
      t9824: fix broken &&-chain in a subshell
      t5510: run auto-gc in the foreground

Shin Kojima (1):
      gitweb: apply fallback encoding before highlight

Stefan Beller (20):
      submodule foreach: correct path display in recursive submodules
      submodule update --init: correct path handling in recursive submodules
      submodule status: correct path handling in recursive submodules
      submodule update: align reporting path for custom command execution
      submodule update: test recursive path reporting from subdirectory
      t7407: make expectation as clear as possible
      recursive submodules: test for relative paths
      submodule--helper: fix potential NULL-dereference
      submodule--helper clone: create the submodule path just once
      notes: don't leak memory in git_config_get_notes_strategy
      abbrev_sha1_in_line: don't leak memory
      bundle: don't leak an fd in case of early return
      credential-cache, send_request: close fd when done
      submodule--helper, module_clone: always operate on absolute paths
      submodule--helper, module_clone: catch fprintf failure
      mv: allow moving nested submodules
      config doc: improve exit code listing
      config.c: drop local variable
      submodule-config: don't shadow `cache`
      t7300: mark test with SANITY


Version v2.8.2; changes since v2.8.1:
-------------------------------------

Alexander Kuleshov (1):
      submodule-config: use hashmap_iter_first()

Christian Couder (1):
      Documentation: talk about pager in api-trace.txt

David Aguilar (2):
      mergetool: support delete/delete conflicts
      mergetool: honor tempfile configuration when resolving delete conflicts

Elia Pinto (1):
      api-trace.txt: fix typo

Gabriel Souza Franco (2):
      fetch-pack: fix object_id of exact sha1
      fetch-pack: update the documentation for "<refs>..." arguments

Jeff King (12):
      t1515: add tests for rev-parse out-of-repo helpers
      rev-parse: let some options run outside repository
      strbuf_getwholeline: NUL-terminate getdelim buffer on error
      setup: make startup_info available everywhere
      setup: set startup_info->have_repository more reliably
      remote: don't resolve HEAD in non-repository
      mailmap: do not resolve blobs in a non-repository
      grep: turn off gitlink detection for --no-index
      use setup_git_directory() in test-* programs
      send-email: ignore trailing whitespace in mailrc alias file
      credential-cache--daemon: clarify "exit" action semantics
      t/lib-httpd: pass through GIT_CONFIG_NOSYSTEM env

Johannes Sixt (1):
      Windows: shorten code by re-using convert_slashes()

John Keeping (3):
      config: fail if --get-urlmatch finds no value
      Documentation/git-config: use bulleted list for exit codes
      Documentation/git-config: fix --get-all description

Junio C Hamano (7):
      index-pack: correct --keep[=<msg>]
      index-pack: add a helper function to derive .idx/.keep filename
      merge: fix NULL pointer dereference when merging nothing into void
      Makefile: fix misdirected redirections
      Start preparing for 2.8.2
      Prepare for 2.8.2
      Git 2.8.2

Matthieu Moy (2):
      lockfile: mark strings for translation
      lockfile: improve error message when lockfile exists

Michael Procter (1):
      upload-pack: use argv_array for pack_objects

Nguyễn Thái Ngọc Duy (2):
      git-apply.txt: remove a space
      git-apply.txt: mention the behavior inside a subdir

Ori Avtalion (1):
      Documentation: git diff --check detects conflict markers

Pranit Bauva (2):
      t/t7502 : drop duplicate test
      api-parse-options.txt: document OPT_CMDMODE()

Ramsay Jones (2):
      xdiff/xprepare: use the XDF_DIFF_ALG() macro to access flag bits
      xdiff/xprepare: fix a memory leak

SZEDER Gábor (1):
      diffcore: fix iteration order of identical files during rename detection

Saurav Sachidanand (1):
      dir: store EXC_FLAG_* values in unsigned integers

Stanislav Kolotinskiy (1):
      git-send-pack: fix --all option when used with directory

Stefan Beller (1):
      clone tests: rename t57* => t56*

Sven Strickroth (3):
      commit: do not lose SQUASH_MSG contents
      MSVC: vsnprintf in Visual Studio 2015 doesn't need SNPRINTF_SIZE_CORR any more
      MSVC: use shipped headers instead of fallback definitions

Torsten Bögershausen (1):
      correct blame for files commited with CRLF

Vasco Almeida (4):
      l10n: fr: fix transcation of "dir"
      l10n: fr: fix wrongly translated option name
      l10n: fr: change "id de clé" to match "id-clé"
      l10n: fr: don't translate "merge" as a parameter


Version v2.8.1; changes since v2.8.0:
-------------------------------------

Junio C Hamano (1):
      Git 2.8.1

Matthieu Moy (1):
      git.spec.in: use README.md, not README


Version v2.8.0; changes since v2.8.0-rc4:
-----------------------------------------

Alex Henrie (1):
      l10n: ca.po: update translation

Johannes Schindelin (4):
      config --show-origin: report paths with forward slashes
      t1300-repo-config: make it resilient to being run via 'sh -x'
      t1300: fix the new --show-origin tests on Windows
      mingw: skip some tests in t9115 due to file name issues

Junio C Hamano (1):
      Git 2.8

Lars Schneider (2):
      Documentation: use ASCII quotation marks in git-p4
      Documentation: fix git-p4 AsciiDoc formatting

Stefan Beller (1):
      submodule: fix regression for deinit without submodules

Trần Ngọc Quân (1):
      l10n: vi.po (2530t): Update translation

Vasco Almeida (1):
      l10n: pt_PT: Update and add new translations


Version v2.8.0-rc4; changes since v2.8.0-rc3:
---------------------------------------------

Alexander Shopov (1):
      gitk: Update Bulgarian translation (311t)

Changwoo Ryu (1):
      l10n: ko.po: Update Korean translation

Dimitriy Ryazantcev (1):
      l10n: ru.po: update Russian translation

Eric Sunshine (2):
      git-compat-util: st_add4: work around gcc 4.2.x compiler crash
      Revert "config.mak.uname: use clang for Mac OS X 10.6"

Guillermo S. Romero (1):
      gitk: Follow themed bgcolor in help dialogs

Jean-Noël Avila (3):
      l10n: fr.po v2.8.0 round 3
      gitk: Update French translation (311t)
      gitk: fr.po: Sync translations with git

Junio C Hamano (8):
      Git 2.4.11
      Git 2.5.5
      Git 2.6.6
      Git 2.7.4
      Revert "Merge branch 'jc/exclusion-doc'"
      Revert "Merge branch 'nd/exclusion-regression-fix'"
      RelNotes: remove the mention of !reinclusion
      Git 2.8-rc4

Matthieu Moy (1):
      Documentation: fix broken linkgit to git-config

Peter Krefting (1):
      l10n: sv.po: Update Swedish translation (2530t0f0u)

Ralf Thielow (3):
      l10n: de.po: translate 22 new messages
      l10n: de.po: add missing newlines
      gitk: Update German translation

Ray Chen (1):
      l10n: zh_CN: review for git v2.8.0 l10n round 2


Version v2.8.0-rc3; changes since v2.8.0-rc2:
---------------------------------------------

Adam Dinwoodie (1):
      t9117: test specifying full url to git svn init -T

Audric Schiltknecht (1):
      l10n: fr.po: Correct case in sentence

Carlos Martín Nieto (1):
      Disown ssh+git and git+ssh

Changwoo Ryu (2):
      l10n: ko.po: Update Korean translation
      l10n: ko: Update Korean translation

Christoph Hoopmann (1):
      l10n: de.po: fix typo

Dimitriy Ryazantcev (2):
      l10n: ru.po: update Russian translation
      l10n: ru.po: update Russian translation

Eric Wong (2):
      git-svn: shorten glob error message
      git-svn: fix URL canonicalization during init w/ SVN 1.7+

Jean-Noël Avila (2):
      l10n: fr.po v2.8.0 round 1 2509t
      l10n: fr.po v2.8.0 round 2

Jeff King (7):
      add helpers for detecting size_t overflow
      tree-diff: catch integer overflow in combine_diff_path allocation
      http-push: stop using name_path
      show_object_with_name: simplify by using path_name()
      list-objects: convert name_path to a strbuf
      list-objects: drop name_path entirely
      list-objects: pass full pathname to callbacks

Jiang Xin (6):
      l10n: git.pot: v2.8.0 round 1 (48 new, 16 removed)
      l10n: zh_CN: for git v2.8.0 l10n round 1
      l10n: git.pot: v2.8.0 round 2 (21 new, 1 removed)
      l10n: zh_CN: for git v2.8.0 l10n round 2
      l10n: git.pot: Add one new message for Git 2.8.0
      l10n: zh_CN: for git v2.8.0 l10n round 3

Junio C Hamano (4):
      sane_grep: pass "-a" if grep accepts it
      rebase-i: clarify "is this commit relevant?" test
      RelNotes for 2.8.0: typofix
      Git 2.8-rc3

Michael J Gruber (1):
      wt-status: allow "ahead " to be picked up by l10n

Peter Krefting (2):
      l10n: sv.po: Fix inconsistent translation of "progress meter"
      l10n: sv.po: Update Swedish translation (2509t0f0u)

Ralf Thielow (5):
      l10n: TEAMS: update Ralf Thielow's email address
      l10n: de.po: add space to abbreviation "z. B."
      l10n: de.po: fix interactive rebase message
      l10n: de.po: translate "command" as "Befehl"
      l10n: de.po: translate 48 new messages

Trần Ngọc Quân (1):
      l10n: vi.po (2509t): Updated Vietnamese translation

Victor Leschuk (1):
      git-svn: loosen config globs limitations


Version v2.8.0-rc2; changes since v2.8.0-rc1:
---------------------------------------------

Jiang Xin (1):
      http: honor no_http env variable to bypass proxy

Junio C Hamano (3):
      gitignore: document that unignoring a directory unignores everything in it
      Git 2.7.3
      Git 2.8-rc2

Michael J Gruber (1):
      t5510: do not leave changed cwd

Stefan Beller (1):
      Documentation: reword rebase summary


Version v2.8.0-rc1; changes since v2.8.0-rc0:
---------------------------------------------

Jeff King (5):
      t5313: test bounds-checks of corrupted/malicious pack/idx files
      nth_packed_object_offset: bounds-check extended offset
      use_pack: handle signed off_t overflow
      compat/mingw: brown paper bag fix for 50a6c8e
      t9700: fix test for perl older than 5.14

Johannes Schindelin (1):
      Mark win32's pthread_exit() as NORETURN

Johannes Sixt (1):
      t0001: fix GIT_* environment variable check under --valgrind

Junio C Hamano (1):
      Git 2.8-rc1

Michael J Gruber (1):
      t/lib-httpd: load mod_unixd

Nguyễn Thái Ngọc Duy (5):
      sha1_file.c: mark strings for translation
      builtin/checkout.c: mark strings for translation
      builtin/clone.c: mark strings for translation
      ref-filter.c: mark strings for translation
      trailer.c: mark strings for translation

Stefan Beller (1):
      run-command: do not pass child process data into callbacks

Thomas Ackermann (1):
      documentation: fix some typos

Torsten Bögershausen (1):
      config.mak.uname: use clang for Mac OS X 10.6


Version v2.8.0-rc0; changes since v2.7.6:
-----------------------------------------

Alexander Kuleshov (1):
      format-patch: introduce format.outputDirectory configuration

Christian Couder (11):
      dir: free untracked cache when removing it
      update-index: use enum for untracked cache options
      update-index: add --test-untracked-cache
      update-index: add untracked cache notifications
      update-index: move 'uc' var declaration
      dir: add {new,add}_untracked_cache()
      dir: add remove_untracked_cache()
      dir: simplify untracked cache "ident" field
      config: add core.untrackedCache
      test-dump-untracked-cache: don't modify the untracked cache
      t7063: add tests for core.untrackedCache

Christoph Egger (1):
      http: implement public key pinning

Dan Aloni (1):
      ident: add user.useConfigOnly boolean for when ident shouldn't be guessed

David A. Greene (1):
      contrib/subtree: Make testing easier

David Turner (2):
      do_compare_entry: use already-computed path
      unpack-trees: fix accidentally quadratic behavior

Edmundo Carmona Antoranz (1):
      blame: add support for --[no-]progress option

Elia Pinto (92):
      Makefile: add missing phony target
      contrib/examples/git-commit.sh: use the $( ... ) construct for command substitution
      contrib/examples/git-fetch.sh: use the $( ... ) construct for command substitution
      contrib/examples/git-merge.sh: use the $( ... ) construct for command substitution
      contrib/examples/git-repack.sh: use the $( ... ) construct for command substitution
      contrib/examples/git-revert.sh: use the $( ... ) construct for command substitution
      contrib/thunderbird-patch-inline/appp.sh: use the $( ... ) construct for command substitution
      git-gui/po/glossary/txt-to-pot.sh: use the $( ... ) construct for command substitution
      t/lib-httpd.sh: use the $( ... ) construct for command substitution
      test-sha1.sh: use the $( ... ) construct for command substitution
      unimplemented.sh: use the $( ... ) construct for command substitution
      t/t1100-commit-tree-options.sh: use the $( ... ) construct for command substitution
      t/t1401-symbolic-ref.sh: use the $( ... ) construct for command substitution
      t/t1410-reflog.sh: use the $( ... ) construct for command substitution
      t/t1511-rev-parse-caret.sh: use the $( ... ) construct for command substitution
      t/t1512-rev-parse-disambiguation.sh: use the $( ... ) construct for command substitution
      t/t1700-split-index.sh: use the $( ... ) construct for command substitution
      t/t2025-worktree-add.sh: use the $( ... ) construct for command substitution
      t/t2102-update-index-symlinks.sh: use the $( ... ) construct for command substitution
      t/t3030-merge-recursive.sh: use the $( ... ) construct for command substitution
      t/t3100-ls-tree-restrict.sh: use the $( ... ) construct for command substitution
      t/t3101-ls-tree-dirname.sh: use the $( ... ) construct for command substitution
      t/t3210-pack-refs.sh: use the $( ... ) construct for command substitution
      t/t3403-rebase-skip.sh: use the $( ... ) construct for command substitution
      t/t3511-cherry-pick-x.sh: use the $( ... ) construct for command substitution
      t/t3600-rm.sh: use the $( ... ) construct for command substitution
      t/t3700-add.sh: use the $( ... ) construct for command substitution
      t/t5100-mailinfo.sh: use the $( ... ) construct for command substitution
      t/t5300-pack-object.sh: use the $( ... ) construct for command substitution
      t/t5301-sliding-window.sh: use the $( ... ) construct for command substitution
      t/t5302-pack-index.sh: use the $( ... ) construct for command substitution
      t/t5303-pack-corruption-resilience.sh: use the $( ... ) construct for command substitution
      t/t5304-prune.sh: use the $( ... ) construct for command substitution
      t/t5305-include-tag.sh: use the $( ... ) construct for command substitution
      t/t5500-fetch-pack.sh: use the $( ... ) construct for command substitution
      t/t5505-remote.sh: use the $( ... ) construct for command substitution
      t/t5506-remote-groups.sh: use the $( ... ) construct for command substitution
      t/t5510-fetch.sh: use the $( ... ) construct for command substitution
      t/t5515-fetch-merge-logic.sh: use the $( ... ) construct for command substitution
      t/t5516-fetch-push.sh: use the $( ... ) construct for command substitution
      t/t5517-push-mirror.sh: use the $( ... ) construct for command substitution
      t/t5522-pull-symlink.sh: use the $( ... ) construct for command substitution
      t/t5530-upload-pack-error.sh: use the $( ... ) construct for command substitution
      t/t5532-fetch-proxy.sh: use the $( ... ) construct for command substitution
      t/t5537-fetch-shallow.sh: use the $( ... ) construct for command substitution
      t/t5538-push-shallow.sh: use the $( ... ) construct for command substitution
      t/t5550-http-fetch-dumb.sh: use the $( ... ) construct for command substitution
      t/t5570-git-daemon.sh: use the $( ... ) construct for command substitution
      t/t5601-clone.sh: use the $( ... ) construct for command substitution
      t/t5700-clone-reference.sh: use the $( ... ) construct for command substitution
      t/t5710-info-alternate.sh: use the $( ... ) construct for command substitution
      t/t5900-repo-selection.sh: use the $( ... ) construct for command substitution
      t/t6001-rev-list-graft.sh: use the $( ... ) construct for command substitution
      t/t6002-rev-list-bisect.sh: use the $( ... ) construct for command substitution
      t/t6015-rev-list-show-all-parents.sh: use the $( ... ) construct for command substitution
      t/t6032-merge-large-rename.sh: use the $( ... ) construct for command substitution
      t/t6132-pathspec-exclude.sh: use the $( ... ) construct for command substitution
      t/t7001-mv.sh: use the $( ... ) construct for command substitution
      t/t7003-filter-branch.sh: use the $( ... ) construct for command substitution
      t/t7004-tag.sh: use the $( ... ) construct for command substitution
      t/t7006-pager.sh: use the $( ... ) construct for command substitution
      t/t7103-reset-bare.sh: use the $( ... ) construct for command substitution
      t/t7406-submodule-update.sh: use the $( ... ) construct for command substitution
      t/t7408-submodule-reference.sh: use the $( ... ) construct for command substitution
      t/t7504-commit-msg-hook.sh: use the $( ... ) construct for command substitution
      t/t7505-prepare-commit-msg-hook.sh: use the $( ... ) construct for command substitution
      t/t7602-merge-octopus-many.sh: use the $( ... ) construct for command substitution
      t/t7700-repack.sh: use the $( ... ) construct for command substitution
      t/t8003-blame-corner-cases.sh: use the $( ... ) construct for command substitution
      t/t9001-send-email.sh: use the $( ... ) construct for command substitution
      t9100-git-svn-basic.sh: use the $( ... ) construct for command substitution
      t9101-git-svn-props.sh: use the $( ... ) construct for command substitution
      t9104-git-svn-follow-parent.sh: use the $( ... ) construct for command substitution
      t9105-git-svn-commit-diff.sh: use the $( ... ) construct for command substitution
      t9107-git-svn-migrate.sh: use the $( ... ) construct for command substitution
      t9108-git-svn-glob.sh: use the $( ... ) construct for command substitution
      t9109-git-svn-multi-glob.sh: use the $( ... ) construct for command substitution
      t9110-git-svn-use-svm-props.sh: use the $( ... ) construct for command substitution
      t9114-git-svn-dcommit-merge.sh: use the $( ... ) construct for command substitution
      t9118-git-svn-funky-branch-names.sh: use the $( ... ) construct for command substitution
      t9119-git-svn-info.sh: use the $( ... ) construct for command substitution
      t9129-git-svn-i18n-commitencoding.sh: use the $( ... ) construct for command substitution
      t9130-git-svn-authors-file.sh: use the $( ... ) construct for command substitution
      t9132-git-svn-broken-symlink.sh: use the $( ... ) construct for command substitution
      t9137-git-svn-dcommit-clobber-series.sh: use the $( ... ) construct for command substitution
      t9138-git-svn-authors-prog.sh: use the $( ... ) construct for command substitution
      t9145-git-svn-master-branch.sh: use the $( ... ) construct for command substitution
      t9150-svk-mergetickets.sh: use the $( ... ) construct for command substitution
      t9300-fast-import.sh: use the $( ... ) construct for command substitution
      t9350-fast-export.sh: use the $( ... ) construct for command substitution
      t9501-gitweb-standalone-http-status.sh: use the $( ... ) construct for command substitution
      t9901-git-web--browse.sh: use the $( ... ) construct for command substitution

Eric Wong (5):
      pass transport verbosity down to git_connect
      connect & http: support -4 and -6 switches for remote operations
      t5570: add tests for "git {clone,fetch,pull} -v"
      git-svn: hoist out utf8 prep from t9129 to lib-git-svn
      tests: remove no-op full-svn-test target

Felipe Gonçalves Assis (7):
      merge-recursive: option to disable renames
      merge-recursive: more consistent interface
      merge-strategies.txt: fix typo
      merge-recursive: find-renames resets threshold
      t3034: add rename threshold tests
      t3034: test option to disable renames
      t3034: test deprecated interface

Jacob Keller (1):
      notes: allow merging from arbitrary references

Jeff King (33):
      pack-revindex: drop hash table
      pack-revindex: store entries directly in packed_git
      create_symref: modernize variable names
      create_symref: use existing ref-lock code
      create_symref: write reflog while holding lock
      run-command: don't warn on SIGPIPE deaths
      checkout,clone: check return value of create_symref
      lock_ref_sha1_basic: always fill old_oid while holding lock
      lock_ref_sha1_basic: handle REF_NODEREF with invalid refs
      shortlog: match both "Author:" and "author" on stdin
      shortlog: use strbufs to read from stdin
      shortlog: replace hand-parsing of author with pretty-printer
      shortlog: optimize "--summary" mode
      shortlog: optimize out useless "<none>" normalization
      shortlog: optimize out useless string list
      shortlog: don't warn on empty author
      transport: drop support for git-over-rsync
      give "nbuf" strbuf a more meaningful name
      checkout-index: simplify "-z" option parsing
      checkout-index: handle "--no-prefix" option
      checkout-index: handle "--no-index" option
      checkout-index: disallow "--no-stage" option
      apply, ls-files: simplify "-z" parsing
      fmt_ident: refactor strictness checks
      test-path-utils: use xsnprintf in favor of strcpy
      rerere: replace strcpy with xsnprintf
      http-push: stop using name_path
      show_object_with_name: simplify by using path_name()
      list-objects: convert name_path to a strbuf
      list-objects: drop name_path entirely
      list-objects: pass full pathname to callbacks
      git-config: better document default behavior for `--include`
      ref-filter: use string_list_split over strbuf_split

Johannes Schindelin (31):
      config.mak.uname: support MSys2
      config.mak.uname: supporting 64-bit MSys2
      pull: allow interactive rebase with --rebase=interactive
      remote: handle the config setting branch.*.rebase=interactive
      completion: add missing branch.*.rebase values
      nedmalloc: allow compiling with MSys2's compiler
      compat/mingw: support MSys2-based MinGW build
      compat/winansi: support compiling with MSys2
      mingw: avoid redefining S_* constants
      mingw: avoid warnings when casting HANDLEs to int
      mingw: squash another warning about a cast
      mingw: uglify (a, 0) definitions to shut up warnings
      mingw: let's use gettext with MSYS2
      mingw: do not trust MSYS2's MinGW gettext.sh
      Git.pm: stop assuming that absolute paths start with a slash
      mingw: prepare the TMPDIR environment variable for shell scripts
      mingw: let lstat() fail with errno == ENOTDIR when appropriate
      mingw: fix t5601-clone.sh
      mingw: accomodate t0060-path-utils for MSYS2
      mingw: disable mkfifo-based tests
      tests: turn off git-daemon tests if FIFOs are not available
      mingw: skip test in t1508 that fails due to path conversion
      mingw: fix t9700's assumption about directory separators
      mingw: work around pwd issues in the tests
      mingw: mark t9100's test cases with appropriate prereqs
      mingw: avoid illegal filename in t9118
      mingw: handle the missing POSIXPERM prereq in t9124
      mingw: skip a test in t9130 that cannot pass on Windows
      mingw: do not bother to test funny file names
      gitignore: ignore generated test-fake-ssh executable
      t5505: 'remote add x y' should work when url.y.insteadOf = x

Johannes Sixt (1):
      t/t5100: no need to use 'echo' command substitutions for globbing

Jon Griffiths (3):
      credential-cache--daemon: refactor check_socket_directory
      credential-cache--daemon: disallow relative socket path
      credential-cache--daemon: change to the socket dir on startup

Jonathan Nieder (1):
      submodule.c: write "Fetching submodule <foo>" to stderr

Junio C Hamano (35):
      First batch for post 2.7 cycle
      strbuf: miniscule style fix
      strbuf: make strbuf_getline_crlf() global
      strbuf: introduce strbuf_getline_{lf,nul}()
      mktree: there are only two possible line terminations
      check-attr: there are only two possible line terminations
      check-ignore: there are only two possible line terminations
      update-index: there are only two possible line terminations
      checkout-index: there are only two possible line terminations
      strbuf: give strbuf_getline() to the "most text friendly" variant
      hash-object: read --stdin-paths with strbuf_getline()
      revision: read --stdin with strbuf_getline()
      rev-parse: read parseopt spec with strbuf_getline()
      ident.c: read /etc/mailname with strbuf_getline()
      remote.c: read $GIT_DIR/remotes/* with strbuf_getline()
      clone/sha1_file: read info/alternates with strbuf_getline()
      transport-helper: read helper response with strbuf_getline()
      cat-file: read batch stream with strbuf_getline()
      column: read lines with strbuf_getline()
      send-pack: read list of refs with strbuf_getline()
      grep: read -f file with strbuf_getline()
      test-sha1-array: read command stream with strbuf_getline()
      Second batch for 2.8 cycle
      Third batch for 2.8 cycle
      git: remove an early return from save_env_before_alias()
      git: protect against unbalanced calls to {save,restore}_env()
      git: simplify environment save/restore logic
      Fourth batch for 2.8.cycle
      Getting closer to 2.7.1
      restore_env(): free the saved environment variable once we are done
      Fifth batch for 2.8 cycle
      Sixth batch for the 2.8 cycle
      Seventh batch for the 2.8 cycle
      Eighth batch for 2.8
      Git 2.8-rc0

Karsten Blees (1):
      mingw: factor out Windows specific environment setup

Karthik Nayak (10):
      ref-filter: bump 'used_atom' and related code to the top
      ref-filter: introduce struct used_atom
      ref-filter: introduce parsing functions for each valid atom
      ref-filter: introduce color_atom_parser()
      ref-filter: introduce parse_align_position()
      ref-filter: introduce align_atom_parser()
      ref-filter: align: introduce long-form syntax
      ref-filter: introduce remote_ref_atom_parser()
      ref-filter: introduce contents_atom_parser()
      ref-filter: introduce objectname_atom_parser()

Kazutoshi Satoda (2):
      git-svn: enable "svn.pathnameencoding" on dcommit
      git-svn: apply "svn.pathnameencoding" before URL encoding

Knut Franke (2):
      http: allow selection of proxy authentication method
      http: use credential API to handle proxy authentication

Lars Schneider (8):
      travis-ci: run previously failed tests first, then slowest to fastest
      travis-ci: explicity use container-based infrastructure
      convert: treat an empty string for clean/smudge filters as "cat"
      t: do not hide Git's exit code in tests using 'nul_to_q'
      rename git_config_from_buf to git_config_from_mem
      config: add 'origin_type' to config_source struct
      config: add '--show-origin' option to print the origin of a config value
      add DEVELOPER makefile knob to check for acknowledged warnings

Matthew Kraai (1):
      Documentation: remove unnecessary backslashes

Matthieu Moy (6):
      README: use markdown syntax
      README.md: add hyperlinks on filenames
      README.md: move the link to git-scm.com up
      README.md: don't call git stupid in the title
      README.md: move down historical explanation about the name
      push: remove "push.default is unset" warning message

Michael J Gruber (1):
      t9100: fix breakage when SHELL_PATH is not /bin/sh

Mike Hommey (1):
      notes: allow treeish expressions as notes ref

Nguyễn Thái Ngọc Duy (9):
      git.c: make it clear save_env() is for alias handling only
      setup.c: re-fix d95138e (setup: set env $GIT_WORK_TREE when ..
      git.c: make sure we do not leak GIT_* to alias scripts
      dir.c: fix match_pathname()
      dir.c: support tracing exclude
      dir.c: support marking some patterns already matched
      dir.c: don't exclude whole dir prematurely
      worktree: fix "add -B"
      worktree add -B: do the checkout test before update branch

Pat Thoyts (1):
      t0008: avoid absolute path

Patrick Steinhardt (2):
      push: add '--delete' flag to synopsis
      push: add '-d' as shorthand for '--delete'

Rob Mayoff (1):
      contrib/subtree: unwrap tag refs

Romain Picard (1):
      git-p4.py: add support for filetype change

Stefan Beller (7):
      xread: poll on non blocking fds
      strbuf: add strbuf_read_once to read without blocking
      sigchain: add command to pop all common signals
      run-command: add an asynchronous parallel child processor
      fetch_populated_submodules: use new parallel job processing
      submodules: allow parallel fetching, add tests and documentation
      submodule: try harder to fetch needed sha1 by direct fetching sha1

Thomas Gummerer (11):
      t7810: correct --no-index test
      builtin/grep: add grep.fallbackToNoIndex config
      ls-remote: document --quiet option
      ls-remote: document --refs option
      ls-remote: fix synopsis
      ls-remote: use parse-options api
      ls-remote: add support for showing symrefs
      remote: use parse_config_key
      remote: simplify remote_is_configured()
      remote: actually check if remote exits
      remote: use remote_is_configured() for add and rename

Tobias Klauser (2):
      trailer: allow to write to files other than stdout
      interpret-trailers: add option for in-place editing

Torsten Bögershausen (8):
      ls-files: add eol diagnostics
      t0027: add tests for get_stream_filter()
      convert.c: remove unused parameter 'path'
      convert.c: remove input_crlf_action()
      convert.c: use text_eol_is_crlf()
      convert.c: refactor crlf_action
      convert.c: simplify text_stat
      convert.c: correct attr_action()

Victor Leschuk (3):
      grep: allow threading even on a single-core machine
      grep: slight refactoring to the code that disables threading
      grep: add --threads=<num> option and grep.threads configuration

Will Palmer (2):
      test for '!' handling in rev-parse's named commits
      object name: introduce '^{/!-<negative pattern>}' notation

brian m. carlson (1):
      http: add option to try authentication without username

마누엘 (1):
      mingw: try to delete target directory before renaming


Version v2.7.6; changes since v2.7.5:
-------------------------------------

Jeff King (4):
      t5813: add test for hostname starting with dash
      connect: factor out "looks like command line option" check
      connect: reject dashed arguments for proxy commands
      connect: reject paths that look like command line options

Junio C Hamano (2):
      connect: reject ssh hostname that begins with a dash
      Git 2.7.6


Version v2.7.5; changes since v2.7.4:
-------------------------------------

Eric Sunshine (1):
      git-compat-util: st_add4: work around gcc 4.2.x compiler crash

Jeff King (2):
      archive-tar: convert snprintf to xsnprintf
      shell: disallow repo names beginning with dash

Junio C Hamano (4):
      Git 2.4.12
      Git 2.5.6
      Git 2.6.7
      Git 2.7.5

Matthieu Moy (1):
      Documentation: fix broken linkgit to git-config


Version v2.7.4; changes since v2.7.3:
-------------------------------------

Jeff King (7):
      add helpers for detecting size_t overflow
      tree-diff: catch integer overflow in combine_diff_path allocation
      http-push: stop using name_path
      show_object_with_name: simplify by using path_name()
      list-objects: convert name_path to a strbuf
      list-objects: drop name_path entirely
      list-objects: pass full pathname to callbacks

Junio C Hamano (4):
      Git 2.4.11
      Git 2.5.5
      Git 2.6.6
      Git 2.7.4


Version v2.7.3; changes since v2.7.2:
-------------------------------------

Alexander Kuleshov (2):
      exec_cmd.c: use find_last_dir_sep() for code simplification
      git.c: simplify stripping extension of a file in handle_builtin()

David Turner (1):
      refs: document transaction semantics

Jeff King (37):
      checkout: reorder check_filename conditional
      check_filename: tighten dwim-wildcard ambiguity
      get_sha1: don't die() on bogus search strings
      reflog_expire_cfg: NUL-terminate pattern field
      add helpers for detecting size_t overflow
      tree-diff: catch integer overflow in combine_diff_path allocation
      diff: clarify textconv interface
      harden REALLOC_ARRAY and xcalloc against size_t overflow
      add helpers for allocating flex-array structs
      argv-array: add detach function
      convert manual allocations to argv_array
      convert trivial cases to ALLOC_ARRAY
      use xmallocz to avoid size arithmetic
      convert trivial cases to FLEX_ARRAY macros
      use st_add and st_mult for allocation size computation
      prepare_{git,shell}_cmd: use argv_array
      write_untracked_extension: use FLEX_ALLOC helper
      fast-import: simplify allocation in start_packfile
      fetch-pack: simplify add_sought_entry
      test-path-utils: fix normalize_path_copy output buffer size
      sequencer: simplify memory allocation of get_message
      git-compat-util: drop mempcpy compat code
      transport_anonymize_url: use xstrfmt
      diff_populate_gitlink: use a strbuf
      convert ewah/bitmap code to use xmalloc
      ewah: convert to REALLOC_ARRAY, etc
      merge-one-file: use empty blob for add/add base
      merge-tree: drop generate_common strategy
      xdiff: drop XDL_EMIT_COMMON
      t5313: test bounds-checks of corrupted/malicious pack/idx files
      nth_packed_object_offset: bounds-check extended offset
      use_pack: handle signed off_t overflow
      write_or_die: handle EPIPE in async threads
      fetch-pack: ignore SIGPIPE in sideband demuxer
      test_must_fail: report number of unexpected signal
      t5504: handle expected output from SIGPIPE death
      compat/mingw: brown paper bag fix for 50a6c8e

Johannes Schindelin (1):
      git config: report when trying to modify a non-existing repo config

John Keeping (2):
      t8005: avoid grep on non-ASCII data
      t9200: avoid grep on non-ASCII data

Junio C Hamano (4):
      pager: lose a separate argv[]
      pager: factor out a helper to prepare a child process to run the pager
      am -i: fix "v"iew
      Git 2.7.3

Martin Amdisen (1):
      templates/hooks: fix minor typo in the sample update-hook

Matthieu Moy (1):
      Documentation/git-push: document that 'simple' is the default

Michael J Gruber (1):
      tests: rename work-tree tests to *work-tree*

Nguyễn Thái Ngọc Duy (2):
      rev-parse: take prefix into account in --git-common-dir
      sha1_file.c: mark strings for translation

Patrick Steinhardt (16):
      config: introduce set_or_die wrappers
      branch: report errors in tracking branch setup
      branch: die on config error when unsetting upstream
      branch: die on config error when editing branch description
      submodule: die on config error when linking modules
      submodule--helper: die on config error when cloning module
      remote: die on config error when setting URL
      remote: die on config error when setting/adding branches
      remote: die on config error when manipulating remotes
      clone: die on config error in cmd_clone
      init-db: die on config errors when initializing empty repo
      sequencer: die on config error when saving replay opts
      compat: die when unable to set core.precomposeunicode
      config: rename git_config_set to git_config_set_gently
      config: rename git_config_set_or_die to git_config_set
      xdiff/xmerge: fix memory leak in xdl_merge

Shawn O. Pearce (1):
      remote-curl: include curl_errorstr on SSL setup failures

Stefan Beller (1):
      submodule helper list: respect correct path prefix


Version v2.7.2; changes since v2.7.1:
-------------------------------------

Alex Henrie (1):
      stripspace: call U+0020 a "space" instead of a "blank"

Andrew Wheeler (1):
      push: fix ref status reporting for --force-with-lease

Dickson Wong (1):
      mergetool: reorder vim/gvim buffers in three-way diffs

GyuYong Jung (1):
      git-cvsserver.perl: fix typo

Johannes Schindelin (3):
      merge-file: let conflict markers match end-of-line style of the context
      merge-file: ensure that conflict sections match eol style
      test-lib: limit the output of the yes utility

Junio C Hamano (2):
      Start preparing for 2.7.2
      Git 2.7.2

Matt McCutchen (1):
      Documentation/git-clean.txt: don't mention deletion of .git/modules/*

Nguyễn Thái Ngọc Duy (5):
      blame: remove obsolete comment
      add and use a convenience macro ce_intent_to_add()
      grep: make it clear i-t-a entries are ignored
      worktree.c: fix indentation
      worktree: stop supporting moving worktrees manually

SZEDER Gábor (1):
      completion: fix mis-indentation in _git_stash()


Version v2.7.1; changes since v2.7.0:
-------------------------------------

Changwoo Ryu (1):
      l10n: ko.po: Add Korean translation

Dave Ware (1):
      contrib/subtree: fix "subtree split" skipped-merge bug

David A. Wheeler (1):
      Expand documentation describing --signoff

Dennis Kaarsemaker (1):
      reflog-walk: don't segfault on non-commit sha1's in the reflog

Eric Wong (3):
      git-send-email: do not double-escape quotes from mutt
      for-each-ref: document `creatordate` and `creator` fields
      git-svn: fix auth parameter handling on SVN 1.9.0+

Jeff King (8):
      avoid shifting signed integers 31 bits
      bswap: add NO_UNALIGNED_LOADS define
      rebase: ignore failures from "gc --auto"
      filter-branch: resolve $commit^{tree} in no-index case
      clean: make is_git_repository a public function
      resolve_gitlink_ref: ignore non-repository paths
      t6300: use test_atom for some un-modern tests
      tag: do not show ambiguous tag names as "tags/foo"

Johannes Schindelin (11):
      commit: allow editing the commit message even in shared repos
      Handle more file writes correctly in shared repos
      Refactor skipping DOS drive prefixes
      compat/basename: make basename() conform to POSIX
      compat/basename.c: provide a dirname() compatibility function
      t0060: verify that basename() and dirname() work as expected
      fetch: release pack files before garbage-collecting
      am: release pack files before garbage-collecting
      merge: release pack files before garbage-collecting
      receive-pack: release pack files before garbage-collecting
      t0060: loosen overly strict expectations

Johannes Sixt (1):
      mingw: avoid linking to the C library's isalpha()

John Keeping (1):
      completion: add missing git-rebase options

Junio C Hamano (2):
      test-lib: clarify and tighten SANITY
      Git 2.7.1

Lars Vogel (1):
      git-add doc: do not say working directory when you mean working tree

Nguyễn Thái Ngọc Duy (5):
      Revert "setup: set env $GIT_WORK_TREE when work tree is set, like $GIT_DIR"
      dir.c: clean the entire struct in clear_exclude_list()
      Revert "dir.c: don't exclude whole dir prematurely if neg pattern may match"
      diff-no-index: do not take a redundant prefix argument
      diff: make -O and --output work in subdirectory

Paul Wagland (2):
      completion: complete show-branch "--date-order"
      completion: update completion arguments for stash

SZEDER Gábor (1):
      t6050-replace: make failing editor test more robust

Sebastian Schuberth (3):
      docs: clarify that passing --depth to git-clone implies --single-branch
      docs: say "commits" in the --depth option wording for git-clone
      docs: clarify that --depth for git-fetch works with newly initialized repos

Stephen P. Smith (4):
      user-manual: remove temporary branch entry from todo list
      glossary: define the term shallow clone
      user-manual: add section documenting shallow clones
      user-manual: add addition gitweb information

Thomas Braun (1):
      completion: complete "diff --word-diff-regex="

Øyvind A. Holm (1):
      gitweb: squelch "uninitialized value" warning


Version v2.7.0; changes since v2.7.0-rc3:
-----------------------------------------

Junio C Hamano (2):
      Git 2.6.5
      Git 2.7

Ralf Thielow (2):
      l10n: de.po: improve some translations
      l10n: de.po: translate 68 new messages


Version v2.7.0-rc3; changes since v2.7.0-rc2:
---------------------------------------------

Alex Henrie (2):
      l10n: ca.po: update translation
      l10n: ca.po: update translation

Alexander Shopov (2):
      l10n: Updated Bulgarian translation of git (2477t,0f,0u)
      l10n: Updated Bulgarian translation of git (2477t,0f,0u)

Audric Schiltknecht (1):
      l10n: fr.po: Fix typo

Dimitriy Ryazantcev (1):
      l10n: ru.po: update Russian translation

Jean-Noël Avila (2):
      l10n: fr v2.7.0 round 1 (2477t)
      l10n: fr.po v2.7.0 round 2 (2477t)

Jeff King (3):
      revision.c: propagate tag names from pending array
      symbolic-ref: propagate error code from create_symref()
      t1401: test reflog creation for git-symbolic-ref

Jiang Xin (4):
      l10n: git.pot: v2.7.0 round 1 (66 new, 29 removed)
      l10n: zh_CN: for git v2.7.0 l10n round 1
      l10n: git.pot: v2.7.0 round 2 (2 new, 2 removed)
      l10n: zh_CN: for git v2.7.0 l10n round 2

Junio C Hamano (1):
      Git 2.7-rc3

Luke Diamand (1):
      git-p4: failing test case for skipping changes with multiple depots

Peter Krefting (3):
      l10n: sv.po: Update Swedish translation (2477t0f0u)
      l10n: sv: Fix bad translation
      l10n: sv.po: Update Swedish translation (2477t0f0u)

Sam Hocevar (2):
      git-p4: support multiple depot paths in p4 submit
      git-p4: reduce number of server queries for fetches

Trần Ngọc Quân (1):
      l10n: vi.po: Updated translation (2477t)

Élie Bouttier (1):
      l10n: fr.po: Fix typo


Version v2.7.0-rc2; changes since v2.7.0-rc1:
---------------------------------------------

Fabian Ruch (1):
      rebase -i: remember merge options beyond continue actions

Giuseppe Bilotta (2):
      gitk: Match ttk fonts to gitk fonts
      gitk: Let .bleft.mid widgets 'breathe'

Jeff King (3):
      ident: make xgetpwuid_self() a static local helper
      ident: keep a flag for bogus default_email
      ident: loosen getpwuid error in non-strict mode

Johannes Schindelin (1):
      mingw: emulate write(2) that fails with a EPIPE

John Keeping (1):
      send-email: enable SSL level 1 debug output

Junio C Hamano (2):
      Update release notes to 2.7
      Git 2.7-rc2

Mike Crowe (3):
      push: add recurseSubmodules config option
      push: test that --recurse-submodules on command line overrides config
      push: follow the "last one wins" convention for --recurse-submodules

Peter Krefting (1):
      gitk: sv.po: Update Swedish translation (311t)

Ralf Thielow (1):
      push: don't mark options of recurse-submodules for translation

SZEDER Gábor (2):
      completion: remove 'git column' from porcelain commands
      credential-store: don't pass strerror to die_errno()

YOKOTA Hiroshi (16):
      gitk: Color name update
      gitk: Re-sync line number in Japanese message catalogue
      gitk: Update Japanese message catalog
      gitk: Translate more to Japanese catalog
      gitk: Translate Japanese catalog
      gitk: Fix wrong translation
      gitk: Update Japanese translation
      gitk: Fix translation around copyright sign
      gitk: Update Japanese translation
      gitk: Update fuzzy messages
      gitk: Change last translator line
      gitk: Update year
      gitk: Remove unused line
      gitk: Improve translation message
      gitk: Update "Language:" header
      gitk: Update revision date in Japanese PO file

brian m. carlson (3):
      sha1_file.c: introduce a null_oid constant
      format-patch: add an option to suppress commit hash
      format-patch: check that header line has expected format


Version v2.7.0-rc1; changes since v2.7.0-rc0:
---------------------------------------------

Charles Bailey (1):
      t3404: fix quoting of redirect for some versions of bash

Jeff King (1):
      ident: fix undefined variable when NO_IPV6 is set

Johannes Sixt (1):
      prune: close directory earlier during loose-object directory traversal

Junio C Hamano (4):
      Prepare for 2.6.5
      Update release notes to 2.7
      Update draft release notes to 2.6.5
      Git 2.7-rc1

Lars Schneider (1):
      git-p4: add option to keep empty commits

SZEDER Gábor (2):
      Make error message after failing commit_lock_file() less confusing
      completion: fix completing unstuck email alias arguments

Stefan Beller (1):
      document submodule sync --recursive

Stefan Naewe (1):
      revision.c: fix possible null pointer arithmetic


Version v2.7.0-rc0; changes since v2.6.7:
-----------------------------------------

Alex Henrie (1):
      gitk: l10n: Update Catalan translation

Alex Riesen (1):
      clone: allow "--dissociate" without reference

Antoine Delaite (1):
      bisect: add the terms old/new

Beat Bolli (1):
      gitk: Add missing accelerators

Ben Boeckel (1):
      remote: add get-url subcommand

Dair Grant (1):
      git-svn: improve rebase/mkdirs performance

David Turner (8):
      refs: clean up common_list
      path: optimize common dir checking
      refs: make refs/bisect/* per-worktree
      http.c: use CURLOPT_RANGE for range requests
      copy_msg(): rename to copy_reflog_msg()
      initdb: make safe_create_dir public
      files_log_ref_write: new function
      refs: break out ref conflict checks

Dennis Kaarsemaker (1):
      git-p4: import the ctypes module

Dimitriy Ryazantcev (1):
      gitk: Update Russian translation

Edmundo Carmona Antoranz (1):
      checkout: add --progress option

Fabio Porcedda (1):
      contrib/subtree: remove "push" command from the "todo" file

Gabor Bernat (1):
      filter-branch: add passed/remaining seconds on progress

Jacob Keller (2):
      sendemail: teach git-send-email to dump alias names
      completion: add support for completing email aliases

Jeff King (77):
      run-command: provide in_async query function
      pkt-line: show packets in async processes as "sideband"
      fast-import: switch crash-report date to iso8601
      date: make "local" orthogonal to date format
      show-branch: avoid segfault with --reflog of unborn branch
      mailsplit: fix FILE* leak in split_maildir
      archive-tar: fix minor indentation violation
      fsck: don't fsck alternates for connectivity-only check
      add xsnprintf helper function
      add git_path_buf helper function
      strbuf: make strbuf_complete_line more generic
      add reentrant variants of sha1_to_hex and find_unique_abbrev
      fsck: use strbuf to generate alternate directories
      mailsplit: make PATH_MAX buffers dynamic
      trace: use strbuf for quote_crnl output
      progress: store throughput display in a strbuf
      test-dump-cache-tree: avoid overflow of cache-tree name
      compat/inet_ntop: fix off-by-one in inet_ntop4
      convert trivial sprintf / strcpy calls to xsnprintf
      archive-tar: use xsnprintf for trivial formatting
      use xsnprintf for generating git object headers
      find_short_object_filename: convert sprintf to xsnprintf
      stop_progress_msg: convert sprintf to xsnprintf
      compat/hstrerror: convert sprintf to snprintf
      grep: use xsnprintf to format failure message
      entry.c: convert strcpy to xsnprintf
      add_packed_git: convert strcpy into xsnprintf
      http-push: replace strcat with xsnprintf
      receive-pack: convert strncpy to xsnprintf
      replace trivial malloc + sprintf / strcpy calls with xstrfmt
      config: use xstrfmt in normalize_value
      fetch: replace static buffer with xstrfmt
      use strip_suffix and xstrfmt to replace suffix
      ref-filter: drop sprintf and strcpy calls
      help: drop prepend function in favor of xstrfmt
      mailmap: replace strcpy with xstrdup
      read_branches_file: simplify string handling
      read_remotes_file: simplify string handling
      resolve_ref: use strbufs for internal buffers
      upload-archive: convert sprintf to strbuf
      remote-ext: simplify git pkt-line generation
      http-push: use strbuf instead of fwrite_buffer
      http-walker: store url in a strbuf
      sha1_get_pack_name: use a strbuf
      precompose_utf8: drop unused variable
      probe_utf8_pathname_composition: use internal strbuf
      init: use strbufs to store paths
      apply: convert root string to strbuf
      transport: use strbufs for status table "quickref" strings
      merge-recursive: convert malloc / strcpy to strbuf
      enter_repo: convert fixed-size buffers to strbufs
      remove_leading_path: use a strbuf for internal storage
      write_loose_object: convert to strbuf
      diagnose_invalid_index_path: use strbuf to avoid strcpy/strcat
      fetch-pack: use argv_array for index-pack / unpack-objects
      http-push: use an argv_array for setup_revisions
      stat_tracking_info: convert to argv_array
      daemon: use cld->env_array when re-spawning
      use sha1_to_hex_r() instead of strcpy
      drop strcpy in favor of raw sha1_to_hex
      color: add overflow checks for parsing colors
      use alloc_ref rather than hand-allocating "struct ref"
      avoid sprintf and strcpy with flex arrays
      receive-pack: simplify keep_arg computation
      help: clean up kfmclient munging
      prefer memcpy to strcpy
      color: add color_set helper for copying raw colors
      notes: document length of fanout path with a constant
      convert strncpy to memcpy
      fsck: drop inode-sorting code
      Makefile: drop D_INO_IN_DIRENT build knob
      fsck: use for_each_loose_file_in_objdir
      use strbuf_complete to conditionally append slash
      name-rev: use strip_suffix to avoid magic numbers
      http: use off_t to store partial file size
      filter-branch: skip index read/write when possible
      blame: fix object casting regression

Johannes Schindelin (1):
      test: facilitate debugging Git executables in tests with gdb

Johannes Sixt (9):
      read_branches_file: plug a FILE* leak
      compat/mingw.c: remove printf format warning
      modernize t9300: single-quote placement and indentation
      modernize t9300: use test_must_fail
      modernize t9300: use test_must_be_empty
      modernize t9300: wrap lines after &&
      modernize t9300: use test_when_finished for clean-up
      modernize t9300: mark here-doc words to ignore tab indentation
      modernize t9300: move test preparations into test_expect_success

John Keeping (11):
      Documentation/blame-options: don't list date formats
      Documentation/config: don't list date formats
      Documentation/git-for-each-ref: don't list date formats
      Documentation/rev-list: don't list date formats
      t6300: introduce test_date() helper
      t6300: add test for "raw" date format
      date: check for "local" before anything else
      t6300: make UTC and local dates different
      t6300: add tests for "-local" date formats
      send-email: expand path in sendemail.smtpsslcertpath config
      send-email: die if CA path doesn't exist

Juerg Haefliger (1):
      git-quiltimport: add commandline option --series <file>

Junio C Hamano (71):
      rerere: fix an off-by-one non-bug
      rerere: handle conflicts with multiple stage #1 entries
      rerere: plug conflict ID leaks
      rerere: lift PATH_MAX limitation
      rerere: write out each record of MERGE_RR in one go
      rerere: report autoupdated paths only after actually updating them
      rerere: drop want_sp parameter from is_cmarker()
      rerere: stop looping unnecessarily
      rerere: do not leak mmfile[] for a path with multiple stage #1 entries
      rerere: explain the rerere I/O abstraction
      rerere: fix benign off-by-one non-bug and clarify code
      rerere: explain MERGE_RR management helpers
      rerere: explain the primary codepath
      rerere: explain "rerere forget" codepath
      rerere: explain the remainder
      rerere: refactor "replay" part of do_plain_rerere()
      rerere: further de-dent do_plain_rerere()
      rerere: further clarify do_rerere_one_path()
      rerere: call conflict-ids IDs
      rerere: use "struct rerere_id" instead of "char *" for conflict ID
      rerere: un-nest merge() further
      filter-branch: make report-progress more readable
      Start cycle toward 2.7
      Second batch for 2.7
      Third batch for 2.7
      Fourth batch for 2.7
      Fifth batch for 2.7
      mailinfo: remove a no-op call convert_to_utf8(it, "")
      mailinfo: fold decode_header_bq() into decode_header()
      mailinfo: fix an off-by-one error in the boundary stack
      mailinfo: explicitly close file handle to the patch output
      Sixth batch for 2.7
      mailinfo: plug strbuf leak during continuation line handling
      mailinfo: move handle_boundary() lower
      mailinfo: move read_one_header_line() closer to its callers
      mailinfo: move check_header() after the helpers it uses
      mailinfo: move cleanup_space() before its users
      mailinfo: move definition of MAX_HDR_PARSED closer to its use
      mailinfo: get rid of function-local static states
      mailinfo: do not let handle_body() touch global "line" directly
      mailinfo: do not let handle_boundary() touch global "line" directly
      mailinfo: do not let find_boundary() touch global "line" directly
      mailinfo: move global "line" into mailinfo() function
      mailinfo: introduce "struct mailinfo" to hold globals
      mailinfo: move keep_subject & keep_non_patch_bracket to struct mailinfo
      mailinfo: move global "FILE *fin, *fout" to struct mailinfo
      mailinfo: move filter/header stage to struct mailinfo
      mailinfo: move patch_lines to struct mailinfo
      mailinfo: move add_message_id and message_id to struct mailinfo
      mailinfo: move use_scissors and use_inbody_headers to struct mailinfo
      mailinfo: move metainfo_charset to struct mailinfo
      mailinfo: move check for metainfo_charset to convert_to_utf8()
      mailinfo: move transfer_encoding to struct mailinfo
      mailinfo: move charset to struct mailinfo
      mailinfo: move cmitmsg and patchfile to struct mailinfo
      mailinfo: move [ps]_hdr_data to struct mailinfo
      mailinfo: move content/content_top to struct mailinfo
      mailinfo: handle_commit_msg() shouldn't be called after finding patchbreak
      mailinfo: keep the parsed log message in a strbuf
      mailinfo: libify
      mailinfo: handle charset conversion errors in the caller
      am: make direct call to mailinfo
      mailinfo: remove calls to exit() and die() deep in the callchain
      Seventh batch for 2.7
      Eighth batch for 2.7
      Ninth batch for 2.7
      Tenth batch for 2.7
      Eleventh batch for 2.7
      RelNotes update for 2.7
      Update release notes to 2.7
      Git 2.7-rc0

Karthik Nayak (35):
      t6302: for-each-ref tests for ref-filter APIs
      tag: libify parse_opt_points_at()
      ref-filter: implement '--points-at' option
      for-each-ref: add '--points-at' option
      ref-filter: add parse_opt_merge_filter()
      ref-filter: implement '--merged' and '--no-merged' options
      for-each-ref: add '--merged' and '--no-merged' options
      parse-option: rename parse_opt_with_commit()
      parse-options.h: add macros for '--contains' option
      ref-filter: implement '--contains' option
      for-each-ref: add '--contains' option
      ref-filter: move `struct atom_value` to ref-filter.c
      ref-filter: introduce ref_formatting_state and ref_formatting_stack
      utf8: add function to align a string into given strbuf
      ref-filter: introduce handler function for each atom
      ref-filter: introduce match_atom_name()
      ref-filter: implement an `align` atom
      ref-filter: add option to filter out tags, branches and remotes
      ref-filter: add support for %(contents:lines=X)
      ref-filter: add support to sort by version
      ref-filter: add option to match literal pattern
      tag.c: use 'ref-filter' data structures
      tag.c: use 'ref-filter' APIs
      tag.c: implement '--format' option
      tag.c: implement '--merged' and '--no-merged' options
      branch: refactor width computation
      branch: bump get_head_description() to the top
      branch: roll show_detached HEAD into regular ref_list
      branch: move 'current' check down to the presentation layer
      branch: drop non-commit error reporting
      branch.c: use 'ref-filter' data structures
      branch.c: use 'ref-filter' APIs
      branch: add '--points-at' option
      tag.c: use the correct algorithm for the '--contains' option
      ref-filter: fallback on alphabetical comparison

Lars Schneider (18):
      git-p4: add config git-p4.pathEncoding
      git-p4: improve path encoding verbose output
      git-p4: use replacement character for non UTF-8 characters in paths
      git-p4: add optional type specifier to gitConfig reader
      git-p4: add gitConfigInt reader
      git-p4: return an empty list if a list config has no values
      git-p4: add file streaming progress in verbose mode
      git-p4: check free space during streaming
      git-p4: add support for large file systems
      git-p4: add Git LFS backend for large file system
      git-p4: avoid "stat" command in t9815 git-p4-submit-fail
      git-p4: skip t9819 test case on case insensitive file systems
      git-p4: retry kill/cleanup operations in tests with timeout
      git-p4: add p4d timeout in tests
      git-p4: add trap to kill p4d on test exit
      implement test_might_fail using a refactored test_must_fail
      add "ok=sigpipe" to test_must_fail and use it to fix flaky tests
      Add Travis CI support

Lukas Fleischer (4):
      config.txt: document the semantics of hideRefs with namespaces
      upload-pack: strip refs before calling ref_is_hidden()
      hideRefs: add support for matching full refs
      t5509: add basic tests for hideRefs

Matthieu Moy (5):
      bisect: sanity check on terms
      bisect: add 'git bisect terms' to view the current terms
      bisect: allow setting any user-specified in 'git bisect start'
      strtoul_ui: reject negative values
      git-multimail: update to release 1.2.0

Max Kirillov (3):
      blame: test to describe use of blame --reverse --first-parent
      blame: extract find_single_final
      blame: allow blame --reverse --first-parent when it makes sense

Michael Haggerty (4):
      pack_if_possible_fn(): use ref_type() instead of is_per_worktree_ref()
      refname_is_safe(): improve docstring
      refs/refs-internal.h: new header file
      refs: split filesystem-based refs code into a new file

Michael Rappazzo (5):
      worktree: add top-level worktree.c
      worktree: refactor find_linked_symref function
      worktree: add a function to get worktree details
      worktree: add details to the worktree struct
      worktree: add 'list' command

Namhyung Kim (1):
      stash: allow "stash show" diff output configurable

Nguyễn Thái Ngọc Duy (3):
      dir.c: make last_exclude_matching_from_list() run til the end
      dir.c: don't exclude whole dir prematurely if neg pattern may match
      mailinfo: fix passing wrong address to git_mailinfo_config

Noam Postavsky (1):
      credential-cache: new option to ignore sighup

Ramsay Jones (1):
      http: fix some printf format warnings

René Scharfe (7):
      parse-options: deduplicate parse_options_usage() calls
      parse-options: inline parse_options_usage() at its only remaining caller
      parse-options: allow -h as a short option
      t1450: add tests for NUL in headers of commits and tags
      grep: stop using PARSE_OPT_NO_INTERNAL_HELP
      fsck: treat a NUL in a tag header as an error
      show-ref: stop using PARSE_OPT_NO_INTERNAL_HELP

Ronnie Sahlberg (2):
      verify_refname_available(): rename function
      verify_refname_available(): new function

Stefan Beller (4):
      submodule: rewrite `module_list` shell function in C
      submodule: rewrite `module_name` shell function in C
      submodule: rewrite `module_clone` shell function in C
      submodule-config: "goto" removal in parse_config()

Takashi Iwai (3):
      gitk: Update msgid's for menu items with accelerator
      gitk: Add accelerators to Japanese locale
      gitk: Add accelerator to German locale

Techlive Zheng (7):
      contrib/subtree: Clean and refactor test code
      contrib/subtree: Add test for missing subtree
      contrib/subtree: Add tests for subtree add
      contrib/subtree: Add merge tests
      contrib/subtree: Add split tests
      contrib/subtree: Make each test self-contained
      contrib/subtree: Handle '--prefix' argument with a slash appended

Tobias Klauser (4):
      credential-cache--daemon: remove unused #include "sigchain.h"
      diff: remove unused #include "sigchain.h"
      read-cache: remove unused #include "sigchain.h"
      shallow: remove unused #include "sigchain.h"

Torsten Bögershausen (1):
      t0027: improve test for not-normalized files

Trần Ngọc Quân (1):
      Updated Vietnamese translation

brian m. carlson (12):
      sha1_file: introduce has_object_file helper.
      Convert struct ref to use object_id.
      add_sought_entry_mem: convert to struct object_id
      parse_fetch: convert to use struct object_id
      get_remote_heads: convert to struct object_id
      push_refs_with_export: convert to struct object_id
      ref_newer: convert to use struct object_id
      object: introduce get_object_hash macro.
      Add several uses of get_object_hash.
      Convert struct object to object_id
      Remove get_object_hash.
      remote: convert functions to struct object_id


Version v2.6.7; changes since v2.6.6:
-------------------------------------

Jeff King (1):
      shell: disallow repo names beginning with dash

Junio C Hamano (3):
      Git 2.4.12
      Git 2.5.6
      Git 2.6.7


Version v2.6.6; changes since v2.6.5:
-------------------------------------

Jeff King (7):
      add helpers for detecting size_t overflow
      tree-diff: catch integer overflow in combine_diff_path allocation
      http-push: stop using name_path
      show_object_with_name: simplify by using path_name()
      list-objects: convert name_path to a strbuf
      list-objects: drop name_path entirely
      list-objects: pass full pathname to callbacks

Junio C Hamano (3):
      Git 2.4.11
      Git 2.5.5
      Git 2.6.6


Version v2.6.5; changes since v2.6.4:
-------------------------------------

Alexey Shumkin (2):
      t7900-subtree: test the "space in a subdirectory name" case
      contrib/subtree: respect spaces in a repository path

Charles Bailey (1):
      t3404: fix quoting of redirect for some versions of bash

Christian Couder (1):
      Documentation/git-update-index: add missing opts to synopsis

David Turner (1):
      verify_pack: do not ignore return value of verification function

Elia Pinto (1):
      ident.c: add support for IPv6

Jeff King (7):
      ident: make xgetpwuid_self() a static local helper
      ident: keep a flag for bogus default_email
      ident: loosen getpwuid error in non-strict mode
      ident: fix undefined variable when NO_IPV6 is set
      revision.c: propagate tag names from pending array
      symbolic-ref: propagate error code from create_symref()
      t1401: test reflog creation for git-symbolic-ref

Johannes Sixt (1):
      prune: close directory earlier during loose-object directory traversal

John Keeping (6):
      t7610: don't use test_config in a subshell
      t5801: don't use test_when_finished in a subshell
      test-lib-functions: support "test_config -C <dir> ..."
      t7800: don't use test_config in a subshell
      test-lib-functions: detect test_when_finished in subshell
      send-email: enable SSL level 1 debug output

Junio C Hamano (3):
      Prepare for 2.6.5
      Update draft release notes to 2.6.5
      Git 2.6.5

Lars Schneider (1):
      git-p4: add option to keep empty commits

Nguyễn Thái Ngọc Duy (1):
      git-check-ref-format.txt: typo, s/avoids/avoid/

René Scharfe (2):
      use pop_commit() for consuming the first entry of a struct commit_list
      show-branch: use argv_array for default arguments

SZEDER Gábor (3):
      Make error message after failing commit_lock_file() less confusing
      completion: remove 'git column' from porcelain commands
      credential-store: don't pass strerror to die_errno()

Stefan Beller (1):
      document submodule sync --recursive

Stefan Naewe (1):
      revision.c: fix possible null pointer arithmetic


Version v2.6.4; changes since v2.6.3:
-------------------------------------

Atousa Pahlevan Duprat (2):
      sha1: provide another level of indirection for the SHA-1 functions
      sha1: allow limiting the size of the data passed to SHA1_Update()

Charles Bailey (1):
      http: treat config options sslCAPath and sslCAInfo as paths

Christian Couder (1):
      Documentation/git-update-index: add missing opts to synopsys

Clemens Buchacher (1):
      allow hooks to ignore their standard input stream

Daniel Knittl-Frank (1):
      Escape Git's exec path in contrib/rerere-train.sh script

David Aguilar (1):
      difftool: ignore symbolic links in use_wt_file

Dennis Kaarsemaker (2):
      t5813: avoid creating urls that break on cygwin
      check-ignore: correct documentation about output

Doug Kelly (2):
      t5304: test cleaning pack garbage
      gc: remove garbage .idx files from pack dir

Fredrik Medley (1):
      rebase-i-exec: Allow space in SHELL_PATH

GIRARD Etienne (1):
      git-p4: clean up after p4 submit failure

John Keeping (3):
      interpret-trailers: allow running outside a repository
      rebase: support --no-autostash
      Documentation/git-rebase: fix --no-autostash formatting

Junio C Hamano (3):
      prepare_packed_git(): refactor garbage reporting in pack directory
      Prepare for 2.6.4
      Git 2.6.4

Luke Diamand (3):
      git-p4: add failing test for submit from detached head
      git-p4: add option to system() to return subshell status
      git-p4: work with a detached head

Michael J Gruber (1):
      Documentation/diff: give --word-diff-regex=. example

Pat Thoyts (1):
      remote-http(s): support SOCKS proxies

Rainer M. Canavan (1):
      configure.ac: use $LIBS not $CFLAGS when testing -lpthread

René Scharfe (1):
      wt-status: correct and simplify check for detached HEAD

SZEDER Gábor (4):
      bash prompt: test dirty index and worktree while on an orphan branch
      bash prompt: remove a redundant 'git diff' option
      bash prompt: indicate dirty index even on orphan branches
      filter-branch: deal with object name vs. pathname ambiguity in tree-filter

Андрей Рыбак (1):
      Documentation: make environment variable formatting more consistent


Version v2.6.3; changes since v2.6.2:
-------------------------------------

David Turner (2):
      t7063: fix flaky untracked-cache test
      name-hash: don't reuse cache_entry in dir_entry

Dimitriy Ryazantcev (1):
      l10n: ru.po: update Russian translation

James McCoy (1):
      filter-branch: remove multi-line headers in msg filter

Jeff King (7):
      introduce "extensions" form of core.repositoryformatversion
      introduce "preciousObjects" repository extension
      t6031: move triple-rename test to t3030
      t6031: generalize for recursive and resolve strategies
      merge: detect delete/modechange conflict
      add_submodule_odb: initialize alt_odb list earlier
      merge-file: clamp exit code to maximum 127

Johannes Schindelin (10):
      t5700: demonstrate a Windows file locking issue with `git clone --dissociate`
      sha1_file: consolidate code to close a pack's file descriptor
      gc: demonstrate failure with stale remote HEAD
      sha1_file.c: add a function to release all packs
      clone --dissociate: avoid locking pack files
      pack-objects: do not get distracted by broken symrefs
      imap-send: only use CURLOPT_LOGIN_OPTIONS if it is actually available
      Squelch warning about an integer overflow
      Silence GCC's "cast of pointer to integer of a different size" warning
      t3404: "rebase -i" gets broken when insn sheet uses CR/LF line endings

Junio C Hamano (10):
      am -3: do not let failed merge from completing the error codepath
      Documentation/gc: warn against --prune=<now>
      usage: do not insist that standard input must come from a file
      Documentation/everyday: match undefline with the text
      Documentation: match underline with the text
      Documentation: match undefline with the text in old release notes
      Documentation: AsciiDoc spells em-dash as double-dashes, not triple
      add: simplify -u/-A without pathspec
      rebase-i: work around Windows CRLF line endings
      Git 2.6.3

Lars Schneider (2):
      git-p4: add test case for "Translation of file content failed" error
      git-p4: handle "Translation of file content failed"

Luke Diamand (3):
      git-p4: failing test for ignoring invalid p4 labels
      git-p4: do not terminate creating tag for unknown commit
      git-p4: fix P4 label import for unprocessed commits

Max Kirillov (3):
      submodule refactor: use strbuf_git_path_submodule() in add_submodule_odb()
      path: implement common_dir handling in git_pathdup_submodule()
      blame: fix option name in error message

Nguyễn Thái Ngọc Duy (7):
      path.c: delete an extra space
      gc: save log from daemonized gc --auto and print it next time
      t0002: add test for enter_repo(), non-strict mode
      enter_repo: avoid duplicating logic, use is_git_directory() instead
      enter_repo: allow .git files in strict mode
      clone: allow --local from a linked checkout
      clone: better error when --reference is a linked checkout

Ralf Thielow (1):
      am, credential-cache: add angle brackets to usage string

Ray Donnelly (1):
      test-path-utils.c: remove incorrect assumption

Remi Pommarel (3):
      Makefile: link libcurl before zlib
      Makefile: make curl-config path configurable
      configure.ac: detect ssl need with libcurl

René Scharfe (7):
      t7060: add test for status --branch on a detached HEAD
      wt-status: exit early using goto in wt_shortstatus_print_tracking()
      wt-status: avoid building bogus branch name with detached HEAD
      wt-status: don't skip a magical number of characters blindly
      wt-status: use skip_prefix() to get rid of magic string length constants
      run-command: factor out child_process_clear()
      daemon: plug memory leak

Sidhant Sharma (1):
      worktree: usage: denote <branch> as optional with 'add'

Stefan Agner (1):
      git-send-email.perl: Fixed sending of many/huge changes/patches

Tobias Klauser (2):
      strbuf: make stripspace() part of strbuf
      stripspace: use parse-options for command-line parsing

Waldek Maleska (1):
      Correct fscanf formatting string for I64u values

Xue Fuqiao (2):
      Documentation: fix header markup
      user-manual: fix the description of fast-forward


Version v2.6.2; changes since v2.6.1:
-------------------------------------

Alex Henrie (2):
      merge: grammofix in please-commit-before-merge message
      pull: enclose <options> in brackets in the usage string

Christian Couder (2):
      quote: fix broken sq_quote_buf() related comment
      quote: move comment before sq_quote_buf()

Eric N. Vander Weele (1):
      log: Update log.follow doc and add to config.txt

Jacob Keller (1):
      notes: correct documentation of DWIMery for notes references

Jeff King (3):
      git_connect: clear GIT_* environment for ssh
      git_connect: clarify conn->use_shell flag
      blame: handle --first-parent

Johannes Schindelin (1):
      setup: fix "inside work tree" detection on case-insensitive filesystems

John Keeping (2):
      Makefile: fix MAKEFLAGS tests with multiple flags
      Documentation: fix section header mark-up

Junio C Hamano (3):
      Makefile: allow $(ARFLAGS) specified from the command line
      fsck: exit with non-zero when problems are found
      Git 2.6.2

Matthieu Moy (7):
      Documentation: use 'keyid' consistently, not 'key-id'
      Documentation/grep: fix documentation of -O
      Documentation: explain optional arguments better
      t3203: test 'detached at' after checkout --detach
      status: don't say 'HEAD detached at HEAD'
      rebase-i: explicitly accept tab as separator in commands
      rebase-i: loosen over-eager check_bad_cmd check

Michael J Gruber (1):
      t2026: rename worktree prune test

Nguyễn Thái Ngọc Duy (1):
      ls-remote.txt: delete unsupported option

Renee Margaret McConahy (1):
      am: configure gpg at startup

Stephan Beyer (2):
      t5561: get rid of racy appending to logfile
      t/perf: make runner work even if Git is not installed

Takashi Iwai (1):
      pager: don't use unsafe functions in signal handlers

Tobias Klauser (2):
      connect: fix typo in result string of prot_name()
      Documentation/interpret-trailers: Grammar fix


Version v2.6.1; changes since v2.6.0:
-------------------------------------

Blake Burkhart (2):
      http: limit redirection to protocol-whitelist
      http: limit redirection depth

Jeff King (6):
      transport: add a protocol-whitelist environment variable
      submodule: allow only certain protocols for submodule fetches
      transport: refactor protocol whitelist code
      react to errors in xdi_diff
      xdiff: reject files larger than ~1GB
      merge-file: enforce MAX_XDIFF_SIZE on incoming files

Junio C Hamano (4):
      Git 2.3.10
      Git 2.4.10
      Git 2.5.4
      Git 2.6.1


Version v2.6.0; changes since v2.6.0-rc3:
-----------------------------------------

Junio C Hamano (1):
      Git 2.6


Version v2.6.0-rc3; changes since v2.6.0-rc2:
---------------------------------------------

Alejandro R. Sedeño (1):
      Makefile: use SHELL_PATH when running generate-cmdlist.sh

Alex Henrie (2):
      show-ref: place angle brackets around variables in usage string
      l10n: ca.po: update translation

Andreas Schwab (1):
      Documentation/config: fix formatting for branch.*.rebase and pull.rebase

Brian Norris (1):
      send-email: fix uninitialized var warning for $smtp_auth

Edward Thomson (1):
      poll: honor the timeout on Win32

Jean-Noël Avila (2):
      l10n: fr.po v2.6.0 round 1 (2441t)
      l10n: fr.po v2.6.0 round 2 (2440t)

Jiang Xin (6):
      l10n: TEAMS: stash inactive zh_CN team members
      l10n: zh_CN: Add translations for Git glossary
      l10n: git.pot: v2.6.0 round 1 (123 new, 41 removed)
      l10n: zh_CN: for git v2.6.0 l10n round 1
      l10n: git.pot: v2.6.0 round 2 (3 improvements)
      l10n: zh_CN: for git v2.6.0 l10n round 2

Johannes Schindelin (1):
      am --skip/--abort: merge HEAD/ORIG_HEAD tree into index

Junio C Hamano (4):
      Update RelNotes to 2.6 to describe leftover bits since -rc2
      Git 2.5.3
      Update RelNotes to 2.6
      Git 2.6-rc3

Peter Krefting (1):
      l10n: sv.po: Update Swedish translation (2441t0f0u)

Philip Oakley (1):
      doc: show usage of branch description

Phillip Sz (1):
      l10n: de.po: better language for one string

Ralf Thielow (4):
      pull: don't mark values for option "rebase" for translation
      tag, update-ref: improve description of option "create-reflog"
      l10n: de.po: translate 123 new messages
      l10n: de.po: translate 2 messages

Ramsay Jones (1):
      mailmap: update my entry with new email address

Ray Chen (10):
      l10n: zh_CN: Update Translation: "tag object"
      l10n: zh_CN: Unify Translation of "packfile"
      l10n: zh_CN: Update Translation of "tag"
      l10n: zh_CN: Add Surrounding Spaces
      l10n: zh_CN: Update Git Glossary: SHA-1
      l10n: zh_CN: Update Git Glossary: "dumb", "smart"
      l10n: zh_CN: Update Git Glossary: tag
      l10n: zh_CN: Update Git Glossary: fork
      l10n: zh_CN: Update Git Glossary: pickaxe
      l10n: zh_CN: Update Git Glossary: "commit message"

Trần Ngọc Quân (2):
      l10n: Updated Vietnamese translation (2441t)
      l10n: Update and review Vietnamese translation (2440t)


Version v2.6.0-rc2; changes since v2.6.0-rc1:
---------------------------------------------

Alex Henrie (2):
      gitk: Fix bad English grammar "Matches none Commit Info"
      gitk: Remove mc parameter from proc show_error

Alexander Shopov (2):
      gitk: Update Bulgarian translation (304t)
      gitk: Update Bulgarian translation (307t)

Beat Bolli (2):
      gitk: Add a "Copy commit summary" command
      gitk: Adjust the menu line numbers to compensate for the new entry

Giuseppe Bilotta (2):
      apply: comment grammar fix
      gitk: Accelerators for the main menu

Ismael Luceno (1):
      gitk: Make it easier to go quickly to a specific commit

Jeff King (5):
      pack-protocol: clarify LF-handling in PKT-LINE()
      verify_absent: allow filenames longer than PATH_MAX
      notes: use a strbuf in add_non_note
      read_info_alternates: handle paths larger than PATH_MAX
      show-branch: use a strbuf for reflog descriptions

Junio C Hamano (6):
      Git 2.2.3
      Git 2.3.9
      Git 2.4.9
      Git 2.5.2
      Release Notes: typofix
      Git 2.6-rc2

Marc Branchaud (3):
      gitk: Rearrange window title to be more conventional
      gitk: Show the current view's name in the window title
      gitk: Use translated version of "Command line" in getcommitlines

Matthieu Prat (1):
      t7060: actually test "git diff-index --cached -M"

Michael J Gruber (1):
      git-svn: parse authors file more leniently

Michael Rappazzo (1):
      gitk: Add mouse right-click options to copy path and branch name

Paul Mackerras (3):
      gitk: Replace catch {unset foo} with unset -nocomplain foo
      gitk: Fix error when changing colors after closing "List references" window
      gitk: Update .po files

Peter Krefting (1):
      gitk: sv.po: Update Swedish translation (305t0f0u)


Version v2.6.0-rc1; changes since v2.6.0-rc0:
---------------------------------------------

Jeff King (1):
      rerere: release lockfile in non-writing functions

Junio C Hamano (2):
      am: match --signoff to the original scripted version
      Git 2.6-rc1


Version v2.6.0-rc0; changes since v2.5.6:
-----------------------------------------

Alex Henrie (3):
      reflog: add missing single quote to error message
      pack-objects: place angle brackets around placeholders in usage strings
      read-tree: replace bracket set with parentheses to clarify usage

Antoine Delaite (3):
      bisect: correction of typo
      bisect: replace hardcoded "bad|good" by variables
      bisect: simplify the addition of new bisect terms

Brian Degenhardt (1):
      unpack-trees: populate cache-tree on successful merge

Charles Bailey (2):
      test-parse-options: update to handle negative ints
      parse-options: move unsigned long option parsing out of pack-objects.c

Dave Borowitz (9):
      Documentation/git-push.txt: document when --signed may fail
      Documentation/git-send-pack.txt: wrap long synopsis line
      Documentation/git-send-pack.txt: document --signed
      gitremote-helpers.txt: document pushcert option
      transport: remove git_transport_options.push_cert
      config.c: rename git_config_maybe_bool_text and export it as git_parse_maybe_bool
      builtin/send-pack.c: use parse_options API
      push: support signing pushes iff the server supports it
      push: add a config option push.gpgSign for default signed pushes

David Turner (18):
      log: add "log.follow" configuration variable
      refs.c: add err arguments to reflog functions
      refs: break out check for reflog autocreation
      refs: new public ref function: safe_create_reflog
      git-reflog: add exists command
      refs: add REF_FORCE_CREATE_REFLOG flag
      update-ref and tag: add --create-reflog arg
      git-stash: use update-ref --create-reflog instead of creating files
      t/t7509: remove unnecessary manipulation of reflog
      tests: remove some direct access to .git/logs
      refs: introduce pseudoref and per-worktree ref concepts
      refs: add ref_type function
      pseudorefs: create and use pseudoref update and delete functions
      bisect: use update_ref
      sequencer: replace write_cherry_pick_head with update_ref
      worktrees: add find_shared_symref
      notes: handle multiple worktrees
      pseudoref: check return values from read_ref()

Elia Pinto (1):
      http: add support for specifying the SSL version

Eric Sunshine (25):
      config: rename "gc.pruneWorktreesExpire" to "gc.worktreePruneExpire"
      checkout: avoid resolving HEAD unnecessarily
      checkout: name check_linked_checkouts() more meaningfully
      checkout: improve die_if_checked_out() robustness
      checkout: die_if_checked_out: simplify strbuf management
      checkout: generalize die_if_checked_out() branch name argument
      checkout: check_linked_checkout: improve "already checked out" aesthetic
      checkout: check_linked_checkout: simplify symref parsing
      checkout: teach check_linked_checkout() about symbolic link HEAD
      branch: publish die_if_checked_out()
      worktree: improve worktree setup message
      worktree: simplify new branch (-b/-B) option checking
      worktree: introduce options container
      worktree: make --detach mutually exclusive with -b/-B
      worktree: add: suppress auto-vivication with --detach and no <branch>
      worktree: make branch creation distinct from worktree population
      worktree: elucidate environment variables intended for child processes
      worktree: add_worktree: construct worktree-population command locally
      worktree: detect branch-name/detached and error conditions locally
      worktree: make setup of new HEAD distinct from worktree population
      worktree: avoid resolving HEAD unnecessarily
      worktree: populate via "git reset --hard" rather than "git checkout"
      checkout: drop intimate knowledge of newly created worktree
      Documentation/git-worktree: fix broken 'linkgit' invocation
      Documentation/config: mention "now" and "never" for 'expire' settings

Erik Elfström (5):
      setup: add gentle version of read_gitfile
      setup: sanity check file size in read_gitfile_gently
      t7300: add tests to document behavior of clean and nested git
      p7300: add performance tests for clean
      clean: improve performance when removing lots of directories

Galan Rémi (3):
      git-rebase -i: add command "drop" to remove a commit
      git rebase -i: warn about removed commits
      git rebase -i: add static check for commands and SHA-1

Guillaume Pagès (4):
      status: factor two rebase-related messages together
      status: differentiate interactive from non-interactive rebases
      status: give more information during rebase -i
      status: add new tests for status during rebase -i

Heiko Voigt (4):
      submodule: implement a config API for lookup of .gitmodules values
      submodule: extract functions for config set and lookup
      submodule: use new config API for worktree configurations
      submodule: allow erroneous values for the fetchRecurseSubmodules option

Jacob Keller (8):
      refs: cleanup comments regarding check_refname_component()
      refs: loosen restriction on wildcard "*" refspecs
      notes: document cat_sort_uniq rewriteMode
      notes: extract enum notes_merge_strategy to notes-utils.h
      notes: extract parse_notes_merge_strategy to notes-utils
      notes: add tests for --commit/--abort/--strategy exclusivity
      notes: add notes.mergeStrategy option to select default strategy
      notes: teach git-notes about notes.<name>.mergeStrategy option

Jan Viktorin (1):
      send-email: provide whitelist of SMTP AUTH mechanisms

Jeff King (36):
      pkt-line: simplify starts_with checks in packet tracing
      pkt-line: tighten sideband PACK check when tracing
      pkt-line: support tracing verbatim pack contents
      cat-file: minor style fix in options list
      cat-file: move batch_options definition to top of file
      cat-file: add --buffer option
      cat-file: stop returning value from batch_one_object
      cat-file: split batch_one_object into two stages
      cat-file: add --batch-all-objects option
      read_gitfile_gently: fix use-after-free
      cat-file: sort and de-dup output of --batch-all-objects
      show-branch: use DATE_RELATIVE instead of magic number
      convert "enum date_mode" into a struct
      introduce "format" date-mode
      strbuf: make strbuf_addftime more robust
      docs/config.txt: reorder hideRefs config
      refs: support negative transfer.hideRefs
      cache.h: clarify documentation for git_path, et al
      cache.h: complete set of git_path_submodule helpers
      t5700: modernize style
      add_to_alternates_file: don't add duplicate entries
      prefer git_pathdup to git_path in some possibly-dangerous cases
      prefer mkpathdup to mkpath in assignments
      remote.c: drop extraneous local variable from migrate_file
      refs.c: remove extra git_path calls from read_loose_refs
      path.c: drop git_path_submodule
      refs.c: simplify strbufs in reflog setup and writing
      refs.c: avoid repeated git_path calls in rename_tmp_log
      refs.c: avoid git_path assignment in lock_ref_sha1_basic
      refs.c: remove_empty_directories can take a strbuf
      find_hook: keep our own static buffer
      get_repo_path: refactor path-allocation
      memoize common git-path "constant" files
      format_config: don't init strbuf
      format_config: simplify buffer handling
      get_urlmatch: avoid useless strbuf write

Jiang Xin (1):
      i18n: am: fix typo in description of -b option

Johannes Schindelin (19):
      fsck: introduce fsck options
      fsck: introduce identifiers for fsck messages
      fsck: provide a function to parse fsck message IDs
      fsck: offer a function to demote fsck errors to warnings
      fsck (receive-pack): allow demoting errors to warnings
      fsck: report the ID of the error/warning
      fsck: make fsck_ident() warn-friendly
      fsck: make fsck_commit() warn-friendly
      fsck: handle multiple authors in commits specially
      fsck: make fsck_tag() warn-friendly
      fsck: add a simple test for receive.fsck.<msg-id>
      fsck: disallow demoting grave fsck errors to warnings
      fsck: optionally ignore specific fsck issues completely
      fsck: allow upgrading fsck warnings to errors
      fsck: document the new receive.fsck.<msg-id> options
      fsck: support demoting errors to warnings
      fsck: introduce `git fsck --connectivity-only`
      fsck: git receive-pack: support excluding objects from fsck'ing
      fsck: support ignoring objects in `git fsck` via fsck.skiplist

Johannes Sixt (1):
      t7300-clean: require POSIXPERM for chmod 0 test

Junio C Hamano (21):
      commit-slab: introduce slabname##_peek() function
      First batch for 2.6
      sha1_file.c: rename move_temp_to_file() to finalize_object_file()
      Second batch for 2.6
      Third batch for 2.6
      Fourth batch for 2.6
      log: rename "tweak" helpers
      log: when --cc is given, default to -p unless told otherwise
      log: show merge commit when --cc is given
      builtin/am: introduce write_state_*() helper functions
      builtin/am: make sure state files are text
      write_file(): drop "fatal" parameter
      write_file_v(): do not leave incomplete line at the end
      write_file(): drop caller-supplied LF from calls to create a one-liner file
      builtin/log.c: minor reformat
      Fifth batch for 2.6
      Sixth batch for 2.6
      Seventh batch for 2.6
      Eighth batch for 2.6
      Ninth batch for 2.6
      Git 2.6-rc0

Karsten Blees (1):
      Documentation/i18n.txt: clarify character encoding support

Karthik Nayak (11):
      for-each-ref: extract helper functions out of grab_single_ref()
      for-each-ref: clean up code
      for-each-ref: rename 'refinfo' to 'ref_array_item'
      for-each-ref: introduce new structures for better organisation
      for-each-ref: introduce 'ref_array_clear()'
      for-each-ref: rename some functions and make them public
      for-each-ref: rename variables called sort to sorting
      ref-filter: add 'ref-filter.h'
      ref-filter: move code from 'for-each-ref'
      for-each-ref: introduce filter_refs()
      ref-filter: make 'ref_array_item' use a FLEX_ARRAY for refname

Kevin Daudt (1):
      pull: allow dirty tree when rebase.autostash enabled

Lars Schneider (1):
      git-p4: honor core.ignorecase when using P4 client specs

Matthieu Moy (2):
      Documentation/bisect: move getting help section to the end
      bisect: don't mix option parsing and non-trivial code

Michael Haggerty (41):
      delete_ref(): move declaration to refs.h
      remove_branches(): remove temporary
      delete_ref(): handle special case more explicitly
      delete_refs(): new function for the refs API
      delete_refs(): make error message more generic
      delete_refs(): bail early if the packed-refs file cannot be rewritten
      prune_remote(): use delete_refs()
      prune_refs(): use delete_refs()
      repack_without_refs(): make function private
      initial_ref_transaction_commit(): function for initial ref creation
      refs: remove some functions from the module's public interface
      initial_ref_transaction_commit(): check for duplicate refs
      initial_ref_transaction_commit(): check for ref D/F conflicts
      refs: move the remaining ref module declarations to refs.h
      refs.h: add some parameter names to function declarations
      check_branch_commit(): make first parameter const
      update_ref(): don't read old reference value before delete
      cmd_update_ref(): make logic more straightforward
      delete_ref(): use the usual convention for old_sha1
      Documentation/bisect: revise overall content
      fast-import: add a get-mark command
      Documentation/git-worktree: consistently use term "linked working tree"
      Documentation/git-worktree: fix incorrect reference to file "locked"
      Documentation/config: fix stale "git prune --worktree" reference
      Documentation/git-worktree: wordsmith worktree-related manpages
      lockfile: move documentation to lockfile.h and lockfile.c
      create_bundle(): duplicate file descriptor to avoid closing it twice
      lockfile: add accessors get_lock_file_fd() and get_lock_file_fp()
      lockfile: add accessor get_lock_file_path()
      commit_lock_file(): use get_locked_file_path()
      tempfile: a new module for handling temporary files
      prepare_tempfile_object(): new function, extracted from create_tempfile()
      tempfile: add several functions for creating temporary files
      register_tempfile(): new function to handle an existing temporary file
      write_shared_index(): use tempfile module
      setup_temporary_shallow(): use tempfile module
      diff: use tempfile module
      lock_repo_for_gc(): compute the path to "gc.pid" only once
      gc: use tempfile module to handle gc.pid file
      credential-cache--daemon: delete socket from main()
      credential-cache--daemon: use tempfile module

Michael Rappazzo (1):
      git-rebase--interactive.sh: add config option for custom instruction format

Mike Hommey (1):
      Allow to control where the replace refs are looked for

Patrick Steinhardt (4):
      Documentation/git-worktree: fix duplicated 'from'
      clone: do not include authentication data in guessed dir
      clone: do not use port number as dir name
      clone: abort if no dir name could be guessed

Paul Tan (85):
      t4150: test applying StGit patch
      am: teach StGit patch parser how to read from stdin
      t4150: test applying StGit series
      am: use gmtime() to parse mercurial patch date
      am: teach mercurial patch parser how to read from stdin
      parse-options-cb: implement parse_opt_passthru()
      parse-options-cb: implement parse_opt_passthru_argv()
      argv-array: implement argv_array_pushv()
      pull: implement skeletal builtin pull
      pull: implement fetch + merge
      pull: pass verbosity, --progress flags to fetch and merge
      pull: pass git-merge's options to git-merge
      pull: pass git-fetch's options to git-fetch
      pull: error on no merge candidates
      pull: support pull.ff config
      pull: check if in unresolved merge state
      pull: fast-forward working tree if head is updated
      pull: implement pulling into an unborn branch
      pull: set reflog message
      pull: teach git pull about --rebase
      pull: configure --rebase via branch.<name>.rebase or pull.rebase
      pull --rebase: exit early when the working directory is dirty
      pull --rebase: error on no merge candidate cases
      pull: remove redirection to git-pull.sh
      t4150: am.messageid really adds the message id
      t4150: am fails if index is dirty
      t4151: am --abort will keep dirty index intact
      t4150: am refuses patches when paused
      t4150: am --resolved fails if index has no changes
      t4150: am --resolved fails if index has unmerged entries
      t4150: am with applypatch-msg hook
      t4150: am with pre-applypatch hook
      t4150: am with post-applypatch hook
      t4150: tests for am --[no-]scissors
      t3418: non-interactive rebase --continue with rerere enabled
      t3901: test git-am encoding conversion
      wrapper: implement xopen()
      wrapper: implement xfopen()
      builtin-am: implement skeletal builtin am
      builtin-am: implement patch queue mechanism
      builtin-am: split out mbox/maildir patches with git-mailsplit
      builtin-am: auto-detect mbox patches
      builtin-am: extract patch and commit info with git-mailinfo
      builtin-am: apply patch with git-apply
      builtin-am: implement committing applied patch
      builtin-am: refuse to apply patches if index is dirty
      builtin-am: implement --resolved/--continue
      builtin-am: don't parse mail when resuming
      builtin-am: implement --skip
      builtin-am: implement --abort
      builtin-am: reject patches when there's a session in progress
      builtin-am: implement -q/--quiet
      builtin-am: exit with user friendly message on failure
      builtin-am: implement -s/--signoff
      cache-tree: introduce write_index_as_tree()
      builtin-am: implement --3way
      builtin-am: implement --rebasing mode
      builtin-am: bypass git-mailinfo when --rebasing
      builtin-am: handle stray state directory
      builtin-am: implement -u/--utf8
      builtin-am: implement -k/--keep, --keep-non-patch
      builtin-am: implement --[no-]message-id, am.messageid
      builtin-am: support --keep-cr, am.keepcr
      builtin-am: implement --[no-]scissors
      builtin-am: pass git-apply's options to git-apply
      builtin-am: implement --ignore-date
      builtin-am: implement --committer-date-is-author-date
      builtin-am: implement -S/--gpg-sign, commit.gpgsign
      builtin-am: invoke post-rewrite hook
      builtin-am: support automatic notes copying
      builtin-am: invoke applypatch-msg hook
      builtin-am: invoke pre-applypatch hook
      builtin-am: invoke post-applypatch hook
      builtin-am: rerere support
      builtin-am: support and auto-detect StGit patches
      builtin-am: support and auto-detect StGit series files
      builtin-am: support and auto-detect mercurial patches
      builtin-am: implement -i/--interactive
      builtin-am: implement legacy -b/--binary option
      builtin-am: check for valid committer ident
      builtin-am: remove redirection to git-am.sh
      test_terminal: redirect child process' stdin to a pty
      am: let command-line options override saved options
      am: let --signoff override --no-signoff
      am --skip/--abort: merge HEAD/ORIG_HEAD tree into index

Ralf Thielow (1):
      lockfile: remove function "hold_lock_file_for_append"

Remi Lespinet (11):
      t9001-send-email: move script creation in a setup test
      send-email: allow aliases in patch header and command script outputs
      t9001-send-email: refactor header variable fields replacement
      send-email: refactor address list process
      send-email: allow use of aliases in the From field of --compose mode
      send-email: minor code refactoring
      send-email: reduce dependencies impact on parse_address_line
      send-email: consider quote as delimiter instead of character
      send-email: allow multiple emails using --cc, --to and --bcc
      send-email: suppress meaningless whitespaces in from field
      git-am: add am.threeWay config variable

SZEDER Gábor (6):
      bash prompt: test untracked files status indicator with untracked dirs
      bash prompt: faster untracked status indicator with untracked directories
      config: add '--name-only' option to list only variable names
      completion: list variable names reliably with 'git config --name-only'
      config: restructure format_config() for better control flow
      describe --contains: default to HEAD when no commit-ish is given

Stefan Beller (1):
      read-cache: fix indentation in read_index_from

Thomas Braun (1):
      completion: offer '--edit-todo' during interactive rebase

Zoë Blade (1):
      userdiff: add support for Fountain documents

brian m. carlson (7):
      verify-tag: add tests
      verify-tag: share code with verify-commit
      verify-commit: add test for exit status on untrusted signature
      gpg: centralize signature check
      gpg: centralize printing signature buffers
      verify-commit: add option to print raw gpg status information
      verify-tag: add option to print raw gpg status information


Version v2.5.6; changes since v2.5.5:
-------------------------------------

Jeff King (1):
      shell: disallow repo names beginning with dash

Junio C Hamano (2):
      Git 2.4.12
      Git 2.5.6


Version v2.5.5; changes since v2.5.4:
-------------------------------------

Jeff King (7):
      add helpers for detecting size_t overflow
      tree-diff: catch integer overflow in combine_diff_path allocation
      http-push: stop using name_path
      show_object_with_name: simplify by using path_name()
      list-objects: convert name_path to a strbuf
      list-objects: drop name_path entirely
      list-objects: pass full pathname to callbacks

Junio C Hamano (2):
      Git 2.4.11
      Git 2.5.5


Version v2.5.4; changes since v2.5.3:
-------------------------------------

Blake Burkhart (2):
      http: limit redirection to protocol-whitelist
      http: limit redirection depth

Jeff King (6):
      transport: add a protocol-whitelist environment variable
      submodule: allow only certain protocols for submodule fetches
      transport: refactor protocol whitelist code
      react to errors in xdi_diff
      xdiff: reject files larger than ~1GB
      merge-file: enforce MAX_XDIFF_SIZE on incoming files

Junio C Hamano (3):
      Git 2.3.10
      Git 2.4.10
      Git 2.5.4


Version v2.5.3; changes since v2.5.2:
-------------------------------------

Alex Henrie (1):
      git-submodule: remove extraneous space from error message

Brett Randall (1):
      git-svn doc: mention "svn-remote.<name>.include-paths"

David Turner (2):
      untracked-cache: support sparse checkout
      untracked-cache: fix subdirectory handling

Johannes Schindelin (1):
      am --skip/--abort: merge HEAD/ORIG_HEAD tree into index

Junio C Hamano (1):
      Git 2.5.3

Nguyễn Thái Ngọc Duy (2):
      t7063: use --force-untracked-cache to speed up a bit
      untracked cache: fix entry invalidation


Version v2.5.2; changes since v2.5.1:
-------------------------------------

Andreas Schwab (1):
      Documentation/config: fix inconsistent label on gc.*.reflogExpireUnreachable

Christian Couder (3):
      trailer: ignore first line of message
      trailer: retitle a test and correct an in-comment message
      trailer: support multiline title

Clemens Buchacher (1):
      git_open_noatime: return with errno=0 on success

David Turner (1):
      commit: don't rewrite shared index unnecessarily

Eric Sunshine (1):
      generate-cmdlist: re-implement as shell script

Erik Elfström (1):
      t7300: fix broken && chains

Jeff King (9):
      vreportf: report to arbitrary filehandles
      vreportf: avoid intermediate buffer
      config: silence warnings for command names with invalid keys
      rev-list: make it obvious that we do not support notes
      log: diagnose empty HEAD more clearly
      verify_absent: allow filenames longer than PATH_MAX
      notes: use a strbuf in add_non_note
      read_info_alternates: handle paths larger than PATH_MAX
      show-branch: use a strbuf for reflog descriptions

Jim Hill (1):
      strbuf_read(): skip unnecessary strbuf_grow() at eof

Johannes Sixt (1):
      t2019: skip test requiring '*' in a file name non Windows

Junio C Hamano (5):
      ps_matched: xcalloc() takes nmemb and then element size
      Git 2.2.3
      Git 2.3.9
      Git 2.4.9
      Git 2.5.2

Michael Haggerty (4):
      get_remote_group(): handle remotes with single-character names
      get_remote_group(): rename local variable "space" to "wordlen"
      get_remote_group(): eliminate superfluous call to strcspn()
      get_remote_group(): use skip_prefix()

Nguyễn Thái Ngọc Duy (1):
      setup: update the right file in multiple checkouts

Patrick Steinhardt (2):
      tests: fix broken && chains in t1509-root-worktree
      tests: fix cleanup after tests in t1509-root-worktree

Philip Oakley (1):
      po/README: Update directions for l10n contributors

René Scharfe (3):
      t5004: test ZIP archives with many entries
      archive-zip: use a local variable to store the creator version
      archive-zip: support more than 65535 entries

SZEDER Gábor (2):
      t3020: fix typo in test description
      wt-status: move #include "pathspec.h" to the header

Sven Strickroth (1):
      config: close config file handle in case of error


Version v2.5.1; changes since v2.5.0:
-------------------------------------

Charles Bailey (1):
      untracked: fix detection of uname(2) failure

David Aguilar (1):
      contrib/subtree: ignore log.date configuration

David Turner (1):
      unpack-trees: don't update files with CE_WT_REMOVE set

Eric Sunshine (5):
      Documentation/git: drop outdated Cogito reference
      Documentation/git-tools: improve discoverability of Git wiki
      Documentation/git-tools: fix item text formatting
      Documentation/git-tools: drop references to defunct tools
      Documentation/git-tools: retire manually-maintained list

Ilya Bobyr (1):
      rev-parse --parseopt: allow [*=?!] in argument hints

Jeff King (4):
      test-lib: turn off "-x" tracing during chain-lint check
      test-lib: disable trace when test is not verbose
      clone: add tests for output directory
      clone: use computed length in guess_dir_name

Jiang Xin (1):
      receive-pack: crash when checking with non-exist HEAD

Jose F. Morales (1):
      Mingw: verify both ends of the pipe () call

Junio C Hamano (5):
      builtin/send-pack.c: respect user.signingkey
      Git 2.4.8
      Start preparing for 2.5.1
      pull: pass upload_pack only when it was given
      Git 2.5.1

Karthik Nayak (1):
      Documentation/tag: remove double occurance of "<pattern>"

Matthieu Moy (1):
      pull.sh: quote $upload_pack when passing it to git-fetch

Mike Hommey (1):
      fast-import: do less work when given "from" matches current branch head

Nguyễn Thái Ngọc Duy (1):
      setup: set env $GIT_WORK_TREE when work tree is set, like $GIT_DIR

Simon A. Eugster (1):
      checkout: document subtlety around --ours/--theirs

Stefan Beller (3):
      parse-options: align curly braces for all options
      add: remove dead code
      transport-helper: die on errors reading refs.

Thomas Ackermann (1):
      typofix for index-format.txt


Version v2.5.0; changes since v2.5.0-rc3:
-----------------------------------------

Junio C Hamano (4):
      Revert "git-am: add am.threeWay config variable"
      RelNotes: am.threeWay does not exist (yet)
      Git 2.4.7
      Git 2.5


Version v2.5.0-rc3; changes since v2.5.0-rc2:
---------------------------------------------

Alex Henrie (2):
      l10n: ca.po: update translation
      l10n: ca.po: update translation

Alexander Shopov (2):
      l10n: Updated Bulgarian translation of git (2355t,0f,0u)
      l10n: Updated Bulgarian translation of git (2359t,0f,0u)

Dimitriy Ryazantcev (1):
      l10n: ru.po: update Russian translation

Eric Sunshine (2):
      Documentation/git-worktree: fix stale "git checkout --to" references
      Documentation/git: fix stale "MULTIPLE CHECKOUT MODE" reference

Jean-Noël Avila (2):
      l10n: fr.po v2.5.0-rc0 (2355t)
      l10n: fr v2.5.0 round 2 (2359t)

Jiang Xin (4):
      l10n: git.pot: v2.5.0 round 1 (65 new, 15 removed)
      l10n: zh_CN: for git v2.5.0 l10n round 1
      l10n: git.pot: v2.5.0 round 2 (9 new, 5 removed)
      l10n: zh_CN: for git v2.5.0 l10n round 2

Junio C Hamano (3):
      Git 2.4.6
      worktree: caution that this is still experimental
      Git 2.5.0-rc3

Peter Krefting (2):
      l10n: sv.po: Update Swedish translation (2355t0f0u)
      l10n: sv.po: Update Swedish translation (2359t0f0u)

Ralf Thielow (4):
      l10n: de.po: fix translation of "head nodes"
      l10n: de.po: translate "index" as "Index"
      l10n: de.po: translate 65 new messages
      l10n: de.po: translate 9 new messages

René Scharfe (1):
      diff: parse ws-error-highlight option more strictly

Stefan Beller (1):
      revision.c: remove unneeded check for NULL

Tony Finch (1):
      gitweb: fix typo in man page

Trần Ngọc Quân (2):
      l10n: Updated Vietnamese translation (2355t)
      l10n: Updated Vietnamese translation (2359t)


Version v2.5.0-rc2; changes since v2.5.0-rc1:
---------------------------------------------

Charles Bailey (3):
      contrib/subtree: use tabs consitently for indentation in tests
      contrib/subtree: fix broken &&-chains and revealed test error
      contrib/subtree: small tidy-up to test

Clemens Buchacher (1):
      rebase: return non-zero error code if format-patch fails

Enrique Tobis (1):
      http: always use any proxy auth method available

Eric Sunshine (23):
      Documentation/git-checkout: fix incorrect worktree prune command
      Documentation/git-worktree: associate options with commands
      Documentation: move linked worktree description from checkout to worktree
      Documentation/git-worktree: add BUGS section
      Documentation/git-worktree: split technical info from general description
      Documentation/git-worktree: add high-level 'lock' overview
      Documentation/git-worktree: add EXAMPLES section
      checkout: fix bug with --to and relative HEAD
      checkout: relocate --to's "no branch specified" check
      checkout: prepare_linked_checkout: drop now-unused 'new' argument
      checkout: make --to unconditionally verbose
      checkout: drop 'checkout_opts' dependency from prepare_linked_checkout
      worktree: introduce "add" command
      worktree: add --force option
      worktree: add --detach option
      worktree: add -b/-B options
      tests: worktree: retrofit "checkout --to" tests for "worktree add"
      checkout: retire --to option
      checkout: require worktree unconditionally
      worktree: extract basename computation to new function
      worktree: add: make -b/-B default to HEAD when <branch> is omitted
      worktree: add: auto-vivify new branch when <branch> is omitted
      checkout: retire --ignore-other-worktrees in favor of --force

Jeff King (4):
      docs: clarify that --encoding can produce invalid sequences
      for_each_packed_object: automatically open pack index
      rev-list: disable --use-bitmap-index when pruning commits
      check_and_freshen_file: fix reversed success-check

Johannes Schindelin (2):
      t3404: demonstrate CHERRY_PICK_HEAD bug
      rebase -i: do not leave a CHERRY_PICK_HEAD file behind

Junio C Hamano (6):
      fsck: it is OK for a tag and a commit to lack the body
      pager: do not leak "GIT_PAGER_IN_USE" to the pager
      index-pack: fix allocation of sorted_by_pos array
      The last minute bits of fixes
      Revert "checkout: retire --ignore-other-worktrees in favor of --force"
      Git 2.5.0-rc2

Karsten Blees (2):
      config.c: fix writing config files on Windows network shares
      Makefile / racy-git.txt: clarify USE_NSEC prerequisites

Lawrence Siebert (1):
      rev-list: add --count to usage guide

Matthieu Moy (3):
      git-multimail: update to release 1.1.1
      Documentation/branch: document -d --force and -m --force
      Documentation/branch: document -M and -D in terms of --force

Michael Haggerty (1):
      strbuf: strbuf_read_file() should return ssize_t

Nguyễn Thái Ngọc Duy (3):
      checkout: don't check worktrees when not necessary
      worktree: new place for "git prune --worktrees"
      Add tests for wildcard "path vs ref" disambiguation

Richard Hansen (2):
      Revert "test-lib.sh: do tests for color support after changing HOME"
      test-lib.sh: fix color support when tput needs ~/.terminfo

Sebastian Schuberth (1):
      clone: simplify string handling in guess_dir_name()

Stefan Beller (1):
      p5310: Fix broken && chain in performance test

Torsten Bögershausen (1):
      git-checkout.txt: document "git checkout <pathspec>" better


Version v2.5.0-rc1; changes since v2.5.0-rc0:
---------------------------------------------

Joe Cridge (1):
      git-prompt.sh: document GIT_PS1_STATESEPARATOR

Junio C Hamano (1):
      Git 2.5.0-rc1

Matthieu Moy (1):
      Documentation/describe: improve one-line summary

Michael J Gruber (1):
      mergetool-lib: fix default tool selection

Mike Edgar (1):
      fetch-pack: check for shallow if depth given


Version v2.5.0-rc0; changes since v2.4.12:
------------------------------------------

Allen Hubbe (1):
      send-email: add sendmail email aliases format

Blair Holloway (1):
      git-p4: fix filetype detection on files opened exclusively

Christian Neukirchen (1):
      cvsimport: silence regex warning appearing in Perl 5.22.

Danny Lin (2):
      contrib/subtree: there's no push --squash
      contrib/subtree: portability fix for string printing

David Aguilar (2):
      mergetool--lib: set IFS for difftool and mergetool
      mergetools: add winmerge as a builtin tool

David Turner (3):
      tree-walk: learn get_tree_entry_follow_symlinks
      sha1_name: get_sha1_with_context learns to follow symlinks
      cat-file: add --follow-symlinks to --batch

Dennis Kaarsemaker (1):
      checkout: don't require a work tree when checking out into a new one

Eric Sunshine (14):
      command-list: prepare machinery for upcoming "common groups" section
      generate-cmdlist: parse common group commands
      send-email: further document missing sendmail aliases functionality
      send-email: visually distinguish sendmail aliases parser warnings
      send-email: drop noise comments which merely repeat what code says
      send-email: fix style: cuddle 'elsif' and 'else' with closing brace
      send-email: refactor sendmail aliases parser
      send-email: simplify sendmail aliases comment and blank line recognizer
      send-email: implement sendmail aliases line continuation support
      t9001: refactor sendmail aliases test infrastructure
      t9001: add sendmail aliases line continuation tests
      send-email: further warn about unsupported sendmail aliases features
      config.mak.uname: Darwin: define HAVE_GETDELIM for modern OS X releases
      configure: add getdelim() check

Fredrik Medley (3):
      config.txt: clarify allowTipSHA1InWant with camelCase
      upload-pack: prepare to extend allow-tip-sha1-in-want
      upload-pack: optionally allow fetching reachable sha1

Jeff King (29):
      strbuf_getwholeline: use getc macro
      git-compat-util: add fallbacks for unlocked stdio
      strbuf_getwholeline: use getc_unlocked
      config: use getc_unlocked when reading from file
      strbuf_addch: avoid calling strbuf_grow
      strbuf_getwholeline: avoid calling strbuf_grow
      strbuf_getwholeline: use getdelim if it is available
      read_packed_refs: avoid double-checking sane refs
      t1430: add another refs-escape test
      test-lib: turn on GIT_TEST_CHAIN_LINT by default
      remote.c: drop default_remote_name variable
      progress: treat "no terminal" as being in the foreground
      remote.c: refactor setup of branch->merge list
      remote.c: drop "remote" pointer from "struct branch"
      remote.c: hoist branch.*.remote lookup out of remote_get_1
      remote.c: provide per-branch pushremote name
      remote.c: hoist read_config into remote_get_1
      remote.c: introduce branch_get_upstream helper
      remote.c: report specific errors from branch_get_upstream
      remote.c: untangle error logic in branch_get_upstream
      remote.c: return upstream name from stat_tracking_info
      remote.c: add branch_get_push
      sha1_name: refactor upstream_mark
      sha1_name: refactor interpret_upstream_mark
      sha1_name: implement @{push} shorthand
      for-each-ref: use skip_prefix instead of starts_with
      for-each-ref: accept "%(push)" format
      t7063: hide stderr from setup inside prereq
      index-pack: fix truncation of off_t in comparison

Johannes Sixt (5):
      compat/mingw: stubs for getpgid() and tcgetpgrp()
      lockfile: replace random() by rand()
      help.c: wrap wait-only poll() invocation in sleep_millisec()
      lockfile: convert retry timeout computations to millisecond
      lockfile: wait using sleep_millisec() instead of select()

Jonathan Nieder (1):
      config: use error() instead of fprintf(stderr, ...)

Junio C Hamano (38):
      t2026: fix broken &&-chain
      test: validate prerequistes syntax
      merge: test the top-level merge driver
      merge: simplify code flow
      t5520: style fixes
      t5520: test pulling an octopus into an unborn branch
      merge: clarify "pulling into void" special case
      merge: do not check argc to determine number of remote heads
      merge: small leakfix and code simplification
      merge: clarify collect_parents() logic
      merge: split reduce_parents() out of collect_parents()
      merge: narrow scope of merge_names
      merge: extract prepare_merge_message() logic out
      merge: make collect_parents() auto-generate the merge message
      merge: decide if we auto-generate the message early in collect_parents()
      merge: handle FETCH_HEAD internally
      merge: deprecate 'git merge <message> HEAD <commit>' syntax
      First batch for 2.5 cycle
      Second batch for 2.5 cycle
      Third batch for 2.5 cycle
      copy.c: make copy_fd() report its status silently
      filter_buffer_or_fd(): ignore EPIPE
      Fourth batch for 2.5 cycle
      t4015: modernise style
      t4015: separate common setup and per-test expectation
      Fifth batch for 2.5 cycle
      diff.c: add emit_del_line() and emit_context_line()
      diff.c: --ws-error-highlight=<kind> option
      t9001: write $HOME/, not ~/, to help shells without tilde expansion
      apply: reject a hunk that does not do anything
      Sixth batch for 2.5 cycle
      ll-merge: pass the original path to external drivers
      The first half of the seventh batch for 2.5
      Second half of seventh batch
      Eighth batch for 2.5
      Revert "diff-lib.c: adjust position of i-t-a entries in diff"
      Ninth batch for 2.5
      Git 2.5.0-rc0

Karthik Nayak (4):
      sha1_file: support reading from a loose object of unknown type
      cat-file: make the options mutually exclusive
      cat-file: teach cat-file a '--allow-unknown-type' option
      t1006: add tests for git cat-file --allow-unknown-type

Lars Kellogg-Stedman (1):
      http: add support for specifying an SSL cipher list

Lex Spoon (1):
      git-p4: use -m when running p4 changes

Luke Diamand (11):
      git-p4: fix small bug in locked test scripts
      git-p4: small fix for locked-file-move-test
      git-p4: t9814: prevent --chain-lint failure
      git-p4: add failing tests for case-folding p4d
      git-p4: add failing test for P4EDITOR handling
      git-p4: fix handling of multi-word P4EDITOR
      git-p4: tests: use test-chmtime in place of touch
      git-p4: additional testing of --changes-block-size
      git-p4: test with limited p4 server results
      git-p4: add tests for non-numeric revision range
      git-p4: fixing --changes-block-size handling

Luke Mewburn (1):
      progress: no progress in background

Matthieu Moy (6):
      t3701-add-interactive: simplify code
      add -p: demonstrate failure when running 'edit' after a split
      t3904-stash-patch: fix test description
      t3904-stash-patch: factor PERL prereq at the top of the file
      stash -p: demonstrate failure of split with mixed y/n
      git-multimail: update to release 1.1.0

Max Kirillov (3):
      checkout: do not fail if target is an empty directory
      git-common-dir: make "modules/" per-working-directory directory
      prune --worktrees: fix expire vs worktree existence condition

Michael Haggerty (62):
      lockfile: allow file locking to be retried with a timeout
      lock_packed_refs(): allow retries when acquiring the packed-refs lock
      each_ref_fn: change to take an object_id parameter
      builtin/rev-parse: rewrite to take an object_id argument
      handle_one_ref(): rewrite to take an object_id argument
      register_ref(): rewrite to take an object_id argument
      append_ref(): rewrite to take an object_id argument
      add_pending_uninteresting_ref(): rewrite to take an object_id argument
      get_name(): rewrite to take an object_id argument
      builtin/fetch: rewrite to take an object_id argument
      grab_single_ref(): rewrite to take an object_id argument
      name_ref(): rewrite to take an object_id argument
      builtin/pack-objects: rewrite to take an object_id argument
      show_ref_cb(): rewrite to take an object_id argument
      builtin/reflog: rewrite ref functions to take an object_id argument
      add_branch_for_removal(): rewrite to take an object_id argument
      add_branch_for_removal(): don't set "util" field of string_list entries
      builtin/remote: rewrite functions to take object_id arguments
      show_reference(): rewrite to take an object_id argument
      append_matching_ref(): rewrite to take an object_id argument
      builtin/show-branch: rewrite functions to take object_id arguments
      append_one_rev(): rewrite to work with object_id
      builtin/show-branch: rewrite functions to work with object_id
      cmd_show_branch(): fix error message
      fsck: change functions to use object_id
      builtin/show-ref: rewrite to use object_id
      show_ref(): convert local variable peeled to object_id
      builtin/show-ref: rewrite to take an object_id argument
      append_similar_ref(): rewrite to take an object_id argument
      http-backend: rewrite to take an object_id argument
      show_head_ref(): convert local variable "unused" to object_id
      add_ref_decoration(): rewrite to take an object_id argument
      add_ref_decoration(): convert local variable original_sha1 to object_id
      string_list_add_one_ref(): rewrite to take an object_id argument
      add_one_ref(): rewrite to take an object_id argument
      remote: rewrite functions to take object_id arguments
      register_replace_ref(): rewrite to take an object_id argument
      handle_one_reflog(): rewrite to take an object_id argument
      add_info_ref(): rewrite to take an object_id argument
      handle_one_ref(): rewrite to take an object_id argument
      shallow: rewrite functions to take object_id arguments
      submodule: rewrite to take an object_id argument
      write_refs_to_temp_dir(): convert local variable sha1 to object_id
      write_one_ref(): rewrite to take an object_id argument
      find_symref(): rewrite to take an object_id argument
      find_symref(): convert local variable "unused" to object_id
      upload-pack: rewrite functions to take object_id arguments
      send_ref(): convert local variable "peeled" to object_id
      mark_complete(): rewrite to take an object_id argument
      clear_marks(): rewrite to take an object_id argument
      mark_complete_oid(): new function, taking an object_oid
      mark_complete(): remove unneeded arguments
      rev_list_insert_ref_oid(): new function, taking an object_oid
      rev_list_insert_ref(): remove unneeded arguments
      each_ref_fn_adapter(): remove adapter
      warn_if_dangling_symref(): convert local variable "junk" to object_id
      struct ref_lock: convert old_sha1 member to object_id
      verify_lock(): return 0/-1 rather than struct ref_lock *
      verify_lock(): on errors, let the caller unlock the lock
      verify_lock(): report errors via a strbuf
      verify_lock(): do not capitalize error messages
      ref_transaction_commit(): do not capitalize error messages

Miguel Torroja (1):
      p4: retrieve the right revision of the file in UTF-16 codepath

Mike Hommey (1):
      show-branch: show all local heads when only giving one rev along --topics

Nguyễn Thái Ngọc Duy (63):
      path.c: make get_pathname() return strbuf instead of static buffer
      path.c: make get_pathname() call sites return const char *
      git_snpath(): retire and replace with strbuf_git_path()
      path.c: rename vsnpath() to do_git_path()
      path.c: group git_path(), git_pathdup() and strbuf_git_path() together
      git_path(): be aware of file relocation in $GIT_DIR
      *.sh: respect $GIT_INDEX_FILE
      reflog: avoid constructing .lock path with git_path
      fast-import: use git_path() for accessing .git dir instead of get_git_dir()
      commit: use SEQ_DIR instead of hardcoding "sequencer"
      $GIT_COMMON_DIR: a new environment variable
      git-sh-setup.sh: use rev-parse --git-path to get $GIT_DIR/objects
      *.sh: avoid hardcoding $GIT_DIR/hooks/...
      git-stash: avoid hardcoding $GIT_DIR/logs/....
      setup.c: convert is_git_directory() to use strbuf
      setup.c: detect $GIT_COMMON_DIR in is_git_directory()
      setup.c: convert check_repository_format_gently to use strbuf
      setup.c: detect $GIT_COMMON_DIR check_repository_format_gently()
      setup.c: support multi-checkout repo setup
      wrapper.c: wrapper to open a file, fprintf then close
      use new wrapper write_file() for simple file writing
      checkout: support checking out into a new working directory
      prune: strategies for linked checkouts
      checkout: reject if the branch is already checked out elsewhere
      checkout: clean up half-prepared directories in --to mode
      gc: style change -- no SP before closing parenthesis
      gc: factor out gc.pruneexpire parsing code
      gc: support prune --worktrees
      count-objects: report unused files in $GIT_DIR/worktrees/...
      git_path(): keep "info/sparse-checkout" per work-tree
      t2025: add a test to make sure grafts is working from a linked checkout
      checkout: pass whole struct to parse_branchname_arg instead of individual flags
      checkout: add --ignore-other-wortrees
      git-checkout.txt: a note about multiple checkout support for submodules
      index-pack: reduce object_entry size to save memory
      dir.c: optionally compute sha-1 of a .gitignore file
      untracked cache: record .gitignore information and dir hierarchy
      untracked cache: initial untracked cache validation
      untracked cache: invalidate dirs recursively if .gitignore changes
      untracked cache: make a wrapper around {open,read,close}dir()
      untracked cache: record/validate dir mtime and reuse cached output
      untracked cache: mark what dirs should be recursed/saved
      untracked cache: don't open non-existent .gitignore
      ewah: add convenient wrapper ewah_serialize_strbuf()
      untracked cache: save to an index extension
      untracked cache: load from UNTR index extension
      untracked cache: invalidate at index addition or removal
      read-cache.c: split racy stat test to a separate function
      untracked cache: avoid racy timestamps
      untracked cache: print stats with $GIT_TRACE_UNTRACKED_STATS
      untracked cache: mark index dirty if untracked cache is updated
      untracked-cache: temporarily disable with $GIT_DISABLE_UNTRACKED_CACHE
      status: enable untracked cache
      update-index: manually enable or disable untracked cache
      update-index: test the system before enabling untracked cache
      t7063: tests for untracked cache
      mingw32: add uname()
      untracked cache: guard and disable on system changes
      git-status.txt: advertisement for untracked cache
      diff-lib.c: adjust position of i-t-a entries in diff
      index-pack: kill union delta_base to save memory
      pathspec: avoid the need of "--" when wildcard is used
      read-cache: fix untracked cache invalidation when split-index is used

Paul Tan (10):
      t5520: prevent field splitting in content comparisons
      t5520: test no merge candidates cases
      t5520: test for failure if index has unresolved entries
      t5520: test work tree fast-forward when fetch updates head
      t5520: test --rebase with multiple branches
      t5520: test --rebase failure on unborn branch with index
      t5521: test --dry-run does not make any changes
      t5520: check reflog action in fast-forward merge
      pull: handle git-fetch's options as well
      pull: use git-rev-parse --parseopt for option parsing

Quentin Neill (1):
      blame: add blame.showEmail configuration

Ramsay Jones (1):
      t7502-commit.sh: fix a broken and-chain

Remi Lespinet (3):
      git-am.sh: fix initialization of the threeway variable
      t4150-am: refactor am -3 tests
      git-am: add am.threeWay config variable

SZEDER Gábor (4):
      completion: remove redundant __git_compute_all_commands() call
      completion: remove credential helpers from porcelain commands
      completion: add a helper function to get config variables
      completion: simplify query for config variables

Stefan Beller (2):
      prefix_path(): unconditionally free results in the callers
      refs.c: remove lock_fd from struct ref_lock

Sébastien Guimmara (4):
      command-list.txt: fix whitespace inconsistency
      command-list.txt: add the common groups block
      command-list.txt: drop the "common" tag
      help: respect new common command grouping

Thomas Braun (1):
      completion: suggest sequencer commands for revert

Thomas Gummerer (1):
      t1501: fix test with split index

Thomas Schneider (1):
      checkout: call a single commit "it" intead of "them"

Torsten Bögershausen (4):
      t2026 needs procondition SANITY
      t0027: cleanup: rename functions; avoid non-leading TABs
      t0027: support NATIVE_CRLF platforms
      t0027: Add repoMIX and LF_nul

Vitor Antunes (2):
      t9801: check git-p4's branch detection with client spec enabled
      git-p4: improve client path detection when branches are used

brian m. carlson (11):
      define a structure for object IDs
      define utility functions for object IDs
      bisect.c: convert leaf functions to use struct object_id
      archive.c: convert to use struct object_id
      zip: use GIT_SHA1_HEXSZ for trailers
      bulk-checkin.c: convert to use struct object_id
      diff: convert struct combine_diff_path to object_id
      commit: convert parts to struct object_id
      patch-id: convert to use struct object_id
      apply: convert threeway_stage to object_id
      refs: convert struct ref_entry to use struct object_id


Version v2.4.12; changes since v2.4.11:
---------------------------------------

Jeff King (1):
      shell: disallow repo names beginning with dash

Junio C Hamano (1):
      Git 2.4.12


Version v2.4.11; changes since v2.4.10:
---------------------------------------

Jeff King (7):
      add helpers for detecting size_t overflow
      tree-diff: catch integer overflow in combine_diff_path allocation
      http-push: stop using name_path
      show_object_with_name: simplify by using path_name()
      list-objects: convert name_path to a strbuf
      list-objects: drop name_path entirely
      list-objects: pass full pathname to callbacks

Junio C Hamano (1):
      Git 2.4.11


Version v2.4.10; changes since v2.4.9:
--------------------------------------

Blake Burkhart (2):
      http: limit redirection to protocol-whitelist
      http: limit redirection depth

Jeff King (6):
      transport: add a protocol-whitelist environment variable
      submodule: allow only certain protocols for submodule fetches
      transport: refactor protocol whitelist code
      react to errors in xdi_diff
      xdiff: reject files larger than ~1GB
      merge-file: enforce MAX_XDIFF_SIZE on incoming files

Junio C Hamano (2):
      Git 2.3.10
      Git 2.4.10


Version v2.4.9; changes since v2.4.8:
-------------------------------------

Jeff King (4):
      verify_absent: allow filenames longer than PATH_MAX
      notes: use a strbuf in add_non_note
      read_info_alternates: handle paths larger than PATH_MAX
      show-branch: use a strbuf for reflog descriptions

Junio C Hamano (3):
      Git 2.2.3
      Git 2.3.9
      Git 2.4.9


Version v2.4.8; changes since v2.4.7:
-------------------------------------

Johannes Schindelin (2):
      t3404: demonstrate CHERRY_PICK_HEAD bug
      rebase -i: do not leave a CHERRY_PICK_HEAD file behind

Junio C Hamano (1):
      Git 2.4.8

Michael Haggerty (4):
      t6301: new tests of for-each-ref error handling
      for-each-ref: report broken references correctly
      read_loose_refs(): simplify function logic
      read_loose_refs(): treat NULL_SHA1 loose references as broken

Paul Tan (6):
      am --skip: revert changes introduced by failed 3way merge
      am -3: support 3way merge on unborn branch
      am --skip: support skipping while on unborn branch
      am --abort: revert changes introduced by failed 3way merge
      am --abort: support aborting to unborn branch
      am --abort: keep unrelated commits on unborn branch

SZEDER Gábor (2):
      completion: teach 'scissors' mode to 'git commit --cleanup='
      commit: cope with scissors lines in commit message

Sebastian Schuberth (1):
      clone: simplify string handling in guess_dir_name()


Version v2.4.7; changes since v2.4.6:
-------------------------------------

Clemens Buchacher (1):
      rebase: return non-zero error code if format-patch fails

Enrique Tobis (1):
      http: always use any proxy auth method available

Jeff King (4):
      index-pack: avoid excessive re-reading of pack directory
      docs: clarify that --encoding can produce invalid sequences
      rev-list: disable --use-bitmap-index when pruning commits
      check_and_freshen_file: fix reversed success-check

Junio C Hamano (3):
      fsck: it is OK for a tag and a commit to lack the body
      pager: do not leak "GIT_PAGER_IN_USE" to the pager
      Git 2.4.7

Karsten Blees (1):
      config.c: fix writing config files on Windows network shares

Lawrence Siebert (1):
      rev-list: add --count to usage guide

Matthieu Moy (2):
      Documentation/branch: document -d --force and -m --force
      Documentation/branch: document -M and -D in terms of --force

Michael Haggerty (1):
      strbuf: strbuf_read_file() should return ssize_t

Richard Hansen (2):
      Revert "test-lib.sh: do tests for color support after changing HOME"
      test-lib.sh: fix color support when tput needs ~/.terminfo

Torsten Bögershausen (1):
      git-checkout.txt: document "git checkout <pathspec>" better


Version v2.4.6; changes since v2.4.5:
-------------------------------------

Ariel Faigon (1):
      git-completion.tcsh: fix redirect with noclobber

Charles Bailey (1):
      Fix definition of ARRAY_SIZE for non-gcc builds

Eric Sunshine (2):
      ewah/bitmap: silence warning about MASK macro redefinition
      utf8: NO_ICONV: silence uninitialized variable warning

Frans Klaver (1):
      doc: format-patch: fix typo

Jeff King (2):
      ewah: use less generic macro name
      Revert "stash: require a clean index to apply"

Joe Cridge (1):
      git-prompt.sh: document GIT_PS1_STATESEPARATOR

Junio C Hamano (2):
      format-patch: do not feed tags to clear_commit_marks()
      Git 2.4.6

Matthieu Moy (1):
      Documentation/describe: improve one-line summary

Michael Haggerty (2):
      fsck_handle_reflog_sha1(): new function
      fsck: report errors if reflog entries point at invalid objects

Mike Edgar (1):
      fetch-pack: check for shallow if depth given

Panagiotis Astithas (1):
      hooks/pre-auto-gc: adjust power checking for newer OS X

Paul Tan (1):
      t0302: "unreadable" test needs SANITY prereq


Version v2.4.5; changes since v2.4.4:
-------------------------------------

Jeff King (13):
      diff: accept color.diff.context as a synonym for "plain"
      diff.h: rename DIFF_PLAIN color slot to DIFF_CONTEXT
      read-cache.c: drop PROT_WRITE from mmap of index
      config.c: fix mmap leak when writing config
      config.c: avoid xmmap error messages
      config.c: rewrite ENODEV into EISDIR when mmap fails
      Makefile: drop dependency between git-instaweb and gitweb
      Makefile: avoid timestamp updates to GIT-BUILD-OPTIONS
      Makefile: silence perl/PM.stamp recipe
      setup_git_directory: delay core.bare/core.worktree errors
      add quieter versions of parse_{tree,commit}
      silence broken link warnings with revs->ignore_missing_links
      suppress errors on missing UNINTERESTING links

Junio C Hamano (3):
      t5407: use <<- to align the expected output
      xmmap(): drop "Out of memory?"
      Git 2.4.5

Matthieu Moy (2):
      rebase -i: demonstrate incorrect behavior of post-rewrite
      rebase -i: fix post-rewrite hook with failed exec command

Paul Tan (1):
      pull: remove --tags error in no merge candidates case

SZEDER Gábor (1):
      Documentation: include 'merge.branchdesc' for merge and config as well

Stefan Beller (1):
      Documentation/technical/pack-protocol: mention http as possible protocol


Version v2.4.4; changes since v2.4.3:
-------------------------------------

Alex Henrie (1):
      blame, log: format usage strings similarly to those in documentation

David Turner (1):
      clean: only lstat files in pathspec

Elia Pinto (1):
      git-compat-util.h: implement a different ARRAY_SIZE macro for for safely deriving the size of array

Jeff King (8):
      http-backend: fix die recursion with custom handler
      t5551: factor out tag creation
      stash: complain about unknown flags
      stash: recognize "--help" for subcommands
      test_bitmap_walk: free bitmap with bitmap_free
      http-backend: spool ref negotiation requests to buffer
      clone: use OPT_STRING_LIST for --reference
      clone: reorder --dissociate and --reference options

Jim Hill (1):
      sha1_file: pass empty buffer to index empty file

Junio C Hamano (1):
      Git 2.4.4

Matthieu Moy (2):
      Documentation/log: clarify what --raw means
      Documentation/log: clarify sha1 non-abbreviation in log --raw

Michael Coleman (1):
      Documentation/git-commit: grammofix

Michael J Gruber (3):
      l10n: de.po: grammar fix
      l10n: de.po: punctuation fixes
      l10n: de.po: translation fix for fall-back to 3way merge

Phillip Sz (1):
      l10n: de.po: change error message from "sagen" to "Meinten Sie"

René Scharfe (3):
      use file_exists() to check if a file exists in the worktree
      clean: remove unused variable buf
      dir: remove unused variable sb

Stefan Beller (2):
      submodule doc: reorder introductory paragraphs
      glossary: add "remote", "submodule", "superproject"


Version v2.4.3; changes since v2.4.2:
-------------------------------------

Danny Lin (1):
      branch: do not call a "remote-tracking branch" a "remote branch"

Fredrik Gustafsson (1):
      Documentation: clarify how "git commit" cleans up the edited log message

Jean-Noël Avila (1):
      doc: fix unmatched code fences

Jeff King (14):
      sha1_file: squelch "packfile cannot be accessed" warnings
      t/lib-httpd.sh: skip tests if NO_CURL is defined
      add: check return value of launch_editor
      doc: fix unmatched code fences in git-stripspace
      doc: fix misrendering due to `single quote'
      doc: fix unquoted use of "{type}"
      doc: fix hanging "+"-continuation
      doc: fix length of underlined section-title
      doc/add: reformat `--edit` option
      doc: convert \--option to --option
      doc: drop backslash quoting of some curly braces
      doc: put example URLs and emails inside literal backticks
      doc: convert AsciiDoc {?foo} to ifdef::foo[]
      rerere: exit silently on "forget" when rerere is disabled

Junio C Hamano (7):
      t0302: "unreadable" test needs POSIXPERM
      fmt-merge-msg: plug small leak of commit buffer
      ignore: info/exclude should trump core.excludesfile
      tests: skip dav http-push tests under NO_EXPAT=NoThanks
      log: decorate HEAD with branch name under --decorate=full, too
      log: do not shorten decoration names too early
      Git 2.4.3

Michael Haggerty (30):
      t1404: new tests of ref D/F conflicts within transactions
      is_refname_available(): revamp the comments
      is_refname_available(): avoid shadowing "dir" variable
      is_refname_available(): convert local variable "dirname" to strbuf
      entry_matches(): inline function
      report_refname_conflict(): inline function
      struct nonmatching_ref_data: store a refname instead of a ref_entry
      is_refname_available(): use dirname in first loop
      ref_transaction_commit(): use a string_list for detecting duplicates
      refs: check for D/F conflicts among refs created in a transaction
      verify_refname_available(): rename function
      verify_refname_available(): report errors via a "struct strbuf *err"
      lock_ref_sha1_basic(): report errors via a "struct strbuf *err"
      lock_ref_sha1_basic(): improve diagnostics for ref D/F conflicts
      rename_ref(): integrate lock_ref_sha1_basic() errors into ours
      ref_transaction_commit(): provide better error messages
      ref_transaction_commit(): delete extra "the" from error message
      reflog_expire(): integrate lock_ref_sha1_basic() errors into ours
      write_ref_to_lockfile(): new function, extracted from write_ref_sha1()
      commit_ref_update(): new function, extracted from write_ref_sha1()
      rename_ref(): inline calls to write_ref_sha1() from this function
      ref_transaction_commit(): inline call to write_ref_sha1()
      ref_transaction_commit(): remove the local flags variable
      ref_transaction_commit(): fix atomicity and avoid fd exhaustion
      write_ref_to_lockfile(): new function, extracted from write_ref_sha1()
      commit_ref_update(): new function, extracted from write_ref_sha1()
      rename_ref(): inline calls to write_ref_sha1() from this function
      ref_transaction_commit(): inline call to write_ref_sha1()
      ref_transaction_commit(): remove the local flags variable
      ref_transaction_commit(): fix atomicity and avoid fd exhaustion

Mike Hommey (1):
      clone: call transport_set_verbosity before anything else on the newly created transport

Patrick Steinhardt (5):
      bundle: verify arguments more strictly
      git-verify-pack.txt: fix inconsistent spelling of "packfile"
      git-unpack-objects.txt: fix inconsistent spelling of "packfile"
      pack-protocol.txt: fix insconsistent spelling of "packfile"
      doc: fix inconsistent spelling of "packfile"

Paul Tan (13):
      git-credential-store: support multiple credential files
      git-credential-store: support XDG_CONFIG_HOME
      t0302: test credential-store support for XDG_CONFIG_HOME
      path.c: implement xdg_config_home()
      attr.c: replace home_config_paths() with xdg_config_home()
      dir.c: replace home_config_paths() with xdg_config_home()
      credential-store.c: replace home_config_paths() with xdg_config_home()
      git-commit: replace use of home_config_paths()
      git-config: replace use of home_config_paths()
      path.c: remove home_config_paths()
      pull: handle --log=<n>
      pull: make pull.ff=true override merge.ff
      pull: parse pull.ff as a bool or string

Phil Hord (1):
      rebase -i: redo tasks that die during cherry-pick

René Scharfe (1):
      pack-bitmaps: plug memory leak, fix allocation size for recent_bitmaps

Stefan Beller (5):
      update-ref: test handling large transactions properly
      t7004: rename ULIMIT test prerequisite to ULIMIT_STACK_SIZE
      update-ref: test handling large transactions properly
      t7004: rename ULIMIT test prerequisite to ULIMIT_STACK_SIZE
      subdirectory tests: code cleanup, uncomment test

Torsten Bögershausen (1):
      blame: CRLF in the working tree and LF in the repo

brian m. carlson (3):
      connect: simplify SSH connection code path
      t5601: fix quotation error leading to skipped tests
      connect: improve check for plink to reduce false positives


Version v2.4.2; changes since v2.4.1:
-------------------------------------

Eric Sunshine (3):
      git-hash-object.txt: document --literally option
      hash-object --literally: fix buffer overrun with extra-long object type
      t1007: add hash-object --literally tests

Jeff King (7):
      limit_list: avoid quadratic behavior from still_interesting
      t3903: stop hard-coding commit sha1s
      t3903: avoid applying onto dirty index
      stash: require a clean index to apply
      stop putting argv[0] dirname at front of PATH
      rebase: silence "git checkout" for noop rebase
      filter-branch: avoid passing commit message through sed

Junio C Hamano (3):
      write_sha1_file(): do not use a separate sha1[] array
      daemon: unbreak NO_IPV6 build regression
      Git 2.4.2

SZEDER Gábor (1):
      completion: fix and update 'git log --decorate=' options


Version v2.4.1; changes since v2.4.0:
-------------------------------------

Carlos Martín Nieto (1):
      dir: allow a BOM at the beginning of exclude files

Elia Pinto (1):
      test-lib-functions.sh: fix the second argument to some helper functions

Jeff King (5):
      init: don't set core.worktree when initializing /.git
      type_from_string_gently: make sure length matches
      reachable: only mark local objects as recent
      sha1_file: freshen pack objects before loose
      sha1_file: only freshen packs once per run

Junio C Hamano (10):
      diff-no-index: DWIM "diff D F" into "diff D/F F"
      diff-no-index: align D/F handling with that of normal Git
      parse_date_basic(): return early when given a bogus timestamp
      parse_date_basic(): let the system handle DST conversion
      add_excludes_from_file: clarify the bom skipping logic
      utf8-bom: introduce skip_utf8_bom() helper
      config: use utf8_bom[] from utf.[ch] in git_parse_source()
      attr: skip UTF8 BOM at the beginning of the input file
      Git 2.3.8
      Git 2.4.1

Matthieu Moy (2):
      Documentation: change -L:<regex> to -L:<funcname>
      log -L: improve error message on malformed argument

Nguyễn Thái Ngọc Duy (1):
      t1509: update prepare script to be able to run t1509 in chroot again

Ossi Herrala (1):
      config: fix settings in default_user_config template

Stefan Beller (2):
      line-log.c: fix a memleak
      pack-bitmap.c: fix a memleak


Version v2.4.0; changes since v2.4.0-rc3:
-----------------------------------------

Junio C Hamano (2):
      Git 2.3.7
      Git 2.4

Michael Haggerty (6):
      git tag: mention versionsort.prereleaseSuffix in manpage
      RelNotes: correct name of versionsort.prereleaseSuffix
      RelNotes: refer to the rebase -i "todo list", not "insn sheet"
      RelNotes: wordsmithing
      status: document the -v/--verbose option
      Update git-multimail to version 1.0.2

Michael J Gruber (1):
      rev-list-options.txt: complete sentence about notes matching


Version v2.4.0-rc3; changes since v2.4.0-rc2:
---------------------------------------------

Alexander Shopov (2):
      git-gui i18n: Updated Bulgarian translation (520t,0f,0u)
      git-gui i18n: Updated Bulgarian translation (547t,0f,0u)

Csaba Kiraly (1):
      git-gui: fix problem with gui.maxfilesdisplayed

David Turner (1):
      git-gui: Make git-gui lib dir configurable at runime

Henri GEIST (1):
      git-gui: Add a 'recursive' checkbox in the clone menu.

Junio C Hamano (6):
      push --signed: tighten what the receiving end can ask to sign
      Revert "merge: pass verbosity flag down to merge-recursive"
      Hopefully the last batch for 2.4
      RelNotes: "merge --quiet" change has been reverted
      Git 2.3.6
      Git 2.4.0-rc3

Kyle J. McKay (1):
      git-gui: reinstate support for Tcl 8.4

Michael Lutz (1):
      git-gui: add configurable tab size to the diff view

Márcio Almada (1):
      completion: fix global bash variable leak on __gitcompappend

Pat Thoyts (3):
      git-gui: align the new recursive checkbox with the radiobuttons.
      git-gui: fix verbose loading when git path contains spaces.
      git-gui: set version 0.20

Patrick Steinhardt (1):
      grep: correctly initialize help-all option

Peter Krefting (1):
      git-gui: sv.po: Update Swedish translation (547t0f0u)

Remi Rampin (2):
      git-gui: Fixes chooser not accepting gitfiles
      git-gui: Makes chooser set 'gitdir' to the resolved path

Sebastian Schuberth (1):
      git-gui/gitk: Do not depend on Cygwin's "kill" command on Windows

Torsten Bögershausen (1):
      connect.c: ignore extra colon after hostname

Trần Ngọc Quân (1):
      L10n: vi.po (543t): Init translation for Vietnamese

Vitor Antunes (3):
      t9814: fix broken shell syntax in git-p4 rename test
      git-p4: fix copy detection test
      t9814: guarantee only one source exists in git-p4 copy tests


Version v2.4.0-rc2; changes since v2.4.0-rc1:
---------------------------------------------

Alex Henrie (2):
      l10n: ca.po: update translation
      l10n: ca.po: update translation

Alexander Shopov (1):
      l10n: Updated Bulgarian translation of git (2305t,0f,0u)

Dimitriy Ryazantcev (3):
      l10n: ru: added Russian translation
      l10n: ru: updated Russian translation
      l10n: ru: updated Russian translation

Ivan Ukhov (1):
      parse-options.h: OPTION_{BIT,SET_INT} do not store pointer to defval

Jean-Noël Avila (2):
      l10n: fr.po v2.4.0-rc0 round 1
      l10n: fr.po v2.4.0 round 2

Jeff King (3):
      cherry-pick: fix docs describing handling of empty commits
      howto: document more tools for recovery corruption
      merge: pass verbosity flag down to merge-recursive

Jiang Xin (5):
      l10n: git.pot: v2.4.0 round 1 (99 new, 92 removed)
      l10n: zh_CN: translations for git v2.4.0-rc0
      l10n: git.pot: v2.4.0 round 2 (1 update)
      l10n: zh_CN: for git v2.4.0 l10n round 2
      l10n: TEAMS: Change repository URL of zh_CN

John Keeping (1):
      streaming.c: fix a memleak

Jonathan Nieder (1):
      fast-import doc: remove suggested 16-parent limit

Julian Gindi (1):
      CodingGuidelines: update 'rough' rule count

Junio C Hamano (2):
      push-to-deploy: allow pushing into an unborn branch and updating it
      Git 2.4.0-rc2

Jérôme Zago (1):
      gitweb.conf.txt: say "build-time", not "built-time"

Kyle J. McKay (1):
      diff-highlight: do not split multibyte characters

Matthias Rüster (1):
      l10n: de.po: translate 'symbolic link' as 'symbolische Verknüpfung'

Michael J Gruber (1):
      l10n: de.po: fix negation for commit -a with paths

Paul Tan (1):
      enter_repo(): fix docs to match code

Peter Krefting (2):
      l10n: sv.po: Update Swedish translation (2305t0f0u)
      l10n: sv.po: Update Swedish translation (2305t0f0u)

Phillip Sz (1):
      l10n: de.po: add space before ellipsis

Ralf Thielow (3):
      l10n: de.po: fix messages with abbreviated hashs
      l10n: de.po: translate 99 new messages
      l10n: de.po: translate one message

Stefan Beller (1):
      wt-status.c: fix a memleak

Trần Ngọc Quân (2):
      l10n: vi.po: Updated Vietnamese translation
      l10n: vi.po(2305t): Updated 1 new string


Version v2.4.0-rc1; changes since v2.4.0-rc0:
---------------------------------------------

Junio C Hamano (6):
      add_to_index(): free unused cache-entry
      Update mailmap to spell out "Alexander Kuleshov"
      Prepare for 2.3.5
      RelNotes: minor doc updates
      Git 2.3.5
      Git 2.4.0-rc1

Phil Hord (1):
      git-push.txt: clean up force-with-lease wording

Ralf Thielow (1):
      send-pack: unify error messages for unsupported capabilities

Sebastian Schuberth (2):
      docs: clarify "preserve" option wording for git-pull
      docs: clarify what git-rebase's "-p" / "--preserve-merges" does

Stefan Beller (9):
      read-cache: free cache entry in add_to_index in case of early return
      update-index: fix a memleak
      builtin/apply.c: fix a memleak
      merge-blobs.c: fix a memleak
      merge-recursive: fix memleaks
      http-push: remove unneeded cleanup
      commit.c: fix a memory leak
      read-cache: fix memleak
      http: release the memory of a http pack request as well

Thomas Ackermann (2):
      api-error-handling doc: typofix
      2.3.2 release notes: typofix


Version v2.4.0-rc0; changes since v2.3.10:
------------------------------------------

Alex Henrie (3):
      standardize usage info string format
      gitk: Remove tcl-format flag from a message that shouldn't have it
      gitk: l10n: Add Catalan translation

Alexander Kuleshov (3):
      pack-bitmap: fix typo
      t/lib-terminal.sh: fix typo
      gitk: Fix typo in Russian translation

Chris Packham (1):
      gitk: Default wrcomcmd to use --pretty=email

Christoph Junghans (2):
      log: teach --invert-grep option
      gitk: Pass --invert-grep option down to "git log"

Dave Olszewski (1):
      push: allow --follow-tags to be set by config push.followTags

Dongcan Jiang (1):
      revision: forbid combining --graph and --no-walk

Eric Wong (1):
      git-svn: lazy load some modules

Gabriele Mazzotta (1):
      gitk: Enable mouse horizontal scrolling in diff pane

Jean-Noël Avila (1):
      Add hint interactive cleaning

Jeff King (50):
      strbuf.h: integrate api-strbuf.txt documentation
      strbuf.h: drop asciidoc list formatting from API docs
      strbuf.h: format asciidoc code blocks as 4-space indent
      strbuf.h: reorganize api function grouping headers
      strbuf.h: drop boilerplate descriptions of strbuf_split_*
      strbuf.h: group documentation for trim functions
      git_push_config: drop cargo-culted wt_status pointer
      cmd_push: set "atomic" bit directly
      cmd_push: pass "flags" pointer to config callback
      gettext.c: move get_preferred_languages() from http.c
      t/test-lib: introduce --chain-lint option
      t: fix severe &&-chain breakage
      t: fix moderate &&-chain breakage
      t: fix trivial &&-chain breakage
      t: assume test_cmp produces verbose output
      t: use verbose instead of hand-rolled errors
      t: use test_must_fail instead of hand-rolled blocks
      t: fix &&-chaining issues around setup which might fail
      t: use test_might_fail for diff and grep
      t: use test_expect_code instead of hand-rolled comparison
      t: wrap complicated expect_code users in a block
      t: avoid using ":" for comments
      t3600: fix &&-chain breakage for setup commands
      t7201: fix &&-chain breakage
      t9502: fix &&-chain breakage
      t6030: use modern test_* helpers
      t0020: use modern test_* helpers
      t1301: use modern test_* helpers
      t6034: use modern test_* helpers
      t4117: use modern test_* helpers
      t9001: use test_when_finished
      t0050: appease --chain-lint
      t7004: fix embedded single-quotes
      t0005: fix broken &&-chains
      t4104: drop hand-rolled error reporting
      wt-status: don't flush before running "submodule status"
      wt_status: fix signedness mismatch in strbuf_read call
      run-command: introduce capture_command helper
      wt-status: use capture_command
      submodule: use capture_command
      trailer: use capture_command
      run-command: forbid using run_command with piped output
      perf-lib: fix ignored exit code inside loop
      t0020: fix ignored exit code inside loops
      t3305: fix ignored exit code inside loop
      t7701: fix ignored exit code inside loop
      t: fix some trivial cases of ignored exit codes in loops
      t: simplify loop exit-code status variables
      t0020: use test_* helpers instead of hand-rolled messages
      t9001: drop save_confirm helper

Jonathan Nieder (1):
      doc: document error handling functions and conventions

Junio C Hamano (33):
      receive-pack: refactor updateInstead codepath
      receive-pack: support push-to-checkout hook
      http.c: make finish_active_slot() and handle_curl_result() static
      prompt.c: remove git_getpass() nobody uses
      pack-bitmap.c: make pack_bitmap_filename() static
      line-log.c: make line_log_data_init() static
      revision.c: make save_parents() and free_saved_parents() static
      urlmatch.c: make match_urls() static
      remote.c: make clear_cas_option() static
      shallow.c: make check_shallow_file_for_update() static
      CodingGuidelines: clarify C #include rules
      "log --pretty" documentation: do not forget "tformat:"
      apply: detect and mark whitespace errors in context lines when fixing
      t4122: use test_write_lines from test-lib-functions
      run_diff_files(): clarify computation of sha1 validity
      Post 2.3 cycle (batch #1)
      xread/xwrite: clip MAX_IO_SIZE to SSIZE_MAX
      send-email: ask confirmation if given encoding name is very short
      Post 2.3 cycle (batch #2)
      Post 2.3 cycle (batch #3)
      Post 2.3 cycle (batch #4)
      Post 2.3 cyle (batch #5)
      Post 2.3 cycle (batch #6)
      Post 2.3 cycle (batch #7)
      t7508: .gitignore 'expect' and 'output' files
      Post 2.3 cycle (batch #8)
      Post 2.3 cycle (batch #9)
      log: decorate HEAD with branch name
      Post 2.3 cyce (batch #10)
      Post 2.3 cycle (batch #11)
      Post 2.3 cycle (batch #12)
      Getting ready for -rc0
      Git 2.4.0-rc0

Kevin Daudt (1):
      rev-list: refuse --first-parent combined with --bisect

Kyle J. McKay (8):
      gettext.h: add parentheses around N_ expansion if supported
      git-instaweb: allow running in a working tree subdirectory
      git-instaweb: use @SHELL_PATH@ instead of /bin/sh
      git-compat-util.h: move SHELL_PATH default into header
      help.c: use SHELL_PATH instead of hard-coded "/bin/sh"
      configure: support HAVE_BSD_SYSCTL option
      thread-utils.c: detect CPU count on older BSD-like systems
      t5528: do not fail with FreeBSD shell

Luke Diamand (2):
      git-p4: correct --prepare-p4-only instructions
      git-p4: support excluding paths on sync

Max Kirillov (3):
      gitk: Only write changed configuration variables
      gitk: Report errors in saving config file
      gitk: Synchronize config file writes

Michael Haggerty (37):
      expire_reflog(): it's not an each_ref_fn anymore
      expire_reflog(): rename "ref" parameter to "refname"
      expire_reflog(): return early if the reference has no reflog
      expire_reflog(): use a lock_file for rewriting the reflog file
      Extract function should_expire_reflog_ent()
      expire_reflog(): extract two policy-related functions
      expire_reflog(): add a "flags" argument
      expire_reflog(): move dry_run to flags argument
      expire_reflog(): move updateref to flags argument
      Rename expire_reflog_cb to expire_reflog_policy_cb
      struct expire_reflog_cb: a new callback data type
      expire_reflog(): pass flags through to expire_reflog_ent()
      expire_reflog(): move verbose to flags argument
      expire_reflog(): move rewrite to flags argument
      Move newlog and last_kept_sha1 to "struct expire_reflog_cb"
      expire_reflog(): treat the policy callback data as opaque
      reflog_expire(): new function in the reference API
      lock_any_ref_for_update(): inline function
      refs: move REF_DELETING to refs.c
      refs: remove the gap in the REF_* constant values
      refs.c: change some "flags" to "unsigned int"
      struct ref_update: move "have_old" into "flags"
      ref_transaction_update(): remove "have_old" parameter
      ref_transaction_delete(): remove "have_old" parameter
      commit: add tests of commit races
      commit: avoid race when creating orphan commits
      ref_transaction_create(): check that new_sha1 is valid
      ref_transaction_delete(): check that old_sha1 is not null_sha1
      ref_transaction_verify(): new function to check a reference's value
      update_ref(): improve documentation
      refs.h: remove duplication in function docstrings
      write_ref_sha1(): remove check for lock == NULL
      write_ref_sha1(): move write elision test to callers
      lock_ref_sha1_basic(): do not set force_write for missing references
      reflog: improve and update documentation
      reflog_expire(): ignore --updateref for symbolic references
      reflog_expire(): never update a reference to null_sha1

Michael J Gruber (7):
      t7508: test git status -v
      commit/status: show the index-worktree diff with -v -v
      sequencer: preserve commit messages
      wt-status: refactor detached HEAD analysis
      branch: name detached HEAD analogous to status
      t9104: fix test for following larger parents
      t9158, t9161: fix broken &&-chain in git-svn tests

Mike Hommey (2):
      transport-helper: ask the helper to set progress and verbosity options after asking for its capabilities
      transport-helper: ask the helper to set the same options for import as for fetch

Nguyễn Thái Ngọc Duy (6):
      attr.c: rename arg name attr_nr to avoid shadowing the global one
      attr: do not attempt to expand when we know it's not a macro
      attr: avoid heavy work when we know the specified attr is not defined
      versionsort: support reorder prerelease suffixes
      config.txt: update versioncmp.prereleaseSuffix
      *config.txt: stick to camelCase naming convention

Paul Mackerras (1):
      gitk: Update .po files

René Scharfe (3):
      archive-zip: mark text files in archives
      daemon: use strbuf for hostname info
      daemon: deglobalize hostname information

Ronnie Sahlberg (7):
      refs.c: make ref_transaction_create a wrapper for ref_transaction_update
      refs.c: make ref_transaction_delete a wrapper for ref_transaction_update
      refs.c: add a function to append a reflog entry to a fd
      refs.c: remove unlock_ref/close_ref/commit_ref from the refs api
      receive-pack.c: negotiate atomic push support
      send-pack.c: add --atomic command line argument
      push.c: add an --atomic argument

Sebastian Schuberth (1):
      check-builtins: strip executable suffix $X when enumerating builtins

Stefan Beller (15):
      refs.c: don't expose the internal struct ref_lock in the header file
      refs.c: let fprintf handle the formatting
      receive-pack.c: shorten the execute_commands loop over all commands
      receive-pack.c: die instead of error in case of possible future bug
      receive-pack.c: move iterating over all commands outside execute_commands
      receive-pack.c: move transaction handling in a central place
      receive-pack.c: add execute_commands_atomic function
      send-pack: rename ref_update_to_be_sent to check_to_send_update
      t5543-atomic-push.sh: add basic tests for atomic pushes
      Document receive.advertiseatomic
      strbuf.h: unify documentation comments beginnings
      struct ref_lock: delete the force_write member
      connect.c: do not leak "conn" after showing diagnosis
      bundle.c: fix memory leak
      builtin/help.c: fix memory leak

Tom G. Christensen (1):
      http: support curl < 7.10.7

Torsten Bögershausen (1):
      t6039: fix broken && chain

Yi EungJun (1):
      http: add Accept-Language header if possible


Version v2.3.10; changes since v2.3.9:
--------------------------------------

Blake Burkhart (2):
      http: limit redirection to protocol-whitelist
      http: limit redirection depth

Jeff King (6):
      transport: add a protocol-whitelist environment variable
      submodule: allow only certain protocols for submodule fetches
      transport: refactor protocol whitelist code
      react to errors in xdi_diff
      xdiff: reject files larger than ~1GB
      merge-file: enforce MAX_XDIFF_SIZE on incoming files

Junio C Hamano (1):
      Git 2.3.10


Version v2.3.9; changes since v2.3.8:
-------------------------------------

Jeff King (4):
      verify_absent: allow filenames longer than PATH_MAX
      notes: use a strbuf in add_non_note
      read_info_alternates: handle paths larger than PATH_MAX
      show-branch: use a strbuf for reflog descriptions

Junio C Hamano (2):
      Git 2.2.3
      Git 2.3.9


Version v2.3.8; changes since v2.3.7:
-------------------------------------

Junio C Hamano (5):
      diff-no-index: DWIM "diff D F" into "diff D/F F"
      diff-no-index: align D/F handling with that of normal Git
      parse_date_basic(): return early when given a bogus timestamp
      parse_date_basic(): let the system handle DST conversion
      Git 2.3.8

Matthieu Moy (2):
      Documentation: change -L:<regex> to -L:<funcname>
      log -L: improve error message on malformed argument

Ossi Herrala (1):
      config: fix settings in default_user_config template


Version v2.3.7; changes since v2.3.6:
-------------------------------------

Junio C Hamano (2):
      push --signed: tighten what the receiving end can ask to sign
      Git 2.3.7

Márcio Almada (1):
      completion: fix global bash variable leak on __gitcompappend

Torsten Bögershausen (1):
      connect.c: ignore extra colon after hostname


Version v2.3.6; changes since v2.3.5:
-------------------------------------

Ivan Ukhov (1):
      parse-options.h: OPTION_{BIT,SET_INT} do not store pointer to defval

Jeff King (7):
      t: translate SIGINT to an exit
      t: redirect stderr GIT_TRACE to descriptor 4
      t: pass GIT_TRACE through Apache
      t5541: move run_with_cmdline_limit to test-lib.sh
      t5551: make EXPENSIVE test cheaper
      cherry-pick: fix docs describing handling of empty commits
      howto: document more tools for recovery corruption

Jonathan Nieder (1):
      fast-import doc: remove suggested 16-parent limit

Julian Gindi (1):
      CodingGuidelines: update 'rough' rule count

Junio C Hamano (1):
      Git 2.3.6

Jérôme Zago (1):
      gitweb.conf.txt: say "build-time", not "built-time"

Kyle J. McKay (1):
      diff-highlight: do not split multibyte characters

Paul Tan (1):
      enter_repo(): fix docs to match code


Version v2.3.5; changes since v2.3.4:
-------------------------------------

Cody A Taylor (1):
      git prompt: use toplevel to find untracked files

Jeff King (15):
      tag: fix some mis-organized options in "-h" listing
      upload-pack: fix transfer.hiderefs over smart-http
      upload-pack: do not check NULL return of lookup_unknown_object
      sha1fd_check: die when we cannot open the file
      clone: initialize atexit cleanup handler earlier
      clone: drop period from end of die_errno message
      filter_ref: avoid overwriting ref->old_sha1 with garbage
      filter_ref: make a copy of extra "sought" entries
      fetch_refs_via_pack: free extra copy of refs
      fetch-pack: remove dead assignment to ref->new_sha1
      t5312: test object deletion code paths in a corrupted repository
      refs: introduce a "ref paranoia" flag
      prune: turn on ref_paranoia flag
      repack: turn on "ref paranoia" when doing a destructive repack
      refs.c: drop curate_packed_refs

John Szakmeister (1):
      contrib/completion: escape the forward slash in __git_match_ctag

Junio C Hamano (5):
      SubmittingPatches: encourage users to use format-patch and send-email
      report_path_error(): move to dir.c
      Update mailmap to spell out "Alexander Kuleshov"
      Prepare for 2.3.5
      Git 2.3.5

Nguyễn Thái Ngọc Duy (1):
      git.txt: list index versions in plain English

Phil Hord (1):
      git-push.txt: clean up force-with-lease wording

SZEDER Gábor (1):
      completion: use __gitcomp_nl() for completing refs

Sebastian Schuberth (2):
      docs: clarify "preserve" option wording for git-pull
      docs: clarify what git-rebase's "-p" / "--preserve-merges" does

Thomas Ackermann (1):
      2.3.2 release notes: typofix

Thomas Gummerer (2):
      t1700: make test pass with index-v4
      read-cache: fix reading of split index

Wilhelm Schuermann (1):
      grep: fix "--quiet" overwriting current output


Version v2.3.4; changes since v2.3.3:
-------------------------------------

Alexander Kuleshov (1):
      git: make was_alias and done_help non-static

Eric Sunshine (2):
      rebase-interactive: suppress whitespace preceding item count
      rebase-interactive: re-word "item count" comment

Junio C Hamano (8):
      Documentation/config.txt: avoid unnecessary negation
      Documentation/config.txt: explain multi-valued variables once
      Documentation/config.txt: describe the structure first and then meaning
      Documentation/config.txt: have a separate "Values" section
      Documentation/config.txt: describe 'color' value type in the "Values" section
      Documentation/config.txt: simplify boolean description in the syntax section
      log --decorate: do not leak "commit" color into the next item
      Git 2.3.4

Karthik Nayak (1):
      git: treat "git -C '<path>'" as a no-op when <path> is empty

Kyle J. McKay (2):
      imap-send: use cURL automatically when NO_OPENSSL defined
      t7510: do not fail when gpg warns about insecure memory

Michael J Gruber (1):
      config,completion: add color.status.unmerged

René Scharfe (2):
      zlib: initialize git_zstream in git_deflate_init{,_gzip,_raw}
      use isxdigit() for checking if a character is a hexadecimal digit

SZEDER Gábor (2):
      completion: add a test for __git_remotes() helper function
      completion: simplify __git_remotes()

Torsten Bögershausen (3):
      connect.c: allow ssh://user@[2001:db8::1]/repo.git
      t5601: add more test cases for IPV6
      t5500: show user name and host in diag-url


Version v2.3.3; changes since v2.3.2:
-------------------------------------

Anders Kaseorg (1):
      t5516: correct misspelled pushInsteadOf

Ben Walton (1):
      kwset: use unsigned char to store values with high-bit set

Jeff King (5):
      git_connect: let user override virtual-host we send to daemon
      t5570: test git-daemon's --interpolated-path option
      daemon: sanitize incoming virtual hostname
      diffcore-rename: split locate_rename_dst into two functions
      diffcore-rename: avoid processing duplicate destinations

Johannes Sixt (1):
      test_ln_s_add: refresh stat info of fake symbolic links

Junio C Hamano (11):
      apply: reject input that touches outside the working area
      apply: do not read from the filesystem under --index
      apply: do not read from beyond a symbolic link
      apply: do not touch a file beyond a symbolic link
      t4008: correct stale comments
      t9300: correct expected object names
      t4010: correct expected object names
      tests: do not borrow from COPYING and README from the real source
      t/diff-lib: check exact object names in compare_diff_raw
      t4008: modernise style
      Git 2.3.3

Michael J Gruber (1):
      git-remote.txt: describe behavior without --tags and --no-tags

Michal Sojka (1):
      submodule: improve documentation of update subcommand

Mikko Rapeli (1):
      Documentation/git-clean.txt: document that -f may need to be given twice

Mårten Kongstad (1):
      diff --shortstat --dirstat: remove duplicate output

Nguyễn Thái Ngọc Duy (1):
      grep: correct help string for --exclude-standard

René Scharfe (2):
      daemon: look up client-supplied hostname lazily
      daemon: use callback to build interpolated path


Version v2.3.2; changes since v2.3.1:
-------------------------------------

Aleksander Boruch-Gruszecki (1):
      merge-file: correctly open files when in a subdir

Aleksey Vasenev (1):
      wincred: fix get credential if username has "@"

Alexander Kuleshov (1):
      Git.pm: two minor typo fixes

Eric Sunshine (1):
      builtin/blame: destroy initialized commit_info only

Jeff King (8):
      t/lib-httpd: switch SANITY check for NOT_ROOT
      t/lib-gpg: include separate public keys in keyring.gpg
      t/lib-gpg: sanity-check that we can actually sign
      config: do not ungetc EOF
      decimal_width: avoid integer overflow
      config_buf_ungetc: warn when pushing back a random character
      for_each_loose_file_in_objdir: take an optional strbuf path
      fast-import: avoid running end_packfile recursively

Jonathon Mah (1):
      sha1_file: fix iterating loose alternate objects

Junio C Hamano (7):
      tests: correct misuses of POSIXPERM
      config.txt: clarify that add.ignore-errors is deprecated
      config.txt: mark deprecated variables more prominently
      Documentation/git-remote.txt: stress that set-url is not for triangular
      CodingGuidelines: describe naming rules for configuration variables
      Prepare for 2.3.2
      Git 2.3.2

Kirill A. Shutemov (1):
      rebase -i: use full object name internally throughout the script

Kyle J. McKay (3):
      git-compat-util: do not step on MAC_OS_X_VERSION_MIN_REQUIRED
      git-send-email.perl: support no- prefix with older GetOptions
      Git::SVN::*: avoid premature FileHandle closure

Matthieu Moy (2):
      Documentation/config.txt: document mailinfo.scissors
      Documentation/git-am.txt: mention mailinfo.scissors config variable

Mike Hommey (2):
      transport-helper: do not request symbolic refs to remote helpers
      transport-helper: fix typo in error message when --signed is not supported

Patrick Steinhardt (1):
      git-submodule.sh: fix '/././' path normalization

Ramsay Jones (1):
      git-compat-util.h: remove redundant code

René Scharfe (4):
      connect: use strcmp() for string comparison
      for-each-ref: use skip_prefix() to avoid duplicate string comparison
      pretty: use starts_with() to check for a prefix
      sha1_name: use strlcpy() to copy strings

Ryuichi Kokubo (1):
      git-svn: fix localtime=true on non-glibc environments

Stefan Beller (2):
      hex.c: reduce memory footprint of sha1_to_hex static buffers
      read-cache.c: free cache entry when refreshing fails

Tom G. Christensen (2):
      Makefile: handle broken curl version number in version check
      ewah: fix building with gcc < 3.4.0

Torsten Bögershausen (1):
      test-lib.sh: set prerequisite SANITY by testing what we really need

Дилян Палаузов (1):
      do not include the same header twice


Version v2.3.1; changes since v2.3.0:
-------------------------------------

Alexander Kuleshov (1):
      add -i: return from list_and_choose if there is no candidate

Doug Kelly (2):
      t4255: test am submodule with diff.submodule
      format-patch: ignore diff.submodule setting

Jeff King (7):
      git-compat-util: add xstrdup_or_null helper
      builtin/apply.c: use xstrdup_or_null instead of null_strdup
      builtin/commit.c: use xstrdup_or_null instead of envdup
      use xstrdup_or_null to replace ternary conditionals
      dumb-http: do not pass NULL path to parse_pack_index
      read_and_strip_branch: fix typo'd address-of operator
      do not check truth value of flex arrays

Jonathan Nieder (1):
      rerere: error out on autoupdate failure

Junio C Hamano (6):
      apply.c: typofix
      apply: make update_pre_post_images() sanity check the given postlen
      apply: count the size of postimage correctly
      Documentation: what does "git log --indexed-objects" even mean?
      diff-format doc: a score can follow M for rewrite
      Git 2.3.1

Lukas Fleischer (1):
      blame.c: fix garbled error message

Michael J Gruber (2):
      commit: reword --author error message
      git-push.txt: document the behavior of --repo

brian m. carlson (1):
      remote-curl: fall back to Basic auth if Negotiate fails


Version v2.3.0; changes since v2.3.0-rc2:
-----------------------------------------

Alex Henrie (1):
      l10n: ca.po: Fix trailing whitespace

Junio C Hamano (1):
      Git 2.3


Version v2.3.0-rc2; changes since v2.3.0-rc1:
---------------------------------------------

Alex Henrie (1):
      l10n: ca.po: update translation

Alexander Kuleshov (1):
      cat-file: use "type" and "size" from outer scope

Benedikt Heine (1):
      l10n: de.po: fix typo

Jean-Noël Avila (2):
      l10n: fr.po v2.3.0 round 1
      l10n: fr.po v2.3.0 round 2

Jiang Xin (5):
      l10n: git.pot: v2.3.0 round 1 (13 new, 11 removed)
      l10n: zh_CN: translations for git v2.3.0-rc0
      l10n: git.pot: v2.3.0 round 2 (3 updated)
      l10n: zh_CN: various fixes on command arguments
      l10n: correct indentation of show-branch usage

Joan Perals (1):
      l10n: ca.po: various fixes

Johannes Sixt (1):
      t1050-large: generate large files without dd

Junio C Hamano (1):
      Git 2.3.0-rc2

Kacper Kornet (1):
      Fix unclosed here document in t3301.sh

Michael J Gruber (2):
      l10n: de.po: translate "leave behind" correctly
      l10n: de.po: correct singular form

Peter Krefting (2):
      l10n: sv.po: Update Swedish translation (2298t0f0u)
      l10n: sv.po: Update Swedish translation (2298t0f0u)

Ralf Thielow (4):
      l10n: de.po: translate "track" as "versionieren"
      l10n: de.po: fix typo
      l10n: de.po: translate 13 new messages
      l10n: de.po: translate 3 messages

Sven van Haastregt (1):
      Documentation: fix version numbering

Trần Ngọc Quân (2):
      l10n: vi.po(2298t): Updated and change Plural-Forms
      l10n: vi.po(2298t): Updated 3 new strings


Version v2.3.0-rc1; changes since v2.3.0-rc0:
---------------------------------------------

Adam Williamson (1):
      correct smtp-ssl-cert-path description

Alexander Kuleshov (4):
      show-branch: line-wrap show-branch usage
      git.c: remove unnecessary #includes
      cat-file: remove unused includes
      Documentation: list long options for -v and -n

Jeff King (4):
      t1301: set umask in reflog sharedrepository=group test
      update-server-info: create info/* with mode 0666
      http-push: trim trailing newline from remote symref
      parse_color: fix return value for numeric color values 0-8

Jess Austin (1):
      git-prompt.sh: allow to hide prompt for ignored pwd

Johannes Schindelin (2):
      git remote: allow adding remotes agreeing with url.<...>.insteadOf
      Add a regression test for 'git remote add <existing> <same-url>'

Junio C Hamano (2):
      Fifth batch for 2.3 cycle
      Git 2.3.0-rc1

Kyle J. McKay (3):
      log.c: fix translation markings
      imap-send.c: support GIT_CURL_VERBOSE
      imap-send.c: set CURLOPT_USE_SSL to CURLUSESSL_TRY

Matthieu Moy (1):
      git-completion: add --autostash for 'git rebase'

Philip Oakley (2):
      doc: core.ignoreStat clarify the --assume-unchanged effect
      doc: core.ignoreStat update, and clarify the --assume-unchanged effect

Ralf Thielow (1):
      show-branch: fix indentation of usage string

Ramkumar Ramachandra (2):
      Git::SVN: handle missing ref_id case correctly
      git-svn: make it play nicely with submodules

Raphael Kubo da Costa (1):
      for-each-ref: always check stat_tracking_info()'s return value

Reuben Hawkins (3):
      configure.ac: check 'tv_nsec' field in 'struct stat'
      configure.ac: check for clock_gettime and CLOCK_MONOTONIC
      configure.ac: check for HMAC_CTX_cleanup

Richard Hansen (3):
      git-prompt.sh: if pc mode, immediately set PS1 to a plain prompt
      test-lib: use 'test ...' instead of '[ ... ]'
      test-lib.sh: do tests for color support after changing HOME

Steffen Prohaska (1):
      subtree: fix AsciiDoc list item continuation

Tony Finch (1):
      git-prompt: preserve value of $? in all cases


Version v2.3.0-rc0; changes since v2.2.3:
-----------------------------------------

Alfred Perlstein (1):
      git-svn: support for git-svn propset

Beat Bolli (5):
      update_unicode.sh: simplify output capture
      update_unicode.sh: set UNICODE_DIR only once
      update_unicode.sh: shorten uniset invocation path
      update_unicode.sh: make the output structure visible
      update_unicode.sh: delete the command group

Ben Walton (1):
      t0090: tweak awk statement for Solaris /usr/xpg4/bin/awk

Bernhard Reiter (2):
      imap-send: use parse options API to determine verbosity
      git-imap-send: use libcurl for implementation

Christian Couder (5):
      commit: make ignore_non_trailer() non static
      trailer: reuse ignore_non_trailer() to ignore conflict lines
      trailer: add test with an old style conflict block
      bisect: parse revs before passing them to check_expected_revs()
      bisect: add test to check that revs are properly parsed

Christian Hesse (4):
      tests: create gpg homedir on the fly
      tests: skip RFC1991 tests for gnupg 2.1
      tests: replace binary GPG keyrings with ASCII-armored keys
      tests: make comment on GPG keyring match the code

Dan Wyand (1):
      git-sh-setup.sh: use dashdash with basename call

David Aguilar (4):
      mergetool--lib: remove use of $status global
      difftool--helper: add explicit exit statement
      mergetool: simplify conditionals
      mergetools: stop setting $status in merge_cmd()

David Michael (1):
      compat: convert modes to use portable file type values

Eric Sunshine (7):
      git-compat-util: suppress unavoidable Apple-specific deprecation warnings
      t2004: modernize style
      t2004: drop unnecessary write-tree/read-tree
      t2004: standardize file naming in symlink test
      t2004: demonstrate broken relative path printing
      checkout-index: fix --temp relative path mangling
      SubmittingPatches: explain rationale for using --notes with format-patch

Jeff King (13):
      parse_color: refactor color storage
      parse_color: support 24-bit RGB values
      parse_color: recognize "no$foo" to clear the $foo attribute
      diff-highlight: allow configurable colors
      credential: let helpers tell us to quit
      prompt: respect GIT_TERMINAL_PROMPT to disable terminal prompts
      fsck: properly bound "invalid tag name" error message
      parse_color: drop COLOR_BACKGROUND macro
      pkt-line: allow writing of LARGE_PACKET_MAX buffers
      t: support clang/gcc AddressSanitizer
      commit: loosen ident checks when generating template
      commit: always populate GIT_AUTHOR_* variables
      add--interactive: leave main loop on read error

Jim Hill (1):
      pre-push.sample: remove unnecessary and misleading IFS=' '

Johan Herland (9):
      builtin/notes: fix premature failure when trying to add the empty blob
      t3301: verify that 'git notes' removes empty notes by default
      builtin/notes: improve naming
      builtin/notes: refactor note file path into struct note_data
      builtin/notes: simplify early exit code in add()
      builtin/notes: split create_note() to clarify add vs. remove logic
      builtin/notes: add --allow-empty, to allow storing empty notes
      notes: empty notes should be shown by 'git log'
      t3301: modernize style

Johannes Schindelin (2):
      receive-pack: add another option for receive.denyCurrentBranch
      test-hashmap: squelch gcc compiler warning

Johannes Sixt (1):
      t5000 on Windows: do not mistake "sh.exe" as "sh"

Junio C Hamano (30):
      checkout: report upstream correctly even with loosely defined branch.*.merge
      clone: --dissociate option to mark that reference is only temporary
      diff -B -M: fix output for "copy and then rewrite" case
      builtin/merge.c: drop a parameter that is never used
      merge & sequencer: unify codepaths that write "Conflicts:" hint
      strbuf_add_commented_lines(): avoid SP-HT sequence in commented lines
      builtin/commit.c: extract ignore_non_trailer() helper function
      merge & sequencer: turn "Conflicts:" hint into a comment
      bisect: clean flags after checking merge bases
      get_merge_bases(): always clean-up object flags
      unpack_trees: plug leakage of o->result
      mergetool--lib: remove no-op assignment to $status from setup_user_tool
      SubmittingPatches: refer to t/README for tests
      t/README: justify why "! grep foo" is sufficient
      t9001: style modernisation phase #1
      t9001: style modernisation phase #2
      t9001: style modernisation phase #3
      t9001: style modernisation phase #4
      t9001: style modernisation phase #5
      system_path(): always return free'able memory to the caller
      t5516: more tests for receive.denyCurrentBranch=updateInstead
      run-command.c: retire unused run_hook_with_custom_index()
      t3102: document that ls-tree does not yet support negated pathspec
      t3102: style modernization
      First batch for 2.3 cycle
      tests: squelch noise from GPG machinery set-up
      Second batch for 2.3 cycle
      Third batch for 2.3 cycle
      Fourth batch for 2.3 cycle
      Git 2.3.0-rc0

Justin Guenther (1):
      git-prompt.sh: make $f local to __git_eread()

Karsten Blees (1):
      pack-bitmap: do not use gcc packed attribute

Luis Henriques (2):
      send-email: add --[no-]xmailer option
      test/send-email: --[no-]xmailer tests

Michael Haggerty (10):
      cmd_config(): make a copy of path obtained from git_path()
      prune_remote(): exit early if there are no stale references
      prune_remote(): initialize both delete_refs lists in a single loop
      prune_remote(): sort delete_refs_list references en masse
      repack_without_refs(): make the refnames argument a string_list
      prune_remote(): rename local variable
      prune_remote(): iterate using for_each_string_list_item()
      sort_string_list(): rename to string_list_sort()
      t1400: add some more tests of "update-ref --stdin"'s verify command
      update-ref: fix "verify" command with missing <oldvalue>

Michael J Gruber (4):
      t3200-branch: test -M
      check-ignore: clarify treatment of tracked files
      gitignore.txt: do not suggest assume-unchanged
      branch: allow -f with -m and -d

Nguyễn Thái Ngọc Duy (6):
      lockfile.c: store absolute path
      tree.c: update read_tree_recursive callback to pass strbuf as base
      ls-tree: remove path filtering logic in show_tree
      ls-tree: disable negative pathspec because it's not supported
      index-pack: terminate object buffers with NUL
      index-format.txt: add a missing closing quote

Onno Kortmann (1):
      Show number of TODO items for interactive rebase

Paolo Bonzini (4):
      git-send-email: delay creation of MIME headers
      git-send-email: add --transfer-encoding option
      git-mailinfo: add --message-id
      git-am: add --message-id/--no-message-id

Paul Smith (1):
      git-new-workdir: don't fail if the target directory is empty

Peter van der Does (1):
      Update documentation occurrences of filename .sh

Philip Oakley (1):
      doc: make clear --assume-unchanged's user contract

Ralf Thielow (3):
      builtin/push.c: fix description of --recurse-submodules option
      for-each-ref: correct spelling of Tcl in option description
      completion: add git-tag options

Ramsay Jones (2):
      git-compat-util.h: don't define _XOPEN_SOURCE on cygwin
      t0050-*.sh: mark the rename (case change) test as passing

René Scharfe (6):
      use args member of struct child_process
      use strbuf_complete_line() for adding a newline if needed
      commit-tree: simplify parsing of option -S using skip_prefix()
      merge: release strbuf after use in suggest_conflicts()
      transport: simplify duplicating a substring in transport_get() using xmemdupz()
      refs: plug strbuf leak in lock_ref_sha1_basic()

Ronnie Sahlberg (1):
      lock_ref_sha1_basic: do not die on locking errors

Slavomir Vlcek (3):
      builtin: move builtin retrieval to get_builtin()
      apply: fix typo in an error message
      Documentation/git-stripspace: add synopsis for --comment-lines

Stefan Beller (5):
      string_list: document string_list_(insert,lookup)
      mailmap: use higher level string list functions
      string_list: remove string_list_insert_at_index() from its API
      t5400: remove dead code
      Documentation/SubmittingPatches: unify whitespace/tabs for the DCO

Thomas Quinot (1):
      git_connect: set ssh shell command in GIT_SSH_COMMAND

Tony Finch (1):
      git-prompt: preserve value of $? inside shell prompt

Torsten Bögershausen (2):
      init-db: improve the filemode trustability check
      t0027: check the eol conversion warnings

brian m. carlson (3):
      Documentation: add missing article in rev-list-options.txt
      rev-list: add an option to mark fewer edges as uninteresting
      pack-objects: use --objects-edge-aggressive for shallow repos

Роман Донченко (2):
      send-email: align RFC 2047 decoding more closely with the spec
      send-email: handle adjacent RFC 2047-encoded words properly


Version v2.2.3; changes since v2.2.2:
-------------------------------------

Jeff King (4):
      verify_absent: allow filenames longer than PATH_MAX
      notes: use a strbuf in add_non_note
      read_info_alternates: handle paths larger than PATH_MAX
      show-branch: use a strbuf for reflog descriptions

Junio C Hamano (1):
      Git 2.2.3


Version v2.2.2; changes since v2.2.1:
-------------------------------------

Alexander Kuleshov (1):
      clean: typofix

Jeff King (17):
      pass TIME_DATE_NOW to approxidate future-check
      checkout $tree: do not throw away unchanged index entries
      approxidate: allow ISO-like dates far in the future
      Makefile: have perl scripts depend on NO_PERL setting
      t0090: mark add-interactive test with PERL prerequisite
      t960[34]: mark cvsimport tests as requiring perl
      gitweb: hack around CGI's list-context param() handling
      docs: describe ANSI 256-color mode
      config: fix parsing of "git config --get-color some.key -1"
      t4026: test "normal" color
      push: truly use "simple" as default, not "upstream"
      for_each_reflog_ent_reverse: fix newlines on block boundaries
      for_each_reflog_ent_reverse: turn leftover check into assertion
      read_packed_refs: use a strbuf for reading lines
      read_packed_refs: pass strbuf to parse_ref_line
      read_packed_refs: use skip_prefix instead of static array
      is_hfs_dotgit: loosen over-eager match of \u{..47}

Johannes Sixt (1):
      Windows: correct detection of EISDIR in mingw_open()

Jonathan Nieder (2):
      Makefile: simplify by using SCRIPT_{PERL,SH}_GEN macros
      Makefile: have python scripts depend on NO_PYTHON setting

Junio C Hamano (2):
      Prepare for 2.2.2
      Git 2.2.2

Michael Haggerty (1):
      create_default_files(): don't set u+x bit on $GIT_DIR/config

Michael J Gruber (1):
      add: ignore only ignored files

Mike Hommey (1):
      sha1_name: avoid unnecessary sha1 lookup in find_unique_abbrev

René Scharfe (2):
      use labs() for variables of type long instead of abs()
      use labs() for variables of type long instead of abs()

Ronald Wampler (1):
      git-am.txt: --ignore-date flag is not passed to git-apply

brian m. carlson (1):
      Documentation: change "gitlink" typo in git-push


Version v2.2.1; changes since v2.2.0:
-------------------------------------

Hartmut Henkel (1):
      l10n: de.po: fix typos

Jeff King (8):
      unpack-trees: propagate errors adding entries to the index
      read-tree: add tests for confusing paths like ".." and ".git"
      verify_dotfile(): reject .git case-insensitively
      t1450: refactor ".", "..", and ".git" fsck tests
      fsck: notice .git case-insensitively
      utf8: add is_hfs_dotgit() helper
      read-cache: optionally disallow HFS+ .git variants
      fsck: complain about HFS+ ".git" aliases in trees

Johannes Schindelin (3):
      path: add is_ntfs_dotgit() helper
      read-cache: optionally disallow NTFS .git variants
      fsck: complain about NTFS ".git" aliases in trees

Junio C Hamano (6):
      Start post 2.2 cycle
      Git 1.8.5.6
      Git 1.9.5
      Git 2.0.5
      Git 2.1.4
      Git 2.2.1


Version v2.2.0; changes since v2.2.0-rc3:
-----------------------------------------

Junio C Hamano (1):
      Git 2.2

Marc Branchaud (1):
      RelNotes: spelling & grammar tweaks


Version v2.2.0-rc3; changes since v2.2.0-rc2:
---------------------------------------------

Alex Henrie (1):
      l10n: Update Catalan translation

Christian Couder (2):
      trailer: ignore comment lines inside the trailers
      trailer: display a trailer without its trailing newline

David Aguilar (1):
      difftool: honor --trust-exit-code for builtin tools

Jiang Xin (3):
      l10n: git.pot: v2.2.0 round 2 (1 updated)
      l10n: batch updates for one trivial change
      l10n: remove a superfluous translation for push.c

Junio C Hamano (2):
      Documentation/git-commit: clarify that --only/--include records the working tree contents
      Git 2.2.0-rc3

Max Horn (1):
      doc: add some crossrefs between manual pages

Ralf Thielow (4):
      l10n: de.po: use imperative form for command options
      l10n: de.po: translate 62 new messages
      l10n: de.po: translate 2 new messages
      l10n: de.po: translate 2 messages

Slavomir Vlcek (1):
      SubmittingPatches: final submission is To: maintainer and CC: list

Stefan Beller (1):
      l10n: de.po: Fixup one translation

Stefan Naewe (1):
      gittutorial: fix output of 'git status'

Thomas Ackermann (1):
      gittutorial.txt: remove reference to ancient Git version

Torsten Bögershausen (1):
      t5705: the file:// URL should be absolute


Version v2.2.0-rc2; changes since v2.2.0-rc1:
---------------------------------------------

Alexander Shopov (1):
      l10n: Updated Bulgarian translation of git (2296t,0f,0u)

Jean-Noël Avila (1):
      l10n: fr.po (2296t) update for version 2.2.0

Jeff King (1):
      t1410: fix breakage on case-insensitive filesystems

Jiang Xin (2):
      l10n: git.pot: v2.2.0 round 1 (62 new, 23 removed)
      l10n: zh_CN: translations for git v2.2.0-rc0

John Szakmeister (1):
      diff-highlight: exit when a pipe is broken

Junio C Hamano (2):
      Update draft release notes to 2.2
      Git 2.2.0-rc2

Nicolas Dermine (1):
      config.txt: fix typo

Peter Krefting (1):
      l10n: sv.po: Update Swedish translation (2296t0f0u)

René Scharfe (2):
      trailer: use CHILD_PROCESS_INIT in apply_command()
      run-command: use void to declare that functions take no parameters

Thomas Quinot (1):
      Documentation/config.txt: fix minor typo

Trần Ngọc Quân (1):
      l10n: vi.po: Update new message strings


Version v2.2.0-rc1; changes since v2.2.0-rc0:
---------------------------------------------

Ben North (1):
      gitignore.txt: fix spelling of "backslash"

Jeff King (5):
      cache-tree: avoid infinite loop on zero-entry tree
      bundle: split out ref writing from bundle_create
      fetch: load all default config at startup
      ignore stale directories when checking reflog existence
      docs/credential-store: s/--store/--file/

Junio C Hamano (3):
      bundle: split out a helper function to create pack data
      bundle: split out a helper function to compute and write prerequisites
      Git 2.2.0-rc1

Matthieu Moy (1):
      RelNotes/2.2.0.txt: fix minor typos

René Scharfe (1):
      use child_process_init() to initialize struct child_process variables

Thomas Ackermann (1):
      Documentation: typofixes

Tzvetan Mikov (1):
      line-log: fix crash when --first-parent is used


Version v2.2.0-rc0; changes since v2.1.4:
-----------------------------------------

Alex Henrie (1):
      grammofix in user-facing messages

Arjun Sreedharan (1):
      calloc() and xcalloc() takes nmemb and then size

Beat Bolli (1):
      pretty: provide a strict ISO 8601 date format

Ben Walton (2):
      t/lib-credential: use write_script
      trace.c: do not mark getnanotime() as "inline"

Bernhard Reiter (3):
      http.c: die if curl_*_init fails
      git-imap-send: simplify tunnel construction
      imap-send.c: imap_folder -> imap_server_conf.folder

Brian Gernhardt (1):
      receive-pack::hmac_sha1(): copy the entire SHA-1 hash out

Brice Lambson (1):
      MinGW: update tests to handle a native eol of crlf

Charles Bailey (2):
      mergetool: don't require a work tree for --tool-help
      difftool: don't assume that default sh is sane

Christian Couder (11):
      trailer: add data structures and basic functions
      trailer: process trailers from input message and arguments
      trailer: read and process config information
      trailer: process command line trailer arguments
      trailer: parse trailers from file or stdin
      trailer: put all the processing together and print
      trailer: add interpret-trailers command
      trailer: add tests for "git interpret-trailers"
      trailer: execute command from 'trailer.<name>.command'
      trailer: add tests for commands in config file
      Documentation: add documentation for 'git interpret-trailers'

David Aguilar (19):
      stylefix: asterisks stick to the variable, not the type
      cleanups: ensure that git-compat-util.h is included first
      Documentation: a note about stdout for git rev-parse --verify --quiet
      t1503: use test_must_be_empty
      refs: make rev-parse --quiet actually quiet
      stash: prefer --quiet over shell redirection of the standard error stream
      completion: add --show-signature for log and show
      t7610-mergetool: use tabs instead of a mix of tabs and spaces
      t7610-mergetool: add missing && and remove commented-out code
      t7610-mergetool: prefer test_config over git config
      test-lib-functions: adjust style to match CodingGuidelines
      mergetool: use more conservative temporary filenames
      git-sh-setup: move GIT_DIR initialization into a function
      t7610-mergetool: use test_config to isolate tests
      test-lib-functions: adjust style to match CodingGuidelines
      mergetool: use more conservative temporary filenames
      mergetool: add an option for writing to a temporary directory
      t7610-mergetool: add test cases for mergetool.writeToTemp
      difftool: add support for --trust-exit-code

David Michael (3):
      git-compat-util.h: support variadic macros with the XL C compiler
      Makefile: reorder linker flags in the git executable rule
      compat/bswap.h: detect endianness from XL C compiler macros

David Turner (4):
      cache-tree: create/update cache-tree on checkout
      test-dump-cache-tree: invalid trees are not errors
      cache-tree: subdirectory tests
      cache-tree: Write updated cache-tree after commit

Eric Wong (15):
      git svn: info: correctly handle absolute path args
      git svn: find-rev allows short switches for near matches
      git-svn: delay term initialization
      git-svn: reduce check_cherry_pick cache overhead
      git-svn: cache only mergeinfo revisions
      git-svn: remove mergeinfo rev caching
      git-svn: reload RA every log-window-size
      git-svn: remove unnecessary DESTROY override
      git-svn: save a little memory as fetch progresses
      git-svn: disable _rev_list memoization
      Git.pm: add specified name to tempfile template
      git-svn: prepare SVN::Ra config pieces once
      git-svn: (cleanup) remove editor param passing
      git-svn: add space after "W:" prefix in warning
      git-svn: use SVN::Ra::get_dir2 when possible

Etienne Buira (2):
      index-pack: fix compilation with NO_PTHREADS
      Handle atexit list internaly for unthreaded builds

Harry Jeffery (1):
      pretty: add %D format specifier

Ian Liu Rodrigues (1):
      Makefile: fix some typos in the preamble

Jaime Soriano Pastor (2):
      read_index_from(): catch out of order entries when reading an index file
      read_index_unmerged(): remove unnecessary loop index adjustment

Jakob Stoklund Olesen (2):
      git-svn: only look at the new parts of svn:mergeinfo
      git-svn: only look at the root path for svn:mergeinfo

Jeff King (54):
      stash: default listing to working-tree diff
      subtree: make "all" default target of Makefile
      http: style fixes for curl_multi_init error check
      Makefile: use `find` to determine static header dependencies
      log-tree: make add_name_decoration a public function
      log-tree: make name_decoration hash static
      Makefile: drop CHECK_HEADER_DEPENDENCIES code
      log-tree: use FLEX_ARRAY in name_decoration
      commit: provide a function to find a header in a buffer
      record_author_date(): fix memory leak on malformed commit
      record_author_date(): use find_commit_header()
      date: use strbufs in date-formatting functions
      teach fast-export an --anonymize option
      docs/fast-export: explain --anonymize more completely
      determine_author_info(): reuse parsing functions
      determine_author_info(): copy getenv output
      refs: write packed_refs file using stdio
      refs: speed up is_refname_available
      prune-packed: fix minor memory leak
      make update-server-info more robust
      server-info: clean up after writing info/packs
      credential-cache: close stderr in daemon process
      branch: clean up commit flags after merge-filter walk
      t5304: use test_path_is_* instead of "test -f"
      t5304: use helper to report failure of "test foo = bar"
      test-lib.sh: support -x option for shell-tracing
      color_parse: do not mention variable name in error message
      foreach_alt_odb: propagate return value from callback
      isxdigit: cast input to unsigned char
      object_array: factor out slopbuf-freeing logic
      object_array: add a "clear" function
      clean up name allocation in prepare_revision_walk
      reachable: use traverse_commit_list instead of custom walk
      reachable: reuse revision.c "add all reflogs" code
      prune: factor out loose-object directory traversal
      reachable: mark index blobs as SEEN
      prune-packed: use for_each_loose_file_in_objdir
      count-objects: do not use xsize_t when counting object size
      count-objects: use for_each_loose_file_in_objdir
      sha1_file: add for_each iterators for loose and packed objects
      prune: keep objects reachable from recent objects
      pack-objects: refactor unpack-unreachable expiration check
      pack-objects: match prune logic for discarding objects
      write_sha1_file: freshen existing objects
      make add_object_array_with_context interface more sane
      traverse_commit_list: support pending blobs/trees with paths
      t5516: test pushing a tag of an otherwise unreferenced blob
      rev-list: document --reflog option
      rev-list: add --indexed-objects option
      reachable: use revision machinery's --indexed-objects code
      pack-objects: use argv_array
      repack: pack objects mentioned by the index
      pack-objects: double-check options before discarding objects
      drop add_object_array_with_mode

Johannes Schindelin (6):
      Refactor type_from_string() to allow continuing after detecting an error
      fsck_object(): allow passing object data separately from the object itself
      Make sure fsck_commit_buffer() does not run out of the buffer
      fsck: check tag objects' headers
      Add regression tests for stricter tag fsck'ing
      Make sure that index-pack --strict checks tag objects

Johannes Sixt (3):
      t9300: use test_cmp_bin instead of test_cmp to compare binary files
      mingw.h: add dummy functions for sigset_t operations
      difftool--helper: exit when reading a prompt answer fails

John Szakmeister (1):
      completion: silence "fatal: Not a git repository" error

Jonas 'Sortie' Termansen (3):
      git-compat-util.h: add missing semicolon after struct itimerval
      autoconf: check for struct itimerval
      autoconf: check for setitimer()

Jonathan Nieder (10):
      i18n: treat "make pot" as an explicitly-invoked target
      update-ref --stdin: narrow scope of err strbuf
      update-ref --stdin: pass transaction around explicitly
      pass config slots as pointers instead of offsets
      mv test: recreate mod/ directory instead of relying on stale copy
      branch -d: avoid repeated symref resolution
      packed-ref cache: forbid dot-components in refnames
      refs.c: do not permit err == NULL
      lockfile: remove unable_to_lock_error
      ref_transaction_commit: bail out on failure to remove a ref

Junio C Hamano (55):
      tests: drop GIT_*_TIMING_TESTS environment variable support
      lockfile: allow reopening a closed but still locked file
      test prerequisites: eradicate NOT_FOO
      test prerequisites: enumerate with commas
      config.mak.uname: add hint on uname_R for MacOS X
      Start the post-2.1 cycle
      cache-tree: do not try to use an invalidated subtree info to build a tree
      parse-options: detect attempt to add a duplicate short option name
      Update draft release notes to 2.2
      Update draft release notes to 2.2
      hash-object: reduce file-scope statics
      hash-object: pass 'write_object' as a flag
      hash-object: add --literally option
      t1450: make sure fsck detects a malformed tagger line
      receive-pack: do not overallocate command structure
      receive-pack: parse feature request a bit earlier
      receive-pack: do not reuse old_sha1[] for other things
      receive-pack: factor out queueing of command
      send-pack: move REF_STATUS_REJECT_NODELETE logic a bit higher
      send-pack: refactor decision to send update per ref
      send-pack: always send capabilities
      send-pack: factor out capability string generation
      receive-pack: factor out capability string generation
      send-pack: rename "new_refs" to "need_pack_data"
      send-pack: refactor inspecting and resetting status and sending commands
      send-pack: clarify that cmds_sent is a boolean
      gpg-interface: move parse_gpg_output() to where it should be
      gpg-interface: move parse_signature() to where it should be
      pack-protocol doc: typofix for PKT-LINE
      push: the beginning of "git push --signed"
      receive-pack: GPG-validate push certificates
      send-pack: send feature request on push-cert packet
      signed push: remove duplicated protocol info
      signed push: add "pushee" header to push certificate
      receive-pack: allow hooks to ignore its standard input stream
      signed push: fortify against replay attacks
      signed push: teach smart-HTTP to pass "git push --signed" around
      signed push: allow stale nonce in stateless mode
      Update draft release notes to 2.2
      t7004: give the test a bit more stack space
      Update draft release notes to 2.2
      Update draft release notes to 2.2
      Update draft release notes to 2.2
      completion: use "git -C $there" instead of (cd $there && git ...)
      pack-objects: set number of threads before checking and warning
      t1308: fix broken here document in test script
      Update draft release notes to 2.2
      reflog test: test interaction with detached HEAD
      Revert "archive: honor tar.umask even for pax headers"
      Update draft release notes to 2.2
      mergetool: rename bc3 to bc
      Update draft release notes to 2.2
      Update draft release notes to 2.2
      Update draft release notes to 2.2
      Git 2.2.0-rc0

Kyle J. McKay (1):
      config.mak.uname: set NO_APPLE_COMMON_CRYPTO on older systems

Lawrence Velázquez (1):
      git-svn.txt: Remove mentions of repack options

Linus Arver (7):
      Documentation: git-init: typographical fixes
      Documentation: git-init: list items facelift
      Documentation: git-init: template directory: reword
      Documentation: git-init: --separate-git-dir: clarify
      Documentation: git-init: reword parenthetical statements
      Documentation: git-init: template directory: reword and cross-reference
      Documentation: git-init: flesh out example

Matthias Rüster (2):
      rerere.h: mark string for translation
      builtin/log.c: mark strings for translation

Matthieu Moy (7):
      config --global --edit: create a template file if needed
      home_config_paths(): let the caller ignore xdg path
      commit: advertise config --global --edit on guessed identity
      config.c: mark error and warnings strings for translation
      config.c: fix accuracy of line number in errors
      builtin/log.c: fix minor memory leak
      merge, pull: stop advising 'commit -a' in case of conflict

Max Kirillov (2):
      gitk: Show detached HEAD if --all is specified
      gitk: Remove boilerplate for configuration variables

Maxim Bublis (1):
      contrib/svn-fe: fix Makefile

Michael Haggerty (41):
      unable_to_lock_die(): rename function from unable_to_lock_index_die()
      api-lockfile: revise and expand the documentation
      close_lock_file(): exit (successfully) if file is already closed
      rollback_lock_file(): do not clear filename redundantly
      rollback_lock_file(): exit early if lock is not active
      rollback_lock_file(): set fd to -1
      lockfile: unlock file if lockfile permissions cannot be adjusted
      hold_lock_file_for_append(): release lock on errors
      lock_file(): always initialize and register lock_file object
      lockfile.c: document the various states of lock_file objects
      cache.h: define constants LOCK_SUFFIX and LOCK_SUFFIX_LEN
      delete_ref_loose(): don't muck around in the lock_file's filename
      prepare_index(): declare return value to be (const char *)
      lock_file(): exit early if lockfile cannot be opened
      remove_lock_file(): call rollback_lock_file()
      commit_lock_file(): inline temporary variable
      commit_lock_file(): die() if called for unlocked lockfile object
      close_lock_file(): if close fails, roll back
      commit_lock_file(): rollback lock file on failure to rename
      api-lockfile: document edge cases
      dump_marks(): remove a redundant call to rollback_lock_file()
      git_config_set_multivar_in_file(): avoid call to rollback_lock_file()
      lockfile: avoid transitory invalid states
      struct lock_file: declare some fields volatile
      try_merge_strategy(): remove redundant lock_file allocation
      try_merge_strategy(): use a statically-allocated lock_file object
      commit_lock_file(): use a strbuf to manage temporary space
      lockfile: change lock_file::filename into a strbuf
      resolve_symlink(): use a strbuf for internal scratch space
      resolve_symlink(): take a strbuf parameter
      trim_last_path_component(): replace last_path_elm()
      commit_lock_file_to(): refactor a helper out of commit_lock_file()
      lockfile: rename LOCK_NODEREF to LOCK_NO_DEREF
      lockfile.c: rename static functions
      get_locked_file_path(): new function
      hold_lock_file_for_append(): restore errno before returning
      hold_locked_index(): move from lockfile.c to read-cache.c
      lockfile.h: extract new header file for the functions in lockfile.c
      fdopen_lock_file(): access a lockfile using stdio
      dump_marks(): reimplement using fdopen_lock_file()
      commit_packed_refs(): reimplement using fdopen_lock_file()

Michael J Gruber (2):
      push: heed user.signingkey for signed pushes
      t/lib-gpg: make gpghome files writable

Monard Vong (1):
      git-svn: branch: avoid systematic prompt for cert/pass

Nguyễn Thái Ngọc Duy (16):
      mv: mark strings for translations
      mv: flatten error handling code block
      utf8.c: fix strbuf_utf8_replace() consuming data beyond input string
      wrapper.c: introduce gentle xmallocz that does not die()
      sha1_file.c: do not die failing to malloc in unpack_compressed_entry
      diff.c: allow to pass more flags to diff_populate_filespec
      diff --stat: mark any file larger than core.bigfilethreshold binary
      diff: shortcut for diff'ing two binary SHA-1 objects
      mv: split submodule move preparation code out
      mv: remove an "if" that's always true
      mv: move index search code out
      mv: unindent one level for directory move code
      mv: combine two if(s)
      mv: no SP between function name and the first opening parenthese
      archive: support filtering paths with glob
      dir.c: remove the second declaration of "stk" in prep_exclude()

Pat Thoyts (1):
      Makefile: propagate NATIVE_CRLF to C

Patrick Reynolds (2):
      use a hashmap to make remotes faster
      unblock and unignore SIGPIPE

Philip Oakley (4):
      doc: modernise everyday.txt wording and format in man page style
      doc: Makefile regularise OBSOLETE_HTML list building
      doc: add 'everyday' to 'git help'
      doc: fix 'git status --help' character quoting

Ramsay Jones (1):
      revision: remove definition of unused 'add_object' function

René Scharfe (44):
      strbuf: add strbuf_getcwd()
      unix-sockets: use strbuf_getcwd()
      init: avoid superfluous real_path() calls
      turn path macros into inline function
      run-command: introduce CHILD_PROCESS_INIT
      run-command: introduce child_process_init()
      run-command: call run_command_v_opt_cd_env() instead of duplicating it
      run-command: inline prepare_run_command_v_opt()
      sha1_name: avoid quadratic list insertion in handle_one_ref
      walker: avoid quadratic list insertion in mark_complete
      setup: convert setup_git_directory_gently_1 et al. to strbuf
      abspath: use strbuf_getcwd() to remember original working directory
      abspath: convert real_path_internal() to strbuf
      wrapper: add xgetcwd()
      use xgetcwd() to get the current directory or die
      use xgetcwd() to set $GIT_DIR
      abspath: convert absolute_path() to strbuf
      use strbuf_add_absolute_path() to add absolute paths
      connect: simplify check_ref() using skip_prefix() and starts_with()
      pack-write: simplify index_pack_lockfile using skip_prefix() and xstrfmt()
      config: simplify git_config_include()
      http-walker: simplify process_alternates_response() using strbuf
      merge-tree: remove unused df_conflict arguments
      imap-send: simplify v_issue_imap_cmd() and get_cmd_result() using starts_with()
      trace: correct trace_strbuf() parameter type for !HAVE_VARIADIC_MACROS
      strbuf: export strbuf_addchars()
      strbuf: use strbuf_addchars() for adding a char multiple times
      repack: call prune_packed_objects() and update_server_info() directly
      add macro REALLOC_ARRAY
      use REALLOC_ARRAY for changing the allocation size of arrays
      graph: simplify graph_padding_line()
      remote: simplify match_name_with_pattern() using strbuf
      t0090: avoid passing empty string to printf %d
      sha1-array: add test-sha1-array and basic tests
      sha1-lookup: handle duplicates in sha1_pos()
      bundle: plug minor memory leak in is_tag_in_date_range()
      mailsplit: remove unnecessary unlink(2) call
      use skip_prefix() to avoid more magic numbers
      receive-pack: plug minor memory leak in unpack()
      run-command: add env_array, an optional argv_array for env
      use env_array member of struct child_process
      grep: add color.grep.matchcontext and color.grep.matchselected
      receive-pack: avoid minor leak in case start_async() fails
      api-run-command: add missing list item marker

Robert de Bath (1):
      config.txt: pack.windowmemory limit applies per-thread

Ronnie Sahlberg (38):
      refs.c: change ref_transaction_create to do error checking and return status
      refs.c: update ref_transaction_delete to check for error and return status
      refs.c: make ref_transaction_begin take an err argument
      refs.c: add transaction.status and track OPEN/CLOSED
      tag.c: use ref transactions when doing updates
      replace.c: use the ref transaction functions for updates
      commit.c: use ref transactions for updates
      sequencer.c: use ref transactions for all ref updates
      fast-import.c: change update_branch to use ref transactions
      branch.c: use ref transaction for all ref updates
      refs.c: change update_ref to use a transaction
      receive-pack.c: use a reference transaction for updating the refs
      fast-import.c: use a ref transaction when dumping tags
      walker.c: use ref transaction for ref updates
      refs.c: make lock_ref_sha1 static
      refs.c: remove the update_ref_lock function
      refs.c: remove the update_ref_write function
      refs.c: remove lock_ref_sha1
      refs.c: make prune_ref use a transaction to delete the ref
      refs.c: make delete_ref use a transaction
      wrapper.c: remove/unlink_or_warn: simplify, treat ENOENT as success
      refs.c: lock_ref_sha1_basic is used for all refs
      wrapper.c: add a new function unlink_or_msg
      refs.c: add an err argument to delete_ref_loose
      refs.c: pass the ref log message to _create/delete/update instead of _commit
      rename_ref: don't ask read_ref_full where the ref came from
      refs.c: refuse to lock badly named refs in lock_ref_sha1_basic
      refs.c: call lock_ref_sha1_basic directly from commit
      refs.c: pass a list of names to skip to is_refname_available
      refs.c: ref_transaction_commit: distinguish name conflicts from other errors
      fetch.c: change s_update_ref to use a ref transaction
      refs.c: make write_ref_sha1 static
      refs.c: change resolve_ref_unsafe reading argument to be a flags field
      branch -d: simplify by using RESOLVE_REF_READING
      test: put tests for handling of bad ref names in one place
      refs.c: allow listing and deleting badly named refs
      for-each-ref: skip and warn about broken ref names
      remote rm/prune: print a message when writing packed-refs fails

Sebastian Schuberth (3):
      subtree: add an install-html target
      contacts: add a Makefile to generate docs and install
      gitk: Do not depend on Cygwin's "kill" command on Windows

Sergey Organov (1):
      Documentation/git-rebase.txt: document when --fork-point is auto-enabled

Sergey Senozhatsky (1):
      compat-util: add _DEFAULT_SOURCE define

Stefan Beller (12):
      remote.c: don't leak the base branch name in format_tracking_info
      clone.c: don't leak memory in cmd_clone
      prepare_revision_walk(): check for return value in all places
      builtin/blame.c: add translation to warning about failed revision walk
      mailsplit.c: remove dead code
      help: fix the size passed to qsort
      t9300-fast-import: fix typo in test description
      t6031-test-merge-recursive: do not forget to add file to be committed
      merge-recursive: fix copy-paste mistake
      merge-recursive: remove stale commented debugging code
      transport: free leaking head in transport_print_push_status()
      .mailmap: add Stefan Bellers corporate mail address

Steffen Prohaska (8):
      convert: drop arguments other than 'path' from would_convert_to_git()
      config.c: add git_env_ulong() to parse environment variable
      memory_limit: use git_env_ulong() to parse GIT_ALLOC_LIMIT
      mmap_limit: introduce GIT_MMAP_LIMIT to allow testing expected mmap size
      copy_fd(): do not close the input file descriptor
      convert: stream from fd to required clean filter to reduce used address space
      Documentation: use single-parameter --cacheinfo in example
      sha1_file: don't convert off_t to size_t too early to avoid potential die()

Sveinung Kvilhaugsvik (1):
      git-svn.txt: advertise pushurl with dcommit

Tanay Abhra (24):
      add `config_set` API for caching config-like files
      test-config: add tests for the config_set API
      pretty.c: make git_pretty_formats_config return -1 on git_config_string failure
      add line number and file name info to `config_set`
      change `git_config()` return value to void
      config: add `git_die_config()` to the config-set API
      rewrite git_config() to use the config-set API
      add a test for semantic errors in config files
      add tests for `git_config_get_string_const()`
      daemon.c: replace `git_config()` with `git_config_get_bool()` family
      http-backend.c: replace `git_config()` with `git_config_get_bool()` family
      read-cache.c: replace `git_config()` with `git_config_get_*()` family
      archive.c: replace `git_config()` with `git_config_get_bool()` family
      fetchpack.c: replace `git_config()` with `git_config_get_*()` family
      rerere.c: replace `git_config()` with `git_config_get_*()` family
      builtin/gc.c: replace `git_config()` with `git_config_get_*()` family
      pager.c: replace `git_config()` with `git_config_get_value()`
      imap-send.c: replace `git_config()` with `git_config_get_*()` family
      alias.c: replace `git_config()` with `git_config_get_string()`
      branch.c: replace `git_config()` with `git_config_get_string()
      fast-import.c: replace `git_config()` with `git_config_get_*()` family
      ll-merge.c: refactor `read_merge_config()` to use `git_config_string()`
      merge-recursive.c: replace `git_config()` with `git_config_get_int()`
      builtin/apply.c: replace `git_config()` with `git_config_get_string_const()`

Thomas Braun (2):
      pretty: note that %cd respects the --date= option
      completion: Add --ignore-blank-lines for diff

Tony Finch (2):
      imap-send: clarify CRAM-MD5 vs LOGIN documentation
      imap-send: create target mailbox if it is missing

Torsten Bögershausen (2):
      t0027: Tests for core.eol=native, eol=lf, eol=crlf
      core.filemode may need manual action

W. Trevor King (2):
      pre-push.sample: Write error message to stderr
      t1304: Set LOGNAME even if USER is unset or null

brian m. carlson (8):
      archive: honor tar.umask even for pax headers
      imap-send doc: omit confusing "to use imap-send" modifier
      Documentation: adjust document title underlining
      Documentation: fix mismatched delimiters in git-imap-send
      Documentation: move some AsciiDoc parameters into variables
      Documentation: implement linkgit macro for Asciidoctor
      Documentation: refactor common operations into variables
      Documentation: remove Asciidoctor linkgit macro


Version v2.1.4; changes since v2.1.3:
-------------------------------------

Ben North (1):
      gitignore.txt: fix spelling of "backslash"

Jeff King (9):
      docs/credential-store: s/--store/--file/
      unpack-trees: propagate errors adding entries to the index
      read-tree: add tests for confusing paths like ".." and ".git"
      verify_dotfile(): reject .git case-insensitively
      t1450: refactor ".", "..", and ".git" fsck tests
      fsck: notice .git case-insensitively
      utf8: add is_hfs_dotgit() helper
      read-cache: optionally disallow HFS+ .git variants
      fsck: complain about HFS+ ".git" aliases in trees

Johannes Schindelin (3):
      path: add is_ntfs_dotgit() helper
      read-cache: optionally disallow NTFS .git variants
      fsck: complain about NTFS ".git" aliases in trees

Junio C Hamano (4):
      Git 1.8.5.6
      Git 1.9.5
      Git 2.0.5
      Git 2.1.4

Nicolas Dermine (1):
      config.txt: fix typo

René Scharfe (1):
      clean: use f(void) instead of f() to declare a pointer to a function without arguments

Thomas Quinot (1):
      Documentation/config.txt: fix minor typo


Version v2.1.3; changes since v2.1.2:
-------------------------------------

David Aguilar (1):
      mergetools/meld: make usage of `--output` configurable and more robust

Eric Sunshine (1):
      mailinfo: work around -Wstring-plus-int warning

Jeff King (2):
      mailinfo: make ">From" in-body header check more robust
      pack-objects: turn off bitmaps when we split packs

Junio C Hamano (1):
      Git 2.1.3

René Scharfe (3):
      daemon: handle gethostbyname() error
      daemon: fix error message after bind()
      daemon: remove write-only variable maxfd

Roland Mas (1):
      gitweb: use start_form, not startform that was removed in CGI.pm 4.04

Wieland Hoffmann (1):
      git-tag.txt: Add a missing hyphen to `-s`

brian m. carlson (1):
      Documentation: fix misrender of pretty-formats in Asciidoctor


Version v2.1.2; changes since v2.1.1:
-------------------------------------

Jeff King (5):
      send-pack: take refspecs over stdin
      index-pack: fix race condition with duplicate bases
      fsck: exit with non-zero status upon error from fsck_obj()
      config: avoid a funny sentinel value "a^"
      fsck: return non-zero status on missing ref tips

Junio C Hamano (1):
      Git 2.1.2

Max Kirillov (1):
      reachable.c: add HEAD to reachability starting commits

Maxim Bublis (2):
      t9300: test filedelete command
      fast-import: fix segfault in store_tree()

Phillip Sz (2):
      l10n: de.po: change Email to E-Mail
      l10n: de.po: use comma before "um"

Ralf Thielow (1):
      po/TEAMS: add new member to German translation team

Sergey Organov (2):
      Documentation/git-rebase.txt: -f forces a rebase that would otherwise be a no-op
      Documentation/git-rebase.txt: <upstream> must be given to specify <branch>

Tanay Abhra (1):
      make config --add behave correctly for empty and NULL values


Version v2.1.1; changes since v2.1.0:
-------------------------------------

Alex Henrie (2):
      l10n: Add Catalan translation
      po/TEAMS: Add Catalan team

Alexander Shopov (3):
      l10n: Updated Bulgarian translation of git (2228t,0f,0u)
      l10n: Updated Bulgarian translation of git (2247t,0f,0u)
      l10n: Updated Bulgarian translation of git (2257t,0f,0u)

Edward Thomson (1):
      upload-pack: keep poll(2)'s timeout to -1

Jean-Noël Avila (1):
      l10n: fr.po (2257t) update for version 2.1.0

Jeff King (10):
      revision: drop useless string offset when parsing "--pretty"
      pretty: treat "--format=" as an empty userformat
      pretty: make empty userformats truly empty
      pack-objects: turn off bitmaps when we see --shallow lines
      Makefile: make perf tests optional for profile build
      intersect_paths: respect mode in git's tree-sort
      pack-refs: prune top-level refs like "refs/foo"
      fast-import: clean up pack_data pointer in end_packfile
      fast-import: fix buffer overflow in dump_tags
      git-prompt: do not look for refs/stash in $GIT_DIR

Jiang Xin (2):
      l10n: git.pot: v2.1.0 round 1 (38 new, 9 removed)
      l10n: zh_CN: translations for git v2.1.0-rc0

Jonathan Nieder (2):
      unpack-trees: use 'cuddled' style for if-else cascade
      checkout -m: attempt merge when deletion of path was staged

Junio C Hamano (5):
      config: teach "git -c" to recognize an empty string
      apply: use the right attribute for paths in non-Git patches
      apply: hoist use_patch() helper for path exclusion up
      apply: omit ws check for excluded paths
      Git 2.1.1

Lukas Fleischer (1):
      bundle: fix exclusion of annotated tags

Nguyễn Thái Ngọc Duy (2):
      fetch: convert argv_gc_auto to struct argv_array
      fetch: silence git-gc if --quiet is given

Peter Krefting (2):
      l10n: Fix more typos in the Swedish translations
      l10n: sv.po: Update Swedish translation (2257t0f0u)

Ralf Thielow (4):
      l10n: de.po: fix typo
      l10n: de.po: improve message when switching branches
      l10n: de.po: translate 38 new messages
      po/TEAMS: add new members to German translation team

René Scharfe (1):
      read-cache: check for leading symlinks when refreshing index

Shawn O. Pearce (1):
      Document LF appearing in shallow command during send-pack/receive-pack

Stefan Beller (1):
      unpack-trees: simplify 'all other failures' case

Trần Ngọc Quân (1):
      l10n: vi.po (2257t): Update translation


Version v2.1.0; changes since v2.1.0-rc2:
-----------------------------------------

Alexander Shopov (1):
      gitk: Updated Bulgarian translation (302t,0f,0u)

Johannes Sixt (1):
      tests: fix negated test_i18ngrep calls

Junio C Hamano (1):
      Git 2.1

Max Kirillov (1):
      gitk: Add keybinding to switch to parent commit


Version v2.1.0-rc2; changes since v2.1.0-rc1:
---------------------------------------------

Junio C Hamano (2):
      RelNotes: no more check_ref_format micro-optimization
      Git 2.1-rc2

Marc Branchaud (1):
      Release notes: grammatical fixes

Stefan Beller (1):
      various contrib: Fix links in man pages


Version v2.1.0-rc1; changes since v2.1.0-rc0:
---------------------------------------------

Fabian Ruch (1):
      commit --amend: test specifies authorship but forgets to check

Jeff King (14):
      receive-pack: don't copy "dir" parameter
      free ref string returned by dwim_ref
      transport: fix leaks in refs_from_alternate_cb
      fix memory leak parsing core.commentchar
      apply: avoid possible bogus pointer
      alloc: write out allocator definitions
      move setting of object->type to alloc_* functions
      parse_object_buffer: do not set object type
      add object_as_type helper for casting objects
      alloc: factor out commit index
      object_as_type: set commit index
      diff-tree: avoid lookup_unknown_object
      t1402: check for refs ending with a dot
      t4013: test diff-tree's --stdin commit formatting

Johannes Schindelin (1):
      MinGW: Skip test redirecting to fd 4

John Keeping (3):
      completion: complete "unstuck" `git push --recurse-submodules`
      completion: add some missing options to `git push`
      completion: complete `git push --force-with-lease=`

Junio C Hamano (6):
      t9814: fix misconversion from test $a -o $b to test $a || test $b
      Revert "Merge branch 'dt/refs-check-refname-component-sse-fix'"
      Revert "Merge branch 'dt/refs-check-refname-component-sse'"
      Git 2.0.4
      Update draft release notes to 2.1
      Git 2.1.0-rc1

Karsten Blees (16):
      Revert "Windows: teach getenv to do a case-sensitive search"
      Win32: Unicode environment (outgoing)
      Win32: Unicode environment (incoming)
      Win32: fix environment memory leaks
      Win32: unify environment case-sensitivity
      Win32: unify environment function names
      Win32: factor out environment block creation
      Win32: don't copy the environment twice when spawning child processes
      Win32: reduce environment array reallocations
      Win32: use low-level memory allocation during initialization
      Win32: keep the environment sorted
      Win32: patch Windows environment on startup
      Win32: enable color output in Windows cmd.exe
      t0110/MinGW: skip tests that pass arbitrary bytes on the command line
      MinGW: disable legacy encoding tests
      t800[12]: work around MSys limitation

Pat Thoyts (3):
      tests: do not pass iso8859-1 encoded parameter
      t4210: skip command-line encoding tests on mingw
      t9902: mingw-specific fix for gitfile link files

Ramsay Jones (1):
      alloc.c: remove the alloc_raw_commit_node() function

Tanay Abhra (1):
      add documentation for writing config files

Tony Finch (1):
      git-push: fix link in man page


Version v2.1.0-rc0; changes since v2.0.5:
-----------------------------------------

Anders Kaseorg (1):
      gitk: Allow displaying time zones from author and commit dates timestamps

Andi Kleen (4):
      Use BASIC_FLAGS for profile feedback
      Don't define away __attribute__ on gcc
      Run the perf test suite for profile feedback too
      Fix profile feedback with -jN and add profile-fast

Andreas Schwab (1):
      grep: add grep.fullName config variable

Brian Gesiak (2):
      strbuf: use _rtrim and _ltrim in strbuf_trim
      api-strbuf.txt: add docs for _trim and _ltrim

Cezary Zawadka (1):
      Windows: allow using UNC path for git repository

Charles Bailey (1):
      Fix contrib/subtree Makefile to patch #! line

Christian Couder (16):
      replace: make sure --edit results in a different object
      replace: refactor checking ref validity
      replace: die early if replace ref already exists
      replace: add tests for --edit
      replace: add --edit to usage string
      Documentation: replace: describe new --edit option
      commit: add for_each_mergetag()
      replace: cleanup redirection style in tests
      replace: add --graft option
      replace: add test for --graft
      Documentation: replace: add --graft option
      contrib: add convert-grafts-to-replace-refs.sh
      replace: remove signature when using --graft
      replace: add test for --graft with signed commit
      replace: check mergetags when using --graft
      replace: add test for --graft with a mergetag

Dan Albert (1):
      imap-send: use git-credential

David Aguilar (3):
      gitk: Honor TMPDIR when viewing external diffs
      gitk: Use mktemp -d to avoid predictable temporary directories
      gitk: Catch mkdtemp errors

David Kastrup (2):
      blame: large-scale performance rewrite
      Bump core.deltaBaseCacheLimit to 96m

David Turner (5):
      docs: document RUN_SETUP_GENTLY and clarify RUN_SETUP
      refs.c: optimize check_refname_component()
      refs.c: SSE2 optimizations for check_refname_component
      refs.c: handle REFNAME_REFSPEC_PATTERN at end of page
      refs: fix valgrind suppression file

Elia Pinto (61):
      t9365-continuing-queries.sh: use the $( ... ) construct for command substitution
      test-gitmw-lib.sh: use the $( ... ) construct for command substitution
      t7900-subtree.sh: use the $( ... ) construct for command substitution
      appp.sh: use the $( ... ) construct for command substitution
      git-pull.sh: use the $( ... ) construct for command substitution
      git-rebase--merge.sh: use the $( ... ) construct for command substitution
      git-rebase.sh: use the $( ... ) construct for command substitution
      git-stash.sh: use the $( ... ) construct for command substitution
      git-web--browse.sh: use the $( ... ) construct for command substitution
      lib-credential.sh: use the $( ... ) construct for command substitution
      lib-cvs.sh: use the $( ... ) construct for command substitution
      lib-gpg.sh: use the $( ... ) construct for command substitution
      p5302-pack-index.sh: use the $( ... ) construct for command substitution
      t0001-init.sh: use the $( ... ) construct for command substitution
      t0010-racy-git.sh: use the $( ... ) construct for command substitution
      t0020-crlf.sh: use the $( ... ) construct for command substitution
      t0025-crlf-auto.sh: use the $( ... ) construct for command substitution
      t0026-eol-config.sh: use the $( ... ) construct for command substitution
      t0030-stripspace.sh: use the $( ... ) construct for command substitution
      t0300-credentials.sh: use the $( ... ) construct for command substitution
      t1000-read-tree-m-3way.sh: use the $( ... ) construct for command substitution
      t1001-read-tree-m-2way.sh: use the $( ... ) construct for command substitution
      t1002-read-tree-m-u-2way.sh: use the $( ... ) construct for command substitution
      t1003-read-tree-prefix.sh: use the $( ... ) construct for command substitution
      t1004-read-tree-m-u-wf.sh: use the $( ... ) construct for command substitution
      t1020-subdirectory.sh: use the $( ... ) construct for command substitution
      t1050-large.sh: use the $( ... ) construct for command substitution
      t3905-stash-include-untracked.sh: use the $( ... ) construct for command substitution
      t3910-mac-os-precompose.sh: use the $( ... ) construct for command substitution
      t4006-diff-mode.sh: use the $( ... ) construct for command substitution
      t4010-diff-pathspec.sh: use the $( ... ) construct for command substitution
      t4012-diff-binary.sh: use the $( ... ) construct for command substitution
      t4013-diff-various.sh: use the $( ... ) construct for command substitution
      t4014-format-patch.sh: use the $( ... ) construct for command substitution
      t4036-format-patch-signer-mime.sh: use the $( ... ) construct for command substitution
      t4038-diff-combined.sh: use the $( ... ) construct for command substitution
      t4057-diff-combined-paths.sh: use the $( ... ) construct for command substitution
      t4116-apply-reverse.sh: use the $( ... ) construct for command substitution
      t4119-apply-config.sh: use the $( ... ) construct for command substitution
      t4204-patch-id.sh: use the $( ... ) construct for command substitution
      t5000-tar-tree.sh: use the $( ... ) construct for command substitution
      check_bindir: avoid "test <cond> -a/-o <cond>"
      contrib/examples/git-clone.sh: avoid "test <cond> -a/-o <cond>"
      contrib/examples/git-commit.sh: avoid "test <cond> -a/-o <cond>"
      contrib/examples/git-merge.sh: avoid "test <cond> -a/-o <cond>"
      contrib/examples/git-repack.sh: avoid "test <cond> -a/-o <cond>"
      contrib/examples/git-resolve.sh: avoid "test <cond> -a/-o <cond>"
      git-bisect.sh: avoid "test <cond> -a/-o <cond>"
      git-mergetool.sh: avoid "test <cond> -a/-o <cond>"
      git-rebase--interactive.sh: avoid "test <cond> -a/-o <cond>"
      t/lib-httpd.sh: avoid "test <cond> -a/-o <cond>"
      t/t0025-crlf-auto.sh: avoid "test <cond> -a/-o <cond>"
      t/t0026-eol-config.sh: avoid "test <cond> -a/-o <cond>"
      t/t4102-apply-rename.sh: avoid "test <cond> -a/-o <cond>"
      t/t5000-tar-tree.sh: avoid "test <cond> -a/-o <cond>"
      t/t5403-post-checkout-hook.sh: avoid "test <cond> -a/-o <cond>"
      t/t5538-push-shallow.sh: avoid "test <cond> -a/-o <cond>"
      t/t9814-git-p4-rename.sh: avoid "test <cond> -a/-o <cond>"
      t/test-lib-functions.sh: avoid "test <cond> -a/-o <cond>"
      git-submodule.sh: avoid "test <cond> -a/-o <cond>"
      submodule.c: use the ARRAY_SIZE macro

Ephrim Khong (1):
      sha1_file: do not add own object directory as alternate

Eric Wong (1):
      config: preserve config file permissions on edits

Erik Faye-Lund (1):
      send-email: recognize absolute path on Windows

Fabian Ruch (1):
      sequencer: signal failed ff as an aborted, not a conflicted merge

Felipe Contreras (12):
      fast-export: improve argument parsing
      fast-export: add new --refspec option
      transport-helper: add support for old:new refspec
      transport-helper: add support to push symbolic refs
      fast-import: add support to delete refs
      fast-export: add support to delete refs
      transport-helper: add support to delete branches
      transport-helper: remove unnecessary strbuf resets
      mergetools: add vimdiff3 mode
      mergetool: run prompt only if guessed tool
      merge: enable defaulttoupstream by default
      silence a bunch of format-zero-length warnings

Ilya Bobyr (4):
      test-lib: document short options in t/README
      test-lib: tests skipped by GIT_SKIP_TESTS say so
      test-lib: '--run' to run only specific tests
      gitk: Replace SHA1 entry field on keyboard paste

Jacob Keller (2):
      tag: fix --sort tests to use cat<<-\EOF format
      tag: support configuring --sort via .gitconfig

James Denholm (6):
      contrib/subtree/Makefile: scrap unused $(gitdir)
      contrib/subtree/Makefile: use GIT-VERSION-FILE
      contrib/subtree/Makefile: s/libexecdir/gitexecdir/
      contrib/subtree/Makefile: clean up rules to generate documentation
      contrib/subtree/Makefile: clean up rule for "clean"
      contrib/subtree: allow adding an annotated tag

Jason St. John (1):
      Documentation: use "command-line" when used as a compound adjective, and fix other minor grammatical issues

Jean-Jacques Lafay (1):
      git tag --contains: avoid stack overflow

Jeff King (97):
      run_external_diff: use an argv_array for the environment
      run_external_diff: clean up error handling
      run_external_diff: drop fflush(NULL)
      run_external_diff: hoist common bits out of conditional
      run_external_diff: refactor cmdline setup logic
      t3910: show failure of core.precomposeunicode with decomposed filenames
      replace: refactor command-mode determination
      replace: use OPT_CMDMODE to handle modes
      replace: factor object resolution out of replace_object
      replace: add --edit option
      commit: use split_ident_line to compare author/committer
      pretty: make show_ident_date public
      commit: print "Date" line when the user has set date
      commit: accept more date formats for "--date"
      inline constant return from error() function
      let clang use the constant-return error() macro
      grep: use run-command's "dir" option for --open-files-in-pager
      t/lib-httpd: require SANITY prereq
      run-command: store an optional argv_array
      run_column_filter: use argv_array
      git_connect: use argv_array
      get_helper: use run-command's internal argv_array
      get_exporter: use argv_array
      get_importer: use run-command's internal argv_array
      argv-array: drop "detach" code
      format-patch: make newline after signature conditional
      daemon/config: factor out duplicate xstrdup_tolower
      test-lib: preserve GIT_CURL_VERBOSE from the environment
      t/lib-httpd: use write_script to copy CGI scripts
      t5550: test display of remote http error messages
      strbuf: add strbuf_tolower function
      http: extract type/subtype portion of content-type
      http: optionally extract charset parameter from content-type
      strbuf: add strbuf_reencode helper
      remote-curl: reencode http error messages
      http: default text charset to iso-8859-1
      error_resolve_conflict: rewrap advice message
      error_resolve_conflict: drop quotations around operation
      pack-objects: stop respecting pack.writebitmaps
      repack: simplify handling of --write-bitmap-index
      repack: introduce repack.writeBitmaps config option
      t7700: drop explicit --no-pack-kept-objects from .keep test
      parse_diff_color_slot: drop ofs parameter
      daemon: mark some strings as const
      avoid using skip_prefix as a boolean
      strbuf: add xstrfmt helper
      use xstrfmt in favor of manual size calculations
      use xstrdup instead of xmalloc + strcpy
      use xstrfmt to replace xmalloc + sprintf
      use xstrfmt to replace xmalloc + strcpy/strcat
      setup_git_env: use git_pathdup instead of xmalloc + sprintf
      sequencer: use argv_array_pushf
      merge: use argv_array when spawning merge strategy
      walker_fetch: fix minor memory leak
      unique_path: fix unlikely heap overflow
      refactor skip_prefix to return a boolean
      apply: use skip_prefix instead of raw addition
      fast-import: fix read of uninitialized argv memory
      transport-helper: avoid reading past end-of-string
      use skip_prefix to avoid magic numbers
      use skip_prefix to avoid repeating strings
      fast-import: use skip_prefix for parsing input
      daemon: use skip_prefix to avoid magic numbers
      stat_opt: check extra strlen call
      fast-import: refactor parsing of spaces
      fetch-pack: refactor parsing in get_ack
      git: avoid magic number with skip_prefix
      use skip_prefix to avoid repeated calculations
      http-push: refactor parsing of remote object names
      setup_git_env(): introduce git_path_from_env() helper
      replace: replace spaces with tabs in indentation
      avoid double close of descriptors handed to run_command
      replace: use argv_array in export_object
      replace: add a --raw mode for --edit
      add strip_suffix function
      implement ends_with via strip_suffix
      replace has_extension with ends_with
      use strip_suffix instead of ends_with in simple cases
      index-pack: use strip_suffix to avoid magic numbers
      strbuf: implement strbuf_strip_suffix
      verify-pack: use strbuf_strip_suffix
      prepare_packed_git_one: refactor duplicate-pack check
      remote-curl: do not complain on EOF from parent git
      remote-curl: use error instead of fprintf(stderr)
      remote-curl: mark helper-protocol errors more clearly
      tag: use skip_prefix instead of magic numbers
      alloc: write out allocator definitions
      move setting of object->type to alloc_* functions
      parse_object_buffer: do not set object type
      add object_as_type helper for casting objects
      alloc: factor out commit index
      object_as_type: set commit index
      diff-tree: avoid lookup_unknown_object
      prio-queue: factor out compare and swap operations
      prio-queue: make output stable with respect to insertion
      paint_down_to_common: use prio_queue
      t5539: update a flaky test

Jens Lehmann (19):
      git-gui: show staged submodules regardless of ignore config
      git-gui: tolerate major version changes when comparing the git version
      gitk: Show staged submodules regardless of ignore config
      test-lib: add test_dir_is_empty()
      t/Makefile: check helper scripts for non-portable shell commands too
      t/Makefile: always test all lint targets when running tests
      submodules: add the lib-submodule-update.sh test library
      checkout: call the new submodule update test framework
      apply: add t4137 for submodule updates
      read-tree: add t1013 for submodule updates
      reset: add t7112 for submodule updates
      bisect: add t6041 for submodule updates
      merge: add t7613 for submodule updates
      rebase: add t3426 for submodule updates
      pull: add t5572 for submodule updates
      cherry-pick: add t3512 for submodule updates
      am: add t4255 for submodule updates
      stash: add t3906 for submodule updates
      revert: add t3513 for submodule updates

Jeremiah Mahler (4):
      format-patch: add "--signature-file=<file>" option
      t9138-git-svn-authors-prog.sh fixups
      name-hash.c: replace cache_name_compare() with memcmp(3)
      cleanup duplicate name_compare() functions

Johannes Schindelin (1):
      Win32: let mingw_execve() return an int

John Keeping (2):
      rebase--am: use --cherry-pick instead of --ignore-if-in-upstream
      rebase: omit patch-identical commits with --fork-point

Jonathan Nieder (4):
      contrib: remove vim support instructions
      contrib: remove git-diffall
      test-lint: find unportable sed, echo, test, and export usage after &&
      test doc: test_write_lines does not split its arguments

Junio C Hamano (37):
      send-email: windows drive prefix (e.g. C:) appears only at the beginning
      mergetool: document the default for --[no-]prompt
      CodingGuidelines: once it is in, it is not worth the code churn
      CodingGuidelines: give an example for case/esac statement
      CodingGuidelines: give an example for redirection
      CodingGuidelines: give an example for control statements
      CodingGuidelines: give an example for shell function preamble
      CodingGuidelines: do not call the conditional statement "if()"
      CodingGuidelines: on comparison
      CodingGuidelines: on splitting a long line
      CodingGuidelines: avoid "test <cond> -a/-o <cond>"
      fetch doc: update introductory part for clarity
      fetch doc: update note on '+' in front of the refspec
      fetch doc: remove notes on outdated "mixed layout"
      First batch for 2.1
      fetch doc: on pulling multiple refspecs
      fetch doc: update refspec format description
      fetch doc: remove "short-cut" section
      fetch doc: add a section on configured remote-tracking branches
      fetch: allow explicit --refmap to override configuration
      Second batch for 2.1
      Update draft release notes to 2.1
      test: turn EXPENSIVE into a lazy prerequisite
      test: turn USR_BIN_TIME into a lazy prerequisite
      t3302: coding style updates
      t3302: do not chdir around in the primary test process
      t3302: drop unnecessary NOT_EXPENSIVE pseudo-prerequisite
      t3419: drop unnecessary NOT_EXPENSIVE pseudo-prerequisite
      Third batch for 2.1
      git-submodule.sh: avoid "echo" path-like values
      Fourth batch for 2.1
      Fifth batch for 2.1
      Sixth batch for 2.1
      Seventh batch for 2.1
      Eighth batch for 2.1
      Ninth batch for 2.1
      Git 2.1.0-rc0

Karsten Blees (46):
      MSVC: link dynamically to the CRT
      Win32 dirent: remove unused dirent.d_ino member
      Win32 dirent: remove unused dirent.d_reclen member
      Win32 dirent: change FILENAME_MAX to MAX_PATH
      Win32 dirent: clarify #include directives
      Win32 dirent: improve dirent implementation
      Win32: move main macro to a function
      Win32: support Unicode console output
      Win32: detect console streams more reliably
      Win32: warn if the console font doesn't support Unicode
      Win32: add Unicode conversion functions
      Win32: Thread-safe windows console output
      Win32: fix broken pipe detection
      Win32: reliably detect console pipe handles
      Win32: simplify internal mingw_spawn* APIs
      Win32: fix potential multi-threading issue
      MinGW: disable CRT command line globbing
      Win32: Unicode arguments (outgoing)
      Win32: Unicode arguments (incoming)
      trace: move trace declarations from cache.h to new trace.h
      trace: consistently name the format parameter
      trace: remove redundant printf format attribute
      symlinks: remove PATH_MAX limitation
      hashmap: factor out getting a hash code from a SHA1
      hashmap: improve struct hashmap member documentation
      hashmap: add simplified hashmap_get_from_hash() API
      hashmap: add string interning API
      cache.h: rename cache_def_free to cache_def_clear
      trace: improve trace performance
      Documentation/git.txt: improve documentation of 'GIT_TRACE*' variables
      sha1_file: change GIT_TRACE_PACK_ACCESS logging to use trace API
      trace: add infrastructure to augment trace output with additional info
      trace: disable additional trace output for unit tests
      trace: add current timestamp to all trace output
      trace: move code around, in preparation to file:line output
      trace: add 'file:line' to all trace output
      trace: add high resolution timer function to debug performance issues
      trace: add trace_performance facility to debug performance issues
      git: add performance tracing for git's main() function to debug scripts
      wt-status: simplify performance measurement by using getnanotime()
      progress: simplify performance measurement by using getnanotime()
      api-trace.txt: add trace API documentation
      Win32: Unicode file name support (except dirent)
      Win32: Unicode file name support (dirent)
      MinGW: fix compile error due to missing ELOOP
      config: use chmod() instead of fchmod()

Kirill Smelkov (20):
      combine-diff: move show_log_first logic/action out of paths scanning
      combine-diff: move changed-paths scanning logic into its own function
      tree-diff: no need to manually verify that there is no mode change for a path
      tree-diff: no need to pass match to skip_uninteresting()
      tree-diff: show_tree() is not needed
      tree-diff: consolidate code for emitting diffs and recursion in one place
      tree-diff: don't assume compare_tree_entry() returns -1,0,1
      tree-diff: move all action-taking code out of compare_tree_entry()
      tree-diff: rename compare_tree_entry -> tree_entry_pathcmp
      tree-diff: show_path prototype is not needed anymore
      tree-diff: simplify tree_entry_pathcmp
      tree-diff: remove special-case diff-emitting code for empty-tree cases
      tree-diff: diff_tree() should now be static
      tree-diff: rework diff_tree interface to be sha1 based
      tree-diff: no need to call "full" diff_tree_sha1 from show_path()
      tree-diff: reuse base str(buf) memory on sub-tree recursion
      Portable alloca for Git
      tree-diff: rework diff_tree() to generate diffs for multiparent cases as well
      combine-diff: speed it up, by using multiparent diff tree-walker directly
      mingw: activate alloca

Linus Torvalds (1):
      git log: support "auto" decorations

Luis R. Rodriguez (1):
      git.c: treat RUN_SETUP_GENTLY and RUN_SETUP as mutually exclusive

Marc Branchaud (2):
      fetch doc: move FETCH_HEAD material lower and add an example
      docs: Explain the purpose of fetch's and pull's <refspec> parameter.

Matthieu Moy (3):
      git-remote-mediawiki: allow stop/start-ing the test server
      git-remote-mediawiki: fix encoding issue for UTF-8 media files
      pager: remove 'S' from $LESS by default

Max Kirillov (4):
      gitk: Switch to patch mode when searching for line origin
      gitk: Add visiblerefs option, which lists always-shown branches
      t6023-merge-file.sh: fix and mark as broken invalid tests
      git-merge-file: do not add LF at EOF while applying unrelated change

Maxime Coste (2):
      git-p4: Do not include diff in spec file when just preparing p4
      git-p4: fix submit in non --prepare-p4-only mode

Michael Barabanov (1):
      use local cloning if insteadOf makes a local URL

Michael Haggerty (27):
      t1400: fix name and expected result of one test
      t1400: provide more usual input to the command
      parse_arg(): really test that argument is properly terminated
      t1400: add some more tests involving quoted arguments
      refs.h: rename the action_on_err constants
      update_refs(): fix constness
      update-ref --stdin: read the whole input at once
      parse_cmd_verify(): copy old_sha1 instead of evaluating <oldvalue> twice
      update-ref.c: extract a new function, parse_refname()
      update-ref --stdin: improve error messages for invalid values
      update-ref --stdin: make error messages more consistent
      update-ref --stdin: simplify error messages for missing oldvalues
      t1400: test that stdin -z update treats empty <newvalue> as zeros
      update-ref.c: extract a new function, parse_next_sha1()
      update-ref --stdin -z: deprecate interpreting the empty string as zeros
      t1400: test one mistake at a time
      update-ref --stdin: improve the error message for unexpected EOF
      update-ref --stdin: harmonize error messages
      refs: add a concept of a reference transaction
      update-ref --stdin: reimplement using reference transactions
      refs: remove API function update_refs()
      struct ref_update: rename field "ref_name" to "refname"
      struct ref_update: store refname as a FLEX_ARRAY
      ref_transaction_commit(): simplify code using temporary variables
      struct ref_update: add a lock field
      struct ref_update: add a type field
      ref_transaction_commit(): work with transaction->updates in place

Michael J Gruber (5):
      gpg-interface: provide clear helper for struct signature_check
      gpg-interface: provide access to the payload
      verify-commit: scriptable commit signature verification
      t7510: exit for loop with test result
      t7510: test verify-commit

Michael S. Tsirkin (6):
      git-send-email: two new options: to-cover, cc-cover
      test/send-email: to-cover, cc-cover tests
      rebase --keep-empty -i: add test
      test: add test_write_lines helper
      patch-id: make it stable against hunk reordering
      patch-id-test: test stable and unstable behaviour

Nguyễn Thái Ngọc Duy (38):
      ewah: fix constness of ewah_read_mmap
      ewah: delete unused ewah_read_mmap_native declaration
      sequencer: do not update/refresh index if the lock cannot be held
      config: be strict on core.commentChar
      commit: allow core.commentChar=auto for character auto selection
      git potty: restore environments after alias expansion
      read-cache: new API write_locked_index instead of write_index/write_cache
      read-cache: relocate and unexport commit_locked_index()
      read-cache: store in-memory flags in the first 12 bits of ce_flags
      read-cache: be strict about "changed" in remove_marked_cache_entries()
      read-cache: be specific what part of the index has changed
      update-index: be specific what part of the index has changed
      resolve-undo: be specific what part of the index has changed
      unpack-trees: be specific what part of the index has changed
      cache-tree: mark istate->cache_changed on cache tree invalidation
      cache-tree: mark istate->cache_changed on cache tree update
      cache-tree: mark istate->cache_changed on prime_cache_tree()
      entry.c: update cache_changed if refresh_cache is set in checkout_entry()
      read-cache: save index SHA-1 after reading
      read-cache: split-index mode
      read-cache: mark new entries for split index
      read-cache: save deleted entries in split index
      read-cache: mark updated entries for split index
      split-index: the writing part
      split-index: the reading part
      split-index: do not invalidate cache-tree at read time
      split-index: strip pathname of on-disk replaced entries
      update-index: new options to enable/disable split index mode
      update-index --split-index: do not split if $GIT_DIR is read only
      rev-parse: add --shared-index-path to get shared index path
      read-tree: force split-index mode off on --index-output
      read-tree: note about dropping split-index mode or index version
      read-cache: force split index mode with GIT_TEST_SPLIT_INDEX
      t2104: make sure split index mode is off for the version test
      t1700: new tests for split-index mode
      dir.c: coding style fix
      dir.h: move struct exclude declaration to top level
      prep_exclude: remove the artificial PATH_MAX limit

Pat Thoyts (2):
      wincred: add install target
      wincred: avoid overwriting configured variables

Ramsay Jones (2):
      t0000-*.sh: fix the GIT_SKIP_TESTS sub-tests
      alloc.c: remove the alloc_raw_commit_node() function

René Scharfe (22):
      Use starts_with() for C strings instead of memcmp()
      blame: factor out get_next_line()
      blame: simplify prepare_lines()
      wt-status: use argv_array for environment
      wt-status: simplify building of summary limit argument
      sha1_file: replace PATH_MAX buffer with strbuf in prepare_packed_git_one()
      t5000, t5003: simplify commit
      diff-tree: call free_commit_list() instead of duplicating its code
      line-log: use commit_list_append() instead of duplicating its code
      use strbuf_addbuf for adding strbufs
      use strbuf_addch for adding single characters
      merge: simplify merge_trivial() by using commit_list_append()
      commit: use commit_list_append() instead of duplicating its code
      fsck: simplify fsck_commit_buffer() by using commit_list_count()
      strbuf: use strbuf_addstr() for adding C strings
      use commit_list_count() to count the members of commit_lists
      run-command: use internal argv_array of struct child_process in run_hook_ve()
      transport: simplify fetch_objs_via_rsync() using argv_array
      fast-import: use hashcmp() for SHA1 hash comparison
      bundle: use internal argv_array of struct child_process in create_bundle()
      remote-testsvn: use internal argv_array of struct child_process in cmd_import()
      unix-socket: remove stale socket before calling chdir()

RomanBelinsky (1):
      SVN.pm::parse_svn_date: allow timestamps with a single-digit hour

Ronnie Sahlberg (26):
      sequencer.c: check for lock failure and bail early in fast_forward_to
      commit.c: check for lock error and return early
      refs.c: add new functions reflog_exists and delete_reflog
      checkout.c: use ref_exists instead of file_exist
      refs.c: change read_ref_at to use the reflog iterators
      enums: remove trailing ',' after last item in enum
      refs.c: remove ref_transaction_rollback
      refs.c: ref_transaction_commit should not free the transaction
      refs.c: constify the sha arguments for ref_transaction_create|delete|update
      refs.c: allow passing NULL to ref_transaction_free
      refs.c: add a strbuf argument to ref_transaction_commit for error logging
      lockfile.c: add a new public function unable_to_lock_message
      lockfile.c: make lock_file return a meaningful errno on failurei
      refs.c: add an err argument to repack_without_refs
      refs.c: make sure log_ref_setup returns a meaningful errno
      refs.c: verify_lock should set errno to something meaningful
      refs.c: make remove_empty_directories always set errno to something sane
      refs.c: commit_packed_refs to return a meaningful errno on failure
      refs.c: make resolve_ref_unsafe set errno to something meaningful on error
      refs.c: log_ref_write should try to return meaningful errno
      refs.c: make ref_update_reject_duplicates take a strbuf argument for errors
      refs.c: make update_ref_write update a strbuf on failure
      update-ref: use err argument to get error from ref_transaction_commit
      refs.c: remove the onerr argument to ref_transaction_commit
      refs.c: change ref_transaction_update() to do error checking and return status
      refs.c: add a public is_branch function

Stefan Beller (1):
      .mailmap: map different names with the same email address together

Steffen Prohaska (1):
      completion: handle '!f() { ... }; f' and "!sh -c '...' -" aliases

Stepan Kasal (2):
      Revert "submodules: fix ambiguous absolute paths under Windows"
      mingw: avoid const warning

Stephen P. Smith (1):
      How to keep a project's canonical history correct.

Steve Hoelzer (1):
      environment.c: enable core.preloadindex by default

Tanay Abhra (4):
      string-list: spell all values out that are given to a string_list initializer
      imap-send: use skip_prefix instead of using magic numbers
      string-list: add string_list initializer helper function
      replace memset with string-list initializers

Theodore Leblond (1):
      compat/poll: sleep 1 millisecond to avoid busy wait

Thorsten Glaser (1):
      builtin/tag.c: show tag name to hint in the message editor

Torsten Bögershausen (7):
      utf8.c: use a table for double_width
      utf8: make it easier to auto-update git_wcwidth()
      t5551: fix the 50,000 tag test
      t9001: avoid non-portable '\n' with sed
      Update of unicode_width.h to Unicode Version 7.0
      t0025: rename the test files
      t0027: combinations of core.autocrlf, core.eol and text

Trần Ngọc Quân (1):
      l10n: Init Vietnamese translation

W. Trevor King (1):
      Documentation: mention config sources for @{upstream}

William Giokas (1):
      svn-fe: conform to pep8

Yi EungJun (1):
      http: fix charset detection of extract_content_type()

Øyvind A. Holm (1):
      .gitignore: "git-verify-commit" is a generated file


Version v2.0.5; changes since v2.0.4:
-------------------------------------

Jeff King (8):
      unpack-trees: propagate errors adding entries to the index
      read-tree: add tests for confusing paths like ".." and ".git"
      verify_dotfile(): reject .git case-insensitively
      t1450: refactor ".", "..", and ".git" fsck tests
      fsck: notice .git case-insensitively
      utf8: add is_hfs_dotgit() helper
      read-cache: optionally disallow HFS+ .git variants
      fsck: complain about HFS+ ".git" aliases in trees

Johannes Schindelin (3):
      path: add is_ntfs_dotgit() helper
      read-cache: optionally disallow NTFS .git variants
      fsck: complain about NTFS ".git" aliases in trees

Junio C Hamano (3):
      Git 1.8.5.6
      Git 1.9.5
      Git 2.0.5

Wieland Hoffmann (1):
      git-tag.txt: Add a missing hyphen to `-s`


Version v2.0.4; changes since v2.0.3:
-------------------------------------

Fabian Ruch (1):
      commit --amend: test specifies authorship but forgets to check

Jeff King (8):
      alloc: write out allocator definitions
      move setting of object->type to alloc_* functions
      parse_object_buffer: do not set object type
      add object_as_type helper for casting objects
      alloc: factor out commit index
      object_as_type: set commit index
      diff-tree: avoid lookup_unknown_object
      t4013: test diff-tree's --stdin commit formatting

Junio C Hamano (1):
      Git 2.0.4

Ramsay Jones (1):
      alloc.c: remove the alloc_raw_commit_node() function


Version v2.0.3; changes since v2.0.2:
-------------------------------------

Abbaad Haider (1):
      http-push.c: make CURLOPT_IOCTLDATA a usable pointer

Ben Walton (1):
      compat/bswap.h: fix endianness detection

Brian Gesiak (12):
      builtin/ls-remote.c: rearrange xcalloc arguments
      builtin/remote.c: rearrange xcalloc arguments
      commit.c: rearrange xcalloc arguments
      config.c: rearrange xcalloc arguments
      diff.c: rearrange xcalloc arguments
      http-push.c: rearrange xcalloc arguments
      imap-send.c: rearrange xcalloc arguments
      notes.c: rearrange xcalloc arguments
      pack-revindex.c: rearrange xcalloc arguments
      reflog-walk.c: rearrange xcalloc arguments
      remote.c: rearrange xcalloc arguments
      transport-helper.c: rearrange xcalloc arguments

Charles Bailey (2):
      compat/bswap.h: detect endianness on more platforms that don't use BYTE_ORDER
      filter-branch: eliminate duplicate mapped parents

Elia Pinto (1):
      scripts: "export VAR=VALUE" construct is not portable

Jeremiah Mahler (3):
      Documentation: wording fixes in the user manual and glossary
      t/t7810-grep.sh: remove duplicate test_config()
      api-strbuf.txt minor typos

Johannes Sixt (1):
      fix brown paper bag breakage in t5150-request-pull.sh

Jonathan McCrohan (1):
      git-instaweb: add support for Apache 2.4

Junio C Hamano (3):
      compat/bswap.h: restore preference __BIG_ENDIAN over BIG_ENDIAN
      scripts: more "export VAR=VALUE" fixes
      Git 2.0.3

Michael J Gruber (1):
      log: correctly identify mergetag signature verification status

Philip Oakley (1):
      doc: give some guidelines for error messages

René Scharfe (2):
      use xcalloc() to allocate zero-initialized memory
      use xmemdupz() to allocate copies of strings given by start and length

Stefan Beller (2):
      git.1: switch homepage for stats
      .mailmap: combine Stefan Beller's emails

Stepan Kasal (1):
      t5000, t5003: do not use test_cmp to compare binary files

Yi EungJun (1):
      http-protocol.txt: Basic Auth is defined in RFC 2617, not RFC 2616

Zoltan Klinger (1):
      log: fix indentation for --graph --show-signature

brian m. carlson (1):
      Documentation: fix missing text for rev-parse --verify


Version v2.0.2; changes since v2.0.1:
-------------------------------------

Jeff King (27):
      repack: do not accidentally pack kept objects by default
      repack: respect pack.writebitmaps
      repack: s/write_bitmap/&s/ in code
      commit_tree: take a pointer/len pair rather than a const strbuf
      replace dangerous uses of strbuf_attach
      alloc: include any-object allocations in alloc_report
      commit: push commit_index update into alloc_commit_node
      do not create "struct commit" with xcalloc
      logmsg_reencode: return const buffer
      sequencer: use logmsg_reencode in get_message
      provide a helper to free commit buffer
      provide a helper to set the commit buffer
      provide helpers to access the commit buffer
      use get_cached_commit_buffer where appropriate
      use get_commit_buffer to avoid duplicate code
      convert logmsg_reencode to get_commit_buffer
      use get_commit_buffer everywhere
      commit-slab: provide a static initializer
      commit: convert commit->buffer to a slab
      commit: record buffer length in cache
      reuse cached commit buffer when parsing signatures
      t7510: stop referring to master in later tests
      t7510: test a commit signed by an unknown key
      t7510: check %G* pretty-format output
      pretty: avoid reading past end-of-string with "%G"
      move "%G" format test from t7510 to t6006
      t7300: repair filesystem permissions with test_when_finished

Junio C Hamano (4):
      t0008: do not depend on 'echo' handling backslashes specially
      builtin/clone.c: detect a clone starting at a tag correctly
      Start preparing for 2.0.2
      Git 2.0.2

Matthew Chen (1):
      submodule: document "sync --recursive"

Michael J Gruber (1):
      t7510: use consistent &&-chains in loop

Pasha Bolokhov (1):
      dir.c:trim_trailing_spaces(): fix for " \ " sequence

René Scharfe (2):
      sha1_file: avoid overrunning alternate object base string
      annotate: use argv_array

Ronnie Sahlberg (1):
      enums: remove trailing ',' after last item in enum

brian m. carlson (1):
      rebase--merge: fix --skip with two conflicts in a row


Version v2.0.1; changes since v2.0.0:
-------------------------------------

Alexey Shumkin (5):
      t4205 (log-pretty-formats): don't hardcode SHA-1 in expected outputs
      t4041, t4205, t6006, t7102: don't hardcode tested encoding value
      t4205 (log-pretty-format): use `tformat` rather than `format`
      t4205, t6006: add tests that fail with i18n.logOutputEncoding set
      pretty.c: format string with truncate respects logOutputEncoding

David Turner (2):
      merge-recursive.c: fix case-changing merge bug
      mv: allow renaming to fix case on case insensitive filesystems

Felipe Contreras (1):
      rerere: fix for merge.conflictstyle

Jacek Konieczny (1):
      pull: do not abuse 'break' inside a shell 'case'

Jeff King (7):
      commit: do not complain of empty messages from -C
      index-pack: distinguish missing objects from type errors
      run_diff_files: do not look at uninitialized stat data
      open_sha1_file: report "most interesting" errno
      move "--follow needs one pathspec" rule to diff_setup_done
      t5537: re-drop http tests
      update-index: fix segfault with missing --cacheinfo argument

Jens Lehmann (2):
      status/commit: show staged submodules regardless of ignore config
      commit -m: commit staged submodules regardless of ignore config

Jens Lindström (3):
      remote rm: delete remote configuration as the last
      remote: repack packed-refs once when deleting multiple refs
      remote prune: optimize "dangling symref" check/warning

Jiang Xin (2):
      blame: fix broken time_buf paddings in relative timestamp
      blame: dynamic blame_date_width for different locales

Johannes Schindelin (1):
      git grep -O -i: if the pager is 'less', pass the '-I' option

John Keeping (2):
      completion: add a note that merge options are shared
      completion: add missing options for git-merge

Junio C Hamano (5):
      apply --ignore-space-change: lines with and without leading whitespaces do not match
      Git 1.9.4
      shortlog: allow --exclude=<glob> to be passed
      revision: parse "git log -<count>" more carefully
      Git 2.0.1

Jörn Engel (1):
      pager: do allow spawning pager recursively

Matthieu Moy (1):
      rebase -i: test "Nothing to do" case with autostash

Max Kirillov (1):
      git-show: fix 'git show -s' to not add extra terminator after merge commit

Michael Naumov (1):
      sideband.c: do not use ANSI control sequence on non-terminal

Nguyễn Thái Ngọc Duy (2):
      index-pack: work around thread-unsafe pread()
      gc --auto: do not lock refs in the background

Nick Alcock (1):
      t5538: move http push tests out to t5542

Ramkumar Ramachandra (1):
      rebase -i: handle "Nothing to do" case with autostash

René Scharfe (2):
      mailinfo: use strcmp() for string comparison
      pack-objects: use free()+xcalloc() instead of xrealloc()+memset()

Yiannis Marangos (2):
      wrapper.c: add xpread() similar to xread()
      read-cache.c: verify index file before we opportunistically update it

brian m. carlson (1):
      blame: correctly handle files regardless of autocrlf

Øystein Walle (1):
      config: respect '~' and '~user' in mailmap.file


Version v2.0.0; changes since v2.0.0-rc4:
-----------------------------------------

Junio C Hamano (2):
      Update draft release notes to 2.0
      Git 2.0


Version v2.0.0-rc4; changes since v2.0.0-rc3:
---------------------------------------------

Alexander Shopov (1):
      l10n: Updated Bulgarian translation of git (1307t0f921u)

Anders Kaseorg (1):
      Documentation/technical/api-hashmap: remove source highlighting

Felipe Contreras (2):
      contrib: completion: fix 'eread()' namespace
      contrib: remote-helpers: add move warnings (v2.0)

Grégoire Paris (1):
      fr: a lot of good fixups

Jason St. John (1):
      RelNotes/2.0.0.txt: Fix several grammar issues, notably a lack of hyphens, double quotes, or articles

Jens Lehmann (1):
      git-gui: tolerate major version changes when comparing the git version

Junio C Hamano (5):
      request-pull: resurrect for-linus -> tags/for-linus DWIM
      Revert "Merge branch 'fc/transport-helper-sync-error-fix'"
      remote-helpers: point at their upstream repositories
      Revert "Merge branch 'jc/graduate-remote-hg-bzr' (early part)"
      Git 2.0-rc4

Richard Hansen (1):
      git-prompt.sh: don't assume the shell expands the value of PS1


Version v2.0.0-rc3; changes since v2.0.0-rc2:
---------------------------------------------

Jonathan Nieder (1):
      shell doc: remove stray "+" in example

Junio C Hamano (4):
      Update draft release notes for 2.0
      Start preparing for 1.9.3
      Git 1.9.3
      Git 2.0-rc3

Peter Krefting (1):
      l10n: Fix a couple of typos in the Swedish translation

Tolga Ceylan (1):
      git-p4: format-patch to diff-tree change breaks binary patches

Øyvind A. Holm (1):
      RelNotes/2.0.0: Grammar and typo fixes


Version v2.0.0-rc2; changes since v2.0.0-rc1:
---------------------------------------------

Dave Borowitz (1):
      Makefile: default to -lcurl when no CURL_CONFIG or CURLDIR

Jean-Noël Avila (1):
      l10n: fr translation for v2.0.0rc0 (2228t)

Jeff King (1):
      run_external_diff: use an argv_array for the command line

Jiang Xin (2):
      l10n: git.pot: v2.0.0 round 1 (45 new, 28 removed)
      l10n: zh_CN.po: translate 46 new messages (2229t0f0u)

Junio C Hamano (2):
      Revert the whole "ask curl-config" topic for now
      Git 2.0-rc2

Kyle J. McKay (1):
      t9117: use --prefix "" instead of --prefix=""

Martin Erik Werner (1):
      setup: fix windows path buffer over-stepping

Max Kirillov (1):
      Documentation: git-gui: describe gui.displayuntracked

Peter Krefting (1):
      l10n: Update Swedish translation (2228t0f0u)

Ralf Thielow (3):
      l10n: de.po: correct translation of "completed" after resolving deltas
      l10n: de.po: translate 45 new messages
      l10n: de.po: improve hint for autocorrected command execution

Richard Hansen (1):
      git-prompt.sh: don't put unsanitized branch names in $PS1

Trần Ngọc Quân (1):
      l10n: vi.po (2228t): Update and minor fix


Version v2.0.0-rc1; changes since v2.0.0-rc0:
---------------------------------------------

Dave Borowitz (2):
      Makefile: use curl-config to determine curl flags
      Makefile: allow static linking against libcurl

Elia Pinto (14):
      howto-index.sh: use the $( ... ) construct for command substitution
      install-webdoc.sh: use the $( ... ) construct for command substitution
      git-checkout.sh: use the $( ... ) construct for command substitution
      git-clone.sh: use the $( ... ) construct for command substitution
      git-commit.sh: use the $( ... ) construct for command substitution
      git-fetch.sh: use the $( ... ) construct for command substitution
      git-ls-remote.sh: use the $( ... ) construct for command substitution
      git-merge.sh: use the $( ... ) construct for command substitution
      git-repack.sh: use the $( ... ) construct for command substitution
      git-resolve.sh: use the $( ... ) construct for command substitution
      git-revert.sh: use the $( ... ) construct for command substitution
      git-tag.sh: use the $( ... ) construct for command substitution
      t9360-mw-to-git-clone.sh: use the $( ... ) construct for command substitution
      t9362-mw-to-git-utf8.sh: use the $( ... ) construct for command substitution

Felipe Contreras (6):
      transport-helper: remove barely used xchgline()
      remote-helpers: make recvline return an error
      transport-helper: propagate recvline() error pushing
      transport-helper: trivial cleanup
      transport-helper: fix sync issue on crashes
      t5801 (remote-helpers): cleanup environment sets

Jiang Xin (3):
      i18n: fix uncatchable comments for translators in date.c
      i18n: remove obsolete comments for translators in diffstat generation
      i18n: only extract comments marked with "TRANSLATORS:"

Johan Herland (1):
      Git 2.0: git svn: Set default --prefix='origin/' if --prefix is not given

Junio C Hamano (3):
      i18n: mention "TRANSLATORS:" marker in Documentation/CodingGuidelines
      Update draft release notes to 2.0
      Git 2.0-rc1

Kyle J. McKay (3):
      rebase: avoid non-function use of "return" on FreeBSD
      Revert "rebase: fix run_specific_rebase's use of "return" on FreeBSD"
      ewah_bitmap.c: do not assume size_t and eword_t are the same size


Version v2.0.0-rc0; changes since v1.9.5:
-----------------------------------------

Adam (1):
      branch.c: install_branch_config: simplify if chain

Albert L. Lash, IV (4):
      docs/merge-strategies: remove hyphen from mis-merges
      docs/git-remote: capitalize first word of initial blurb
      docs/git-clone: clarify use of --no-hardlinks option
      docs/git-blame: explain more clearly the example pickaxe use

Andrew Keller (1):
      gitweb: Avoid overflowing page body frame with large images

Astril Hayato (1):
      Documentation/gitk: document the location of the configulation file

Benoit Sigoure (1):
      git-compat-util.h: #undef (v)snprintf before #define them

Brian Bourn (2):
      diff-no-index: rename read_directory()
      diff-no-index: replace manual "."/".." check with is_dot_or_dotdot()

Brian Gesiak (3):
      t3200-branch: test setting branch as own upstream
      branch: use skip_prefix() in install_branch_config()
      rebase: allow "-" short-hand for the previous branch

Charles Bailey (2):
      dir.c: make git_fnmatch() not inline
      tests: don't rely on strerror text when testing rmdir failure

Chris Angelico (1):
      config.txt: third-party tools may and do use their own variables

Chris Packham (2):
      Documentation/git-am: Document supported --patch-format options
      Documentation/git-am: typofix

Christian Couder (1):
      strbuf: remove prefixcmp() and suffixcmp()

David Aguilar (2):
      pull: add pull.ff configuration
      pull: add --ff-only to the help text

David Kastrup (6):
      builtin/blame.c: struct blame_entry does not need a prev link
      builtin/blame.c: eliminate same_suspect()
      builtin/blame.c::prepare_lines: fix allocation size of sb->lineno
      blame.c: prepare_lines should not call xrealloc for every line
      builtin/blame.c::find_copy_in_blob: no need to scan for region end
      skip_prefix(): scan prefix only once

David Tran (1):
      tests: use "env" to run commands with temporary env-var settings

Dirk Wallenstein (1):
      doc: status, remove leftover statement about '#' prefix

Dmitry Marakasov (1):
      configure.ac: link with -liconv for locale_charset()

Dmitry S. Dolzhenko (15):
      commit.c: use the generic "sha1_pos" function for lookup
      builtin/pack-objects.c: use ALLOC_GROW() in check_pbase_path()
      bundle.c: use ALLOC_GROW() in add_to_ref_list()
      cache-tree.c: use ALLOC_GROW() in find_subtree()
      commit.c: use ALLOC_GROW() in register_commit_graft()
      diff.c: use ALLOC_GROW()
      diffcore-rename.c: use ALLOC_GROW()
      patch-ids.c: use ALLOC_GROW() in add_commit()
      replace_object.c: use ALLOC_GROW() in register_replace_object()
      reflog-walk.c: use ALLOC_GROW()
      dir.c: use ALLOC_GROW() in create_simplify()
      attr.c: use ALLOC_GROW() in handle_attr_line()
      builtin/mktree.c: use ALLOC_GROW() in append_to_tree()
      read-cache.c: use ALLOC_GROW() in add_index_entry()
      sha1_file.c: use ALLOC_GROW() in pretend_sha1_file()

Elia Pinto (9):
      bisect.c: reduce scope of variable
      builtin/apply.c: reduce scope of variables
      builtin/blame.c: reduce scope of variables
      builtin/clean.c: reduce scope of variable
      builtin/commit.c: reduce scope of variables
      builtin/fetch.c: reduce scope of variable
      builtin/gc.c: reduce scope of variables
      check-builtins.sh: use the $(...) construct for command substitution
      git-am.sh: use the $(...) construct for command substitution

Eric Sunshine (2):
      name-hash: retire unused index_name_exists()
      sh-i18n--envsubst: retire unused string_list_member()

Fabian Ruch (1):
      add: use struct argv_array in run_add_interactive()

Felipe Contreras (10):
      transport-helper: mismerge fix
      transport-helper: don't update refs in dry-run
      transport-helper: add 'force' to 'export' helpers
      transport-helper: check for 'forced update' message
      remote-helpers: allow all tests running from any dir
      remote-hg: always normalize paths
      remote-bzr: add support for older versions
      completion: fix completing args of aliased "push", "fetch", etc.
      remote-bzr: trivial test fix
      prompt: fix missing file errors in zsh

Hiroyuki Sano (1):
      fsck: use bitwise-or assignment operator to set flag

Ilya Bobyr (1):
      rev-parse --parseopt: option argument name hints

Jacopo Notarstefano (2):
      git-bisect.sh: fix a few style issues
      branch.c: delete size check of newly tracked branch names

Jeff King (43):
      pack-objects: split add_object_entry
      repack: stop using magic number for ARRAY_SIZE(exts)
      repack: turn exts array into array-of-struct
      repack: handle optional files created by pack-objects
      t: add basic bitmap functionality tests
      t/perf: add tests for pack bitmaps
      cat-file: refactor error handling of batch_objects
      cat-file: fix a minor memory leak in batch_objects
      do not discard revindex when re-preparing packfiles
      block-sha1: factor out get_be and put_be wrappers
      read-cache: use get_be32 instead of hand-rolled ntoh_l
      tests: auto-set git-daemon port
      ewah: unconditionally ntohll ewah data
      tests: turn on network daemon tests by default
      http: never use curl_easy_perform
      config: disallow relative include paths from blobs
      docs: clarify remote restrictions for git-upload-archive
      CodingGuidelines: mention C whitespace rules
      repack: add `repack.packKeptObjects` config var
      docs: mark info/grafts as outdated
      match_explicit: hoist refspec lhs checks into their own function
      match_explicit_lhs: allow a "verify only" mode
      push: detect local refspec errors early
      cat-file: restore warn_on_object_refname_ambiguity flag
      rev-list: disable object/refname ambiguity check with --stdin
      pack-objects: show progress for reused packfiles
      pack-objects: show reused packfile objects in "Counting objects"
      pack-objects: turn off bitmaps when skipping objects
      subtree: initialize "prefix" variable
      t/Makefile: stop setting GIT_CONFIG
      t/test-lib: drop redundant unset of GIT_CONFIG
      t: drop useless sane_unset GIT_* calls
      t: stop using GIT_CONFIG to cross repo boundaries
      t: prefer "git config --file" to GIT_CONFIG with test_must_fail
      t: prefer "git config --file" to GIT_CONFIG
      t0001: make symlink reinit test more careful
      t0001: use test_path_is_*
      t0001: use test_config_global
      t0001: use test_must_fail
      t0001: drop useless subshells
      t0001: drop subshells just for "cd"
      pack-objects: do not reuse packfiles without --delta-base-offset
      config.c: mark die_bad_number as NORETURN

Jens Lehmann (2):
      submodule: don't access the .gitmodules cache entry after removing it
      submodule update: consistently document the '--checkout' option

Johan Herland (1):
      notes: disallow reusing non-blob as a note object

Johannes Sixt (11):
      t0008: skip trailing space test on Windows
      userdiff: support C++ ->* and .* operators in the word regexp
      userdiff: support unsigned and long long suffixes of integer constants
      t4018: an infrastructure to test hunk headers
      t4018: convert perl pattern tests to the new infrastructure
      t4018: convert java pattern test to the new infrastructure
      t4018: convert custom pattern test to the new infrastructure
      t4018: reduce test files for pattern compilation tests
      t4018: test cases for the built-in cpp pattern
      t4018: test cases showing that the cpp pattern misses many anchor points
      userdiff: have 'cpp' hunk header pattern catch more C++ anchor points

John Keeping (4):
      notes-utils: handle boolean notes.rewritemode correctly
      utf8: fix iconv error detection
      utf8: use correct type for values in interval table
      builtin/mv: don't use memory after free

John Marshall (1):
      stash doc: mention short form -k in save description

Jonathan Nieder (3):
      am doc: add a pointer to relevant hooks
      .gitignore: test-hashmap is a generated file
      test-hashmap.c: drop unnecessary #includes

Junio C Hamano (34):
      git add <pathspec>... defaults to "-A"
      git add: -u/-A now affects the entire working tree
      core.statinfo: remove as promised in Git 2.0
      push: switch default from "matching" to "simple"
      diff: remove "diff-files -q" in a version of Git in a distant future
      push: switch default from "matching" to "simple"
      open_istream(): do not dereference NULL in the error case
      combine-diff: simplify intersect_paths() further
      commit-tree: add and document --no-gpg-sign
      request-pull: pick up tag message as before
      request-pull: test updates
      request-pull: resurrect "pretty refname" feature
      *.sh: drop useless use of "env"
      tag: grok "--with" as synonym to "--contains"
      Start preparing for Git 2.0
      request-pull: documentation updates
      Update draft release notes to Git 2.0
      Update draft release notes to Git 2.0
      Update draft release notes to 2.0
      t1502: protect runs of SPs used in the indentation
      parse-options: multi-word argh should use dash to separate words
      update-index: teach --cacheinfo a new syntax "mode,sha1,path"
      parse-options: make sure argh string does not have SP or _
      Update draft release notes to 2.0
      Update draft release notes to 2.0
      parse-options: add cast to correct pointer type to OPT_SET_PTR
      Update draft release notes to 2.0
      Revert "Merge branch 'wt/doc-submodule-name-path-confusion-2'"
      Revert "submodule: explicit local branch creation in module_clone"
      Revert part of 384364b (Start preparing for Git 2.0, 2014-03-07)
      Update draft release notes to 2.0
      Update draft release notes to 2.0
      Update draft release notes for 2.0
      Git 2.0-rc0

Karsten Blees (14):
      add a hashtable implementation that supports O(1) removal
      buitin/describe.c: use new hash map implementation
      diffcore-rename.c: move code around to prepare for the next patch
      diffcore-rename.c: simplify finding exact renames
      diffcore-rename.c: use new hash map implementation
      name-hash.c: use new hash map implementation for directories
      name-hash.c: remove unreferenced directory entries
      name-hash.c: use new hash map implementation for cache entries
      name-hash.c: remove cache entries instead of marking them CE_UNHASHED
      remove old hash.[ch] implementation
      fix 'git update-index --verbose --again' output
      builtin/update-index.c: cleanup update_one
      read-cache.c: fix memory leaks caused by removed cache entries
      hashmap.h: use 'unsigned int' for hash-codes everywhere

Kirill A. Shutemov (3):
      builtin/config.c: rename check_blob_write() -> check_write()
      config: change git_config_with_options() interface
      config: teach "git config --file -" to read from the standard input

Kirill Smelkov (10):
      tree-diff: allow diff_tree_sha1 to accept NULL sha1
      tree-diff: convert diff_root_tree_sha1() to just call diff_tree_sha1 with old=NULL
      line-log: convert to using diff_tree_sha1()
      revision: convert to using diff_tree_sha1()
      tree-walk: finally switch over tree descriptors to contain a pre-parsed entry
      diffcore-order: export generic ordering interface
      diff test: add tests for combine-diff with orderfile
      combine-diff: optimize combine_diff_path sets intersection
      combine-diff: combine_diff_path.len is not needed anymore
      tests: add checking that combine-diff emits only correct paths

Lars Gullik Bjønnes (1):
      git-contacts: do not fail parsing of good diffs

Linus Torvalds (2):
      request-pull: more strictly match local/remote branches
      request-pull: allow "local:remote" to specify names on both ends

Marat Radchenko (5):
      MSVC: allow linking with the cURL library
      MSVC: link in invalidcontinue.obj for better POSIX compatibility
      MSVC: fix t0040-parse-options crash
      parse-options: remove unused OPT_SET_PTR
      MSVC: allow using ExtUtils::MakeMaker

Max Horn (2):
      transport-helper.c: do not overwrite forced bit
      remote-hg: do not fail on invalid bookmarks

Michael Haggerty (14):
      rename read_replace_refs to check_replace_refs
      replace_object: use struct members instead of an array
      find_pack_entry(): document last_found_pack
      sha1_file_name(): declare to return a const string
      sha1_file.c: document a bunch of functions defined in the file
      Add docstrings for lookup_replace_object() and do_lookup_replace_object()
      Document some functions defined in object.c
      cache_tree_find(): remove redundant checks
      cache_tree_find(): find the end of path component using strchrnul()
      cache_tree_find(): fix comment formatting
      cache_tree_find(): remove redundant check
      cache_tree_find(): remove early return
      cache_tree_find(): use path variable when passing over slashes
      git-multimail: update to version 1.0.0

Nguyễn Thái Ngọc Duy (24):
      count-objects: recognize .bitmap in garbage-checking
      t7101, t7014: rename test files to indicate what that file is for
      reset: support "--mixed --intent-to-add" mode
      daemon: move daemonize() to libgit.a
      gc: config option for running --auto in background
      dir: warn about trailing spaces in exclude patterns
      dir: ignore trailing spaces in exclude patterns
      wt-status.c: make cut_line[] const to shrink .data section a bit
      wt-status.c: move cut-line print code out to wt_status_add_cut_line
      use wildmatch() directly without fnmatch() wrapper
      Revert "test-wildmatch: add "perf" command to compare wildmatch and fnmatch"
      stop using fnmatch (either native or compat)
      actually remove compat fnmatch source code
      sha1_file: fix delta_stack memory leak in unpack_entry
      i18n: mark all progress lines for translation
      commit: add --cleanup=scissors
      tag: support --sort=<spec>
      strbuf: style fix -- top opening bracket on a separate line
      upload-pack: send shallow info over stdin to pack-objects
      connect.c: SP after "}", not TAB
      object.h: centralize object flag allocation
      log: add --show-linear-break to help see non-linear history
      gc --aggressive: make --depth configurable
      environment.c: fix constness for odb_pack_keep()

Nicolas Vigier (10):
      cherry-pick, revert: add the --gpg-sign option
      git-sh-setup.sh: add variable to use the stuck-long mode
      am: parse options in stuck-long mode
      am: add the --gpg-sign option
      rebase: remove useless arguments check
      rebase: don't try to match -M option
      rebase: parse options in stuck-long mode
      rebase: add the --gpg-sign option
      commit-tree: add the commit.gpgsign option to sign all commits
      test the commit.gpgsign config option

Ralf Thielow (1):
      help.c: rename function "pretty_print_string_list"

René Scharfe (13):
      t7810: add missing variables to tests in loop
      grep: support -h (no header) with --count
      t4209: set up expectations up front
      t4209: factor out helper function test_log()
      t4209: factor out helper function test_log_icase()
      t4209: use helper functions to test --grep
      t4209: use helper functions to test --author
      pickaxe: honor -i when used with -S and --pickaxe-regex
      pickaxe: merge diffcore_pickaxe_grep() and diffcore_pickaxe_count() into diffcore_pickaxe()
      pickaxe: move pickaxe() after pickaxe_match()
      pickaxe: call strlen only when necessary in diffcore_pickaxe_count()
      pickaxe: simplify kwset loop in contains()
      rev-parse: fix typo in example on manpage

Richard Hansen (2):
      test-hg.sh: tests are now expected to pass
      remote-bzr: support the new 'force' option

Richard Lowe (1):
      diffcore.h: be explicit about the signedness of is_binary

Roberto Tyley (1):
      Documentation: fix documentation AsciiDoc links for external urls

Rohit Mani (1):
      use strchrnul() in place of strchr() and strlen()

Scott J. Goldman (1):
      add uploadarchive.allowUnreachable option

Sebastian Schuberth (1):
      t5510: Do not use $(pwd) when fetching / pushing / pulling via rsync

Simon Ruderich (2):
      git-config: document interactive.singlekey requires Term::ReadKey
      git-add--interactive: warn if module for interactive.singlekey is missing

Sun He (3):
      write_pack_file: use correct variable in diagnostic
      finish_tmp_packfile():use strbuf for pathname construction
      Use hashcpy() when copying object names

Sup Yut Sum (1):
      completion: teach --recurse-submodules to fetch, pull and push

Tanay Abhra (1):
      commit.c: use skip_prefix() instead of starts_with()

Tay Ray Chuan (1):
      demonstrate git-commit --dry-run exit code behaviour

Thomas Gummerer (3):
      introduce GIT_INDEX_VERSION environment variable
      test-lib: allow setting the index format version
      read-cache: add index.version config variable

Vicent Marti (16):
      revindex: export new APIs
      pack-objects: refactor the packing list
      pack-objects: factor out name_hash
      revision: allow setting custom limiter function
      sha1_file: export `git_open_noatime`
      compat: add endianness helpers
      ewah: compressed bitmap implementation
      documentation: add documentation for the bitmap format
      pack-bitmap: add support for bitmap indexes
      pack-objects: use bitmaps when packing objects
      rev-list: add bitmap mode to speed up object lists
      pack-objects: implement bitmap writing
      repack: consider bitmaps when performing repacks
      pack-bitmap: implement optional name_hash cache
      ewah: support platforms that require aligned reads
      add `ignore_missing_links` mode to revwalk

Vlad Dogaru (1):
      git-p4: explicitly specify that HEAD is a revision

W. Trevor King (6):
      submodule: make 'checkout' update_module mode more explicit
      submodule: document module_clone arguments in comments
      submodule: explicit local branch creation in module_clone
      Documentation: describe 'submodule update --remote' use case
      doc: submodule.* config are keyed by submodule names
      doc: submodule.*.branch config is keyed by name

Yuxuan Shui (2):
      fsck.c:fsck_ident(): ident points at a const string
      fsck.c:fsck_commit(): use skip_prefix() to verify and skip constant

brian m. carlson (1):
      pull: add the --gpg-sign option.

dequis (1):
      remote-bzr: include authors field in pushed commits

Дилян Палаузов (1):
      Makefile: describe CHARSET_LIB better


Version v1.9.5; changes since v1.9.4:
-------------------------------------

Jeff King (9):
      t7300: repair filesystem permissions with test_when_finished
      unpack-trees: propagate errors adding entries to the index
      read-tree: add tests for confusing paths like ".." and ".git"
      verify_dotfile(): reject .git case-insensitively
      t1450: refactor ".", "..", and ".git" fsck tests
      fsck: notice .git case-insensitively
      utf8: add is_hfs_dotgit() helper
      read-cache: optionally disallow HFS+ .git variants
      fsck: complain about HFS+ ".git" aliases in trees

Johannes Schindelin (3):
      path: add is_ntfs_dotgit() helper
      read-cache: optionally disallow NTFS .git variants
      fsck: complain about NTFS ".git" aliases in trees

Junio C Hamano (2):
      Git 1.8.5.6
      Git 1.9.5

René Scharfe (1):
      annotate: use argv_array

Ronnie Sahlberg (1):
      enums: remove trailing ',' after last item in enum

Wieland Hoffmann (1):
      git-tag.txt: Add a missing hyphen to `-s`

brian m. carlson (1):
      Documentation: fix missing text for rev-parse --verify


Version v1.9.4; changes since v1.9.3:
-------------------------------------

Junio C Hamano (2):
      t3004: add test for ls-files on symlinks via absolute paths
      Git 1.9.4

Martin Erik Werner (6):
      t0060: add test for prefix_path on symlinks via absolute paths
      t0060: add test for prefix_path when path == work tree
      t0060: add tests for prefix_path when path begins with work tree
      setup: add abspath_part_inside_repo() function
      setup: don't dereference in-tree symlinks for absolute paths
      setup: fix windows path buffer over-stepping

Richard Hansen (1):
      git-prompt.sh: don't assume the shell expands the value of PS1


Version v1.9.3; changes since v1.9.2:
-------------------------------------

Jonathan Nieder (1):
      shell doc: remove stray "+" in example

Junio C Hamano (2):
      Start preparing for 1.9.3
      Git 1.9.3

Kyle J. McKay (4):
      test: fix t7001 cp to use POSIX options
      test: fix t5560 on FreeBSD
      rebase: avoid non-function use of "return" on FreeBSD
      Revert "rebase: fix run_specific_rebase's use of "return" on FreeBSD"

Richard Hansen (1):
      git-prompt.sh: don't put unsanitized branch names in $PS1

Tolga Ceylan (1):
      git-p4: format-patch to diff-tree change breaks binary patches

Torsten Bögershausen (1):
      utf8.c: partially update to version 6.3


Version v1.9.2; changes since v1.9.1:
-------------------------------------

Aman Gupta (1):
      update-ref: fail create operation over stdin if ref already exists

Benoit Pierre (7):
      merge hook tests: fix missing '&&' in test
      merge hook tests: use 'test_must_fail' instead of '!'
      test patch hunk editing with "commit -p -m"
      commit: fix patch hunk editing with "commit -p -m"
      merge: fix GIT_EDITOR override for commit hook
      merge hook tests: fix and update tests
      run-command: mark run_hook_with_custom_index as deprecated

Carlos Martín Nieto (2):
      fetch: add a failing test for prunning with overlapping refspecs
      fetch: handle overlaping refspecs on --prune

Jeff King (6):
      shallow: use stat_validity to check for up-to-date file
      shallow: automatically clean up shallow tempfiles
      t/lib-terminal: make TTY a lazy prerequisite
      shallow: verify shallow file after taking lock
      date: recognize bogus FreeBSD gmtime output
      t4212: loosen far-in-future test for AIX

John Keeping (1):
      builtin/mv: fix out of bounds write

Jonathan Nieder (2):
      wt-status: extract the code to compute width for labels
      wt-status: i18n of section labels

Junio C Hamano (8):
      stash pop: mention we did not drop the stash upon failing to apply
      wt-status: make full label string to be subject to l10n
      wt-status: lift the artificual "at least 20 columns" floor
      index-pack: report error using the correct variable
      diff-no-index: correctly diagnose error return from diff_opt_parse()
      Start preparing for 1.9.1
      Update draft release notes to 1.9.2
      Git 1.9.2

Justin Lebar (4):
      Documentation: fix misuses of "nor"
      contrib: fix misuses of "nor"
      comments: fix misuses of "nor"
      code and test: fix misuses of "nor"

Matthieu Moy (1):
      status: disable translation when --porcelain is used

Michael Haggerty (2):
      checkout_entry(): use the strbuf throughout the function
      entry.c: fix possible buffer overflow in remove_subtree()

Ramkumar Ramachandra (1):
      Documentation/merge-strategies: avoid hyphenated commands

Thomas Ackermann (1):
      doc/http-backend: missing accent grave in literal mark-up

Uwe Storbeck (2):
      rebase -i: do not "echo" random user-supplied strings
      test-lib.sh: do not "echo" caller-supplied strings

brian m. carlson (1):
      mv: prevent mismatched data when ignoring errors.


Version v1.9.1; changes since v1.9.0:
-------------------------------------

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


Version v1.9.0; changes since v1.9.0-rc3:
-----------------------------------------

Jean-Noël Avila (1):
      l10n: fr: 1.9rc2 2211t

Jiang Xin (3):
      l10n: git.pot: v1.9 round 2 (1 new)
      l10n: zh_CN.po: translate 1 new message (2211t0f0u)
      l10n: zh_CN.po: Disambiguation for rebase

Junio C Hamano (2):
      Git 1.8.5.5
      Git 1.9.0

Michael J Gruber (1):
      release notes: typo fixes

Peter Krefting (1):
      l10n: Update Swedish translation (2211t0f0u)

Ralf Thielow (2):
      l10n: de.po: translate 28 new messages
      l10n: de.po: correct message when hiding commits by craft

Trần Ngọc Quân (1):
      l10n: vi.po (2211t): Updated one new string


Version v1.9.0-rc3; changes since v1.9-rc2:
-------------------------------------------

Adrian Johnson (1):
      userdiff: update Ada patterns

Junio C Hamano (3):
      Git 1.8.5.4
      howto/maintain-git.txt: new version numbering scheme
      Git 1.9.0-rc3

Nguyễn Thái Ngọc Duy (1):
      git-tag.txt: <commit> for --contains is optional

Torsten Bögershausen (1):
      repack.c: rename and unlink pack file if it exists

Øystein Walle (1):
      Documentation: fix typos in man pages


Version v1.9-rc2; changes since v1.9-rc1:
-----------------------------------------

Alexander Shopov (2):
      po/TEAMS: Added Bulgarian team
      l10n: Bulgarian translation of git (222t21f1967u)

Jean-Noël Avila (1):
      [fr] update french translation 2210/2210

Jiang Xin (3):
      l10n: git.pot: v1.9 round 1 (27 new, 11 removed)
      l10n: zh_CN.po: translate 27 messages (2210t0f0u)
      l10n: remove 2 blank translations on Danish, Dutch

Jonathan Nieder (1):
      pager test: make fake pager consume all its input

Junio C Hamano (1):
      Git 1.9-rc2

Peter Krefting (1):
      l10n: Update Swedish translation (2210t0f0u)

Trần Ngọc Quân (1):
      l10n: vi.po (2210t): Updated git-core translation


Version v1.9-rc1; changes since v1.9-rc0:
-----------------------------------------

Alexander Shopov (4):
      git-gui i18n: Initial glossary in Bulgarian
      git-gui l10n: Add 29 more terms to glossary
      git-gui i18n: Added Bulgarian translation
      gitk: Add Bulgarian translation (304t)

Andy Spencer (1):
      tree_entry_interesting: match against all pathspecs

Anthony Baire (1):
      subtree: fix argument validation in add/pull/push

Astril Hayato (1):
      gitk: Comply with XDG base directory specification

Erik Faye-Lund (2):
      prefer xwrite instead of write
      mingw: remove mingw_write

Jeff King (18):
      fetch-pack: do not filter out one-level refs
      interpret_branch_name: factor out upstream handling
      interpret_branch_name: rename "cp" variable to "at"
      interpret_branch_name: always respect "namelen" parameter
      interpret_branch_name: avoid @{upstream} past colon
      interpret_branch_name: find all possible @-marks
      diff_filespec: reorder dirty_submodule macro definitions
      diff_filespec: drop funcname_pattern_ident field
      diff_filespec: drop xfrm_flags field
      diff_filespec: reorder is_binary field
      diff_filespec: use only 2 bits for is_binary flag
      t/perf: time rev-list with UNINTERESTING commits
      list-objects: only look at cmdline trees with edge_hint
      repack: fix typo in max-pack-size option
      repack: make parsed string options const-correct
      repack: propagate pack-objects options as strings
      t7501: fix "empty commit" test with NO_PERL
      t7700: do not use "touch" unnecessarily

Johannes Sixt (1):
      Makefile: Fix compilation of Windows resource file

John Keeping (3):
      completion: complete merge-base options
      completion: handle --[no-]fork-point options to git-rebase
      Makefile: remove redundant object in git-http{fetch,push}

Jonathan Nieder (3):
      gitignore doc: add global gitignore to synopsis
      git-gui: chmod +x po2msg, windows/git-gui.sh
      gitk: chmod +x po2msg.sh

Junio C Hamano (6):
      Documentation: exclude irrelevant options from "git pull"
      Documentation: "git pull" does not have the "-m" option
      revision: mark contents of an uninteresting tree uninteresting
      revision: propagate flag bits from tags to pointees
      Documentation: make it easier to maintain enumerated documents
      Git 1.9-rc1

Marc Branchaud (1):
      gitk: Replace "next" and "prev" buttons with down and up arrows

Max Kirillov (2):
      git-gui: fallback right pane to packed widgets with Tk 8.4
      gitk: Fix mistype

Michael Haggerty (22):
      safe_create_leading_directories(): fix format of "if" chaining
      safe_create_leading_directories(): reduce scope of local variable
      safe_create_leading_directories(): add explicit "slash" pointer
      safe_create_leading_directories(): rename local variable
      safe_create_leading_directories(): split on first of multiple slashes
      safe_create_leading_directories(): always restore slash at end of loop
      safe_create_leading_directories(): introduce enum for return values
      cmd_init_db(): when creating directories, handle errors conservatively
      safe_create_leading_directories(): add new error value SCLD_VANISHED
      gitattributes: document more clearly where macros are allowed
      refname_match(): always use the rules in ref_rev_parse_rules
      lock_ref_sha1_basic(): on SCLD_VANISHED, retry
      lock_ref_sha1_basic(): if locking fails with ENOENT, retry
      remove_dir_recurse(): tighten condition for removing unreadable dir
      remove_dir_recurse(): handle disappearing files and directories
      rename_ref(): extract function rename_tmp_log()
      rename_tmp_log(): handle a possible mkdir/rmdir race
      rename_tmp_log(): limit the number of remote_empty_directories() attempts
      rename_tmp_log(): on SCLD_VANISHED, retry
      safe_create_leading_directories(): on Windows, \ can separate path components
      Add cross-references between docs for for-each-ref and show-ref
      doc: remote author/documentation sections from more pages

Nguyễn Thái Ngọc Duy (1):
      tree-walk.c: ignore trailing slash on submodule in tree_entry_interesting()

Pat Thoyts (1):
      git-gui 0.19

Paul Mackerras (2):
      gitk: Update copyright dates
      gitk: Indent word-wrapped lines in commit display header

Pete Wyckoff (11):
      git p4 test: wildcards are supported
      git p4 test: ensure p4 symlink parsing works
      git p4: work around p4 bug that causes empty symlinks
      git p4 test: explicitly check p4 wildcard delete
      git p4 test: is_cli_file_writeable succeeds
      git p4 test: run as user "author"
      git p4 test: do not pollute /tmp
      git p4: handle files with wildcards when doing RCS scrubbing
      git p4: fix an error message when "p4 where" fails
      git p4 test: examine behavior with locked (+l) files
      git p4 doc: use two-line style for options with multiple spellings

Ruben Kerkhof (1):
      send-email: /etc/ssl/certs/ directory may not be usable as ca_path

Thomas Ackermann (2):
      create HTML for http-protocol.txt
      http-protocol.txt: don't use uppercase for variable names in "The Negotiation Algorithm"

Thomas Rast (2):
      Documentation/gitk: document -L option
      Documentation: @{-N} can refer to a commit

lin zuojian (1):
      git-svn: memoize _rev_list and rebuild


Version v1.9-rc0; changes since v1.8.5.6:
-----------------------------------------

Anders Kaseorg (1):
      submodule foreach: skip eval for more than one argument

Antoine Pelisse (2):
      Prevent buffer overflows when path is too long
      remote-hg: test 'shared_path' in a moved clone

Benny Siegert (1):
      Add MirBSD support to the build system.

Brodie Rao (1):
      sha1_name: don't resolve refs when core.warnambiguousrefs is false

Carlos Martín Nieto (1):
      send-pack: don't send a thin pack to a server which doesn't support it

Christian Couder (15):
      environment: normalize use of prefixcmp() by removing " != 0"
      builtin/remote: remove postfixcmp() and use suffixcmp() instead
      strbuf: introduce starts_with() and ends_with()
      replace {pre,suf}fixcmp() with {starts,ends}_with()
      rename READ_SHA1_FILE_REPLACE flag to LOOKUP_REPLACE_OBJECT
      replace_object: don't check read_replace_refs twice
      sha1_file.c: add lookup_replace_object_extended() to pass flags
      sha1_object_info_extended(): add an "unsigned flags" parameter
      t6050: show that git cat-file --batch fails with replace objects
      sha1_file: perform object replacement in sha1_object_info_extended()
      builtin/replace: teach listing using short, medium or full formats
      t6050: add tests for listing with --format
      builtin/replace: unset read_replace_refs
      Documentation/git-replace: describe --format option
      replace info: rename 'full' to 'long' and clarify in-code symbols

Crestez Dan Leonard (1):
      git p4: Use git diff-tree instead of format-patch

Felipe Contreras (9):
      test-lib.sh: convert $TEST_DIRECTORY to an absolute path
      test-bzr.sh, test-hg.sh: allow running from any dir
      remote-helpers: add extra safety checks
      remote-hg: fix 'shared path' path
      remote-hg: add tests for special filenames
      abspath: trivial style fix
      t: trivial whitespace cleanups
      fetch: add missing documentation
      remote: fix status with branch...rebase=preserve

Francesco Pretto (1):
      git-submodule.sh: 'checkout' is a valid update mode

Greg Jacobson (1):
      push: enhance unspecified push default warning

Jeff King (24):
      log_tree_diff: die when we fail to parse a commit
      assume parse_commit checks commit->object.parsed
      assume parse_commit checks for NULL commit
      use parse_commit_or_die instead of segfaulting
      use parse_commit_or_die instead of custom message
      checkout: do not die when leaving broken detached HEAD
      sha1write: make buffer const-correct
      use @@PERL@@ in built scripts
      http: return curl's AUTHAVAIL via slot_results
      remote-curl: pass curl slot_results back through run_slot
      drop support for "experimental" loose objects
      t5000: simplify gzip prerequisite checks
      pack-objects: name pack files after trailer hash
      pack-objects doc: treat output filename as opaque
      diff.c: fix some recent whitespace style violations
      builtin/prune.c: use strbuf to avoid having to worry about PATH_MAX
      do not pretend sha1write returns errors
      sha1_object_info_extended: provide delta base sha1s
      cat-file: provide %(deltabase) batch format
      use distinct username/password for http auth tests
      t0000: set TEST_OUTPUT_DIRECTORY for sub-tests
      t0000: simplify HARNESS_ACTIVE hack
      t0000: drop "known breakage" test
      t5531: further "matching" fixups

Jens Lehmann (3):
      submodule update: remove unnecessary orig_flags variable
      mv: better document side effects when moving a submodule
      rm: better document side effects when removing a submodule

Johannes Sixt (1):
      document --exclude option

John Keeping (8):
      repo-config: remove deprecated alias for "git config"
      tar-tree: remove deprecated command
      lost-found: remove deprecated command
      peek-remote: remove deprecated alias of ls-remote
      pull: use merge-base --fork-point when appropriate
      rebase: use reflog to find common base with upstream
      rebase: fix fork-point with zero arguments
      pull: suppress error when no remoteref is found

John Murphy (1):
      git-gui: corrected setup of git worktree under cygwin.

John Szakmeister (1):
      contrib/git-credential-gnome-keyring.c: small stylistic cleanups

Jonathan Nieder (16):
      git-remote-mediawiki: do not remove installed files in "clean" target
      git-remote-mediawiki: honor DESTDIR in "make install"
      git-remote-mediawiki build: make 'install' command configurable
      git-remote-mediawiki build: handle DESTDIR/INSTLIBDIR with whitespace
      Makefile: rebuild perl scripts when perl paths change
      Makefile: add PERLLIB_EXTRA variable that adds to default perl path
      mark Windows build scripts executable
      mark perl test scripts executable
      mark contributed hooks executable
      contrib: remove git-p4import
      test: make FILEMODE a lazy prereq
      test: replace shebangs with descriptions in shell libraries
      remove #!interpreter line from shell libraries
      stop installing git-tar-tree link
      pager: set LV=-c alongside LESS=FRSX
      diff test: reading a directory as a file need not error out

Junio C Hamano (17):
      revision: introduce --exclude=<glob> to tame wildcards
      merge-base: use OPT_CMDMODE and clarify the command line parsing
      merge-base: teach "--fork-point" mode
      rev-list --exclude: tests
      rev-list --exclude: export add/clear-ref-exclusion and ref-excluded API
      rev-parse: introduce --exclude=<glob> to tame wildcards
      bundle: use argv-array
      builtin/push.c: use strbuf instead of manual allocation
      push: use remote.$name.push as a refmap
      push: also use "upstream" mapping when pushing a single ref
      Start 1.9 cycle
      Update draft release notes to 1.9
      prune-packed: use strbuf to avoid having to worry about PATH_MAX
      Update draft release notes to 1.9
      Update draft release notes to 1.9
      Update draft release notes to 1.9
      Git 1.9-rc0

Karsten Blees (1):
      gitignore.txt: clarify recursive nature of excluded directories

Krzesimir Nowak (4):
      gitweb: Move check-ref-format code into separate function
      gitweb: Return 1 on validation success instead of passed input
      gitweb: Add a feature for adding more branch refs
      gitweb: Denote non-heads, non-remotes branches

Mads Dørup (1):
      git-gui: Improve font rendering on retina macbooks

Masanari Iida (1):
      git-gui: correct spelling errors in comments

Max Kirillov (2):
      git-gui: Add gui.displayuntracked option
      git-gui: right half window is paned

Michael Haggerty (26):
      t5510: use the correct tag name in test
      t5510: prepare test refs more straightforwardly
      t5510: check that "git fetch --prune --tags" does not prune branches
      api-remote.txt: correct section "struct refspec"
      get_ref_map(): rename local variables
      builtin/fetch.c: reorder function definitions
      get_expanded_map(): add docstring
      get_expanded_map(): avoid memory leak
      fetch: only opportunistically update references based on command line
      fetch --tags: fetch tags *in addition to* other stuff
      fetch --prune: prune only based on explicit refspecs
      query_refspecs(): move some constants out of the loop
      builtin/remote.c: reorder function definitions
      builtin/remote.c:update(): use struct argv_array
      fetch, remote: properly convey --no-prune options to subprocesses
      fetch-options.txt: simplify ifdef/ifndef/endif usage
      git-fetch.txt: improve description of tag auto-following
      ref_remove_duplicates(): avoid redundant bisection
      t5536: new test of refspec conflicts when fetching
      ref_remove_duplicates(): simplify loop logic
      ref_remote_duplicates(): extract a function handle_duplicate()
      handle_duplicate(): mark error message for translation
      fetch: improve the error messages emitted for conflicting refspecs
      shorten_unambiguous_ref(): introduce a new local variable
      gen_scanf_fmt(): delete function and use snprintf() instead
      shorten_unambiguous_ref(): tighten up pointer arithmetic

Nguyễn Thái Ngọc Duy (36):
      wt-status: take the alignment burden off translators
      gettext.c: detect the vsnprintf bug at runtime
      glossary-content.txt: rephrase magic signature part
      Support pathspec magic :(exclude) and its short form :!
      pathspec.c: support adding prefix magic to a pathspec with mnemonic magic
      parse-options: remove OPT_BOOLEAN
      transport.h: remove send_pack prototype, already defined in send-pack.h
      remote.h: replace struct extra_have_objects with struct sha1_array
      send-pack: forbid pushing from a shallow repository
      clone: prevent --reference to a shallow repository
      make the sender advertise shallow commits to the receiver
      connect.c: teach get_remote_heads to parse "shallow" lines
      shallow.c: extend setup_*_shallow() to accept extra shallow commits
      shallow.c: the 8 steps to select new commits for .git/shallow
      shallow.c: steps 6 and 7 to select new commits for .git/shallow
      fetch-pack.c: move shallow update code out of fetch_pack()
      fetch-pack.h: one statement per bitfield declaration
      clone: support remote shallow repository
      fetch: support fetching from a shallow repository
      upload-pack: make sure deepening preserves shallow roots
      fetch: add --update-shallow to accept refs that update .git/shallow
      receive-pack: reorder some code in unpack()
      receive/send-pack: support pushing from a shallow clone
      add GIT_SHALLOW_FILE to propagate --shallow-file to subprocesses
      connected.c: add new variant that runs with --shallow-file
      receive-pack: allow pushes that update .git/shallow
      send-pack: support pushing to a shallow clone
      remote-curl: pass ref SHA-1 to fetch-pack as well
      smart-http: support shallow fetch/clone
      receive-pack: support pushing to a shallow clone via http
      send-pack: support pushing from a shallow clone via http
      clone: use git protocol for cloning shallow repo locally
      prune: clean .git/shallow after pruning objects
      git-clone.txt: remove shallow clone limitations
      commit.c: make "tree" a const pointer in commit_tree*()
      t5537: fix incorrect expectation in test case 10

Nicolas Vigier (2):
      Use the word 'stuck' instead of 'sticked'
      rev-parse --parseopt: add the --stuck-long mode

Pat Thoyts (3):
      git-gui: added gui.maxrecentrepo to extend the number of remembered repos
      git-gui: show the maxrecentrepo config option in the preferences dialog
      git-gui: add menu item to launch a bash shell on Windows.

Paul Mackerras (1):
      gitk: Tag display improvements

Ramkumar Ramachandra (11):
      t6300 (for-each-ref): clearly demarcate setup
      t6300 (for-each-ref): don't hardcode SHA-1 hexes
      for-each-ref: introduce %(HEAD) asterisk marker
      for-each-ref: introduce %(upstream:track[short])
      for-each-ref: introduce %(color:...) for color
      for-each-ref: avoid color leakage
      zsh completion: find matching custom bash completion
      completion: introduce __gitcomp_nl_append ()
      completion: fix branch.autosetup(merge|rebase)
      completion: fix remote.pushdefault
      completion: complete format.coverLetter

Ramsay Jones (2):
      send-pack.c: mark a file-local function static
      shallow: remove unused code

Richard Hansen (6):
      test-bzr.sh, test-hg.sh: prepare for change to push.default=simple
      test-hg.sh: eliminate 'local' bashism
      test-hg.sh: avoid obsolete 'test' syntax
      test-hg.sh: fix duplicate content strings in author tests
      test-hg.sh: help user correlate verbose output with email test
      remote-bzr, remote-hg: fix email address regular expression

Roberto Tyley (1):
      docs: add filter-branch notes on The BFG

Roman Kagan (1):
      git-svn: workaround for a bug in svn serf backend

Samuel Bronson (3):
      t4056: add new tests for "git diff -O"
      diff: let "git diff -O" read orderfile from any file and fail properly
      diff: add diff.orderfile configuration variable

Sebastian Schuberth (3):
      git.c: consistently use the term "builtin" instead of "internal command"
      builtin/help.c: call load_command_list() only when it is needed
      builtin/help.c: speed up is_git_command() by checking for builtin commands first

Thomas Ackermann (1):
      user-manual: improve html and pdf formatting

Thomas Gummerer (4):
      diff: move no-index detection to builtin/diff.c
      diff: don't read index when --no-index is given
      diff: add test for --no-index executed outside repo
      diff: avoid some nesting

Thomas Rast (9):
      commit-slab: document clear_$slabname()
      commit-slab: declare functions "static inline"
      gitk: Support -G option from the command line
      gitk: Refactor per-line part of getblobdiffline and its support
      gitk: Split out diff part in $commitinfo
      gitk: Support showing the gathered inline diffs
      gitk: Recognize -L option
      commit-slab: sizeof() the right type in xrealloc
      config: arbitrary number of matches for --unset and --replace-all

Tom Miller (2):
      fetch --prune: always print header url
      fetch --prune: Run prune before fetching

Vasily Makarov (1):
      get_octopus_merge_bases(): cleanup redundant variable

Zoltan Klinger (1):
      difftool: display the number of files in the diff queue in the prompt

brian m. carlson (2):
      remote-curl: fix large pushes with GSSAPI
      Documentation: document pitfalls with 3-way merge

jcb91 (1):
      remote-hg: avoid buggy strftime()


Version v1.8.5.6; changes since v1.8.5.5:
-----------------------------------------

Jeff King (9):
      t7300: repair filesystem permissions with test_when_finished
      unpack-trees: propagate errors adding entries to the index
      read-tree: add tests for confusing paths like ".." and ".git"
      verify_dotfile(): reject .git case-insensitively
      t1450: refactor ".", "..", and ".git" fsck tests
      fsck: notice .git case-insensitively
      utf8: add is_hfs_dotgit() helper
      read-cache: optionally disallow HFS+ .git variants
      fsck: complain about HFS+ ".git" aliases in trees

Johannes Schindelin (3):
      path: add is_ntfs_dotgit() helper
      read-cache: optionally disallow NTFS .git variants
      fsck: complain about NTFS ".git" aliases in trees

Junio C Hamano (1):
      Git 1.8.5.6

René Scharfe (1):
      annotate: use argv_array

Ronnie Sahlberg (1):
      enums: remove trailing ',' after last item in enum

Wieland Hoffmann (1):
      git-tag.txt: Add a missing hyphen to `-s`

brian m. carlson (1):
      Documentation: fix missing text for rev-parse --verify


Version v1.8.5.5; changes since v1.8.5.4:
-----------------------------------------

Andy Spencer (1):
      tree_entry_interesting: match against all pathspecs

Jeff King (9):
      fetch-pack: do not filter out one-level refs
      interpret_branch_name: factor out upstream handling
      interpret_branch_name: rename "cp" variable to "at"
      interpret_branch_name: always respect "namelen" parameter
      interpret_branch_name: avoid @{upstream} past colon
      interpret_branch_name: find all possible @-marks
      repack: fix typo in max-pack-size option
      repack: make parsed string options const-correct
      repack: propagate pack-objects options as strings

Junio C Hamano (5):
      merge-base: separate "--independent" codepath into its own helper
      merge-base --octopus: reduce the result from get_octopus_merge_bases()
      revision: mark contents of an uninteresting tree uninteresting
      revision: propagate flag bits from tags to pointees
      Git 1.8.5.5

Ruben Kerkhof (1):
      send-email: /etc/ssl/certs/ directory may not be usable as ca_path


Version v1.8.5.4; changes since v1.8.5.3:
-----------------------------------------

Jens Lehmann (1):
      commit -v: strip diffs and submodule shortlogs from the commit message

Johannes Schindelin (1):
      Remove the line length limit for graft files

Johannes Sixt (2):
      git_connect: remove artificial limit of a remote command
      git_connect: factor out discovery of the protocol and its parts

Junio C Hamano (4):
      get_max_fd_limit(): fall back to OPEN_MAX upon getrlimit/sysconf failure
      Documentation: exclude irrelevant options from "git pull"
      Documentation: "git pull" does not have the "-m" option
      Git 1.8.5.4

Nguyễn Thái Ngọc Duy (2):
      clone,fetch: catch non positive --depth option value
      add: don't complain when adding empty project root

Roman Kagan (1):
      git-svn: workaround for a bug in svn serf backend

Thomas Rast (3):
      send-email: pass Debug to Net::SMTP::SSL::new
      send-email: --smtp-ssl-cert-path takes an argument
      send-email: set SSL options through IO::Socket::SSL::set_client_defaults

Torsten Bögershausen (8):
      t5601: remove clear_ssh, refactor setup_ssh_wrapper
      t5601: add tests for ssh
      git fetch-pack: add --diag-url
      t5500: add test cases for diag-url
      git fetch: support host:/~repo
      git_connect(): refactor the port handling for ssh
      connect.c: refactor url parsing
      git_connect(): use common return point

brian m. carlson (1):
      log: properly handle decorations with chained tags

Øystein Walle (1):
      stash: handle specifying stashes with $IFS


Version v1.8.5.3; changes since v1.8.5.2:
-----------------------------------------

Jeff King (5):
      rev-parse: correctly diagnose revision errors before "--"
      rev-parse: be more careful with munging arguments
      cat-file: pass expand_data to print_object_or_die
      cat-file: handle --batch format with missing type/size
      Revert "prompt: clean up strbuf usage"

Johannes Sixt (1):
      mv: let 'git mv file no-such-dir/' error out on Windows, too

Junio C Hamano (1):
      Git 1.8.5.3

Kyle J. McKay (1):
      gc: notice gc processes run by other users

Matthieu Moy (1):
      mv: let 'git mv file no-such-dir/' error out

Nguyễn Thái Ngọc Duy (1):
      daemon: be strict at parsing parameters --[no-]informative-errors

Ralf Thielow (1):
      l10n: de.po: fix translation of 'prefix'

Ramkumar Ramachandra (1):
      for-each-ref: remove unused variable

Thomas Ackermann (1):
      pack-heuristics.txt: mark up the file header properly

W. Trevor King (1):
      Documentation/gitmodules: Only 'update' and 'url' are required


Version v1.8.5.2; changes since v1.8.5.1:
-----------------------------------------

Jason St. John (6):
      Documentation/git-log: update "--log-size" description
      Documentation/git-log.txt: mark-up fix and minor rephasing
      State correct usage of literal examples in man pages in the coding standards
      Documentation/rev-list-options.txt: fix mark-up
      Documentation/rev-list-options.txt: fix some grammatical issues and typos
      Documentation/gitcli.txt: fix double quotes

Jeff King (1):
      unpack-trees: fix "read-tree -u --reset A B" with conflicted index

Johan Herland (1):
      sha1_file.c:create_tmpfile(): Fix race when creating loose object dirs

Junio C Hamano (4):
      t1005: reindent
      t1005: add test for "read-tree --reset -u A B"
      sha1_loose_object_info(): do not return success on missing object
      Git 1.8.5.2

Masanari Iida (3):
      typofixes: fix misspelt comments
      Documentation/technical/http-protocol.txt: typofixes
      contrib: typofixes

Michael Haggerty (1):
      cmd_repack(): remove redundant local variable "nr_packs"

Nguyễn Thái Ngọc Duy (2):
      diff: restrict pathspec limitations to diff b/f case only
      glossary-content.txt: fix documentation of "**" patterns

René Scharfe (1):
      SubmittingPatches: document how to handle multiple patches

Thomas Rast (1):
      Documentation: revamp git-cherry(1)

Torsten Bögershausen (1):
      git-fetch-pack uses URLs like git-fetch


Version v1.8.5.1; changes since v1.8.5:
---------------------------------------

Junio C Hamano (3):
      submodule: do not copy unknown update mode from .gitmodules
      Git 1.8.4.5
      Git 1.8.5.1

Nick Townsend (1):
      ref-iteration doc: add_submodule_odb() returns 0 for success


Version v1.8.5; changes since v1.8.5-rc3:
-----------------------------------------

Junio C Hamano (1):
      Git 1.8.5

Richard Hansen (2):
      remote-hg: don't decode UTF-8 paths into Unicode objects
      remote-hg: don't decode UTF-8 paths into Unicode objects


Version v1.8.5-rc3; changes since v1.8.5-rc2:
---------------------------------------------

Junio C Hamano (3):
      Revert "upload-pack: send non-HEAD symbolic refs"
      Git 1.8.4.4
      Git 1.8.5-rc3

Marc Branchaud (1):
      RelNotes: spelling & grammar fixes

Nguyễn Thái Ngọc Duy (1):
      pathspec: stop --*-pathspecs impact on internal parse_pathspec() uses

Torstein Hegge (1):
      branch: fix --verbose output column alignment


Version v1.8.5-rc2; changes since v1.8.5-rc1:
---------------------------------------------

Jason St. John (1):
      Correct word usage of "timezone" in "Documentation" directory

Jean-Noël Avila (1):
      l10n: fr.po 2194/1294 messages translated

Jiang Xin (2):
      l10n: git.pot: v1.8.5 round 1 (68 new, 9 removed)
      l10n: zh_CN.po: translate 68 messages (2194t0f0u)

Junio C Hamano (3):
      Start preparing for 1.8.4.3
      Git 1.8.4.3
      Git 1.8.5-rc2

Karsten Blees (1):
      gitignore.txt: fix documentation of "**" patterns

Peter Krefting (1):
      l10n: Update Swedish translation (2194t0f0u)

Ralf Thielow (3):
      po/TEAMS: update Thomas Rast's email address
      l10n: de.po: translate 68 new messages
      l10n: de.po: improve error message when pushing to unknown upstream

Trần Ngọc Quân (1):
      l10n: vi.po (2194t): Update and minor fix


Version v1.8.5-rc1; changes since v1.8.5-rc0:
---------------------------------------------

Anders Kaseorg (1):
      cvsserver: Determinize output to combat Perl 5.18 hash randomization

Antoine Pelisse (1):
      remote-hg: unquote C-style paths when exporting

Ben Walton (2):
      Change sed i\ usage to something Solaris' sed can handle
      Avoid difference in tr semantics between System V and BSD

Felipe Contreras (12):
      merge: simplify ff-only option
      t: replace pulls with merges
      revision: add missing include
      branch: trivial style fix
      sha1-name: trivial style cleanup
      transport-helper: trivial style fix
      describe: trivial style fixes
      pretty: trivial style fix
      revision: trivial style fixes
      diff: trivial style fix
      run-command: trivial style fixes
      setup: trivial style fixes

Jeff King (7):
      add-interactive: handle unborn branch in patch mode
      reset: pass real rev name to add--interactive
      howto: add article on recovering a corrupted object
      t: provide a perl() function which uses $PERL_PATH
      t: use perl instead of "$PERL_PATH" where applicable
      for-each-ref: avoid loading objects to print %(objectname)
      subtree: add makefile target for html docs

Jens Lehmann (1):
      mv: Fix spurious warning when moving a file in presence of submodules

Johannes Sixt (4):
      t5300-pack-object: do not compare binary data using test_cmp
      Windows: a test_cmp that is agnostic to random LF <> CRLF conversions
      tests: undo special treatment of CRLF for Windows
      t3200: do not open a HTML manual page when DEFAULT_MAN_FORMAT is html

Jonathan Nieder (1):
      t/README: tests can use perl even with NO_PERL

Junio C Hamano (5):
      doc/pull: clarify the illustrations
      Update draft release notes to 1.8.5
      t4015: simplify sed command that is not even seen by sed
      Update draft release notes to 1.8.5
      Git 1.8.5-rc1

Kacper Kornet (1):
      Fix '\%o' for printf from coreutils

Rüdiger Sonderfeld (1):
      web--browse: Add support for xdg-open

Sitaram Chamarty (1):
      doc/howto: warn about (dumb)http server document being too old

Stefan Beller (2):
      refs: remove unused function invalidate_ref_cache
      cache: remove unused function 'have_git_dir'

Vivien Didelot (2):
      Documentation: restore a space in unpack-objects usage
      Documentation: "pack-file" is not literal in unpack-objects


Version v1.8.5-rc0; changes since v1.8.4.5:
-------------------------------------------

Alexandru Juncu (1):
      git-p4: Fix occasional truncation of symlink contents.

Antoine Pelisse (1):
      remote-hg: fix path when cloning with tilde expansion

Brad King (8):
      reset: rename update_refs to reset_refs
      refs: report ref type from lock_any_ref_for_update
      refs: factor update_ref steps into helpers
      refs: factor delete_ref loose ref step into a helper
      refs: add function to repack without multiple refs
      refs: add update_refs for multiple simultaneous updates
      update-ref: support multiple simultaneous updates
      update-ref: add test cases covering --stdin signature

Brandon Casey (18):
      sha1_file: introduce close_one_pack() to close packs on fd pressure
      Don't close pack fd when free'ing pack windows
      contrib/git-credential-gnome-keyring.c: remove unnecessary pre-declarations
      contrib/git-credential-gnome-keyring.c: remove unused die() function
      contrib/git-credential-gnome-keyring.c: *style* use "if ()" not "if()" etc.
      contrib/git-credential-gnome-keyring.c: add static where applicable
      contrib/git-credential-gnome-keyring.c: exit non-zero when called incorrectly
      contrib/git-credential-gnome-keyring.c: strlen() returns size_t, not ssize_t
      contrib/git-credential-gnome-keyring.c: ensure buffer is non-empty before accessing
      contrib/git-credential-gnome-keyring.c: set Gnome application name
      contrib/git-credential-gnome-keyring.c: use gnome helpers in keyring_object()
      contrib/git-credential-gnome-keyring.c: use secure memory functions for passwds
      contrib/git-credential-gnome-keyring.c: use secure memory for reading passwords
      contrib/git-credential-gnome-keyring.c: use glib memory allocation functions
      contrib/git-credential-gnome-keyring.c: use glib messaging functions
      contrib/git-credential-gnome-keyring.c: report failure to store password
      contrib/git-credential-gnome-keyring.c: support ancient gnome-keyring
      contrib/git-credential-gnome-keyring.c: support really ancient gnome-keyring

Brian Gernhardt (3):
      Makefile: Fix APPLE_COMMON_CRYPTO with BLK_SHA1
      OS X: Fix redeclaration of die warning
      t5551: Remove header from curl cookie file

Christian Couder (7):
      replace: forbid replacing an object with one of a different type
      Documentation/replace: state that objects must be of the same type
      t6050-replace: test that objects are of the same type
      t6050-replace: add test to clean up all the replace refs
      Documentation/replace: add Creating Replacement Objects section
      replace: allow long option names
      t6050-replace: use some long option names

Dale R. Worley (2):
      t0070: test that git_mkstemps correctly checks return value of open()
      diff --no-index: clarify operation when not inside a repository

Dave Borowitz (1):
      http: add http.savecookies option to write out HTTP cookies

Dave Williams (1):
      check-ignore: Add option to ignore index contents

Eric Sunshine (36):
      t8001/t8002: blame: decompose overly-large test
      t8001/t8002: blame: demonstrate -L bounds checking bug
      t8001/t8002: blame: add empty file & partial-line tests
      blame: fix -L bounds checking bug
      t4211: log: demonstrate -L bounds checking bug
      t4211: retire soon-to-be unimplementable tests
      log: fix -L bounds checking bug
      t8001/t8002: blame: demonstrate acceptance of bogus -LX,+0 and -LX,-0
      blame: reject empty ranges -LX,+0 and -LX,-0
      t8001/t8002: blame: demonstrate acceptance of bogus -L,+0 and -L,-0
      blame: reject empty ranges -L,+0 and -L,-0
      git-log.txt: place each -L option variation on its own line
      line-range-format.txt: clarify -L:regex usage form
      range-set: publish API for re-use by git-blame -L
      blame: inline one-line function into its lone caller
      blame: accept multiple -L ranges
      t8001/t8002: blame: add tests of multiple -L options
      blame: document multiple -L support
      line-range: teach -L/RE/ to search relative to anchor point
      blame: teach -L/RE/ to search from end of previous -L range
      log: teach -L/RE/ to search from end of previous -L range
      line-range-format.txt: document -L/RE/ relative search
      line-range: teach -L^/RE/ to search from start of file
      line-range: teach -L:RE to search from end of previous -L range
      line-range: teach -L^:RE to search from start of file
      t8001/t8002: blame: add tests of -L line numbers less than 1
      line-range: reject -L line numbers less than 1
      contacts: validate hunk length earlier
      contacts: gather all blame sources prior to invoking git-blame
      contacts: reduce git-blame invocations
      name-hash: refactor polymorphic index_name_exists()
      employ new explicit "exists in index?" API
      name-hash: stop storing trailing '/' on paths in index_state.dir_hash
      dir: revert work-around for retired dangerous behavior
      t7508: avoid non-portable sed expression
      contacts: fix to work in subdirectories

Eric Wong (1):
      http: enable keepalive on TCP sockets

Felipe Contreras (26):
      remote-hg: ensure shared repo is initialized
      remote-hg: add shared repo upgrade
      unpack-trees: plug a memory leak
      remote-bzr: fix export of utf-8 authors
      remote-bzr: make bzr branches configurable per-repo
      remote-hg: fix test
      remote-hg: add missing &&s in the test
      remote-hg: improve basic test
      remote-helpers: trivial style fixes
      remote-helpers: cleanup more global variables
      remote-hg: use notes to keep track of Hg revisions
      reset: trivial refactoring
      branch: trivial style fix
      reset: trivial style cleanup
      add: trivial style cleanup
      sha1-name: pass len argument to interpret_branch_name()
      t: branch: trivial style fix
      t: branch: fix typo
      t: branch: fix broken && chains
      fast-export: make extra_refs global
      fast-export: refactor get_tags_and_duplicates()
      rev-parse test: modernize quoting and whitespace
      rev-parse test: use test_must_fail, not "if <command>; then false; fi"
      rev-parse test: use standard test functions for setup
      Add new @ shortcut for HEAD
      alias: have SP around arithmetic operators

Gerrit Pape (1):
      hooks/post-receive-email: set declared encoding to utf-8

Hiroshige Umino (1):
      cherry-pick: allow "-" as abbreviation of '@{-1}'

Jean-Noël Avila (1):
      l10n: fr.po: 2135/2135 messages translated

Jeff King (22):
      grep: allow to use textconv filters
      clear parsed flag when we free tree buffers
      cat-file: only split on whitespace when %(rest) is used
      test-sha1: add a binary output mode
      sha1-lookup: handle duplicate keys with GIT_USE_LOOKUP
      add tests for indexing packs with delta cycles
      test index-pack on packs with recoverable delta cycles
      write_index: optionally allow broken null sha1s
      pager: turn on "cat" optimization for DEFAULT_PAGER
      peel_onion: do not assume length of x_type globals
      t5308: check that index-pack --strict detects duplicate objects
      config: factor out integer parsing from range checks
      config: properly range-check integer values
      config: set errno in numeric git_parse_* functions
      config: make numeric parsing errors more clear
      git-config: always treat --int as 64-bit internally
      t5541: mark passing c-a-s test as success
      cherry-pick: handle "-" after parsing options
      remote: do not copy "origin" string literal
      http: use curl's tcp keepalive if available
      drop redundant semicolon in empty while
      silence gcc array-bounds warning

Jens Lehmann (6):
      mv: move submodules together with their work trees
      mv: move submodules using a gitfile
      submodule.c: add .gitmodules staging helper functions
      mv: update the path entry in .gitmodules for moved submodules
      rm: delete .gitmodules entry of submodules removed from the work tree
      Improve documentation concerning the status.submodulesummary setting

Jens Lindström (1):
      Clear fd after closing to avoid double-close error

Jeremy Huddleston (1):
      imap-send: use Apple's Security framework for base64 encoding

Jiang Xin (6):
      branch: report invalid tracking branch as gone
      status: always show tracking branch even no change
      documentation: clarify notes for clean.requireForce
      test: use unambigous leading path (/foo) for MSYS
      relative_path should honor dos-drive-prefix
      Use simpler relative_path when set_git_dir

Johan Herland (3):
      sample pre-commit hook: use --bool when retrieving config var
      Documentation/git-svn: Promote the use of --prefix in docs + examples
      git-svn: Warn about changing default for --prefix in Git v2.0

Johannes Sixt (1):
      compat/mingw.h: define PRId64

John Keeping (10):
      t9300: document fast-import empty path issues
      fast-import: set valid mode on root tree in "ls"
      fast-import: allow ls or filecopy of the root tree
      fast-import: allow moving the root tree
      rev-parse: remove restrictions on some options
      rev-parse(1): logically group options
      git_remote_helpers: remove little used Python library
      rm: re-use parse_pathspec's trailing-slash removal
      reset: handle submodule with trailing slash
      Documentation/Makefile: make AsciiDoc dblatex dir configurable

Jonathan Nieder (7):
      hooks/post-receive-email: use plumbing instead of git log/show
      hooks/post-receive-email: force log messages in UTF-8
      add -i test: use skip_all instead of repeated PERL prerequisite
      reset test: modernize style
      rev-parse test: use test_cmp instead of "test" builtin
      status test: add missing && to <<EOF blocks
      gc: remove gc.pid file at end of execution

Julien Carsique (1):
      git-prompt.sh: optionally show upstream branch name

Junio C Hamano (60):
      pack-objects: shrink struct object_entry
      diff_opt: track whether flags have been set explicitly
      setup_reflog_action: document the rules for using GIT_REFLOG_ACTION
      cache.h: move remote/connect API out of it
      builtin/push.c: use OPT_BOOL, not OPT_BOOLEAN
      check-ignore: the name of the character is NUL, not NULL
      check-attr: the name of the character is NUL, not NULL
      check-ignore -z: a single -z should apply to both input and output
      check-attr -z: a single -z should apply to both input and output
      diff: pass the whole diff_options to diffcore_apply_filter()
      diff: factor out match_filter()
      diff: preparse --diff-filter string argument
      diff: reject unknown change class given to --diff-filter
      diff: allow lowercase letter to specify what change class to exclude
      diff: deprecate -q option to diff-files
      remote.c: add command line option parser for "--force-with-lease"
      push --force-with-lease: implement logic to populate old_sha1_expect[]
      push --force-with-lease: tie it all together
      t5533: test "push --force-with-lease"
      parse-options: add OPT_CMDMODE()
      tag: use OPT_CMDMODE
      http.c: fix parsing of http.sslCertPasswordProtected variable
      config: add generic callback wrapper to parse section.<url>.key
      t5540/5541: smart-http does not support "--force-with-lease"
      send-pack: fix parsing of --force-with-lease option
      push: teach --force-with-lease to smart-http transport
      builtin/config: refactor collect_config()
      config: "git config --get-urlmatch" parses section.<url>.key
      builtin/config.c: compilation fix
      core-tutorial: trim the section on Inspecting Changes
      whatchanged: document its historical nature
      diff --no-index: describe in a separate paragraph
      config: rewrite core.pager documentation
      Start the post-1.8.4 cycle
      contrib/remote-helpers: style updates for test scripts
      contrib/remote-helpers: quote variable references in redirection targets
      Update draft release notes after merging the first batch of topics
      typofix: commit is spelled with two ems
      typofix: cherry is spelled with two ars
      Update draft release notes to 1.8.5 for the second batch of topics
      checkout: update synopsys and documentation on detaching HEAD
      Update draft release notes to 1.8.5
      mailmap: work around implementations with pure inline strcasecmp
      Update draft release notes to 1.8.5 for the third batch of topics
      Update draft release notes to 1.8.5 for the first half of the fourth batch
      Update draft release notes to 1.8.5 for the fourth batch of topics
      Update draft release notes to 1.8.5 for the fifth batch of topics
      C: have space around && and || operators
      abspath.c: have SP around arithmetic operators
      alloc.c: have SP around arithmetic operators
      archive.c: have SP around arithmetic operators
      base85.c: have SP around arithmetic operators
      block-sha1/sha1.c: have SP around arithmetic operators
      Update draft release notes to 1.8.5
      Update draft release notes to 1.8.5
      Update draft release notes to 1.8.5
      Update draft release notes to 1.8.5
      checkout_entry(): clarify the use of topath[] parameter
      Almost -rc0 for 1.8.5
      Git 1.8.5-rc0

Kacper Kornet (2):
      Make test "using invalid commit with -C" more strict
      t/t7106-reset-unborn-branch.sh: Add PERL prerequisite

Karsten Blees (3):
      MSVC: fix compile errors due to missing libintl.h
      MSVC: fix compile errors due to macro redefinitions
      MSVC: fix stat definition hell

Kazuki Saitoh (2):
      git p4 test: sanitize P4CHARSET
      git p4: implement view spec wildcards with "p4 where"

Keshav Kini (4):
      git-svn.txt: fix AsciiDoc formatting error
      git-svn.txt: reword description of gc command
      git-svn.txt: replace .git with $GIT_DIR
      git-svn.txt: elaborate on rev_map files

Kirill A. Shutemov (1):
      rebase -i: respect core.abbrev

Kyle J. McKay (2):
      config: add helper to normalize and match URLs
      config: parse http.<url>.<variable> using urlmatch

Lee Carver (1):
      Allow git-filter-branch to process large repositories with lots of branches.

Marc Branchaud (1):
      Provide some linguistic guidance for the documentation.

Mark Levedahl (1):
      t6131 - skip tests if on case-insensitive file system

Matthieu Moy (16):
      Documentation/fast-import: clarify summary for `feature` command
      Documentation/remote-helpers: document common use-case for private ref
      git-remote-mediawiki: add test and check Makefile targets
      transport-helper: add no-private-update capability
      git-remote-mediawiki: use no-private-update capability on dumb push
      git-remote-mediawiki: no need to update private ref in non-dumb push
      builtin/stripspace.c: fix broken indentation
      wt-status: use argv_array API
      submodule summary: ignore --for-status option
      status: disable display of '#' comment prefix by default
      tests: don't set status.displayCommentPrefix file-wide
      status: add missing blank line after list of "other" files
      commit: factor status configuration is a helper function
      wt-status: turn advice_status_hints into a field of wt_status
      commit: disable status hints when writing to COMMIT_EDITMSG
      RelNotes/1.8.5: direct script writers to "git status --porcelain"

Michael J Gruber (5):
      t4030: demonstrate behavior of show with textconv
      show: honor --textconv for blobs
      cat-file: do not die on --textconv without textconv filters
      t7008: demonstrate behavior of grep with textconv
      grep: honor --textconv for the case rev:path

Michael S. Tsirkin (1):
      doc: don't claim that cherry calls patch-id

Michael Schubert (1):
      fetch: make --prune configurable

Michal Nazarewicz (1):
      remove dead pastebin link from pack-heuristics document

Nazri Ramliy (2):
      git: run in a directory given with -C option
      t0056: "git -C" test updates

Nguyễn Thái Ngọc Duy (57):
      clean: remove unused variable "seen"
      move struct pathspec and related functions to pathspec.[ch]
      pathspec: i18n-ize error strings in pathspec parsing code
      pathspec: add copy_pathspec
      add parse_pathspec() that converts cmdline args to struct pathspec
      parse_pathspec: save original pathspec for reporting
      parse_pathspec: add PATHSPEC_PREFER_{CWD,FULL} flags
      convert some get_pathspec() calls to parse_pathspec()
      parse_pathspec: add special flag for max_depth feature
      parse_pathspec: support stripping submodule trailing slashes
      parse_pathspec: support stripping/checking submodule paths
      parse_pathspec: support prefixing original patterns
      guard against new pathspec magic in pathspec matching code
      clean: convert to use parse_pathspec
      commit: convert to use parse_pathspec
      status: convert to use parse_pathspec
      rerere: convert to use parse_pathspec
      checkout: convert to use parse_pathspec
      rm: convert to use parse_pathspec
      ls-files: convert to use parse_pathspec
      archive: convert to use parse_pathspec
      check-ignore: convert to use parse_pathspec
      add: convert to use parse_pathspec
      reset: convert to use parse_pathspec
      line-log: convert to use parse_pathspec
      convert read_cache_preload() to take struct pathspec
      convert run_add_interactive to use struct pathspec
      convert unmerge_cache to take struct pathspec
      checkout: convert read_tree_some to take struct pathspec
      convert report_path_error to take struct pathspec
      convert refresh_index to take struct pathspec
      convert {read,fill}_directory to take struct pathspec
      convert add_files_to_cache to take struct pathspec
      convert common_prefix() to use struct pathspec
      remove diff_tree_{setup,release}_paths
      remove init_pathspec() in favor of parse_pathspec()
      remove match_pathspec() in favor of match_pathspec_depth()
      tree-diff: remove the use of pathspec's raw[] in follow-rename codepath
      rename field "raw" to "_raw" in struct pathspec
      parse_pathspec: make sure the prefix part is wildcard-free
      parse_pathspec: preserve prefix length via PATHSPEC_PREFIX_ORIGIN
      kill limit_pathspec_to_literal() as it's only used by parse_pathspec()
      pathspec: support :(literal) syntax for noglob pathspec
      pathspec: make --literal-pathspecs disable pathspec magic
      pathspec: support :(glob) syntax
      parse_pathspec: accept :(icase)path syntax
      smart http: use the same connectivity check on cloning
      for-each-ref, quote: convert *_quote_print -> *_quote_buf
      gc: reject if another gc is running, unless --force is given
      push: respect --no-thin
      pathspec: catch prepending :(prefix) on pathspec with short magic
      add: lift the pathspec magic restriction on "add -p"
      pack-objects: no crc check when the cached version is used
      fetch-pack.c: show correct command name that fails
      clone: tighten "local paths with colons" check a bit
      Fix calling parse_pathspec with no paths nor PATHSPEC_PREFER_* flags
      entry.c: convert checkout_entry to use strbuf

Nicolas Pitre (1):
      lookup_object: remove hashtable_index() and optimize hash_obj()

Nicolas Vigier (2):
      git-svn: fix signed commit parsing
      config doc: user.signingkey is also used for signed commits

Philip Oakley (6):
      Doc: 'replace' merge and non-merge commits
      doc: command line interface (cli) dot-repository dwimmery
      config doc: update dot-repository notes
      remote doc: document long forms of set-head options
      remote set-head -h: add long options to synopsis
      doc/cli: make "dot repository" an independent bullet point

Ralf Thielow (2):
      Documentation/git-merge-file: document option "--diff3"
      status: show commit sha1 in "You are currently cherry-picking" message

Ramkumar Ramachandra (3):
      editor: use canonicalized absolute path
      tar-tree: remove dependency on sq_quote_print()
      quote: remove sq_quote_print()

Ramsay Jones (8):
      howto/setup-git-server-over-http: fix unescaped '^'s
      howto/revert-a-faulty-merge: fix unescaped '^'s
      config.c: mark file-local function static
      refs.c: spell NULL pointer as NULL
      wrapper.c: only define gitmkstemps if needed
      gitweb test: fix highlight test hang on Linux Mint
      format-patch doc: Thunderbird wraps lines unless mailnews.wraplength=0
      sparse: suppress some "using sizeof on a function" warnings

René Scharfe (1):
      pull: use $curr_branch_short more

Richard Hansen (9):
      peel_onion(): add support for <rev>^{tag}
      glossary: mention 'treeish' as an alternative to 'tree-ish'
      glossary: define commit-ish (a.k.a. committish)
      use 'tree-ish' instead of 'treeish'
      use 'commit-ish' instead of 'committish'
      glossary: more precise definition of tree-ish (a.k.a. treeish)
      revisions.txt: fix and clarify <rev>^{<type>}
      glossary: fix and clarify the definition of 'ref'
      remote-bzr: reuse bzrlib transports when possible

SZEDER Gábor (3):
      bash prompt: test the prompt with newline in repository path
      completion: improve untracked directory filtering for filename completion
      t3600: fix broken "choking git rm" test

Sebastian Schuberth (5):
      Documentation: make AsciiDoc links always point to HTML files
      MinGW: Fix stat definitions to work with MinGW runtime version 4.0
      Windows: do not redefine _WIN32_WINNT
      clone: add a period after "done" to end the sentence
      path-utils test: rename mingw_path function to print_path

Shawn O. Pearce (1):
      Document the HTTP transport protocols

Stefan Beller (22):
      rm: do not set a variable twice without intermediate reading.
      Remove deprecated OPTION_BOOLEAN for parsing arguments
      Replace deprecated OPT_BOOLEAN by OPT_BOOL
      log, format-patch: parsing uses OPT__QUIET
      checkout: remove superfluous local variable
      branch, commit, name-rev: ease up boolean conditions
      hash-object: replace stdin parsing OPT_BOOLEAN by OPT_COUNTUP
      config parsing options: allow one flag multiple times
      checkout-index: fix negations of even numbers of -n
      revert: use the OPT_CMDMODE for parsing, reducing code
      diff: remove ternary operator evaluating always to true
      diff: fix a possible null pointer dereference
      rm: remove unneeded null pointer check
      create_delta_index: simplify condition always evaluating to true
      mailmap: remove redundant check for freeing memory
      repack: rewrite the shell script in C
      repack: retain the return value of pack-objects
      repack: improve warnings about failure of renaming and removing files
      contrib: remove ciabot
      checkout test: enable test with complex relative path
      Reword repack documentation to no longer state it's a script
      git-svn docs: Use tabs consistently within the ascii doc

Stefan Saasen (2):
      mergetools/diffmerge: support DiffMerge as a git mergetool
      mergetool--lib: Fix typo in the merge/difftool help

Steffen Prohaska (1):
      git.txt: fix asciidoc syntax of --*-pathspecs

Stephen Haberman (1):
      pull: allow pull to preserve merges when rebasing

Ted Zlatanov (1):
      git-credential-netrc: fix uninitialized warning

Thomas Ackermann (11):
      Call it "Git User Manual" and remove reference to very old Git version
      Use current "detached HEAD" message
      Use current output for "git repack"
      Use "git merge" instead of "git pull ."
      Fix some typos and improve wording
      Simplify "How to make a commit"
      Improve section "Manipulating branches"
      Improve section "Merging multiple trees"
      Remove unnecessary historical note from "Object storage format"
      Remove irrelevant reference from "Tying it all together"
      "git prune" is safe

Thomas Gummerer (1):
      read-cache: use fixed width integer types

Thomas Rast (5):
      urlmatch.c: recompute pointer after append_normalized_escapes
      .mailmap: switch to Thomas Rast's personal address
      Documentation: revamp gitk(1)
      Revert "test-lib: support running tests under valgrind in parallel"
      Revert "test-lib: allow prefixing a custom string before "ok N" etc."

Tony Finch (4):
      gitweb: ensure OPML text fits inside its box
      gitweb: vertically centre contents of page footer
      gitweb: omit the repository owner when it is unset
      gitweb: make search help link less ugly

Torsten Bögershausen (1):
      Set core.precomposeunicode to true on e.g. HFS+

Uli Heller (1):
      git-svn: fix termination issues for remote svn connections

brian m. carlson (3):
      submodule: fix confusing variable name
      submodule: don't print status output with ignore=all
      CodingGuidelines: style for multi-line comments

Ævar Arnfjörð Bjarmason (1):
      gitweb: Fix the author initials in blame for non-ASCII names


Version v1.8.4.5; changes since v1.8.4.4:
-----------------------------------------

Junio C Hamano (2):
      submodule: do not copy unknown update mode from .gitmodules
      Git 1.8.4.5

Richard Hansen (1):
      remote-hg: don't decode UTF-8 paths into Unicode objects


Version v1.8.4.4; changes since v1.8.4.3:
-----------------------------------------

Junio C Hamano (2):
      Revert "upload-pack: send non-HEAD symbolic refs"
      Git 1.8.4.4


Version v1.8.4.3; changes since v1.8.4.2:
-----------------------------------------

Antoine Pelisse (1):
      remote-hg: unquote C-style paths when exporting

Brian Gernhardt (3):
      t5570: Update for symref capability
      t5570: Update for clone-progress-to-stderr branch
      t5570: Update for clone-progress-to-stderr branch

Hemmo Nieminen (1):
      graph: fix coloring around octopus merges

Jeff King (11):
      http_get_file: style fixes
      http_request: factor out curlinfo_strbuf
      http: refactor options to http_get_*
      http: hoist credential request out of handle_curl_result
      http: provide effective url to callers
      http: update base URLs when we see redirects
      remote-curl: make refs_url a strbuf
      remote-curl: store url as a strbuf
      remote-curl: rewrite base url from info/refs redirects
      split_ident: parse timestamp from end of line
      subtree: add makefile target for html docs

Jonathan Nieder (1):
      t/README: tests can use perl even with NO_PERL

Junio C Hamano (10):
      t5505: fix "set-head --auto with ambiguous HEAD" test
      upload-pack.c: do not pass confusing cb_data to mark_our_ref()
      upload-pack: send symbolic ref information as capability
      upload-pack: send non-HEAD symbolic refs
      connect.c: make parse_feature_value() static
      connect: annotate refs with their symref information in get_remote_head()
      clone: test the new HEAD detection logic
      revision: do not peel tags used in range notation
      Start preparing for 1.8.4.3
      Git 1.8.4.3

Karsten Blees (1):
      gitignore.txt: fix documentation of "**" patterns

Matthieu Moy (2):
      checkout: allow dwim for branch creation for "git checkout $branch --"
      checkout: proper error message on 'git checkout foo bar --'

Ramsay Jones (1):
      http.c: Spell the null pointer as NULL

SZEDER Gábor (1):
      bash prompt: don't use '+=' operator in show upstream code path

Sitaram Chamarty (1):
      doc/howto: warn about (dumb)http server document being too old

Vivien Didelot (2):
      Documentation: restore a space in unpack-objects usage
      Documentation: "pack-file" is not literal in unpack-objects


Version v1.8.4.2; changes since v1.8.4.1:
-----------------------------------------

Antoine Pelisse (1):
      commit: search author pattern against mailmap

Christian Couder (1):
      sha1_file: move comment about return value where it belongs

Eric Sunshine (5):
      rebase -i: fix cases ignoring core.commentchar
      dir.c::test_one_path(): work around directory_exists_in_index_icase() breakage
      t3404: make tests more self-contained
      t3404: rebase -i: demonstrate short SHA-1 collision
      t3200: fix failure on case-insensitive filesystems

Jeff King (8):
      has_sha1_file: re-check pack directory before giving up
      upload-pack: send keepalive packets during pack computation
      upload-pack: bump keepalive default to 5 seconds
      clone: send diagnostic messages to stderr
      clone: treat "checking connectivity" like other progress
      clone: always set transport options
      shortlog: ignore commits with missing authors
      format-patch: print in-body "From" only when needed

Johan Herland (4):
      t2024: Fix &&-chaining and a couple of typos
      t3200: Minor fix when preparing for tracking failure
      Refer to branch.<name>.remote/merge when documenting --track
      t3200: Add test demonstrating minor regression in 41c21f2

Johannes Sixt (1):
      add--interactive: fix external command invocation on Windows

John Keeping (1):
      merge-recursive: fix parsing of "diff-algorithm" option

Junio C Hamano (8):
      dir.c: use the cache_* macro to access the current index
      ls-files -k: a directory only can be killed if the index has a non-directory
      t3010: update to demonstrate "ls-files -k" optimization pitfalls
      rebase -i: fix short SHA-1 collision
      cvsserver: pick up the right mode bits
      Start preparing for 1.8.4.2
      Almost 1.8.4.2 ;-)
      Git 1.8.4.2

Matthijs Kooijman (1):
      Add testcase for needless objects during a shallow fetch

Nguyễn Thái Ngọc Duy (7):
      move setup_alternate_shallow and write_shallow_commits to shallow.c
      shallow: only add shallow graft points to new shallow file
      shallow: add setup_temporary_shallow()
      upload-pack: delegate rev walking in shallow fetch to pack-objects
      list-objects: reduce one argument in mark_edges_uninteresting
      list-objects: mark more commits as edges in mark_edges_uninteresting
      Make setup_git_env() resolve .git file when $GIT_DIR is not specified

Nicolas Vigier (1):
      git-merge: document the -S option

Per Cederqvist (1):
      branch.c: Relax unnecessary requirement on upstream's remote ref name

Ralf Thielow (2):
      rebase --preserve-merges: ignore "merge.log" config
      clone --branch: refuse to clone if upstream repo is empty

SZEDER Gábor (1):
      t4254: modernize tests

Steffen Prohaska (1):
      git-prune-packed.txt: fix reference to GIT_OBJECT_DIRECTORY

Torstein Hegge (1):
      test-lib: fix typo in comment

brian m. carlson (1):
      http-backend: provide Allow header for 405


Version v1.8.4.1; changes since v1.8.4:
---------------------------------------

Andreas Schwab (1):
      Documentation/git-merge.txt: fix formatting of example block

Benoit Person (1):
      git-remote-mediawiki: bugfix for pages w/ >500 revisions

Brandon Casey (3):
      git-completion.bash: use correct Bash/Zsh array length syntax
      t9902-completion.sh: old Bash still does not support array+=('') notation
      contrib/git-prompt.sh: handle missing 'printf -v' more gracefully

Jeff King (2):
      config: do not use C function names as struct members
      mailmap: handle mailmap blobs without trailing newlines

Jharrod LaFon (1):
      avoid segfault on submodule.*.path set to an empty "true"

Johannes Sixt (1):
      stream_to_pack: xread does not guarantee to read all requested bytes

Jonathan Nieder (1):
      Git 1.8.4.1

Junio C Hamano (6):
      t5802: add test for connect helper
      fetch: rename file-scope global "transport" to "gtransport"
      fetch: refactor code that prepares a transport
      fetch: refactor code that fetches leftover tags
      fetch: work around "transport-take-over" hack
      Start preparing for 1.8.4.1

Kyle J. McKay (3):
      Git.pm: add new temp_is_locked function
      git-svn: allow git-svn fetching to work using serf
      Git.pm: revert _temp_cache use of temp_is_locked

Matthieu Moy (2):
      die_with_status: use "printf '%s\n'", not "echo"
      rebase: fix run_specific_rebase's use of "return" on FreeBSD

Nguyễn Thái Ngọc Duy (1):
      fetch-pack: do not remove .git/shallow file when --depth is not specified

Ralf Thielow (1):
      l10n: de.po: use "das Tag" instead of "der Tag"

Ramsay Jones (1):
      builtin/fetch.c: Fix a sparse warning

Sebastien Helleu (1):
      l10n: fr.po: hotfix for commit 6b388fc

Steffen Prohaska (2):
      xread, xwrite: limit size of IO to 8MB
      Revert "compat/clipped-write.c: large write(2) fails on Mac OS X/XNU"

Tay Ray Chuan (1):
      t7406-submodule-update: add missing &&

Thomas Rast (2):
      log: use true parents for diff even when rewriting
      log: use true parents for diff when walking reflogs

Thorsten Glaser (1):
      fix shell syntax error in template

brian m. carlson (1):
      send-email: don't call methods on undefined values


Version v1.8.4; changes since v1.8.4-rc4:
-----------------------------------------

Junio C Hamano (2):
      Typofix draft release notes to 1.8.4
      Git 1.8.4


Version v1.8.4-rc4; changes since v1.8.4-rc3:
---------------------------------------------

Junio C Hamano (3):
      Revert "git stash: avoid data loss when "git stash save" kills a directory"
      Revert "Add new @ shortcut for HEAD"
      Git 1.8.4-rc4


Version v1.8.4-rc3; changes since v1.8.4-rc2:
---------------------------------------------

Eric Sunshine (1):
      parse-options: fix clang opterror() -Wunused-value warning

Jean-Noël Avila (2):
      l10n: fr.po: 821/2112 messages translated
      l10n: Add reference for french translation team

Jiang Xin (2):
      l10n: git.pot: v1.8.4 round 2 (5 new, 3 removed)
      l10n: zh_CN.po: translate 5 messages (2135t0f0u)

Junio C Hamano (2):
      .mailmap: update long-lost friends with multiple defunct addresses
      Git 1.8.4-rc3

Matthieu Moy (1):
      git-remote-mediawiki: ignore generated git-mw

Peter Krefting (1):
      l10n: Update Swedish translation (2135t0f0u)

Phil Hord (1):
      t/t7407: fix two typos in submodule tests

Ralf Thielow (3):
      l10n: de.po: switch from pure German to German+English
      l10n: de.po: translate 99 new messages
      l10n: de.po: translate 5 messages

Stefan Beller (2):
      .mailmap: fixup entries
      .mailmap: Combine more (name, email) to individual persons

Trần Ngọc Quân (1):
      l10n: vi.po(2135t): v1.8.4 round 2

Wieland Hoffmann (1):
      l10n: de.po: Fix a typo


Version v1.8.4-rc2; changes since v1.8.4-rc1:
---------------------------------------------

Felix Gruber (1):
      fix typo in documentation of git-svn

Jiang Xin (2):
      l10n: git.pot: v1.8.4 round 1 (99 new, 46 removed)
      l10n: zh_CN.po: translate 99 messages (2133t0f0u)

Jonathan Nieder (1):
      log doc: the argument to --encoding is not optional

Junio C Hamano (4):
      Revert "cat-file: split --batch input lines on whitespace"
      t3900: test rejecting log message with NULs correctly
      commit: typofix for xxFFF[EF] check
      Git 1.8.4-rc2

Ramsay Jones (1):
      cygwin: Remove the Win32 l/stat() implementation

René Scharfe (1):
      t8001, t8002: fix "blame -L :literal" test on NetBSD

Stefan Beller (1):
      .mailmap: Multiple addresses of Michael S. Tsirkin

Torstein Hegge (1):
      Documentation/rev-list-options: add missing word in --*-parents

Trần Ngọc Quân (1):
      l10n: vi.po (2133t)

brian m. carlson (1):
      Add missing test file for UTF-16.


Version v1.8.4-rc1; changes since v1.8.4-rc0:
---------------------------------------------

Brandon Casey (1):
      git-completion.bash: replace zsh notation that breaks bash 3.X

Daniele Segato (1):
      docs/git-tag: explain lightweight versus annotated tags

Jeff King (6):
      docs: fix 'report-status' protocol capability thinko
      docs: note that receive-pack knows side-band-64k capability
      document 'agent' protocol capability
      document 'quiet' receive-pack capability
      commit.h: drop redundant comment
      commit: tweak empty cherry pick advice for sequencer

Jiang Xin (2):
      Documentation/git-clean: fix description for range
      git-clean: implement partial matching for selection

Junio C Hamano (2):
      builtin/rm.c: consolidate error reporting for removing submodules
      Git 1.8.4-rc1

Lukas Fleischer (1):
      Avoid using `echo -n` anywhere

Maurício C Antunes (1):
      hg-to-git: --allow-empty-message in git commit

Michael Haggerty (1):
      do_one_ref(): save and restore value of current_ref

Michal Sojka (1):
      contrib/subtree: Fix make install target

Nguyễn Thái Ngọc Duy (1):
      document 'allow-tip-sha1-in-want' capability

Ondřej Bílka (1):
      many small typofixes

Ralf Thielow (1):
      git-rebase: fix typo

Ramkumar Ramachandra (1):
      config doc: quote paths, fixing tilde-interpretation

Ramsay Jones (1):
      commit-slab.h: Fix memory allocation and addressing

Stefan Beller (1):
      .mailmap: combine more (email, name) to individual persons

Thomas Rast (1):
      Rename advice.object_name_warning to objectNameWarning


Version v1.8.4-rc0; changes since v1.8.3.4:
-------------------------------------------

Adam Spiers (6):
      t0008: remove duplicated test fixture data
      check-ignore: add -n / --non-matching option
      check-ignore: move setup into cmd_check_ignore()
      check-ignore: allow incremental streaming of queries via --stdin
      Documentation: add caveats about I/O buffering for check-{attr,ignore}
      t0008: use named pipe (FIFO) to test check-ignore streaming

Alexey Shumkin (10):
      t6006 (rev-list-format): don't hardcode SHA-1 in expected outputs
      t7102 (reset): don't hardcode SHA-1 in expected outputs
      t4205 (log-pretty-formats): don't hardcode SHA-1 in expected outputs
      pretty: Add failing tests: --format output should honor logOutputEncoding
      pretty: --format output should honor logOutputEncoding
      t4041, t4205, t6006, t7102: use iso8859-1 rather than iso-8859-1
      t4205 (log-pretty-formats): revert back single quotes
      t4205, t6006, t7102: make functions better readable
      t6006 (rev-list-format): add tests for "%b" and "%s" for the case i18n.commitEncoding is not set
      t4205 (log-pretty-formats): avoid using `sed`

Andrew Pimlott (2):
      rebase -i: handle fixup! fixup! in --autosquash
      lib-rebase: style: use write_script, <<-\EOF

Andrew Wong (1):
      git add -e: Explicitly specify that patch should have no color

Antoine Pelisse (1):
      diff: add --ignore-blank-lines option

Arnaud Fontaine (1):
      Do not ignore merge options in interactive rebase

Benoit Person (9):
      git-remote-mediawiki: use Git.pm functions for credentials
      git-remote-mediawiki: remove hardcoded version number in the test suite
      git-remote-mediawiki: introduction of Git::Mediawiki.pm
      wrap-for-bin: make bin-wrappers chainable
      git-remote-mediawiki: add a git bin-wrapper for developement
      git-remote-mediawiki: update tests to run with the new bin-wrapper
      git-remote-mediawiki: factoring code between git-remote-mediawiki and Git::Mediawiki
      git-remote-mediawiki: add git-mw command
      git-remote-mediawiki: add preview subcommand into git mw

Benoit Sigoure (1):
      Revert "compat/unsetenv.c: Fix a sparse warning"

Bo Yang (2):
      Refactor parse_loc
      Export rewrite_parents() for 'log -L'

Brandon Casey (3):
      builtin/checkout.c: don't leak memory in check_tracking_name
      t/t9802: explicitly name the upstream branch to use as a base
      remote.c: avoid O(m*n) behavior in match_push_refs

Brian Gernhardt (1):
      t4205: replace .\+ with ..* in sed commands

Chris Packham (1):
      submodule update: allow custom command to update submodule working tree

Christian Couder (1):
      Makefile: replace "echo 1>..." with "echo >..."

Célestin Matte (32):
      git-remote-mediawiki: display message when launched directly
      git-remote-mediawiki: make a regexp clearer
      git-remote-mediawiki: move "use warnings;" before any instruction
      git-remote-mediawiki: replace :utf8 by :encoding(UTF-8)
      git-remote-mediawiki: always end a subroutine with a return
      git-remote-mediawiki: move a variable declaration at the top of the code
      git-remote-mediawiki: change syntax of map calls
      git-remote-mediawiki: rewrite unclear line of instructions
      git-remote-mediawiki: remove useless regexp modifier (m)
      git-remote-mediawiki: change the behaviour of a split
      git-remote-mediawiki: change separator of some regexps
      git-remote-mediawiki: change style in a regexp
      git-remote-mediawiki: change style in a regexp
      git-remote-mediawiki: add newline in the end of die() error messages
      git-remote-mediawiki: change the name of a variable
      git-remote-mediawiki: turn double-negated expressions into simple expressions
      git-remote-mediawiki: remove unused variable $entry
      git-remote-mediawiki: rename a variable ($last) which has the name of a keyword
      git-remote-mediawiki: assign a variable as undef and make proper indentation
      git-remote-mediawiki: check return value of open
      git-remote-mediawiki: remove import of unused open2
      git-remote-mediawiki: put long code into a subroutine
      git-remote-mediawiki: modify strings for a better coding-style
      git-remote-mediawiki: brace file handles for print for more clarity
      git-remote-mediawiki: replace "unless" statements with negated "if" statements
      git-remote-mediawiki: don't use quotes for empty strings
      git-remote-mediawiki: put non-trivial numeric values in constants.
      git-remote-mediawiki: fix a typo ("mediwiki" instead of "mediawiki")
      git-remote-mediawiki: clearly rewrite double dereference
      git-remote-mediawiki: add a .perlcriticrc file
      git-remote-mediawiki: add a perlcritic rule in Makefile
      git-remote-mediawiki: make error message more precise

Dale R. Worley (1):
      git_mkstemps: correctly test return value of open()

Dirk Wallenstein (1):
      request-pull: improve error message for invalid revision args

Doug Bell (1):
      show-ref: make --head always show the HEAD ref

Eduardo R. D'Avila (5):
      t9903: add tests for git-prompt pcmode
      git-prompt.sh: refactor colored prompt code
      t9903: remove redundant tests
      git-prompt.sh: do not print duplicate clean color code
      git-prompt.sh: add missing information in comments

Eric Sunshine (27):
      t4211: fix broken test when one -L range is subset of another
      range_set: fix coalescing bug when range is a subset of another
      builtin: add git-check-mailmap command
      t4203: test check-mailmap command invocation
      t4203: demonstrate loss of single-character name in mailmap entry
      t4203: demonstrate loss of uppercase characters in canonical email
      mailmap: debug: fix out-of-order fprintf() arguments
      mailmap: debug: fix malformed fprintf() format conversion specification
      mailmap: debug: eliminate -Wformat field precision type warning
      mailmap: debug: avoid passing NULL to fprintf() '%s' conversion specification
      git-log.txt: fix typesetting of example "git-log -L" invocation
      line-range: fix "blame -L X,-N" regression
      t8001/t8002 (blame): modernize style
      t8001/t8002 (blame): add blame -L tests
      t8001/t8002 (blame): add blame -L :funcname tests
      blame-options.txt: place each -L option variation on its own line
      blame-options.txt: explain that -L <start> and <end> are optional
      contrib: add git-contacts helper
      contrib: contacts: add ability to parse from committish
      contrib: contacts: interpret committish akin to format-patch
      contrib: contacts: add mailmap support
      contrib: contacts: add documentation
      range-set: fix sort_and_merge_range_set() corner case bug
      t4211: demonstrate empty -L range crash
      t4211: demonstrate crash when first -L encountered is empty range
      range-set: satisfy non-empty ranges invariant
      line-log: fix "log -LN" crash when N is last line of file

Felipe Contreras (108):
      transport-helper: report errors properly
      transport-helper: improve push messages
      transport-helper: clarify *:* refspec
      transport-helper: update refspec documentation
      transport-helper: clarify pushing without refspecs
      transport-helper: warn when refspec is not used
      transport-helper: trivial code shuffle
      transport-helper: update remote helper namespace
      completion: add file completion tests
      completion: document tilde expansion failure in tests
      completion; remove unuseful comments
      completion: use __gitcompadd for __gitcomp_file
      completion: refactor diff_index wrappers
      completion: refactor __git_complete_index_file()
      completion: add hack to enable file mode in bash < 4
      completion: add space after completed filename
      completion: remove __git_index_file_list_filter()
      fast-export: do not parse non-commit objects while reading marks file
      fast-export: don't parse commits while reading marks file
      fast-{import,export}: use get_sha1_hex() to read from marks file
      tests: at-combinations: simplify setup
      tests: at-combinations: check ref names directly
      tests: at-combinations: improve nonsense()
      sha1_name: remove no-op
      sha1_name: remove unnecessary braces
      completion: cleanup zsh wrapper
      completion: synchronize zsh wrapper
      sha1_name: reorganize get_sha1_basic()
      sha1_name: refactor reinterpret()
      Add new @ shortcut for HEAD
      sha1_name: compare variable with constant, not constant with variable
      test: remote-helper: add missing and
      transport-helper: fix remote helper namespace regression
      transport-helper: barf when user tries old:new
      transport-helper: check if the dry-run is supported
      remote-helpers: tests: use python directly
      remote-hg: tests: fix hg merge
      build: trivial simplification
      build: cleanup using $^
      build: cleanup using $<
      build: add NO_INSTALL variable
      build: do not install git-remote-testpy
      remote-bzr: recover from failed clones
      remote-bzr: fix for files with spaces
      remote-bzr: simplify get_remote_branch()
      remote-bzr: delay cloning/pulling
      remote-bzr: change global repo
      remote-bzr: trivial cleanups
      remote-bzr: reorganize the way 'wanted' works
      remote-bzr: add fallback check for a partial clone
      remote-hg: test: be a little more quiet
      remote-hg: trivial reorganization
      remote-helpers: test: cleanup white-spaces
      remote-helpers: test: cleanup style
      remote-helpers: tests: general improvements
      remote-helpers: test: simplify remote URLs
      remote-hg: test: simplify previous branch checkout
      remote-hg: load all extensions
      remote-hg: use a shared repository store
      remote-hg: shuffle some code
      remote-hg: improve node traversing
      remote-hg: add version checks to the marks
      remote-hg: switch from revisions to SHA-1 noteids
      remote-hg: upgrade version 1 marks
      remote-hg: ensure remote rebasing works
      remote-hg: trivial cleanups
      remote-hg: improve progress calculation
      remote-hg: always point HEAD to master
      remote-hg: add tests for 'master' bookmark
      remote-bzr: simplify test checks
      remote-hg: add check_bookmark() test helper
      remote-hg: update bookmarks when using a remote
      remote-hg: add remote tests
      remote-hg: add test to push new bookmark
      remote-hg: add test for diverged push
      remote-hg: add test for bookmark diverge
      remote-hg: add test for new bookmark special
      remote-hg: add test for big push
      remote-hg: add test for failed double push
      remote-hg: reorganize bookmark handling
      remote-hg: force remote bookmark push selectively
      remote-hg: only update necessary revisions
      remote-hg: implement custom push()
      remote-hg: implement custom checkheads()
      remote-hg: pass around revision refs
      remote-hg: check diverged bookmarks
      remote-hg: simplify branch_tip()
      remote-hg: improve branch listing
      remote-hg: use remote 'default' not local one
      remote-hg: improve lightweight tag author
      remote-hg: remove files before modifications
      remote-hg: add setup_big_push() helper
      remote-hg: add check_push() helper
      remote-helpers: improve marks usage
      remote-hg: trivial cleanup
      remote-hg: check if a fetch is needed
      remote-hg: add support for --dry-run
      remote-hg: add support for --force
      remote: trivial style cleanup
      test: trivial cleanups
      test: rebase: fix --interactive test
      send-email: remove warning about unset chainreplyto
      completion: zsh: improve bash script loading
      completion: avoid ls-remote in certain scenarios
      test: fix post rewrite hook report
      build: generate and clean test scripts
      build: do not install git-remote-testgit
      Makefile: use $^ to avoid listing prerequisites on the command line

Fredrik Gustafsson (2):
      git-submodule.sh: remove duplicate call to set_rev_name
      Add --depth to submodule update/add

Grahack (1):
      French translation: copy -> copie.

Heiko Voigt (6):
      git-gui: allow "\ No newline at end of file" for linewise staging
      config: factor out config file stack management
      config: drop cf validity check in get_next_char()
      config: make parsing stack struct independent from actual data source
      teach config --blob option to parse config from database
      do not die when error in config parsing of buf occurs

Jeff King (40):
      transport-helper: mention helper name when it dies
      commit: allow associating auxiliary info on-demand
      lookup_object: prioritize recently found objects
      t5510: start tracking-ref tests from a known state
      refactor "ref->merge" flag
      fetch: opportunistically update tracking refs
      t0005: test git exit code from signal death
      contrib: drop blameview/ directory
      t5303: drop "count=1" from corruption dd
      unpack_entry: do not die when we fail to apply a delta
      get_packed_ref_cache: reload packed-refs file when it changes
      for_each_ref: load all loose refs before packed refs
      transport-helper: be quiet on read errors from helpers
      fetch-pack: avoid quadratic list insertion in mark_complete
      commit.c: make compare_commits_by_commit_date global
      fetch-pack: avoid quadratic behavior in rev_list_push
      pretty.c: drop const-ness from pretty_print_context
      teach format-patch to place other authors into in-body "From"
      zero-initialize object_info structs
      teach sha1_object_info_extended a "disk_size" query
      clone: drop connectivity check for local clones
      add missing "format" function attributes
      use "sentinel" function attribute for variadic lists
      wt-status: use "format" function attribute for status_printf
      t1006: modernize output comparisons
      cat-file: teach --batch to stream blob objects
      cat-file: refactor --batch option parsing
      cat-file: add --batch-check=<format>
      cat-file: add %(objectsize:disk) format atom
      cat-file: split --batch input lines on whitespace
      pack-revindex: use unsigned to store number of objects
      pack-revindex: radix-sort the revindex
      t0008: avoid SIGPIPE race condition on fifo
      cat-file: disable object/refname ambiguity check for batch mode
      sha1_object_info_extended: rename "status" to "type"
      sha1_loose_object_info: make type lookup optional
      packed_object_info: hoist delta type resolution to helper
      packed_object_info: make type lookup optional
      sha1_object_info_extended: make type calculation optional
      sha1_object_info_extended: pass object_info to helpers

Jiang Xin (16):
      test: add test cases for relative_path
      path.c: refactor relative_path(), not only strip prefix
      quote.c: substitute path_relative with relative_path
      quote_path_relative(): remove redundant parameter
      write_name{_quoted_relative,}(): remove redundant parameters
      git-clean: refactor git-clean into two phases
      git-clean: add support for -i/--interactive
      git-clean: show items of del_list in columns
      git-clean: add colors to interactive git-clean
      git-clean: use a git-add-interactive compatible UI
      git-clean: add filter by pattern interactive action
      git-clean: add select by numbers interactive action
      git-clean: add ask each interactive action
      git-clean: add documentation for interactive git-clean
      test: add t7301 for git-clean--interactive
      test: run testcases with POSIX absolute paths on Windows

Johan Herland (3):
      finish_copy_notes_for_rewrite(): Let caller provide commit message
      Move copy_note_for_rewrite + friends from builtin/notes.c to notes-utils.c
      Move create_notes_commit() from notes-merge.c into notes-utils.c

Johannes Schindelin (2):
      Define NO_GETTEXT for Git for Windows
      Windows resource: handle dashes in the Git version gracefully

Johannes Sixt (4):
      git-remote-testgit: avoid process substitution
      git-remote-testgit: further remove some bashisms
      t0005: skip signal death exit code test on Windows
      rebase topology tests: fix commit names on case-insensitive file systems

John Keeping (20):
      t/Makefile: fix result handling with TEST_OUTPUT_DIRECTORY
      test output: respect $TEST_OUTPUT_DIRECTORY
      t/Makefile: don't define TEST_RESULTS_DIRECTORY recursively
      fetch: don't try to update unfetched tracking refs
      git-gui: fix file name handling with non-empty prefix
      add--interactive: respect diff.algorithm
      Documentation/Makefile: fix spaces around assignments
      Documentation/Makefile: move infodir to be with other '*dir's
      mergetool--lib: refactor {diff,merge}_cmd logic
      t7401: make indentation consistent
      t7403: modernize style
      t7403: add missing && chaining
      submodule: show full path in error message
      rev-parse: add --prefix option
      submodule: drop the top-level requirement
      completion: handle unstuck form of base git options
      completion: learn about --man-path
      git-config(1): clarify precedence of multiple values
      push: avoid suggesting "merging" remote changes
      pull: change the description to "integrate" changes

Jonathan Nieder (1):
      mingw: rename WIN32 cpp macro to GIT_WINDOWS_NATIVE

Jonathon Mah (2):
      Documentation: remove --prune from pack-refs examples
      Documentation: fix git-prune example usage

Jorge Juan Garcia Garcia (4):
      status: introduce status.short to enable --short by default
      status: introduce status.branch to enable --branch by default
      status: introduce status.short to enable --short by default
      status: introduce status.branch to enable --branch by default

Junio C Hamano (56):
      commit-slab: avoid large realloc
      date.c: add parse_expiry_date()
      line-log: fix documentation formatting
      t5801: "VAR=VAL shell_func args" is forbidden
      prune: introduce OPT_EXPIRY_DATE() and use it
      git-remote-testgit: build it to run under $SHELL_PATH
      t6111: allow checking the parents as well
      t6012: update test for tweaked full-history traversal
      Start 1.8.4 cycle
      Update draft release notes to 1.8.4
      Update draft release notes to 1.8.4
      Update draft release notes to 1.8.4
      commit-slab: introduce a macro to define a slab for new type
      test: test_must_be_empty helper
      Update draft release notes
      toposort: rename "lifo" field
      prio-queue: priority queue of pointers to structs
      sort-in-topological-order: use prio-queue
      log: --author-date-order
      Update draft release notes to 1.8.4
      t7512: test "detached from" as well
      Update draft release notes to 1.8.4
      t/lib-t6000: style fixes
      topology tests: teach a helper to take abbreviated timestamps
      t6003: add --date-order test
      topology tests: teach a helper to set author dates as well
      t6003: add --author-date-order test
      add -i: add extra options at the right place in "diff" command line
      Update draft release notes to 1.8.4
      Revert "Merge branch 'jg/status-config'"
      status/commit: make sure --porcelain is not affected by user-facing config
      Update draft release notes to 1.8.4
      Update draft release notes to 1.8.4
      Update draft release notes to 1.8.4
      Update draft release notes to 1.8.4
      Update draft release notes to 1.8.4
      treat_directory(): do not declare submodules to be untracked
      name-ref: factor out name shortening logic from name_ref()
      name-rev: allow converting the exact object name at the tip of a ref
      describe: use argv-array
      remote-http: use argv-array
      Update draft release notes to 1.8.4
      Update draft release notes for 1.8.4
      mailmap: do not lose single-letter names
      mailmap: do not downcase mailmap entries
      mailmap: style fixes
      Revert "git-clone.txt: remove the restriction on pushing from a shallow clone"
      Update draft release notes to 1.8.4
      Update draft release notes to 1.8.4
      name-rev: differentiate between tags and commits they point at
      describe: fix --contains when a tag is given as input
      t2202: make sure "git add" (no args) stays a no-op
      Update draft release notes to 1.8.4
      t7600: fix typo in test title
      t4211: fix incorrect rebase at f8395edc (range-set: satisfy non-empty ranges invariant)
      Git 1.8.4-rc0

Kevin Bracey (14):
      decorate.c: compact table when growing
      t6019: test file dropped in -s ours merge
      t6111: new TREESAME test set
      t6111: add parents to tests
      rev-list-options.txt: correct TREESAME for P
      Documentation: avoid "uninteresting"
      revision.c: Make --full-history consider more merges
      simplify-merges: never remove all TREESAME parents
      simplify-merges: drop merge from irrelevant side branch
      revision.c: add BOTTOM flag for commits
      revision.c: discount side branches when computing TREESAME
      revision.c: don't show all merges for --parents
      revision.c: make default history consider bottom commits
      am: replace uses of --resolved with --continue

Kirill Smelkov (1):
      git-gui: Fix parsing of <rev> <path-which-not-present-in-worktree>

Mark Levedahl (6):
      test-lib.sh - cygwin does not have usable FIFOs
      test-lib.sh - define and use GREP_STRIPS_CR
      Cygwin 1.7 needs compat/regex
      Cygwin 1.7 has thread-safe pread
      Cygwin 1.7 supports mmap
      cygwin: stop forcing core.filemode=false

Martin von Zweigbergk (7):
      add simple tests of consistency across rebase types
      add tests for rebasing with patch-equivalence present
      add tests for rebasing of empty commits
      add tests for rebasing root
      add tests for rebasing merged history
      t3406: modernize style
      tests: move test for rebase messages from t3400 to t3406

Mathieu Lienard--Mayor (2):
      rm: better error message on failure for multiple files
      rm: introduce advice.rmHints to shorten messages

Matthieu Moy (10):
      config: refactor management of color.ui's default value
      git-remote-mediawiki: better error message when HTTP(S) access fails
      make color.ui default to 'auto'
      git-remote-mediawiki: un-brace file handles in binmode calls
      t4000-diff-format.sh: modernize style
      diff: allow --no-patch as synonym for -s
      diff: allow --patch & cie to override -s/--no-patch
      Documentation/git-show.txt: include common diff options, like git-log.txt
      Documentation: move description of -s, --no-patch to diff-options.txt
      Documentation/git-log.txt: capitalize section names

Matthijs Kooijman (1):
      upload-pack: remove a piece of dead code

Michael Haggerty (75):
      git-gc.txt, git-reflog.txt: document new expiry options
      api-parse-options.txt: document "no-" for non-boolean options
      refs: document flags constants REF_*
      refs: document the fields of struct ref_value
      refs: document do_for_each_ref() and do_one_ref()
      refs: document how current_ref is used
      refs: define constant PEELED_LINE_LENGTH
      do_for_each_ref_in_dirs(): remove dead code
      get_packed_ref(): return a ref_entry
      peel_ref(): use function get_packed_ref()
      repack_without_ref(): use function get_packed_ref()
      refs: extract a function ref_resolves_to_object()
      refs: extract function peel_object()
      peel_object(): give more specific information in return value
      peel_ref(): fix return value for non-peelable, not-current reference
      refs: extract a function peel_entry()
      refs: change the internal reference-iteration API
      t3210: test for spurious error messages for dangling packed refs
      repack_without_ref(): silence errors for dangling packed refs
      search_ref_dir(): return an index rather than a pointer
      refs: change how packed refs are deleted
      t3211: demonstrate loss of peeled refs if a packed ref is deleted
      repack_without_ref(): write peeled refs in the rewritten file
      refs: extract a function write_packed_entry()
      pack-refs: rename handle_one_ref() to pack_one_ref()
      pack-refs: merge code from pack-refs.{c,h} into refs.{c,h}
      pack_one_ref(): rename "path" parameter to "refname"
      refs: use same lock_file object for both ref-packing functions
      pack_refs(): change to use do_for_each_entry()
      refs: inline function do_not_prune()
      pack_one_ref(): use function peel_entry()
      pack_one_ref(): use write_packed_entry() to do the writing
      pack_one_ref(): do some cheap tests before a more expensive one
      refs: change do_for_each_*() functions to take ref_cache arguments
      refs: handle the main ref_cache specially
      describe: make own copy of refname
      fetch: make own copies of refnames
      add_rev_cmdline(): make a copy of the name argument
      builtin_diff_tree(): make it obvious that function wants two entries
      cmd_diff(): use an object_array for holding trees
      cmd_diff(): rename local variable "list" -> "entry"
      cmd_diff(): make it obvious which cases are exclusive of each other
      revision: split some overly-long lines
      object_array: add function object_array_filter()
      revision: use object_array_filter() in implementation of gc_boundary()
      object_array_remove_duplicates(): rewrite to reduce copying
      fsck: don't put a void*-shaped peg in a char*-shaped hole
      find_first_merges(): initialize merges variable using initializer
      find_first_merges(): remove unnecessary code
      object_array_entry: fix memory handling of the name field
      do_fetch(): reduce scope of peer_item
      do_fetch(): clean up existing_refs before exiting
      add_existing(): do not retain a reference to sha1
      show_head_ref(): do not shadow name of argument
      show_head_ref(): rename first parameter to "refname"
      string_list_add_one_ref(): rename first parameter to "refname"
      string_list_add_refs_by_glob(): add a comment about memory management
      exclude_existing(): set existing_refs.strdup_strings
      register_ref(): make a copy of the bad reference SHA-1
      refs: document the lifetime of the args passed to each_ref_fn
      resolve_ref_unsafe(): extract function handle_missing_loose_ref()
      resolve_ref_unsafe(): handle the case of an SHA-1 within loop
      resolve_ref_unsafe(): close race condition reading loose refs
      repack_without_ref(): split list curation and entry writing
      pack_refs(): split creation of packed refs and entry writing
      refs: wrap the packed refs cache in a level of indirection
      refs: implement simple transactions for the packed-refs file
      refs: manage lifetime of packed refs cache via reference counting
      do_for_each_entry(): increment the packed refs cache refcount
      packed_ref_cache: increment refcount when locked
      Extract a struct stat_data from cache_entry
      add a stat_validity struct
      refs: do not invalidate the packed-refs cache unnecessarily
      git-multimail: an improved replacement for post-receive-email
      post-receive-email: deprecate script in favor of git-multimail

Michael Schubert (1):
      Change "remote tracking" to "remote-tracking"

Mike Crowe (1):
      describe: Add --first-parent option

Miklos Vajna (1):
      merge: handle --ff/--no-ff/--ff-only as a tri-state option

Namhyung Kim (1):
      name-rev: allow to specify a subpath for --refs option

Nguyễn Thái Ngọc Duy (10):
      clone: allow cloning local paths with colons in them
      index-pack: remove dead code (it should never happen)
      clone: open a shortcut for connectivity check
      prune-packed: avoid implying "1" is DRY_RUN in prune_packed_objects()
      get_sha1: warn about full or short object names that look like refs
      Makefile: promote wildmatch to be the default fnmatch implementation
      core: use env variable instead of config var to turn on logging pack access
      git.txt: document GIT_TRACE_PACKET
      Convert "struct cache_entry *" to "const ..." wherever possible
      git-clone.txt: remove the restriction on pushing from a shallow clone

Ondřej Bílka (3):
      typofix: release notes
      typofix: documentation
      typofix: in-code comments

Pat Thoyts (7):
      git-gui: fix the mergetool launcher for the Beyond Compare tool.
      git-gui: change dialog button positions for Windows to suit platform.
      Provide a Windows version resource for the git executables.
      Ensure the resource file is rebuilt when the version changes.
      Set the default help format to html for msys builds.
      git-gui: avoid an error message when removing the last remote
      git-gui 0.18

Peter Krefting (1):
      commit: reject non-characters

Petr Baudis (1):
      git stash: avoid data loss when "git stash save" kills a directory

Pierre le Riche (1):
      msysgit: Add the --large-address-aware linker directive to the makefile.

Ralf Thielow (1):
      wt-status: give better advice when cherry-pick is in progress

Ramkumar Ramachandra (54):
      tests: at-combinations: increase coverage
      tests: at-combinations: @{N} versus HEAD@{N}
      sha1_name: don't waste cycles in the @-parsing loop
      sha1_name: check @{-N} errors sooner
      am: tighten a conditional that checks for $dotest
      rebase -i: don't error out if $state_dir already exists
      rebase: prepare to do generic housekeeping
      am: return control to caller, for housekeeping
      rebase -i: return control to caller, for housekeeping
      rebase --merge: return control to caller, for housekeeping
      prompt: introduce GIT_PS1_STATESEPARATOR
      prompt: factor out gitstring coloring logic
      prompt: colorize ZSH prompt
      rebase: implement --[no-]autostash and rebase.autostash
      contrib: remove continuous/ and patches/
      completion: difftool takes both revs and files
      completion: show can take both revlist and paths
      rebase: guard against missing files in read_basic_state()
      rebase: finish_rebase() in fast-forward rebase
      rebase: finish_rebase() in noop rebase
      prompt: squelch error output from cat
      t/rebase: add failing tests for a peculiar revision
      sh-setup: add new peel_committish() helper
      rebase: use peel_committish() where appropriate
      am: handle stray $dotest directory
      t/am: use test_path_is_missing() where appropriate
      stash doc: add a warning about using create
      stash doc: document short form -p in synopsis
      stash: simplify option parser for create
      wt-status: remove unused field in grab_1st_switch_cbdata
      t/t2021-checkout-last: "checkout -" should work after a rebase finishes
      status: do not depend on rebase reflog messages
      checkout: respect GIT_REFLOG_ACTION
      stash: introduce 'git stash store'
      rebase: use 'git stash store' to simplify logic
      sequencer: write useful reflog message for fast-forward
      t/t5528-push-default: remove redundant test_config lines
      t/t5505-remote: modernize style
      t/t5505-remote: test push-refspec in branches-file
      t/t5505-remote: use test_path_is_missing
      remote: remove dead code in read_branches_file()
      t/t5505-remote: test url-with-# in branches-file
      ls-remote doc: fix example invocation on git.git
      ls-remote doc: rewrite <repository> paragraph
      ls-remote doc: don't encourage use of branches-file
      t/t5505-remote: test multiple push/pull in remotes-file
      config doc: rewrite push.default section
      rebase: use a better reflog message
      rebase -i: use a better reflog message
      push: change `simple` to accommodate triangular workflows
      t/t5528-push-default: generalize test_push_*
      t/t5528-push-default: test pushdefault workflows
      commit: make it work with status.short
      send-email: be explicit with SSL certificate verification

Ramsay Jones (14):
      compat/regex/regexec.c: Fix some sparse warnings
      compat/fnmatch/fnmatch.c: Fix a sparse error
      compat/nedmalloc: Fix some sparse warnings
      compat/nedmalloc: Fix compiler warnings on linux
      compat/unsetenv.c: Fix a sparse warning
      compat/win32/pthread.c: Fix a sparse warning
      compat/poll/poll.c: Fix a sparse warning
      compat/win32mmap.c: Fix some sparse warnings
      compat/mingw.c: Fix some sparse warnings
      sparse: Fix mingw_main() argument number/type errors
      cygwin: Remove the CYGWIN_V15_WIN32API build variable
      path: Fix a sparse warning
      Fix some sparse warnings
      Add the LAST_ARG_MUST_BE_NULL macro

René Scharfe (11):
      cache: mark cache_entry pointers const
      read-cache: mark cache_entry pointers const
      unpack-trees: factor out dup_entry
      unpack-trees: create working copy of merge entry in merged_entry
      diff-lib, read-tree, unpack-trees: mark cache_entry pointers const
      diff-lib, read-tree, unpack-trees: mark cache_entry array paramters const
      unpack-trees: free cache_entry array members for merges
      match-trees: factor out fill_tree_desc_strict
      unpack-trees: don't shift conflicts left and right
      diffcore-pickaxe: simplify has_changes and contains
      .mailmap: René Scharfe has a new email address

Richard Hartmann (3):
      templates: Use heredoc in pre-commit hook
      templates: Reformat pre-commit hook's message
      templates: spell ASCII in uppercase in pre-commit hook

SZEDER Gábor (16):
      bash prompt: fix redirection coding style in tests
      bash prompt: use 'write_script' helper in interactive rebase test
      completion, bash prompt: move __gitdir() tests to completion test suite
      bash prompt: add a test for symbolic link symbolic refs
      bash prompt: print unique detached HEAD abbreviated object name
      bash prompt: return early from __git_ps1() when not in a git repository
      bash prompt: run 'git rev-parse --git-dir' directly instead of __gitdir()
      bash prompt: use bash builtins to find out rebase state
      bash prompt: use bash builtins to find out current branch
      bash prompt: combine 'git rev-parse' executions in the main code path
      bash prompt: combine 'git rev-parse' for detached head
      bash prompt: use bash builtins to check for unborn branch for dirty state
      bash prompt: use bash builtins to check stash state
      bash prompt: avoid command substitution when checking for untracked files
      bash prompt: avoid command substitution when finalizing gitstring
      bash prompt: mention that PROMPT_COMMAND mode is faster

Sebastian Schuberth (1):
      Makefile: Do not use OLD_ICONV on MINGW anymore

Slava Kardakov (1):
      Fix `git svn` `rebase` & `dcommit` if top-level HEAD directory exist

Stefan Beller (10):
      .mailmap: Map "H.Merijn Brand" to "H. Merijn Brand"
      .mailmap: Map email addresses to names
      .mailmap: Combine more (email, name) to individual persons
      daemon.c:handle: Remove unneeded check for null pointer.
      commit: Fix a memory leak in determine_author_info
      diff.c: Do not initialize a variable, which gets reassigned anyway.
      parse_object_buffer: correct freeing the buffer
      .mailmap: combine more (email, name) to individual persons
      traverse_trees(): clarify return value of the callback
      open_istream: remove unneeded check for null pointer

Stefan Haller (1):
      git-gui: bring wish process to front on Mac

Thomas Gummerer (1):
      perf-lib: fix start/stop of perf tests

Thomas Rast (25):
      Implement line-history search (git log -L)
      log -L: :pattern:file syntax to find by funcname
      Speed up log -L... -M
      log -L: check range set invariants when we look it up
      log -L: fix overlapping input ranges
      t4211: pass -M to 'git log -M -L...' test
      log -L: test merge of parallel modify/rename
      log -L: store the path instead of a diff_filespec
      log -L: improve comments in process_all_files()
      git-log(1): remove --full-line-diff description
      fetch/pull doc: untangle meaning of bare <ref>
      sha1_file: silence sha1_loose_object_info
      test-lib: enable MALLOC_* for the actual tests
      test-lib: refactor $GIT_SKIP_TESTS matching
      test-lib: rearrange start/end of test_expect_* and test_skip
      test-lib: self-test that --verbose works
      test-lib: verbose mode for only tests matching a pattern
      test-lib: valgrind for only tests matching a pattern
      test-lib: allow prefixing a custom string before "ok N" etc.
      test-lib: support running tests under valgrind in parallel
      run-command: dup_devnull(): guard against syscalls failing
      daemon/shell: refactor redirection of 0/1/2 from /dev/null
      git: ensure 0/1/2 are open in main()
      apply, entry: speak of submodules instead of subprojects
      show-branch: fix description of --date-order

Tony Finch (1):
      gitweb: allow extra breadcrumbs to prefix the trail

Torsten Bögershausen (1):
      t0000: do not use export X=Y

W. Trevor King (4):
      doc/clone: Remove the '--bare -l -s' example
      doc/clone: Pick more compelling paths for the --reference example
      Documentation: Update the NFS remote examples to use the staging repo
      Documentation: Update 'linux-2.6.git' -> 'linux.git'

Xidorn Quan (1):
      credential-osxkeychain: support more protocols

brian m. carlson (3):
      send-email: provide port separately from hostname
      commit: reject invalid UTF-8 codepoints
      commit: reject overlong UTF-8 sequences


Version v1.8.3.4; changes since v1.8.3.3:
-----------------------------------------

Dennis Kaarsemaker (2):
      tests: allow sha1's as part of the path
      GIT-VERSION-GEN: support non-standard $GIT_DIR path

Fraser Tweedale (2):
      documentation: add git:// transport security notice
      diff-options: document default similarity index

Jeff King (5):
      t/lib-httpd/apache.conf: do not use LockFile in apache >= 2.4
      t/lib-httpd/apache.conf: load extra auth modules in apache 2.4
      t/lib-httpd/apache.conf: load compat access module in apache 2.4
      t/lib-httpd/apache.conf: configure an MPM module for apache 2.4
      lib-httpd/apache.conf: check version only after mod_version loads

Johannes Sixt (10):
      test-chmtime: Fix exit code on Windows
      t3010: modernize style
      tests: introduce test_ln_s_add
      tests: use test_ln_s_add to remove SYMLINKS prerequisite (trivial cases)
      t0000: use test_ln_s_add to remove SYMLINKS prerequisite
      t3030: use test_ln_s_add to remove SYMLINKS prerequisite
      t3100: use test_ln_s_add to remove SYMLINKS prerequisite
      t3509, t4023, t4114: use test_ln_s_add to remove SYMLINKS prerequisite
      t6035: use test_ln_s_add to remove SYMLINKS prerequisite
      t4011: remove SYMLINKS prerequisite

Junio C Hamano (7):
      fetch-options.txt: prevent a wildcard refspec from getting misformatted
      diff: demote core.safecrlf=true to core.safecrlf=warn
      t1512: correct leftover constants from earlier edition
      get_short_sha1(): correctly disambiguate type-limited abbreviation
      Start preparing for 1.8.3.4
      Update draft release notes to 1.8.3.4
      Git 1.8.3.4

Kevin Bracey (1):
      Documentation: Move "git diff <blob> <blob>"

Matthieu Moy (2):
      Documentation/git-push.txt: explain better cases where --force is dangerous
      Documentation/git-merge.txt: weaken warning about uncommited changes

Michael Haggerty (1):
      lockfile: fix buffer overflow in path handling

Namhyung Kim (1):
      config: Add description of --local option

Ondřej Bílka (1):
      update URL to the marc.info mail archive

Phil Hord (1):
      fix "builtin-*" references to be "builtin/*"

Ramkumar Ramachandra (2):
      column doc: rewrite documentation for column.ui
      name-rev doc: rewrite --stdin paragraph

René Scharfe (9):
      t5000: integrate export-subst tests into regular tests
      t5000, t5003: create directories for extracted files lazily
      t5000: factor out check_tar
      t5000: use check_tar for prefix test
      t5000: simplify tar-tree tests
      t5000: test long filenames
      read-cache: add simple performance test
      read-cache: free cache in discard_index
      use logical OR (||) instead of binary OR (|) in logical context

Stefan Beller (4):
      archive-zip:write_zip_entry: Remove second reset of size variable to zero.
      Documentation: "git reset <tree-ish> <pathspec>" takes a tree-ish, not tree-sh
      http-push.c::add_send_request(): do not initialize transfer_request
      apply.c::find_name_traditional(): do not initialize len to the line's length

Thomas Rast (7):
      coverage: split build target into compile and test
      coverage: do not delete .gcno files before building
      coverage: set DEFAULT_TEST_TARGET to avoid using prove
      coverage: build coverage-untested-functions by default
      Test 'commit --only' after 'checkout --orphan'
      t9902: fix 'test A == B' to use = operator
      test-lint: detect 'export FOO=bar'

Torstein Hegge (1):
      bisect: Fix log output for multi-parent skip ranges

Veres Lajos (1):
      random typofixes (committed missing a 't', successful missing an 's')

Vitor Antunes (1):
      t9801: git-p4: check ignore files with client spec

W. Trevor King (1):
      user-manual: Update download size for Git and the kernel

Yaakov Selkowitz (1):
      web--browse: support /usr/bin/cygstart on Cygwin


Version v1.8.3.3; changes since v1.8.3.2:
-----------------------------------------

Andrew Pimlott (2):
      lib-rebase: document exec_ in FAKE_LINES
      t7500: fix flipped actual/expect

Anthony Ramine (1):
      wildmatch: properly fold case everywhere

Brandon Casey (1):
      http.c: don't rewrite the user:passwd string multiple times

Charles McGarvey (1):
      gitweb: fix problem causing erroneous project list

Chris Rorvick (1):
      git.txt: remove stale comment regarding GIT_WORK_TREE

Clemens Buchacher (1):
      fix segfault with git log -c --follow

David Aguilar (4):
      Makefile: fix default regex settings on Darwin
      Makefile: add support for Apple CommonCrypto facility
      cache.h: eliminate SHA-1 deprecation warnings on Mac OS X
      imap-send: eliminate HMAC deprecation warnings on Mac OS X

Dmitry Marakasov (1):
      contrib/git-subtree: Use /bin/sh interpreter instead of /bin/bash

Felipe Contreras (4):
      read-cache: fix wrong 'the_index' usage
      read-cache: trivial style cleanups
      sequencer: remove useless indentation
      sequencer: avoid leaking message buffer when refusing to create an empty commit

Filipe Cabecinhas (1):
      compate/clipped-write.c: large write(2) fails on Mac OS X/XNU

Fredrik Gustafsson (1):
      handle multibyte characters in name

Jeff King (1):
      pull: update unborn branch tip after index

John Keeping (1):
      git-config: update doc for --get with multiple values

Junio C Hamano (6):
      deprecate core.statinfo at Git 2.0 boundary
      t5551: do not use unportable sed '\+'
      Documentation/diff-index: mention two modes of operation
      Start preparing for 1.8.3.3
      Update draft release notes to 1.8.3.3
      Git 1.8.3.3

Michael S. Tsirkin (9):
      t/send-email.sh: add test for suppress-cc=self
      send-email: fix suppress-cc=self on cccmd
      t/send-email: test suppress-cc=self on cccmd
      send-email: make --suppress-cc=self sanitize input
      t/send-email: add test with quoted sender
      t/send-email: test suppress-cc=self with non-ascii
      test-send-email: test for pre-sanitized self name
      send-email: add test for duplicate utf8 name
      send-email: sanitize author when writing From line

Ramkumar Ramachandra (6):
      sha1_name: fix error message for @{u}
      sha1_name: fix error message for @{<N>}, @{<date>}
      diffcore-pickaxe: make error messages more consistent
      diffcore-pickaxe doc: document -S and -G properly
      check-ignore doc: fix broken link to ls-files page
      fixup-builtins: retire an old transition helper script

René Scharfe (2):
      t5004: avoid using tar for checking emptiness of archive
      t5004: resurrect original empty tar archive test

Richard Hansen (1):
      Documentation/merge-options.txt: restore `-e` option

SZEDER Gábor (1):
      test: spell 'ls-files --delete' option correctly in test descriptions

Thomas Rast (2):
      pull: merge into unborn by fast-forwarding from empty tree
      apply: carefully strdup a possibly-NULL name

Torsten Bögershausen (1):
      t7400: test of UTF-8 submodule names pass under Mac OS

Vikrant Varma (2):
      help: add help_unknown_ref()
      merge: use help_unknown_ref()


Version v1.8.3.2; changes since v1.8.3.1:
-----------------------------------------

Felipe Contreras (1):
      prompt: fix for simple rebase

Johan Herland (8):
      t2024: Add tests verifying current DWIM behavior of 'git checkout <branch>'
      t2024: Show failure to use refspec when DWIMming remote branch names
      checkout: Use remote refspecs when DWIMming tracking branches
      t3200.39: tracking setup should fail if there is no matching refspec.
      t7201.24: Add refspec to keep --track working
      t9114.2: Don't use --track option against "svn-remote"-tracking branches
      branch.c: Validate tracking branches with refspecs instead of refs/remotes/*
      glossary: Update and rephrase the definition of a remote-tracking branch

John Keeping (1):
      contrib/subtree: don't delete remote branches if split fails

Junio C Hamano (3):
      strbuf_branchname(): do not double-expand @{-1}~22
      Start preparing for 1.8.3.2
      Git 1.8.3.2

Kenichi Saita (1):
      difftool --dir-diff: allow changing any clean working tree file

Kevin Bracey (2):
      t6019: demonstrate --ancestry-path A...B breakage
      revision.c: treat A...B merge bases as if manually specified

Matthijs Kooijman (1):
      combine-diff.c: Fix output when changes are exactly 3 lines apart

Michael Heemskerk (2):
      upload-pack: ignore 'shallow' lines with unknown obj-ids
      t5500: add test for fetching with an unknown 'shallow'

Nguyễn Thái Ngọc Duy (3):
      clone: let the user know when check_everything_connected is run
      urls.txt: avoid auto converting to hyperlink
      fetch-pack: prepare updated shallow file before fetching the pack

Ramkumar Ramachandra (4):
      push: factor out the detached HEAD error message
      push: fail early with detached HEAD and current
      push: make push.default = current use resolved HEAD
      completion: complete diff --word-diff

René Scharfe (1):
      commit: don't start editor if empty message is given with -m

Stefano Lattarini (1):
      configure: fix option help message for --disable-pthreads

Thomas Gummerer (1):
      prompt: fix show upstream with svn and zsh

Thomas Rast (1):
      Document push --no-verify

Torsten Bögershausen (1):
      t0070 "mktemp to unwritable directory" needs SANITY

Wieland Hoffmann (1):
      pre-push.sample: Make the script executable


Version v1.8.3.1; changes since v1.8.3:
---------------------------------------

Erik Faye-Lund (1):
      mingw: make mingw_signal return the correct handler

Felipe Contreras (1):
      sha1_file: trivial style cleanup

Fredrik Gustafsson (1):
      Document .git/modules

Jonathan Nieder (1):
      config: allow inaccessible configuration under $HOME

Junio C Hamano (3):
      Start 1.8.3.1 maintenance track
      t/README: test_must_fail is for testing Git
      Git 1.8.3.1

Karsten Blees (1):
      dir.c: fix ignore processing within not-ignored directories

Phil Hord (1):
      trivial: Add missing period in documentation

René Scharfe (1):
      submodule: remove redundant check for the_index.initialized


Version v1.8.3; changes since v1.8.3-rc3:
-----------------------------------------

Amit Bakshi (1):
      remote-hg: set stdout to binary mode on win32

Felipe Contreras (3):
      completion: regression fix for zsh
      remote-hg: trivial configuration note cleanup
      remote-hg: fix order of configuration comments

Jonathan Nieder (1):
      git-svn: clarify explanation of --destination argument

Junio C Hamano (1):
      Git 1.8.3

Nathan Gray (1):
      git-svn: multiple fetch/branches/tags keys are supported

Tobias Schulte (1):
      git-svn: introduce --parents parameter for commands branch and tag


Version v1.8.3-rc3; changes since v1.8.3-rc2:
---------------------------------------------

Dale R. Worley (1):
      git-submodule.txt: Clarify 'init' and 'add' subcommands.

Dale Worley (1):
      CodingGuidelines: Documentation/*.txt are the sources

Felipe Contreras (13):
      remote-bzr: update old organization
      remote-hg: trivial cleanups
      remote-hg: get rid of unused exception checks
      remote-hg: enable track-branches in hg-git mode
      remote-hg: add new get_config_bool() helper
      remote-hg: fix new branch creation
      remote-hg: disable forced push by default
      remote-hg: don't push fake 'master' bookmark
      remote-hg: update bookmarks when pulling
      remote-bzr: fix cloning of non-listable repos
      Revert "remote-hg: update bookmarks when pulling"
      remote-bzr: fixes for older versions of bzr
      documentation: trivial style cleanups

John Keeping (1):
      difftool: fix dir-diff when file does not exist in working tree

Junio C Hamano (1):
      Git 1.8.3-rc3

Peter Krefting (1):
      gitk: Update Swedish translation (304t)

Sandor Bodo-Merle (1):
      remote-bzr: fix old organization destroy


Version v1.8.3-rc2; changes since v1.8.3-rc1:
---------------------------------------------

Anand Kumria (1):
      gitk: Display the date of a tag in a human-friendly way

David Aguilar (1):
      mergetools/kdiff3: do not use --auto when diffing

Felipe Contreras (25):
      remote-bzr: cleanup CustomTree
      remote-bzr: delay blob fetching until the very end
      remote-bzr: fix order of locking in CustomTree
      remote-bzr: always try to update the worktree
      remote-bzr: add support to push merges
      remote-bzr: fixes for branch diverge
      remote-bzr: fix partially pushed merge
      remote-bzr: use branch variable when appropriate
      remote-bzr: add support for bzr repos
      remote-bzr: fix branch names
      remote-bzr: add support for shared repo
      remote-bzr: improve author sanitazion
      remote-bzr: add custom method to find branches
      remote-bzr: add option to specify branches
      remote-bzr: improve progress reporting
      remote-bzr: iterate revisions properly
      remote-bzr: delay peer branch usage
      remote-bzr: access branches only when needed
      transport-helper: improve push messages
      remote-bzr: convert all unicode keys to str
      remote-bzr: avoid bad refs
      remote-bzr: fix for disappeared revisions
      remote-helpers: trivial cleanup
      transport-helper: trivial style cleanup
      gitk: Simplify file filtering

Gauthier Östervall (1):
      gitk: Move hard-coded colors to .gitk

Jiang Xin (2):
      l10n: git.pot: v1.8.3 round 2 (44 new, 12 removed)
      l10n: zh_CN.po: translate 44 messages (2080t0f0u)

John Keeping (1):
      merge-tree: handle directory/empty conflict correctly

Jonathan Nieder (1):
      Git::SVN::*: add missing "NAME" section to perldoc

Junio C Hamano (4):
      Update draft release notes for 1.8.3
      cherry-pick: picking a tag that resolves to a commit is OK
      Git 1.8.2.3
      Git 1.8.3-rc2

Knut Franke (1):
      gitk: Add menu item for reverting commits

Martin Langhoff (1):
      gitk: Add support for -G'regex' pickaxe variant

Michael Contreras (1):
      git-svn: avoid self-referencing mergeinfo

Paul Mackerras (1):
      gitk: Improve behaviour of drop-down lists

Paul Walmsley (1):
      git-svn: added an --include-path flag

Peter Krefting (1):
      l10n: Update Swedish translation (2080t0f0u)

Ralf Thielow (1):
      l10n: de.po: translate 44 new messages

René Scharfe (2):
      t5004: ignore pax global header file
      t5004: avoid using tar for checking emptiness of archive

Tair Sabirgaliev (1):
      gitk: On OSX, bring the gitk window to front

Torsten Bögershausen (1):
      test-bzr: do not use unportable sed '\+'

Trần Ngọc Quân (1):
      l10n: Update Vietnamese translation (2080t0f0u)


Version v1.8.3-rc1; changes since v1.8.3-rc0:
---------------------------------------------

Anders Granskogen Bjørnstad (1):
      Documentation/git-commit: Typo under --edit

Felipe Contreras (5):
      completion: add missing format-patch options
      documentation: trivial whitespace cleanups
      complete: zsh: trivial simplification
      complete: zsh: use zsh completion for the main cmd
      completion: zsh: don't override suffix on _detault

H. Merijn Brand (1):
      Git.pm: call tempfile from File::Temp as a regular function

John Keeping (2):
      merge-tree: fix typo in "both changed identically"
      t/Makefile: remove smoke test targets

Junio C Hamano (2):
      Update draft release notes to 1.8.3
      Git 1.8.3-rc1

Marc Branchaud (1):
      Fix grammar in the 1.8.3 release notes.

Ramkumar Ramachandra (5):
      git-completion.bash: lexical sorting for diff.statGraphWidth
      git-completion.bash: add diff.submodule to config list
      git-completion.bash: complete branch.*.rebase as boolean
      git-completion.bash: add branch.*.pushremote to config list
      git-completion.bash: add remote.pushdefault to config list

Ramsay Jones (2):
      clone: Make the 'junk_mode' symbol a file static
      pretty: Fix bug in truncation support for %>, %< and %><

René Scharfe (3):
      pretty: simplify input line length calculation in pp_user_info()
      pretty: simplify output line length calculation in pp_user_info()
      pretty: remove intermediate strbufs from pp_user_info()

Thomas Rast (4):
      remote: add a test for extra arguments, according to docs
      remote: check for superfluous arguments in 'git remote add'
      remote: 'show' and 'prune' can take more than one remote
      unpack_entry: avoid freeing objects in base cache

Zoltan Klinger (1):
      bash-prompt.sh: show where rebase is at when stopped


Version v1.8.3-rc0; changes since v1.8.2.3:
-------------------------------------------

Aaron Schrab (2):
      clone: Fix error message for reference repository
      clone: Allow repo using gitfile as a reference

Antoine Pelisse (5):
      combine-diff: coalesce lost lines optimally
      fast-export: Allow pruned-references in mark file
      strbuf: create strbuf_humanise_bytes() to show byte sizes
      count-objects: add -H option to humanize sizes
      remote-hg: activate graphlog extension for hg_log()

Brad King (1):
      commit-tree: document -S option consistently

Brandon Casey (11):
      commit, cherry-pick -s: remove broken support for multiline rfc2822 fields
      t/test-lib-functions.sh: allow to specify the tag name to test_commit
      t/t3511: add some tests of 'cherry-pick -s' functionality
      sequencer.c: recognize "(cherry picked from ..." as part of s-o-b footer
      sequencer.c: require a conforming footer to be preceded by a blank line
      sequencer.c: always separate "(cherry picked from" from commit body
      sequencer.c: teach append_signoff how to detect duplicate s-o-b
      sequencer.c: teach append_signoff to avoid adding a duplicate newline
      Unify appending signoff in format-patch, commit and sequencer
      t7502: perform commits using alternate editor in a subshell
      git-commit: populate the edit buffer with 2 blank lines before s-o-b

Brian Gernhardt (3):
      t5550: do not assume the "matching" push is the default
      t5551: do not assume the "matching" push is the default
      t5570: do not assume the "matching" push is the default

Christophe Simonis (3):
      remote-bzr: fix directory renaming
      remote-bzr: remove files before modifications
      remote-bzr: fix utf-8 support for fetching

David Aguilar (4):
      difftool: silence uninitialized variable warning
      t7800: update copyright notice
      t7800: modernize tests
      t7800: "defaults" is no longer a builtin tool name

David Engster (1):
      remote-bzr: set author if available

Dusty Phillips (3):
      remote-hg: add missing config variable in doc
      remote-hg: push to the appropriate branch
      remote-helpers: avoid has_key

Felipe Contreras (64):
      remote-bzr: avoid echo -n
      remote-helpers: fix the run of all tests
      remote-bzr: remove stale check code for tests
      remote-hg: fix hg-git test-case
      remote-bzr: only update workingtree on local repos
      remote-bzr: avoid unreferred tags
      remote-bzr: add utf-8 support for pushing
      send-email: make annotate configurable
      format-patch: improve head calculation for cover-letter
      format-patch: refactor branch name calculation
      log: update to OPT_BOOL
      format-patch: add format.coverLetter configuration variable
      format-patch: trivial cleanups
      remote-bzr: improve tag handling
      remote-hg: trivial cleanups
      remote-hg: properly report errors on bookmark pushes
      remote-hg: make sure fake bookmarks are updated
      remote-hg: trivial test cleanups
      remote-hg: redirect buggy mercurial output
      remote-hg: split bookmark handling
      remote-hg: refactor export
      remote-hg: update remote bookmarks
      remote-hg: update tags globally
      remote-hg: force remote push
      remote-hg: show more proper errors
      remote-hg: add basic author tests
      remote-hg: add simple mail test
      remote-hg: fix bad state issue
      remote-hg: fix bad file paths
      completion: add more cherry-pick options
      completion: trivial test improvement
      completion: get rid of empty COMPREPLY assignments
      rebase-am: explicitly disable cover-letter
      completion: add new __gitcompadd helper
      completion: add __gitcomp_nl tests
      completion: get rid of compgen
      completion: inline __gitcomp_1 to its sole callsite
      completion: small optimization
      branch: colour upstream branches
      remote-bzr: fix prefix of tags
      remote-hg: safer bookmark pushing
      remote-hg: use python urlparse
      remote-hg: properly mark branches up-to-date
      remote-hg: add branch_tip() helper
      remote-hg: add support for tag objects
      remote-hg: custom method to write tags
      remote-hg: write tags in the appropriate branch
      remote-hg: add custom local tag write code
      remote-hg: improve email sanitation
      remote-hg: add support for schemes extension
      remote-hg: don't update bookmarks unnecessarily
      remote-hg: allow refs with spaces
      remote-hg: small performance improvement
      remote-hg: use marks instead of inlined files
      remote-hg: strip extra newline
      remote-bzr: use proper push method
      remote-helpers: trivial cleanups
      remote-hg: remove extra check
      remote-bzr: fix bad state issue
      remote-bzr: add support to push URLs
      remote-hg: use hashlib instead of hg sha1 util
      remote-bzr: store converted URL
      remote-bzr: tell bazaar to be quiet
      remote-bzr: strip extra newline

Jacob Sarvis (1):
      log: read gpg settings for signed commit verification

Jeff King (53):
      upload-pack: use get_sha1_hex to parse "shallow" lines
      upload-pack: do not add duplicate objects to shallow list
      upload-pack: remove packet debugging harness
      fetch-pack: fix out-of-bounds buffer offset in get_ack
      send-pack: prefer prefixcmp over memcmp in receive_status
      upload-archive: do not copy repo name
      upload-archive: use argv_array to store client arguments
      write_or_die: raise SIGPIPE when we get EPIPE
      pkt-line: move a misplaced comment
      pkt-line: drop safe_write function
      pkt-line: provide a generic reading function with options
      pkt-line: teach packet_read_line to chomp newlines
      pkt-line: move LARGE_PACKET_MAX definition from sideband
      pkt-line: provide a LARGE_PACKET_MAX static buffer
      pkt-line: share buffer/descriptor reading implementation
      teach get_remote_heads to read from a memory buffer
      remote-curl: pass buffer straight to get_remote_heads
      remote-curl: move ref-parsing code up in file
      remote-curl: always parse incoming refs
      t2200: check that "add -u" limits itself to subdirectory
      fast-export: rename handle_object function
      fast-export: do not load blob objects twice
      do not use GIT_TRACE_PACKET=3 in tests
      stream_blob_to_fd: detect errors reading from stream
      check_sha1_signature: check return value from read_istream
      read_istream_filtered: propagate read error from upstream
      avoid infinite loop in read_istream_loose
      add test for streaming corrupt blobs
      streaming_write_entry: propagate streaming errors
      add tests for cloning corrupted repositories
      clone: die on errors from unpack_trees
      clone: run check_everything_connected
      t1300: document some aesthetic failures of the config editor
      clone: leave repo in place after checkout errors
      t5516 (fetch-push): drop implicit arguments from helper functions
      t3200: test --set-upstream-to with bogus refs
      branch: factor out "upstream is not a branch" error messages
      branch: improve error message for missing --set-upstream-to ref
      branch: mention start_name in set-upstream error messages
      branch: give advice when tracking start-point is missing
      rm: do not complain about d/f conflicts during deletion
      t3600: test behavior of reverse-d/f conflict
      t3600: document failure of rm across symbolic links
      http: add HTTP_KEEP_ERROR option
      remote-curl: show server content on http errors
      remote-curl: let servers override http 404 advice
      remote-curl: always show friendlier 404 message
      remote-curl: consistently report repo url for http errors
      http: simplify http_error helper function
      http: re-word http error message
      remote-curl: die directly with http error messages
      http: drop http_error function
      http: set curl FAILONERROR each time we select a handle

Jens Lehmann (2):
      submodule: add 'deinit' command
      submodule deinit: clarify work tree removal message

Jiang Xin (3):
      l10n: git.pot: v1.8.3 round 1 (54 new, 15 removed)
      l10n: zh_CN.po: translate 54 messages (2048t0f0u)
      i18n: branch: mark strings for translation

John Keeping (16):
      Makefile: make mandir, htmldir and infodir absolute
      git-difftool(1): fix formatting of --symlink description
      difftool: avoid double slashes in symlink targets
      difftool --dir-diff: symlink all files matching the working tree
      refs.c: fix fread error handling
      t7800: move '--symlinks' specific test to the end
      difftool: don't overwrite modified files
      t7800: don't hide grep output
      t7800: fix tests when difftool uses --no-symlinks
      t7800: run --dir-diff tests with and without symlinks
      submodule: print graph output next to submodule log
      gitremote-helpers(1): clarify refspec behaviour
      merge-tree: don't print entries that match "local"
      fast-export: add --signed-tags=warn-strip mode
      transport-helper: pass --signed-tags=warn-strip to fast-export
      transport-helper: add 'signed-tags' capability

John Koleszar (1):
      http-backend: respect GIT_NAMESPACE with dumb clients

John Szakmeister (1):
      git-web--browse: recognize any TERM_PROGRAM as a GUI terminal on OS X

Jonathan Nieder (11):
      sequencer.c: rework search for start of footer to improve clarity
      shell doc: emphasize purpose and security model
      shell: new no-interactive-login command to print a custom message
      push test: use test_config when appropriate
      push test: simplify check of push result
      push test: rely on &&-chaining instead of 'if bad; then echo Oops; fi'
      add: make pathless 'add [-u|-A]' warning a file-global function
      add: make warn_pathless_add() a no-op after first call
      add -u: only show pathless 'add -u' warning when changes exist outside cwd
      add -A: only show pathless 'add -A' warning when changes exist outside cwd
      convert: The native line-ending is \r\n on MinGW

Jonathon Mah (1):
      branch: give better message when no names specified for rename

Junio C Hamano (53):
      t5404: do not assume the "matching" push is the default
      t5505: do not assume the "matching" push is the default
      t5516: do not assume the "matching" push is the default
      t5517: do not assume the "matching" push is the default
      t5519: do not assume the "matching" push is the default
      t5531: do not assume the "matching" push is the default
      t7406: do not assume the "matching" push is the default
      t9400: do not assume the "matching" push is the default
      t9401: do not assume the "matching" push is the default
      simplify-merges: drop merge from irrelevant side branch
      config.mak.in: remove unused definitions
      parse_fetch_refspec(): clarify the codeflow a bit
      fetch: use struct ref to represent refs to be fetched
      upload-pack: optionally allow fetching from the tips of hidden refs
      fetch: fetch objects by their exact SHA-1 object names
      Makefile: do not export mandir/htmldir/infodir
      match_push_refs(): nobody sets src->peer_ref anymore
      commit.c: add clear_commit_marks_many()
      commit.c: add in_merge_bases_many()
      commit.c: use clear_commit_marks_many() in in_merge_bases_many()
      push: --follow-tags
      for_each_reflog_ent(): extract a helper to process a single entry
      for_each_recent_reflog_ent(): simplify opening of a reflog file
      reflog: add for_each_reflog_ent_reverse() API
      builtin/add.c: simplify boolean variables
      git add: start preparing for "git add <pathspec>..." to default to "-A"
      Start the post 1.8.2 cycle
      The first wave of topics for 1.8.3
      Update draft release notes to 1.8.3
      merge-one-file: remove stale comment
      merge-one-file: force content conflict for "both sides added" case
      Second wave of topics toward 1.8.3
      More topics from the second batch for 1.8.3
      peel_onion: disambiguate to favor tree-ish when we know we want a tree-ish
      peel_onion(): teach $foo^{object} peeler
      Update draft release notes to 1.8.3
      Update draft release notes to 1.8.3
      Update draft release notes to 1.8.3
      Update draft release notes to 1.8.3
      Update draft release notes to 1.8.3
      Revert 4b7f53da7618 (simplify-merges: drop merge from irrelevant side branch, 2013-01-17)
      Update dtaft release notes to 1.8.3
      Update draft release notes to 1.8.3
      git add: rework the logic to warn "git add <pathspec>..." default change
      Update draft release notes to 1.8.3
      Update draft release notes to 1.8.3
      git add: rephrase the "removal will cease to be ignored" warning
      Update draft release notes to 1.8.3
      git add: --ignore-removal is a better named --no-all
      git add: rephrase -A/--no-all warning
      Update draft release notes to 1.8.3
      git add: avoid "-u/-A without pathspec" warning on stat-dirty paths
      Git 1.8.3-rc0

Karsten Blees (14):
      dir.c: git-status --ignored: don't drop ignored directories
      dir.c: git-status --ignored: don't list files in ignored directories
      dir.c: git-status --ignored: don't list empty ignored directories
      dir.c: git-ls-files --directories: don't hide empty directories
      dir.c: git-status --ignored: don't list empty directories as ignored
      dir.c: make 'git-status --ignored' work within leading directories
      dir.c: git-clean -d -X: don't delete tracked directories
      dir.c: factor out parts of last_exclude_matching for later reuse
      dir.c: move prep_exclude
      dir.c: unify is_excluded and is_path_excluded APIs
      dir.c: replace is_path_excluded with now equivalent is_excluded API
      dir.c: git-status: avoid is_excluded checks for tracked files
      dir.c: git-status --ignored: don't scan the work tree three times
      dir.c: git-status --ignored: don't scan the work tree twice

Kevin Bracey (5):
      mergetools/p4merge: swap LOCAL and REMOTE
      mergetools/p4merge: create a base if none available
      git-merge-one-file: style cleanup
      git-merge-one-file: send "ERROR:" messages to stderr
      checkout: abbreviate hash in suggest_reattach

Kirill Smelkov (1):
      Fix `make install` when configured with autoconf

Lukas Fleischer (3):
      attr.c: extract read_index_data() as read_blob_data_from_index()
      read_blob_data_from_index(): optionally return the size of blob data
      convert.c: remove duplicate code

Matthieu Moy (3):
      status: show 'revert' state and status hint
      status: show commit sha1 in "You are currently reverting" message
      add: add a blank line at the end of pathless 'add [-u|-A]' warning

Michael Haggerty (1):
      rev-parse: clarify documentation for the --verify option

Michal Nazarewicz (6):
      Git.pm: allow command_close_bidi_pipe to be called as method
      Git.pm: fix example in command_close_bidi_pipe documentation
      Git.pm: refactor command_close_bidi_pipe to use _cmd_close
      Git.pm: allow pipes to be closed prior to calling command_close_bidi_pipe
      Git.pm: add interface for git credential command
      git-send-email: use git credential to obtain password

Mike Gorchak (2):
      date.c: fix unsigned time_t comparison
      Fix time offset calculation in case of unsigned time_t

Miklos Vajna (1):
      cherry-pick: make sure all input objects are commits

Miklós Fazekas (1):
      git p4: avoid expanding client paths in chdir

Modestas Vainius (1):
      Support FTP-over-SSL/TLS for regular FTP

Nguyễn Thái Ngọc Duy (28):
      git-count-objects.txt: describe each line in -v output
      t4014: more tests about appending s-o-b lines
      format-patch: update append_signoff prototype
      sha1_file: reorder code in prepare_packed_git_one()
      count-objects: report garbage files in pack directory too
      count-objects: report how much disk space taken by garbage files
      wt-status: move strbuf into read_and_strip_branch()
      wt-status: split wt_status_state parsing function out
      wt-status: move wt_status_get_state() out to wt_status_print()
      status: show more info than "currently not on any branch"
      branch: show more information when HEAD is detached
      Preallocate hash tables when the number of inserts are known in advance
      status, branch: fix the misleading "bisecting" message
      checkout: avoid unnecessary match_pathspec calls
      checkout: add --ignore-skip-worktree-bits in sparse checkout mode
      pretty: save commit encoding from logmsg_reencode if the caller needs it
      pretty: get the correct encoding for --pretty:format=%e
      pretty-formats.txt: wrap long lines
      pretty: share code between format_decoration and show_decorations
      utf8.c: move display_mode_esc_sequence_len() for use by other functions
      utf8.c: add utf8_strnwidth() with the ability to skip ansi sequences
      utf8.c: add reencode_string_len() that can handle NULs in string
      pretty: two phase conversion for non utf-8 commits
      pretty: split color parsing into a separate function
      pretty: add %C(auto) for auto-coloring
      pretty: support padding placeholders, %< %> and %><
      pretty: support truncating in %>, %< and %><
      pretty: support %>> that steal trailing spaces

Pete Wyckoff (2):
      git p4 test: make sure P4CONFIG relative path works
      git p4 test: should honor symlink in p4 client root

Peter Krefting (1):
      l10n: Update Swedish translation (2048t0f0u)

Peter van Zetten (1):
      remote-hg: fix for files with spaces

Phil Hord (1):
      rebase: find orig_head unambiguously

Philip Oakley (5):
      builtin/help.c: split "-a" processing into two
      builtin/help.c: add --guide option
      builtin/help.c: add list_common_guides_help() function
      help: mention -a and -g option, and 'git help <concept>' usage.
      doc: include --guide option description for "git help"

Ralf Thielow (1):
      l10n: de.po: translate 54 new messages

Ramkumar Ramachandra (14):
      t5520: use test_config to set/unset git config variables (leftover bits)
      remote.c: simplify a bit of code using git_config_string()
      t5516 (fetch-push): update test description
      remote.c: introduce a way to have different remotes for fetch/push
      remote.c: introduce remote.pushdefault
      remote.c: introduce branch.<name>.pushremote
      git-shortlog.txt: remove (-h|--help) from OPTIONS
      revisions.txt: clarify the .. and ... syntax
      git-log.txt: order OPTIONS properly; move <since>..<until>
      git-log.txt: generalize <since>..<until>
      git-log.txt: rewrite note on why "--" may be required
      git-shortlog.txt: make SYNOPSIS match log, update OPTIONS
      builtin/log.c: make usage string consistent with doc
      builtin/shortlog.c: make usage string consistent with log

Ramsay Jones (5):
      msvc: Fix compilation errors caused by poll.h emulation
      msvc: git-daemon: Fix linker "unresolved external" errors
      msvc: Fix build by adding missing symbol defines
      msvc: test-svn-fe: Fix linker "unresolved external" error
      msvc: avoid collisions between "tags" and "TAGS"

René Scharfe (1):
      archive-zip: use deflateInit2() to ask for raw compressed data

Sebastian Götte (5):
      Move commit GPG signature verification to commit.c
      commit.c/GPG signature verification: Also look at the first GPG status line
      merge/pull: verify GPG signatures of commits being merged
      merge/pull Check for untrusted good GPG signatures
      pretty printing: extend %G? to include 'N' and 'U'

Sebastian Schuberth (1):
      git-svn: Support custom tunnel schemes instead of SSH only

Simon Ruderich (4):
      git-am: show the final log message on "Applying:" indicator
      remote-hg: add 'insecure' option
      remote-hg: document location of stored hg repository
      help: mark common_guides[] as translatable

Stefano Lattarini (1):
      zlib: fix compilation failures with Sun C Compilaer

Steven Walter (1):
      safe_create_leading_directories: fix race that could give a false negative

Ted Zlatanov (1):
      Add contrib/credentials/netrc with GPG support

Thomas Rast (8):
      sha1_file: remove recursion in packed_object_info
      Refactor parts of in_delta_base_cache/cache_or_unpack_entry
      sha1_file: remove recursion in unpack_entry
      Avoid loading commits twice in log with diffs
      t/README: --valgrind already implies -v
      tests: parameterize --valgrind option
      tests --valgrind: provide a mode without --track-origins
      tests: notice valgrind error in test_must_fail

Timotheus Pokorra (1):
      remote-bzr: add utf-8 support for fetching

Torstein Hegge (3):
      t9903: Don't fail when run from path accessed through symlink
      bisect: Store first bad commit as comment in log file
      bisect: Log possibly bad, skipped commits at bisection end

Torsten Bögershausen (4):
      Make core.sharedRepository work under cygwin 1.7
      path.c: simplify adjust_shared_perm()
      path.c: optimize adjust_shared_perm()
      test-bzr: portable shell and utf-8 strings for Mac OS

Trần Ngọc Quân (1):
      l10n: vi.po: Update translation (2048t0u0f)

Yann Droneaud (12):
      t3400: use test_config to set/unset git config variables
      t4304: use test_config to set/unset git config variables
      t4034: use test_config/test_unconfig to set/unset git config variables
      t4202: use test_config/test_unconfig to set/unset git config variables
      t5520: use test_config to set/unset git config variables
      t5541: use test_config to set/unset git config variables
      t7500: use test_config to set/unset git config variables
      t7508: use test_config to set/unset git config variables
      t9500: use test_config to set/unset git config variables
      t7502: use test_config to set/unset git config variables
      t7502: remove clear_config
      t7600: use test_config to set/unset git config variables


Version v1.8.2.3; changes since v1.8.2.2:
-----------------------------------------

Anders Granskogen Bjørnstad (1):
      Documentation/git-commit: Typo under --edit

David Aguilar (1):
      mergetools/kdiff3: do not use --auto when diffing

Felipe Contreras (5):
      documentation: trivial whitespace cleanups
      complete: zsh: trivial simplification
      complete: zsh: use zsh completion for the main cmd
      completion: zsh: don't override suffix on _detault
      transport-helper: trivial style cleanup

John Keeping (1):
      t/Makefile: remove smoke test targets

Jonathan Nieder (1):
      glossary: a revision is just a commit

Junio C Hamano (1):
      Git 1.8.2.3

Ramkumar Ramachandra (3):
      git-completion.bash: lexical sorting for diff.statGraphWidth
      git-completion.bash: add diff.submodule to config list
      git-completion.bash: complete branch.*.rebase as boolean

René Scharfe (2):
      t5004: ignore pax global header file
      t5004: avoid using tar for checking emptiness of archive

Thomas Rast (4):
      read_revisions_from_stdin: make copies for handle_revision_arg
      remote: add a test for extra arguments, according to docs
      remote: check for superfluous arguments in 'git remote add'
      remote: 'show' and 'prune' can take more than one remote


Version v1.8.2.2; changes since v1.8.2.1:
-----------------------------------------

Adam Spiers (1):
      t: make PIPE a standard test prerequisite

Antoine Pelisse (2):
      fix clang -Wtautological-compare with unsigned enum
      Allow combined diff to ignore white-spaces

Benoit Bourbie (1):
      Typo fix: replacing it's -> its

Carlos Martín Nieto (1):
      Documentation/git-commit: reword the --amend explanation

David Aguilar (1):
      help.c: add a compatibility comment to cmd_version()

Felipe Contreras (2):
      remote-hg: fix commit messages
      prompt: fix untracked files for zsh

Jakub Narębski (1):
      gitweb/INSTALL: Simplify description of GITWEB_CONFIG_SYSTEM

Jeff King (13):
      submodule: clarify logic in show_submodule_summary
      filter-branch: return to original dir after filtering
      diffcore-pickaxe: remove fill_one()
      diffcore-pickaxe: unify code for log -S/-G
      show-branch: use strbuf instead of static buffer
      doc/http-backend: clarify "half-auth" repo configuration
      doc/http-backend: give some lighttpd config examples
      doc/http-backend: match query-string in apache half-auth example
      t/test-lib.sh: drop "$test" variable
      usage: allow pluggable die-recursion checks
      run-command: use thread-aware die_is_recursing routine
      cat-file: print tags raw for "cat-file -p"
      receive-pack: close sideband fd on early pack errors

Jiang Xin (1):
      i18n: make the translation of -u advice in one go

Johannes Sixt (3):
      rerere forget: grok files containing NUL
      rerere forget: do not segfault if not all stages are present
      t6200: avoid path mangling issue on Windows

John Keeping (5):
      diffcore-break: don't divide by zero
      bisect: avoid signed integer overflow
      git-merge(1): document diff-algorithm option to merge-recursive
      diff: allow unstuck arguments with --diff-algorithm
      t/test-lib.sh: fix TRASH_DIRECTORY handling

Jonathan Nieder (1):
      gitweb/INSTALL: GITWEB_CONFIG_SYSTEM is for backward compatibility

Junio C Hamano (13):
      merge: a random object may not necssarily be a commit
      apply --whitespace=fix: avoid running over the postimage buffer
      t5516: test interaction between pushURL and pushInsteadOf correctly
      test: resurrect q_to_tab
      t6200: use test_config/test_unconfig
      t6200: test message for merging of an annotated tag
      diffcore-pickaxe: port optimization from has_changes() to diff_grep()
      diffcore-pickaxe: fix leaks in "log -S<block>" and "log -G<pattern>"
      glossary: extend "detached HEAD" description
      doc: clarify that "git daemon --user=<user>" option does not export HOME=~user
      Start preparing for 1.8.2.2
      Update draft release notes to 1.8.2.2
      Git 1.8.2.2

Kevin Bracey (1):
      cherry-pick/revert: make usage say '<commit-ish>...'

Lukas Fleischer (1):
      bundle: Accept prerequisites without commit messages

Martin von Gagern (1):
      Documentation: Strip texinfo anchors to avoid duplicates

Mårten Kongstad (1):
      completion: remove duplicate block for "git commit -c"

Paul Price (1):
      fast-export: fix argument name in error messages

Peter Eisentraut (1):
      pull: Apply -q and -v options to rebase mode as well

Ralf Thielow (2):
      fmt-merge-msg: respect core.commentchar in people credits
      fmt-merge-msg: use core.commentchar in tag signatures completely

Ramkumar Ramachandra (4):
      t3200 (branch): modernize style
      send-email: use "return;" not "return undef;" on error codepaths
      send-email: drop misleading function prototype
      send-email: use the three-arg form of open in recipients_cmd

René Scharfe (5):
      match-trees: simplify score_trees() using tree_entry()
      t5004: fix issue with empty archive test and bsdtar
      archive: clarify explanation of --worktree-attributes
      pretty: handle broken commit headers gracefully
      blame: handle broken commit headers gracefully

Robin Rosenberg (1):
      bash: teach __git_ps1 about REVERT_HEAD

Simon Ruderich (3):
      diffcore-pickaxe: remove unnecessary call to get_textconv()
      diffcore-pickaxe: respect --no-textconv
      t/README: --immediate skips cleanup commands for failed tests

Stefan Saasen (1):
      Documentation: distinguish between ref and offset deltas in pack-format

Stefano Lattarini (9):
      doc: various spelling fixes
      git-remote-mediawiki: spelling fixes
      contrib/subtree: fix spelling of accidentally
      obstack: fix spelling of similar
      compat/regex: fix spelling and grammar in comments
      compat/nedmalloc: fix spelling in comments
      precompose-utf8: fix spelling of "want" in error message
      kwset: fix spelling in comments
      Correct common spelling mistakes in comments and tests

Thomas Ackermann (4):
      glossary: remove outdated/misleading/irrelevant entries
      glossary: improve description of SHA-1 related topics
      The name of the hash function is "SHA-1", not "SHA1"
      glossary: improve definitions of refspec and pathspec

Thomas Rast (2):
      perl: redirect stderr to /dev/null instead of closing
      t9700: do not close STDERR

Torsten Bögershausen (5):
      t9020: do not use export X=Y
      t9501: do not use export X=Y
      test-hg-bidi.sh: do not use export X=Y
      test-hg-hg-git.sh: do not use export X=Y
      t7409: do not use export X=Y


Version v1.8.2.1; changes since v1.8.2:
---------------------------------------

Andrew Wong (2):
      setup.c: stop prefix_pathspec() from looping past the end of string
      setup.c: check that the pathspec magic ends with ")"

Antoine Pelisse (3):
      update-index: allow "-h" to also display options
      diff: Fix rename pretty-print when suffix and prefix overlap
      tests: make sure rename pretty print works

Brandon Casey (4):
      t/t7502: compare entire commit message with what was expected
      t7502: demonstrate breakage with a commit message with trailing newlines
      git-commit: only append a newline to -m mesg if necessary
      Documentation/git-commit.txt: rework the --cleanup section

Christian Helmuth (1):
      git-commit doc: describe use of multiple `-m` options

Dan Bornstein (1):
      Correct the docs about GIT_SSH.

David Aguilar (20):
      git-sh-setup: use a lowercase "usage:" string
      git-svn: use a lowercase "usage:" string
      git-relink: use a lowercase "usage:" string
      git-merge-one-file: use a lowercase "usage:" string
      git-archimport: use a lowercase "usage:" string
      git-cvsexportcommit: use a lowercase "usage:" string
      git-cvsimport: use a lowercase "usage:" string
      git-cvsimport: use a lowercase "usage:" string
      contrib/credential: use a lowercase "usage:" string
      contrib/fast-import: use a lowercase "usage:" string
      contrib/fast-import/import-zips.py: fix broken error message
      contrib/fast-import/import-zips.py: use spaces instead of tabs
      contrib/examples: use a lowercase "usage:" string
      contrib/hooks/setgitperms.perl: use a lowercase "usage:" string
      templates/hooks--update.sample: use a lowercase "usage:" string
      Documentation/user-manual.txt: use a lowercase "usage:" string
      git-svn: use a lowercase "usage:" string
      tests: use a lowercase "usage:" string
      contrib/examples/git-remote.perl: use a lowercase "usage:" string
      contrib/mw-to-git/t/install-wiki.sh: use a lowercase "usage:" string

David Michael (1):
      git-compat-util.h: Provide missing netdb.h definitions

Greg Price (2):
      Fix ".git/refs" stragglers
      describe: Document --match pattern format

Jeff King (23):
      utf8: accept alternate spellings of UTF-8
      mailsplit: sort maildir filenames more cleverly
      cache.h: drop LOCAL_REPO_ENV_SIZE
      environment: add GIT_PREFIX to local_repo_env
      setup: suppress implicit "." work-tree for bare repos
      test-lib: factor out $GIT_UNZIP setup
      archive: handle commits with an empty tree
      upload-pack: drop lookup-before-parse optimization
      upload-pack: make sure "want" objects are parsed
      upload-pack: load non-tip "want" objects from disk
      avoid segfaults on parse_object failure
      use parse_object_or_die instead of die("bad object")
      pack-refs: write peeled entry for non-tags
      index-pack: always zero-initialize object_entry list
      fast-import: use pointer-to-pointer to keep list tail
      drop some obsolete "x = x" compiler warning hacks
      transport: drop "int cmp = cmp" hack
      run-command: always set failed_errno in start_command
      fast-import: clarify "inline" logic in file_change_m
      wt-status: fix possible use of uninitialized variable
      dir.c::match_pathname(): adjust patternlen when shifting pattern
      dir.c::match_pathname(): pay attention to the length of string parameters
      t: check that a pattern without trailing slash matches a directory

Johannes Sixt (1):
      t2003: work around path mangling issue on Windows

John Keeping (4):
      Revert "graph.c: mark private file-scope symbols as static"
      t2003: modernize style
      entry: fix filter lookup
      merge-tree: fix typo in merge-tree.c::unresolved

Joshua Clayton (1):
      Git.pm: fix cat_blob crashes on large files

Junio C Hamano (21):
      imap-send: support Server Name Indication (RFC4366)
      diff-options: unconfuse description of --color
      describe: --match=<pattern> must limit the refs even when used with --all
      reflog: fix typo in "reflog expire" clean-up codepath
      Documentation/git-push: clarify the description of defaults
      git status: document trade-offs in choosing parameters to the -u option
      CodingGuidelines: our documents are in AsciiDoc
      Documentation: merging a tag is a special case
      transport.c: help gcc 4.6.3 users by squelching compiler warning
      Start preparing for 1.8.2.1
      attr.c::path_matches(): the basename is part of the pathname
      More corrections for 1.8.2.1
      More fixes for 1.8.2.1
      attr.c::path_matches(): special case paths that end with a slash
      dir.c::match_basename(): pay attention to the length of string parameters
      Update draft release notes to 1.8.2.1
      Start preparing for 1.8.1.6
      Update draft release notes to 1.8.2.1
      mailmap: update Pasky's address
      Git 1.8.1.6
      Git 1.8.2.1

Kacper Kornet (3):
      rev-parse: clarify documentation of $name@{upstream} syntax
      t1507: Test that branchname@{upstream} is interpreted as branch
      Fix revision walk for commits with the same dates

Karsten Blees (1):
      name-hash.c: fix endless loop with core.ignorecase=true

Kirill Smelkov (1):
      format-patch: RFC 2047 says multi-octet character may not be split

Lukas Fleischer (2):
      bundle: Fix "verify" output if history is complete
      bundle: Add colons to list headings in "verify"

Matthias Krüger (1):
      git help config: s/insn/instruction/

Matthieu Moy (1):
      git-remote-mediawiki: new wiki URL in documentation

Max Nanasy (1):
      diff.c: diff.renamelimit => diff.renameLimit in message

Michael Haggerty (1):
      pack-refs: add fully-peeled trait

Michael J Gruber (5):
      gpg-interface: check good signature in a reliable way
      log-tree: rely upon the check in the gpg_interface
      gpg_interface: allow to request status return
      pretty: parse the gpg status lines rather than the output
      pretty: make %GK output the signing key for signed commits

Mihai Capotă (1):
      git-pull doc: fix grammo ("conflicts" is plural)

Nguyễn Thái Ngọc Duy (7):
      index-format.txt: mention of v4 is missing in some places
      read-cache.c: use INDEX_FORMAT_{LB,UB} in verify_hdr()
      branch: segfault fixes and validation
      update-index: list supported idx versions and their features
      status: advise to consider use of -u when read_directory takes too long
      index-pack: fix buffer overflow caused by translations
      index-pack: protect deepest_delta in multithread code

Phil Hord (1):
      tag: --force does not have to warn when creating tags

Ramkumar Ramachandra (1):
      t4018,7810,7811: remove test_config() redefinition

Ramsay Jones (2):
      fast-import: Fix an gcc -Wuninitialized warning
      cat-file: Fix an gcc -Wuninitialized warning

René Scharfe (4):
      archive-zip: fix compressed size for stored export-subst files
      Makefile: keep LIB_H entries together and sorted
      sha1_name: pass object name length to diagnose_invalid_sha1_path()
      submodule summary: support --summary-limit=<n>

Tadeusz Andrzej Kadłubowski (2):
      git-filter-branch.txt: clarify ident variables usage
      Documentation: filter-branch env-filter example

Thomas Rast (3):
      diff: prevent pprint_rename from underrunning input
      index-pack: guard nr_resolved_deltas reads by lock
      git-tag(1): we tag HEAD by default

Torsten Bögershausen (1):
      remote-helpers/test-bzr.sh: do not use "grep '\s'"

W. Trevor King (2):
      Documentation/githooks: Explain pre-rebase parameters
      user-manual: Standardize backtick quoting

William Entriken (1):
      submodule update: when using recursion, show full path


Version v1.8.2; changes since v1.8.2-rc3:
-----------------------------------------

Antoine Pelisse (1):
      perf: update documentation of GIT_PERF_REPEAT_COUNT

Eric Wong (1):
      git svn: consistent spacing after "W:" in warnings

Greg Price (1):
      add: Clarify documentation of -A and -u

Jan Pešta (1):
      git svn: ignore partial svn:mergeinfo

Junio C Hamano (2):
      Update draft release notes to 1.8.2
      Git 1.8.2

Kevin Bracey (2):
      Translate git_more_info_string consistently
      git.c: make usage match manual page

Matthieu Moy (2):
      add: update pathless 'add [-u|-A]' warning to reflect change of plan
      git-completion.bash: zsh does not implement function redirection correctly


Version v1.8.2-rc3; changes since v1.8.2-rc2:
---------------------------------------------

Fredrik Gustafsson (1):
      gitweb/README: remove reference to git.kernel.org

Jiang Xin (2):
      l10n: git.pot: v1.8.2 round 4 (1 changed)
      l10n: zh_CN.po: translate 1 new message

Junio C Hamano (1):
      Git 1.8.2-rc3

Matthieu Moy (1):
      git-completion.zsh: define __gitcomp_file compatibility function

Peter Krefting (1):
      l10n: Update Swedish translation (2009t0f0u)

Ralf Thielow (4):
      l10n: de.po: translate 35 new messages
      l10n: de.po: translate 5 new messages
      l10n: de.po: correct translation of "bisect" messages
      l10n: de.po: translate 1 new message

Trần Ngọc Quân (1):
      l10n: vi.po: Update translation (2009t0f0u)


Version v1.8.2-rc2; changes since v1.8.2-rc1:
---------------------------------------------

Andrew Wong (1):
      Documentation/githooks: Fix linkgit

Brad King (1):
      Documentation/submodule: Add --force to update synopsis

Erik Faye-Lund (1):
      Revert "compat: add strtok_r()"

Junio C Hamano (3):
      Update draft release notes to 1.8.1.5
      Git 1.8.1.5
      Git 1.8.2-rc2

Karsten Blees (2):
      wincred: accept CRLF on stdin to simplify console usage
      wincred: improve compatibility with windows versions

Michael Haggerty (1):
      Provide a mechanism to turn off symlink resolution in ceiling paths

Thomas Rast (1):
      Make !pattern in .gitattributes non-fatal


Version v1.8.2-rc1; changes since v1.8.2-rc0:
---------------------------------------------

Adam Spiers (1):
      t0008: document test_expect_success_multi

Greg Price (1):
      Documentation: "advice" is uncountable

Jeff King (1):
      Makefile: avoid infinite loop on configure.ac change

Jiang Xin (5):
      l10n: Update git.pot (35 new, 14 removed messages)
      l10n: zh_CN.po: translate 35 new messages
      l10n: git.pot: v1.8.2 round 3 (5 new)
      l10n: zh_CN.po: translate 5 new messages
      Bugfix: undefined htmldir in config.mak.autogen

Junio C Hamano (8):
      doc: mention tracking for pull.default
      user-manual: typofix (ofthe->of the)
      RelNotes 1.8.2: push-simple will not be in effect in this release
      imap-send: move #ifdef around
      name-hash: allow hashing an empty string
      Git 1.8.1.4
      Prepare for 1.8.1.5
      Git 1.8.2-rc1

Martin Erik Werner (1):
      shell-prompt: clean up nested if-then

Matthieu Moy (1):
      git.txt: update description of the configuration mechanism

Oswald Buddenhagen (2):
      imap-send: the subject of SSL certificate must match the host
      imap-send: support subjectAltName as well

Peter Krefting (2):
      l10n: Update Swedish translation (2004t0f0u)
      l10n: Update Swedish translation (2009t0f0u)

Trần Ngọc Quân (2):
      l10n: vi.po: update new strings (2004t0u0f)
      l10n: vi.po: Updated 5 new messages (2009t0f0u)

W. Trevor King (8):
      user-manual: use 'remote add' to setup push URLs
      user-manual: give 'git push -f' as an alternative to +master
      user-manual: mention 'git remote add' for remote branch config
      user-manual: use 'git config --global user.*' for setup
      user-manual: use -o latest.tar.gz to create a gzipped tarball
      user-manual: Reorganize the reroll sections, adding 'git rebase -i'
      user-manual: Use request-pull to generate "please pull" text
      user-manual: Flesh out uncommitted changes and submodule updates


Version v1.8.2-rc0; changes since v1.8.1.6:
-------------------------------------------

Aaron Schrab (3):
      hooks: Add function to check if a hook exists
      push: Add support for pre-push hooks
      Add sample pre-push hook script

Adam Spiers (29):
      tests: test number comes first in 'not ok $count - $message'
      tests: paint known breakages in yellow
      tests: paint skipped tests in blue
      tests: change info messages from yellow/brown to cyan
      tests: refactor mechanics of testing in a sub test-lib
      tests: test the test framework more thoroughly
      tests: paint unexpectedly fixed known breakages in bold red
      api-directory-listing.txt: update to match code
      Improve documentation and comments regarding directory traversal API
      dir.c: rename cryptic 'which' variable to more consistent name
      dir.c: rename path_excluded() to is_path_excluded()
      dir.c: rename excluded_from_list() to is_excluded_from_list()
      dir.c: rename excluded() to is_excluded()
      dir.c: refactor is_excluded_from_list()
      dir.c: refactor is_excluded()
      dir.c: refactor is_path_excluded()
      dir.c: rename free_excludes() to clear_exclude_list()
      dir.c: use a single struct exclude_list per source of excludes
      dir.c: keep track of where patterns came from
      dir.c: provide clear_directory() for reclaiming dir_struct memory
      dir.c: improve docs for match_pathspec() and match_pathspec_depth()
      add.c: remove unused argument from validate_pathspec()
      add.c: move pathspec matchers into new pathspec.c for reuse
      pathspec.c: rename newly public functions for clarity
      add.c: extract check_path_for_gitlink() from treat_gitlinks() for reuse
      add.c: extract new die_if_path_beyond_symlink() for reuse
      setup.c: document get_pathspec()
      add git-check-ignore sub-command
      clean.c, ls-files.c: respect encapsulation of exclude_list_groups

Adam Tkac (1):
      contrib/subtree: honor DESTDIR

Alexey Shumkin (1):
      t7102 (reset): don't hardcode SHA-1 in expected outputs

Andrew Wong (3):
      rebase: Handle cases where format-patch fails
      gitk: Refactor code for binding modified function keys
      gitk: Use bindshiftfunctionkey to bind Shift-F5

Antoine Pelisse (8):
      Use split_ident_line to parse author and committer
      mailmap: simplify map_user() interface
      mailmap: add mailmap structure to rev_info and pp
      pretty: use mailmap to display username and email
      log: add --use-mailmap option
      test: add test for --use-mailmap option
      log: grep author/committer using mailmap
      log: add log.mailmap configuration option

Barry Wardell (1):
      git-svn: Simplify calculation of GIT_DIR

Chris Hiestand (1):
      Add Auto-Submitted header to post-receive-email

Chris Rorvick (10):
      push: return reject reasons as a bitset
      push: add advice for rejected tag reference
      push: keep track of "update" state separately
      push: flag updates that require force
      push: require force for refs under refs/tags/
      push: require force for annotated tags
      push: clarify rejection of update to non-commit-ish
      push: cleanup push rules comment
      push: rename config variable for more general use
      push: allow already-exists advice to be disabled

Christian Couder (4):
      Makefile: remove tracking of TCLTK_PATH
      Makefile: detect when PYTHON_PATH changes
      Makefile: replace "echo 1>..." with "echo >..."
      gitk: Ignore gitk-wish buildproduct

Christoph J. Thompson (1):
      Honor configure's htmldir switch

David A. Greene (3):
      contrib/subtree: remove test number comments
      contrib/subtree: better error handling for 'subtree add'
      contrib/subtree: fix synopsis

David Aguilar (7):
      mergetools/vim: remove redundant diff command
      mergetool--lib: improve show_tool_help() output
      mergetools: simplify how we handle "vim" and "defaults"
      mergetool--lib: simplify command expressions
      mergetool--lib: improve the help text in guess_merge_tool()
      mergetool--lib: add functions for finding available tools
      doc: generate a list of valid merge tools

David Michael (3):
      Support builds when sys/param.h is missing
      Detect when the passwd struct is missing pw_gecos
      Generalize the inclusion of strings.h

Eric S. Raymond (1):
      Add checks to Python scripts for version dependencies.

Eric Wong (1):
      git-svn: cleanup sprintf usage for uppercasing hex

Felipe Contreras (26):
      remote-testgit: properly check for errors
      fast-export: avoid importing blob marks
      remote-testgit: fix direction of marks
      remote-helpers: fix failure message
      Add new remote-bzr transport helper
      remote-bzr: add support for pushing
      remote-bzr: add support for remote repositories
      Rename git-remote-testgit to git-remote-testpy
      Add new simplified git-remote-testgit
      remote-testgit: remove non-local functionality
      remote-testgit: remove irrelevant test
      remote-testgit: cleanup tests
      remote-testgit: exercise more features
      remote-testgit: report success after an import
      remote-testgit: implement the "done" feature manually
      fast-export: trivial cleanup
      fast-export: fix comparison in tests
      fast-export: don't handle uninteresting refs
      fast-export: make sure updated refs get updated
      remote-bzr: update working tree upon pushing
      remote-bzr: add simple tests
      remote-bzr: add support for fecthing special modes
      remote-bzr: add support to push special modes
      remote-bzr: add support for older versions of bzr
      remote-bzr: detect local repositories
      remote-hg: store converted URL

Jeff King (28):
      fsck: warn about '.' and '..' in trees
      fsck: warn about ".git" in trees
      mailmap: refactor mailmap parsing for non-file sources
      mailmap: support reading mailmap from blobs
      mailmap: clean up read_mailmap error handling
      mailmap: fix some documentation loose-ends for mailmap.blob
      mailmap: default mailmap.blob in bare repositories
      make error()'s constant return value more visible
      silence some -Wuninitialized false positives
      add global --literal-pathspecs option
      Makefile: hoist uname autodetection to config.mak.uname
      config: add helper function for parsing key names
      archive-tar: use parse_config_key when parsing config
      convert some config callbacks to parse_config_key
      userdiff: drop parse_driver function
      submodule: use parse_config_key when parsing config
      submodule: simplify memory handling in config parsing
      help: use parse_config_key for man config
      reflog: use parse_config_key in config callback
      commit: drop useless xstrdup of commit message
      logmsg_reencode: never return NULL
      logmsg_reencode: lazily load missing commit buffers
      fetch: run gc --auto after fetching
      fetch-pack: avoid repeatedly re-scanning pack directory
      docs: clarify git-branch --list behavior
      branch: let branch filters imply --list
      Documentation/Makefile: clean up MAN*_TXT lists
      log: re-encode commit messages before grepping

Jesper L. Nielsen (1):
      contrib/subtree: make the manual directory if needed

Jiang Xin (1):
      l10n: Update git.pot (11 new, 7 removed messages)

Johannes Sixt (1):
      t6130-pathspec-noglob: Windows does not allow a file named "f*"

John Keeping (24):
      git-svn: teach find-rev to find near matches
      git_remote_helpers: allow building with Python 3
      git_remote_helpers: fix input when running under Python 3
      git_remote_helpers: force rebuild if python version changes
      git_remote_helpers: use 2to3 if building with Python 3
      svn-fe: allow svnrdump_sim.py to run with Python 3
      git-remote-testpy: hash bytes explicitly
      git-remote-testpy: don't do unbuffered text I/O
      git-remote-testpy: call print as a function
      git-mergetool: move show_tool_help to mergetool--lib
      git-mergetool: remove redundant assignment
      git-mergetool: don't hardcode 'mergetool' in show_tool_help
      git-difftool: use git-mergetool--lib for "--tool-help"
      mergetool--lib: don't call "exit" in setup_tool
      git-remote-testpy: fix path hashing on Python 3
      CodingGuidelines: add Python coding guidelines
      mergetool--lib: list user configured tools in '--tool-help'
      graph: output padding for merge subsequent parents
      diff: write prefix to the correct file
      diff.c: make constant string arguments const
      diff: add diff_line_prefix function
      diff.c: use diff_line_prefix() where applicable
      combine-diff.c: teach combined diffs about line prefix
      rebase -i: respect core.commentchar

Jonathan Nieder (2):
      Git::SVN::Editor::T: pass $deletions to ->A and ->D
      git svn: do not overescape URLs (fallback case)

Junio C Hamano (52):
      diff: accept --no-follow option
      blame: pay attention to --no-follow
      t6006: clean up whitespace
      log --format: teach %C(auto,black) to respect color config
      git-compat-util.h: do not #include <sys/param.h> by default
      builtin/log.c: drop unused "numbered" parameter from make_cover_letter()
      builtin/log.c: drop redundant "numbered_files" parameter from make_cover_letter()
      builtin/log.c: stop using global patch_suffix
      get_patch_filename(): simplify function signature
      get_patch_filename(): drop "just-numbers" hack
      get_patch_filename(): split into two functions
      format-patch: add --reroll-count=$N option
      Start 1.8.2 cycle
      format-patch: document and test --reroll-count
      Update draft release notes to 1.8.2
      format-patch: give --reroll-count a short synonym -v
      Update draft release notes to 1.8.2
      string-list: allow case-insensitive string list
      Update draft release notes to 1.8.2
      mailmap: remove email copy and length limitation
      log --use-mailmap: optimize for cases without --author/--committer search
      Update draft release notes to 1.8.2
      clone: do not export and unexport GIT_CONFIG
      Update draft release notes to 1.8.2
      Makefile: add description on PERL/PYTHON_PATH
      Update draft release notes to 1.8.2
      Allow custom "comment char"
      push: fix "refs/tags/ hierarchy cannot be updated without --force"
      Update draft release notes to 1.8.2
      upload-pack: share more code
      Update draft release notes to 1.8.2
      Update draft release notes to 1.8.2
      push: further clean up fields of "struct ref"
      push: further simplify the logic to assign rejection reason
      push: introduce REJECT_FETCH_FIRST and REJECT_NEEDS_FORCE
      push: finishing touches to explain REJECT_ALREADY_EXISTS better
      Update draft release notes to 1.8.2
      Update draft release notes to 1.8.2
      upload-pack: simplify request validation
      git_remote_helpers: remove GIT-PYTHON-VERSION upon "clean"
      Update draft release notes to 1.8.2
      Documentation: describe the "repository" in repository-layout
      Update draft release notes to 1.8.2
      apply: verify submodule commit object name better
      Update draft release notes to 1.8.2
      upload/receive-pack: allow hiding ref hierarchies
      Update draft release notes to 1.8.2
      Update draft release notes to 1.8.2
      Update draft release notes to 1.8.2
      Documentation/git-add: kill remaining <filepattern>
      Update draft release notes to 1.8.2
      Git 1.8.2-rc0

Manlio Perillo (1):
      git-completion.bash: add support for path completion

Marc Khouzam (1):
      completion: handle path completion and colon for tcsh script

Marcus Karlsson (1):
      gitk: Fix crash when not using themed widgets

Martin Erik Werner (3):
      shell prompt: add bash.showUntrackedFiles option
      t9903: add tests for bash.showUntrackedFiles
      t9903: add extra tests for bash.showDirtyState

Martin von Zweigbergk (21):
      oneway_merge(): only lstat() when told to update worktree
      reset $pathspec: no need to discard index
      reset $pathspec: exit with code 0 if successful
      reset.c: pass pathspec around instead of (prefix, argv) pair
      reset: don't allow "git reset -- $pathspec" in bare repo
      reset.c: extract function for parsing arguments
      reset.c: remove unnecessary variable 'i'
      reset.c: extract function for updating {ORIG_,}HEAD
      reset.c: share call to die_if_unmerged_cache()
      reset --keep: only write index file once
      reset: avoid redundant error message
      reset.c: replace switch by if-else
      reset.c: move update_index_refresh() call out of read_from_tree()
      reset.c: move lock, write and commit out of update_index_refresh()
      reset [--mixed]: only write index file once
      reset.c: finish entire cmd_reset() whether or not pathspec is given
      reset.c: inline update_index_refresh()
      reset $sha1 $pathspec: require $sha1 only to be treeish
      reset: allow reset on unborn branch
      reset [--mixed]: use diff-based reset whether or not pathspec was given
      reset: update documentation to require only tree-ish with paths

Matt Kraai (5):
      Make lock local to fetch_pack
      Port to QNX
      Use __VA_ARGS__ for all of error's arguments
      Allow building with xmlparse.h
      Makefile: don't run "rm" without any files

Matthew Ogilvie (10):
      cvsserver: factor out git-log parsing logic
      cvsserver: cleanup extra slashes in filename arguments
      cvsserver: define a tag name character escape mechanism
      cvsserver: add misc commit lookup, file meta data, and file listing functions
      cvsserver: implement req_Sticky and related utilities
      cvsserver: generalize getmeta() to recognize commit refs
      cvsserver: Add version awareness to argsfromdir
      cvsserver: support -r and sticky tags for most operations
      cvsserver: add t9402 to test branch and tag refs
      cvsserver Documentation: new cvs ... -r support

Matthieu Moy (4):
      add: warn when -u or -A is used without pathspec
      Makefile: make script-related rules usable from subdirectories
      git-remote-mediawiki: use toplevel's Makefile
      completion: support 'git config --local'

Max Horn (2):
      remote-hg: fix handling of file perms when pushing
      fix clang -Wunused-value warnings for error functions

Michael Haggerty (22):
      Add new function strbuf_add_xml_quoted()
      xml_entities(): use function strbuf_addstr_xml_quoted()
      lf_to_crlf(): NUL-terminate msg_data::data
      imap-send: store all_msgs as a strbuf
      imap-send: correctly report errors reading from stdin
      imap-send: change msg_data from storing (ptr, len) to storing strbuf
      wrap_in_html(): use strbuf_addstr_xml_quoted()
      wrap_in_html(): process message in bulk rather than line-by-line
      imap-send.c: remove msg_data::flags, which was always zero
      imap-send.c: remove struct msg_data
      iamp-send.c: remove unused struct imap_store_conf
      imap-send.c: remove struct store_conf
      imap-send.c: remove struct message
      imap-send.c: remove some unused fields from struct store
      imap-send.c: inline parse_imap_list() in parse_list()
      imap-send.c: remove struct imap argument to parse_imap_list_l()
      imap-send.c: remove namespace fields from struct imap
      imap-send.c: remove unused field imap_store::trashnc
      imap-send.c: use struct imap_store instead of struct store
      imap-send.c: remove unused field imap_store::uidvalidity
      imap-send.c: fold struct store into struct imap_store
      imap-send.c: simplify logic in lf_to_crlf()

Michal Privoznik (3):
      git-completion.bash: Autocomplete --minimal and --histogram for git-diff
      config: Introduce diff.algorithm variable
      diff: Introduce --diff-algorithm command line option

Nguyễn Thái Ngọc Duy (43):
      ctype: make sane_ctype[] const array
      ctype: support iscntrl, ispunct, isxdigit and isprint
      Import wildmatch from rsync
      wildmatch: remove unnecessary functions
      wildmatch: follow Git's coding convention
      Integrate wildmatch to git
      t3070: disable unreliable fnmatch tests
      wildmatch: make wildmatch's return value compatible with fnmatch
      wildmatch: remove static variable force_lower_case
      wildmatch: fix case-insensitive matching
      wildmatch: adjust "**" behavior
      wildmatch: make /**/ match zero or more directories
      Support "**" wildcard in .gitignore and .gitattributes
      pathspec: save the non-wildcard length part
      test-wildmatch: avoid Windows path mangling
      pathspec: do exact comparison on the leading non-wildcard part
      pathspec: apply "*.c" optimization from exclude
      tree_entry_interesting: do basedir compare on wildcard patterns when possible
      config.txt: a few lines about branch.<name>.description
      wildmatch: fix "**" special case
      wildmatch: rename constants and update prototype
      compat/fnmatch: respect NO_FNMATCH* even on glibc
      wildmatch: make dowild() take arbitrary flags
      wildmatch: replace variable 'special' with better named ones
      wildmatch: support "no FNM_PATHNAME" mode
      test-wildmatch: add "perf" command to compare wildmatch and fnmatch
      wildmatch: make a special case for "*/" with FNM_PATHNAME
      wildmatch: advance faster in <asterisk> + <literal> patterns
      Makefile: add USE_WILDMATCH to use wildmatch as fnmatch
      branch: delete branch description if it's empty
      t4014: a few more tests on cover letter using branch description
      format-patch: pick up correct branch name from symbolic ref
      format-patch: pick up branch description when no ref is specified
      upload-pack: only accept commits from "shallow" line
      fetch: add --unshallow for turning shallow repo into complete one
      upload-pack: fix off-by-one depth calculation in shallow clone
      fetch: elaborate --depth action
      Update :/abc ambiguity check
      grep: avoid accepting ambiguous revision
      branch: reject -D/-d without branch name
      branch: give a more helpful message on redundant arguments
      branch: mark more strings for translation
      status: show the branch name if possible in in-progress info

Paul Mackerras (3):
      gitk: Fix display of branch names on some commits
      gitk: Improve display of list of nearby tags and heads
      gitk: Display important heads even when there are many

Pete Wyckoff (35):
      git p4: test sync/clone --branch behavior
      git p4: rearrange and simplify hasOrigin handling
      git p4: add comments to p4BranchesInGit
      git p4: inline listExistingP4GitBranches
      git p4: create p4/HEAD on initial clone
      git p4: verify expected refs in clone --bare test
      git p4: clone --branch should checkout master
      git p4 doc: fix branch detection example
      git p4: allow short ref names to --branch
      git p4: rearrange self.initialParent use
      git p4: fail gracefully on sync with no master branch
      git p4: fix sync --branch when no master branch
      git p4 test: keep P4CLIENT changes inside subshells
      git p4: fix submit when no master branch
      git p4: temp branch name should use / even on windows
      git p4: remove unused imports
      git p4: generate better error message for bad depot path
      git p4 test: use client_view to build the initial client
      git p4 test: avoid loop in client_view
      git p4 test: use client_view in t9806
      git p4 test: start p4d inside its db dir
      git p4 test: translate windows paths for cygwin
      git p4: remove unreachable windows \r\n conversion code
      git p4: scrub crlf for utf16 files on windows
      git p4 test: newline handling
      git p4 test: use LineEnd unix in windows tests too
      git p4 test: avoid wildcard * in windows
      git p4: cygwin p4 client does not mark read-only
      git p4 test: use test_chmod for cygwin
      git p4: disable read-only attribute before deleting
      git p4: avoid shell when mapping users
      git p4: avoid shell when invoking git rev-list
      git p4: avoid shell when invoking git config --get-all
      git p4: avoid shell when calling git config
      git p4: introduce gitConfigBool

Peter Krefting (2):
      gitk: Update Swedish translation (296t)
      l10n: Update Swedish translation (1983t0f0u)

Peter Wu (1):
      git-svn: do not escape certain characters in paths

Ralf Thielow (6):
      l10n: de.po: address the user formally
      commit: make default of "cleanup" option configurable
      l10n: de.po: fix some minor issues
      l10n: de.po: translate 11 new messages
      l10n: de.po: translate "revision" consistently as "Revision"
      l10n: de.po: translate "reset" as "neu setzen"

Ramsay Jones (1):
      t3070: Disable some failing fnmatch tests

René Scharfe (3):
      t0008: avoid brace expansion
      pretty: use prefixcmp instead of memcmp on NUL-terminated strings
      refs: use strncmp() instead of strlen() and memcmp()

Robin Rosenberg (1):
      Enable minimal stat checking

Stefan Haller (6):
      gitk: Synchronize highlighting in file view when scrolling diff
      gitk: Highlight current search hit in orange
      gitk: Highlight first search result immediately on incremental search
      gitk: Work around empty back and forward images when buttons are disabled
      gitk: Fix error message when clicking on a connecting line
      gitk: When searching, only highlight files when in Patch mode

Stephen Boyd (2):
      gpg: allow translation of more error messages
      run-command: be more informative about what failed

Sven Strickroth (2):
      mergetools: support TortoiseGitMerge
      mergetools: teach tortoisemerge to handle filenames with SP correctly

Techlive Zheng (1):
      contrib/subtree: use %B for split subject/body

Ted Zlatanov (1):
      Update CodingGuidelines for Perl

Thomas Ackermann (5):
      Documentation: avoid poor-man's small caps GIT
      Documentation: the name of the system is 'Git', not 'git'
      Documentation: do not use undefined terms git-dir and git-file
      Documentation: add a description for 'gitfile' to glossary
      Documentation: StGit is the right spelling, not StGIT

Torsten Bögershausen (9):
      t9402: sed -i is not portable
      t9402: improve check_end_tree() and check_end_full_tree()
      t9402: Dont use test_must_fail cvs
      t9402: No space after IO-redirection
      t9402: Add missing &&; Code style
      t9402: Simplify git ls-tree
      t9402: Rename check.cvsCount and check.list
      t9402: Use TABs for indentation
      test: Add check-non-portable-shell.pl

Trần Ngọc Quân (1):
      l10n: vi.po: updated Vietnamese translation

W. Trevor King (3):
      submodule: add get_submodule_config helper funtion
      submodule update: add --remote for submodule's upstream changes
      submodule add: If --branch is given, record it in .gitmodules

Wang Sheng (1):
      l10n: zh_CN.po: 800+ new translations on command usages


Version v1.8.1.6; changes since v1.8.1.5:
-----------------------------------------

Antoine Pelisse (4):
      update-index: allow "-h" to also display options
      diff: Fix rename pretty-print when suffix and prefix overlap
      tests: make sure rename pretty print works
      perf: update documentation of GIT_PERF_REPEAT_COUNT

Christian Helmuth (1):
      git-commit doc: describe use of multiple `-m` options

Dan Bornstein (1):
      Correct the docs about GIT_SSH.

David Michael (1):
      git-compat-util.h: Provide missing netdb.h definitions

Fredrik Gustafsson (1):
      gitweb/README: remove reference to git.kernel.org

Greg Price (1):
      describe: Document --match pattern format

Jeff King (6):
      avoid segfaults on parse_object failure
      use parse_object_or_die instead of die("bad object")
      pack-refs: write peeled entry for non-tags
      dir.c::match_pathname(): adjust patternlen when shifting pattern
      dir.c::match_pathname(): pay attention to the length of string parameters
      t: check that a pattern without trailing slash matches a directory

Johannes Sixt (1):
      t2003: work around path mangling issue on Windows

John Keeping (3):
      t2003: modernize style
      entry: fix filter lookup
      merge-tree: fix typo in merge-tree.c::unresolved

Joshua Clayton (1):
      Git.pm: fix cat_blob crashes on large files

Junio C Hamano (8):
      imap-send: support Server Name Indication (RFC4366)
      diff-options: unconfuse description of --color
      Documentation: merging a tag is a special case
      attr.c::path_matches(): the basename is part of the pathname
      attr.c::path_matches(): special case paths that end with a slash
      dir.c::match_basename(): pay attention to the length of string parameters
      Start preparing for 1.8.1.6
      Git 1.8.1.6

Kacper Kornet (3):
      rev-parse: clarify documentation of $name@{upstream} syntax
      t1507: Test that branchname@{upstream} is interpreted as branch
      Fix revision walk for commits with the same dates

Karsten Blees (1):
      name-hash.c: fix endless loop with core.ignorecase=true

Kevin Bracey (2):
      Translate git_more_info_string consistently
      git.c: make usage match manual page

Lukas Fleischer (2):
      bundle: Fix "verify" output if history is complete
      bundle: Add colons to list headings in "verify"

Matthias Krüger (1):
      git help config: s/insn/instruction/

Michael Haggerty (2):
      Provide a mechanism to turn off symlink resolution in ceiling paths
      pack-refs: add fully-peeled trait

Mihai Capotă (1):
      git-pull doc: fix grammo ("conflicts" is plural)

Nguyễn Thái Ngọc Duy (4):
      index-format.txt: mention of v4 is missing in some places
      read-cache.c: use INDEX_FORMAT_{LB,UB} in verify_hdr()
      update-index: list supported idx versions and their features
      index-pack: fix buffer overflow caused by translations

René Scharfe (2):
      Makefile: keep LIB_H entries together and sorted
      sha1_name: pass object name length to diagnose_invalid_sha1_path()

Tadeusz Andrzej Kadłubowski (2):
      git-filter-branch.txt: clarify ident variables usage
      Documentation: filter-branch env-filter example

Thomas Rast (2):
      diff: prevent pprint_rename from underrunning input
      git-tag(1): we tag HEAD by default

Torsten Bögershausen (1):
      remote-helpers/test-bzr.sh: do not use "grep '\s'"

W. Trevor King (1):
      Documentation/githooks: Explain pre-rebase parameters


Version v1.8.1.5; changes since v1.8.1.4:
-----------------------------------------

Andrej E Baranov (1):
      gitweb: refer to picon/gravatar images over the same scheme

Andrew Wong (1):
      Documentation/githooks: Fix linkgit

Asheesh Laroia (1):
      git-mergetool: print filename when it contains %

Ben Walton (3):
      Move Git::SVN::get_tz to Git::get_tz_offset
      perl/Git.pm: fix get_tz_offset to properly handle DST boundary cases
      cvsimport: format commit timestamp ourselves without using strftime

Brad King (1):
      Documentation/submodule: Add --force to update synopsis

David Aguilar (3):
      mergetools/p4merge: Honor $TMPDIR for the /dev/null placeholder
      difftool--helper: fix printf usage
      p4merge: fix printf usage

Erik Faye-Lund (1):
      parse-options: report uncorrupted multi-byte options

Greg Price (1):
      Documentation: "advice" is uncountable

Jeff King (2):
      http_request: reset "type" strbuf before adding
      Makefile: avoid infinite loop on configure.ac change

Jiang Xin (1):
      Add utf8_fprintf helper that returns correct number of columns

John Keeping (3):
      Rename {git- => git}remote-helpers.txt
      builtin/apply: tighten (dis)similarity index parsing
      t4038: add tests for "diff --cc --raw <trees>"

Junio C Hamano (7):
      doc: mention tracking for pull.default
      combine-diff: lift 32-way limit of combined diff
      t5551: fix expected error output
      user-manual: typofix (ofthe->of the)
      Prepare for 1.8.1.5
      Update draft release notes to 1.8.1.5
      Git 1.8.1.5

Matthieu Moy (1):
      git.txt: update description of the configuration mechanism

Michael J Gruber (1):
      git-bisect.txt: clarify that reset quits bisect

Nguyễn Thái Ngọc Duy (1):
      clone: forbid --bare --separate-git-dir <dir>

Shawn O. Pearce (1):
      Verify Content-Type from smart HTTP servers

Thomas Rast (1):
      Make !pattern in .gitattributes non-fatal

W. Trevor King (4):
      user-manual: Update for receive.denyCurrentBranch=refuse
      user-manual: Reorganize the reroll sections, adding 'git rebase -i'
      user-manual: Use request-pull to generate "please pull" text
      user-manual: Flesh out uncommitted changes and submodule updates

Zoltan Klinger (1):
      git-clean: Display more accurate delete messages


Version v1.8.1.4; changes since v1.8.1.3:
-----------------------------------------

Junio C Hamano (2):
      imap-send: move #ifdef around
      Git 1.8.1.4

Matthieu Moy (1):
      Replace filepattern with pathspec for consistency

Oswald Buddenhagen (2):
      imap-send: the subject of SSL certificate must match the host
      imap-send: support subjectAltName as well

W. Trevor King (9):
      user-manual: Fix 'both: so' -> 'both; so' typo
      user-manual: Fix 'http' -> 'HTTP' typos
      user-manual: Fix 'you - Git' -> 'you--Git' typo
      user-manual: Rewrite git-gc section for automatic packing
      user-manual: use 'remote add' to setup push URLs
      user-manual: give 'git push -f' as an alternative to +master
      user-manual: mention 'git remote add' for remote branch config
      user-manual: use 'git config --global user.*' for setup
      user-manual: use -o latest.tar.gz to create a gzipped tarball


Version v1.8.1.3; changes since v1.8.1.2:
-----------------------------------------

Brandon Casey (3):
      git-completion.bash: replace zsh notation that breaks bash 3.X
      git-p4.py: support Python 2.5
      git-p4.py: support Python 2.4

Dmitry V. Levin (1):
      am: invoke perl's strftime in C locale

Fraser Tweedale (1):
      push: fix segfault when HEAD points nowhere

John Keeping (1):
      git-cvsimport.txt: cvsps-2 is deprecated

Jonathan Nieder (2):
      ident: do not drop username when reading from /etc/mailname
      Makefile: explicitly set target name for autogenerated dependencies

Junio C Hamano (17):
      Which merge_file() function do you mean?
      merge-tree: lose unused "flags" from merge_list
      merge-tree: lose unused "resolve_directories"
      merge-tree: add comments to clarify what these functions are doing
      merge-tree: fix d/f conflicts
      Documentation: update "howto maintain git"
      howto/maintain: mark titles for asciidoc
      help: include <common-cmds.h> only in one file
      t9902: protect test from stray build artifacts
      howto/maintain: document "### match next" convention in jch/pu branch
      README: update stale and/or incorrect information
      INSTALL: git-p4 does not support Python 3
      git-am: record full index line in the patch used while rebasing
      apply: simplify build_fake_ancestor()
      apply: diagnose incomplete submodule object name better
      Start preparing for 1.8.1.3
      Git 1.8.1.3

Martin von Zweigbergk (2):
      tests: move test_cmp_rev to test-lib-functions
      learn to pick/revert into unborn branch

Nguyễn Thái Ngọc Duy (4):
      attr: fix off-by-one directory component length calculation
      test-lib.sh: unfilter GIT_PERF_*
      attr: avoid calling find_basename() twice per path
      branch: no detached HEAD check when editing another branch's description

Phil Hord (1):
      rebase --preserve-merges: keep all merge commits including empty ones

Ramsay Jones (1):
      Makefile: Replace merge-file.h with merge-blobs.h in LIB_H

Stephen Boyd (1):
      gpg: close stderr once finished with it in verify_signed_buffer()

Torsten Bögershausen (3):
      t0050: known breakage vanished in merge (case change)
      t0050: honor CASE_INSENSITIVE_FS in add (with different case)
      t0050: Use TAB for indentation


Version v1.8.1.2; changes since v1.8.1.1:
-----------------------------------------

Antoine Pelisse (3):
      dir.c: Make git-status --ignored more consistent
      git-status: Test --ignored behavior
      status: always report ignored tracked directories

Dylan Smith (1):
      git-completion.bash: silence "not a valid object" errors

Eric S. Raymond (1):
      Remove the suggestion to use parsecvs, which is currently broken.

John Keeping (1):
      git-for-each-ref.txt: 'raw' is a supported date format

Jonathan Nieder (1):
      contrib/vim: simplify instructions for old vim support

Junio C Hamano (2):
      Start preparing for 1.8.1.2
      Git 1.8.1.2

Marc Khouzam (1):
      Prevent space after directories in tcsh completion

Michael Haggerty (8):
      Introduce new static function real_path_internal()
      real_path_internal(): add comment explaining use of cwd
      Introduce new function real_path_if_valid()
      longest_ancestor_length(): use string_list_split()
      longest_ancestor_length(): take a string_list argument for prefixes
      longest_ancestor_length(): require prefix list entries to be normalized
      setup_git_directory_gently_1(): resolve symlinks in ceiling paths
      string_list_longest_prefix(): remove function

Nguyễn Thái Ngọc Duy (1):
      attr: make it build with DEBUG_ATTR again

Nickolai Zeldovich (1):
      git-send-email: treat field names as case-insensitively

Peter Eisentraut (1):
      git-commit-tree(1): correct description of defaults

René Scharfe (5):
      archive-zip: write uncompressed size into header even with streaming
      t0024, t5000: clear variable UNZIP, use GIT_UNZIP instead
      t0024, t5000: use test_lazy_prereq for UNZIP
      t5000, t5003: move ZIP tests into their own script
      t5003: check if unzip supports symlinks

Sebastian Staudt (1):
      config.txt: Document help.htmlpath config parameter


Version v1.8.1.1; changes since v1.8.1:
---------------------------------------

Aaron Schrab (1):
      Use longer alias names in subdirectory tests

Adam Spiers (1):
      api-allocation-growing.txt: encourage better variable naming

Antoine Pelisse (1):
      merge: Honor prepare-commit-msg return code

Christian Couder (1):
      Makefile: detect when PYTHON_PATH changes

Jean-Noël AVILA (1):
      Add directory pattern matching to attributes

Jeff King (9):
      run-command: drop silent_exec_failure arg from wait_or_whine
      launch_editor: refactor to use start/finish_command
      run-command: do not warn about child death from terminal
      launch_editor: propagate signals from editor to git
      completion: complete refs for "git commit -c"
      refs: do not use cached refs in repack_without_ref
      tests: turn on test-lint by default
      fix compilation with NO_PTHREADS
      run-command: encode signal death as a positive integer

Jens Lehmann (1):
      clone: support atomic operation with --separate-git-dir

John Keeping (4):
      git-fast-import(1): remove duplicate '--done' option
      git-shortlog(1): document behaviour of zero-width wrap
      git-fast-import(1): combine documentation of --[no-]relative-marks
      git-fast-import(1): reorganise options

Jonathan Nieder (6):
      config, gitignore: failure to access with ENOTDIR is ok
      config: treat user and xdg config permission problems as errors
      doc: advertise GIT_CONFIG_NOSYSTEM
      config: exit on error accessing any config file
      build: do not automatically reconfigure unless configure.ac changed
      docs: manpage XML depends on asciidoc.conf

Junio C Hamano (20):
      apply.c:update_pre_post_images(): the preimage can be truncated
      format_commit_message(): simplify calls to logmsg_reencode()
      sh-setup: work around "unset IFS" bug in some shells
      fetch: ignore wildcarded refspecs that update local symbolic refs
      xmkstemp(): avoid showing truncated template more carefully
      t0200: "locale" may not exist
      t9502: do not assume GNU tar
      t4014: fix arguments to grep
      t3600: Avoid "cp -a", which is a GNUism
      t9020: use configured Python to run the test helper
      compat/fnmatch: update old-style definition to ANSI
      t9200: let "cvs init" create the test repository
      merge --no-edit: do not credit people involved in the side branch
      SubmittingPatches: who am I and who cares?
      SubmittingPatches: mention subsystems with dedicated repositories
      Documentation: full-ness of a bundle is significant for cloning
      SubmittingPatches: remove overlong checklist
      SubmittingPatches: give list and maintainer addresses
      Prepare for 1.8.1.1
      Git 1.8.1.1

Kirill Brilliantov (1):
      Documentation: correct example restore from bundle

Mark Levedahl (1):
      Makefile: add comment on CYGWIN_V15_WIN32API

Matthew Daley (1):
      gitweb: Sort projects with undefined ages last

Max Horn (1):
      configure.ac: fix pthreads detection on Mac OS X

Michael Schubert (2):
      git-subtree: ignore git-subtree executable
      git-subtree: fix typo in manpage

Michał Kiedrowicz (1):
      graph.c: infinite loop in git whatchanged --graph -m

Nguyễn Thái Ngọc Duy (4):
      cache-tree: remove dead i-t-a code in verify_cache()
      cache-tree: replace "for" loops in update_one with "while" loops
      cache-tree: fix writing cache-tree when CE_REMOVE is present
      cache-tree: invalidate i-t-a paths after generating trees

Orgad Shaneh (1):
      gitweb: fix error in sanitize when highlight is enabled

Paul Fox (1):
      launch_editor: ignore terminal signals while editor has control

Rene Bredlau (1):
      http.c: Avoid username prompt for certifcate credentials

René Scharfe (2):
      archive-tar: split long paths more carefully
      t1402: work around shell quoting issue on NetBSD

Sebastian Schuberth (1):
      nedmalloc: Fix a compile warning (exposed as error) with GCC 4.7.2

Steffen Prohaska (2):
      shortlog: fix wrapping lines of wraplen
      strbuf_add_wrapped*(): Remove unused return value

Sven Strickroth (3):
      git-svn, perl/Git.pm: add central method for prompting passwords
      perl/Git.pm: Honor SSH_ASKPASS as fallback if GIT_ASKPASS is not set
      git-svn, perl/Git.pm: extend and use Git->prompt method for querying users

Thomas Ackermann (1):
      Remove Documentation/pt_BR/gittutorial.txt

Torsten Bögershausen (2):
      t9810: Do not use sed -i
      t9020: which is not portable

W. Trevor King (1):
      remote-hg: Fix biridectionality -> bidirectionality typos


Version v1.8.1; changes since v1.8.1-rc3:
-----------------------------------------

Junio C Hamano (3):
      git(1): show link to contributor summary page
      Git 1.8.0.3
      Git 1.8.1

Max Horn (1):
      git-remote-helpers.txt: document invocation before input format

Ramkumar Ramachandra (1):
      Documentation: move diff.wordRegex from config.txt to diff-config.txt

Sebastian Leske (4):
      git-svn: Document branches with at-sign(@).
      git-svn: Recommend use of structure options.
      git-svn: Expand documentation for --follow-parent
      git-svn: Note about tags.

Simon Oosthoek (1):
      make __git_ps1 accept a third parameter in pcmode

Thomas Ackermann (1):
      Sort howto documents in howto-index.txt


Version v1.8.1-rc3; changes since v1.8.1-rc2:
---------------------------------------------

Adam Spiers (2):
      SubmittingPatches: add convention of prefixing commit messages
      Documentation: move support for old compilers to CodingGuidelines

Chris Rorvick (2):
      Documentation/git-checkout.txt: clarify usage
      Documentation/git-checkout.txt: document 70c9ac2 behavior

Jeff King (5):
      .mailmap: match up some obvious names/emails
      .mailmap: fix broken entry for Martin Langhoff
      .mailmap: normalize emails for Jeff King
      .mailmap: normalize emails for Linus Torvalds
      contrib: update stats/mailmap script

John Keeping (1):
      Documentation: don't link to example mail addresses

Junio C Hamano (5):
      fetch --tags: clarify documentation
      README: it does not matter who the current maintainer is
      t7004: do not create unneeded gpghome/gpg.conf when GPG is not used
      Documentation: Describe "git diff <blob> <blob>" separately
      Git 1.8.1-rc3

Nguyễn Thái Ngọc Duy (1):
      index-format.txt: clarify what is "invalid"

Sebastian Leske (4):
      git-svn: Document branches with at-sign(@).
      git-svn: Recommend use of structure options.
      git-svn: Expand documentation for --follow-parent
      git-svn: Note about tags.

Sitaram Chamarty (1):
      clarify -M without % symbol in diff-options

Stefano Lattarini (1):
      README: Git is released under the GPLv2, not just "the GPL"

Thomas Ackermann (3):
      Remove misleading date from api-index-skel.txt
      Remove duplicate entry in ./Documentation/Makefile
      Move ./technical/api-command.txt to ./howto/new-command.txt


Version v1.8.1-rc2; changes since v1.8.1-rc1:
---------------------------------------------

Anders Kaseorg (1):
      git-prompt: Document GIT_PS1_DESCRIBE_STYLE

Erik Faye-Lund (7):
      mingw: correct exit-code for SIGALRM's SIG_DFL
      mingw: make fgetc raise SIGINT if apropriate
      compat/terminal: factor out echo-disabling
      compat/terminal: separate input and output handles
      mingw: reuse tty-version of git_terminal_prompt
      mingw: get rid of getpass implementation
      mingw_rmdir: do not prompt for retry when non-empty

Jeff King (1):
      remote-testsvn: fix unitialized variable

Junio C Hamano (5):
      git(1): remove a defunct link to "list of authors"
      Git 1.8.0.2
      git-prompt.sh: update PROMPT_COMMAND documentation
      git(1): show link to contributor summary page
      Git 1.8.1-rc2

Manlio Perillo (1):
      git.txt: add missing info about --git-dir command-line option

Marc Khouzam (1):
      Add file completion to tcsh git completion.

Matthew Daley (1):
      Fix sizeof usage in get_permutations

Max Horn (6):
      git-remote-helpers.txt: document invocation before input format
      git-remote-helpers.txt: document missing capabilities
      git-remote-helpers.txt: minor grammar fix
      git-remote-helpers.txt: rearrange description of capabilities
      git-remote-helpers.txt: clarify command <-> capability correspondences
      git-remote-helpers.txt: clarify options & ref list attributes

Stefano Lattarini (1):
      Makefile: whitespace style fixes in macro definitions

Sébastien Loriot (1):
      Documentation/git-stash.txt: add a missing verb

Thomas Ackermann (1):
      Renumber list in api-command.txt


Version v1.8.1-rc1; changes since v1.8.1-rc0:
---------------------------------------------

Jiang Xin (1):
      l10n: Update git.pot (5 new, 1 removed messages)

Junio C Hamano (3):
      Update draft release notes to 1.8.0.2
      Documentation/diff-config: work around AsciiDoc misfortune
      Git 1.8.1-rc1

Matthieu Moy (1):
      document that statusHints affects git checkout

Peter Krefting (1):
      l10n: Update Swedish translation (1979t0f0u)

Ralf Thielow (2):
      l10n: de.po: translate 825 new messages
      l10n: de.po: translate 22 new messages

Ramkumar Ramachandra (4):
      t4041 (diff-submodule-option): don't hardcode SHA-1 in expected outputs
      t4041 (diff-submodule-option): parse digests sensibly
      t4041 (diff-submodule-option): rewrite add_file() routine
      t4041 (diff-submodule-option): modernize style

Trần Ngọc Quân (1):
      l10n: vi.po: update to git-v1.8.0.1-347-gf94c3


Version v1.8.1-rc0; changes since v1.8.0.3:
-------------------------------------------

Ben Walton (1):
      Use character class for sed expression instead of \s

Brandon Casey (1):
      usage.c: detect recursion in die routines and bail out immediately

Chris Rorvick (1):
      git-cvsimport: allow author-specific timezones

Dmitry Ivankov (1):
      vcs-svn: add fast_export_note to create notes

Enrico Scholz (1):
      emacs: make 'git-status' work with separate git dirs

Eric S. Raymond (1):
      Documentation: how to add a new command

Felipe Contreras (32):
      completion: add format-patch options to send-email
      Add new remote-hg transport helper
      remote-hg: add support for pushing
      remote-hg: add support for remote pushing
      remote-hg: add support to push URLs
      remote-hg: make sure the encoding is correct
      remote-hg: match hg merge behavior
      remote-hg: add support for hg-git compat mode
      remote-hg: add compat for hg-git author fixes
      remote-hg: fake bookmark when there's none
      remote-hg: add basic tests
      test-lib: avoid full path to store test results
      remote-hg: add bidirectional tests
      remote-hg: add tests to compare with hg-git
      remote-hg: add extra author test
      remote-hg: add option to not track branches
      remote-hg: the author email can be null
      remote-hg: fix compatibility with older versions of hg
      remote-hg: try the 'tip' if no checkout present
      remote-hg: avoid bad refs
      completion: add comment for test_completion()
      completion: standardize final space marker in tests
      completion: simplify tests using test_completion_long()
      completion: consolidate test_completion*() tests
      completion: refactor __gitcomp related tests
      completion: simplify __gitcomp() test helper
      completion: add new zsh completion
      completion: start moving to the new zsh completion
      send-email: avoid questions when user has an ident
      remote-hg: fix for files with spaces
      remote-hg: fix for older versions of python
      completion: fix warning for zsh

Florian Achleitner (15):
      Implement a remote helper for svn in C
      Add git-remote-testsvn to Makefile
      Add svndump_init_fd to allow reading dumps from arbitrary FDs
      Add argv_array_detach and argv_array_free_detached
      Connect fast-import to the remote-helper via pipe, adding 'bidi-import' capability
      Add documentation for the 'bidi-import' capability of remote-helpers
      When debug==1, start fast-import with "--stats" instead of "--quiet"
      remote-svn, vcs-svn: Enable fetching to private refs
      Allow reading svn dumps from files via file:// urls
      Create a note for every imported commit containing svn metadata
      remote-svn: Activate import/export-marks for fast-import
      remote-svn: add incremental import
      Add a svnrdump-simulator replaying a dump file for testing
      remote-svn: add marks-file regeneration
      Add a test script for remote-svn

Jeff King (30):
      pager: drop "wait for output to run less" hack
      peel_ref: use faster deref_tag_noverify
      peel_ref: do not return a null sha1
      peel_ref: check object type before loading
      upload-pack: use peel_ref for ref advertisements
      remote-curl: do not call run_slot repeatedly
      http: do not set up curl auth after a 401
      strbuf: always return a non-NULL value from strbuf_detach
      status: add --long output format option
      git-sh-setup: refactor ident-parsing functions
      filter-branch: use git-sh-setup's ident parsing functions
      t1300: style updates
      t1300: remove redundant test
      t1300: test "git config --get-all" more thoroughly
      git-config: remove memory leak of key regexp
      git-config: fix regexp memory leaks on error conditions
      git-config: collect values instead of immediately printing
      git-config: do not complain about duplicate entries
      git-config: use git_config_with_options
      remote-curl: hoist gzip buffer size to top of post_rpc
      remote-curl: retry failed requests for auth even with gzip
      cvsimport: work around perl tzset issue
      test-lib: allow negation of prerequisites
      t7502: factor out autoident prerequisite
      ident: make user_ident_explicitly_given static
      ident: keep separate "explicit" flags for author and committer
      diff: rename "set" variable
      t: add tests for "git var"
      t9001: check send-email behavior with implicit sender
      status: respect advice.statusHints for ahead/behind advice

Jeff Muizelaar (1):
      diff: diff.context configuration gives default to -U

Jens Lehmann (5):
      submodule: teach rm to remove submodules unless they contain a git directory
      Teach "git submodule add" the --name option
      submodule add: Fail when .git/modules/<name> already exists unless forced
      submodule status: remove unused orig_* variables
      Teach rm to remove submodules when given with a trailing '/'

Jiang Xin (1):
      l10n: Update git.pot (14 new, 3 removed messages)

Joachim Schmitz (1):
      fix 'make test' for HP NonStop

Johan Herland (1):
      git symbolic-ref --delete $symref

Johannes Sixt (1):
      maybe_flush_or_die: move a too-loose Windows specific error

Junio C Hamano (20):
      t4055: avoid use of sed 'a' command
      log --grep: accept --basic-regexp and --perl-regexp
      log: honor grep.* configuration
      coloured git-prompt: paint detached HEAD marker in red
      pretty: remove reencode_commit_message()
      format_note(): simplify API
      pretty: prepare notes message at a centralized place
      pretty_print_commit(): do not append notes message
      format-patch: append --signature after notes
      format-patch --notes: show notes after three-dashes
      Documentation: decribe format-patch --notes
      get_fetch_map(): tighten checks on dest refs
      format-patch: add a blank line between notes and diffstat
      Start 1.8.1 cycle
      Sixth batch for 1.8.1
      Update draft release notes for 1.8.1
      Update draft release notes to 1.8.1
      Update draft release notes to 1.8.1
      Update draft release notes to 1.8.1
      Git 1.8.1-rc0

Karsten Blees (1):
      update-index/diff-index: use core.preloadindex to improve performance

Krzysztof Mazur (10):
      git-send-email: introduce compose-encoding
      git-send-email: use compose-encoding for Subject
      git-send-email: skip RFC2047 quoting for ASCII subjects
      git-send-email: introduce quote_subject()
      git-send-email: add rfc2047 quoting for "=?"
      git-send-email: remove garbage after email address
      git-send-email: fix fallback code in extract_valid_address()
      git-send-email: remove invalid addresses earlier
      git-send-email: ask what to do with an invalid email address
      git-send-email: allow edit invalid email address

Marc Khouzam (2):
      tcsh-completion re-using git-completion.bash
      Support for git aliasing for tcsh completion

Mark Levedahl (2):
      Update cygwin.c for new mingw-64 win32 api headers
      USE CGYWIN_V15_WIN32API as macro to select api for cygwin

Matt Kraai (1):
      docs: move submodule section

Matthew Ogilvie (10):
      cvsserver t9400: add basic 'cvs log' test
      cvsserver: removed unused sha1Or-k mode from kopts_from_path
      cvsserver: add comments about database schema/usage
      cvsserver update: comment about how we shouldn't remove a user-modified file
      cvsserver: remove unused functions _headrev and gethistory
      cvsserver: clean up client request handler map comments
      cvsserver: split up long lines in req_{status,diff,log}
      cvsserver: use whole CVS rev number in-process; don't strip "1." prefix
      cvsserver: cvs add: do not expand directory arguments
      cvsserver status: provide real sticky info

Matthieu Moy (1):
      status: add advice on how to push/pull to tracking branch

Michael Haggerty (12):
      parse_dirstat_params(): use string_list to split comma-separated string
      strbuf_split_buf(): use ALLOC_GROW()
      strbuf_split_buf(): simplify iteration
      strbuf_split*(): rename "delim" parameter to "terminator"
      strbuf_split*(): document functions
      string_list: add a function string_list_remove_empty_items()
      Initialize sort_uniq_list using named constant
      combine_notes_cat_sort_uniq(): sort and dedup lines all at once
      notes: fix handling of colon-separated values
      string_list_add_refs_from_colon_sep(): use string_list_split()
      link_alt_odb_entries(): use string_list_split_in_place()
      link_alt_odb_entries(): take (char *, len) rather than two pointers

Michael J Gruber (1):
      replace: parse revision argument for -d

Nguyễn Thái Ngọc Duy (16):
      attr: avoid strlen() on every match
      attr: avoid searching for basename on every match
      exclude: stricten a length check in EXC_FLAG_ENDSWITH case
      exclude: split basename matching code into a separate function
      exclude: fix a bug in prefix compare optimization
      exclude: split pathname matching code into a separate function
      gitignore: make pattern parsing code a separate function
      attr: more matching optimizations from .gitignore
      tree-walk: use enum interesting instead of integer
      Move try_merge_command and checkout_fast_forward to libgit.a
      Move estimate_bisect_steps to libgit.a
      Move print_commit_list to libgit.a
      Move setup_diff_pager to libgit.a
      send-pack: move core code to libgit.a
      fetch-pack: remove global (static) configuration variable "args"
      fetch-pack: move core code to libgit.a

Patrick Palka (1):
      Documentation: improve the example of overriding LESS via core.pager

Pete Wyckoff (6):
      git p4: catch p4 describe errors
      git p4: handle servers without move support
      git p4: catch p4 errors when streaming file contents
      git p4 test: display unresolvable host error
      git p4: fix labelDetails typo in exception
      git p4: remove unneeded cmd initialization

Peter Krefting (1):
      l10n: Update Swedish translation (1975t0f0u)

Phil Hord (3):
      t7407: Fix recursive submodule test
      Teach --recursive to submodule sync
      Add tests for submodule sync --recursive

Phil Pennock (1):
      gitweb: make remote_heads config setting work

Philip Oakley (4):
      Doc SubmittingPatches: Mention --notes option after "cover letter"
      Doc notes: Include the format-patch --notes option
      Doc format-patch: clarify --notes use case
      Doc User-Manual: Patch cover letter, three dashes, and --notes

Ramkumar Ramachandra (4):
      remote-hg: add missing config for basic tests
      Documentation: move diff.wordRegex from config.txt to diff-config.txt
      diff: introduce diff.submodule configuration variable
      submodule: display summary header in bold

Ramsay Jones (2):
      builtin/config.c: Fix a sparse warning
      remote-curl.c: Fix a compiler warning

SZEDER Gábor (1):
      completion: remove 'help' duplicate from porcelain commands

Simon Oosthoek (3):
      Allow __git_ps1 to be used in PROMPT_COMMAND
      show color hints based on state of the git tree
      Fix up colored git-prompt

Stefan Zager (1):
      submodule add: fix handling of --reference=<repo> option

Stefano Lattarini (1):
      configure: fix some output message

Torsten Bögershausen (1):
      Fix t9200 on case insensitive file systems

Trần Ngọc Quân (2):
      l10n: vi.po: update to git-v1.7.12-437-g1084f
      l10n: vi.po: Update follow git-v1.8.0-273-g2d242


Version v1.8.0.3; changes since v1.8.0.2:
-----------------------------------------

Adam Spiers (2):
      SubmittingPatches: add convention of prefixing commit messages
      Documentation: move support for old compilers to CodingGuidelines

Anders Kaseorg (1):
      git-prompt: Document GIT_PS1_DESCRIBE_STYLE

Chris Rorvick (2):
      Documentation/git-checkout.txt: clarify usage
      Documentation/git-checkout.txt: document 70c9ac2 behavior

Gunnlaugur Þór Briem (1):
      Document git-svn fetch --log-window-size parameter

Jeff King (7):
      pickaxe: hoist empty needle check
      pickaxe: use textconv for -S counting
      .mailmap: match up some obvious names/emails
      .mailmap: fix broken entry for Martin Langhoff
      .mailmap: normalize emails for Jeff King
      .mailmap: normalize emails for Linus Torvalds
      contrib: update stats/mailmap script

John Keeping (1):
      Documentation: don't link to example mail addresses

Junio C Hamano (6):
      fetch --tags: clarify documentation
      README: it does not matter who the current maintainer is
      t7004: do not create unneeded gpghome/gpg.conf when GPG is not used
      Documentation: Describe "git diff <blob> <blob>" separately
      git(1): show link to contributor summary page
      Git 1.8.0.3

Krzysztof Mazur (1):
      doc: git-reset: make "<mode>" optional

Manlio Perillo (1):
      git.txt: add missing info about --git-dir command-line option

Matthew Daley (1):
      Fix sizeof usage in get_permutations

Max Horn (1):
      git-remote-helpers.txt: document invocation before input format

Nguyễn Thái Ngọc Duy (1):
      index-format.txt: clarify what is "invalid"

Ramkumar Ramachandra (1):
      Documentation: move diff.wordRegex from config.txt to diff-config.txt

Sebastian Leske (4):
      git-svn: Document branches with at-sign(@).
      git-svn: Recommend use of structure options.
      git-svn: Expand documentation for --follow-parent
      git-svn: Note about tags.

Sitaram Chamarty (1):
      clarify -M without % symbol in diff-options

Stefano Lattarini (1):
      README: Git is released under the GPLv2, not just "the GPL"

Thomas Ackermann (8):
      Split over-long synopsis in git-fetch-pack.txt into several lines
      Shorten two over-long lines in git-bisect-lk2009.txt by abbreviating some sha1
      Change headline of technical/send-pack-pipeline.txt to not confuse its content with content from git-send-pack.txt
      Documentation/technical: convert plain text files to asciidoc
      Documentation/howto: convert plain text files to asciidoc
      Documentation: build html for all files in technical and howto
      Remove misleading date from api-index-skel.txt
      Sort howto documents in howto-index.txt

Tom Jones (1):
      Add -S, --gpg-sign option to manpage of "git commit"


Version v1.8.0.2; changes since v1.8.0.1:
-----------------------------------------

Antoine Pelisse (1):
      Fix typo in remote set-head usage

Eric S. Raymond (1):
      doc/fast-import: clarify how content states are built

Johan Herland (2):
      t1400-update-ref: Add test verifying bug with symrefs in delete_ref()
      Fix failure to delete a packed ref through a symref

Junio C Hamano (13):
      reencode_string(): introduce and use same_encoding()
      test: add failing tests for "diff --stat" to t4049
      diff --stat: status of unmodified pair in diff-q is not zero
      diff --stat: use "file" temporary variable to refer to data->files[i]
      diff --stat: move the "total count" logic to the last loop
      diff --stat: do not count "unmerged" entries
      diff --shortstat: do not count "unmerged" entries
      Documentation/git-push.txt: clarify the "push from satellite" workflow
      Start preparing for 1.8.0.2
      t4049: refocus tests
      Update draft release notes to 1.8.0.2
      git(1): remove a defunct link to "list of authors"
      Git 1.8.0.2

Linus Torvalds (1):
      Fix "git diff --stat" for interesting - but empty - file changes

Mark Szepieniec (1):
      Documentation: improve phrasing in git-push.txt

Matthieu Moy (2):
      git-remote-mediawiki: escape ", \, and LF in file names
      git-fast-import.txt: improve documentation for quoted paths

Nguyễn Thái Ngọc Duy (1):
      compat/fnmatch: fix off-by-one character class's length check

Paul Gortmaker (1):
      Makefile: hide stderr of curl-config test

Pete Wyckoff (1):
      git p4: RCS expansion should not span newlines

Ralf Thielow (1):
      completion: add options --single-branch and --branch to "git clone"

Richard Hubbell (1):
      gitweb.perl: fix %highlight_ext mappings

Sébastien Loriot (1):
      Documentation/git-stash.txt: add a missing verb

W. Trevor King (1):
      git-submodule: wrap branch option with "<>" in usage strings.


Version v1.8.0.1; changes since v1.8.0:
---------------------------------------

Andreas Schwab (1):
      commit: fixup misplacement of --no-post-rewrite description

Ben Walton (1):
      Remove the hard coded length limit on variable names in config files

Carlos Martín Nieto (1):
      config: don't segfault when given --path with a missing value

David Aguilar (1):
      mergetools/p4merge: Handle "/dev/null"

Jan H. Schönherr (7):
      utf8: fix off-by-one wrapping of text
      format-patch: do not wrap non-rfc2047 headers too early
      format-patch: do not wrap rfc2047 encoded headers too late
      format-patch: introduce helper function last_line_length()
      format-patch: make rfc2047 encoding more strict
      format-patch: fix rfc2047 address encoding with respect to rfc822 specials
      format-patch tests: check quoting/encoding in To: and Cc: headers

Jeff King (3):
      diff_grep: use textconv buffers for add/deleted files
      gitweb: escape html in rss title
      checkout: print a message when switching unborn branches

Junio C Hamano (9):
      builtin/grep.c: make configuration callback more reusable
      grep: move the configuration parsing logic to grep.[ch]
      grep: move pattern-type bits support to top-level grep.[ch]
      revisions: initialize revs->grep_filter using grep_init()
      log --grep: use the same helper to set -E/-F options as "git grep"
      test-lib: Fix say_color () not to interpret \a\b\c in the message
      Start preparing for 1.8.0.1
      Further preparation for 1.8.0.1
      Git 1.8.0.1

Marc Khouzam (1):
      Completion must sort before using uniq

Matthieu Moy (2):
      Documentation: remote tracking branch -> remote-tracking branch
      Document 'git commit --no-edit' explicitly

Michael J Gruber (1):
      push/pull: adjust missing upstream help text to changed interface

Nguyễn Thái Ngọc Duy (1):
      grep: stop looking at random places for .gitattributes

Phil Hord (1):
      git-pull: Avoid merge-base on detached head

Philip Oakley (1):
      Doc repository-layout: Show refs/replace

René Scharfe (6):
      refs: lock symref that is to be deleted, not its target
      branch: factor out check_branch_commit()
      branch: factor out delete_branch_config()
      branch: delete symref branch, not its target
      branch: skip commit checks when deleting symref branches
      branch: show targets of deleted symrefs, not sha1s

Romain Francoise (1):
      mailmap: avoid out-of-bounds memory access

Stefan Zager (1):
      Fix potential hang in https handshake


Version v1.8.0; changes since v1.8.0-rc3:
-----------------------------------------

Andrew Wong (2):
      git-gui: Detect full path when parsing arguments
      git-gui: Don't prepend the prefix if value looks like a full path

Beat Bolli (2):
      git-gui: Fix a loose/lose mistake
      git-gui: remove .git/CHERRY_PICK_HEAD after committing

Benjamin Kerensa (1):
      git-gui: fix a typo in po/ files

Clemens Buchacher (1):
      git-gui: fix git-gui crash due to uninitialized variable

Heiko Voigt (1):
      git-gui: open console when using --trace on windows

Junio C Hamano (1):
      Git 1.8.0

Marcus Karlsson (1):
      git-gui: Use PWD if it exists on Mac OS X

Pat Thoyts (2):
      git-gui: preserve commit messages in utf-8
      git-gui 0.17

Ralf Thielow (3):
      git-gui: de.po: consistently add untranslated hook names within braces
      git-gui: de.po: translate "bare" as "bloß"
      git-gui: de.po: translate "remote" as "extern"

Vitaly "_Vi" Shukela (1):
      git-gui: Fix semi-working shortcuts for unstage and revert


Version v1.8.0-rc3; changes since v1.8.0-rc2:
---------------------------------------------

Dylan Alex Simon (1):
      gitweb.cgi: fix "comitter_tz" typo in feed

Jeff King (1):
      http: fix segfault in handle_curl_result

Jiang Xin (1):
      l10n: Update git.pot (3 new, 6 removed messages)

Junio C Hamano (3):
      Update draft release notes to 1.8.0
      Git 1.7.12.4
      Git 1.8.0-rc3

Peter Krefting (1):
      l10n: Update Swedish translation (1964t0f0u)

Richard Fearn (1):
      Fix spelling error in post-receive-email hook

Thomas Ackermann (1):
      Documentation/RelNotes: remove "updated up to this revision" markers

Trần Ngọc Quân (2):
      l10n: vi.po: update translation upto cc76011
      l10n: vi.po: update from v1.8.0-rc2-4-g42e55


Version v1.8.0-rc2; changes since v1.8.0-rc1:
---------------------------------------------

Ben Walton (1):
      tests: "cp -a" is a GNUism

Jonathan Nieder (2):
      git svn: work around SVN 1.7 mishandling of svn:special changes
      svn test: escape peg revision separator using empty peg rev

Junio C Hamano (2):
      gitcli: parse-options lets you omit tail of long options
      Git 1.8.0-rc2

Nguyễn Thái Ngọc Duy (2):
      gitignore.txt: suggestions how to get literal # or ! at the beginning
      attr: a note about the order of .gitattributes lookup

Ramkumar Ramachandra (1):
      Git url doc: mark ftp/ftps as read-only and deprecate them

Ramsay Jones (1):
      MALLOC_CHECK: Allow checking to be disabled from config.mak

Simon Ruderich (1):
      l10n: de.po: fix a few minor typos

Øyvind A. Holm (1):
      configure.ac: Add missing comma to CC_LD_DYNPATH


Version v1.8.0-rc1; changes since v1.8.0-rc0:
---------------------------------------------

Ammon Riley (1):
      Make git-svn branch patterns match complete URL

Eric Wong (1):
      git-svn: use path accessor for Git::SVN objects

Jonathan Nieder (2):
      Git::SVN: rename private path field
      git-svn: keep leading slash when canonicalizing paths (fallback case)

Junio C Hamano (7):
      log --grep-reflog: reject the option without -g
      Start preparing for 1.7.12.3
      t1450: the order the objects are checked is undefined
      Update draft release notes to 1.8.0
      paint_down_to_common(): parse commit before relying on its timestamp
      Git 1.7.12.3
      Git 1.8.0-rc1

Linus Torvalds (1):
      mailinfo: don't require "text" mime type for attachments

Michael J Gruber (1):
      RelNotes/1.8.0: various typo and style fixes

Nguyễn Thái Ngọc Duy (3):
      grep: prepare for new header field filter
      revision: add --grep-reflog to filter commits by reflog messages
      revision: make --grep search in notes too if shown

Peter Krefting (1):
      l10n: Fix to Swedish translation

Ramkumar Ramachandra (1):
      Documentation: mention `push.default` in git-push.txt

Robert Luberda (1):
      t9164: Add missing quotes in test

Steven Walter (2):
      git-svn.perl: consider all ranges for a given merge, instead of only tip-by-tip
      git-svn.perl: keep processing all commits in parents_exclude

Tobias Ulmer (1):
      silence git gc --auto --quiet output


Version v1.8.0-rc0; changes since v1.7.12.4:
--------------------------------------------

Adrian Johnson (1):
      Add userdiff patterns for Ada

Andrew Wong (3):
      rebase -i: Refactor help messages for todo file
      rebase -i: Teach "--edit-todo" action
      rebase -i: Add tests for "--edit-todo"

Aske Olsson (1):
      gitk: Fix GIT_TRACE issues

Carlos Martín Nieto (4):
      branch: introduce --set-upstream-to
      branch: add --unset-upstream option
      branch: deprecate --set-upstream and show help if we detect possible mistaken use
      completion: add --set-upstream-to and --unset-upstream

Chris Webb (1):
      cherry-pick: add --allow-empty-message option

David Aguilar (12):
      difftool: Simplify print_tool_help()
      difftool: Eliminate global variables
      difftool: Move option values into a hash
      difftool: Call the temp directory "git-difftool"
      difftool: Use symlinks when diffing against the worktree
      difftool: Handle finding mergetools/ in a path with spaces
      difftool: Check all return codes from compare()
      difftool: Wrap long lines for readability
      difftool: Handle compare() returning -1
      difftool: Disable --symlinks on cygwin
      mergetool,difftool: Document --tool-help consistently
      mergetool--lib: Allow custom commands to override built-ins

Elia Pinto (1):
      Add MALLOC_CHECK_ and MALLOC_PERTURB_ libc env to the test suite for detecting heap corruption

Erik Faye-Lund (1):
      contrib: add win32 credential-helper

J Smith (1):
      grep: add a grep.patternType configuration setting

Jeff King (4):
      remote-curl: rename is_http variable
      remote-curl: let users turn off smart http
      t9902: add a few basic completion tests
      t9902: add completion tests for "odd" filenames

Jiang Xin (11):
      Fix tests under GETTEXT_POISON on relative dates
      Fix tests under GETTEXT_POISON on git-stash
      Fix tests under GETTEXT_POISON on diffstat
      Fix tests under GETTEXT_POISON on git-apply
      Fix tests under GETTEXT_POISON on pack-object
      Fix tests under GETTEXT_POISON on git-remote
      Fix tests under GETTEXT_POISON on parseopt
      l10n: Update git.pot (2 new, 4 removed messages)
      l10n: zh_CN.po: translate 2 new messages
      l10n: Update git.pot (825 new, 24 removed messages)
      l10n: zh.CN.po: msgmerge git.pot (1142t195f630u)

Joachim Schmitz (8):
      compat: some mkdir() do not like a slash at the end
      Add a no-op setitimer() wrapper
      Document MKDIR_WO_TRAILING_SLASH in Makefile
      make poll available for other platforms lacking it
      fix some win32 specific dependencies in poll.c
      poll() exits too early with EFAULT if 1st arg is NULL
      make poll() work on platforms that can't recv() on a non-socket
      Port to HP NonStop

Johannes Sixt (3):
      t0060: split absolute path test in two to exercise some of it on Windows
      rebase -i: fix misleading error message after 'exec no-such' instruction
      rebase -i: suggest using --edit-todo to fix an unknown instruction

Junio C Hamano (42):
      daemon: --access-hook option
      Kick off cycle towards 1.8.0
      First half of the second batch for 1.8.0
      in_merge_bases(): support only one "other" commit
      receive-pack: use in_merge_bases() for fast-forward check
      http-push: use in_merge_bases() for fast-forward check
      Latter half of the second batch for 1.8.0
      merge_bases_many(): split out the logic to paint history
      in_merge_bases(): use paint_down_to_common()
      get_merge_bases_many(): walk from many tips in parallel
      merge-base: "--is-ancestor A B"
      reduce_heads(): reimplement on top of remove_redundant()
      The third batch for 1.8.0
      Update mailmap for a handful of folks
      The fourth batch for 1.8.0
      Cull items fixed in maintenance branches
      First half of the fifth batch for 1.8.0
      Second half of the fifth batch for 1.8.0
      Start merging the sixth batch for 1.8.0
      The sixth batch for 1.8.0
      Draft release notes to 1.8.0
      builtin/notes.c: mark file-scope private symbols as static
      commit.c: mark a file-scope private symbol as static
      diff.c: mark a private file-scope symbol as static
      graph.c: mark private file-scope symbols as static
      rerere.c: mark private file-scope symbols as static
      notes.c: mark a private file-scope symbol as static
      symlinks.c: mark private file-scope symbols as static
      sha1-array.c: mark a private file-scope symbol as static
      strbuf.c: mark a private file-scope symbol as static
      read-cache.c: mark a private file-scope symbol as static
      wt-status.c: mark a private file-scope symbol as static
      trace.c: mark a private file-scope symbol as static
      ident.c: mark private file-scope symbols as static
      sequencer.c: mark a private file-scope symbol as static
      The seventh batch for 1.8.0
      MALLOC_CHECK: various clean-ups
      Revert "archive-zip: support UTF-8 paths"
      Update draft release notes to 1.8.0
      Update draft release notes to 1.8.0
      Update draft release notes to 1.8.0
      Git 1.8.0-rc0

Ken Dreyer (1):
      cvsimport: strip all inappropriate tag strings

Linus Torvalds (1):
      commit/commit-tree: correct latin1 to utf-8

Martin von Zweigbergk (4):
      remove unnecessary parameter from get_patch_ids()
      cherry: don't set ignored rev_info options
      cherry: remove redundant check for merge commit
      rebase usage: subcommands can not be combined with -i

Matthieu Moy (1):
      push: start warning upcoming default change for push.default

Michael G. Schwern (20):
      Git::SVN: use accessors internally for path
      Git::SVN: use accessor for URLs internally
      Git::SVN::Ra: use accessor for URLs
      use Git::SVN->path accessor globally
      use Git::SVN{,::RA}->url accessor globally
      git-svn: move canonicalization to Git::SVN::Utils
      git-svn: use SVN 1.7 to canonicalize when possible
      git-svn: factor out _collapse_dotdot function
      git-svn: add join_paths() to safely concatenate paths
      Git::SVN::Utils: remove irrelevant comment
      git-svn: path canonicalization uses SVN API
      Git::SVN{,::Ra}: canonicalize earlier
      t9118: workaround inconsistency between SVN versions
      t9107: fix typo
      git-svn: attempt to mimic SVN 1.7 URL canonicalization
      git-svn: replace URL escapes with canonicalization
      git-svn: canonicalize earlier
      git-svn: introduce add_path_to_url function
      git-svn: canonicalize newly-minted URLs
      git-svn: remove ad-hoc canonicalizations

Michael Haggerty (29):
      t0060: move tests of real_path() from t0000 to here
      t0060: verify that absolute_path() fails if passed the empty string
      absolute_path(): reject the empty string
      t0060: verify that real_path() fails if passed the empty string
      real_path(): reject the empty string
      t0060: verify that real_path() works correctly with absolute paths
      real_path(): properly handle nonexistent top-level paths
      t0060: verify that real_path() removes extra slashes
      string_list: add function string_list_append_nodup()
      string_list: add two new functions for splitting strings
      string_list: add a new function, filter_string_list()
      string_list: add a new function, string_list_remove_duplicates()
      string_list: add a function string_list_longest_prefix()
      api-string-list.txt: initialize the string_list the easy way
      t5500: add tests of error output for missing refs
      t5500: add tests of fetch-pack --all --depth=N $URL $REF
      Rename static function fetch_pack() to http_fetch_pack()
      fetch_pack(): reindent function decl and defn
      Change fetch_pack() and friends to take string_list arguments
      filter_refs(): do not check the same sought_pos twice
      fetch_pack(): update sought->nr to reflect number of unique entries
      filter_refs(): delete matched refs from sought list
      filter_refs(): build refs list as we go
      filter_refs(): simplify logic
      cmd_fetch_pack(): return early if finish_connect() fails
      fetch-pack: report missing refs even if no existing refs were received
      cmd_fetch_pack(): simplify computation of return value
      fetch-pack: eliminate spurious error messages
      string_list API: document what "sorted" means

Michael J Gruber (1):
      completion: complete branch name for "branch --set-upstream-to="

Miklos Vajna (1):
      cherry-pick: don't forget -s on failure

Nguyễn Thái Ngọc Duy (74):
      i18n: mark "style" in OPT_COLUMN() for translation
      i18n: archive: mark parseopt strings for translation
      i18n: bisect--helper: mark parseopt strings for translation
      i18n: add: mark parseopt strings for translation
      i18n: blame: mark parseopt strings for translation
      i18n: branch: mark parseopt strings for translation
      i18n: cat-file: mark parseopt strings for translation
      i18n: check-attr: mark parseopt strings for translation
      i18n: checkout-index: mark parseopt strings for translation
      i18n: checkout: mark parseopt strings for translation
      i18n: cherry: mark parseopt strings for translation
      i18n: clean: mark parseopt strings for translation
      i18n: clone: mark parseopt strings for translation
      i18n: column: mark parseopt strings for translation
      i18n: commit: mark parseopt strings for translation
      i18n: count-objects: mark parseopt strings for translation
      i18n: config: mark parseopt strings for translation
      i18n: describe: mark parseopt strings for translation
      i18n: fast-export: mark parseopt strings for translation
      i18n: fetch: mark parseopt strings for translation
      i18n: fmt-merge-msg: mark parseopt strings for translation
      i18n: for-each-ref: mark parseopt strings for translation
      i18n: format-patch: mark parseopt strings for translation
      i18n: fsck: mark parseopt strings for translation
      i18n: gc: mark parseopt strings for translation
      i18n: grep: mark parseopt strings for translation
      i18n: hash-object: mark parseopt strings for translation
      i18n: help: mark parseopt strings for translation
      i18n: init-db: mark parseopt strings for translation
      i18n: log: mark parseopt strings for translation
      i18n: ls-files: mark parseopt strings for translation
      i18n: ls-tree: mark parseopt strings for translation
      i18n: merge-base: mark parseopt strings for translation
      i18n: merge-file: mark parseopt strings for translation
      i18n: merge: mark parseopt strings for translation
      i18n: mktree: mark parseopt strings for translation
      i18n: mv: mark parseopt strings for translation
      i18n: name-rev: mark parseopt strings for translation
      i18n: notes: mark parseopt strings for translation
      i18n: pack-objects: mark parseopt strings for translation
      i18n: pack-refs: mark parseopt strings for translation
      i18n: prune-packed: mark parseopt strings for translation
      i18n: prune: mark parseopt strings for translation
      i18n: push: mark parseopt strings for translation
      i18n: read-tree: mark parseopt strings for translation
      i18n: remote: mark parseopt strings for translation
      i18n: replace: mark parseopt strings for translation
      i18n: status: mark parseopt strings for translation
      i18n: rerere: mark parseopt strings for translation
      i18n: reset: mark parseopt strings for translation
      i18n: rev-parse: mark parseopt strings for translation
      i18n: revert, cherry-pick: mark parseopt strings for translation
      i18n: rm: mark parseopt strings for translation
      i18n: shortlog: mark parseopt strings for translation
      am: quote string for translation before passing to eval_gettextln
      i18n: show-branch: mark parseopt strings for translation
      i18n: show-ref: mark parseopt strings for translation
      i18n: symbolic-ref: mark parseopt strings for translation
      i18n: tag: mark parseopt strings for translation
      i18n: update-index: mark parseopt strings for translation
      i18n: update-ref: mark parseopt strings for translation
      i18n: update-server-info: mark parseopt strings for translation
      i18n: verify-pack: mark parseopt strings for translation
      i18n: verify-tag: mark parseopt strings for translation
      i18n: write-tree: mark parseopt strings for translation
      Reduce translations by using same terminologies
      Use imperative form in help usage to describe an action
      branch -v: align even when branch names are in UTF-8
      checkout: pass "struct checkout_opts *" as const pointer
      checkout: move more parameters to struct checkout_opts
      i18n: mark more index-pack strings for translation
      status: remove i18n legos
      checkout: reorder option handling
      fetch: align per-ref summary report in UTF-8 locales

Pete Wyckoff (17):
      git p4 test: move client_view() function to library
      git p4 test: add broken --use-client-spec --detect-branches tests
      git p4: set self.branchPrefixes in initialization
      git p4: do wildcard decoding in stripRepoPath
      git p4: make branch detection work with --use-client-spec
      git p4 test: remove bash-ism of combined export/assignment
      git p4: gracefully fail if some commits could not be applied
      git p4: remove submit failure options [a]pply and [w]rite
      git p4: move conflict prompt into run, add [q]uit input
      git p4: standardize submit cancel due to unchanged template
      git p4: test clean-up after failed submit, fix added files
      git p4: rearrange submit template construction
      git p4: revert deleted files after submit cancel
      git p4: accept -v for --verbose
      git p4: add submit --dry-run option
      git p4: add submit --prepare-p4-only option
      git-p4: add submit --conflict option and config varaiable

Peter Krefting (3):
      l10n: Update Swedish translation (1166t0f0u)
      Update Swedish translation (1967t0f0u)
      l10n: Fixes to Swedish translation

Philipp A. Hartmann (1):
      contrib: add credential helper for GnomeKeyring

Ralf Thielow (1):
      l10n: de.po: translate 2 new messages

Ramsay Jones (12):
      t3300-*.sh: Fix a TAP parse error
      t3902-*.sh: Skip all tests rather than each test
      t4016-*.sh: Skip all tests rather than each test
      test-lib.sh: Fix some shell coding style violations
      test-lib.sh: Add check for invalid use of 'skip_all' facility
      test-lib.sh: Suppress the "passed all ..." message if no tests run
      path.c: Remove the 'git_' prefix from a file scope function
      path.c: Don't discard the return value of vsnpath()
      path.c: Use vsnpath() in the implementation of git_path()
      Call git_pathdup() rather than xstrdup(git_path("..."))
      Call mkpathdup() rather than xstrdup(mkpath(...))
      test-string-list.c: Fix some sparse warnings

René Scharfe (4):
      archive-zip: support UTF-8 paths
      archive-zip: support UTF-8 paths
      archive-zip: write extended timestamp
      MALLOC_CHECK: enable it, unless disabled explicitly

Ross Lagerwall (1):
      difftool: silence warning

Sebastian Schuberth (1):
      Add Code Compare v2.80.4 as a merge / diff tool for Windows

Stefano Lattarini (2):
      build: improve GIT_CONF_SUBST signature
      build: don't duplicate substitution of make variables

Thomas Rast (2):
      gettext: do not translate empty string
      in_merge_bases(): omit unnecessary redundant common ancestor reduction

Trần Ngọc Quân (2):
      l10n: vi.po & TEAMS: review Vietnamese translation
      l10n: vi.po: update to v1.7.12-146-g16d26


Version v1.7.12.4; changes since v1.7.12.3:
-------------------------------------------

Ben Walton (1):
      tests: "cp -a" is a GNUism

Dave Borowitz (1):
      Documentation/Makefile: Allow custom XMLTO binary

Dylan Alex Simon (1):
      gitweb.cgi: fix "comitter_tz" typo in feed

Jeff King (1):
      http: fix segfault in handle_curl_result

Junio C Hamano (6):
      merge: teach -Xours/-Xtheirs to binary ll-merge driver
      attr: "binary" attribute should choose built-in "binary" merge driver
      ll-merge: warn about inability to merge binary files only when we can't
      t1450: the order the objects are checked is undefined
      gitcli: parse-options lets you omit tail of long options
      Git 1.7.12.4

Nguyễn Thái Ngọc Duy (2):
      gitignore.txt: suggestions how to get literal # or ! at the beginning
      attr: a note about the order of .gitattributes lookup

Philip Oakley (5):
      Doc: shallow clone deepens _to_ new depth
      Doc: separate gitignore pattern sources
      Doc add: link gitignore
      Doc clean: add See Also link
      Doc branch: show -vv option and alternative

Ramkumar Ramachandra (3):
      t/test-lib: make sure Git has already been built
      test-lib: use $SHELL_PATH, not $SHELL
      Git url doc: mark ftp/ftps as read-only and deprecate them

Richard Fearn (1):
      Fix spelling error in post-receive-email hook

Simon Ruderich (1):
      l10n: de.po: fix a few minor typos


Version v1.7.12.3; changes since v1.7.12.2:
-------------------------------------------

Jeff King (3):
      receive-pack: redirect unpack-objects stdout to /dev/null
      receive-pack: send pack-processing stderr over sideband
      receive-pack: drop "n/a" on unpacker errors

Junio C Hamano (3):
      git blame: document that it always follows origin across whole-file renames
      Start preparing for 1.7.12.3
      Git 1.7.12.3

Linus Torvalds (1):
      mailinfo: don't require "text" mime type for attachments

Orgad Shaneh (1):
      commit: pay attention to submodule.$name.ignore in .gitmodules

Peter Krefting (1):
      l10n: Fix to Swedish translation

Ralf Thielow (1):
      clone --single: limit the fetch refspec to fetched branch

Ramkumar Ramachandra (1):
      submodule: if $command was not matched, don't parse other args

Shawn O. Pearce (2):
      Revert "retry request without query when info/refs?query fails"
      Enable info/refs gzip decompression in HTTP client


Version v1.7.12.2; changes since v1.7.12.1:
-------------------------------------------

Dan Johnson (1):
      fetch --all: pass --tags/--no-tags through to each remote

David Gould (1):
      run-command.c: fix broken list iteration in clear_child_for_cleanup

Felipe Contreras (1):
      completion: fix shell expansion of items

Jeff King (4):
      argv-array: add pop function
      argv-array: fix bogus cast when freeing array
      fetch: use argv_array instead of hand-building arrays
      Revert "completion: fix shell expansion of items"

Jens Lehmann (1):
      submodule: use argv_array instead of hand-building arrays

Jeremy White (1):
      Documentation: describe subject more precisely

Jonathan "Duke" Leto (1):
      Improve the description of GIT_PS1_SHOWUPSTREAM

Junio C Hamano (11):
      mailinfo: strip "RE: " prefix
      blame $path: avoid getting fooled by case insensitive filesystems
      blame: allow "blame file" in the middle of a conflicted merge
      grep: teach --debug option to dump the parse tree
      log --grep/--author: honor --all-match honored for multiple --grep patterns
      log: document use of multiple commit limiting options
      grep.c: mark private file-scope symbols as static
      mailinfo: do not concatenate charset= attribute values from mime headers
      grep.c: make two symbols really file-scope static this time
      Start preparation for 1.7.12.2
      Git 1.7.12.2

Michael J Gruber (6):
      grep: show --debug output only once
      t7810-grep: bring log --grep tests in common form
      t7810-grep: test multiple --grep with and without --all-match
      t7810-grep: test multiple --author with --all-match
      t7810-grep: test interaction of multiple --grep and --author options
      t7810-grep: test --all-match with multiple --grep and --author options

Nguyễn Thái Ngọc Duy (3):
      remote: prefer subcommand name 'remove' to 'rm'
      doc: move rev-list option -<n> from git-log.txt to rev-list-options.txt
      Revert diffstat back to English

Ralf Thielow (1):
      l10n: de.po: correct translation of a 'rebase' message

Stefan Naewe (1):
      ls-remote: document the '--get-url' option

Stephen Boyd (1):
      Documentation: Document signature showing options

Thynson (2):
      l10n: Unify the translation for '(un)expected'
      l10n: Improve many translation for zh_CN


Version v1.7.12.1; changes since v1.7.12:
-----------------------------------------

Adam Butcher (1):
      Fix '\ No newline...' annotation in rewrite diffs

Adam Spiers (1):
      Add missing -z to git check-attr usage text for consistency with man page

Andreas Schwab (1):
      Documentation/git-filter-branch: Move note about effect of removing commits

Brandon Casey (2):
      t/t5400: demonstrate breakage caused by informational message from prune
      prune.c: only print informational message in show_only or verbose mode

David Aguilar (2):
      gitk: Teach "Reread references" to reload tags
      gitk: Rename 'tagcontents' to 'cached_tagcontent'

Eric S. Raymond (4):
      fast-import: document the --done option
      contrib/ciabot: Get ciabot configuration from git variables
      Improved documentation for the ciabot scripts.
      Make the ciabot scripts completely self-configuring in the normal case.

Felipe Contreras (1):
      gitk: Avoid Meta1-F5

Heiko Voigt (2):
      Let submodule command exit with error status if path does not exist
      Documentation/CodingGuidelines: spell out more shell guidelines

Jay Soffian (1):
      gitweb: URL-decode $my_url/$my_uri when stripping PATH_INFO

Jeff King (29):
      diff: do not use null sha1 as a sentinel value
      do not write null sha1s to on-disk index
      fsck: detect null sha1 in tree entries
      include agent identifier in capability string
      docs: monospace listings in docbook output
      check-docs: mention gitweb specially
      check-docs: update non-command documentation list
      command-list: add git-sh-i18n
      command-list: mention git-credential-* helpers
      check-docs: factor out command-list
      check-docs: list git-gui as a command
      check-docs: drop git-help special-case
      check-docs: get documented command list from Makefile
      send-pack: fix capability-sending logic
      do not send client agent unless server does first
      parse_feature_request: make it easier to see feature values
      fetch-pack: mention server version with verbose output
      config: warn on inaccessible files
      gitignore: report access errors of exclude files
      attr: warn on inaccessible attribute files
      t5550: put auth-required repo in auth/dumb
      t5550: factor out http auth setup
      t/lib-httpd: only route auth/dumb to dumb repos
      t/lib-httpd: recognize */smart/* repos as smart-http
      t: test basic smart-http authentication
      t: test http access to "half-auth" repositories
      http: factor out http error code handling
      http: prompt for credentials on failed POST
      log: fix --quiet synonym for -s

Joachim Schmitz (2):
      http.c: don't use curl_easy_strerror prior to curl-7.12.0
      sha1_file.c: introduce get_max_fd_limit() helper

Junio C Hamano (34):
      test: rename $satisfied to $satisfied_prereq
      test: allow prerequisite to be evaluated lazily
      config: "git config baa" should exit with status 1
      t7406: fix misleading "rev-parse --max-count=1 HEAD"
      sane_execvp(): ignore non-directory on $PATH
      Documentation: do not mention .git/refs/* directories
      receive-pack: do not leak output from auto-gc to standard output
      sh-setup: protect from exported IFS
      fetch-pack: do not ask for unadvertised capabilities
      send-email: validate & reconfirm interactive responses
      rev-list docs: clarify --topo-order description
      gitcli: describe abbreviation of long options
      Documentation: update the introductory section
      git-config doc: unconfuse an example
      precompose-utf8: do not call checks for non-ascii "utf8"
      warn_on_inaccessible(): a helper to warn on inaccessible paths
      specifying ranges: we did not mean to make ".." an empty set
      mergetool: style fixes
      Prepare for 1.7.11.6
      apply: compute patch->def_name correctly under -p0
      doc: "git checkout -b/-B/--orphan" always takes a branch name
      split_ident_line(): make best effort when parsing author/committer line
      Document file-glob for "git checkout -- '*.c'"
      gitcli: formatting fix
      gitcli: contrast wildcard given to shell and to git
      Almost 1.7.11.6
      Start preparing for 1.7.12.1
      Git 1.7.11.6
      Further merging down for 1.7.12.1
      Further merging in preparation for 1.7.12.1
      attr: failure to open a .gitattributes file is OK with ENOTDIR
      Git 1.7.11.7
      Draft release notes to 1.7.12.1
      Git 1.7.12.1

Kacper Kornet (2):
      t6300: test sort with multiple keys
      for-each-ref: Fix sort with multiple keys

Martin von Zweigbergk (4):
      add tests for 'git rebase --keep-empty'
      teach log --no-walk=unsorted, which avoids sorting
      demonstrate broken 'git cherry-pick three one two'
      cherry-pick/revert: respect order of revisions to pick

Matthieu Moy (1):
      setup: clarify error messages for file/revisions ambiguity

Michael Haggerty (1):
      git-config.txt: fix example

Michael J Gruber (6):
      test-lib: provide case insensitivity as a prerequisite
      t0050: use the CASE_INSENSITIVE_FS test prereq
      t0050: use the SYMLINKS test prereq
      test-lib: provide UTF8 behaviour as a prerequisite
      rebase -i: use full onto sha1 in reflog
      t3910: use the UTF8_NFD_TO_NFC test prereq

Michał Kiedrowicz (1):
      tests: Introduce test_seq

Miklos Vajna (1):
      man: git pull -r is a short for --rebase

Mischa POSLAWSKY (1):
      git-jump: ignore (custom) prefix in diff mode

Nguyễn Thái Ngọc Duy (1):
      read_index_from: remove bogus errno assignments

Paul Gortmaker (1):
      apply: delete unused deflate_origlen from patch struct

Phil Hord (2):
      test: git-stash conflict sets up rerere
      stash: invoke rerere in case of conflict

Philip Oakley (1):
      Doc: Improve shallow depth wording

Ramkumar Ramachandra (1):
      t/perf: add "trash directory" to .gitignore

Ramsay Jones (1):
      test-regex: Add a test to check for a bug in the regex routines

Robin Rosenberg (1):
      cleanup precompose_utf8

Stefan Zager (1):
      Make 'git submodule update --force' always check out submodules.

Stephen Boyd (1):
      send-email: initial_to and initial_reply_to are both optional

Thomas Rast (3):
      send-email: improve RFC2047 quote parsing
      diff_setup_done(): return void
      merge-recursive: eliminate flush_buffer() in favor of write_in_full()

Wesley J. Landaker (1):
      Documentation: indent-with-non-tab uses "equivalent tabs" not 8

Yacine Belkadi (1):
      completion: add --no-edit to git-commit


Version v1.7.12; changes since v1.7.12-rc3:
-------------------------------------------

Junio C Hamano (2):
      Documentation: update URL for formatted pages
      Git 1.7.12

Peter Krefting (1):
      l10n: Fixes to Swedish translation


Version v1.7.12-rc3; changes since v1.7.12-rc2:
-----------------------------------------------

Ben Walton (1):
      Enable HAVE_DEV_TTY for Solaris

Jeff King (1):
      terminal: seek when switching between reading and writing

Jiang Xin (2):
      l10n: Update one message in git.pot
      l10n: zh_CN.po: update one translation

Junio C Hamano (2):
      Git 1.7.11.5
      Git 1.7.12-rc3

Matthieu Moy (1):
      Documentation: list git-credential in plumbing commands

Peter Baumann (1):
      git svn: reset invalidates the memoized mergeinfo caches

Peter Krefting (1):
      l10n: Update Swedish translation (1168t0f0u)

Ralf Thielow (1):
      l10n: de.po: translate 77 new messages

Robert Luberda (1):
      git svn: handle errors and concurrent commits in dcommit

Trần Ngọc Quân (1):
      l10n: vi.po: update one message


Version v1.7.12-rc2; changes since v1.7.12-rc1:
-----------------------------------------------

Jiang Xin (11):
      i18n: New keywords for xgettext extraction from sh
      i18n: rebase: mark messages for translation
      i18n: Rewrite gettext messages start with dash
      rebase: remove obsolete and unused LONG_USAGE which breaks xgettext
      i18n: am: mark more strings for translation
      Remove dead code which contains bad gettext block
      i18n: merge-recursive: mark strings for translation
      l10n: Update git.pot (4 new, 3 removed messages)
      l10n: zh_CN.po: translate 4 new messages
      l10n: Update git.pot (76 new, 4 removed messages)
      l10n: zh_CN.po: translate 76 new messages

Johannes Sixt (1):
      Makefile: use overridable $(FIND) instead of hard-coded 'find'

Junio C Hamano (3):
      Prepare for 1.7.11.5
      Drop 1.7.11.x items from 1.7.12 release notes
      Git 1.7.12-rc2

Matthieu Moy (1):
      git-remote-mediawiki: replace TODO-list in comment by appropriate link

Nguyễn Thái Ngọc Duy (1):
      i18n: leave \n out of translated diffstat

Ralf Thielow (3):
      l10n: de.po: translate 4 new messages
      git-rebase.sh: fix typo in an error message
      merge-recursive: separate message for common ancestors

Trần Ngọc Quân (2):
      l10n: vi.po: translate 4 new messages
      l10n: vi.po update to follow POT in 3b613

Štěpán Němec (1):
      doc: A few minor copy edits.


Version v1.7.12-rc1; changes since v1.7.12-rc0:
-----------------------------------------------

Chris Webb (1):
      rebase -i: handle fixup of root commit correctly

Daniel Graña (2):
      git-submodule: work with GIT_DIR/GIT_WORK_TREE
      t7409: make sure submodule is initialized and updated in more detail

Florian Achleitner (1):
      Add explanatory comment for transport-helpers refs mapping.

Heiko Voigt (1):
      link_alt_odb_entry: fix read over array bounds reported by valgrind

Jeff King (16):
      advice: pass varargs to strbuf_vaddf, not strbuf_addf
      commit: check committer identity more strictly
      commit: document the temporary commit message file
      test-lib.sh: unset XDG_CONFIG_HOME
      attr: make sure we have an xdg path before using it
      t1306: check that XDG_CONFIG_HOME works
      t/lib-httpd: handle running under --valgrind
      help.c::uniq: plug a leak
      checkout: don't confuse ref and object flags
      t7502: clean up fake_editor tests
      t7502: properly quote GIT_EDITOR
      t7502: narrow checks for author/committer name in template
      t7502: drop confusing test_might_fail call
      t7502: handle systems where auto-identity is broken
      t7502: test early quit from commit with bad ident
      t: add missing executable bit to t7409

Junio C Hamano (9):
      test-lib: reorder and include GIT-BUILD-OPTIONS a lot earlier
      mergetool: support --tool-help option like difftool does
      Update draft release notes to 1.7.12
      Enumerate revision range specifiers in the documentation
      help.c::exclude_cmds(): plug a leak
      perl: detect new files in MakeMaker builds
      Update draft release notes to 1.7.12
      Git 1.7.11.4
      Git 1.7.12-rc1

Matthieu Moy (1):
      ignore: make sure we have an xdg path before using it

Max Horn (1):
      Make <refname> documentation more consistent.

Michael G. Schwern (14):
      Quiet warning if Makefile.PL is run with -w and no --localedir
      Don't lose Error.pm if $@ gets clobbered.
      The Makefile.PL will now find .pm files itself.
      Extract some utilities from git-svn to allow extracting Git::SVN.
      Prepare Git::SVN for extraction into its own file.
      Extract Git::SVN from git-svn into its own .pm file.
      Move initialization of Git::SVN variables into Git::SVN.
      Prepare Git::SVN::Log for extraction from git-svn.
      Extract Git::SVN::Log from git-svn.
      Prepare Git::SVN::Migration for extraction from git-svn.
      Extract Git::SVN::Migration from git-svn.
      Load all the modules in one place and before running code.
      Move Git::IndexInfo into its own file.
      Extract Git::SVN::GlobSpec from git-svn.

Ramsay Jones (2):
      t1100-*.sh: Fix an intermittent test failure
      t7810-*.sh: Remove redundant test


Version v1.7.12-rc0; changes since v1.7.11.7:
---------------------------------------------

Alexander Strasser (7):
      t4012: modernize style for quoting
      t4012: Unquote git command fragment in test title
      t4012: Actually quote the sed script
      t4012: Break up pipe into serial redirections
      t4012: Make --shortstat test more robust
      t4012: Re-indent test snippets
      t4012: Use test_must_fail instead of if-else

Andreas Schwab (1):
      Fix formatting in git-config(1)

Chris Webb (4):
      rebase -i: support --root without --onto
      Add tests for rebase -i --root without --onto
      Add config variable to set HTML path for git-help --web
      Allow help.htmlpath to be a URL prefix

David Barr (7):
      vcs-svn: drop no-op reset methods
      vcs-svn: avoid self-assignment in dummy initialization of pre_off
      vcs-svn: simplify cleanup in apply_one_window
      vcs-svn: use constcmp instead of prefixcmp
      vcs-svn: use strstr instead of memmem
      vcs-svn: suppress signed/unsigned comparison warnings
      vcs-svn: suppress a signed/unsigned comparison warning

Felipe Contreras (2):
      completion: remove executable mode
      completion: split __git_ps1 into a separate script

Gary Gibbons (2):
      git p4: refactor diffOpts calculation
      git p4: add support for 'p4 move' in P4Submit

Guillaume Sasdy (4):
      git-remote-mediawiki: scripts to install, delete and clear a MediaWiki
      git-remote-mediawiki: test environment of git-remote-mediawiki
      git-remote-mediawiki (t9360): test git-remote-mediawiki clone
      git-remote-mediawiki (t9361): test git-remote-mediawiki pull and push

Heiko Voigt (1):
      remove the impression of unexpectedness when access is denied

Huynh Khoi Nguyen Nguyen (4):
      config: read (but not write) from $XDG_CONFIG_HOME/git/config file
      Let core.excludesfile default to $XDG_CONFIG_HOME/git/ignore
      Let core.attributesfile default to $XDG_CONFIG_HOME/git/attributes
      config: write to $XDG_CONFIG_HOME/git/config file when appropriate

Javier Roucher Iglesias (1):
      add 'git credential' plumbing command

Jeff King (26):
      docs: drop asciidoc7compatible flag
      docs: drop antique comment from Makefile
      docs/clone: mention that --local may be ignored
      clone: allow --no-local to turn off local optimizations
      move git_version_string into version.c
      version: add git_user_agent function
      http: get default user-agent from git_user_agent
      t1304: improve setfacl prerequisite setup
      Makefile: sort LIB_H list
      Makefile: fold MISC_H into LIB_H
      Makefile: do not have git.o depend on common-cmds.h
      Makefile: apply dependencies consistently to sparse/asm targets
      Makefile: do not replace @@GIT_USER_AGENT@@ in scripts
      Makefile: split GIT_USER_AGENT from GIT-CFLAGS
      Makefile: split prefix flags from GIT-CFLAGS
      Makefile: do not replace @@GIT_VERSION@@ in shell scripts
      Makefile: update scripts when build-time parameters change
      Makefile: build instaweb similar to other scripts
      Makefile: move GIT-VERSION-FILE dependencies closer to use
      index-pack: loop while inflating objects in unpack_data
      revision: avoid work after --max-count is reached
      status: color in-progress message like other header messages
      docs/credential: minor clarity fixups
      mw-to-git: check blank credential attributes via length
      credential: convert "url" attribute into its parsed subparts
      mw-to-git: use git-credential's URL parser

Jiang Xin (2):
      l10n: Update git.pot (29 new messages)
      l10n: zh_CN.po: translate 29 new messages

Johannes Sixt (3):
      t7400: avoid path mangling issues
      perl/Makefile: Fix a missing double-quote
      t4012: use 'printf' instead of 'dd' to generate a binary file

Jon Seymour (4):
      submodule: additional regression tests for relative URLs
      submodule: document failure to handle relative superproject origin URLs
      submodule: fix sync handling of some relative superproject origin URLs
      submodule: fix handling of superproject origin URLs like foo, ./foo and ./foo/bar

Jonathan Nieder (8):
      vcs-svn: allow import of > 4GiB files
      vcs-svn: suppress -Wtype-limits warning
      perl/Makefile: move "mkdir -p" to module installation loop for maintainability
      vcs-svn: suppress a signed/unsigned comparison warning
      vcs-svn: allow 64-bit Prop-Content-Length
      Makefile: fold XDIFF_H and VCSSVN_H into LIB_H
      Makefile: be silent when only GIT_USER_AGENT changes
      Makefile: document ground rules for target-specific dependencies

Junio C Hamano (58):
      completion: warn people about duplicated function
      sha1_name.c: indentation fix
      Kick off post 1.7.11 cycle
      The first batch for 1.7.12
      Second batch for 1.7.12
      Third batch for 1.7.12
      sha1_name.c: hide get_sha1_with_context_1() ugliness
      sha1_name.c: get rid of get_sha1_with_mode_1()
      sha1_name.c: get rid of get_sha1_with_mode()
      sha1_name.c: clarify what "fake" is for in find_short_object_filename()
      sha1_name.c: rename "now" to "current"
      sha1_name.c: refactor find_short_packed_object()
      sha1_name.c: correct misnamed "canonical" and "res"
      sha1_name.c: restructure disambiguation of short names
      get_sha1(): fix error status regression
      sha1_name.c: allow get_short_sha1() to take other flags
      sha1_name.c: teach get_short_sha1() a commit-only option
      Fourth batch for 1.7.12
      Fifth batch for 1.7.12
      apply: fix an incomplete comment in check_patch()
      apply: a bit more comments on PATH_TO_BE_DELETED
      apply: clear_image() clears things a bit more
      apply: refactor read_file_or_gitlink()
      apply: factor out checkout_target() helper function
      apply: split load_preimage() helper function out
      apply: refactor "previous patch" logic
      apply: further split load_preimage()
      apply: move check_to_create_blob() closer to its sole caller
      apply: move "already exists" logic to check_to_create()
      apply: accept -3/--3way command line option
      apply: fall back on three-way merge
      apply: plug the three-way merge logic in
      apply: move verify_index_match() higher
      apply: --3way with add/add conflict
      apply: register conflicted stages to the index
      apply: allow rerere() to work on --3way results
      apply: document --3way option
      sha1_name.c: get_describe_name() by definition groks only commits
      sha1_name.c: get_sha1_1() takes lookup flags
      sha1_name.c: many short names can only be committish
      sha1_name.c: teach lookup context to get_sha1_with_context()
      sha1_name.c: introduce get_sha1_committish()
      revision.c: allow handle_revision_arg() to take other flags
      revision.c: the "log" family, except for "show", takes committish
      sha1_name.c: add support for disambiguating other types
      apply: --build-fake-ancestor expects blobs
      commit-tree: the command wants a tree and commits
      reset: the command takes committish
      rev-parse: A and B in "rev-parse A..B" refer to committish
      rev-parse --disambiguate=<prefix>
      apply: tests for the --3way option
      Reduce draft release notes to 1.7.12
      t1512: ignore whitespaces in wc -l output
      t1512: match the "other" object names
      Sixth batch for 1.7.12
      Update draft release notes for 7th batch
      Update draft release notes to 1.7.12
      Git 1.7.12-rc0

Lucien Kong (5):
      rebase -i: teach "--exec <cmd>"
      wt-status.*: better advices for git status added
      t7512-status-help.sh: better advices for git status
      status: don't suggest "git rm" or "git add" if not appropriate
      status: better advices when splitting a commit (during rebase -i)

Marcin Owsiany (1):
      git-svn: don't create master if another head exists

Martin von Zweigbergk (4):
      rebase: don't source git-sh-setup twice
      rebase --root: print usage on too many args
      am --rebasing: get patch body from commit, not from mailbox
      am: don't call mailinfo if $rebasing

Matthieu Moy (24):
      git credential fill: output the whole 'struct credential'
      git-remote-mediawiki: add credential support
      git-remote-mediawiki: don't compute the diff when getting commit message
      git-remote-mediawiki: don't "use encoding 'utf8';"
      git-remote-mediawiki: split get_mw_pages into smaller functions
      git-remote-mediawiki: improve support for non-English Wikis
      git-remote-mediawiki: support for uploading file in test environment
      git-remote-mediawiki: change return type of get_mw_pages
      git-remote-mediawiki: refactor loop over revision ids
      git-remote-mediawiki: extract revision-importing loop to a function
      git-remote-mediawiki: more efficient 'pull' in the best case
      git-remote-mediawiki: be more defensive when requests fail
      git-remote-mediawiki: update comments to reflect credential support
      config: fix several access(NULL) calls
      git-remote-mediawiki: don't split namespaces with spaces
      git-remote-mediawiki: actually send empty comment when they're empty
      git-remote-mediawiki: make mediafiles export optional
      git-remote-mediawiki: get rid of O(N^2) loop
      git-remote-mediawiki: use --force when adding notes
      git-remote-mediawiki: show progress information when listing pages
      git-remote-mediawiki: show progress information when getting last remote revision
      git-remote-mediawiki: properly deal with invalid remote revisions
      git-remote-mediawiki: fix incorrect test usage in test
      git-remote-mediawiki: allow page names with a ':'

Michael J Gruber (1):
      t3404: make test 57 work with dash and others

NGUYEN Kim Thuat (2):
      git-remote-mediawiki: send "File:" attachments to a remote wiki
      git-remote-mediawiki (t9363): test 'File:' import and export

Namhyung Kim (3):
      gitweb: Cleanup git_print_log()
      gitweb: Handle other types of tag in git_print_log
      gitweb: Add support to Link: tag

Nguyễn Thái Ngọc Duy (12):
      index-pack: hash non-delta objects while reading from stream
      index-pack: use streaming interface on large blobs (most of the time)
      index-pack: factor out unpack core from get_data_from_pack
      index-pack: use streaming interface for collision test on large blobs
      pack-objects: use streaming interface for reading large loose blobs
      Unindent excluded_from_list()
      dir.c: get rid of the wildcard symbol set in no_wildcard()
      exclude: do strcmp as much as possible before fnmatch
      Remove i18n legos in notifying new branch tracking setup
      reflog: remove i18n legos in pruning message
      notes-merge: remove i18n legos in merge result message
      rerere: remove i18n legos in result message

Pat Thoyts (1):
      Restore use of 'help.format' configuration property in 'git help'

Pavel Volek (1):
      git-remote-mediawiki: import "File:" attachments

Pete Wyckoff (13):
      git p4 test: wait longer for p4d to start and test its pid
      git p4 test: use real_path to resolve p4 client symlinks
      git p4 test: simplify quoting involving TRASH_DIRECTORY
      git p4 test: never create default test repo
      git p4 test: rename some "git-p4 command" strings
      git p4 test: check for error message in failed test
      git p4 test: copy source indeterminate
      git p4 test: cleanup_git should make a new $git
      git p4 test: split up big t9800 test
      git p4 test: fix badp4dir test
      git p4: remove unused P4Submit interactive setting
      git p4 test: refactor marshal_dump
      git p4: notice Jobs lines in git commit messages

Peter Krefting (1):
      Update Swedish translation (1095t0f0u)

Ralf Thielow (1):
      l10n: de.po: translate 29 new messages

Ramsay Jones (1):
      vcs-svn: rename check_overflow and its arguments for clarity

SZEDER Gábor (3):
      tests: move code to run tests under bash into a helper library
      tests: add tests for the bash prompt functions in the completion script
      completion: respect $GIT_DIR

Simon Cathebras (1):
      git-remote-mediawiki (t9362): test git-remote-mediawiki with UTF8 characters

Stefano Lattarini (7):
      autoconf: GIT_CONF_APPEND_LINE: change signature
      autoconf: GIT_CONF_APPEND_LINE -> GIT_CONF_SUBST
      autoconf: remove some redundant shell indirections
      autoconf: remove few redundant semicolons
      autoconf: use AC_CONFIG_COMMANDS instead of ad-hoc 'config.mak.append'
      build: "make clean" should not remove configure-generated files
      build: reconfigure automatically if configure.ac changes

Thomas Gummerer (2):
      Replace strlen() with ce_namelen()
      Strip namelen out of ce_flags into a ce_namelen field

Tim Henigan (1):
      difftool: only copy back files modified during directory diff

Torsten Bögershausen (1):
      git on Mac OS and precomposed unicode

Trần Ngọc Quân (1):
      l10n: Update translation for Vietnamese

Vincent van Ravesteijn (1):
      help: use HTML as the default help format on Windows

Štěpán Němec (1):
      doc: A few minor copy edits.


Version v1.7.11.7; changes since v1.7.11.6:
-------------------------------------------

David Aguilar (2):
      gitk: Teach "Reread references" to reload tags
      gitk: Rename 'tagcontents' to 'cached_tagcontent'

Felipe Contreras (1):
      gitk: Avoid Meta1-F5

Jeff King (9):
      t5550: put auth-required repo in auth/dumb
      t5550: factor out http auth setup
      t/lib-httpd: only route auth/dumb to dumb repos
      t/lib-httpd: recognize */smart/* repos as smart-http
      t: test basic smart-http authentication
      t: test http access to "half-auth" repositories
      http: factor out http error code handling
      http: prompt for credentials on failed POST
      log: fix --quiet synonym for -s

Junio C Hamano (8):
      specifying ranges: we did not mean to make ".." an empty set
      apply: compute patch->def_name correctly under -p0
      doc: "git checkout -b/-B/--orphan" always takes a branch name
      split_ident_line(): make best effort when parsing author/committer line
      Document file-glob for "git checkout -- '*.c'"
      gitcli: formatting fix
      gitcli: contrast wildcard given to shell and to git
      Git 1.7.11.7

Kacper Kornet (2):
      t6300: test sort with multiple keys
      for-each-ref: Fix sort with multiple keys

Ramsay Jones (1):
      test-regex: Add a test to check for a bug in the regex routines


Version v1.7.11.6; changes since v1.7.11.5:
-------------------------------------------

Adam Butcher (1):
      Fix '\ No newline...' annotation in rewrite diffs

Ben Walton (1):
      Enable HAVE_DEV_TTY for Solaris

Brandon Casey (1):
      t/t5400: demonstrate breakage caused by informational message from prune

Eric S. Raymond (3):
      contrib/ciabot: Get ciabot configuration from git variables
      Improved documentation for the ciabot scripts.
      Make the ciabot scripts completely self-configuring in the normal case.

Heiko Voigt (2):
      Let submodule command exit with error status if path does not exist
      Documentation/CodingGuidelines: spell out more shell guidelines

Jay Soffian (1):
      gitweb: URL-decode $my_url/$my_uri when stripping PATH_INFO

Jeff King (6):
      commit: check committer identity more strictly
      diff: do not use null sha1 as a sentinel value
      do not write null sha1s to on-disk index
      fsck: detect null sha1 in tree entries
      terminal: seek when switching between reading and writing
      docs: monospace listings in docbook output

Junio C Hamano (13):
      config: "git config baa" should exit with status 1
      t7406: fix misleading "rev-parse --max-count=1 HEAD"
      sane_execvp(): ignore non-directory on $PATH
      Documentation: do not mention .git/refs/* directories
      receive-pack: do not leak output from auto-gc to standard output
      sh-setup: protect from exported IFS
      rev-list docs: clarify --topo-order description
      gitcli: describe abbreviation of long options
      git-config doc: unconfuse an example
      mergetool: style fixes
      Prepare for 1.7.11.6
      Almost 1.7.11.6
      Git 1.7.11.6

Luka Perkov (1):
      builtin.h: remove unused cmd_<foo> declarations

Martin von Zweigbergk (1):
      add tests for 'git rebase --keep-empty'

Matthieu Moy (1):
      setup: clarify error messages for file/revisions ambiguity

Michael Haggerty (1):
      git-config.txt: fix example

Michael J Gruber (1):
      rebase -i: use full onto sha1 in reflog

Michał Kiedrowicz (1):
      tests: Introduce test_seq

Miklos Vajna (1):
      man: git pull -r is a short for --rebase

Nguyễn Thái Ngọc Duy (1):
      read_index_from: remove bogus errno assignments

Paul Gortmaker (1):
      apply: delete unused deflate_origlen from patch struct

Phil Hord (2):
      test: git-stash conflict sets up rerere
      stash: invoke rerere in case of conflict

Stefan Zager (1):
      Make 'git submodule update --force' always check out submodules.

Thomas Rast (3):
      send-email: improve RFC2047 quote parsing
      diff_setup_done(): return void
      merge-recursive: eliminate flush_buffer() in favor of write_in_full()


Version v1.7.11.5; changes since v1.7.11.4:
-------------------------------------------

Heiko Voigt (1):
      link_alt_odb_entry: fix read over array bounds reported by valgrind

Jeff King (1):
      checkout: don't confuse ref and object flags

Jonathan Nieder (4):
      block-sha1: avoid pointer conversion that violates alignment constraints
      block-sha1: put expanded macro parameters in parentheses
      Makefile: fix location of listing produced by "make subdir/foo.s"
      Makefile: BLK_SHA1 does not require fast htonl() and unaligned loads

Junio C Hamano (4):
      mergetool: support --tool-help option like difftool does
      Enumerate revision range specifiers in the documentation
      Prepare for 1.7.11.5
      Git 1.7.11.5

Lawrence Mitchell (2):
      git-blame.el: Use with-current-buffer where appropriate
      git-blame.el: Do not use bare 0 to mean (point-min)

Max Horn (1):
      Make <refname> documentation more consistent.

Michael Schubert (1):
      Documentation/git-daemon: add missing word

Ramkumar Ramachandra (1):
      commit: document a couple of options

Ramsay Jones (1):
      t7810-*.sh: Remove redundant test

René Scharfe (1):
      git: Wrong parsing of ssh urls with IPv6 literals ignores port

Rüdiger Sonderfeld (2):
      git-blame.el: use mapc instead of mapcar
      git-blame.el: Do not use goto-line in lisp code

Štěpán Němec (1):
      doc: A few minor copy edits.


Version v1.7.11.4; changes since v1.7.11.3:
-------------------------------------------

Jeff King (3):
      diff: test precedence of external diff drivers
      advice: pass varargs to strbuf_vaddf, not strbuf_addf
      commit: document the temporary commit message file

Jens Lehmann (1):
      submodules: don't stumble over symbolic links when cloning recursively

Junio C Hamano (7):
      filter-branch: do not forget the '@' prefix to force git-timestamp
      date.c: Fix off by one error in object-header date parsing
      t7003: add test to filter a branch with a commit at epoch
      commit-tree: resurrect command line parsing updates
      Revert "git-commit-tree(1): update synopsis"
      diff: correctly disable external_diff with --no-ext-diff
      Git 1.7.11.4

Paul Gortmaker (1):
      am: indicate where a failed patch is to be found


Version v1.7.11.3; changes since v1.7.11.2:
-------------------------------------------

Alex Riesen (1):
      Restore umasks influence on the permissions of work tree created by clone

Chris Webb (2):
      git-checkout: disallow --detach on unborn branch
      Allow edit of empty message with commit --amend

Jay Soffian (1):
      fast-export: quote paths with spaces

Jeff King (3):
      push: don't guess at qualifying remote refs on deletion
      add: create ADD_EDIT.patch with mode 0666
      commit: fix "--amend --only" with no pathspec

Junio C Hamano (10):
      show: fix "range implies walking"
      t/test-lib.sh: export PERL_PATH for use in scripts
      tests: enclose $PERL_PATH in double quotes
      t/README: add a bit more Don'ts
      diff-index.c: do not pretend paths are pathspecs
      diff-index.c: unify handling of command line paths
      diff-index.c: "git diff" has no need to read blob from the standard input
      rerere: make rr-cache fanout directory honor umask
      cache_name_compare(): do not truncate while comparing paths
      Git 1.7.11.3

Martin von Zweigbergk (1):
      add test case for rebase of empty commit

Thomas Rast (1):
      Demonstrate git-show is broken with ranges

Vincent van Ravesteijn (1):
      t: Replace 'perl' by $PERL_PATH


Version v1.7.11.2; changes since v1.7.11.1:
-------------------------------------------

Carlos Martín Nieto (2):
      Documentation: --no-walk is no-op if range is specified
      git-cherry-pick.txt: clarify the use of revision range notation

Heiko Voigt (1):
      update-index: allow overwriting existing submodule index entries

Jeff King (3):
      fix pager.diff with diff --no-index
      do not run pager with diff --no-index --quiet
      diff: handle relative paths in no-index

Junio C Hamano (15):
      request-pull: really favor a matching tag
      ls-files -i: pay attention to exclusion of leading paths
      ls-files -i: micro-optimize path_excluded()
      tweak "bundle verify" of a complete history
      path_excluded(): update API to less cache-entry centric
      builtin/add.c: use path_excluded()
      unpack-trees.c: use path_excluded() in check_ok_to_remove()
      dir.c: make excluded() file scope static
      revision: "simplify" options imply topo-order sort
      revision: note the lack of free() in simplify_merges()
      archive: ustar header checksum is computed unsigned
      revision: ignore side parents while running simplify-merges
      index-pack: Disable threading on cygwin
      blame: compute abbreviation width that ensures uniqueness
      Git 1.7.11.2

Leila Muhtasib (1):
      Documentation: Fix misspellings

Matthieu Moy (2):
      sha1_name: do not trigger detailed diagnosis for file arguments
      verify_filename(): ask the caller to chose the kind of diagnosis

Michał Górny (1):
      git-submodule.sh: fix filename in comment.

Nguyễn Thái Ngọc Duy (1):
      clone: fix ref selection in --single-branch --branch=xxx

Peter Krefting (1):
      Update Swedish translation (1066t0f0u)

Thomas Badie (1):
      git-add--interactive.perl: Remove two unused variables

Tim Henigan (1):
      diff-no-index: exit(1) if 'diff --quiet <repo file> <external file>' finds changes


Version v1.7.11.1; changes since v1.7.11:
-----------------------------------------

Jeff King (1):
      docs: always define git-relative-html-prefix attribute

Junio C Hamano (2):
      git-commit-tree(1): update synopsis
      Git 1.7.11.1

Miklos Vajna (1):
      Documentation: spelling fixes


Version v1.7.11; changes since v1.7.11-rc3:
-------------------------------------------

Alexander Strasser (1):
      diff: Only count lines in show_shortstats

Jonathan Nieder (2):
      perl/Makefile.PL: warn about duplicate module list in perl/Makefile
      perl/Makefile: install Git::SVN::* when NO_PERL_MAKEMAKER=yes, too

Junio C Hamano (2):
      Git 1.7.10.5
      Git 1.7.11

Marco Paolone (1):
      l10n: it.po: translate 212 new messages

Ramsay Jones (1):
      gitweb: Skip 'modification times' tests when no date parser available

SZEDER Gábor (2):
      completion: put main git and gitk completion functions back into git namespace
      completion: remove credential helpers from porcelain commands

Vincent van Ravesteijn (1):
      Do not autosquash in case of an implied interactive rebase


Version v1.7.11-rc3; changes since v1.7.11-rc2:
-----------------------------------------------

Jeff King (1):
      docs: fix cross-directory linkgit references

Jiang Xin (2):
      l10n: Update git.pot (27 new, 1 removed messages)
      l10n: zh_CN.po: translate 27 new messages

Johannes Schindelin (1):
      fast-export: report SHA-1 instead of gibberish when marks exist already

Jonathan Nieder (3):
      git-svn: make Git::SVN::Editor a separate file
      git-svn: make Git::SVN::RA a separate file
      git-svn: use YAML format for mergeinfo cache when possible

Junio C Hamano (2):
      fmt-merge-msg: make attribution into comment lines
      Git 1.7.11-rc3

Matthieu Moy (1):
      api-credential.txt: document that helpers field is filled-in automatically

Ralf Thielow (1):
      l10n: de.po: translate 27 new messages

Trần Ngọc Quân (1):
      l10n: Update  po/vi.po to v1.7.11.rc2.2.gb694fbb


Version v1.7.11-rc2; changes since v1.7.11-rc1:
-----------------------------------------------

Colby Ranger (1):
      Add persistent-https to contrib

Jiang Xin (2):
      l10n: Update git.pot (5 new, 3 removed messages)
      l10n: zh_CN.po: translate 2 new, 3 fuzzy messages

Junio C Hamano (3):
      git-svn: platform auth providers are working only on 1.6.15 or newer
      doc: fix xref link from api docs to manual pages
      Git 1.7.11-rc2

Matthieu Moy (3):
      api-credentials.txt: show the big picture first
      api-credentials.txt: mention credential.helper explicitly
      api-credentials.txt: add "see also" section

Ralf Thielow (4):
      l10n: de.po: translate 265 new messages
      l10n: de.po: translate 41 new messages
      l10n: de.po: translate 2 new, 3 fuzzy messages
      l10n: de.po: add additional newline

Ramkumar Ramachandra (1):
      t3510 (cherry-pick-sequence): add missing '&&'

Trần Ngọc Quân (1):
      l10n: Update translation for Vietnamese


Version v1.7.11-rc1; changes since v1.7.11-rc0:
-----------------------------------------------

Erik Faye-Lund (2):
      rebase: report invalid commit correctly
      Makefile: add missing GIT-VERSION-FILE dependency

Jeff King (30):
      ident: split setup_ident into separate functions
      http-push: do not access git_default_email directly
      fmt-merge-msg: don't use static buffer in record_person
      move identity config parsing to ident.c
      move git_default_* variables to ident.c
      ident: trim trailing newline from /etc/mailname
      format-patch: use default email for generating message ids
      fmt_ident: drop IDENT_WARN_ON_NO_NAME code
      ident: don't write fallback username into git_default_name
      drop length limitations on gecos-derived names and emails
      ident: report passwd errors with a more friendly message
      ident: use full dns names to generate email addresses
      ident: use a dynamic strbuf in fmt_ident
      ident: trim whitespace from default name/email
      format-patch: refactor get_patch_filename
      fetch-pack: sort incoming heads
      fetch-pack: avoid quadratic behavior in remove_duplicates
      add sorting infrastructure for list refs
      fetch-pack: sort the list of incoming refs
      fetch-pack: avoid quadratic loop in filter_refs
      fetch-pack: sort incoming heads list earlier
      ident: reword empty ident error message
      ident: refactor NO_DATE flag in fmt_ident
      ident: let callers omit name with fmt_indent
      format-patch: use GIT_COMMITTER_EMAIL in message ids
      ident: rename IDENT_ERROR_ON_NO_NAME to IDENT_STRICT
      ident: reject bogus email addresses with IDENT_STRICT
      format-patch: do not use bogus email addresses in message ids
      t5701: modernize style
      INSTALL: update asciidoc recommendation

Jens Lehmann (1):
      submodules: print "registered for path" message only once

Jiang Xin (5):
      l10n: Update git.pot (41 new messages)
      l10n: zh.CN.po: update by msgmerge git.pot
      l10n: zh_CN.po: translate 323 new messages
      l10n: Set nplurals of zh_CN.po from 1 to 2
      i18n: apply: split to fix a partial i18n message

Jonathan Nieder (3):
      git-svn: move Git::SVN::Prompt into its own file
      git-svn: rename SVN::Git::* packages to Git::SVN::*
      git-svn: make Git::SVN::Fetcher a separate file

Junio C Hamano (6):
      refs: do not create ref_entry when searching
      cherry-pick: regression fix for empty commits
      Start preparing for 1.7.10.4
      Update draft release notes to 1.7.11
      Git 1.7.10.4
      Git 1.7.11-rc1

Marco Paolone (1):
      l10n: New it.po file with 504 translations

Matthieu Moy (1):
      Reduce cost of deletion in levenstein distance (4 -> 3)

Michael Haggerty (5):
      free_ref_entry(): do not trigger reading of loose refs
      cmd_fetch_pack(): declare dest to be const
      cmd_fetch_pack(): handle non-option arguments outside of the loop
      cmd_fetch_pack(): combine the loop termination conditions
      cmd_fetch_pack(): respect constness of argv parameter

Nguyễn Thái Ngọc Duy (2):
      pack-objects, streaming: turn "xx >= big_file_threshold" to ".. > .."
      pack-objects: refactor write_object() into helper functions

Peter Krefting (1):
      Update Swedish translation (728t0f0u)

René Scharfe (3):
      refs: convert parameter of search_ref_dir() to length-limited string
      refs: convert parameter of create_dir_entry() to length-limited string
      refs: use strings directly in find_containing_dir()

Trần Ngọc Quân (2):
      Init translation for Vietnamese
      First release translation for Vietnamese

Vincent van Ravesteijn (1):
      Do not autosquash in case of an implied interactive rebase

Vitor Antunes (3):
      git-p4: Test changelists touching two branches
      git-p4: Verify detection of "empty" branch creation
      git-p4: Clean up branch test cases


Version v1.7.11-rc0; changes since v1.7.10.5:
---------------------------------------------

Amiel Martin (2):
      fixed order of assertion in tests
      sort assertion to make it more generic

Arlen Cuss (1):
      Fix refspecs in given example for git subtree pull.

Avery Pennarun (72):
      basic options parsing and whatnot.
      'git subtree split' now basically works.
      We now copy the other stuff about a commit (changelog, author, etc).
      Print out the newly created commitid at the end, for use in other scripts.
      Add a new --rejoin option.
      Use information about prior splits to make sure merges work right.
      Added a --onto option, but it's so complicated I can't tell if it works.
      Hmm... can't actually filter rev-list on the subdir name.
      Skip over empty commits.
      Quick test script for generating reasonably complex merge scenarios.
      Prune out some extra merge commits by comparing their parents correctly.
      Even more aggressive commit trimming.
      Okay, that was a little too aggressive.
      Pass the path using the --prefix option instead of on the command line.
      Add a new 'git subtree add' command for adding subtrees from a given rev.
      Add 'git subtree merge' and 'git subtree pull'.
      Handle it successfully if a given parent commit has no parents.
      Change test.sh to test the new add, merge, and pull commands.
      todo list
      Add --annotate option, and create recognizable file content during tests.
      Typo when searching for existing splits.
      Clarify why we can't do 'git rev-list' with a path.
      Add a 'create' helper function in test.sh.
      Add some basic assertions to test.sh.
      test.sh tweak
      Trim some extra merge commits that don't need to go into the split tree.
      Only copy a commit if it has at least one nonidentical parent.
      test.sh: make sure no commit changes more than one file at a time.
      Simplify merges even more aggressively.
      test.sh: oops, never intended to count the raw number of commits.
      debug messages are off by default; use -d to enable.
      Abort if --rejoin fails.
      More to-do items based on feedback
      typo in comment
      New --branch option to split command.
      slightly rearrange help message for split.
      FIXME help for --squash option
      merge_msg() is really more like rejoin_msg().
      Basic "subtree merge --squash" support.
      Don't squash-merge if the old and new commits are the same.
      Fix splitting after using a squash merge.
      Make --squash work with the 'add' command too.
      Add basic git-subtree manpage in asciidoc format.
      man page: add an EXAMPLES section.
      update todo
      Some todo items reported by pmccurdy
      todo
      Docs: when pushing to github, the repo path needs to end in .git
      todo
      todo^
      todo
      todo: idea for a 'git subtree grafts' command
      Improve patch to use git --exec-path: add to PATH instead.
      Fix behaviour if you have a branch named the same as your --prefix
      Add a README that says to email me instead of using github mail.
      If someone provides a --prefix that ends with slash, strip the slash.
      Fix a minor problem in identifying squashes vs. normal splits.
      cmd_pull didn't support --squash correctly.
      Add some tips for how to install.
      Oops, forgot a COPYING file.  It's GPLv2.
      Weird, I forgot to have 'make test' call test.sh.
      Jakub's changes broke the progress message slightly.
      Make tests pass with recent git (1.7.0 and up).
      Improve checking for existence of the --prefix directory.
      Oops.  Apparently I didn't run 'make test' after most recent change.
      Some recent tests accidentally depended on very new versions of git.
      (Hopefully) fix PATH setting for msysgit.
      Another fix for PATH and msysgit.
      Fix typo: an -> a
      Fix a few typos/grammar-o's in the preceding commit.
      It's also okay if an expected tree object is actually a commit.
      Skip commit objects that should be trees, rather than copying them.

Avishay Lavie (1):
      git-svn: support rebase --preserve-merges

Ben Walton (3):
      add installation support to Makefile
      make git version dynamic when building documentation
      Use SHELL_PATH from build system in run_command.c:prepare_shell_cmd

Bryan Larsen (1):
      docs: simplify example 1

Clemens Buchacher (2):
      merge overwrites unstaged changes in renamed file
      t5570: use explicit push refspec

Cole Stanfield (1):
      Fixing eval syntax error.

Dan Sabath (2):
      docs: add simple 'add' case to clarify setup.
      Docs: cleaning up example textual redundancy

David A. Greene (11):
      Move Tests Into Subdirectory
      Rename Test
      Use Test Harness
      Set TEST_DIRECTORY
      Remove unnecessary git-subtree files
      Use project config files
      Use configure settings for git-subtree
      Install git-subtree from contrib
      Add subtree test Makefile
      Use git-subtree test Makefile
      Fix git-subtree install instructions

David Aguilar (1):
      t7800: Test difftool passing arguments to diff

Felipe Contreras (8):
      tests: add initial bash completion tests
      completion: simplify __gitcomp_1
      completion: simplify by using $prev
      completion: add missing general options
      completion: simplify __git_complete_revlist_file
      completion: add new __git_complete helper
      completion: rename internal helpers _git and _gitk
      completion: add support for backwards compatibility

Heiko Voigt (3):
      Teach revision walking machinery to walk multiple times sequencially
      Refactor submodule push check to use string list instead of integer
      push: teach --recurse-submodules the on-demand option

Jakub Narębski (1):
      gitweb: Pass esc_html_hl_regions() options to esc_html()

Jakub Suder (9):
      added -p alias for --prefix
      added -m/--message option for setting merge commit message
      allow using --branch with existing branches if it makes sense
      fix for subtree split not finding proper base for new commits
      changed alias for --prefix from -p to -P
      fixed bug in commit message for split
      added tests for recent changes
      added temporary test dirs to gitignore
      improved rev_is_descendant_of_branch() function

Jared Hance (1):
      apply: do not leak patches and fragments

Jeff King (4):
      checkout: suppress tracking message with "-q"
      teach "git branch" a --quiet option
      doc/config: fix inline literals
      status: refactor colopts handling

Jesse Greenwald (2):
      Split cmd now processes commits in topo order.
      Added check to order of processed commits.

Jiang Xin (4):
      l10n: Update git.pot (33 new, 24 deleted messages)
      l10n: Update Simplified Chinese translation
      l10n: Update git.pot (275 new, 15 removed messages)
      l10n: Update git.pot (8 new, 4 removed messages)

Johannes Berg (1):
      am: support --include option

Johannes Sixt (3):
      Do not use SHELL_PATH from build system in prepare_shell_cmd on Windows
      t4006: Windows do not have /dev/zero
      Fix t3411.3 to actually rebase something

John Yani (1):
      docs: Description, synopsys, options and examples changes.

Jon Seymour (2):
      git-svn: clarify the referent of dcommit's optional argument
      rev-parse doc: --git-dir does not always show a relative path

Jonathan Nieder (15):
      test: use test_i18ncmp when checking --stat output
      test: use numstat instead of diffstat in funny-names test
      test: modernize funny-names test style
      test: test cherry-pick functionality and output separately
      test: use --numstat instead of --stat in "git stash show" tests
      test: use numstat instead of diffstat in binary-diff test
      diffstat summary line varies by locale: miscellany
      var doc: default editor and pager are configurable at build time
      var doc: advertise current DEFAULT_PAGER and DEFAULT_EDITOR settings
      test: do not rely on US English tracking-info messages
      test: use test_i18ncmp for "Patch format detection failed" message
      test: am of empty patch should not succeed
      fast-import doc: cat-blob and ls responses need to be consumed quickly
      completion: avoid trailing space for --exec-path
      i18n: mark relative dates for translation

Junio C Hamano (45):
      streaming: make streaming-write-entry to be more reusable
      fmt-merge-msg: show those involved in a merged series
      apply: rename free_patch() to free_patch_list()
      apply: free patch->{def,old,new}_name fields
      apply: release memory for fn_table
      apply: free patch->result
      am -3: list the paths that needed 3-way fallback
      apply: free unused fragments for submodule patch
      varint: make it available outside the context of pack
      cache.h: hide on-disk index details
      read-cache.c: allow unaligned mapping of the index file
      read-cache.c: make create_from_disk() report number of bytes it consumed
      read-cache.c: report the header version we do not understand
      read-cache.c: move code to copy ondisk to incore cache to a helper function
      read-cache.c: move code to copy incore to ondisk cache to a helper function
      read-cache.c: read prefix-compressed names in index on-disk version v4
      read-cache.c: write prefix-compressed names in the index
      update-index: upgrade/downgrade on-disk index version
      Kick off post 1.7.10 cycle
      apply: drop unused macro
      apply: tighten constness of line buffer
      apply: document buffer ownership rules across functions
      RelNotes: the first batch of topics graduated to 'master'
      RelNotes: the second batch of topics graduated to 'master'
      mergesort: rename it to llist_mergesort()
      RelNotes: the third batch
      RelNotes: the fourth batch of topics graduated to 'master'
      The fifth batch of topics graduated to 'master'
      push.default doc: explain simple after upstream
      Update draft release notes to 1.7.11
      The sixth batch of topics graduated to 'master'
      unpack-trees: preserve the index file version of original
      index-v4: document the entry format
      The seventh batch of topics graduated to 'master'
      git-svn: introduce SVN version comparison function
      The eighth batch of topics graduated to 'master'
      refs: fix find_containing_dir() regression
      Makefile: NO_INSTALL_HARDLINKS
      The ninth batch of topics graduated to 'master'
      The tenth batch of topics
      Update draft release notes to 1.7.11 (11th batch)
      Update draft release notes for 12th batch
      git-sh-setup: define workaround wrappers before they are used
      Update draft release notes to 1.7.11
      Git 1.7.11-rc0

Kacper Kornet (3):
      gitweb: Don't set owner if got empty value from projects.list
      gitweb: Option to omit column with time of the last change
      gitweb: Option to not display information about owner

Luke Diamand (10):
      git p4: Fixing script editor checks
      git p4: import/export of labels to/from p4
      git p4: fix-up "import/export of labels to/from p4"
      git p4: Squash P4EDITOR in test harness
      git p4: Ignore P4EDITOR if it is empty
      git p4: move verbose to base class
      git p4: fix unit tests
      git p4: add test for tag import/export enabled via config
      git p4: fix bug when verbose enabled with tag export
      git p4: fix bug when enabling tag import/export via config variables

Marco Sousa (1):
      l10n: pt_PT.po translate new messages

Matthieu Moy (5):
      Documentation: explain push.default option a bit more
      Undocument deprecated alias 'push.default=tracking'
      t5528-push-default.sh: add helper functions
      push: introduce new push.default mode "simple"
      push: document the future default change for push.default (matching -> simple)

Matthijs Kooijman (1):
      git-svn: use platform specific auth providers

Michael Haggerty (32):
      refs.c: reorder definitions more logically
      refs: manage current_ref within do_one_ref()
      do_for_each_ref_in_array(): new function
      do_for_each_ref_in_arrays(): new function
      repack_without_ref(): reimplement using do_for_each_ref_in_array()
      names_conflict(): simplify implementation
      free_ref_entry(): new function
      check_refname_component(): return 0 for zero-length components
      struct ref_entry: nest the value part in a union
      refs.c: rename ref_array -> ref_dir
      sort_ref_dir(): simplify logic
      refs: store references hierarchically
      do_for_each_ref(): only iterate over the subtree that was requested
      get_ref_dir(): return early if directory cannot be read
      get_ref_dir(): use a strbuf to hold refname
      get_ref_dir(): rename "base" parameter to "dirname"
      get_ref_dir(): require that the dirname argument ends in '/'
      refs.c: extract function search_for_subdir()
      get_ref_dir(): take the containing directory as argument
      do_for_each_reflog(): return early on error
      do_for_each_reflog(): use a strbuf to hold logfile name
      bisect: copy filename string obtained from git_path()
      find_containing_dir(): use strbuf in implementation of this function
      refs: wrap top-level ref_dirs in ref_entries
      read_loose_refs(): rename function from get_ref_dir()
      get_ref_dir(): add function for getting a ref_dir from a ref_entry
      search_for_subdir(): return (ref_dir *) instead of (ref_entry *)
      struct ref_dir: store a reference to the enclosing ref_cache
      read_loose_refs(): eliminate ref_cache argument
      refs: read loose references lazily
      t/Makefile: retain cache t/.prove across prove runs
      Avoid sorting if references are added to ref_cache in order

Michael Schubert (1):
      remote: update builtin usage

Michał Kiedrowicz (7):
      gitweb: Use descriptive names in esc_html_hl_regions()
      gitweb: esc_html_hl_regions(): Don't create empty <span> elements
      gitweb: Extract print_sidebyside_diff_lines()
      gitweb: Use print_diff_chunk() for both side-by-side and inline diffs
      gitweb: Push formatting diff lines to print_diff_chunk()
      gitweb: Highlight interesting parts of diff
      gitweb: Refinement highlightning in combined diffs

Neil Horman (5):
      git-cherry-pick: add allow-empty option
      git-cherry-pick: Add keep-redundant-commits option
      git-cherry-pick: Add test to validate new options
      git-rebase: add keep_empty flag
      git cherry-pick: do not dereference a potential NULL pointer

Nguyễn Thái Ngọc Duy (37):
      Add more large blob test cases
      cat-file: use streaming API to print blobs
      parse_object: avoid putting whole blob in core
      show: use streaming API for showing blobs
      fsck: use streaming API for writing lost-found blobs
      update-server-info: respect core.bigfilethreshold
      Makefile: feed all header files to xgettext
      strbuf: convenience format functions with \n automatically appended
      i18n: help: mark strings for translation
      i18n: make warn_dangling_symref() automatically append \n
      i18n: remote: mark strings for translation
      i18n: apply: mark strings for translation
      i18n: apply: update say_patch_name to give translators complete sentence
      i18n: index-pack: mark strings for translation
      i18n: bundle: mark strings for translation
      help: replace underlining "help -a" headers using hyphens with a blank line
      Add column layout skeleton and git-column
      Stop starting pager recursively
      column: add columnar layout
      column: add dense layout support
      help: reuse print_columns() for help -a
      branch: add --column
      status: add --column
      column: support piping stdout to external git-column process
      tag: add --column
      archive-tar: turn write_tar_entry into blob-writing only
      archive-tar: unindent write_tar_entry by one level
      archive: delegate blob reading to backend
      archive-tar: stream large blobs to tar file
      branch: remove lego in i18n tracking info strings
      Makefile: keep many variable list sorted
      index-pack: restructure pack processing into three main functions
      index-pack: support multithreaded delta resolving
      index-pack: disable threading if NO_PREAD is defined
      apply: remove lego in i18n string in gitdiff_verify_name
      i18n: parseopt: lookup help and argument translations when showing usage
      i18n: apply: mark parseopt strings for translation

Pelle Wessman (3):
      Check that the type of the tree really is a tree and not a commit as it seems to sometimes become when eg. a submodule has existed in the same position previously.
      Use 'git merge -Xsubtree' when git version >= 1.7.0.
      Fixed regression with splitting out new subtree

Pete Wyckoff (9):
      git-p4: move to toplevel
      git p4: update name in script
      git p4: use "git p4" directly in tests
      remove superfluous newlines in error messages
      remove blank filename in error message
      git p4: bring back files in deleted client directory
      git p4: test submit
      git p4: fix writable file after rename or copy
      git p4: submit files with wildcards

Ralf Thielow (2):
      l10n: Update German translation
      remote: fix typo

Ramsay Jones (5):
      compat/win32/pthread.h: Add an pthread_key_delete() implementation
      compat/mingw.h: Set S_ISUID to prevent a fast-import test failure
      git-submodule.sh: Don't use $path variable in eval_gettext string
      git-sh-setup.sh: Add an pwd() function for MinGW
      builtin/blame.c: Fix a "Using plain integer as NULL pointer" warning

René Scharfe (26):
      add mergesort() for linked lists
      commit: use mergesort() in commit_list_sort_by_date()
      revision: insert unsorted, then sort in prepare_revision_walk()
      sequencer: export commit_list_append()
      revision: append to list instead of insert and reverse
      commit: remove commit_list_reverse()
      streaming: void pointer instead of char pointer
      archive-zip: remove uncompressed_size
      archive-zip: factor out helpers for writing sizes and CRC
      archive-zip: streaming for stored files
      archive-zip: streaming for deflated files
      t5000: rationalize unzip tests
      dir: convert to strbuf
      xdiff: add hunk_func()
      blame: use hunk_func(), part 1
      blame: use hunk_func(), part 2
      blame: factor out helper for calling xdi_diff()
      xdiff: remove emit_func() and xdi_diff_hunks()
      xdiff: remove unused functions
      dir: respect string length argument of read_directory_recursive()
      dir: simplify fill_directory()
      archive: simplify refname handling
      archive-tar: keep const in checksum calculation
      xdiff: avoid compiler warnings with XDL_FAST_HASH on 32-bit machines
      xdiff: avoid more compiler warnings with XDL_FAST_HASH on 32-bit machines
      xdiff: import new 32-bit version of count_masked_bytes()

Roman Kagan (3):
      git-svn: use POSIX::sigprocmask to block signals
      git-svn: ignore SIGPIPE
      git-svn: drop redundant blocking of SIGPIPE

SZEDER Gábor (2):
      tests: add tests for the __gitcomp() completion helper function
      completion: fix completion after 'git --option <TAB>'

Sebastian Pipping (1):
      gitweb: Fix unintended "--no-merges" for regular Atom feed

Stefano Lattarini (3):
      configure: move definitions of private m4 macros before AC_INIT invocation
      configure: avoid some code repetitions thanks to m4_{push,pop}def
      configure: be more idiomatic

Thomas Rast (2):
      xdiff: load full words in the inner loop of xdl_hash_record
      xdiff: choose XDL_FAST_HASH code on sizeof(long) instead of __WORDSIZE

Tim Henigan (8):
      difftool: parse options using Getopt::Long
      difftool: add '--no-gui' option
      difftool: exit(0) when usage is printed
      difftool: remove explicit change of PATH
      difftool: stop appending '.exe' to git
      difftool: eliminate setup_environment function
      difftool: teach difftool to handle directory diffs
      difftool: print list of valid tools with '--tool-help'

W. Trevor King (3):
      gitweb: add `status` headers to git_feed() responses.
      gitweb: refactor If-Modified-Since handling
      gitweb: add If-Modified-Since handling to git_snapshot().

Wayne Walter (1):
      Added new 'push' command and 2-parameter form of 'add'.

Win Treese (2):
      git-subtree.txt: add another example.
      Make sure that <prefix> exists when splitting.

Zbigniew Jędrzejewski-Szmek (13):
      t0303: immediately bail out w/o GIT_TEST_CREDENTIAL_HELPER
      t0303: resurrect commit message as test documentation
      t1507: add tests to document @{upstream} behaviour
      Provide branch name in error message when using @{u}
      Provide better message for barnhc_wiht_tpyo@{u}
      Be more specific if upstream branch is not tracked
      i18n: mark @{upstream} error messages for translation
      t9002: work around shells that are unable to set COLUMNS to 1
      diff --stat: use less columns for change counts
      test: modernize style of t4006
      tests: check --[short]stat output after chmod
      diff --stat: report mode-only changes for binary files like text files
      diff --stat: do not run diff on indentical files

kTln2 (1):
      Add explicit path of git installation by 'git --exec-path'.

Ævar Arnfjörð Bjarmason (3):
      git-branch: remove lego in i18n messages
      git-commit: remove lego in i18n messages
      git-commit: remove lego in i18n messages


Version v1.7.10.5; changes since v1.7.10.4:
-------------------------------------------

Johannes Schindelin (1):
      fast-export: report SHA-1 instead of gibberish when marks exist already

Junio C Hamano (1):
      Git 1.7.10.5

Vincent van Ravesteijn (1):
      Do not autosquash in case of an implied interactive rebase


Version v1.7.10.4; changes since v1.7.10.3:
-------------------------------------------

Avery Pennarun (1):
      checkout: no progress messages if !isatty(2).

Erik Faye-Lund (2):
      rebase: report invalid commit correctly
      Makefile: add missing GIT-VERSION-FILE dependency

Jeff King (3):
      fix off-by-one error in split_ident_line
      pretty: avoid buffer overflow in format_person_part
      avoid segfault when reading header of malformed commits

Junio C Hamano (2):
      Start preparing for 1.7.10.4
      Git 1.7.10.4

Peter Krefting (1):
      Update Swedish translation (728t0f0u)

René Scharfe (4):
      grep: factor out create_grep_pat()
      grep: factor out do_append_grep_pat()
      grep: support newline separated pattern list
      grep: stop leaking line strings with -f


Version v1.7.10.3; changes since v1.7.10.2:
-------------------------------------------

Bobby Powers (2):
      diff --no-index: reset temporary buffer lengths on directory iteration
      diff --no-index: don't leak buffers in queue_diff

Carlos Martín Nieto (1):
      pack-protocol: fix first-want separator in the examples

Erik Faye-Lund (2):
      clone: fix progress-regression
      checkout: do not corrupt HEAD on empty repo

Heiko Voigt (2):
      link to gitmodules page at the beginning of git-submodule documentation
      teach add_submodule_odb() to look for alternates

Jan Krüger (1):
      log-tree: use custom line terminator in line termination mode

Jeff King (10):
      docs: stop using asciidoc no-inline-literal
      t1411: add more selector index/date tests
      log: respect date_mode_explicit with --format:%gd
      reflog-walk: clean up "flag" field of commit_reflog struct
      reflog-walk: always make HEAD@{0} show indexed selectors
      commit: refactor option parsing
      status: refactor null_termination option
      status: fix null termination with "-b"
      status: respect "-b" for porcelain format
      osxkeychain: pull make config from top-level directory

Jens Lehmann (1):
      Consistently use "superproject" instead of "supermodule"

Jiang Xin (4):
      l10n: Update git.pot (1 new messages)
      l10n: zh_CN.po: translate 1 new message
      l10n: Update git.pot (3 new, 2 removed messages)
      l10n: zh_CN.po: translate 3 new messages

Johannes Sixt (3):
      t2020-checkout-detach: check for the number of orphaned commits
      checkout (detached): truncate list of orphaned commits at the new HEAD
      t3404: begin "exchange commits with -p" test with correct preconditions

Jonathan Nieder (1):
      config doc: remove confusion about relative GIT_DIR from FILES section

Junio C Hamano (5):
      log-tree: the previous one is still not quite right
      reflog-walk: tell explicit --date=default from not having --date at all
      Start preparing for 1.7.10.3
      Update draft release notes to 1.7.10.3
      Git 1.7.10.3

Linus Torvalds (1):
      fmt-merge-message: add empty line between tag and signature verification

Ralf Thielow (7):
      l10n: add new members to German translation team
      l10n: de.po: translate "track" as "beobachten"
      l10n: de.po: translate "remote" as "extern"
      l10n: de.po: collection of improvements
      l10n: de.po: unify translation of "ahead" and "behind"
      l10n: de.po: translate one new message
      l10n: de.po: translate 3 new messages

Thomas Rast (4):
      l10n: de.po: translate "bare" as "bloß"
      l10n: de.po: hopefully uncontroversial fixes
      l10n: de.po: translate "bad" as "ungültig" ("invalid")
      l10n: de.po: collection of suggestions


Version v1.7.10.2; changes since v1.7.10.1:
-------------------------------------------

Angus Hammond (1):
      grep.c: remove redundant line of code

Ben Walton (1):
      Avoid bug in Solaris xpg4/sed as used in submodule

Christian Couder (1):
      revert: add missing va_end

Christopher Tiwald (2):
      push: Provide situational hints for non-fast-forward errors
      Fix httpd tests that broke when non-ff push advice changed

Clemens Buchacher (3):
      http auth fails with multiple curl handles
      properly keep track of current working directory
      cherry-pick: do not expect file arguments

Florian Achleitner (1):
      Documentation/git-config: describe and clarify "--local <file>" option

Heiko Voigt (1):
      document submdule.$name.update=none option for gitmodules

Jeff King (15):
      clean up struct ref's nonfastforward field
      http-backend: respect existing GIT_COMMITTER_* variables
      fix http auth with multiple curl handles
      gc: do not explode objects which will be immediately pruned
      http: clean up leak in init_curl_http_auth
      http: use newer curl options for setting credentials
      argv-array: refactor empty_argv initialization
      argv-array: add a new "pushl" method
      gc: use argv-array for sub-commands
      config: reject bogus section names for --rename-section
      config: expand tildes in include.path variable
      send-pack: show progress when isatty(2)
      teach send-pack about --[no-]progress
      t5541: test more combinations of --progress
      t/gitweb-lib: use $PERL_PATH to run gitweb

Jim Meyering (1):
      diff: avoid stack-buffer-read-overrun for very long name

Johannes Sixt (2):
      t9300-fast-import: avoid 'exit' in test_expect_success snippets
      t5570: fix forwarding of git-daemon messages via cat

Junio C Hamano (13):
      xdiff: remove XDL_PATCH_* macros
      xdiff: PATIENCE/HISTOGRAM are not independent option bits
      rebase -i: remind that the lines are top-to-bottom
      builtin/merge.c: remove "remoteheads" global variable
      builtin/merge.c: collect other parents early
      builtin/merge.c: reduce parents early
      fmt-merge-msg: discard needless merge parents
      t9400: fix gnuism in grep
      diff --no-index: use strbuf for temporary pathnames
      contrib/rerere-train: use installed git-sh-setup
      Start preparing for 1.7.10.2
      Update draft release notes to 1.7.10.2
      Git 1.7.10.2

Lucian Poston (5):
      Add output_prefix_length to diff_options
      Adjust stat width calculations to take --graph output into account
      t4052: Adjust --graph --stat output for prefixes
      t4052: Test diff-stat output with minimum columns
      Prevent graph_width of stat width from falling below min

Marc Branchaud (2):
      fetch: Give remote_ref to update_local_ref() as well
      fetch: describe new refs based on where it came from

Michał Kiedrowicz (1):
      merge tests: octopus with redundant parents

Pete Wyckoff (2):
      git-remote-testgit: fix race when spawning fast-import
      git p4 doc: fix formatting

Ralf Thielow (1):
      sequencer: remove additional blank line

René Scharfe (2):
      unpack-trees: don't perform any index operation if we're not merging
      unpack-trees: plug minor memory leak

Ross Lagerwall (2):
      rev-parse --show-prefix: add in trailing newline
      stash: use eval_gettextln correctly

Stefano Lattarini (1):
      tests: modernise style: more uses of test_line_count

Zbigniew Jędrzejewski-Szmek (4):
      t4052: test --stat output with --graph
      test-lib: skip test with COLUMNS=1 under mksh
      t4052: work around shells unable to set COLUMNS to 1
      Consistently use perl from /usr/bin/ for scripts


Version v1.7.10.1; changes since v1.7.10:
-----------------------------------------

Adam Monsen (1):
      git-commit.txt: clarify -t requires editing message

Byrial Jensen (2):
      l10n: New da.po file with 0 translations
      l10n: Add Danish team (da) to list of teams

Ivan Todoroski (4):
      fetch-pack: new --stdin option to read refs from stdin
      remote-curl: send the refs to fetch-pack on stdin
      fetch-pack: test cases for the new --stdin option
      remote-curl: main test case for the OS command line overflow

Jeff King (6):
      drop casts from users EMPTY_TREE_SHA1_BIN
      make is_empty_blob_sha1 available everywhere
      teach diffcore-rename to optionally ignore empty content
      merge-recursive: don't detect renames of empty files
      add--interactive: ignore unmerged entries in patch mode
      run-command: treat inaccessible directories as ENOENT

Jens Lehmann (1):
      submodules: recursive fetch also checks new tags for submodule commits

Jiang Xin (2):
      l10n: Update git.pot (2 new messages)
      l10n: Update Simplified Chinese translation

Johan Herland (3):
      t3310: illustrate failure to "notes merge --commit" inside $GIT_DIR/
      notes-merge: use opendir/readdir instead of using read_directory()
      notes-merge: Don't remove .git/NOTES_MERGE_WORKTREE; it may be the user's cwd

Johannes Sixt (1):
      t4034: diff.*.wordregex should not be "sticky" in --word-diff

John Keeping (1):
      rebase -i continue: don't skip commits that only change submodules

Jonathan Nieder (1):
      bundle: remove stray single-quote from error message

Junio C Hamano (16):
      ident.c: add split_ident_line() to parse formatted ident line
      t7503: does pre-commit-hook learn authorship?
      commit: pass author/committer info to hooks
      remove_dir_recursively(): Add flag for skipping removal of toplevel dir
      clean: preserve nested git worktree in subdirectories
      t7501: test the right kind of breakage
      commit: do not trigger bogus "has templated message edited" check
      commit: rephrase the error when user did not touch templated log message
      Documentation/git-commit: rephrase the "initial-ness" of templates
      push: error out when the "upstream" semantics does not make sense
      blame: accept --need-minimal
      Git 1.7.7.7
      Git 1.7.8.6
      Git 1.7.9.7
      Start preparing for 1.7.10.1
      Git 1.7.10.1

Lucian Poston (3):
      log --graph --stat: three-dash separator should come after graph lines
      log --graph: fix break in graph lines
      t4202: add test for "log --graph --stat -p" separator lines

Marco Sousa (1):
      l10n: Updated pt_PT language

Pete Wyckoff (1):
      fast-import: tighten parsing of datarefs

Ralf Thielow (2):
      l10n: Add the German translation team and initialize de.po
      l10n: Initial German translation

Ramsay Jones (1):
      compat/mingw.[ch]: Change return type of exec functions to int

René Scharfe (3):
      combine-diff: fix loop index underflow
      submodule: fix prototype of gitmodules_config
      test-subprocess: fix segfault without arguments

Thomas Rast (2):
      diff: refactor the word-diff setup from builtin_diff_cmd
      diff: tweak a _copy_ of diff_options with word-diff


Version v1.7.10; changes since v1.7.10-rc4:
-------------------------------------------

Felipe Contreras (1):
      spec: add missing build dependency

Junio C Hamano (1):
      Git 1.7.10


Version v1.7.10-rc4; changes since v1.7.10-rc3:
-----------------------------------------------

Heiko Voigt (1):
      string-list: document that string_list_insert() inserts unique strings

Jiang Xin (1):
      l10n: Improve zh_CN translation for Git 1.7.10-rc3

Junio C Hamano (3):
      merge: backport GIT_MERGE_AUTOEDIT support
      Git 1.7.9.6
      Git 1.7.10-rc4

Marco Sousa (1):
      l10n: Inital Portuguese Portugal language (pt_PT)

Pat Thoyts (2):
      gitk: fix tabbed preferences construction when using tcl 8.4
      gitk: fix setting font display with new tabbed dialog layout.

René Scharfe (1):
      config: remove useless assignment

Vincent van Ravesteijn (1):
      l10n: Add the Dutch translation team and initialize nl.po


Version v1.7.10-rc3; changes since v1.7.10-rc2:
-----------------------------------------------

Frédéric Brière (1):
      gitk: Skip over AUTHOR/COMMIT_DATE when searching all fields

Jiang Xin (4):
      l10n: Update git.pot (1 new message)
      l10n: Update zh_CN translation for Git 1.7.10-rc1
      l10n: Review zh_CN translation for Git 1.7.10-rc1
      Add url of Swedish l10n team in TEAMS file

Jim Meyering (3):
      gitk: Make "git describe" output clickable, too
      correct spelling: an URL -> a URL
      correct a few doubled-word nits in comments and documentation

Jonathan Nieder (1):
      gitk: Use symbolic font names "sans" and "monospace" when available

Junio C Hamano (3):
      Git 1.7.9.5
      Update draft release notes to 1.7.10
      Git 1.7.10-rc3

Marcus Karlsson (1):
      gitk: Teach gitk to respect log.showroot

Mark Lodato (1):
      grep doc: add --break / --heading / -W to synopsis

Nelson Benitez Leon (1):
      documentation: fix alphabetic ordered list for git-rebase man page

Pat Thoyts (2):
      gitk: Use a tabbed dialog to edit preferences
      gitk: Fix the display of files when filtered by path

Paul Mackerras (2):
      gitk: Speed up resolution of short SHA1 ids
      gitk: Add menu items for comparing a commit with the marked commit

Peter Krefting (1):
      Update Swedish translation (724t0f0u).

Rodrigo Silva (MestreLion) (1):
      Documentation: improve description of GIT_EDITOR and preference order

Zbigniew Jędrzejewski-Szmek (2):
      gitk: Use "gitk: repo-top-level-dir" as window title
      tests: unset COLUMNS inherited from environment


Version v1.7.10-rc2; changes since v1.7.10-rc1:
-----------------------------------------------

Alex Merry (1):
      contrib/completion: "local var=()" is misinterpreted as func-decl by zsh

D Waitzman (1):
      Documentation/gitweb: trivial English fixes

Jonathan Nieder (2):
      fast-import: leakfix for 'ls' of dirty trees
      fast-import: don't allow 'ls' of path with empty components

Junio C Hamano (4):
      fetch/receive: remove over-pessimistic connectivity check
      Update draft release notes to 1.7.10
      .mailmap: unify various old mail addresses of gitster
      Git 1.7.10-rc2

Stefano Lattarini (1):
      configure: allow user to prevent $PATH "sanitization" on Solaris

Tim Henigan (7):
      Documentation/diff-options: reword description of --submodule option
      contrib/diffall: comment actual reason for 'cdup'
      contrib/diffall: create tmp dirs without mktemp
      contrib/diffall: eliminate use of tar
      contrib/diffall: eliminate duplicate while loops
      contrib/diffall: fix cleanup trap on Windows
      Documentation/difftool: add deltawalker to list of valid diff tools

Ævar Arnfjörð Bjarmason (2):
      Git::I18N: compatibility with perl <5.8.3
      perl/Makefile: install Git::I18N under NO_PERL_MAKEMAKER


Version v1.7.10-rc1; changes since v1.7.10-rc0:
-----------------------------------------------

Alex Zepeda (1):
      verify-tag: Parse GPG configuration options.

Jakub Narębski (1):
      gitweb: Fix fixed string (non-regexp) project search

Jens Lehmann (3):
      submodules: always use a relative path to gitdir
      submodules: always use a relative path from gitdir to work tree
      submodules: refactor computation of relative gitdir path

Jiang Xin (3):
      l10n: Update zh_CN translation for 1.7.9.2
      l10n: Update git.pot (1 new message)
      l10n: Update zh_CN translation for 1.7.10-rc0

Johannes Sixt (1):
      submodules: fix ambiguous absolute paths under Windows

Junio C Hamano (7):
      Update draft release notes to 1.7.10
      t0204: clarify the "observe undefined behaviour" test
      i18n: fix auto detection of gettext scheme for shell scripts
      Git 1.7.9.4
      Update draft release notes to 1.7.10 before -rc1
      am: officially deprecate -b/--binary option
      Git 1.7.10-rc1

Karsten Blees (1):
      fix deletion of .git/objects sub-directories in git-prune/repack

Martin Stenberg (1):
      config: report errors at the EOL with correct line number

Peter Krefting (2):
      po/sv.po: add Swedish translation
      Update Swedish translation (732t0f0u).

Phil Hord (1):
      rerere: Document 'rerere remaining'

Thomas Rast (4):
      perf: load test-lib-functions from the correct directory
      perf: export some important test-lib variables
      p4000: use -3000 when promising -3000
      git-am: error out when seeing -b/--binary

Thynson (7):
      l10n: Improve zh_CN translation for lines insertion and deletion.
      l10n: Improve zh_CN translation for msg about branch deletion deny
      l10n: Improve zh_CN translation for empty cherry-pick msg.
      l10n: Improve zh_CN translation for msg that make empty commit when amend.
      l10n: Improve commit msg for zh_CN translation
      l10n: Improve zh_CN trans for msg that cannot fast-forward
      l10n: Improve zh_CN translation for msg "not something we can merge"

Vincent van Ravesteijn (3):
      Documentation/git-branch: cleanups
      Documentation/git-branch: fix a typo
      Documentation/git-branch: add default for --contains


Version v1.7.10-rc0; changes since v1.7.9.7:
--------------------------------------------

Adrian Weimann (1):
      completion: --edit and --no-edit for git-merge

Alex Riesen (1):
      add a Makefile switch to avoid gettext translation in shell scripts

Bernhard R. Link (6):
      gitweb: move hard coded .git suffix out of git_get_projects_list
      gitweb: prepare git_get_projects_list for use outside 'forks'.
      gitweb: add project_filter to limit project list to a subdirectory
      gitweb: limit links to alternate forms of project_list to active project_filter
      gitweb: show active project_filter in project_list page header
      gitweb: place links to parent directories in page header

Carlos Martín Nieto (1):
      Make git-{pull,rebase} message without tracking information friendlier

Clemens Buchacher (3):
      git-daemon: add tests
      git-daemon: produce output when ready
      git-daemon tests: wait until daemon is ready

David Barr (9):
      vcs-svn: set up channel to read fast-import cat-blob response
      vcs-svn: quote paths correctly for ls command
      vcs-svn: use mark from previous import for parent commit
      vcs-svn: pass paths through to fast-import
      vcs-svn: drop string_pool
      vcs-svn: drop treap
      vcs-svn: drop obj_pool
      vcs-svn: avoid using ls command twice
      vcs-svn: implement text-delta handling

Dmitry Ivankov (2):
      vcs-svn: do not initialize report_buffer twice
      vcs-svn: reset first_commit_done in fast_export_init

Felipe Contreras (4):
      remote: use a local variable in match_push_refs()
      remote: reorganize check_pattern_match()
      remote: refactor code into alloc_delete_ref()
      push: add '--prune' option

Frédéric Heitzmann (1):
      completion: add --interactive option to git svn dcommit

Jakub Narębski (11):
      gitweb: improve usability of projects search form
      gitweb: Make project search respect project_filter
      gitweb: Harden and improve $project_filter page title
      gitweb: Refactor checking if part of project info need filling
      gitweb: Option for filling only specified info in fill_project_list_info
      gitweb: Faster project search
      gitweb: Introduce esc_html_match_hl and esc_html_hl_regions
      gitweb: Highlight matched part of project name when searching projects
      gitweb: Highlight matched part of project description when searching projects
      gitweb: Highlight matched part of shortened project description
      gitweb: Fix passing parameters to git_project_search_form

Jan Krüger (1):
      symbolic-ref --short: abbreviate the output unambiguously

Jared Hance (1):
      Add threaded versions of functions in symlinks.c.

Jeff King (20):
      parse_object: try internal cache before reading object db
      upload-pack: avoid parsing objects during ref advertisement
      upload-pack: avoid parsing tag destinations
      t0300: use write_script helper
      docs: add a basic description of the config API
      drop odd return value semantics from userdiff_config
      diff-highlight: make perl strict and warnings fatal
      diff-highlight: don't highlight whole lines
      diff-highlight: refactor to prepare for multi-line hunks
      diff-highlight: match multi-line hunks
      diff-highlight: document some non-optimal cases
      docs/api-config: minor clarifications
      t1300: add missing &&-chaining
      config: copy the return value of prefix_filename
      config: teach git_config_set_multivar_in_file a default path
      config: teach git_config_rename_section a file argument
      config: provide a version of git_config with more options
      config: stop using config_exclusive_filename
      config: eliminate config_exclusive_filename
      config: add include directive

Jehan Bing (1):
      Add a setting to require a filter to be successful

Jens Lehmann (1):
      test-lib: add the test_pause convenience function

Jiang Xin (5):
      l10n: initial git.pot for 1.7.10 upcoming release
      l10n: po for zh_CN
      l10n: Update git.pot (12 new messages)
      l10n: update Chinese translation to the new git.po
      Update l10n guide: change the repository URL, etc

Jonathan Nieder (23):
      vcs-svn: use higher mark numbers for blobs
      vcs-svn: save marks for imported commits
      vcs-svn: add a comment before each commit
      vcs-svn: eliminate repo_tree structure
      vcs-svn: handle filenames with dq correctly
      Makefile: list one vcs-svn/xdiff object or header per line
      vcs-svn: learn to maintain a sliding view of a file
      vcs-svn: make buffer_read_binary API more convenient
      vcs-svn: skeleton of an svn delta parser
      vcs-svn: parse svndiff0 window header
      vcs-svn: read the preimage when applying deltas
      vcs-svn: read inline data from deltas
      vcs-svn: read instructions from deltas
      vcs-svn: implement copyfrom_data delta instruction
      vcs-svn: verify that deltas consume all inline data
      vcs-svn: let deltas use data from postimage
      vcs-svn: let deltas use data from preimage
      test-svn-fe: split off "test-svn-fe -d" into a separate function
      vcs-svn: cap number of bytes read from sliding view
      vcs-svn: guard against overflow when computing preimage length
      vcs-svn: avoid hangs from corrupt deltas
      vcs-svn: allow import of > 4GiB files
      vcs-svn: suppress a -Wtype-limits warning

Junio C Hamano (28):
      git-sh-i18n: restructure the logic to compute gettext.sh scheme
      i18n: Make NO_GETTEXT imply fallthrough scheme in shell l10n
      merge: use editor by default in interactive sessions
      push: do not let configured foreign-vcs permanently clobbered
      t9801: do not overuse test_must_fail
      i18n: Do not force USE_GETTEXT_SCHEME=fallthrough on NO_GETTEXT
      vcs-svn/svndiff.c: squelch false "unused" warning from gcc
      Kick off the post 1.7.9 cycle
      Update draft release notes to 1.7.10
      Update draft release notes to 1.7.10
      Update draft release notes to 1.7.10
      Update draft release notes to 1.7.10
      Update draft release notes to 1.7.10
      Update draft release notes to 1.7.10
      t9100: remove bogus " || test" after each test scriptlet
      merge: do not trust fstat(2) too much when checking interactiveness
      Update draft release notes to 1.7.10
      Update draft release notes to 1.7.10
      Update draft release notes to 1.7.10
      grep: use static trans-case table
      fsck: --no-dangling omits "dangling object" information
      pickaxe: allow -i to search in patch case-insensitively
      Update l10n guide
      diff --stat: tests for long filenames and big change counts
      Update draft release notes to 1.7.10
      Update draft release notes to 1.7.10
      fsck doc: a minor typofix
      Git 1.7.10-rc0

Linus Torvalds (1):
      "git pull" doesn't know "--edit"

Luke Diamand (6):
      git-p4: handle p4 branches and labels containing shell chars
      git-p4: cope with labels with empty descriptions
      git-p4: importing labels should cope with missing owner
      git-p4: add test for p4 labels
      git-p4: label import fails with multiple labels at the same changelist
      git-p4: add initial support for RCS keywords

Michael Haggerty (11):
      pack_refs(): remove redundant check
      ref_array: keep track of whether references are sorted
      add_packed_ref(): new function in the refs API.
      write_remote_refs(): create packed (rather than extra) refs
      t5700: document a failure of alternates to affect fetch
      clone.c: move more code into the "if (refs)" conditional
      fetch-pack.c: rename some parameters from "path" to "refname"
      fetch-pack.c: inline insert_alternate_refs()
      everything_local(): mark alternate refs as complete
      clone: do not add alternate references to extra_refs
      refs: remove the extra_refs API

Michał Kiedrowicz (2):
      pack-objects: Fix compilation with NO_PTHREDS
      grep -P: add tests for matching ^ and $

Nelson Benitez Leon (1):
      http: support proxies that require authentication

Nguyễn Thái Ngọc Duy (20):
      clone: add --single-branch to fetch only one branch
      Fix incorrect ref namespace check
      Eliminate recursion in setting/clearing marks in commit list
      index-pack: eliminate recursion in find_unresolved_deltas
      index-pack: eliminate unlimited recursion in get_base_data()
      t5601: add missing && cascade
      clone: write detached HEAD in bare repositories
      clone: factor out checkout code
      clone: factor out HEAD update code
      clone: factor out remote ref writing
      clone: delay cloning until after remote HEAD checking
      clone: --branch=<branch> always means refs/heads/<branch>
      clone: refuse to clone if --branch points to bogus ref
      clone: allow --branch to take a tag
      clone: print advice on checking out detached HEAD
      clone: fix up delay cloning conditions
      pack-objects: do not accept "--index-version=version,"
      pack-objects: remove bogus comment
      pack-objects: convert to use parse_options()
      cache-tree: update API to take abitrary flags

Pete Wyckoff (6):
      git-p4: only a single ... wildcard is supported
      git-p4: fix verbose comment typo
      git-p4: clarify comment
      git-p4: adjust test to adhere to stricter useClientSpec
      git-p4: add tests demonstrating spec overlay ambiguities
      git-p4: Change p4 command invocation

Phil Hord (1):
      cherry-pick: No advice to commit if --no-commit

Philip Jägenstedt (2):
      completion: remote set-* <name> and <branch>
      completion: normalize increment/decrement style

Ramkumar Ramachandra (2):
      revert: prepare to move replay_action to header
      sequencer: factor code out of revert builtin

Ramsay Jones (3):
      vcs-svn: rename check_overflow arguments for clarity
      builtin/tag.c: Fix a sparse warning
      ctype.c: Fix a sparse warning

René Scharfe (5):
      xdiff: print post-image for common records instead of pre-image
      test-parse-options: convert to OPT_BOOL()
      parse-options: allow positivation of options starting, with no-
      parse-options: remove PARSE_OPT_NEGHELP
      parse-options: typo check for unknown switches

Riku (1):
      l10n: update zh_CN translation for "Fetching %s"

Russell Myers (1):
      git-p4: the option to specify 'host' is -H, not -h

Stefano Lattarini (1):
      t0000: modernise style

Steven Walter (2):
      git-svn.perl: perform deletions before anything else
      git-svn.perl: fix a false-positive in the "already exists" test

Thomas Rast (6):
      am: learn passing -b to mailinfo
      mailinfo: with -b, keep space after [foo]
      Move the user-facing test library to test-lib-functions.sh
      Introduce a performance testing framework
      Add a performance test for git-grep
      perf: compare diff algorithms

Tim Henigan (2):
      contrib: add git-diffall script
      mergetools: add a plug-in to support DeltaWalker

Tom Grennan (1):
      tag: add --points-at list option

Vitor Antunes (2):
      git-p4: Search for parent commit on branch creation
      git-p4: Add test case for complex branch import

Wei-Yin Chen (陳威尹) (1):
      git-svn: Fix time zone in --localtime

Yichao Yu (1):
      l10n: fast-forward here is ff-only merge, not push

Zbigniew Jędrzejewski-Szmek (11):
      make lineno_width() from blame reusable for others
      send-email: document the --smtp-debug option
      git-p4: missing she-bang line in t9804 confuses prove
      diff --stat: use the full terminal width
      show --stat: use the full terminal width
      log --stat: use the full terminal width
      merge --stat: use the full terminal width
      diff --stat: use a maximum of 5/8 for the filename part
      diff --stat: add a test for output with COLUMNS=40
      diff --stat: enable limiting of the graph part
      diff --stat: add config option to limit graph width

ws3389 (1):
      l10n: leave leading space unchanged for zh_CN.po

Ævar Arnfjörð Bjarmason (2):
      git-svn: remove redundant porcelain option to rev-list
      git-svn: un-break "git svn rebase" when log.abbrevCommit=true


Version v1.7.9.7; changes since v1.7.9.6:
-----------------------------------------

D Waitzman (1):
      Documentation/gitweb: trivial English fixes

Jonathan Nieder (1):
      bundle: remove stray single-quote from error message

Junio C Hamano (4):
      fetch/receive: remove over-pessimistic connectivity check
      Git 1.7.7.7
      Git 1.7.8.6
      Git 1.7.9.7


Version v1.7.9.6; changes since v1.7.9.5:
-----------------------------------------

Heiko Voigt (1):
      string-list: document that string_list_insert() inserts unique strings

Junio C Hamano (2):
      merge: backport GIT_MERGE_AUTOEDIT support
      Git 1.7.9.6


Version v1.7.9.5; changes since v1.7.9.4:
-----------------------------------------

Jakub Narębski (1):
      gitweb: Fix actionless dispatch for non-existent objects

Jonathan Nieder (2):
      fast-import: leakfix for 'ls' of dirty trees
      fast-import: don't allow 'ls' of path with empty components

Junio C Hamano (2):
      i18n of multi-line advice messages
      Git 1.7.9.5

Kirill Smelkov (1):
      t/Makefile: Use $(sort ...) explicitly where needed

Mark Lodato (1):
      grep doc: add --break / --heading / -W to synopsis

Martin Stenberg (1):
      config: report errors at the EOL with correct line number

Nelson Benitez Leon (1):
      documentation: fix alphabetic ordered list for git-rebase man page

Phil Hord (1):
      rerere: Document 'rerere remaining'

Rodrigo Silva (MestreLion) (1):
      Documentation: improve description of GIT_EDITOR and preference order


Version v1.7.9.4; changes since v1.7.9.3:
-----------------------------------------

Jakub Narębski (1):
      gitweb: Fix fixed string (non-regexp) project search

Junio C Hamano (6):
      am -3: allow nonstandard -p<num> option
      test: "am -3" can accept non-standard -p<num>
      t4011: modernise style
      t4011: illustrate "diff-index -p" on stat-dirty paths
      diff -p: squelch "diff --git" header for stat-dirty paths
      Git 1.7.9.4

Thomas Rast (5):
      t5510: refactor bundle->pack conversion
      t5510: ensure we stay in the toplevel test dir
      bundle: keep around names passed to add_pending_object()
      Document the --histogram diff option
      t5704: fix nonportable sed/grep usages


Version v1.7.9.3; changes since v1.7.9.2:
-----------------------------------------

Andrew Wong (1):
      rebase -m: only call "notes copy" when rewritten exists and is non-empty

Carlos Martín Nieto (2):
      branch: don't assume the merge filter ref exists
      Documentation: use {asterisk} in rev-list-options.txt when needed

Clemens Buchacher (1):
      http.proxy: also mention https_proxy and all_proxy

Dmitry V. Levin (1):
      Makefile: add thread-utils.h to LIB_H

Jakub Narębski (2):
      gitweb: Fix "heads" view when there is no current branch
      gitweb: Handle invalid regexp in regexp search

Jeff King (4):
      disconnect from remote helpers more gently
      teach convert_to_git a "dry run" mode
      teach dry-run convert_to_git not to require a src buffer
      do not stream large files to pack when filters are in use

Jehan Bing (1):
      Ignore SIGPIPE when running a filter driver

Jim Meyering (1):
      am: don't infloop for an empty input file

John Szakmeister (1):
      configure: don't use -lintl when there is no gettext support

Jonathan Nieder (1):
      mergetools/meld: Use --help output to detect --output support

Junio C Hamano (9):
      refresh_index: do not show unmerged path that is outside pathspec
      Documentation/merge-options.txt: group "ff" related options together
      Document merge.branchdesc configuration variable
      Git 1.7.8.5
      Document accumulated fixes since 1.7.9.2
      Update draft release notes to 1.7.9.3
      Documentation: do not assume that n > 1 in <rev>~$n
      Update draft release notes to 1.7.9.3 for the last time
      Git 1.7.9.3

Libor Pechacek (1):
      Documentation fixes in git-config

Matthieu Moy (1):
      README: point to Documentation/SubmittingPatches

Michael Haggerty (2):
      post-receive-email: remove unused variable
      post-receive-email: match up $LOGBEGIN..$LOGEND pairs correctly

Michael J Gruber (1):
      t0300: work around bug in dash 0.5.6

Michał Kiedrowicz (1):
      grep -P: Fix matching ^ and $

Nguyễn Thái Ngọc Duy (2):
      rev-list: remove BISECT_SHOW_TRIED flag
      rev-list: fix --verify-objects --quiet becoming --objects

Pete Wyckoff (4):
      git-p4: set useClientSpec variable on initial clone
      git-p4: fix submit regression with clientSpec and subdir clone
      git-p4: remove bash-ism in t9809
      git-p4: remove bash-ism in t9800

Philip Jägenstedt (1):
      remote: fix set-branches usage and documentation

Stefano Lattarini (1):
      tests: fix spurious error when run directly with Solaris /usr/xpg4/bin/sh

Thomas Rast (6):
      merge: add instructions to the commit message when editing
      bundle: put strbuf_readline_fd in strbuf.c with adjustments
      bundle: use a strbuf to scan the log for boundary commits
      strbuf: improve strbuf_get*line documentation
      t5704: match tests to modern style
      fast-import: zero all of 'struct tag' to silence valgrind

Tim Henigan (2):
      CodingGuidelines: Add a note about spaces after redirection
      CodingGuidelines: do not use 'which' in shell scripts

Tom Grennan (1):
      t5512 (ls-remote): modernize style


Version v1.7.9.2; changes since v1.7.9.1:
-----------------------------------------

Christian Hammerl (1):
      completion: Allow dash as the first character for __git_ps1

Clemens Buchacher (4):
      git rev-list: fix invalid typecast
      push/fetch/clone --no-progress suppresses progress output
      t5541: check error message against the real port number used
      do not override receive-pack errors

Felipe Contreras (3):
      completion: work around zsh option propagation bug
      completion: use ls -1 instead of rolling a loop to do that ourselves
      completion: simplify __gitcomp and __gitcomp_nl implementations

Jakub Narębski (2):
      gitweb: Allow UTF-8 encoded CGI query parameters and path_info
      gitweb: Fix 'grep' search for multiple matches in file

Jeff King (12):
      grep: make locking flag global
      grep: move sha1-reading mutex into low-level code
      grep: refactor the concept of "grep source" into an object
      convert git-grep to use grep_source interface
      grep: drop grep_buffer's "name" parameter
      grep: cache userdiff_driver in grep_source
      grep: respect diff attributes for binary-ness
      grep: load file data after checking binary-ness
      grep: pre-load userdiff drivers when threaded
      standardize and improve lookup rules for external local repos
      prompt: clean up strbuf usage
      prompt: fall back to terminal if askpass fails

Jiang Xin (2):
      i18n: git-commit whence_s "merge/cherry-pick" message
      i18n: format_tracking_info "Your branch is behind" message

Johannes Sixt (1):
      Makefile: fix syntax for older make

Junio C Hamano (8):
      mailmap: always return a plain mail address from map_user()
      git checkout -b: allow switching out of an unborn branch
      commit: ignore intent-to-add entries instead of refusing
      diff --stat: show bars of same length for paths with same amount of changes
      Update draft release notes to 1.7.9.2
      Update draft release notes to 1.7.9.2
      Update draft release notes to 1.7.9.2
      Git 1.7.9.2

Matthieu Moy (1):
      fsck: give accurate error message on empty loose object files

Namhyung Kim (2):
      ctype.c only wants git-compat-util.h
      ctype: implement islower/isupper macro

Nguyễn Thái Ngọc Duy (3):
      sha1_file.c: move the core logic of find_pack_entry() into fill_pack_entry()
      find_pack_entry(): do not keep packed_git pointer locally
      Use correct grammar in diffstat summary line

Philip Jägenstedt (2):
      completion: remove stale "to submit patches" documentation
      completion: use tabs for indentation

Ralf Thielow (2):
      completion: --edit-description option for git-branch
      completion: --list option for git-branch

Theodore Ts'o (1):
      Fix build problems related to profile-directed optimization

Zbigniew Jędrzejewski-Szmek (2):
      pager: find out the terminal width before spawning the pager
      man: rearrange git synopsis to fit in 80 lines

Дилян Палаузов (1):
      Makefile: introduce CHARSET_LIB to link with -lcharset


Version v1.7.9.1; changes since v1.7.9:
---------------------------------------

Adrian Weimann (1):
      completion: --edit and --no-edit for git-merge

Albert Yale (1):
      grep: fix -l/-L interaction with decoration lines

Ben Walton (1):
      Drop system includes from inet_pton/inet_ntop compatibility wrappers

Clemens Buchacher (2):
      fix push --quiet: add 'quiet' capability to receive-pack
      dashed externals: kill children on exit

David Aguilar (1):
      mergetool: Provide an empty file when needed

Jakub Narębski (1):
      git.spec: Workaround localized messages not put in any RPM

Jeff King (4):
      run-command: optionally kill children on exit
      imap-send: remove dead code
      tag: fix output of "tag -n" when errors occur
      tag: die when listing missing or corrupt objects

Jens Lehmann (1):
      submodule add: fix breakage when re-adding a deep submodule

Johannes Schindelin (1):
      add -e: do not show difference in a submodule that is merely dirty

Junio C Hamano (15):
      server_supports(): parse feature list more carefully
      Making pathspec limited log play nicer with --first-parent
      request-pull: explicitly ask tags/$name to be pulled
      tests: add write_script helper function
      parse_date(): allow ancient git-timestamp
      parse_date(): '@' prefix forces git-timestamp
      merge: do not create a signed tag merge under --ff-only option
      branch --edit-description: protect against mistyped branch name
      Git 1.7.6.6
      Prepare for 1.7.9.1
      tag: do not show non-tag contents with "-n"
      merge: do not launch an editor on "--no-edit $tag"
      Update draft release notes to 1.7.9.1
      Update draft release notes to 1.7.9.1
      Git 1.7.9.1

Michael J Gruber (1):
      t5541: avoid TAP test miscounting

Michael Palimaka (1):
      Explicitly set X to avoid potential build breakage

Shawn O. Pearce (1):
      remote-curl: Fix push status report when all branches fail

Ævar Arnfjörð Bjarmason (3):
      Makefile: Change the default compiler from "gcc" to "cc"
      Remove Git's support for smoke testing
      t: use sane_unset instead of unset


Version v1.7.9; changes since v1.7.9-rc2:
-----------------------------------------

Felipe Contreras (1):
      git-completion: workaround zsh COMPREPLY bug

Jeff King (1):
      docs: minor grammar fixes for v1.7.9 release notes

Junio C Hamano (2):
      INSTALL: warn about recent Fedora breakage
      Git 1.7.9

Michael Haggerty (1):
      Fix typo in 1.7.9 release notes


Version v1.7.9-rc2; changes since v1.7.9-rc1:
---------------------------------------------

Jakub Narębski (2):
      gitweb: Fix file links in "grep" search
      gitweb: Harden "grep" search against filenames with ':'

Jeff King (3):
      unix-socket: handle long socket pathnames
      credential-cache: report more daemon connection errors
      credential-cache: ignore "connection refused" errors

Jonathan Nieder (1):
      unix-socket: do not let close() or chdir() clobber errno during cleanup

Junio C Hamano (4):
      pulling signed tag: add howto document
      Git 1.7.7.6
      Git 1.7.8.4
      Git 1.7.9-rc2

Michael Haggerty (2):
      git-show-ref: fix escaping in asciidoc source
      git-show-ref doc: typeset regexp in fixed width font

Nguyễn Thái Ngọc Duy (3):
      Document limited recursion pathspec matching with wildcards
      diff-index: enable recursive pathspec matching in unpack_trees
      diff-index: enable recursive pathspec matching in unpack_trees

Thomas Rast (1):
      word-diff: ignore '\ No newline at eof' marker


Version v1.7.9-rc1; changes since v1.7.9-rc0:
---------------------------------------------

Ben Walton (1):
      Use perl instead of sed for t8006-blame-textconv test

Carlos Martín Nieto (1):
      archive: re-allow HEAD:Documentation on a remote invocation

Clemens Buchacher (1):
      credentials: unable to connect to cache daemon

Jeff King (5):
      send-email: multiedit is a boolean config option
      attr: don't confuse prefixes with leading directories
      attr: drop misguided defensive coding
      attr: fix leak in free_attr_elem
      thin-pack: try harder to use preferred base objects as base

Junio C Hamano (11):
      attr.c: make bootstrap_attr_stack() leave early
      attr.c: clarify the logic to pop attr_stack
      Documentation: rerere's rr-cache auto-creation and rerere.enabled
      Prepare for 1.7.6.6
      Prepare for 1.7.7.6
      Prepare for 1.7.8.4
      request-pull: use the real fork point when preparing the message
      Update draft release notes to 1.7.6.6
      Update draft release notes to 1.7.7.6
      Update draft release notes to 1.7.8.4
      Git 1.7.9-rc1

Matthieu Moy (1):
      gitweb: accept trailing "/" in $project_list

Michael Haggerty (3):
      receive-pack: move more work into write_head_info()
      show_ref(): remove unused "flag" and "cb_data" arguments
      write_head_info(): handle "extra refs" locally

Nguyễn Thái Ngọc Duy (1):
      t2203: fix wrong commit command

Sebastian Schuberth (2):
      t9200: On MSYS, do not pass Windows-style paths to CVS
      git-cvsexportcommit: Fix calling Perl's rel2abs() on MSYS

Thomas Rast (1):
      mailinfo documentation: accurately describe non -k case


Version v1.7.9-rc0; changes since v1.7.8.6:
-------------------------------------------

Anders Kaseorg (2):
      gitk: Remove unused $cdate array
      gitk: Remember time zones from author and commit timestamps

Bert Wesarg (14):
      git-gui: fix multi selected file operation
      git-gui: handle config booleans without value
      git-gui: add smart case search mode in searchbar
      git-gui: add regexp search mode to the searchbar
      git-gui: add search history to searchbar
      git-gui: fix unintended line break in message string
      git-gui: use "untracked" for files which are not known to git
      git-gui: new config to control staging of untracked files
      git-gui: fix display of path in browser title
      git-gui: use a tristate to control the case mode in the searchbar
      git-gui: span widgets over the full file output area in the blame view
      git-gui: include the file path in guitools confirmation dialog
      git-gui: make config gui.warndetachedcommit a boolean
      git-gui: don't warn for detached head when rebasing

Dejan Ribič (1):
      git-gui: fix spelling error in sshkey.tcl

Gary Gibbons (5):
      git-p4: ensure submit clientPath exists before chdir
      git-p4: use absolute directory for PWD env var
      git-p4: fix test for unsupported P4 Client Views
      git-p4: sort client views by reverse View number
      git-p4: support single file p4 client view maps

Gustaf Hendeby (1):
      Add built-in diff patterns for MATLAB code

Jakub Narębski (6):
      gitweb: Refactor diff body line classification
      gitweb: Extract formatting of diff chunk header
      gitweb: Give side-by-side diff extra CSS styling
      t9500: Add test for handling incomplete lines in diff by gitweb
      t9500: Add basic sanity tests for side-by-side diff in gitweb
      gitweb: Use href(-replay=>1,...) for formats links in "commitdiff"

Jeff King (28):
      prune: handle --progress/no-progress
      reachable: per-object progress
      upload-archive: use start_command instead of fork
      test-lib: add test_config_global variant
      t5550: fix typo
      introduce credentials API
      credential: add function for parsing url components
      http: use credential API to get passwords
      credential: apply helper config
      credential: add credential.*.username
      credential: make relevance of http path configurable
      docs: end-user documentation for the credential subsystem
      credentials: add "cache" helper
      strbuf: add strbuf_add*_urlencode
      imap-send: avoid buffer overflow
      imap-send: don't check return value of git_getpass
      move git_getpass to its own source file
      refactor git_getpass into generic prompt function
      add generic terminal prompt function
      credentials: add "store" helper
      prompt: use git_terminal_prompt
      t: add test harness for external credential helpers
      credential: use git_prompt instead of git_getpass
      Makefile: linux has /dev/tty
      Makefile: OS X has /dev/tty
      contrib: add credential helper for OS X Keychain
      test-lib: redirect stdin of tests
      pretty: give placeholders to reflog identity

Joey Hess (1):
      write first for-merge ref to FETCH_HEAD first

Johannes Sixt (1):
      Makefile: unix sockets may not available on some platforms

Jonathan Nieder (6):
      gitk: Make vi-style keybindings more vi-like
      test: add missing "&&" after echo command
      test: remove a porcelain test that hard-codes commit names
      t7501 (commit): modernize style
      test: commit --amend should honor --no-edit
      test: errors preparing for a test are not special

Jonathon Mah (1):
      stash: Don't fail if work dir contains file named 'HEAD'

Junio C Hamano (50):
      branch: add read_branch_desc() helper function
      format-patch: use branch description in cover letter
      branch: teach --edit-description option
      request-pull: modernize style
      request-pull: state what commit to expect
      request-pull: use the branch description
      fmt-merge-msg: use branch.$name.description
      write_pack_header(): a helper function
      create_tmp_packfile(): a helper function
      finish_tmp_packfile(): a helper function
      Split GPG interface into its own helper library
      merge: notice local merging of tags and keep it unwrapped
      fetch: allow "git fetch $there v1.0" to fetch a tag
      refs DWIMmery: use the same rule for both "git fetch" and others
      fmt-merge-msg: avoid early returns
      fmt-merge-msg: package options into a structure
      fmt-merge-msg: Add contents of merged tag in the merge message
      merge: make usage of commit->util more extensible
      merge: record tag objects without peeling in MERGE_HEAD
      request-pull: use the annotated tag contents
      commit: copy merged signed tags to headers of merge commit
      merge: force edit and no-ff mode when merging a tag object
      commit: teach --amend to carry forward extra headers
      commit-tree: update the command line parsing
      commit-tree: teach -m/-F options to read logs from elsewhere
      commit: teach --gpg-sign option
      log: --show-signature
      test "commit -S" and "log --show-signature"
      pretty: %G[?GS] placeholders
      gpg-interface: allow use of a custom GPG binary
      csum-file: introduce sha1file_checkpoint
      bulk-checkin: replace fast-import based implementation
      Kick-off the 1.7.9 cycle
      commit: honour --no-edit
      Update draft release notes for 1.7.9
      Update draft release notes to 1.7.9
      request-pull: update the "pull" command generation logic
      Update draft release notes to 1.7.9
      request-pull: do not emit "tag" before the tagname
      Update draft release notes to 1.7.9
      commit: do not lose mergetag header when not amending
      Update draft release notes to 1.7.9
      Update draft release notes in preparation for 1.7.9-rc0
      Update draft release notes to 1.7.9
      verify_signed_buffer: fix stale comment
      commit --amend -S: strip existing gpgsig headers
      log-tree.c: small refactor in show_signature()
      log-tree: show mergetag in log --show-signature output
      log --show-signature: reword the common two-head merge case
      Git 1.7.9-rc0

Kato Kazuyoshi (2):
      gitweb: Add a feature to show side-by-side diff
      gitweb: Add navigation to select side-by-side diff

Kirill A. Shutemov (1):
      git-tag: introduce --cleanup option

Linus Torvalds (1):
      fetch: do not store peeled tag object names in FETCH_HEAD

Martin von Zweigbergk (10):
      gitk: Fix file highlight when run in subdirectory
      gitk: Fix "show origin of this line" with separate work tree
      gitk: Fix "blame parent commit" with separate work tree
      gitk: Fix "External diff" with separate work tree
      gitk: Put temporary directory inside .git
      gitk: Run 'git rev-parse --git-dir' only once
      gitk: Simplify calculation of gitdir
      gitk: Show modified files with separate work tree
      t3401: modernize style
      t3401: use test_commit in setup

Michael Haggerty (16):
      struct ref_entry: document name member
      refs: rename "refname" variables
      refs: rename parameters result -> sha1
      clear_ref_array(): rename from free_ref_array()
      is_refname_available(): remove the "quiet" argument
      parse_ref_line(): add docstring
      add_ref(): add docstring
      is_dup_ref(): extract function from sort_ref_array()
      refs: change signatures of get_packed_refs() and get_loose_refs()
      get_ref_dir(): change signature
      resolve_gitlink_ref(): improve docstring
      Pass a (ref_cache *) to the resolve_gitlink_*() helper functions
      resolve_gitlink_ref_recursive(): change to work with struct ref_cache
      repack_without_ref(): remove temporary
      create_ref_entry(): extract function from add_ref()
      add_ref(): take a (struct ref_entry *) parameter

Nguyễn Thái Ngọc Duy (14):
      fsck: return error code when verify_pack() goes wrong
      verify_packfile(): check as many object as possible in a pack
      fsck: avoid reading every object twice
      fsck: print progress
      prune: show progress while marking reachable objects
      Convert many resolve_ref() calls to read_ref*() and ref_exists()
      checkout,merge: disallow overwriting ignored files with --no-overwrite-ignore
      Copy resolve_ref() return value for longer use
      revert: convert resolve_ref() to read_ref_full()
      Convert resolve_ref+xstrdup to new resolve_refdup function
      Rename resolve_ref() to resolve_ref_unsafe()
      merge: abort if fails to commit
      Convert commit_tree() to take strbuf as message
      commit_tree(): refuse commit messages that contain NULs

Pat Thoyts (11):
      git-gui: include the number of untracked files to stage when asking the user
      git-gui: theme the search and line-number entry fields on blame screen
      git-gui: catch invalid or complete regular expressions and treat as no match.
      git-gui: enable the smart case sensitive search only if gui.search.smartcase is true
      git-gui: set suitable extended window manager hints.
      git-gui: support underline style when parsing diff output
      git-gui: sort the numeric ansi codes
      git-gui: set whitespace warnings appropriate to this project
      git-gui: added config gui.gcwarning to disable the gc hint message
      git-gui: handle shell script text filters when loading for blame.
      git-gui 0.16

Paul Mackerras (1):
      gitk: Update copyright

Pete Wyckoff (18):
      git-p4: introduce skipSubmitEdit
      git-p4: submit test for auto-creating clientPath
      git-p4: test for absolute PWD problem
      git-p4: fix skipSubmitEdit regression
      rename git-p4 tests
      git-p4: introduce asciidoc documentation
      git-p4: clone does not use --git-dir
      git-p4: test cloning with two dirs, clarify doc
      git-p4: document and test clone --branch
      git-p4: honor --changesfile option and test
      git-p4: document and test --import-local
      git-p4: test --max-changes
      git-p4: test --keep-path
      git-p4: test and document --use-client-spec
      git-p4: document and test submit options
      git-p4: test client view handling
      git-p4: rewrite view handling
      git-p4: view spec documentation

Ramkumar Ramachandra (11):
      t3200 (branch): fix '&&' chaining
      test: fix '&&' chaining
      t3030 (merge-recursive): use test_expect_code
      t1510 (worktree): fix '&&' chaining
      t3040 (subprojects-basic): fix '&&' chaining, modernize style
      revert: free msg in format_todo()
      revert: make commit subjects in insn sheet optional
      revert: tolerate extra spaces, tabs in insn sheet
      revert: simplify getting commit subject in format_todo()
      t3510 (cherry-pick-sequencer): use exit status
      t3502, t3510: clarify cherry-pick -m failure

Ramsay Jones (3):
      builtin/log.c: Fix an "Using plain integer as NULL pointer" warning
      environment.c: Fix an sparse "symbol not declared" warning
      fmt-merge-msg.c: Fix an "dubious one-bit signed bitfield" sparse error

Raphael Zimmerer (1):
      gitk: When a commit contains a note, mark it with a yellow box

René Scharfe (5):
      read-cache.c: allocate index entries individually
      cache.h: put single NUL at end of struct cache_entry
      use struct sha1_array in diff_tree_combined()
      pass struct commit to diff_tree_combined_merge()
      submodule: use diff_tree_combined_merge() instead of diff_tree_combined()

SZEDER Gábor (9):
      completion: document __gitcomp()
      completion: optimize refs completion
      completion: make refs completion consistent for local and remote repos
      completion: improve ls-remote output filtering in __git_refs()
      completion: support full refs from remote repositories
      completion: query only refs/heads/ in __git_refs_remotes()
      completion: improve ls-remote output filtering in __git_refs_remotes()
      completion: fast initial completion for config 'remote.*.fetch' value
      completion: remove broken dead code from __git_heads() and __git_tags()

Samuel Bronson (1):
      git-gui: Set both 16x16 and 32x32 icons on X to pacify Xming.

Steven Walter (1):
      git-svn.perl: close the edit for propedits even with no mods

Thomas Rast (5):
      grep: load funcname patterns for -W
      grep: enable threading with -p and -W using lazy attribute lookup
      grep: disable threading in non-worktree case
      test-terminal: set output terminals to raw mode
      bash completion: use read -r everywhere

Tilman Vogel (1):
      git-gui: add config value gui.diffopts for passing additional diff options

Vincent van Ravesteijn (4):
      Compile fix for MSVC: Do not include sys/resources.h
      Compile fix for MSVC: Include <io.h>
      MSVC: Remove unneeded header stubs
      Show error for 'git merge' with unset merge.defaultToUpstream

Yggy King (1):
      gitk: Make "touching paths" search support backslashes

Ævar Arnfjörð Bjarmason (5):
      pull: introduce a pull.rebase option to enable --rebase
      i18n: add infrastructure for translating Git with gettext
      Fix an enum assignment issue spotted by Sun Studio
      Fix a bitwise negation assignment issue spotted by Sun Studio
      Appease Sun Studio by renaming "tmpfile"


Version v1.7.8.6; changes since v1.7.8.5:
-----------------------------------------

Carlos Martín Nieto (1):
      Documentation: use {asterisk} in rev-list-options.txt when needed

Clemens Buchacher (1):
      t5541: check error message against the real port number used

D Waitzman (1):
      Documentation/gitweb: trivial English fixes

Jakub Narębski (1):
      gitweb: Fix actionless dispatch for non-existent objects

Johannes Sixt (1):
      t0090: be prepared that 'wc -l' writes leading blanks

Jonathan Nieder (1):
      bundle: remove stray single-quote from error message

Junio C Hamano (4):
      i18n of multi-line advice messages
      fetch/receive: remove over-pessimistic connectivity check
      Git 1.7.7.7
      Git 1.7.8.6

Kirill Smelkov (1):
      t/Makefile: Use $(sort ...) explicitly where needed

Phil Hord (1):
      rerere: Document 'rerere remaining'

Shawn O. Pearce (1):
      remote-curl: Fix push status report when all branches fail

Thomas Rast (13):
      Add test-scrap-cache-tree
      Test the current state of the cache-tree optimization
      Refactor cache_tree_update idiom from commit
      commit: write cache-tree data when writing index anyway
      reset: update cache-tree data when appropriate
      bundle: put strbuf_readline_fd in strbuf.c with adjustments
      bundle: use a strbuf to scan the log for boundary commits
      strbuf: improve strbuf_get*line documentation
      t5704: match tests to modern style
      t5510: refactor bundle->pack conversion
      t5510: ensure we stay in the toplevel test dir
      bundle: keep around names passed to add_pending_object()
      Document the --histogram diff option


Version v1.7.8.5; changes since v1.7.8.4:
-----------------------------------------

Andrew Wong (1):
      rebase -m: only call "notes copy" when rewritten exists and is non-empty

Dmitry V. Levin (1):
      Makefile: add thread-utils.h to LIB_H

Jeff King (1):
      imap-send: remove dead code

Jim Meyering (1):
      am: don't infloop for an empty input file

Junio C Hamano (2):
      Git 1.7.6.6
      Git 1.7.8.5

Michał Kiedrowicz (1):
      grep -P: Fix matching ^ and $


Version v1.7.8.4; changes since v1.7.8.3:
-----------------------------------------

Jeff King (5):
      send-email: multiedit is a boolean config option
      attr: don't confuse prefixes with leading directories
      attr: drop misguided defensive coding
      attr: fix leak in free_attr_elem
      thin-pack: try harder to use preferred base objects as base

Junio C Hamano (11):
      attr.c: make bootstrap_attr_stack() leave early
      attr.c: clarify the logic to pop attr_stack
      Documentation: rerere's rr-cache auto-creation and rerere.enabled
      Prepare for 1.7.6.6
      Prepare for 1.7.7.6
      Prepare for 1.7.8.4
      Update draft release notes to 1.7.6.6
      Update draft release notes to 1.7.7.6
      Update draft release notes to 1.7.8.4
      Git 1.7.7.6
      Git 1.7.8.4

Nguyễn Thái Ngọc Duy (2):
      t2203: fix wrong commit command
      diff-index: enable recursive pathspec matching in unpack_trees


Version v1.7.8.3; changes since v1.7.8.2:
-----------------------------------------

Brian Harring (1):
      fix hang in git fetch if pointed at a 0 length bundle

Clemens Buchacher (2):
      Documentation: read-tree --prefix works with existing subtrees
      t5550: repack everything into one file

Jack Nagel (1):
      Add MYMETA.json to perl/.gitignore

Jakub Narębski (1):
      gitweb: Fix fallback mode of to_utf8 subroutine

Jens Lehmann (1):
      docs: describe behavior of relative submodule URLs

Junio C Hamano (1):
      Git 1.7.8.3

Jürgen Kreileder (3):
      gitweb: Call to_utf8() on input string in chop_and_escape_str()
      gitweb: esc_html() site name for title in OPML
      gitweb: Output valid utf8 in git_blame_common('data')

Nguyễn Thái Ngọc Duy (1):
      Catch invalid --depth option passed to clone or fetch

Thomas Rast (1):
      Documentation: rerere.enabled is the primary way to configure rerere


Version v1.7.8.2; changes since v1.7.8.1:
-----------------------------------------

Andrew Wong (1):
      rebase -i: interrupt rebase when "commit --amend" failed during "reword"

Conrad Irwin (1):
      Update documentation for stripspace

Eric Wong (1):
      enable SO_KEEPALIVE for connected TCP sockets

Erik Faye-Lund (2):
      compat/setenv.c: update errno when erroring out
      compat/setenv.c: error if name contains '='

Jeff King (20):
      read-cache: let refresh_cache_ent pass up changed flags
      refresh_index: rename format variables
      refresh_index: make porcelain output more specific
      compat/snprintf: don't look at va_list twice
      docs: mention "-k" for both forms of "git mv"
      mv: honor --verbose flag
      mv: make non-directory destination error more clear
      mv: improve overwrite warning
      mv: be quiet about overwriting
      drop "match" parameter from get_remote_heads
      t5500: give fully-qualified refs to fetch-pack
      fetch-pack: match refs exactly
      connect.c: drop path_match function
      t5540: test DAV push with authentication
      http-push: enable "proactive auth"
      use custom rename score during --follow
      docs: brush up obsolete bits of git-fsck manpage
      make "git push -v" actually verbose
      commit, merge: initialize static strbuf
      remote-curl: don't pass back fake refs

Jelmer Vernooij (1):
      Fix an incorrect reference to --set-all.

Johan Herland (3):
      t9301: Fix testcase covering up a bug in fast-import's notes fanout handling
      t9301: Add 2nd testcase exposing bugs in fast-import's notes fanout handling
      fast-import: Fix incorrect fanout level when modifying existing notes refs

Johannes Sixt (1):
      Compatibility: declare strtoimax() under NO_STRTOUMAX

Jonathan Nieder (9):
      branch: allow a no-op "branch -M <current-branch> HEAD"
      Allow checkout -B <current-branch> to update the current branch
      revert: give --continue handling its own function
      revert: allow cherry-pick --continue to commit before resuming
      revert: pass around rev-list args in already-parsed form
      revert: allow single-pick in the middle of cherry-pick sequence
      revert: do not remove state until sequence is finished
      Revert "reset: Make reset remove the sequencer state"
      revert: stop creating and removing sequencer-old directory

Junio C Hamano (5):
      checkout -m: no need to insist on having all 3 stages
      checkout_merged(): squelch false warning from some gcc
      lf_to_crlf_filter(): resurrect CRLF->CRLF hack
      advice: Document that they all default to true
      Git 1.7.8.2

Nick Alcock (2):
      Add strtoimax() compatibility function.
      Support sizes >=2G in various config options accepting 'g' sizes.

Pete Harlan (1):
      Test 'checkout -m -- path'

Thomas Jarosch (1):
      imap-send: Remove unused 'use_namespace' variable

Thomas Rast (1):
      git-sh-setup: make require_clean_work_tree part of the interface

Ævar Arnfjörð Bjarmason (1):
      t/t2023-checkout-m.sh: fix use of test_must_fail


Version v1.7.8.1; changes since v1.7.8:
---------------------------------------

Brandon Casey (2):
      t/t4131-apply-fake-ancestor.sh: fix broken test
      builtin/apply.c: report error on failure to recognize input

Carlos Martín Nieto (2):
      convert: track state in LF-to-CRLF filter
      clone: the -o option has nothing to do with <branch>

Erik Faye-Lund (1):
      mingw: give waitpid the correct signature

Jack Nagel (1):
      Documentation: fix formatting error in merge-options.txt

Jeff King (5):
      http: drop "local" member from request struct
      archive: don't let remote clients get unreachable commits
      stripspace: fix outdated comment
      fetch: create status table using strbuf
      blame: don't overflow time buffer

Jens Lehmann (1):
      diff/status: print submodule path when looking for changes fails

Junio C Hamano (9):
      get_tree_entry(): do not call find_tree_entry() on an empty tree
      unpack_object_header_buffer(): clear the size field upon error
      receive-pack, fetch-pack: reject bogus pack that records objects twice
      pack-object: tolerate broken packs that have duplicated objects
      Git 1.7.6.5
      Git 1.7.7.5
      Update draft release notes for 1.7.8.1
      lf_to_crlf_filter(): tell the caller we added "\n" when draining
      Git 1.7.8.1

Martin von Zweigbergk (1):
      am: don't persist keepcr flag

Michael Haggerty (1):
      git symbolic-ref: documentation fix

Michael Schubert (2):
      builtin/commit: add missing '/' in help message
      builtin/log: remove redundant initialization

Mika Fischer (3):
      http.c: Use curl_multi_fdset to select on curl fds instead of just sleeping
      http.c: Use timeout suggested by curl instead of fixed 50ms timeout
      http.c: Rely on select instead of tracking whether data was received

Nguyễn Thái Ngọc Duy (5):
      tree-walk.c: do not leak internal structure in tree_entry_len()
      read_directory_recursive: reduce one indentation level
      tree_entry_interesting(): give meaningful names to return values
      tree_entry_interesting: make use of local pointer "item"
      checkout,merge: loosen overwriting untracked file check based on info/exclude

Sebastian Morr (1):
      Add MYMETA.yml to perl/.gitignore

Thomas Rast (1):
      userdiff: allow * between cpp funcname words

Ævar Arnfjörð Bjarmason (3):
      apply: get rid of useless x < 0 comparison on a size_t type
      cast variable in call to free() in builtin/diff.c and submodule.c
      builtin/init-db.c: eliminate -Wformat warning on Solaris


Version v1.7.8; changes since v1.7.8-rc4:
-----------------------------------------

Junio C Hamano (1):
      Git 1.7.8


Version v1.7.8-rc4; changes since v1.7.8-rc3:
---------------------------------------------

Johannes Sixt (1):
      Fix revert --abort on Windows

Jonathan Nieder (11):
      do not let git_path clobber errno when reporting errors
      notes merge: eliminate OUTPUT macro
      Makefile: add missing header file dependencies
      Makefile: add option to disable automatic dependency generation
      revert: rename --reset option to --quit
      revert: rearrange pick_revisions() for clarity
      revert: improve error message for cherry-pick during cherry-pick
      revert: write REVERT_HEAD pseudoref during conflicted revert
      revert: introduce --abort to cancel a failed cherry-pick
      revert: remove --reset compatibility option
      revert --abort: do not leave behind useless sequencer-old directory

Junio C Hamano (5):
      name-rev --all: do not even attempt to describe non-commit object
      Git 1.7.7.4
      Hopefully final update of release notes before 1.7.8 final
      Update 1.7.8 draft release notes in preparation for rc4
      Git 1.7.8-rc4

Marc-André Lureau (1):
      mailmap: xcalloc mailmap_info

Nguyễn Thái Ngọc Duy (1):
      revert: do not pass non-literal string as format to git_path()

Ramkumar Ramachandra (4):
      http: remove unused function hex()
      convert: don't mix enum with int
      sha1_file: don't mix enum with int
      git-compat-util: don't assume value for undefined variable

Ramsay Jones (3):
      t5501-*.sh: Fix url passed to clone in setup test
      config.c: Fix a static buffer overwrite bug by avoiding mkpath()
      convert.c: Fix return type of git_path_check_eol()

Thomas Hochstein (1):
      documentation fix: git difftool uses diff tools, not merge tools.

Vincent van Ravesteijn (2):
      builtin-branch: Fix crash on invalid use of --force
      builtin-reset: Documentation update


Version v1.7.8-rc3; changes since v1.7.8-rc2:
---------------------------------------------

Junio C Hamano (3):
      Revert "upload-archive: use start_command instead of fork"
      refs: loosen over-strict "format" check
      Git 1.7.8-rc3

Ramkumar Ramachandra (1):
      revert: prettify fatal messages


Version v1.7.8-rc2; changes since v1.7.8-rc1:
---------------------------------------------

Felipe Contreras (1):
      remote: fix remote set-url usage

Jeff King (1):
      docs: don't mention --quiet or --exit-code in git-log(1)

Junio C Hamano (5):
      remote: fix set-branches usage
      docs: Update install-doc-quick
      Git 1.7.7.3
      Update draft release notes to 1.7.8
      Git 1.7.8-rc2

Liu Yuan (1):
      mktree: fix a memory leak in write_tree()

SZEDER Gábor (1):
      completion: don't leak variable from the prompt into environment


Version v1.7.8-rc1; changes since v1.7.8-rc0:
---------------------------------------------

Dan McGee (4):
      pack-objects: mark add_to_write_order() as inline
      pack-objects: use unsigned int for counter and offset values
      pack-objects: rewrite add_descendants_to_write_order() iteratively
      pack-objects: don't traverse objects unnecessarily

Erik Faye-Lund (4):
      mingw: move poll out of sys-folder
      compat/win32/poll.c: upgrade from upstream
      upload-archive: use start_command instead of fork
      mingw: poll.h is no longer in sys/

Johannes Sixt (1):
      name-hash.c: always initialize dir_next pointer

Junio C Hamano (5):
      (squash) test for previous
      Git 1.7.7.2
      Update draft release notes to 1.7.8
      receive-pack: do not expect object 0{40} to exist
      Git 1.7.8-rc1

Nguyễn Thái Ngọc Duy (2):
      pretty.c: free get_header() return value
      pretty.c: use original commit message if reencoding fails

Pat Thoyts (1):
      t7511: avoid use of reserved filename on Windows.

Pete Wyckoff (1):
      git-p4: ignore apple filetype

Sebastian Schuberth (2):
      blame.c: Properly initialize strbuf after calling, textconv_object()
      blame.c: Properly initialize strbuf after calling textconv_object(), again

Stefan Naewe (2):
      t3200: add test case for 'branch -m'
      http: don't always prompt for password

Tay Ray Chuan (1):
      branch -m: handle no arg properly

Ted Percival (1):
      svn: Quote repository root in regex match

Ævar Arnfjörð Bjarmason (2):
      t/t6030-bisect-porcelain.sh: use test_i18ngrep
      t/t7508-status.sh: use test_i18ncmp


Version v1.7.8-rc0; changes since v1.7.7.7:
-------------------------------------------

Bert Wesarg (7):
      grep: do not use --index in the short usage output
      grep --no-index: don't use git standard exclusions
      git-gui: search and linenumber input are mutual exclusive in the blame view
      git-gui: only accept numbers in the goto-line input
      git-gui: clear the goto line input when hiding
      git-gui: incremental goto line in blame view
      grep: fix the error message that mentions --exclude

Brad King (2):
      submodule: Demonstrate known breakage during recursive merge
      submodule: Search for merges only at end of recursive merge

Brandon Casey (8):
      t/t3905: use the name 'actual' for test output, swap arguments to test_cmp
      git-stash.sh: fix typo in error message
      t/t3905: add missing '&&' linkage
      git-stash: remove untracked/ignored directories when stashed
      refs.c: ensure struct whose member may be passed to realloc is initialized
      refs.c: abort ref search if ref array is empty
      refs.c: free duplicate entries in the ref array instead of leaking them
      t/t3000-ls-files-others.sh: use $SHELL_PATH to run git-new-workdir script

Carlos Martín Nieto (1):
      Documentation: update [section.subsection] to reflect what git does

Chris Packham (1):
      git-web--browse: avoid the use of eval

Christoffer Pettersson (1):
      git-gui: Corrected a typo in the Swedish translation of 'Continue'

Clemens Buchacher (5):
      remove prefix argument from pathspec_prefix
      rename pathspec_prefix() to common_prefix() and move to dir.[ch]
      send-email: add option -h
      use -h for synopsis and --help for manpage consistently
      use test number as port number

Cord Seele (3):
      Add Git::config_path()
      use new Git::config_path() for aliasesfile
      send-email: Fix %config_path_settings handling

Dan McGee (2):
      tree-walk: drop unused parameter from match_dir_prefix
      tree-walk: micro-optimization in tree_entry_interesting

David Aguilar (1):
      Makefile: Improve compiler header dependency check

David Fries (2):
      git-gui: Enable jumping to a specific line number in blame view.
      git-gui: Add keyboard shortcuts for search and goto commands in blame view.

Dmitry Ivankov (3):
      Fix typo: existant->existent
      fast-import: don't allow to tag empty branch
      fast-import: don't allow to note on empty branch

Drew Northup (1):
      gitweb: Add gitweb.conf(5) manpage for gitweb configuration files

Erik Faye-Lund (2):
      enter_repo: do not modify input
      mingw: avoid using strbuf in syslog

Fredrik Gustafsson (2):
      rev-parse: add option --resolve-git-dir <path>
      Move git-dir for submodules

Fredrik Kuivinen (1):
      Makefile: Use computed header dependencies if the compiler supports it

Frédéric Heitzmann (1):
      git svn dcommit: new option --interactive.

Giuseppe Bilotta (1):
      am: preliminary support for hg patches

Heiko Voigt (4):
      git-gui: warn when trying to commit on a detached head
      submodule: move update configuration variable further up
      add update 'none' flag to disable update of submodule by default
      git-gui: deal with unknown files when pressing the "Stage Changed" button

Hui Wang (1):
      sha1_file: normalize alt_odb path before comparing and storing

Jakub Narębski (5):
      gitweb: Add gitweb(1) manpage for gitweb itself
      Documentation: Link to gitweb(1) and gitweb.conf(5) in other manpages
      Documentation: Add gitweb config variables to git-config(1)
      gitweb: Add gitweb manpages to 'gitweb' package in git.spec
      Add simple test for Git::config_path() in t/t9700-perl-git.sh

Jay Soffian (5):
      Teach '--cached' option to check-attr
      log --children
      revert.c: defer writing CHERRY_PICK_HEAD till it is safe to do so
      cherry-pick: do not give irrelevant advice when cherry-pick punted
      Teach merge the '[-e|--edit]' option

Jeff King (20):
      url: decode buffers that are not NUL-terminated
      improve httpd auth tests
      remote-curl: don't retry auth failures with dumb protocol
      http: retry authentication failures for all http requests
      t7004: factor out gpg setup
      t6300: add more body-parsing tests
      for-each-ref: refactor subject and body placeholder parsing
      for-each-ref: handle multiline subjects like --pretty
      t3200: clean up checks for file existence
      fix phantom untracked files when core.ignorecase is set
      t1300: put git invocations inside test function
      t1300: test mixed-case variable retrieval
      pack-objects: protect against disappearing packs
      downgrade "packfile cannot be accessed" errors to warnings
      daemon: give friendlier error messages to clients
      http_init: accept separate URL parameter
      contrib: add diff highlight script
      tests: add missing executable bits
      contrib: add git-jump script
      completion: match ctags symbol names in grep patterns

Jeremie Nikaes (1):
      Add a remote helper to interact with mediawiki (fetch & push)

Johannes Schindelin (5):
      Fix is_gitfile() for files too small or larger than PATH_MAX to be a gitfile
      t1020: disable the pwd test on MinGW
      t9001: do not fail only due to CR/LF issues
      t9300: do not run --cat-blob-fd related tests on MinGW
      git grep: be careful to use mutexes only when they are initialized

Johannes Sixt (2):
      t1402-check-ref-format: skip tests of refs beginning with slash on Windows
      t1300: attempting to remove a non-existent .git/config is not an error

Jonathan Nieder (3):
      ident: check /etc/mailname if email is unknown
      ident: do not retrieve default ident when unnecessary
      Makefile: fix permissions of mergetools/ checked out with permissive umask

Julian Phillips (2):
      Don't sort ref_list too early
      refs: Use binary search to lookup refs faster

Junio C Hamano (47):
      rev-list: fix finish_object() call
      revision.c: add show_object_with_name() helper function
      revision.c: update show_object_with_name() without using malloc()
      list-objects: pass callback data to show_objects()
      rev-list --verify-object
      fetch: verify we have everything we need before updating our ref
      fetch.fsckobjects: verify downloaded objects
      transfer.fsckobjects: unify fetch/receive.fsckobjects
      test: fetch/receive with fsckobjects
      consolidate pathspec_prefix and common_prefix
      fetch: verify we have everything we need before updating our ref
      check_everything_connected(): refactor to use an iterator
      check_everything_connected(): libify
      receive-pack: check connectivity before concluding "git push"
      builtin/revert.c: make commit_list_append() static
      refs.c: make create_cached_refs() static
      send-pack: typofix error message
      rename "match_refs()" to "match_push_refs()"
      Allow git merge ":/<pattern>"
      ls-remote: a lone "-h" is asking for help
      t0003: remove extra whitespaces
      parse-options: deprecate OPT_BOOLEAN
      archive.c: use OPT_BOOL()
      url.c: simplify is_url()
      grep: teach --untracked and --exclude-standard options
      Post 1.7.7 first wave
      Update draft release notes to 1.7.8
      refs.c: move dwim_ref()/dwim_log() from sha1_name.c
      Update draft release notes to 1.7.8
      bundle: allowing to read from an unseekable fd
      bundle: add parse_bundle_header() helper function
      Update draft release notes to 1.7.8
      t7800: avoid arithmetic expansion notation
      Update draft release notes to 1.7.8
      resolve_gitlink_packed_ref(): fix mismerge
      Update draft release notes to 1.7.8
      Makefile: ask "ls-files" to list source files if available
      libperl-git: refactor Git::config_*
      Update draft release notes to 1.7.8
      resolve_ref(): expose REF_ISBROKEN flag
      resolve_ref(): report breakage to the caller without warning
      Update draft release notes to 1.7.8
      builtin/grep: make lock/unlock into static inline functions
      builtin/grep: simplify lock_and_read_sha1_file()
      Update draft release notes to 1.7.8
      Update draft release notes to 1.7.8
      Git 1.7.8-rc0

Luke Diamand (1):
      git-p4: handle files with shell metacharacters

Lénaïc Huard (1):
      gitweb: provide a way to customize html headers

Matthieu Moy (6):
      git-remote-mediawiki: allow push to set MediaWiki metadata
      git-remote-mediawiki: trivial fixes
      git-remote-mediawiki: set 'basetimestamp' to let the wiki handle conflicts
      git-remote-mediawiki: obey advice.pushNonFastForward
      git-remote-mediawiki: allow a domain to be set for authentication
      git-remote-mediawiki: don't include HTTP login/password in author

Michael Haggerty (36):
      Extract a function clear_cached_refs()
      Access reference caches only through new function get_cached_refs()
      Change the signature of read_packed_refs()
      Allocate cached_refs objects dynamically
      Store the submodule name in struct cached_refs
      Retain caches of submodule refs
      get_sha1_hex(): do not read past a NUL character
      t1402: add some more tests
      git check-ref-format: add options --allow-onelevel and --refspec-pattern
      Change bad_ref_char() to return a boolean value
      Change check_ref_format() to take a flags argument
      Refactor check_refname_format()
      Do not allow ".lock" at the end of any refname component
      Make collapse_slashes() allocate memory for its result
      Inline function refname_format_print()
      Change check_refname_format() to reject unnormalized refnames
      resolve_ref(): explicitly fail if a symlink is not readable
      resolve_ref(): use prefixcmp()
      resolve_ref(): only follow a symlink that contains a valid, normalized refname
      resolve_ref(): turn buffer into a proper string as soon as possible
      resolve_ref(): extract a function get_packed_ref()
      resolve_ref(): do not follow incorrectly-formatted symbolic refs
      remote: use xstrdup() instead of strdup()
      remote: avoid passing NULL to read_ref()
      resolve_ref(): verify that the input refname has the right format
      resolve_ref(): emit warnings for improperly-formatted references
      resolve_ref(): also treat a too-long SHA1 as invalid
      resolve_ref(): expand documentation
      add_ref(): verify that the refname is formatted correctly
      invalidate_ref_cache(): rename function from invalidate_cached_refs()
      invalidate_ref_cache(): take the submodule as parameter
      invalidate_ref_cache(): expose this function in the refs API
      clear_ref_cache(): rename parameter
      clear_ref_cache(): extract two new functions
      write_ref_sha1(): only invalidate the loose ref cache
      clear_ref_cache(): inline function

Michael J Gruber (7):
      t6040: test branch -vv
      git-tag: introduce long forms for the options
      git-branch: introduce missing long forms for the options
      branch: introduce --list option
      branch: allow pattern arguments
      branch: -v does not automatically imply --list
      http: use hostname in credential description

Michael W. Olson (1):
      git-svn: Allow certain refs to be ignored

Michał Górny (1):
      for-each-ref: add split message parts to %(contents:*).

Nguyễn Thái Ngọc Duy (6):
      sparse checkout: show error messages when worktree shaping fails
      Add explanation why we do not allow to sparse checkout to empty working tree
      pack-protocol: document "ERR" line
      daemon: return "access denied" if a service is not allowed
      daemon: log errors if we could not use some sockets
      t5403: convert leading spaces to tabs

Pang Yan Han (1):
      receive-pack: don't pass non-existent refs to post-{receive,update} hooks

Pat Thoyts (6):
      git-gui: updated translator README for current procedures.
      Fix tooltip display with multiple monitors on windows.
      git-gui: drop the 'n' and 'Shift-n' bindings from the last patch.
      mergetools: use the correct tool for Beyond Compare 3 on Windows
      mingw: ensure sockets are initialized before calling gethostname
      t9901: fix line-ending dependency on windows

Pete Wyckoff (5):
      git-p4 tests: refactor and cleanup
      git-p4: handle utf16 filetype properly
      git-p4: recognize all p4 filetypes
      git-p4: stop ignoring apple filetype
      git-p4: keyword flattening fixes

Peter Oberndorfer (1):
      "rebase -i": support special-purpose editor to edit insn sheet

Phil Hord (3):
      Learn to handle gitfiles in enter_repo
      Teach transport about the gitfile mechanism
      Add test showing git-fetch groks gitfiles

Ramkumar Ramachandra (18):
      advice: Introduce error_resolve_conflict
      config: Introduce functions to write non-standard file
      revert: Simplify and inline add_message_to_msg
      revert: Don't check lone argument in get_encoding
      revert: Rename no_replay to record_origin
      revert: Eliminate global "commit" variable
      revert: Introduce struct to keep command-line options
      revert: Separate cmdline parsing from functional code
      revert: Don't create invalid replay_opts in parse_args
      revert: Save data for continuing after conflict resolution
      revert: Save command-line options for continuing operation
      revert: Make pick_commits functionally act on a commit list
      revert: Introduce --reset to remove sequencer state
      reset: Make reset remove the sequencer state
      revert: Remove sequencer state when no commits are pending
      revert: Don't implicitly stomp pending sequencer operation
      revert: Introduce --continue to continue the operation
      revert: Propagate errors upwards from do_pick_commit

Ramsay Jones (5):
      Makefile: Make dependency directory creation less noisy
      sparse: Fix an "Using plain integer as NULL pointer" warning
      obstack.c: Fix some sparse warnings
      Fix some "variable might be used uninitialized" warnings
      gitweb/Makefile: Remove static/gitweb.js in the clean target

René Scharfe (23):
      parseopt: add OPT_NOOP_NOARG
      revert: use OPT_NOOP_NOARG
      apply: use OPT_NOOP_NOARG
      checkout: check for "Previous HEAD" notice in t2020
      revision: factor out add_pending_sha1
      checkout: use add_pending_{object,sha1} in orphan check
      revision: add leak_pending flag
      bisect: use leak_pending flag
      bundle: use leak_pending flag
      checkout: use leak_pending flag
      commit: factor out clear_commit_marks_for_object_array
      test-ctype: macrofy
      test-ctype: add test for is_pathspec_magic
      name-rev: split usage string
      pickaxe: plug diff filespec leak with empty needle
      pickaxe: plug regex leak
      pickaxe: plug regex/kws leak
      pickaxe: factor out has_changes
      pickaxe: pass diff_options to contains and has_changes
      pickaxe: give diff_grep the same signature as has_changes
      pickaxe: factor out pickaxe
      xdiff: factor out get_func_line()
      diff: add option to show whole functions as context

SZEDER Gábor (2):
      completion: unite --reuse-message and --reedit-message for 'notes'
      completion: unite --format and --pretty for 'log' and 'show'

Sebastian Schuberth (2):
      git-svn: On MSYS, escape and quote SVN_SSH also if set by the user
      inet_ntop.c: Work around GCC 4.6's detection of uninitialized variables

Sitaram Chamarty (1):
      git-difftool: allow skipping file by typing 'n' at prompt

Stefan Naewe (1):
      completion: fix issue with process substitution not working on Git for Windows

Tay Ray Chuan (3):
      fetch: plug two leaks on error exit in store_updated_refs
      submodule: whitespace fix
      submodule::module_clone(): silence die() message from module_name()

Teemu Matilainen (3):
      completion: unite --reuse-message and --reedit-message handling
      completion: commit --fixup and --squash
      completion: push --set-upstream

Zbigniew Jędrzejewski-Szmek (1):
      send-email: auth plain/login fix


Version v1.7.7.7; changes since v1.7.7.6:
-----------------------------------------

Jeff King (1):
      imap-send: remove dead code

Jonathan Nieder (1):
      bundle: remove stray single-quote from error message

Junio C Hamano (2):
      Git 1.7.6.6
      Git 1.7.7.7

Thomas Rast (1):
      Document the --histogram diff option


Version v1.7.7.6; changes since v1.7.7.5:
-----------------------------------------

Clemens Buchacher (1):
      Documentation: read-tree --prefix works with existing subtrees

Jack Nagel (1):
      Add MYMETA.json to perl/.gitignore

Jeff King (4):
      attr: don't confuse prefixes with leading directories
      attr: drop misguided defensive coding
      attr: fix leak in free_attr_elem
      thin-pack: try harder to use preferred base objects as base

Jens Lehmann (1):
      docs: describe behavior of relative submodule URLs

Junio C Hamano (8):
      attr.c: make bootstrap_attr_stack() leave early
      attr.c: clarify the logic to pop attr_stack
      Documentation: rerere's rr-cache auto-creation and rerere.enabled
      Prepare for 1.7.6.6
      Prepare for 1.7.7.6
      Update draft release notes to 1.7.6.6
      Update draft release notes to 1.7.7.6
      Git 1.7.7.6

Nguyễn Thái Ngọc Duy (2):
      t2203: fix wrong commit command
      diff-index: enable recursive pathspec matching in unpack_trees

Thomas Rast (1):
      Documentation: rerere.enabled is the primary way to configure rerere


Version v1.7.7.5; changes since v1.7.7.4:
-----------------------------------------

Erik Faye-Lund (1):
      mingw: give waitpid the correct signature

Jeff King (3):
      stripspace: fix outdated comment
      fetch: create status table using strbuf
      blame: don't overflow time buffer

Junio C Hamano (2):
      Git 1.7.6.5
      Git 1.7.7.5

Martin von Zweigbergk (1):
      am: don't persist keepcr flag

Michael Haggerty (1):
      git symbolic-ref: documentation fix

Nguyễn Thái Ngọc Duy (1):
      checkout,merge: loosen overwriting untracked file check based on info/exclude

Sebastian Morr (1):
      Add MYMETA.yml to perl/.gitignore

Thomas Hochstein (1):
      documentation fix: git difftool uses diff tools, not merge tools.

Ævar Arnfjörð Bjarmason (2):
      apply: get rid of useless x < 0 comparison on a size_t type
      cast variable in call to free() in builtin/diff.c and submodule.c


Version v1.7.7.4; changes since v1.7.7.3:
-----------------------------------------

Jonathan Nieder (2):
      notes merge: eliminate OUTPUT macro
      Makefile: add missing header file dependencies

Junio C Hamano (2):
      name-rev --all: do not even attempt to describe non-commit object
      Git 1.7.7.4

Marc-André Lureau (1):
      mailmap: xcalloc mailmap_info


Version v1.7.7.3; changes since v1.7.7.2:
-----------------------------------------

Dan McGee (4):
      pack-objects: mark add_to_write_order() as inline
      pack-objects: use unsigned int for counter and offset values
      pack-objects: rewrite add_descendants_to_write_order() iteratively
      pack-objects: don't traverse objects unnecessarily

Jeff King (1):
      docs: don't mention --quiet or --exit-code in git-log(1)

Julien Muchembled (1):
      gitweb: fix regression when filtering out forks

Junio C Hamano (3):
      branch -m/-M: remove undocumented RENAMED-REF
      docs: Update install-doc-quick
      Git 1.7.7.3


Version v1.7.7.2; changes since v1.7.7.1:
-----------------------------------------

Brandon Casey (4):
      attr.c: avoid inappropriate access to strbuf "buf" member
      cleanup: use internal memory allocation wrapper functions everywhere
      builtin/mv.c: plug miniscule memory leak
      attr.c: respect core.ignorecase when matching attribute patterns

Carlos Martín Nieto (6):
      Remove 'working copy' from the documentation and C code
      fetch: free all the additional refspecs
      t5510: add tests for fetch --prune
      remote: separate out the remote_find_tracking logic into query_refspecs
      fetch: honor the user-provided refspecs when pruning refs
      fetch: treat --tags like refs/tags/*:refs/tags/* when pruning

Christian Couder (1):
      bisect: fix exiting when checkout failed in bisect_start()

Haitao Li (1):
      date.c: Support iso8601 timezone formats

Jakub Narębski (1):
      gitweb: Strip non-printable characters from syntax highlighter output

Jeff King (8):
      add sha1_array API docs
      quote.h: fix bogus comment
      refactor argv_array into generic code
      quote: provide sq_dequote_to_argv_array
      bisect: use argv_array API
      checkout: use argv_array API
      run_hook: use argv_array API
      pull,rebase: handle GIT_WORK_TREE better

Jim Meyering (1):
      make the sample pre-commit hook script reject names with newlines, too

Jonathan Nieder (2):
      http: remove extra newline in error message
      http: avoid empty error messages for some curl errors

Jonathon Mah (1):
      mergetool: Use args as pathspec to unmerged files

Junio C Hamano (5):
      refactor run_receive_hook()
      diff: teach --stat/--numstat to honor -U$num
      mergetool: no longer need to save standard input
      attr: read core.attributesfile from git_default_core_config
      Git 1.7.7.2

Martin von Zweigbergk (4):
      remote: write correct fetch spec when renaming remote 'remote'
      remote: "rename o foo" should not rename ref "origin/bar"
      remote rename: warn when refspec was not updated
      remote: only update remote-tracking branch if updating refspec

Matthew Daley (1):
      send-email: Honour SMTP domain when using TLS

Michael Haggerty (1):
      notes_merge_commit(): do not pass temporary buffer to other function

Michael J Gruber (3):
      unpack-trees: print "Aborting" to stderr
      git-read-tree.txt: language and typography fixes
      git-read-tree.txt: correct sparse-checkout and skip-worktree description

Nguyễn Thái Ngọc Duy (2):
      git-read-tree.txt: update sparse checkout examples
      Reindent closing bracket using tab instead of spaces

Pat Thoyts (1):
      t7511: avoid use of reserved filename on Windows.

Peter Stuge (1):
      gitweb: Fix links to lines in blobs when javascript-actions are enabled

Ramsay Jones (1):
      t9159-*.sh: skip for mergeinfo test for svn <= 1.4

René Scharfe (1):
      read-cache.c: fix index memory allocation

Richard Hartmann (1):
      clone: Quote user supplied path in a single quote pair

Shawn O. Pearce (1):
      remote-curl: Fix warning after HTTP failure

Stefan Naewe (1):
      Documentation/git-update-index: refer to 'ls-files'

Thomas Rast (1):
      Documentation: basic configuration of notes.rewriteRef


Version v1.7.7.1; changes since v1.7.7:
---------------------------------------

Brad King (1):
      rev-list: Demonstrate breakage with --ancestry-path --all

Brandon Casey (1):
      strbuf.c: remove unnecessary strbuf_grow() from strbuf_getwholeline()

Ilari Liusvaara (1):
      Support ERR in remote archive like in fetch/push

Jay Soffian (1):
      merge-one-file: fix "expr: non-numeric argument"

Jeff King (2):
      fetch: avoid quadratic loop checking for updated submodules
      filter-branch: use require_clean_work_tree

Jim Meyering (1):
      fix "git apply --index ..." not to deref NULL

Jonathan Nieder (2):
      Makefile: do not set setgid bit on directories on GNU/kFreeBSD
      RelNotes/1.7.7.1: setgid bit patch is about fixing "git init" via Makefile setting

Junio C Hamano (14):
      revision: keep track of the end-user input from the command line
      revision: do not include sibling history in --ancestry-path output
      rebase -i: notice and warn if "exec $cmd" modifies the index or the working tree
      traverse_trees(): allow pruning with pathspec
      unpack-trees: allow pruning with pathspec
      diff-index: pass pathspec down to unpack-trees machinery
      fsck: do not abort upon finding an empty blob
      Teach progress eye-candy to fetch_refs_from_bundle()
      apply --whitespace=error: correctly report new blank lines at end
      checkout $tree $path: do not clobber local changes in $path not in $tree
      diff: resurrect XDF_NEED_MINIMAL with --minimal
      Prepare for 1.7.7.1
      Almost ready for 1.7.7.1
      Git 1.7.7.1

Matthieu Moy (2):
      rebase -i: clean error message for --continue after failed exec
      config: display key_delim for config --bool --get-regexp

Michael Schubert (1):
      patch-id.c: use strbuf instead of a fixed buffer

Nguyễn Thái Ngọc Duy (4):
      merge: keep stash[] a local variable
      merge: use return value of resolve_ref() to determine if HEAD is invalid
      merge: remove global variable head[]
      Accept tags in HEAD or MERGE_HEAD

Nicolas Morey-Chaisemartin (1):
      grep: Fix race condition in delta_base_cache

René Scharfe (2):
      Revert removal of multi-match discard heuristic in 27af01
      t1304: fall back to $USER if $LOGNAME is not defined

Thomas Rast (2):
      Symlink mergetools scriptlets into valgrind wrappers
      t6019: avoid refname collision on case-insensitive systems


Version v1.7.7; changes since v1.7.7-rc3:
-----------------------------------------

Gerrit Pape (2):
      contrib/hooks: adapt comment about Debian install location for contrib hooks
      templates/hooks--*: remove sample hooks without any functionality

Junio C Hamano (2):
      Documentation/gitnamespaces.txt: cater to older asciidoc
      Git 1.7.7


Version v1.7.7-rc3; changes since v1.7.7-rc2:
---------------------------------------------

Allan Caffee (1):
      describe: Refresh the index when run with --dirty

Jay Soffian (1):
      git-mergetool: check return value from read

Jeff King (1):
      t4014: clean up format.thread config after each test

Junio C Hamano (3):
      Git 1.7.6.4
      merge-recursive: Do not look at working tree during a virtual ancestor merge
      Git 1.7.7-rc3


Version v1.7.7-rc2; changes since v1.7.7-rc1:
---------------------------------------------

Bryan Jacobs (1):
      git-svn: teach git-svn to populate svn:mergeinfo

Frédéric Heitzmann (1):
      Disambiguate duplicate t9160* tests

Junio C Hamano (2):
      branch --set-upstream: regression fix
      Git 1.7.7-rc2

Pang Yan Han (1):
      format-patch: ignore ui.color


Version v1.7.7-rc1; changes since v1.7.7-rc0:
---------------------------------------------

Ben Walton (2):
      Documentation: Grammar correction, wording fixes and cleanup
      Mark http-fetch without -a as deprecated

Brandon Casey (1):
      t6030: use $SHELL_PATH to invoke user's preferred shell instead of bare sh

Brian Gernhardt (1):
      t5540-http-test: shorten grep pattern

Bryan Jacobs (1):
      git-svn: Teach dcommit --mergeinfo to handle multiple lines

Conrad Irwin (2):
      Prevent force-updating of the current branch
      Show interpreted branch name in error messages

Dmitry Ivankov (11):
      fast-import: add input format tests
      fast-import: don't fail on omitted committer name
      fast-import: check committer name more strictly
      fsck: add a few committer name tests
      fsck: improve committer/author check
      fast-import: add a test for tree delta base corruption
      fast-import: prevent producing bad delta
      fast-import: count and report # of calls to diff_delta in stats
      fast-import: treat cat-blob as a delta base hint for next blob
      fast-import: add tests for tagging blobs
      fast-import: allow to tag newly created objects

Elijah Newren (55):
      t6042: Add a testcase where git deletes an untracked file
      t6042: Add failing testcase for rename/modify/add-source conflict
      t6042: Add a pair of cases where undetected renames cause issues
      t6042: Add a testcase where undetected rename causes silent file deletion
      t6042: Add tests for content issues with modify/rename/directory conflicts
      t6042: Ensure rename/rename conflicts leave index and workdir in sane state
      t6042: Add failing testcases for rename/rename/add-{source,dest} conflicts
      t6036: Add differently resolved modify/delete conflict in criss-cross test
      t6036: criss-cross with weird content can fool git into clean merge
      t6036: tests for criss-cross merges with various directory/file conflicts
      t6036: criss-cross w/ rename/rename(1to2)/modify+rename/rename(2to1)/modify
      t6036: criss-cross + rename/rename(1to2)/add-source + modify/modify
      t6022: Remove unnecessary untracked files to make test cleaner
      t6022: New tests checking for unnecessary updates of files
      t6022: Add testcase for merging a renamed file with a simple change
      merge-recursive: Make BUG message more legible by adding a newline
      merge-recursive: Correct a comment
      merge-recursive: Mark some diff_filespec struct arguments const
      merge-recursive: Consolidate different update_stages functions
      merge-recursive: Remember to free generated unique path names
      merge-recursive: Avoid working directory changes during recursive case
      merge-recursive: Fix recursive case with D/F conflict via add/add conflict
      merge-recursive: Fix sorting order and directory change assumptions
      merge-recursive: Fix code checking for D/F conflicts still being present
      merge-recursive: Save D/F conflict filenames instead of unlinking them
      merge-recursive: Split was_tracked() out of would_lose_untracked()
      merge-recursive: Allow make_room_for_path() to remove D/F entries
      merge-recursive: Split update_stages_and_entry; only update stages at end
      merge-recursive: Fix deletion of untracked file in rename/delete conflicts
      merge-recursive: Make dead code for rename/rename(2to1) conflicts undead
      merge-recursive: Add comments about handling rename/add-source cases
      merge-recursive: Improve handling of rename target vs. directory addition
      merge-recursive: Consolidate process_entry() and process_df_entry()
      merge-recursive: Cleanup and consolidation of rename_conflict_info
      merge-recursive: Provide more info in conflict markers with file renames
      merge-recursive: When we detect we can skip an update, actually skip it
      merge-recursive: Fix modify/delete resolution in the recursive case
      merge-recursive: Introduce a merge_file convenience function
      merge-recursive: Fix rename/rename(1to2) resolution for virtual merge base
      merge-recursive: Small cleanups for conflict_rename_rename_1to2
      merge-recursive: Defer rename/rename(2to1) handling until process_entry
      merge-recursive: Record more data needed for merging with dual renames
      merge-recursive: Create function for merging with branchname:file markers
      merge-recursive: Consider modifications in rename/rename(2to1) conflicts
      merge-recursive: Make modify/delete handling code reusable
      merge-recursive: Have conflict_rename_delete reuse modify/delete code
      merge-recursive: add handling for rename/rename/add-dest/add-dest
      merge-recursive: Fix working copy handling for rename/rename/add/add
      t6022: Add testcase for spurious "refusing to lose untracked" messages
      merge-recursive: Fix spurious 'refusing to lose untracked file...' messages
      t6022: Additional tests checking for unnecessary updates of files
      merge-recursive: Avoid unnecessary file rewrites
      t6036: criss-cross + rename/rename(1to2)/add-dest + simple modify
      merge-recursive: Fix virtual merge base for rename/rename(1to2)/add-dest
      merge-recursive: Don't re-sort a list whose order we depend upon

Eric Wong (1):
      git-svn: fix fetch with moved path when using rewriteRoot

Fredrik Gustafsson (1):
      push: Don't push a repository with unpushed submodules

Fredrik Kuivinen (6):
      Add obstack.[ch] from EGLIBC 2.10
      Add string search routines from GNU grep
      Adapt the kwset code to Git
      Use kwset in pickaxe
      Use kwset in grep
      obstack: Fix portability issues

Giuseppe Bilotta (2):
      am: format is in $patch_format, not parse_patch
      am: fix stgit patch mangling

Jeff King (12):
      t3030: fix accidental success in symlink rename
      t7006: modernize calls to unset
      test-lib: add helper functions for config
      t7006: use test_config helpers
      setup_pager: set GIT_PAGER_IN_USE
      diff: refactor COLOR_DIFF from a flag into an int
      git_config_colorbool: refactor stdout_is_tty handling
      color: delay auto-color decision until point of use
      config: refactor get_colorbool function
      diff: don't load color config in plumbing
      want_color: automatically fallback to color.ui
      support pager.* for external commands

Jens Lehmann (1):
      fetch: skip on-demand checking when no submodules are configured

Johannes Sixt (2):
      string-list: Add API to remove an item from an unsorted list
      t3005: do not assume a particular order of stdout and stderr of git-ls-files

Jon Seymour (1):
      bisect: take advantage of gettextln, eval_gettextln.

Jonathan Nieder (1):
      Documentation/remote-helpers: explain capabilities first

Junio C Hamano (14):
      combine-diff: support format_callback
      read_gitfile_gently(): rename misnamed function to read_gitfile()
      clone: allow more than one --reference
      clone: clone from a repository with relative alternates
      Update draft release notes to 1.7.7
      Documentation: clarify "git clean -e <pattern>"
      Update draft release notes to 1.7.7
      Revert "Merge branch 'cb/maint-quiet-push' into maint"
      Git 1.7.6.2
      Update draft release notes to 1.7.7
      Minor update to how-to maintain git
      Prepare for 1.7.6.3 maintenance release
      Git 1.7.6.3
      Git 1.7.7-rc1

Matthieu Moy (2):
      Documentation/git-remote-helpers: explain how import works with multiple refs
      (short) documentation for the testgit remote helper

Michael Haggerty (9):
      Add a file comment
      Document struct match_attr
      Increment num_attr in parse_attr_line(), not parse_attr()
      Change parse_attr() to take a pointer to struct attr_state
      Determine the start of the states outside of the pass loop
      Change while loop into for loop
      Unroll the loop over passes
      check-ref-format --print: Normalize refnames that start with slashes
      Forbid DEL characters in reference names

Michael J Gruber (3):
      git-notes.txt: clarify -C vs. copy and -F
      log: Do not decorate replacements with --no-replace-objects
      RelNotes/1.7.7: minor fixes

Michael Stapelberg (1):
      git-daemon.txt: specify --timeout in seconds

Namhyung Kim (1):
      branch -v: honor core.abbrev

Nguyễn Thái Ngọc Duy (6):
      decoration: do not mis-decorate refs with same prefix
      Add for_each_commit_graft() to iterate all grafts
      Move write_shallow_commits to fetch-pack.c
      log: decorate grafted commits with "grafted"
      log: decorate "replaced" on to replaced commits
      clone: allow to clone from .git file

Pete Wyckoff (1):
      git-p4: simple branch tests edits

Ray Chen (1):
      git-svn: New flag to emulate empty directories

Sverre Rabbelier (1):
      SubmittingPathces: remove Cogito reference

Tay Ray Chuan (2):
      xdiff/xprepare: improve O(n*m) performance in xdl_cleanup_records()
      xdiff/xprepare: initialise xdlclassifier_t cf in xdl_prepare_env()

Thomas Rast (8):
      Use memmove in ident_to_git
      t4014: check for empty files from git format-patch --stdout
      t4014: invoke format-patch with --stdout where intended
      t4014: "no-add-headers" is actually called "no-add-header"
      Document negated forms of format-patch --to --cc --add-headers
      strbuf_grow(): maintain nul-termination even for new buffer
      Documentation: clarify effects of -- <path> arguments
      t3903: fix misquoted rev-parse invocation

Vitor Antunes (9):
      git-p4: Allow setting rename/copy detection threshold
      git-p4: Add description of rename/copy detection options
      git-p4: Add test case for rename detection
      git-p4: Add test case for copy detection
      git-p4: Process detectCopiesHarder with --bool
      git-p4: Correct branch base depot path detection
      git-p4: Allow filtering Perforce branches by user
      git-p4: Allow branch definition with git config
      git-p4: Add simple test case for branch import


Version v1.7.7-rc0; changes since v1.7.6.6:
-------------------------------------------

Allan Caffee (1):
      describe: Refresh the index when run with --dirty

Andi Kleen (2):
      Add profile feedback build to git
      Add explanation of the profile feedback build to the README

Clemens Buchacher (1):
      commit: allow partial commits with relative paths

David Aguilar (8):
      setup: Provide GIT_PREFIX to built-ins
      git: Remove handling for GIT_PREFIX
      git-mergetool--lib: Make vimdiff retain the current directory
      t/t7503-pre-commit-hook.sh: Add GIT_PREFIX tests
      difftool--helper: Make style consistent with git
      mergetool--lib: Make style consistent with git
      mergetool--lib: Refactor tools into separate files
      mergetools/meld: Use '--output' when available

David Barr (1):
      am: ignore leading whitespace before patch

David Caldwell (1):
      stash: Add --include-untracked option to stash and remove all untracked files

Dmitry Ivankov (4):
      remote-helpers: export GIT_DIR variable to helpers
      parse-options: export opterr, optbug
      Reduce parse-options.o dependencies
      doc/fast-import: document feature import-marks-if-exists

Duncan Brown (1):
      http: pass http.cookiefile using CURLOPT_COOKIEFILE

Erik Faye-Lund (2):
      verify_path: consider dos drive prefix
      connect: only log if all attempts failed (ipv4)

Fredrik Gustafsson (2):
      git-sh-setup: add die_with_status
      submodule update: continue when a checkout fails

Jakub Narębski (14):
      gitweb.js: No need for inProgress in blame_incremental.js
      gitweb.js: No need for loop in blame_incremental's handleResponse()
      gitweb.js: use setTimeout rather than setInterval in blame_incremental.js
      gitweb: Check permissions first in git_search
      gitweb: Split body of git_search into subroutines
      gitweb: Clean up code in git_search_* subroutines
      gitweb: Make git_search_* subroutines render whole pages
      gitweb: Refactor git_header_html
      git-instaweb: Extract configuring web server into configure_httpd
      git-instaweb: Use $conf, not $fqgitdir/gitweb/httpd.conf
      git-instaweb: Move all actions at the end of script
      git-instaweb: Check that correct config file exists for (re)start
      gitweb: Introduce common system-wide settings for convenience
      gitweb: Git config keys are case insensitive, make config search too

Jeff King (28):
      t: add tests for cloning remotes with detached HEAD
      consider only branches in guess_remote_head
      make copy_ref globally available
      clone: always fetch remote HEAD
      limit "contains" traversals based on commit timestamp
      default core.clockskew variable to one day
      archive: reorder option parsing and config reading
      archive-tar: don't reload default config options
      archive: refactor list of archive formats
      archive: pass archiver struct to write_archive callback
      archive: move file extension format-guessing lower
      archive: refactor file extension format-guessing
      archive: implement configurable tar filters
      archive: provide builtin .tar.gz filter
      upload-archive: allow user to turn off filters
      parse-options: add OPT_STRING_LIST helper
      remote: use new OPT_STRING_LIST
      config: make git_config_parse_parameter a public function
      clone: accept config options on the command line
      git skew: a tool to find how big a clock skew exists in the history
      transport-helper: fix minor leak in push_refs_with_export
      t5800: factor out some ref tests
      t5800: document some non-functional parts of remote helpers
      git-remote-testgit: import non-HEAD refs
      transport-helper: don't feed bogus refs to export push
      git_remote_helpers: push all refs during a non-local export
      streaming: free git_istream upon closing
      docs: put listed example commands in backticks

Jens Lehmann (1):
      Documentation/submodule: add command references and update options

Jim Meyering (1):
      sha1_file: use the correct type (ssize_t, not size_t) for read-style function

Johannes Sixt (7):
      sh-i18n--envsubst: do not crash when no arguments are given
      mingw.c: move definition of mingw_getenv down
      Windows: teach getenv to do a case-sensitive search
      rebase: do not print lots of usage hints after an obvious error message
      Make test number unique
      Skip archive --remote tests on Windows
      t3900: do not reference numbered arguments from the test script

Jon Jensen (1):
      Add option hooks.diffopts to customize change summary in post-receive-email

Jon Seymour (16):
      bisect: move argument parsing before state modification.
      bisect: use && to connect statements that are deferred with eval.
      bisect: add tests to document expected behaviour in presence of broken trees.
      bisect: introduce support for --no-checkout option.
      bisect: introduce --no-checkout support into porcelain.
      bisect: add tests for the --no-checkout option.
      bisect: add documentation for --no-checkout option.
      bisect: cleanup whitespace errors in git-bisect.sh.
      bisect: replace "; then" with "\n<tab>*then"
      misc-sh: fix up whitespace in some other .sh files.
      gettext: add gettextln, eval_gettextln to encode common idiom
      git-am: take advantage of gettextln and eval_gettextln.
      pull: take advantage of eval_gettextln
      stash: take advantage of eval_gettextln
      submodule: take advantage of gettextln and eval_gettextln.
      bisect: add support for bisecting bare repositories

Jonathan Nieder (4):
      test: simplify return value of test_run_
      test: cope better with use of return for errors
      revert: plug memory leak in "cherry-pick root commit" codepath
      merge-recursive: take advantage of hardcoded empty tree

Josh Triplett (5):
      Fix prefix handling in ref iteration functions
      ref namespaces: infrastructure
      ref namespaces: Support remote repositories via upload-pack and receive-pack
      ref namespaces: documentation
      ref namespaces: tests

Junio C Hamano (52):
      index-pack: group the delta-base array entries also by type
      write_idx_file: introduce a struct to hold idx customization options
      index-pack: --verify
      write_idx_file: need_large_offset() helper function
      index-pack --verify: read anomalous offsets from v2 idx file
      packed_object_info_detail(): do not return a string
      sha1_object_info_extended(): expose a bit more info
      sha1_object_info_extended(): hint about objects in delta-base cache
      unpack_object_header(): make it public
      write_entry(): separate two helper functions out
      streaming: a new API to read from the object store
      streaming_write_entry(): use streaming API in write_entry()
      convert: CRLF_INPUT is a no-op in the output codepath
      streaming_write_entry(): support files with holes
      streaming: read non-delta incrementally from a pack
      sha1_file.c: expose helpers to read loose objects
      streaming: read loose objects incrementally
      checkout: make advice when reattaching the HEAD less loud
      merge: reword the final message
      convert.h: move declarations for conversion from cache.h
      Add streaming filter API
      stream filter: add "no more input" to the filters
      Add LF-to-CRLF streaming conversion
      streaming filter: ident filter
      streaming: filter cascading
      t0021: test application of both crlf and ident
      diff --stat-count: finishing touches
      index-pack: a miniscule refactor
      index-pack: start learning to emulate "verify-pack -v"
      index-pack: show histogram when emulating "verify-pack -v"
      verify-pack: use index-pack --verify
      verify_path(): simplify check at the directory boundary
      git-submodule.sh: clarify the "should we die now" logic
      Add option to disable NORETURN
      Start 1.7.7 cycle
      core: log offset pack data accesses happened
      pack-objects: optimize "recency order"
      diff-lib: simplify do_diff_cache()
      diff-lib: refactor run_diff_index() and do_diff_cache()
      Revert clock-skew based attempt to optimize tag --contains traversal
      Update draft release notes to 1.7.7
      Update draft release notes to 1.7.7
      bisect: further style nitpicks
      filter-branch.sh: de-dent usage string
      Update draft release notes to 1.7.7
      test: consolidate definition of $LF
      Sync with "maint"
      Update draft release notes to 1.7.7
      Update draft release notes to 1.7.7
      commit: reduce use of redundant global variables
      Update draft release notes to 1.7.7
      Git 1.7.7-rc0

Ludwig Nussel (1):
      gitweb: allow space as delimiter in mime.types

Markus Duft (1):
      Update the Interix default build configuration.

Michael Haggerty (29):
      doc: Add a link from gitattributes(5) to git-check-attr(1)
      doc: Correct git_attr() calls in example code
      Remove anachronism from comment
      Disallow the empty string as an attribute name
      git-check-attr: Add missing "&&"
      git-check-attr: Add tests of command-line parsing
      Provide access to the name attribute of git_attr
      git-check-attr: Use git_attr_name()
      Teach prepare_attr_stack() to figure out dirlen itself
      Extract a function collect_all_attrs()
      Remove redundant call to bootstrap_attr_stack()
      Remove redundant check
      Allow querying all attributes on a file
      git-check-attr: Extract a function output_attr()
      git-check-attr: Introduce a new variable
      git-check-attr: Extract a function error_with_usage()
      git-check-attr: Handle each error separately
      git-check-attr: Process command-line args more systematically
      git-check-attr: Error out if no pathnames are specified
      git-check-attr: Add an --all option to show all attributes
      git-check-attr: Drive two tests using the same raw data
      git-check-attr: Fix command-line handling to match docs
      Rename git_checkattr() to git_check_attr()
      git-check-attr: test that no output is written to stderr
      git-check-attr: Demonstrate problems with unnormalized paths
      git-check-attr: Demonstrate problems with relative paths
      git-check-attr: Normalize paths
      test-path-utils: Add subcommand "absolute_path"
      test-path-utils: Add subcommand "prefix_path"

Michael J Gruber (3):
      diff.c: omit hidden entries from namelen calculation with --stat
      diff: introduce --stat-lines to limit the stat lines
      diff-options.txt: describe --stat-{width,name-width,count}

Pete Wyckoff (4):
      git-p4: use test_when_finished in tests
      git-p4: add missing && in test
      git-p4: one test missing config git-p4.skipSubmitEditCheck
      git-p4: commit time should be most recent p4 change time

Ramsay Jones (3):
      help.c: Fix detection of custom merge strategy on cygwin
      t1301-*.sh: Fix the 'forced modes' test on cygwin
      config.c: Make git_config() work correctly when called recursively

René Scharfe (6):
      t0021-conversion.sh: fix NoTerminatingSymbolAtEOF test
      grep: fix coloring of hunk marks between files
      grep: add --break
      grep: add --heading
      grep: add option to show whole function as context
      grep: long context options

Roberto Tyley (1):
      Tolerate zlib deflation with window size < 32Kb

Sverre Rabbelier (14):
      t5800: use skip_all instead of prereq
      remote-curl: accept empty line as terminator
      git-remote-testgit: only push for non-local repositories
      git-remote-testgit: fix error handling
      fast-import: introduce 'done' command
      fast-export: support done feature
      transport-helper: factor out push_update_refs_status
      transport-helper: check status code of finish_command
      transport-helper: use the new done feature where possible
      transport-helper: update ref status after push with export
      transport-helper: change import semantics
      transport-helper: Use capname for refspec capability too
      transport-helper: implement marks location as capability
      transport-helper: die early on encountering deleted refs

Tay Ray Chuan (13):
      xdiff/xprepare: use memset()
      xdiff/xprepare: refactor abort cleanups
      xdiff/xpatience: factor out fall-back-diff function
      t4033-diff-patience: factor out tests
      teach --histogram to diff
      xdiff/xprepare: skip classification
      xdiff/xprepare: use a smaller sample size for histogram diff
      xdiff: do away with xdl_mmfile_next()
      http.c: fix an invalid free()
      Makefile: some changes for http-related flag documentation
      xdiff/xhistogram: rework handling of recursed results
      xdiff/xhistogram: rely on xdl_trim_ends()
      xdiff/xhistogram: drop need for additional variable

Theo Niessink (3):
      A Windows path starting with a backslash is absolute
      real_path: do not assume '/' is the path seperator
      verify_dotfile(): do not assume '/' is the path seperator

Thomas Cort (1):
      Makefile: add Minix configuration options.

maximilian attems (2):
      am: pass exclude down to apply
      am: Document new --exclude=<path> option

Ævar Arnfjörð Bjarmason (48):
      i18n: git-am add git-sh-i18n
      i18n: git-am one-line gettext $msg; echo
      i18n: git-am multi-line getttext $msg; echo
      i18n: git-am eval_gettext messages
      i18n: git-am gettext + gettext to stderr message
      i18n: git-am die messages
      i18n: git-am cannot_fallback messages
      i18n: git-am clean_abort messages
      i18n: git-am "Apply?" message
      i18n: git-am "Falling back" say message
      i18n: git-am core say messages
      i18n: git-am printf(1) message to eval_gettext
      i18n: git-pull add git-sh-i18n
      i18n: git-pull die messages
      i18n: git-pull eval_gettext + die message
      i18n: git-pull eval_gettext + warning message
      i18n: git-submodule add git-sh-i18n
      i18n: git-submodule echo + eval_gettext messages
      i18n: git-submodule say + eval_gettext messages
      i18n: git-submodule die + eval_gettext messages
      i18n: git-submodule $update_module say + die messages
      i18n: git-submodule "cached cannot be used" message
      i18n: git-submodule "Submodule change[...]" messages
      i18n: git-submodule $errmsg messages
      i18n: git-submodule "Entering [...]" message
      i18n: git-submodule "[...] path is ignored" message
      i18n: git-submodule "path not initialized" message
      i18n: git-submodule "blob" and "submodule" messages
      i18n: git-stash add git-sh-i18n
      i18n: git-stash echo + gettext message
      i18n: git-stash say + gettext messages
      i18n: git-stash die + gettext messages
      i18n: git-stash die + eval_gettext messages
      i18n: git-stash die + eval_gettext $* messages
      i18n: git-stash die + eval_gettext $1 messages
      i18n: git-stash "unknown option" message
      i18n: git-stash drop_stash say/die messages
      i18n: git-bisect add git-sh-i18n
      i18n: git-bisect gettext + echo message
      i18n: git-bisect echo + gettext messages
      i18n: git-bisect echo + eval_gettext message
      i18n: git-bisect die + gettext messages
      i18n: git-bisect die + eval_gettext messages
      i18n: git-bisect bisect_run + $@ messages
      i18n: git-bisect bisect_reset + $1 messages
      i18n: git-bisect bisect_replay + $1 messages
      i18n: git-bisect [Y/n] messages
      i18n: git-bisect bisect_next_check "You need to" message

张忠山 (1):
      gitweb: pass string after encoding in utf-8 to syntax highlighter


Version v1.7.6.6; changes since v1.7.6.5:
-----------------------------------------

Clemens Buchacher (1):
      Documentation: read-tree --prefix works with existing subtrees

Jack Nagel (1):
      Add MYMETA.json to perl/.gitignore

Jeff King (5):
      attr: don't confuse prefixes with leading directories
      attr: drop misguided defensive coding
      attr: fix leak in free_attr_elem
      thin-pack: try harder to use preferred base objects as base
      imap-send: remove dead code

Junio C Hamano (6):
      attr.c: make bootstrap_attr_stack() leave early
      attr.c: clarify the logic to pop attr_stack
      Documentation: rerere's rr-cache auto-creation and rerere.enabled
      Prepare for 1.7.6.6
      Update draft release notes to 1.7.6.6
      Git 1.7.6.6

Nguyễn Thái Ngọc Duy (1):
      t2203: fix wrong commit command

Thomas Rast (1):
      Documentation: rerere.enabled is the primary way to configure rerere


Version v1.7.6.5; changes since v1.7.6.4:
-----------------------------------------

Haitao Li (1):
      date.c: Support iso8601 timezone formats

Jeff King (3):
      stripspace: fix outdated comment
      fetch: create status table using strbuf
      blame: don't overflow time buffer

Jim Meyering (1):
      make the sample pre-commit hook script reject names with newlines, too

Jonathon Mah (1):
      mergetool: Use args as pathspec to unmerged files

Junio C Hamano (3):
      mergetool: no longer need to save standard input
      name-rev --all: do not even attempt to describe non-commit object
      Git 1.7.6.5

Marc-André Lureau (1):
      mailmap: xcalloc mailmap_info

Martin von Zweigbergk (4):
      remote: write correct fetch spec when renaming remote 'remote'
      remote: "rename o foo" should not rename ref "origin/bar"
      remote rename: warn when refspec was not updated
      remote: only update remote-tracking branch if updating refspec

Michael Haggerty (1):
      notes_merge_commit(): do not pass temporary buffer to other function

Michael J Gruber (3):
      unpack-trees: print "Aborting" to stderr
      git-read-tree.txt: language and typography fixes
      git-read-tree.txt: correct sparse-checkout and skip-worktree description

Nguyễn Thái Ngọc Duy (2):
      git-read-tree.txt: update sparse checkout examples
      Reindent closing bracket using tab instead of spaces

Peter Stuge (1):
      gitweb: Fix links to lines in blobs when javascript-actions are enabled

Ramsay Jones (1):
      t9159-*.sh: skip for mergeinfo test for svn <= 1.4

Sebastian Morr (1):
      Add MYMETA.yml to perl/.gitignore

Stefan Naewe (1):
      Documentation/git-update-index: refer to 'ls-files'

Thomas Rast (1):
      Documentation: basic configuration of notes.rewriteRef


Version v1.7.6.4; changes since v1.7.6.3:
-----------------------------------------

Allan Caffee (1):
      describe: Refresh the index when run with --dirty

Clemens Buchacher (1):
      ls-files: fix pathspec display on error

Giuseppe Bilotta (1):
      am: format is in $patch_format, not parse_patch

Jay Soffian (1):
      git-mergetool: check return value from read

Johannes Sixt (1):
      t3005: do not assume a particular order of stdout and stderr of git-ls-files

Junio C Hamano (4):
      read_gitfile_gently(): rename misnamed function to read_gitfile()
      clone: allow more than one --reference
      clone: clone from a repository with relative alternates
      Git 1.7.6.4

Michael Haggerty (2):
      check-ref-format --print: Normalize refnames that start with slashes
      Forbid DEL characters in reference names

Michael J Gruber (1):
      branch.c: use the parsed branch name

Nguyễn Thái Ngọc Duy (1):
      clone: allow to clone from .git file


Version v1.7.6.3; changes since v1.7.6.2:
-----------------------------------------

Dave Zarzycki (1):
      Do not log unless all connect() attempts fail

Jeff King (9):
      status: fix bug with missing --ignore files
      tag: speed up --contains calculation
      strbuf_split: add a max parameter
      fix "git -c" parsing of values with equals signs
      config: die on error in command-line config
      config: avoid segfault when parsing command-line config
      strbuf: allow strbuf_split to work on non-strbufs
      config: use strbuf_split_str instead of a temporary strbuf
      reset: give better reflog messages

Jens Lehmann (1):
      fetch: skip on-demand checking when no submodules are configured

Jonathan Nieder (2):
      Documentation: quote double-dash for AsciiDoc
      Documentation/i18n: quote double-dash for AsciiDoc

Junio C Hamano (4):
      git status --ignored: tests and docs
      mergetool: check return value from read
      Prepare for 1.7.6.3 maintenance release
      Git 1.7.6.3

Michael Schubert (1):
      reflog: actually default to subcommand 'show'

Sverre Rabbelier (1):
      SubmittingPathces: remove Cogito reference

Vitaliy Ivanov (1):
      tests: cleanup binary test vector files


Version v1.7.6.2; changes since v1.7.6.1:
-----------------------------------------

Junio C Hamano (3):
      whitespace: have SP on both sides of an assignment "="
      Revert "Merge branch 'cb/maint-quiet-push' into maint"
      Git 1.7.6.2

Pang Yan Han (1):
      update-ref: whitespace fix

Thomas Rast (1):
      Documentation: clarify effects of -- <path> arguments


Version v1.7.6.1; changes since v1.7.6:
---------------------------------------

Alex Neronskiy (2):
      Fix documentation of fetch-pack that implies that the client can disconnect after sending wants.
      Document the underlying protocol used by shallow repositories and --depth commands.

Andrew Wong (1):
      rebase -i -p: include non-first-parent commits in todo list

Bert Wesarg (1):
      Documentation: clearly specify what refs are honored by core.logAllRefUpdates

Brandon Casey (2):
      t/t7407: demonstrate that the command called by 'submodule foreach' loses stdin
      git-submodule.sh: preserve stdin for the command spawned by foreach

Brian Harring (1):
      get_indexed_object can return NULL if nothing is in that slot; check for it

Carlos Martín Nieto (1):
      Documentation: clarify the invalidated tree entry format

Clemens Buchacher (3):
      error_routine: use parent's stderr if exec fails
      propagate --quiet to send-pack/receive-pack
      notice error exit from pager

Dmitry Ivankov (1):
      doc/fast-import: clarify notemodify command

Emilio G. Cota (2):
      Documentation: ignore *.pdf files
      Documentation/Makefile: add *.pdf to `clean' target

Erik Faye-Lund (1):
      connect: correctly number ipv6 network adapter

Fredrik Kuivinen (1):
      Makefile: Track changes to LDFLAGS and relink when necessary

Heiko Voigt (2):
      add gitignore entry to description about how to write a builtin
      add technical documentation about ref iteration

Jack Nagel (1):
      Documentation: minor grammatical fix in rev-list-options.txt

Jakub Narębski (2):
      gitweb: Serve text/* 'blob_plain' as text/plain with $prevent_xss
      gitweb: Serve */*+xml 'blob_plain' as text/plain with $prevent_xss

Jeff King (10):
      combine-diff: split header printing into its own function
      combine-diff: calculate mode_differs earlier
      combine-diff: handle binary files as binary
      refactor get_textconv to not require diff_filespec
      combine-diff: respect textconv attributes
      tag: accept multiple patterns for --list
      docs: document --textconv diff option
      t7400: fix bogus test failure with symlinked trash
      fast-export: quote paths in output
      am: refresh the index at start and --resolved

Jens Lehmann (7):
      submodule add: test failure when url is not configured in superproject
      submodule add: allow relative repository path even when no url is set
      submodule add: clean up duplicated code
      fetch: Also fetch submodules in subdirectories in on-demand mode
      submodule add: always initialize .git/config entry
      tests: print failed test numbers at the end of the test run
      submodule: update and add must honor --quiet flag

Johannes Schindelin (1):
      get_pwd_cwd(): Do not trust st_dev/st_ino blindly

Jon Seymour (2):
      Add a test to check that git ls-tree sets non-zero exit code on error.
      Ensure git ls-tree exits with a non-zero exit code if read_tree_recursive fails.

Julian Phillips (1):
      remote-curl: Add a format check to parsing of info/refs

Junio C Hamano (29):
      diff-index --quiet: learn the "stop feeding the backend early" logic
      checkout -b <name>: correctly detect existing branch
      sha1_file.c: "legacy" is really the current format
      zlib wrapper: refactor error message formatter
      zlib: wrap remaining calls to direct inflate/inflateEnd
      zlib: wrap inflateInit2 used to accept only for gzip format
      zlib: wrap deflate side of the API
      zlib: wrap deflateBound() too
      zlib: zlib can only process 4GB at a time
      zlib: allow feeding more than 4GB in one go
      t/gitweb-lib.sh: skip gitweb tests when perl dependencies are not met
      cygwin: trust executable bit by default
      git-remote.txt: avoid sounding as if loose refs are the only ones in the world
      check-ref-format doc: de-emphasize the implementation detail of a ref
      git.txt: de-emphasize the implementation detail of a ref
      glossary: update description of "tag"
      glossary: update description of head and ref
      glossary: clarify description of HEAD
      submodule sync: do not auto-vivify uninteresting submodule
      "branch -d" can remove more than one branches
      test: skip clean-up when running under --immediate mode
      checkout: do not write bogus reflog entry out
      reset [<commit>] paths...: do not mishandle unmerged paths
      diff -c/--cc: do not mistake "resolved as deletion" as "use working tree"
      receive-pack: do not overstep command line argument array
      helping smart-http/stateless-rpc fetch race
      Prepare for 1.7.6.1
      Update draft release notes for 1.7.6.1
      Git 1.7.6.1

Martin von Zweigbergk (2):
      Documentation: use [verse] for SYNOPSIS sections
      rebase: clarify "restore the original branch"

Michael Haggerty (6):
      git-svn: Demonstrate a bug with root commits in mergeinfo ranges
      git-svn: Disambiguate rev-list arguments to improve error message
      git-svn: Correctly handle root commits in mergeinfo ranges
      gitattributes: Clarify discussion of attribute macros
      gitattributes: Reword "attribute macro" to "macro attribute"
      Do not use C++-style comments

Michael Schubert (1):
      help_unknown_cmd: do not propose an "unknown" cmd

Michael Witten (1):
      filter-branch: Export variable `workdir' for --commit-filter

Namhyung Kim (1):
      git-remote.txt: fix wrong remote refspec

Nguyễn Thái Ngọc Duy (3):
      Break down no-lstat() condition checks in verify_uptodate()
      checkout-index: remove obsolete comment
      fetch-pack: check for valid commit from server

Ori Avtalion (1):
      pull: remove extra space from reflog message

Pavan Kumar Sunkara (1):
      git-config: Remove extra whitespaces

Peter Collingbourne (1):
      Documentation: git-filter-branch honors replacement refs


Version v1.7.6; changes since v1.7.6-rc3:
-----------------------------------------

Junio C Hamano (1):
      Git 1.7.6

Namhyung Kim (1):
      completion: replace core.abbrevguard to core.abbrev


Version v1.7.6-rc3; changes since v1.7.6-rc2:
---------------------------------------------

Andreas Schwab (1):
      builtin/gc.c: add missing newline in message

Brandon Casey (1):
      sh-i18n--envsubst.c: do not #include getopt.h

Christof Krüger (1):
      Documentation: git diff --check respects core.whitespace

Dmitry Ivankov (1):
      Fix typo: existant->existent

Jakub Narębski (1):
      gitweb: 'pickaxe' and 'grep' features requires 'search' to be enabled

Jeff King (2):
      t/Makefile: pass test opts to valgrind target properly
      tests: link shell libraries into valgrind directory

Jim Meyering (1):
      plug a few coverity-spotted leaks

Junio C Hamano (2):
      t7810: avoid unportable use of "echo"
      Git 1.7.6-rc3


Version v1.7.6-rc2; changes since v1.7.6-rc1:
---------------------------------------------

Jonathan Nieder (1):
      gitweb: do not misparse nonnumeric content tag files that contain a digit

Junio C Hamano (1):
      Git 1.7.6-rc2


Version v1.7.6-rc1; changes since v1.7.6-rc0:
---------------------------------------------

Alex Riesen (1):
      t3703: skip more tests using colons in file names on Windows

Brandon Casey (2):
      t7508: demonstrate status's failure to use --porcelain format with -z
      builtin/commit.c: set status_format _after_ option parsing

Jakub Narębski (4):
      gitweb: Move information about installation from README to INSTALL
      gitweb: Describe CSSMIN and JSMIN in gitweb/INSTALL
      gitweb: Move "Requirements" up in gitweb/INSTALL
      gitweb: Fix usability of $prevent_xss

Jeff King (1):
      diff_tree: disable QUICK optimization with diff filter

Jim Meyering (1):
      fetch: do not leak a refspec

Junio C Hamano (2):
      diff: futureproof "stop feeding the backend early" logic
      Git 1.7.6-rc1


Version v1.7.6-rc0; changes since v1.7.5.4:
-------------------------------------------

Boris Faure (1):
      Do not strip empty lines / trailing spaces from a commit message template

Carlos Martín Nieto (1):
      log: convert to parse-options

Conrad Irwin (5):
      Use a temporary index for git commit --interactive
      Allow git commit --interactive with paths
      Add support for -p/--patch to git-commit
      Add commit to list of config.singlekey commands
      Test atomic git-commit --interactive

Csaba Henk (1):
      rebase: create HEAD reflog entry when aborting

Dan McGee (4):
      Share color list between graph and show-branch
      http: make curl callbacks match contracts from curl header
      http-push: use const for strings in signatures
      http-push: refactor curl_easy_setup madness

Elijah Newren (3):
      t6022: New test checking for unnecessary updates of renamed+modified files
      t6022: New test checking for unnecessary updates of files in D/F conflicts
      merge-recursive: When we detect we can skip an update, actually skip it

Erik Faye-Lund (2):
      strbuf: make sure buffer is zero-terminated
      config: support values longer than 1023 bytes

Heiko Voigt (1):
      test that git status works with merge conflict in, .gitmodules

Ingo Molnar (1):
      hashcmp(): inline memcmp() by hand to optimize

Jakub Narębski (13):
      gitweb: Restructure projects list generation
      gitweb: Change the way "content tags" ('ctags') are handled
      gitweb: Mark matched 'ctag' / contents tag (?by_tag=foo)
      gitweb: Split JavaScript for maintability, combining on build
      gitweb.js: Update and improve comments in JavaScript files
      gitweb.js: Provide default values for padding in padLeftStr and padLeft
      gitweb.js: Extract and improve datetime handling
      gitweb.js: Introduce code to handle cookies from JavaScript
      gitweb.js: Provide getElementsByClassName method (if it not exists)
      gitweb: Refactor generating of long dates into format_timestamp_html
      gitweb: Unify the way long timestamp is displayed
      gitweb: Make JavaScript ability to adjust timezones configurable
      gitweb: Refactor reading and parsing config file into read_config_file

Jay Soffian (2):
      "git log -h": typofix misspelled 'suppress'
      Add log.abbrevCommit config variable

Jeff King (26):
      notes: make expand_notes_ref globally accessible
      revision.c: refactor notes ref expansion
      notes: refactor display notes extra refs field
      notes: refactor display notes default handling
      revision.c: support --notes command-line option
      revision.c: make --no-notes reset --notes list
      format-patch: wrap email addresses after long names
      add tests for various blame formats
      blame: refactor porcelain output
      blame: add --line-porcelain output format
      t7501.8: feed a meaningful command
      fetch: avoid repeated commits in mark_complete
      Makefile: sort TEST_PROGRAMS list
      refactor refs_from_alternate_cb to allow passing extra data
      bisect: refactor sha1_array into a generic sha1 list
      receive-pack: eliminate duplicate .have refs
      doc: discuss textconv versus external diff drivers
      remote: allow "-t" with fetch mirrors
      read_in_full: always report errors
      t: test subject handling in format-patch / am pipeline
      mailinfo: always clean up rfc822 header folding
      pretty: add pp_commit_easy function for simple callers
      clean up calling conventions for pretty.c functions
      format-patch: preserve subject newlines with -k
      rebase: write a reflog entry when finishing
      format-patch: make zero-length subject prefixes prettier

Jens Lehmann (3):
      Submodules: Don't parse .gitmodules when it contains, merge conflicts
      unpack-trees: add the dry_run flag to unpack_trees_options
      Teach read-tree the -n|--dry-run option

Jim Meyering (2):
      diffcore-rename.c: avoid set-but-not-used warning
      plug a DIR buffer leak in rerere.c

Johan Herland (10):
      log/pretty-options: Document --[no-]notes and deprecate old notes options
      Make "git notes add" more user-friendly when there are existing notes
      Add several testcases for --dirstat and friends
      Make --dirstat=0 output directories that contribute < 0.1% of changes
      Refactor --dirstat parsing; deprecate --cumulative and --dirstat-by-file
      Add config variable for specifying default --dirstat behavior
      Allow specifying --dirstat cut-off percentage as a floating point number
      New --dirstat=lines mode, doing dirstat analysis based on diffstat
      Improve error handling when parsing dirstat parameters
      Mark dirstat error messages for translation

Johannes Sixt (3):
      t3703: Skip tests using directory name ":" on Windows
      Tweak t3102-ls-tree-wildcards to run on Windows
      Windows: add a wrapper for the shutdown() system call

John 'Warthog9' Hawley (2):
      gitweb: JavaScript ability to adjust time based on timezone
      gitweb.js: Add UI for selecting common timezone to display dates

Jon Seymour (1):
      git: add --info-path and --man-path options

Jonathan Nieder (15):
      revisions: split out handle_revision_pseudo_opt function
      revisions: allow --glob and friends in parse_options-enabled commands
      Documentation: clarify meaning of --html-path, --man-path, and --info-path
      tests: eliminate unnecessary setup test assertions
      tests: teach verify_parents to check for extra parents
      tests: check git does not barf on merge.ff values for future versions of git
      completion: move private shopt shim for zsh to __git_ namespace
      t4018 (funcname patterns): make .gitattributes state easier to track
      t4018 (funcname patterns): make configuration easier to track
      t4018 (funcname patterns): minor cleanups
      userdiff/perl: anchor "sub" and "package" patterns on the left
      userdiff/perl: match full line of POD headers
      userdiff/perl: catch sub with brace on second line
      tests: make test_expect_code quieter on success
      userdiff/perl: tighten BEGIN/END block pattern to reject here-doc delimiters

Junio C Hamano (53):
      merge-recursive: tweak magic band-aid
      git diff -D: omit the preimage of deletes
      pathspec: rename per-item field has_wildcard to use_wildcard
      magic pathspec: add tentative ":/path/from/top/level" pathspec support
      merge: allow "-" as a short-hand for "previous branch"
      magic pathspec: futureproof shorthand form
      magic pathspec: add ":(icase)path" to match case insensitively
      Start 1.7.6 cycle
      Update draft release notes to 1.7.6
      Update draft release notes to 1.7.6
      Update draft release notes to 1.7.6
      Update draft release notes to 1.7.6
      merge: introduce merge.ff configuration variable
      rerere: libify rerere_clear() and rerere_gc()
      index_fd(): turn write_object and format_check arguments into one flag
      index_fd(): split into two helper functions
      convert: rename the "eol" global variable to "core_eol"
      convert: give saner names to crlf/eol variables, types and functions
      convert: make it safer to add conversion attributes
      convert: make it harder to screw up adding a conversion attribute
      git-grep: do not die upon -F/-P when grep.extendedRegexp is set.
      Revert "magic pathspec: add ":(icase)path" to match case insensitively"
      pathspec: drop "lone : means no pathspec" from get_pathspec()
      grep: use get_pathspec() correctly
      fix overstrict :<path> diagnosis
      fix overslow :/no-such-string-ever-existed diagnostics
      rev/path disambiguation: further restrict "misspelled index entry" diag
      Revert "completion: don't declare 'local words' to make zsh happy"
      Update draft release notes to 1.7.6
      revision.c: leave a note for "a lone :" enhancement
      Update draft release notes to 1.7.6
      Bigfile: teach "git add" to send a large file straight to a pack
      Declare lookup_replace_object() in cache.h, not in commit.h
      t6050: make sure we test not just commit replacement
      read_sha1_file(): get rid of read_sha1_file_repl() madness
      inline lookup_replace_object() calls
      read_sha1_file(): allow selective bypassing of replacement mechanism
      Sync release notes for 1.7.6 to exclude what are in maintenance track
      git-grep: update tests now regexp type is "last one wins"
      Makefile: Pass USE_LIBPCRE down in GIT-BUILD-OPTIONS
      Update release notes to 1.7.6
      notes remove: allow removing more than one
      notes remove: --ignore-missing
      notes remove: --stdin reads from the standard input
      show: --ignore-missing
      Revert "Merge branch 'en/merge-recursive'"
      Update draft release notes to 1.7.6
      Update 1.7.6 draft release notes
      require-work-tree wants more than what its name says
      compat/fnmatch/fnmatch.c: give a fall-back definition for NULL
      Update 1.7.6 draft release notes
      log: --quiet should serve as synonym to -s
      Update draft release notes to 1.7.6

Luke Diamand (3):
      git-p4: add option to preserve user names
      git-p4: small improvements to user-preservation
      git-p4: warn if git authorship won't be retained

Marius Storm-Olsen (1):
      Automatically autoload bashcompinit for ZSH, when needed

Martin von Zweigbergk (34):
      rebase: clearer names for directory variables
      rebase: refactor reading of state
      rebase: read state outside loop
      rebase: remove unused rebase state 'prev_head'
      rebase: improve detection of rebase in progress
      rebase: act on command line outside parsing loop
      rebase: stricter check of standalone sub command
      rebase: align variable names
      rebase: align variable content
      rebase: factor out command line option processing
      rebase -i: remove now unnecessary directory checks
      rebase: reorder validation steps
      rebase: factor out reference parsing
      rebase: factor out clean work tree check
      rebase: factor out call to pre-rebase hook
      rebase -i: support --stat
      rebase: remove $branch as synonym for $orig_head
      rebase: extract merge code to new source file
      rebase: extract am code to new source file
      rebase: show consistent conflict resolution hint
      rebase -i: align variable names
      rebase: make -v a tiny bit more verbose
      rebase: factor out sub command handling
      rebase: extract code for writing basic state
      rebase: remember verbose option
      rebase: remember strategy and strategy options
      rebase -m: remember allow_rerere_autoupdate option
      rebase -m: don't print exit code 2 when merge fails
      git-rebase--am: remove unnecessary --3way option
      rebase -i: don't read unused variable preserve_merges
      rebase -i: remove unnecessary state rebase-root
      rebase: use @{upstream} if no upstream specified
      Makefile: do not install sourced rebase scripts
      rebase: define options in OPTIONS_SPEC

Mathias Lafeldt (1):
      t/test-lib.sh: minor readability improvements

Michael Haggerty (1):
      git-svn: add an option to skip the creation of empty directories

Michael J Gruber (7):
      contrib/completion: --notes, --no-notes
      rev-list --count: separate count for --cherry-mark
      t1020: test !alias in subdirectory
      handle_alias: provide GIT_PREFIX to !alias
      config: define and document exit codes
      config: Give error message when not changing a multivar
      sh-18n: quell "unused variable" warning

Michael Schubert (2):
      tag: disallow '-' as tag name
      ls-remote: the --exit-code option reports "no matching refs"

Michał Kiedrowicz (11):
      Documentation: Add --line-number to git-grep synopsis
      contrib/completion: --line-number to git grep
      grep: Put calls to fixmatch() and regmatch() into patmatch()
      grep: Fix a typo in a comment
      grep: Extract compile_regexp_failed() from compile_regexp()
      git-grep: Learn PCRE
      configure: Check for libpcre
      grep: Add basic tests
      git-grep: Bail out when -P is used with -F or -E
      git-grep: Update tests (mainly for -P)
      git-grep: Fix problems with recently added tests

Namhyung Kim (1):
      blame: add --abbrev command line option and make it honor core.abbrev

Nguyễn Thái Ngọc Duy (8):
      Reimplement read_tree_recursive() using tree_entry_interesting()
      Convert read_tree{,_recursive} to support struct pathspec
      Improve tree_entry_interesting() handling code
      setup: return correct prefix if worktree is '/'
      Kill off get_relative_cwd()
      t1011: fix sparse-checkout initialization and add new file
      sparse checkout: do not eagerly decide the fate for whole directory
      t3703, t4208: add test cases for magic pathspec

Nicolas Morey-Chaisemartin (1):
      submodule: Add --force option for git submodule update

Rafael Gieschke (1):
      ident: add NO_GECOS_IN_PWENT for systems without pw_gecos in struct passwd

Ramsay Jones (9):
      Makefile: Use cgcc rather than sparse in the check target
      sparse: Fix an "symbol 'cmd_index_pack' not declared" warning
      sparse: Fix some "Using plain integer as NULL pointer" warnings
      sparse: Fix an "symbol 'format_subject' not declared" warning
      sparse: Fix an "symbol 'merge_file' not decared" warning
      sparse: Fix errors due to missing target-specific variables
      sparse: Fix some "symbol not declared" warnings
      setup.c: Fix some "symbol not declared" sparse warnings
      config.c: Remove unused git_config_global() function

René Scharfe (1):
      strbuf: clarify assertion in strbuf_setlen()

SZEDER Gábor (3):
      completion: don't modify the $cur variable in completion functions
      completion: remove unnecessary _get_comp_words_by_ref() invocations
      completion: don't declare 'local words' to make zsh happy

Sebastien Cevey (3):
      gitweb: Split git_project_list_body in two functions
      gitweb: Modularized git_get_project_description to be more generic
      gitweb: Optional grouping of projects by category

Tay Ray Chuan (1):
      t5541-http-push: add test for chunked

Ævar Arnfjörð Bjarmason (5):
      git-sh-i18n--envsubst: our own envsubst(1) for eval_gettext()
      git-sh-i18n.sh: add no-op gettext() and eval_gettext() wrappers
      git-sh-i18n.sh: add GIT_GETTEXT_POISON support
      Makefile: add xgettext target for *.sh files
      git-sh-i18n--envsubst: add SYNOPSIS section to the documentation


Version v1.7.5.4; changes since v1.7.5.3:
-----------------------------------------

Brandon Casey (2):
      Documentation/technical/api-diff.txt: correct name of diff_unmerge()
      git-submodule.sh: separate parens by a space to avoid confusing some shells

Jeff King (8):
      config: make environment parsing routines static
      git_config: don't peek at global config_parameters
      config: always parse GIT_CONFIG_PARAMETERS during git_config
      read_gitfile_gently: use ssize_t to hold read result
      docs: minor grammar fixes to git-status
      docs: update status --porcelain format
      docs: make sure literal "->" isn't converted to arrow
      docs: fix some antique example output

Jim Meyering (3):
      rerere.c: diagnose a corrupt MERGE_RR when hitting EOF between TAB and '\0'
      remove tests of always-false condition
      diffcore-rename.c: avoid set-but-not-used warning

Jonathan Nieder (3):
      tests: check error message from run_command
      run-command: handle short writes and EINTR in die_child
      Documentation: do not misinterpret refspecs as bold text

Junio C Hamano (26):
      builtin/diff.c: remove duplicated call to diff_result_code()
      diffcore-rename: refactor "too many candidates" logic
      diffcore-rename: record filepair for rename src
      diffcore-rename: fall back to -C when -C -C busts the rename limit
      i18n: do not overuse C_LOCALE_OUTPUT
      i18n: .git file is not a human readable message (t5601)
      i18n: use test_i18ncmp in t1200 and t2200
      i18n: do not overuse C_LOCALE_OUTPUT (grep)
      i18n: use test_i18ngrep in lib-httpd and t2019
      i18n: use test_i18ngrep in t2020, t2204, t3030, and t3200
      i18n: use test_i18ncmp and test_i18ngrep in t3203, t3501 and t3507
      i18n: use test_i18ncmp and test_i18ngrep in t3700, t4001 and t4014
      i18n: use test_i18ncmp and test_i18ngrep in t5541, t6040, t6120, t7004, t7012 and t7060
      i18n: use test_i18ncmp and test_i18ngrep in t7102 and t7110
      i18n: use test_i18ngrep in t7201
      i18n: use test_i18ncmp in t7500
      i18n: use test_i18ngrep in t7501
      i18n: use test_i18ngrep and test_i18ncmp in t7502
      i18n: use test_i18ngrep in t7506
      i18n: use test_i18n{grep,cmp} in t7508
      i18n: use test_i18n{cmp,grep} in t7600, t7607, t7611 and t7811
      handle_options(): do not miscount how many arguments were used
      userformat_find_requirements(): find requirement for the correct format
      config.mak.in: allow "configure --sysconfdir=/else/where"
      Start 1.7.5.4 draft release notes
      Git 1.7.5.4

Mathias Lafeldt (1):
      t/README: unify documentation of test function args

Ramkumar Ramachandra (4):
      Documentation: Add filter.<driver>.* to config
      Documentation: Move diff.<driver>.* from config.txt to diff-config.txt
      Documentation: Add diff.<driver>.* to config
      Documentation: Allow custom diff tools to be specified in 'diff.tool'

Thomas Rast (1):
      add -i: ignore terminal escape sequences

Valentin Haenel (5):
      config.txt: 'interactive.singlekey; is used by...
      git-add.txt: document 'interactive.singlekey'
      git-stash.txt: better docs for '--patch'
      git-checkout.txt: better docs for '--patch'
      git-reset.txt: better docs for '--patch'

Ævar Arnfjörð Bjarmason (7):
      i18n: mark merge "Could not read from" message for translation
      i18n: mark merge "upstream" messages for translation
      i18n: mark merge CHERRY_PICK_HEAD messages for translation
      i18n: mark clone nonexistent repository message for translation
      i18n: mark checkout --detach messages for translation
      i18n: mark checkout plural warning for translation
      i18n: mark init-db messages for translation


Version v1.7.5.3; changes since v1.7.5.2:
-----------------------------------------

Felipe Contreras (1):
      git-completion: fix regression in zsh support

Fraser Tweedale (1):
      gitweb: supply '-n' to gzip for identical output

Jeff King (8):
      send-pack: unbreak push over stateless rpc
      cherry-pick: handle root commits with external strategies
      revert: allow reverting a root commit
      t3503: test cherry picking and reverting root commits
      connect: treat generic proxy processes like ssh processes
      connect: let callers know if connection is a socket
      send-pack: avoid deadlock on git:// push with failed pack-objects
      test core.gitproxy configuration

Jim Meyering (1):
      do not read beyond end of malloc'd buffer

Johannes Sixt (3):
      Documentation/format-patch: suggest Toggle Word Wrap add-on for Thunderbird
      send-pack: avoid deadlock when pack-object dies early
      Honor $(prefix) set in config.mak* when defining ETC_GIT*

Jonathan Nieder (5):
      Revert "t0081 (line-buffer): add buffering tests"
      Documentation: explain how to check for patch corruption
      Documentation: hints for sending patches inline with Thunderbird
      Documentation: publicize KMail hints for sending patches inline
      Documentation: publicize hints for sending patches with GMail

Junio C Hamano (4):
      Revert "Honor $(prefix) set in config.mak* when defining ETC_GIT* and sysconfdir"
      setup_revisions(): take pathspec from command line and --stdin correctly
      sideband_demux(): fix decl-after-stmt
      Git 1.7.5.3

Kacper Kornet (1):
      Honor $(prefix) set in config.mak* when defining ETC_GIT* and sysconfdir

Michael J Gruber (2):
      config.txt,diff-options.txt: porcelain vs. plumbing for color.diff
      git-svn: Fix git svn log --show-commit

Nguyễn Thái Ngọc Duy (1):
      init/clone: remove short option -L and document --separate-git-dir

Rafael Gieschke (1):
      copy_gecos: fix not adding nlen to len when processing "&"

Stefan Sperling (1):
      remove noise and inaccuracies from git-svn docs


Version v1.7.5.2; changes since v1.7.5.1:
-----------------------------------------

Andrew Wong (1):
      git-rebase--interactive.sh: preserve-merges fails on merges created with no-ff

Brian Gernhardt (1):
      t/annotate-tests: Use echo & cat instead of sed

Carlos Martín Nieto (2):
      format-patch: don't pass on the --quiet flag
      format-patch: document --quiet option

Ciaran Jessup (1):
      Pass empty file to p4merge where no base is suitable.

Dima Sharov (1):
      shell: add missing initialization of argv0_path

Guy Rouillier (1):
      Look for password in both CVS and CVSNT password files.

Jakub Narębski (2):
      git-instaweb: Simplify build dependency on gitweb
      Remove gitweb/gitweb.cgi and other legacy targets from main Makefile

Jeff King (3):
      pretty: quote rfc822 specials in email addresses
      add tests for merge-index / merge-one-file
      merge-one-file: fix broken merges with alternate work trees

Jim Meyering (1):
      Documentation/git-fsck.txt: fix typo: unreadable -> unreachable

Johan Herland (1):
      t5400: Fix a couple of typos

Jonathan Nieder (4):
      Restructure documentation for git-merge-base.
      Documentation: describe the format of messages with inline patches
      add, merge, diff: do not use strcasecmp to compare config variable names
      provide a copy of the LGPLv2.1

Jonathon Mah (1):
      mergetool: Teach about submodules

Josh Stone (1):
      blame: tolerate bogus e-mail addresses a bit better

João Britto (1):
      Remove duplicated "is a"

Junio C Hamano (19):
      test: use $_z40 from test-lib
      diff.c: return filepair from diff_unmerge()
      diff: remove often unused parameters from diff_unmerge()
      diff-files: show unmerged entries correctly
      Fix "add -u" that sometimes fails to resolve unmerged paths
      add -p: 'q' should really quit
      t3701: Editing a split hunk in an "add -p" session
      add--interactive.perl: factor out repeated --recount option
      "add -p": work-around an old laziness that does not coalesce hunks
      t3701: fix here document
      merge: make branch.<name>.mergeoptions correctly override merge.<option>
      t3701: add-p-fix makes the last test to pass
      t1507: avoid "${parameter<op>'word'}" inside double-quotes
      Prepare for 1.7.5.2
      sha1_file: typofix
      git_open_noatime(): drop unused parameter
      Update draft release notes to 1.7.5.2
      Update draft release notes to 1.7.5.2
      Git 1.7.5.2

Martin von Zweigbergk (1):
      diffcore-rename: don't consider unmerged path as source

Michael J Gruber (1):
      git-fast-import.txt: --relative-marks takes no parameter

Sebastian Schuberth (1):
      doc: Clarify that "cherry-pick -x" does not use "git notes"

Sverre Rabbelier (1):
      fast-import: fix option parser for no-arg options

Valentin Haenel (3):
      git-svn.txt: fix usage of --add-author-from
      git-svn.txt: move option descriptions
      git-svn.txt: small typeface improvements

Vincent van Ravesteijn (1):
      Documentation: update to git-merge-base --octopus


Version v1.7.5.1; changes since v1.7.5:
---------------------------------------

Alex Riesen (1):
      clean: unreadable directory may still be rmdir-able if it is empty

Dan McGee (2):
      stash: add two more tests for --no-keep-index
      stash: ensure --no-keep-index and --patch can be used in any order

Jeff King (3):
      stash: fix accidental apply of non-existent stashes
      stash: drop dirty worktree check on apply
      upload-pack: start pack-objects before async rev-list

Johan Herland (4):
      --dirstat: Describe non-obvious differences relative to --stat or regular diff
      --dirstat-by-file: Make it faster and more correct
      Teach --dirstat not to completely ignore rearranged lines within a file
      --dirstat: In case of renames, use target filename instead of source filename

Jon Seymour (1):
      stash: fix false positive in the invalid ref test.

Junio C Hamano (4):
      Teach core.bigfilethreashold to pack-objects
      http: clear POSTFIELDS when initializing a slot
      Start 1.7.5.1 maintenance track
      Git 1.7.5.1

Michael J Gruber (6):
      builtin/log.c: separate default and setup of cmd_log_init()
      t/t1411: test reflog with formats
      reflog: fix overriding of command line options
      t1506: factor out test for "Did you mean..."
      sha1_name: Suggest commit:./file for path in subdir
      date: avoid "X years, 12 months" in relative dates

Sylvain Rabot (1):
      git-send-email: fix missing space in error message

Valentin Haenel (1):
      git-add.txt: document 'add.ignoreErrors'


Version v1.7.5; changes since v1.7.5-rc3:
-----------------------------------------

Junio C Hamano (1):
      Git 1.7.5


Version v1.7.5-rc3; changes since v1.7.5-rc2:
---------------------------------------------

Junio C Hamano (3):
      Revert "run-command: prettify -D_FORTIFY_SOURCE workaround"
      Git 1.7.4.5
      Git 1.7.5-rc3

Michael J Gruber (3):
      git.txt: fix list continuation
      t3306,t5304: avoid clock skew issues
      git-svn.txt: Document --mergeinfo

René Scharfe (1):
      archive: document limitation of tar.umask config setting


Version v1.7.5-rc2; changes since v1.7.5-rc1:
---------------------------------------------

Alejandro R. Sedeño (1):
      git-svn: Add a svn-remote.<name>.pushurl config key

Anders Kaseorg (2):
      gitk: Take only numeric version components when computing $git_version
      gitk: Update cherry-pick error message parsing

Andrew Garber (1):
      git-p4: replace each tab with 8 spaces for consistency

James Y Knight (1):
      git-svn: Cache results of running the executable "git config"

Jim Meyering (1):
      remove doubled words, e.g., s/to to/to/, and fix related typos

Johannes Sixt (2):
      t0001: guard a new test with SYMLINKS prerequisite
      t2021: mark a test as fixed

Junio C Hamano (1):
      Git 1.7.5-rc2

Pat Thoyts (1):
      gitk: Quote tag names in event bindings to avoid problems with % chars

Paul Mackerras (1):
      gitk: Allow user to control how much of the SHA1 ID gets auto-selected

Ramkumar Ramachandra (1):
      revert: Hide '-r' option in default usage

Ramsay Jones (1):
      i18n: avoid parenthesized string as array initializer

Skip (1):
      gitk: spelling fixes in Russian translation

Ævar Arnfjörð Bjarmason (1):
      Makefile: extract Q_() source strings as ngettext()


Version v1.7.5-rc1; changes since v1.7.5-rc0:
---------------------------------------------

Dan McGee (2):
      Remove old binaries from .gitignore
      Fix two unused variable warnings in gcc 4.6

Jakub Narębski (1):
      gitweb: Fix parsing of negative fractional timezones in JavaScript

Jared Hance (1):
      merge: match the help text with the documentation

Jeff King (7):
      merge: merge unborn index before setting ref
      pull: do not clobber untracked files on initial pull
      remote: disallow some nonsensical option combinations
      remote: separate the concept of push and fetch mirrors
      remote: deprecate --mirror
      docs: fix filter-branch subdir example for exotic repo names
      pull: do not clobber untracked files on initial pull

Jens Lehmann (7):
      fetch/pull: recurse into submodules when necessary
      fetch/pull: Add the 'on-demand' value to the --recurse-submodules option
      config: teach the fetch.recurseSubmodules option the 'on-demand' value
      Submodules: Add 'on-demand' value for the 'fetchRecurseSubmodule' option
      fetch/pull: Don't recurse into a submodule when commits are already present
      submodule update: Don't fetch when the submodule commit is already present
      fetch/pull: Describe --recurse-submodule restrictions in the BUGS section

Joe Ratterman (1):
      grep: allow -E and -n to be turned on by default via configuration

Jonathan Nieder (1):
      compat: add missing #include <sys/resource.h>

Junio C Hamano (8):
      merge: merge with the default upstream branch without argument
      "log --cherry-pick" documentation regression fix
      Doc: mention --delta-base-offset is the default for Porcelain commands
      Git 1.7.4.3
      Update release notes
      Start preparing for 1.7.4.4
      Git 1.7.4.4
      Git 1.7.5-rc1

Lawrence Mitchell (1):
      git.el: Don't use font-lock-compile-keywords

Michael J Gruber (3):
      revisions.txt: consistent use of quotes
      revisions.txt: structure with a labelled list
      revisions.txt: language improvements

Nguyễn Thái Ngọc Duy (2):
      git-init.txt: move description section up
      init, clone: support --separate-git-dir for .git file

Nicolas Morey-Chaisemartin (1):
      submodule: process conflicting submodules only once

SZEDER Gábor (1):
      Documentation: trivial grammar fix in core.worktree description

Stephen Boyd (2):
      Makefile: Cover more files with make check
      sparse: Fix errors and silence warnings

Ævar Arnfjörð Bjarmason (70):
      i18n: git-init basic messages
      i18n: git-init "Initialized [...] repository" message
      i18n: git-clone basic messages
      i18n: git-clone "Cloning into" message
      i18n: git-clone "Cloning into" message
      i18n: git-add basic messages
      i18n: git-add "The following paths are ignored" message
      i18n: git-add "did not match any files" message
      i18n: git-add "remove '%s'" message
      i18n: git-add "Unstaged changes" message
      i18n: git-branch basic messages
      i18n: git-branch "remote branch '%s' not found" message
      i18n: git-branch "Deleted branch [...]" message
      i18n: git-branch "git branch -v" messages
      i18n: git-branch "(no branch)" message
      i18n: git-checkout basic messages
      i18n: git-checkout: our/their version message
      i18n: git-checkout describe_detached_head messages
      i18n: git-checkout "HEAD is now at" message
      i18n: git-checkout "Switched to a .. branch" message
      i18n: git-commit basic messages
      i18n: git-commit "middle of a merge" message
      i18n: git-commit formatting messages
      i18n: git-commit print_summary messages
      i18n: git-commit "enter the commit message" message
      i18n: git-commit advice messages
      i18n: git-diff basic messages
      i18n: git-fetch basic messages
      i18n: git-fetch formatting messages
      i18n: git-fetch update_local_ref messages
      i18n: git-fetch split up "(non-fast-forward)" message
      i18n: git-grep basic messages
      i18n: git-grep "--open-files-in-pager" message
      i18n: git-log basic messages
      i18n: git-log "--OPT does not make sense" messages
      i18n: git-merge basic messages
      i18n: git-merge "Updating %s..%s" message
      i18n: git-merge "You have not concluded your merge" messages
      i18n: git-merge "Wonderful" message
      i18n: git-mv basic messages
      i18n: git-mv "bad" messages
      i18n: git-rm basic messages
      i18n: git-reset basic messages
      i18n: git-reset reset_type_names messages
      i18n: git-reset "Unstaged changes after reset" message
      i18n: git-tag basic messages
      i18n: git-tag tag_template message
      i18n: git-push basic messages
      i18n: git-push "prevent you from losing" message
      i18n: git-status basic messages
      i18n: git-status "nothing to commit" messages
      i18n: git-status shortstatus messages
      i18n: git-status "Changes to be committed" message
      i18n: git-status "Initial commit" message
      i18n: git-status "renamed: " message
      i18n: git-archive basic messages
      i18n: git-bundle basic messages
      i18n: git-clean basic messages
      i18n: git-clean clean.requireForce messages
      i18n: git-describe basic messages
      i18n: git-gc basic messages
      i18n: git-gc "Auto packing the repository" message
      i18n: git-notes basic commands
      i18n: git-notes GIT_NOTES_REWRITE_MODE error message
      i18n: git-revert basic messages
      i18n: git-revert "Your local changes" message
      i18n: git-revert literal "me" messages
      i18n: git-revert split up "could not revert/apply" message
      i18n: git-shortlog basic messages
      t2019-checkout-ambiguous-ref.sh: depend on C_LOCALE_OUTPUT


Version v1.7.5-rc0; changes since v1.7.4.5:
-------------------------------------------

Alex Riesen (2):
      git-gui: update russian translation
      git-gui: update russian translation

Alexandre Erwin Ittner (1):
      git-gui: add Brazilian Portuguese (pt-BR) translation

Bert Wesarg (16):
      git-gui: fix ANSI-color parsing
      git-gui: respect conflict marker size
      git-gui: fix browsers [Up To Parent] in sub-sub-directories.
      git-gui: Fix use of renamed tag.
      git-gui: Fix use of hunk tag for non-hunk content.
      git-gui: fix typo in image data
      git-gui: remove 'no such variable' for s error when encounter unknown file states
      git-gui: learn more type change states
      git-gui: rework handling of diff header
      git-gui: handle index lines only in the diff header
      git-gui: name also new symlinks so
      git-gui: there is no "mode *" diff header line
      git-gui: move 3way diff autodetect up
      git-gui: always reset the current tag
      git-gui: handle special content lines only in the diff header section
      git-gui: handle meta diff header lines only in the header section

Carlo Marcelo Arenas Belon (1):
      setup: translate symlinks in filename when using absolute paths

Carlos Martín Nieto (1):
      Name make_*_path functions more accurately

David Barr (8):
      vcs-svn: Allow simple v3 dumps (no deltas yet)
      vcs-svn: Implement Prop-delta handling
      fast-import: add 'ls' command
      vcs-svn: use strbuf for revision log
      vcs-svn: use strbuf for author, UUID, and URL
      vcs-svn: implement perfect hash for node-prop keys
      vcs-svn: implement perfect hash for top-level keys
      vcs-svn: use strchr to find RFC822 delimiter

Drew Northup (1):
      Documentation: "rebase <onto> <that>" stays on <that> branch upon exit

Elijah Newren (2):
      Make rev-list --objects work together with pathspecs
      Add testcases showing how pathspecs are handled with rev-list --objects

Erik Faye-Lund (1):
      alias: use run_command api to execute aliases

Giuseppe Bilotta (1):
      Improve test for pthreads flag

Heiko Voigt (13):
      git gui: keep selected branch when remote is changed in push dialog
      git-gui: scroll down to default selection for push dialog
      git-gui: instead of defaulting to home directory use working directory
      mingw: move unlink wrapper to mingw.c
      mingw: work around irregular failures of unlink on windows
      mingw: make failures to unlink or move raise a question
      mingw: add fallback for rmdir in case directory is in use
      git-gui: fix deleting item from all_remotes variable
      git-gui: always default to the last merged branch in remote delete
      git-gui: refactor remote submenu creation into subroutine
      git-gui: teach fetch/prune menu to do it for all remotes
      git-gui: fetch/prune all entry only for more than one entry
      git-gui: fetch/prune all entry appears last

Ian Wienand (1):
      Obey p4 views when using client spec

Jakob Pfender (2):
      object.h: Remove obsolete struct object_refs
      git-completion: Add git help completion for aliases

Jakub Narębski (1):
      gitweb: Make i18n (encoding) tests in t9500 leave clean state

Jay Soffian (4):
      git-checkout.txt: improve detached HEAD documentation
      Introduce CHERRY_PICK_HEAD
      bash: teach __git_ps1 about CHERRY_PICK_HEAD
      Teach commit about CHERRY_PICK_HEAD

Jeff King (23):
      merge: improve inexact rename limit warning
      bump rename limit defaults (again)
      commit: stop setting rename limit
      add inexact rename detection progress infrastructure
      merge: enable progress reporting for rename detection
      pull: propagate --progress to merge
      compat: provide a fallback va_copy definition
      strbuf: add strbuf_vaddf
      trace: add trace_vprintf
      trace: refactor to support multiple env variables
      trace: factor out "do we want to trace" logic
      trace: add trace_strbuf
      add packet tracing debug code
      trace: give repo_setup trace its own key
      doc: drop author/documentation sections from most pages
      doc: add missing git footers
      docs: point git.txt author credits to git-scm.com
      checkout: add basic tests for detached-orphan warning
      checkout: clear commit marks after detached-orphan check
      checkout: tweak detached-orphan warning format
      t7607: mark known breakage in test 11 as fixed
      t7607: clean up stray untracked file
      tests: kill backgrounded processes more robustly

Jens Lehmann (1):
      tests: fix overeager scrubbing of environment variables

Johannes Schindelin (2):
      mingw_rmdir: set errno=ENOTEMPTY when appropriate
      Remove unused variables

Johannes Sixt (1):
      rerere forget: deprecate invocation without pathspec

Jonathan Nieder (75):
      vcs-svn: Check for errors from open()
      vcs-svn: Eliminate node_ctx.srcRev global
      vcs-svn: Eliminate node_ctx.mark global
      vcs-svn: Unclutter handle_node by introducing have_props var
      vcs-svn: Use mark to indicate nodes with included text
      vcs-svn: handle_node: Handle deletion case early
      vcs-svn: Replace = Delete + Add
      vcs-svn: Combine repo_replace and repo_modify functions
      vcs-svn: Delay read of per-path properties
      vcs-svn: Reject path nodes without Node-action
      vcs-svn: More dump format sanity checks
      vcs-svn: Make source easier to read on small screens
      vcs-svn: Split off function for handling of individual properties
      vcs-svn: Sharpen parsing of property lines
      vcs-svn: Allow change nodes for root of tree (/)
      cherry-pick/revert: add support for -X/--strategy-option
      unpack-trees: handle lstat failure for existing directory
      unpack-trees: handle lstat failure for existing file
      userdiff: simplify word-diff safeguard
      t4034 (diff --word-diff): style suggestions
      glossary: define pathspec
      checkout: split off a function to peel away branchname arg
      checkout: rearrange update_refs_for_switch for clarity
      t3507: introduce pristine-detach helper
      checkout: add missing const to describe_detached_head
      update-index --refresh --porcelain: add missing const
      vcs-svn: eliminate global byte_buffer
      vcs-svn: replace buffer_read_string memory pool with a strbuf
      vcs-svn: collect line_buffer data in a struct
      vcs-svn: teach line_buffer to handle multiple input files
      vcs-svn: make test-line-buffer input format more flexible
      tests: give vcs-svn/line_buffer its own test script
      vcs-svn: tweak test-line-buffer to not assume line-oriented input
      t0081 (line-buffer): add buffering tests
      vcs-svn: add binary-safe read function
      vcs-svn: allow character-oriented input
      vcs-svn: allow input from file descriptor
      vcs-svn: teach line_buffer about temporary files
      fast-import: make code "-Wpointer-arith" clean
      vcs-svn: introduce repo_read_path to check the content at a path
      vcs-svn: handle_node: use repo_read_path
      vcs-svn: simplify repo_modify_path and repo_copy
      vcs-svn: allow input errors to be detected promptly
      compat: fall back on __va_copy if available
      wt-status: add helpers for printing wt-status lines
      commit: refer to commit template as s->fp
      commit, status: use status_printf{,_ln,_more} helpers
      i18n: do not poison translations unless GIT_GETTEXT_POISON envvar is set
      wt-status: add helpers for printing wt-status lines
      commit: refer to commit template as s->fp
      commit, status: use status_printf{,_ln,_more} helpers
      i18n: add stub Q_() wrapper for ngettext
      i18n: "make distclean" should clean up after "make pot"
      tests: stop worrying about obsolete environment variables
      tests: suppress system gitattributes
      gitattributes: drop support for GIT_ATTR_NOGLOBAL
      config: drop support for GIT_CONFIG_NOGLOBAL
      tests: scrub environment of GIT_* variables
      declare 1-bit bitfields to be unsigned
      vcs-svn: remove spurious semicolons
      mktag: avoid %td in format string
      unbreak and eliminate NO_C99_FORMAT
      run-command: prettify -D_FORTIFY_SOURCE workaround
      vcs-svn: improve support for reading large files
      vcs-svn: make buffer_skip_bytes return length read
      vcs-svn: make buffer_copy_bytes return length read
      vcs-svn: improve reporting of input errors
      tests: avoid nonportable {foo,bar} glob
      vcs-svn: make reading of properties binary-safe
      vcs-svn: remove buffer_read_string
      vcs-svn: avoid unnecessary copying of log message and author
      vcs-svn: handle log message with embedded NUL
      vcs-svn: add missing cast to printf argument
      vcs-svn: add missing cast to printf argument
      tests: make sure input to sed is newline terminated

Junio C Hamano (29):
      unpack-trees.c: cosmetic fix
      unpack_trees(): skip trees that are the same in all input
      t4034 (diff --word-diff): add a minimum Perl drier test vector
      t6004: add pathspec globbing test for log family
      checkout: introduce --detach synonym for "git checkout foo^{commit}"
      Rename t2019 with typo "amiguous" that meant "ambiguous"
      Revert "unpack_trees(): skip trees that are the same in all input"
      grep --no-index: honor pathspecs correctly
      rev-list: --left/right-only are mutually exclusive
      commit: give final warning when reattaching HEAD to leave commits behind
      Start preparing release notes to 1.7.5
      Update Release Notes to 1.7.5
      Update draft release notes to 1.7.5
      refs_from_alternate: helper to use refs from alternates
      fetch-pack: objects in our alternates are available to us
      fetch-pack: factor out hardcoded handshake window size
      fetch-pack: progressively use larger handshake windows
      fetch-pack: use smaller handshake window for initial request
      Update drart release notes to 1.7.5
      Update draft release notes to 1.7.5
      rerere: make sure it works even in a workdir attached to a young repository
      Update draft release note to 1.7.5
      Revert "upload-pack: Implement no-done capability"
      Revert "fetch-pack: Implement no-done capability"
      enable "no-done" extension only when fetching over smart-http
      Fix potential local deadlock during fetch-pack
      enable "no-done" extension only when serving over smart-http
      Revert two "no-done" reverts
      Git 1.7.5-rc0

Kevin Cernekee (1):
      gitweb: fix #patchNN anchors when path_info is enabled

Martin von Zweigbergk (2):
      rerere "remaining"
      mergetool: don't skip modify/remove conflicts

Matthieu Moy (2):
      push: better error messages when push.default = tracking
      push: better error message when no remote configured

Michael Horowitz (1):
      git-p4 submit: prevent 'Jobs' section from being removed from p4 change log

Michael J Gruber (14):
      revlist.c: introduce --left/right-only for unsymmetric picking
      t6007: Make sure we test --cherry-pick
      rev-list: documentation and test for --left/right-only
      git-add: make -A description clearer vs. -u
      rev-list/log: factor out revision mark generation
      revision.c: introduce --cherry-mark
      rev-list: documentation and test for --cherry-mark
      log --cherry: a synonym
      t6007: test rev-list --cherry
      git-log: put space after commit mark
      RelNotes/1.7.5.txt: typo and language fixes
      t6009: use test_commit() from test-lib.sh
      revision.c: introduce --min-parents and --max-parents options
      rev-list --min-parents,--max-parents: doc, test and completion

Michael Witten (1):
      vcs-svn: a void function shouldn't try to return something

Nguyễn Thái Ngọc Duy (22):
      Add struct pathspec
      diff-no-index: use diff_tree_setup_paths()
      Convert struct diff_options to use struct pathspec
      tree_entry_interesting(): remove dependency on struct diff_options
      Move tree_entry_interesting() to tree-walk.c and export it
      diff-tree: convert base+baselen to writable strbuf
      tree_entry_interesting(): refactor into separate smaller functions
      tree_entry_interesting(): support depth limit
      tree_entry_interesting(): fix depth limit with overlapping pathspecs
      tree_entry_interesting(): support wildcard matching
      tree_entry_interesting(): optimize wildcard matching when base is matched
      pathspec: add match_pathspec_depth()
      struct rev_info: convert prune_data to struct pathspec
      Convert ce_path_match() to use struct pathspec
      Convert ce_path_match() to use match_pathspec_depth()
      grep: convert to use struct pathspec
      grep: use match_pathspec_depth() for cache/worktree grepping
      grep: use writable strbuf from caller for grep_tree()
      grep: drop pathspec_matches() in favor of tree_entry_interesting()
      t7810: overlapping pathspecs and depth limit
      Make hash-object more robust against malformed objects
      git.c: reorder builtin command list

Nicolas Kaiser (1):
      transport-helper.c: fix check for (size_t < 0)

Pat Thoyts (2):
      git-gui: Include version check and test for tearoff menu entry
      git-gui: detect the use of MUI langauge packs on Windows

Pete Wyckoff (12):
      git-p4: test script
      git-p4: fix key error for p4 problem
      git-p4: add missing newline in initial import message
      git-p4: accommodate new move/delete type in p4
      git-p4: reinterpret confusing p4 message
      git-p4: better message for "git-p4 sync" when not cloned
      git-p4: decode p4 wildcard characters
      git-p4: support clone --bare
      git-p4: fix clone @all regression
      git-p4: test clone @all
      git-p4: fix sync new branch regression
      git-p4: test sync new branch

Piotr Krukowiecki (1):
      Documentation: running test with --debug keeps "trash" directory

Ramkumar Ramachandra (1):
      fast-import: Introduce --import-marks-if-exists

René Scharfe (2):
      repo-config: add deprecation warning
      grep: read patterns from stdin with -f -

SZEDER Gábor (2):
      bash: fix misindented esac statement in __git_complete_file()
      bash: complete 'git diff ...branc<TAB>'

Sebastian Schuberth (4):
      mergetool--lib: Sort tools alphabetically for easier lookup
      mergetool--lib: Add Beyond Compare 3 as a tool
      mergetool--lib: Sort tools alphabetically for easier lookup
      mergetool--lib: Add Beyond Compare 3 as a tool

Serge Ziryukin (1):
      git-gui: fix russian translation typos

Shawn O. Pearce (6):
      smart-http: Don't use Expect: 100-Continue
      smart-http: Really never use Expect: 100-continue
      fetch-pack: Finish negotation if remote replies "ACK %s ready"
      upload-pack: More aggressively send 'ACK %s ready'
      fetch-pack: Implement no-done capability
      upload-pack: Implement no-done capability

Skip (1):
      git-gui: spelling fixes in russian translation

Stefan Naewe (1):
      git-gui: use --exclude-standard to check for untracked files

Stephen Boyd (1):
      Fix sparse warnings

Thomas Rast (2):
      Exhibit merge bug that clobbers index&WT
      t4034: bulk verify builtin word regex sanity

Tor Arvid Lund (3):
      git-p4: Teach gitConfig method about arguments.
      Teach git-p4 to ignore case in perforce filenames if configured.
      git-p4: Fix error message crash in P4Sync.commit.

Uwe Kleine-König (2):
      get_remote_url(): use the same data source as ls-remote to get remote urls
      git-request-pull: open-code the only invocation of get_remote_url

Vitor Antunes (2):
      git-p4: Improve rename detection support
      git-p4: Add copy detection support

Ævar Arnfjörð Bjarmason (4):
      gitignore: add test-mktemp to ignore list
      i18n: add no-op _() and N_() wrappers
      i18n: add GETTEXT_POISON to simulate unfriendly translator
      i18n: Makefile: "pot" target to extract messages marked for translation


Version v1.7.4.5; changes since v1.7.4.4:
-----------------------------------------

Johannes Sixt (1):
      t2021: mark a test as fixed

Junio C Hamano (2):
      "log --cherry-pick" documentation regression fix
      Git 1.7.4.5

Michael J Gruber (3):
      git.txt: fix list continuation
      t3306,t5304: avoid clock skew issues
      git-svn.txt: Document --mergeinfo

René Scharfe (1):
      archive: document limitation of tar.umask config setting


Version v1.7.4.4; changes since v1.7.4.3:
-----------------------------------------

Jakub Narębski (2):
      git-instaweb: Change how gitweb.psgi is made runnable as standalone app
      gitweb: Fix parsing of negative fractional timezones in JavaScript

Jeff King (4):
      strbuf: add fixed-length version of add_wrapped_text
      format-patch: wrap long header lines
      format-patch: rfc2047-encode newlines in headers
      pull: do not clobber untracked files on initial pull

Jonathan Nieder (1):
      compat: add missing #include <sys/resource.h>

Junio C Hamano (6):
      list-objects.c: don't add an unparsed NULL as a pending tree
      Rename core.abbrevlength back to core.abbrev
      diff/status: refactor opportunistic index update
      update $GIT_INDEX_FILE when there are racily clean entries
      Start preparing for 1.7.4.4
      Git 1.7.4.4

Libor Pechacek (2):
      Sanity-check config variable names
      Disallow empty section and variable names

Linus Torvalds (1):
      Make the default abbrev length configurable

Matthieu Moy (1):
      log: fix --max-count when used together with -S or -G

Michael J Gruber (2):
      git-log.txt,rev-list-options.txt: -n/--max-count is commit limiting
      git-log.txt,rev-list-options.txt: put option blocks in proper order

Nicolas Morey-Chaisemartin (1):
      submodule: process conflicting submodules only once

SZEDER Gábor (1):
      Documentation: trivial grammar fix in core.worktree description


Version v1.7.4.3; changes since v1.7.4.2:
-----------------------------------------

Alex Riesen (1):
      HOME must be set before calling git-init when creating test repositories

Carlos Martín Nieto (1):
      Documentation/config.txt: make truth value of numbers more explicit

Clemens Buchacher (1):
      do not overwrite untracked symlinks

Fabian Keil (1):
      git-cvsimport.perl: Bail out right away when reading from the server fails

Jeff King (1):
      docs: fix filter-branch subdir example for exotic repo names

Joe Ratterman (1):
      grep: Add the option '--line-number'

Johan Herland (1):
      branch/checkout --track: Ensure that upstream branch is indeed a branch

Johannes Sixt (3):
      Demonstrate breakage: checkout overwrites untracked symlink with directory
      stash: fix incorrect quoting in cleanup of temporary files
      stash: copy the index using --index-output instead of cp -p

Junio C Hamano (9):
      checkout: fix bug with ambiguous refs
      apply: do not patch lines that were already patched
      apply -v: show offset count when patch did not apply exactly
      diff --quiet: disable optimization when --diff-filter=X is used
      doc: technical details about the index file format
      t8001: check the exit status of the command being tested
      parse-remote: typofix
      Doc: mention --delta-base-offset is the default for Porcelain commands
      Git 1.7.4.3

Maxin john (1):
      contrib/thunderbird-patch-inline: do not require bash to run the script

Michael J Gruber (2):
      git-bisect.txt: streamline run presentation
      git-bisect.txt: example for bisecting with hot-fix

Michael Witten (3):
      git tag documentation grammar fixes and readability updates
      Typos: t/README
      strbuf.h: remove a tad stale docs-in-comment and reference api-doc instead

Nguyễn Thái Ngọc Duy (1):
      doc: technical details about the index file format

Piotr Krukowiecki (2):
      git stash: show status relative to current directory
      Add test: git stash shows status relative to current dir

Stephen Boyd (2):
      parse-remote: replace unnecessary sed invocation
      git-pack-objects.txt: fix grammatical errors


Version v1.7.4.2; changes since v1.7.4.1:
-----------------------------------------

Adam Monsen (1):
      diff format documentation: clarify --cc and -c

Alexei Sholik (3):
      Documentation: remove redundant colons in git-for-each-ref.txt
      Add Author and Documentation sections to git-for-each-ref.txt
      docs: fix grammar in gitattributes.txt

Arnout Engelen (1):
      Improve error messages when temporary file creation fails

Ben Walton (1):
      Work around broken ln on solaris as used in t8006

Carlos Martín Nieto (3):
      valgrind: ignore SSE-based strlen invalid reads
      make_absolute_path: return the input path if it points to our buffer
      t/README: Add a note about running commands under valgrind

Clemens Buchacher (1):
      Documentation: clarify -u<mode> option defaults

Eric Hanchrow (1):
      branch_merged: fix grammar in warning

Erik Faye-Lund (1):
      mingw: add minimum getrlimit() compatibility stub

Jakub Narębski (2):
      gitweb: Always call parse_date with timezone parameter
      gitweb: Fix handling of fractional timezones in parse_date

Jay Soffian (1):
      merge: honor prepare-commit-msg hook

Jeff King (5):
      string_list_append: always set util pointer to NULL
      clone: die when trying to clone missing local path
      diff: handle diffstat of rewritten binary files
      diff: don't retrieve binary blobs for diffstat
      bisect: visualize with git-log if gitk is unavailable

Johan Herland (1):
      push.default: Rename 'tracking' to 'upstream'

Jonathan Nieder (9):
      correct type of EMPTY_TREE_SHA1_BIN
      tests: skip terminal output tests on OS X
      commit: error out for missing commit message template
      enums: omit trailing comma for portability
      compat: make gcc bswap an inline function
      standardize brace placement in struct definitions
      branch: split off function that writes tracking info and commit subject
      cherry: split off function to print output lines
      diff --submodule: split into bite-sized pieces

Junio C Hamano (8):
      CodingGuidelines: downcase placeholders in usage messages
      verify-pack: add --stat-only to the synopsis section
      SubmittingPatches: clarify the expected commit log description
      Revert "core.abbrevguard: Ensure short object names stay unique a bit longer"
      Prepare draft release notes to 1.7.4.2
      bisect: explain the rationale behind 125
      Update draft release notes to 1.7.4.2
      Git 1.7.4.2

Kevin Cernekee (1):
      gitweb: highlight: replace tabs with spaces

Linus Torvalds (3):
      for_each_hash: allow passing a 'void *data' pointer to callback
      diffcore-rename: properly honor the difference between -M and -C
      diffcore-rename: improve estimate_similarity() heuristics

Masatake Osanai (1):
      perl: command_bidi_pipe() method should set-up git environmens

Mathias Lafeldt (1):
      Fix typo in t/README

Michael J Gruber (16):
      commit,tag: use same wording for -F
      commit,status: describe --porcelain just like push
      clone,init: describe --template using the same wording
      commit,merge,tag: describe -m likewise
      add: describe --patch like checkout, reset
      commit,status: describe -u likewise
      git-tag.txt: list all modes in the description
      pull: do not display fetch usage on --help-all
      Make <identifier> lowercase as per CodingGuidelines
      Make <identifier> lowercase as per CodingGuidelines
      Make <identifier> lowercase as per CodingGuidelines
      Make <identifier> lowercase in Documentation
      git-patch-id: test for "no newline" markers
      git-patch-id: do not trip over "no newline" markers
      mergetool-lib: call vim in readonly mode for diffs
      rev-list-options.txt: typo fix

Michal Rokos (2):
      Makefile: add NO_FNMATCH_CASEFOLD to HP-UX section
      git-compat-util.h: Honor HP C's noreturn attribute

Michał Kiedrowicz (1):
      Documentation: fix a typo in git-apply.txt

Nguyễn Thái Ngọc Duy (2):
      parse_tag_buffer(): do not prefixcmp() out of range
      init: remove unnecessary check

Piotr Krukowiecki (1):
      ls-remote documentation: <refs> argument is optional

Ralf Wildenhues (1):
      configure: use AC_LANG_PROGRAM consistently

SZEDER Gábor (1):
      git-am.txt: advertise 'git am --abort' instead of 'rm .git/rebase-apply'

Shawn O. Pearce (2):
      Limit file descriptors used by packs
      sha1_file.c: Don't retain open fds on small packs

Spencer E. Olson (2):
      submodule: no [--merge|--rebase] when newly cloned
      t7406: "git submodule update {--merge|--rebase]" with new submodules

Ævar Arnfjörð Bjarmason (4):
      gitweb/gitweb.perl: remove use of qw(...) as parentheses
      gitweb/gitweb.perl: don't call S_ISREG() with undef
      t/gitweb-lib.sh: Ensure that errors are shown for --debug --immediate
      t/t7500-commit.sh: use test_cmp instead of test


Version v1.7.4.1; changes since v1.7.4:
---------------------------------------

Chris Packham (1):
      clone: fixup recurse_submodules option

Jakub Narębski (1):
      gitweb: Mention optional Perl modules in INSTALL

Jens Lehmann (2):
      t5526: Fix wrong argument order in "git config"
      pull: Document the "--[no-]recurse-submodules" options

Johannes Sixt (2):
      start_command: flush buffers in the WIN32 code path as well
      t4120-apply-popt: help systems with core.filemode=false

Jonathan Nieder (5):
      quote.h: simplify the inclusion
      fast-import: clarify documentation of "feature" command
      fast-import: introduce "feature notes" command
      compat: helper for detecting unsigned overflow
      svn-fe: warn about experimental status

Junio C Hamano (3):
      fsck: drop unused parameter from traverse_one_object()
      fsck: do not give up too early in fsck_dir()
      Git 1.7.4.1

Nguyễn Thái Ngọc Duy (4):
      diff: support --cached on unborn branches
      Add const to parse_{commit,tag}_buffer()
      sha1_file.c: move find_cached_object up so sha1_object_info can use it
      sha1_object_info: examine cached_object store too

Pat Thoyts (2):
      t3509: use unconstrained initial test to setup repository.
      t7407: fix line endings for mingw build

Shawn O. Pearce (1):
      bundle: Use OFS_DELTA in bundle files

Sitaram Chamarty (1):
      post-receive-email: suppress error if description file missing

Uwe Kleine-König (1):
      Documentation/merge subtree How-To: fix typo


Version v1.7.4; changes since v1.7.4-rc3:
-----------------------------------------

Adam Tkac (1):
      Don't pass "--xhtml" to hightlight in gitweb.perl script.

Jeff King (3):
      rebase: use explicit "--" with checkout
      rebase: give a better error message for bogus branch
      tests: sanitize more git environment variables

Jonathan Nieder (2):
      fast-import: treat filemodify with empty tree as delete
      rebase -i: clarify in-editor documentation of "exec"

Junio C Hamano (1):
      Git 1.7.4


Version v1.7.4-rc3; changes since v1.7.4-rc2:
---------------------------------------------

Alexey Shumkin (1):
      userdiff: match Pascal class methods

Björn Steinbrink (1):
      Correctly report corrupted objects

Erik Faye-Lund (1):
      exec_cmd: remove unused extern

Johannes Sixt (2):
      Fix expected values of setup tests on Windows
      t/README: hint about using $(pwd) rather than $PWD in tests

Jonathan Nieder (9):
      ll-merge: simplify opts == NULL case
      Documentation/fast-import: capitalize beginning of sentence
      remote-ext: do not segfault for blank lines
      Documentation/fast-import: put explanation of M 040000 <dataref> "" in context
      tests: cosmetic improvements to the repo-setup test
      tests: compress the setup tests
      Documentation: do not treat reset --keep as a special case
      Subject: setup: officially support --work-tree without --git-dir
      t1510: fix typo in the comment of a test

Junio C Hamano (2):
      Documentation updates for 'GIT_WORK_TREE without GIT_DIR' historical usecase
      Git 1.7.4-rc3

Ramsay Jones (1):
      svndump.c: Fix a printf format compiler warning


Version v1.7.4-rc2; changes since v1.7.4-rc1:
---------------------------------------------

Anders Kaseorg (1):
      Mark gitk script executable

Brandon Casey (3):
      trace.c: ensure NULL is not passed to printf
      t0001,t1510,t3301: use sane_unset which always returns with status 0
      t3032: limit sed branch labels to 8 characters

Jeff King (1):
      docs: explain diff.*.binary option

Jonathan Nieder (3):
      diff: funcname and word patterns for perl
      gitweb: make logo optional
      t9010: svnadmin can fail even if available

Junio C Hamano (2):
      userdiff/perl: catch BEGIN/END/... and POD as headers
      Git 1.7.4-rc2

Matthieu Moy (1):
      commit: suggest --amend --reset-author to fix commiter identity

Michael J Gruber (1):
      RelNotes/1.7.4: minor fixes

Ramsay Jones (7):
      lib-git-svn.sh: Move web-server handling code into separate function
      t9157-*.sh: Add an svn version check
      t6038-*.sh: Pass the -b (--binary) option to sed on cygwin
      t3032-*.sh: Pass the -b (--binary) option to sed on cygwin
      t3032-*.sh: Do not strip CR from line-endings while grepping on MinGW
      t4135-*.sh: Skip the "backslash" tests on cygwin
      t9157-*.sh: Make the svn version check more precise

StephenB (1):
      git svn: fix the final example in man page

Sylvain Rabot (2):
      gitweb: add extensions to highlight feature map
      gitweb: remove unnecessary test when closing file descriptor

Thomas Rast (4):
      Documentation/git-archive: spell --worktree-attributes correctly
      Documentation/githooks: post-rewrite-copy-notes never existed
      submodule: fix relative url parsing for scp-style origin
      t0000: quote TAP snippets in test code


Version v1.7.4-rc1; changes since v1.7.4-rc0:
---------------------------------------------

Antonio Ospite (1):
      t/t9001-send-email.sh: fix '&&' chain in some tests

Jonathan Nieder (3):
      vcs-svn: Error out for v3 dumps
      gitweb: skip logo in atom feed when there is none
      daemon: support <directory> arguments again

Junio C Hamano (3):
      t0021: avoid getting filter killed with SIGPIPE
      Git 1.7.3.5
      Git 1.7.4-rc1

Michael J Gruber (2):
      cvsimport: partial whitespace cleanup
      cvsimport: handle the parsing of uppercase config options

Pete Wyckoff (1):
      convert filter: supply path to external driver

Ralf Wildenhues (1):
      Fix typos in the documentation

Robin H. Johnson (1):
      t9001: Fix test prerequisites


Version v1.7.4-rc0; changes since v1.7.3.5:
-------------------------------------------

Aleksi Aalto (1):
      status: show branchname with a configurable color

Alexander Sulfrian (2):
      daemon: add helper function named_sock_setup
      daemon: allow more than one host address given via --listen

Alexandre Erwin Ittner (1):
      gitk: Add Brazilian Portuguese (pt-BR) translation

Anders Kaseorg (4):
      describe: Use for_each_rawref
      describe: Do not use a flex array in struct commit_name
      describe: Store commit_names in a hash table by commit SHA1
      describe: Delay looking up commits until searching for an inexact match

Antonio Ospite (1):
      git-send-email.perl: make initial In-Reply-To apply only to first email

Brandon Casey (3):
      diffcore-pickaxe.c: a void function shouldn't try to return something
      Makefile: add NO_FNMATCH_CASEFOLD to IRIX sections
      t9001: use older Getopt::Long boolean prefix '--no' rather than '--no-'

Brian Gernhardt (1):
      t6022: Use -eq not = to test output of wc -l

Christopher Wilson (1):
      Enable highlight executable path as a configuration option

Clemens Buchacher (6):
      t7607: use test-lib functions and check MERGE_HEAD
      t7607: add leading-path tests
      add function check_ok_to_remove()
      lstat_cache: optionally return match_len
      do not overwrite files in leading path
      use persistent memory for rejected paths

Dan McGee (3):
      mergetool-lib: combine vimdiff and gvimdiff run blocks
      mergetool-lib: add a three-way diff view for vim/gvim
      mergetool-lib: make the three-way diff the default for vim/gvim

David Barr (3):
      fast-import: Allow filemodify to set the root
      fast-import: insert new object entries at start of hash bucket
      fast-import: let importers retrieve blobs

Elijah Newren (53):
      Document pre-condition for tree_entry_interesting
      tree-walk: Correct bitrotted comment about tree_entry()
      tree_entry_interesting(): Make return value more specific
      diff_tree(): Skip skip_uninteresting() when all remaining paths interesting
      t3509: Add rename + D/F conflict testcase that recursive strategy fails
      merge-recursive: D/F conflicts where was_a_dir/file -> was_a_dir
      t6032: Add a test checking for excessive output from merge
      t6022: Add test combinations of {content conflict?, D/F conflict remains?}
      t6022: Add tests for reversing order of merges when D/F conflicts present
      t6022: Add tests with both rename source & dest involved in D/F conflicts
      t6022: Add paired rename+D/F conflict: (two/file, one/file) -> (one, two)
      t6022: Add tests for rename/rename combined with D/F conflicts
      t6020: Modernize style a bit
      t6020: Add a testcase for modify/delete + directory/file conflict
      t6036: Test index and worktree state, not just that merge fails
      t6036: Add a second testcase similar to the first but with content changes
      t6036: Add testcase for undetected conflict
      merge-recursive: Small code clarification -- variable name and comments
      merge-recursive: Rename conflict_rename_rename*() for clarity
      merge-recursive: Nuke rename/directory conflict detection
      merge-recursive: Move rename/delete handling into dedicated function
      merge-recursive: Move delete/modify handling into dedicated function
      merge-recursive: Move process_entry's content merging into a function
      merge-recursive: New data structures for deferring of D/F conflicts
      merge-recursive: New function to assist resolving renames in-core only
      merge-recursive: Have process_entry() skip D/F or rename entries
      merge-recursive: Structure process_df_entry() to handle more cases
      merge-recursive: Update conflict_rename_rename_1to2() call signature
      merge-recursive: Update merge_content() call signature
      merge-recursive: Avoid doubly merging rename/add conflict contents
      merge-recursive: Move handling of double rename of one file to two
      merge-recursive: Move handling of double rename of one file to other file
      merge-recursive: Delay handling of rename/delete conflicts
      merge-recursive: Delay content merging for renames
      merge-recursive: Delay modify/delete conflicts if D/F conflict present
      conflict_rename_delete(): Check whether D/F conflicts are still present
      conflict_rename_rename_1to2(): Fix checks for presence of D/F conflicts
      merge_content(): Check whether D/F conflicts are still present
      handle_delete_modify(): Check whether D/F conflicts are still present
      merge-recursive: Make room for directories in D/F conflicts
      merge-recursive: Remove redundant path clearing for D/F conflicts
      t4017 (diff-retval): replace manual exit code check with test_expect_code
      t100[12] (read-tree-m-2way, read_tree_m_u_2way): add missing &&
      t4002 (diff-basic): use test_might_fail for commands that might fail
      t4202 (log): Replace '<git-command> || :' with test_might_fail
      t4019 (diff-wserror): add lots of missing &&
      t4026 (color): remove unneeded and unchained command
      t5602 (clone-remote-exec): add missing &&
      t6016 (rev-list-graph-simplify-history): add missing &&
      t7001 (mv): add missing &&
      t7601 (merge-pull-config): add missing &&
      t7800 (difftool): add missing &&
      Introduce sane_unset and use it to ensure proper && chaining

Eric Sunshine (5):
      Side-step sed line-ending "corruption" leading to t6038 failure.
      Side-step MSYS-specific path "corruption" leading to t5560 failure.
      Fix 'clone' failure at DOS root directory.
      Fix Windows-specific macro redefinition warning.
      Add MinGW-specific execv() override.

Erik Faye-Lund (20):
      mingw: do not crash on open(NULL, ...)
      inet_ntop: fix a couple of old-style decls
      mingw: use real pid
      mingw: support waitpid with pid > 0 and WNOHANG
      mingw: add kill emulation
      daemon: use run-command api for async serving
      daemon: use full buffered mode for stderr
      daemon: get remote host address from root-process
      mingw: import poll-emulation from gnulib
      mingw: use poll-emulation from gnulib
      daemon: use socklen_t
      daemon: make --inetd and --detach incompatible
      daemon: opt-out on features that require posix
      msvc: opendir: fix malloc-failure
      msvc: opendir: allocate enough memory
      msvc: opendir: do not start the search
      win32: dirent: handle errors
      msvc: opendir: handle paths ending with a slash
      win32: use our own dirent.h
      help: always suggest common-cmds if prefix of cmd

Giuseppe Bilotta (15):
      gitweb: use fullname as hash_base in heads link
      gitweb: introduce remote_heads feature
      gitweb: git_get_heads_list accepts an optional list of refs
      gitweb: separate heads and remotes lists
      gitweb: nagivation menu for tags, heads and remotes
      gitweb: allow action specialization in page header
      gitweb: remotes view for a single remote
      gitweb: refactor repository URL printing
      gitweb: provide a routine to display (sub)sections
      gitweb: group remote heads by remote
      git instaweb: enable remote_heads
      web--browse: coding style
      web--browse: split valid_tool list
      web--browse: support opera, seamonkey and elinks
      web--browse: better support for chromium

Greg Brockman (4):
      Allow creation of arbitrary git-shell commands
      Add interactive mode to git-shell for user-friendliness
      Add sample commands for git-shell
      shell: Display errors from improperly-formatted command lines

Ilari Liusvaara (4):
      Add bidirectional_transfer_loop()
      git-remote-fd
      git-remote-ext
      remote-fd/ext: finishing touches after code review

Jakub Narębski (12):
      t/gitweb-lib.sh: Use GIT_BUILD_DIR
      t/gitweb-lib.sh: Use tabs for indent consistently
      gitweb: Move call to evaluate_git_version after evaluate_gitweb_config
      t/gitweb-lib.sh: Add support for GITWEB_TEST_INSTALLED
      gitweb/Makefile: Add 'test' and 'test-installed' targets
      gitweb/Makefile: Include gitweb/config.mak
      gitweb: Fix test of highlighting support in t9500
      gitweb: Fix bug in evaluate_path_info
      gitweb: Improve behavior for actionless path_info gitweb URLs
      gitweb: Time::HiRes is in core for Perl 5.8
      gitweb: selectable configurations that change with each request
      gitweb: Fix handling of whitespace in generated links

Jan Krüger (1):
      read-tree: deprecate syntax without tree-ish args

Jeff King (13):
      tests: factor out terminal handling from t7006
      tests: test terminal output to both stdout and stderr
      push: pass --progress down to git-pack-objects
      config: treat non-existent config files as empty
      diff: report bogus input to -C/-M/-B
      docs: clarify git diff modes of operation
      allow command-specific pagers in pager.<cmd>
      docs: default to more modern toolset
      default color.status.branch to "same as header"
      tests: add some script lint checks
      tests: flip executable bit on t9158
      handle arbitrary ints in git_config_maybe_bool
      t2107: mark passing test as success

Jens Lehmann (5):
      clone: Add the --recurse-submodules option as alias for --recursive
      fetch/pull: Add the --recurse-submodules option
      Add the 'fetch.recurseSubmodules' config setting
      Submodules: Add the "fetchRecurseSubmodules" config option
      git submodule: Remove now obsolete tests before cloning a repo

Joe Perches (1):
      git-send-email.perl: Add --to-cmd

Johan Herland (23):
      notes.c: Hexify SHA1 in die() message from init_notes()
      (trivial) notes.h: Minor documentation fixes to copy_notes()
      notes.h: Make default_notes_ref() available in notes API
      notes.c: Reorder functions in preparation for next commit
      notes.h/c: Allow combine_notes functions to remove notes
      notes.h/c: Propagate combine_notes_fn return value to add_note() and beyond
      (trivial) t3303: Indent with tabs instead of spaces for consistency
      notes.c: Use two newlines (instead of one) when concatenating notes
      builtin/notes.c: Split notes ref DWIMmery into a separate function
      git notes merge: Initial implementation handling trivial merges only
      builtin/notes.c: Refactor creation of notes commits.
      git notes merge: Handle real, non-conflicting notes merges
      git notes merge: Add automatic conflict resolvers (ours, theirs, union)
      Documentation: Preliminary docs on 'git notes merge'
      git notes merge: Manual conflict resolution, part 1/2
      git notes merge: Manual conflict resolution, part 2/2
      git notes merge: List conflicting notes in notes merge commit message
      git notes merge: --commit should fail if underlying notes ref has moved
      git notes merge: Add another auto-resolving strategy: "cat_sort_uniq"
      git notes merge: Add testcases for merging notes trees at different fanouts
      Provide 'git notes get-ref' to easily retrieve current notes ref
      cmd_merge(): Parse options before checking MERGE_HEAD
      Provide 'git merge --abort' as a synonym to 'git reset --merge'

Johannes Schindelin (1):
      merge-octopus: Work around environment issue on Windows

Johannes Sixt (4):
      t7300: add a missing SYMLINKS prerequisite
      apply --whitespace=fix: fix tab-in-indent
      Make the tab width used for whitespace checks configurable
      Avoid duplicate test number t7609

Jonathan Nieder (52):
      merge-recursive: expose merge options for builtin merge
      ll-merge: replace flag argument with options struct
      commit-tree: free commit message before exiting
      test-lib: allow test code to check the list of declared prerequisites
      test_terminal: catch use without TTY prerequisite
      test_terminal: ensure redirections work reliably
      fast-import: filemodify after M 040000 <tree> "" crashes
      fast-import: tighten M 040000 syntax
      t9300 (fast-import): another test for the "replace root" feature
      fast-import: do not clear notes in do_change_note_fanout()
      user-manual: remote-tracking can be checked out, with detached HEAD
      tests: add missing &&
      tests: add missing &&, batch 2
      test-lib: introduce test_line_count to measure files
      t6022 (renaming merge): chain test commands with &&
      t1502 (rev-parse --parseopt): test exit code from "-h"
      t1400 (update-ref): use test_must_fail
      t3301 (notes): use test_expect_code for clarity
      t3404 (rebase -i): unroll test_commit loops
      t3404 (rebase -i): move comment to description
      t3404 (rebase -i): introduce helper to check position of HEAD
      t4124 (apply --whitespace): use test_might_fail
      wrapper: move xmmap() to sha1_file.c
      wrapper: move odb_* to environment.c
      path helpers: move git_mkstemp* to wrapper.c
      strbuf: move strbuf_branchname to sha1_name.c
      wrapper: give zlib wrappers their own translation unit
      pack-objects: mark file-local variable static
      Remove pack file handling dependency from wrapper.o
      Describe various forms of "be quiet" using OPT__QUIET
      fast-import: treat SIGUSR1 as a request to access objects early
      git-rev-parse.txt: clarify --git-dir
      gitweb: document $per_request_config better
      fast-import: stricter parsing of integer options
      fast-import: clarify documentation of "feature" command
      fast-import: Allow cat-blob requests at arbitrary points in stream
      git submodule -b ... of current HEAD fails
      Makefile: dependencies for vcs-svn tests
      parse-options: clearer reporting of API misuse
      parse-options: move NODASH sanity checks to parse_options_check
      parse-options: sanity check PARSE_OPT_NOARG flag
      parse-options: never suppress arghelp if LITERAL_ARGHELP is set
      parse-options: allow git commands to invent new option types
      parse-options: make resuming easier after PARSE_OPT_STOP_AT_NON_OPTION
      update-index: migrate to parse-options API
      treap: make treap_insert return inserted node
      vcs-svn: fix intermittent repo_tree corruption
      Makefile: transport-helper uses thread-utils.h
      t9300: avoid short reads from dd
      bash: simple reimplementation of _get_comp_words_by_ref
      t9300: use perl "head -c" clone in place of "dd bs=1 count=16000" kluge
      t0001: test git init when run via an alias

Joshua Jensen (6):
      Add string comparison functions that respect the ignore_case variable.
      Case insensitivity support for .gitignore via core.ignorecase
      Add case insensitivity support for directories when using git status
      Add case insensitivity support when using git ls-files
      Support case folding for git add when core.ignorecase=true
      Support case folding in git fast-import when core.ignorecase=true

Junio C Hamano (31):
      gitdiffcore doc: update pickaxe description
      diff: pass the entire diff-options to diffcore_pickaxe()
      git log/diff: add -G<regexp> that greps in the patch text
      diff/log -G<pattern>: tests
      grep: move logic to compile header pattern into a separate helper
      log --author: take union of multiple "author" requests
      disallow branch names that start with a hyphen
      Start 1.7.4 cycle
      merge-recursive: Restructure showing how to chain more process_* functions
      Martin Langhoff has a new e-mail address
      Make test script t9157 executable
      merge-recursive:make_room_for_directories - work around dumb compilers
      core.abbrevguard: Ensure short object names stay unique a bit longer
      read_sha1_file(): report correct name of packfile with a corrupt object
      A loose object is not corrupt if it cannot be read due to EMFILE
      t9001: send-email interation with --in-reply-to and --chain-reply-to
      t3404: do not use 'describe' to implement test_cmp_rev
      Update draft release notes to 1.7.4
      Update draft release notes to 1.7.4
      t9300: remove unnecessary use of /dev/stdin
      t9119: do not compare "Text Last Updated" line from "svn info"
      t9010 fails when no svn is available
      get_sha1: teach ":$n:<path>" the same relative path logic
      Documentation/git.txt: update list of maintenance releases
      fetch_populated_submodules(): document dynamic allocation
      thread-utils.h: simplify the inclusion
      Relnotes: remove items fixed on 'maint'
      get_sha1_oneline: fix lifespan rule of temp_commit_buffer variable
      Update draft release notes to 1.7.4
      set_try_to_free_routine(NULL) means "do nothing special"
      Git 1.7.4-rc0

Justin Frankel (2):
      merge-recursive --patience
      merge-recursive: options to ignore whitespace changes

Kevin Ballard (9):
      merge-recursive: option to specify rename threshold
      diff: add synonyms for -M, -C, -B
      completion: Support the DWIM mode for git checkout
      blame: Add option to show author email instead of name
      submodule: preserve all arguments exactly when recursing
      submodule: only preserve flags across recursive status/update invocations
      rebase: better rearranging of fixup!/squash! lines with --autosquash
      rebase: teach --autosquash to match on sha1 in addition to message
      diff: add --detect-copies-harder as a synonym for --find-copies-harder

Kirill Smelkov (1):
      gitk: Show notes by default (like git log does)

Mark Lodato (2):
      completion: make compatible with zsh
      completion: fix zsh check under bash with 'set -u'

Markus Duft (2):
      add support for the SUA layer (interix; windows)
      Interix: add configure checks

Martin Storsjö (1):
      Improve the mingw getaddrinfo stub to handle more use cases

Martin von Zweigbergk (3):
      rebase: support --verify
      Use reflog in 'pull --rebase . foo'
      completion: add missing configuration variables

Matthieu Moy (9):
      Better "Changed but not updated" message in git-status
      Replace "remote tracking" with "remote-tracking"
      Change remote tracking to remote-tracking in non-trivial places
      everyday.txt: change "tracking branch" to "remote-tracking branch"
      Change "tracking branch" to "remote-tracking branch"
      Change incorrect uses of "remote branch" meaning "remote-tracking"
      Change incorrect "remote branch" to "remote tracking branch" in C code
      user-manual.txt: explain better the remote(-tracking) branch terms
      git-branch.txt: mention --set-upstream as a way to change upstream configuration

Michael J Gruber (4):
      t5503: fix typo
      test: allow running the tests under "prove"
      t800?-blame.sh: retitle uniquely
      t1020-subdirectory: test alias expansion in a subdirectory

Mike Pape (3):
      mingw: add network-wrappers for daemon
      mingw: implement syslog
      compat: add inet_pton and inet_ntop prototypes

Nguyễn Thái Ngọc Duy (64):
      branch -h: show usage even in an invalid repository
      checkout-index -h: show usage even in an invalid repository
      commit/status -h: show usage even with broken configuration
      gc -h: show usage even with broken configuration
      ls-files -h: show usage even with corrupt index
      merge -h: show usage even with corrupt index
      update-index -h: show usage even with corrupt index
      add: do not rely on dtype being NULL behavior
      get_cwd_relative(): do not misinterpret root path
      builtins: print setup info if repo is found
      Add t1510 and basic rules that run repo setup
      t1510: setup case #0
      t1510: setup case #1
      t1510: setup case #2
      t1510: setup case #3
      t1510: setup case #4
      t1510: setup case #5
      t1510: setup case #6
      t1510: setup case #7
      t1510: setup case #8
      t1510: setup case #9
      t1510: setup case #10
      t1510: setup case #11
      t1510: setup case #12
      t1510: setup case #13
      t1510: setup case #14
      t1510: setup case #15
      t1510: setup case #16
      t1510: setup case #17
      t1510: setup case #18
      t1510: setup case #19
      t1510: setup case #20
      t1510: setup case #21
      t1510: setup case #22
      t1510: setup case #23
      t1510: setup case #24
      t1510: setup case #25
      t1510: setup case #26
      t1510: setup case #27
      t1510: setup case #28
      t1510: setup case #29
      t1510: setup case #30
      t1510: setup case #31
      cache.h: realign and use (1 << x) form for CE_* constants
      dir.c: add free_excludes()
      unpack-trees: move all skip-worktree checks back to unpack_trees()
      unpack-trees: fix sparse checkout's "unable to match directories"
      Revert "excluded_1(): support exclude files in index"
      setup: save prefix (original cwd relative to toplevel) in startup_info
      Make prefix_path() return char* without const
      get_sha1: support relative path ":path" syntax
      get_sha1_oneline: make callers prepare the commit list to traverse
      get_sha1: support $commit^{/regex} syntax
      get_sha1: handle special case $commit^{/}
      Add git_config_early()
      Use git_config_early() instead of git_config() during repo setup
      setup: limit get_git_work_tree()'s to explicit setup case only
      setup: clean up setup_bare_git_dir()
      setup: clean up setup_discovered_git_dir()
      setup: rework setup_explicit_git_dir()
      Remove all logic from get_git_work_tree()
      Revert "Documentation: always respect core.worktree if set"
      git.txt: correct where --work-tree path is relative to
      setup_work_tree: adjust relative $GIT_WORK_TREE after moving cwd

Pascal Obry (3):
      Minor indentation fix.
      Remove @smtp_host_parts variable as not used.
      New send-email option smtpserveroption.

Pat Notz (6):
      commit: helper methods to reduce redundant blocks of code
      pretty.c: teach format_commit_message() to reencode the output
      commit: --fixup option for use with rebase --autosquash
      add tests of commit --fixup
      commit: --squash option for use with rebase --autosquash
      add tests of commit --squash

Pat Thoyts (13):
      MinGW: fix stat() and lstat() implementations for handling symlinks
      MinGW: Report errors when failing to launch the html browser.
      Skip t1300.70 and 71 on msysGit.
      Do not strip CR when grepping HTTP headers.
      Skip 'git archive --remote' test on msysGit
      git-am: fix detection of absolute paths for windows
      git-gui: show command-line errors in a messagebox on Windows
      git-gui: enable the Tk console when tracing/debugging on Windows
      git-gui: generic version trimming
      git-gui: use full dialog width for old name when renaming branch
      git-gui: correct assignment of work-tree
      git-gui: use wordprocessor tab style to ensure tabs work as expected
      git-gui: apply color information from git diff output

Peter Krefting (1):
      gitk: Update Swedish translation (290t)

Peter van der Does (1):
      bash: get --pretty=m<tab> completion to work with bash v4

Petr Onderka (1):
      Add global and system-wide gitattributes

Ralf Thielow (1):
      commit.c: Remove backward goto in read_craft_line()

Ramkumar Ramachandra (10):
      shell: Rewrite documentation and improve error message
      t4014-format-patch: Call test_tick before committing
      format-patch: Don't go over merge commits
      fmt_merge_msg: Change fmt_merge_msg API to accept shortlog_len
      merge: Make '--log' an integer option for number of shortlog entries
      merge: Make 'merge.log' an integer or boolean option
      t6200-fmt-merge-msg: Exercise 'merge.log' to configure shortlog length
      t6200-fmt-merge-msg: Exercise '--log' to configure shortlog length
      Porcelain scripts: Rewrite cryptic "needs update" error message
      t9010 (svn-fe): Eliminate dependency on svn perl bindings

Ramsay Jones (10):
      msvc: Fix compilation errors in compat/win32/sys/poll.c
      msvc: git-daemon.exe: Fix linker "unresolved externals" error
      msvc: Fix build by adding missing INTMAX_MAX define
      msvc: Fix macro redefinition warnings
      t3600-rm.sh: Don't pass a non-existent prereq to test #15
      t9142: Move call to start_httpd into the setup test
      lib-git-svn.sh: Avoid setting web server variables unnecessarily
      lib-git-svn.sh: Add check for mis-configured web server variables
      t9501-*.sh: Fix a test failure on Cygwin
      difftool: Fix failure on Cygwin

René Scharfe (7):
      add description parameter to OPT__VERBOSE
      add description parameter to OPT__DRY_RUN
      add description parameter to OPT__QUIET
      add OPT__FORCE
      archive: improve --verbose description
      branch: improve --verbose description
      verify-tag: document --verbose

SZEDER Gábor (7):
      bisect: improve error message of 'bisect log' while not bisecting
      bisect: improve error msg of 'bisect reset' when original HEAD is deleted
      bisect: check for mandatory argument of 'bisect replay'
      bash: offer refs for 'git bisect start'
      bash: not all 'git bisect' subcommands make sense when not bisecting
      bash: support more 'git notes' subcommands and their options
      bash: support pretty format aliases

Santi Béjar (1):
      parse-remote: handle detached HEAD

Schalk, Ken (1):
      t3030: Add a testcase for resolvable rename/add conflict with symlinks

Sebastian Schuberth (3):
      MinGW: Use pid_t more consequently, introduce uid_t for greater compatibility
      MinGW: Add missing file mode bit defines
      On Windows, avoid git-gui to call Cygwin's nice utility

Shawn O. Pearce (2):
      Use git_open_noatime when accessing pack data
      Work around EMFILE when there are too many pack files

Stefan Haller (2):
      gitk: Prevent the text pane from becoming editable
      gitk: Make text selectable on Mac

Stephen Boyd (4):
      send-email: Use To: headers in patch files
      send-email: Don't leak To: headers between patches
      parse-options: Don't call parse_options_check() so much
      parse-options: do not infer PARSE_OPT_NOARG from option type

Steven Walter (1):
      git-svn: allow the mergeinfo property to be set

Sven Eckelmann (1):
      contrib/ciabot: git-describe commit instead of HEAD

Tay Ray Chuan (4):
      t5523-push-upstream: add function to ensure fresh upstream repo
      t5523-push-upstream: test progress messages
      format-patch: page output with --stdout
      bash completion: add basic support for git-reflog

Thiago Farina (3):
      commit: Add commit_list prefix in two function names.
      builtin/branch.c: Use ALLOC_GROW instead of alloc_nr and xrealloc.
      builtin/rm.c: Use ALLOC_GROW instead of alloc_nr and xrealloc.

Thomas Rast (3):
      {cvs,svn}import: use the new 'git read-tree --empty'
      t0003: properly quote $HOME
      gitk: Add the equivalent of diff --color-words

Torsten Bögershausen (1):
      t9143: do not fail when unhandled.log.gz is not created

Yann Dirson (1):
      diff: use "find" instead of "detect" as prefix for long forms of -M and -C

Ævar Arnfjörð Bjarmason (22):
      send-email: use catfile() to concatenate files
      send-email: use lexical filehandle for opendir
      send-email: use lexical filehandles for $compose
      send-email: use lexical filehandles during sending
      send-email: get_patch_subject doesn't need a prototype
      send-email: file_declares_8bit_cte doesn't need a prototype
      send-email: unique_email_list doesn't need a prototype
      send-email: cleanup_compose_files doesn't need a prototype
      send-email: use \E***\Q instead of \*\*\*
      send-email: sanitize_address use $foo, not "$foo"
      send-email: sanitize_address use qq["foo"], not "\"foo\""
      send-email: use (?:) instead of () if no match variables are needed
      send-email: send_message die on $!, not $?
      send-email: make_message_id use "require" instead of "use"
      send-email: use Perl idioms in while loop
      send-email: is_rfc2047_quoted use qr// regexes
      send-email: extract_valid_address use qr// regexes
      Makefile & configure: add a NO_FNMATCH flag
      Makefile & configure: add a NO_FNMATCH_CASEFOLD flag
      test-lib: make test_expect_code a test command
      t7004-tag.sh: re-arrange git tag comment for clarity
      tests: use test_cmp instead of piping to diff(1)

Štěpán Němec (2):
      CodingGuidelines: Add a section on writing documentation
      diff,difftool: Don't use the {0,2} notation in usage strings


Version v1.7.3.5; changes since v1.7.3.4:
-----------------------------------------

Brandon Casey (1):
      test-lib.sh/test_decode_color(): use octal not hex in awk script

Jakub Narębski (1):
      gitweb: Include links to feeds in HTML header only for '200 OK' response

Jeff King (1):
      ident: die on bogus date format

Jiang Xin (1):
      Fix typo in git-gc document.

Jonathan Nieder (2):
      t0050: fix printf format strings for portability
      gitweb: skip logo in atom feed when there is none

Junio C Hamano (5):
      commit: die before asking to edit the log message
      am --abort: keep unrelated commits since the last failure and warn
      rebase --skip: correctly wrap-up when skipping the last patch
      Prepare for 1.7.3.5
      Git 1.7.3.5

Kevin Ballard (1):
      status: Quote paths with spaces in short format

Kirill Smelkov (2):
      t/t8006: Demonstrate blame is broken when cachetextconv is on
      fill_textconv(): Don't get/put cache if sha1 is not valid

Mark Lodato (1):
      fsck docs: remove outdated and useless diagnostic

Michael J Gruber (2):
      git-difftool.txt: correct the description of $BASE and describe $MERGED
      difftool: provide basename to external tools

Ramsay Jones (1):
      t3419-*.sh: Fix arithmetic expansion syntax error

René Scharfe (1):
      close file on error in read_mmfile()

Robin H. Johnson (2):
      Fix false positives in t3404 due to SHELL=/bin/false
      t9001: Fix test prerequisites

Thomas Rast (1):
      userdiff: fix typo in ruby and python word regexes

Vasyl' Vavrychuk (1):
      trace.c: mark file-local function static


Version v1.7.3.4; changes since v1.7.3.3:
-----------------------------------------

Alan Raison (1):
      contrib/hooks/post-receive-email: fix return values from prep_for_email

Alejandro R. Sedeño (1):
      Add --force to git-send-email documentation

Anders Kaseorg (1):
      apply: Recognize epoch timestamps with : in the timezone

Christoph Mallon (1):
      diff --check: correct line numbers of new blank lines at EOF

Clemens Buchacher (6):
      t7607: use test-lib functions and check MERGE_HEAD
      t7607: add leading-path tests
      add function check_ok_to_remove()
      lstat_cache: optionally return match_len
      do not overwrite files in leading path
      use persistent memory for rejected paths

Federico Cuello (1):
      Fix git-apply with -p greater than 1

Gabriel Corona (2):
      t5550: test HTTP authentication and userinfo decoding
      Fix username and password extraction from HTTP URLs

Jakub Narębski (1):
      gitweb: Introduce esc_attr to escape attributes of HTML elements

Jari Aalto (1):
      git-pull.txt: Mention branch.autosetuprebase

Jeff King (2):
      log.decorate: accept 0/1 bool values
      reflogs: clear flags properly in corner case

Jonathan "Duke" Leto (1):
      Correct help blurb in checkout -p and friends

Jonathan Nieder (4):
      apply: handle patches with funny filename and colon in timezone
      cherry-pick/revert: transparently refresh index
      Documentation: split gitignore page into sections
      Documentation: point to related commands from gitignore

Junio C Hamano (5):
      test: git-apply -p2 rename/chmod only
      Do not link with -lcrypto under NO_OPENSSL
      Prepare for 1.7.3.4
      Prepare for 1.7.3.4
      Git 1.6.4.5

Kirill Smelkov (1):
      setup: make sure git_dir path is in a permanent buffer, getenv(3) case

Martin von Zweigbergk (2):
      rebase --abort: do not update branch ref
      rebase: only show stat if configured to true

Michael J Gruber (6):
      t/t7004-tag: test handling of rfc1991 signatures
      verify-tag: factor out signature detection
      tag: factor out sig detection for body edits
      tag: factor out sig detection for tag display
      tag: recognize rfc1991 signatures
      git-rm.txt: Fix quoting

Nguyễn Thái Ngọc Duy (1):
      entry.c: remove "checkout-index" from error messages

Nicolas Pitre (2):
      diff: don't presume empty file when corresponding object is missing
      make pack-objects a bit more resilient to repo corruption

Tay Ray Chuan (10):
      smart-http: Don't change POST to GET when following redirect
      t5550-http-fetch: add missing '&&'
      t5550-http-fetch: add test for http-fetch
      shift end_url_with_slash() from http.[ch] to url.[ch]
      url: add str wrapper for end_url_with_slash()
      http-backend: use end_url_with_slash()
      http-push: Normalise directory names when pushing to some WebDAV servers
      http-push: check path length before using it
      http-push: add trailing slash at arg-parse time, instead of later on
      http-fetch: rework url handling

Ævar Arnfjörð Bjarmason (2):
      perl: bump the required Perl version to 5.8 from 5.6.[21]
      perl: use "use warnings" instead of -w


Version v1.7.3.3; changes since v1.7.3.2:
-----------------------------------------

Andreas Köhler (1):
      submodule sync: Update "submodule.<name>.url" for empty directories

Andrew Waters (1):
      Fix handling of git-p4 on deleted files

Brandon Casey (2):
      userdiff.c: add builtin fortran regex patterns
      builtin/revert.c: don't dereference a NULL pointer

Brian Gernhardt (1):
      t/gitweb-lib: Don't pass constant to decode_utf8

Clemens Buchacher (3):
      add rebase patch id tests
      do not search functions for patch ID
      do not overwrite untracked during merge from unborn branch

Daniel Knittl-Frank (1):
      bash: Match lightweight tags in prompt

David Kågedal (1):
      git-blame.el: Add (require 'format-spec)

Diego Elio Pettenò (1):
      imap-send: link against libcrypto for HMAC and others

Erik Faye-Lund (1):
      mingw: do not set errno to 0 on success

Giuseppe Bilotta (1):
      CodingGuidelines: mention whitespace preferences for shell scripts

Jan Krüger (2):
      repack: add -F flag to let user choose between --no-reuse-delta/object
      Documentation: pack.compression: explain how to recompress

Jari Aalto (1):
      git-commit.txt: (synopsis): move -i and -o before "--"

Jeff King (6):
      diff: don't use pathname-based diff drivers for symlinks
      rev-list: handle %x00 NUL in user format
      docs: give more hints about how "add -e" works
      apply: don't segfault on binary files with missing data
      docs: give more hints about how "add -e" works
      document sigchain api

Jens Lehmann (1):
      pull: Remove --tags option from manpage

Jim Meyering (1):
      mailmap: fix use of freed memory

Joe Perches (1):
      git-send-email.perl: Deduplicate "to:" and "cc:" entries with names

Jonathan Nieder (5):
      t4203 (mailmap): stop hardcoding commit ids and dates
      send-pack: avoid redundant "pack-objects died with strange error"
      Documentation: document show -s
      add: introduce add.ignoreerrors synonym for add.ignore-errors
      Documentation: do not misinterpret pull refspec as bold text

Junio C Hamano (5):
      t4203: do not let "git shortlog" DWIM based on tty
      t3402: test "rebase -s<strategy> -X<opt>"
      Documentation: Fix mark-up of lines with more than one tilde
      Git 1.7.0.8
      Git 1.7.3.3

Kevin Ballard (2):
      test-lib: extend test_decode_color to handle more color codes
      diff: handle lines containing only whitespace and tabs better

Kevin P. Fleming (1):
      post-receive-email: ensure sent messages are not empty

Kirill Smelkov (3):
      blame,cat-file: Prepare --textconv tests for correctly-failing conversion program
      blame,cat-file: Demonstrate --textconv is wrongly running converter on symlinks
      blame,cat-file --textconv: Don't assume mode is ``S_IFREF | 0664''

Martin von Zweigbergk (2):
      rebase -X: do not clobber strategy
      Documentation/git-pull: clarify configuration

Michael J Gruber (6):
      git-reset.txt: clarify branch vs. branch head
      git-reset.txt: reset does not change files in target
      git-reset.txt: reset --soft is not a no-op
      git-reset.txt: use "working tree" consistently
      git-reset.txt: point to git-checkout
      git-reset.txt: make modes description more consistent

Nathan W. Panike (1):
      Fix a formatting error in git-merge.txt

Nguyễn Thái Ngọc Duy (3):
      dir.c: fix EXC_FLAG_MUSTBEDIR match in sparse checkout
      clean: avoid quoting twice
      clean: remove redundant variable baselen

René Scharfe (1):
      diff: avoid repeated scanning while looking for funcname

Thomas Rast (4):
      send-email: Refuse to send cover-letter template subject
      prefix_filename(): safely handle the case where pfx_len=0
      merge-file: correctly find files when called in subdir
      repack: place temporary packs under .git/objects/pack/

Uwe Kleine-König (1):
      get_author_ident_from_commit(): remove useless quoting

Yann Dirson (3):
      Fix copy-pasted comments related to tree diff handling.
      Keep together options controlling the behaviour of diffcore-rename.
      Document that rev-list --graph triggers parent rewriting.

Ævar Arnfjörð Bjarmason (1):
      Makefile: add CC to TRACK_CFLAGS


Version v1.7.3.2; changes since v1.7.3.1:
-----------------------------------------

Andreas Gruenbacher (1):
      Clarify and extend the "git diff" format documentation

Antonio Ospite (1):
      t/t9001-send-email.sh: fix stderr redirection in 'Invalid In-Reply-To'

Bert Wesarg (1):
      Documentation: update-index: -z applies also to --index-info

Brandon Casey (1):
      diffcore-pickaxe.c: remove unnecessary curly braces

Cliff Frey (1):
      documentation: git-config minor cleanups

Elijah Newren (1):
      t3020 (ls-files-error-unmatch): remove stray '1' from end of file

Eric Wong (1):
      Documentation/git-svn: discourage "noMetadata"

Erik Faye-Lund (1):
      do not depend on signed integer overflow

Johannes Schindelin (2):
      Make sure that git_getpass() never returns NULL
      Fix typo in pack-objects' usage

Jon Seymour (1):
      stash: simplify parsing fixes

Jonathan Nieder (10):
      t0004 (unwritable files): simplify error handling
      environment.c: remove unused variable
      setup: make sure git dir path is in a permanent buffer
      init: plug tiny one-time memory leak
      xdiff: cast arguments for ctype functions to unsigned char
      Documentation: No argument of ALLOC_GROW should have side-effects
      Documentation: gitrevisions is in section 7
      Documentation: diff can compare blobs
      Documentation: expand 'git diff' SEE ALSO section
      Documentation: update implicit "--no-index" behavior in "git diff"

Junio C Hamano (4):
      MinGW: avoid collisions between "tags" and "TAGS"
      CodingGuidelines: reword parameter expansion section
      shell portability: no "export VAR=VAL"
      Git 1.7.3.2

Kevin Ballard (1):
      Update test script annotate-tests.sh to handle missing/extra authors

Kirill Smelkov (1):
      user-manual: be consistent in illustrations to 'git rebase'

Mathias Lafeldt (1):
      git-svn: fix processing of decorated commit hashes

Matthieu Moy (1):
      diff: trivial fix for --output file error message

Michael J Gruber (4):
      remote-helpers: build in platform independent directory
      user-manual: fix anchor name Finding-comments-With-given-Content
      rev-list-options: clarify --parents and --children
      git-show-ref.txt: clarify the pattern matching

Ramkumar Ramachandra (1):
      SubmittingPatches: Document some extra tags used in commit messages

René Scharfe (1):
      work around buggy S_ISxxx(m) implementations

Steven Walter (1):
      git-svn: check_cherry_pick should exclude commits already in our history

Tony Luck (1):
      Better advice on using topic branches for kernel development

Uwe Kleine-König (1):
      Documentation/git-clone: describe --mirror more verbosely

Yann Dirson (1):
      t/t3415: use && where applicable.

Štěpán Němec (6):
      Use angles for placeholders consistently
      Fix odd markup in --diff-filter documentation
      Use parentheses and `...' where appropriate
      Remove stray quotes in --pretty and --format documentation
      Put a space between `<' and argument in pack-objects usage string
      Fix {update,checkout}-index usage strings


Version v1.7.3.1; changes since v1.7.3:
---------------------------------------

Brandon Casey (3):
      t/t3903-stash: improve testing of git-stash show
      wt-status.c: don't leak directory entries when processing untracked,ignored
      git-send-email.perl: ensure $domain is defined before using it

Brian Gernhardt (1):
      git-stash: fix flag parsing

Christian Couder (1):
      t6050 (replace): fix bogus "fetch branch with replacement" test

Daniel Knittl-Frank (1):
      Improvements to `git checkout -h`

Jeff King (1):
      prefer test -h over test -L in shell scripts

Jon Seymour (1):
      stash: fix git stash branch regression when branch creation fails

Junio C Hamano (2):
      CodingGuidelines: spell Arithmetic Expansion with $(($var))
      Git 1.7.3.1

Linus Torvalds (1):
      Fix missing 'does' in man-page for 'git checkout'

Matthieu Moy (1):
      update comment and documentation for :/foo syntax

Michael J Gruber (1):
      contrib/completion: --no-index option to git diff

Pat Notz (2):
      strbuf.h: fix comment typo
      dir.c: squelch false uninitialized memory warning

Ramsay Jones (1):
      t1503: Fix arithmetic expansion syntax error when using dash

Tomas Carnecky (1):
      stash drops the stash even if creating the branch fails because it already exists

Wesley J. Landaker (1):
      Documentation: Refer to git-commit-tree in git-filter-branch help


Version v1.7.3; changes since v1.7.3-rc2:
-----------------------------------------

Brandon Casey (1):
      t/t7300: workaround ancient touch by rearranging arguments

Brian Gernhardt (1):
      t7003: Use test_commit instead of custom function

Chris Johnsen (1):
      git-rebase--interactive.sh: replace cut with ${v%% *}

Jay Soffian (1):
      git-ls-files.txt: clarify -x/--exclude option

Junio C Hamano (2):
      ls-files documentation: reword for consistency
      Git 1.7.3


Version v1.7.3-rc2; changes since v1.7.3-rc1:
---------------------------------------------

Csaba Henk (2):
      bundle: detect if bundle file cannot be created
      filter-branch: retire --remap-to-ancestor

Jens Lehmann (2):
      Several tests: cd inside subshell instead of around
      t1020: Get rid of 'cd "$HERE"' at the start of each test

Jonathan Nieder (5):
      tests: subshell indentation stylefix
      t1450 (fsck): remove dangling objects
      t2105 (gitfile): add missing &&
      t1302 (core.repositoryversion): style tweaks
      t2016 (checkout -p): add missing &&

Junio C Hamano (3):
      t3101: modernise style
      ls-tree $di $dir: do not mistakenly recurse into directories
      Git 1.7.3 rc2

Matthieu Moy (1):
      git-gui: use shell to launch textconv filter in "blame"

Oded Shimon (1):
      Add --src/dst-prefix to git-formt-patch in git-rebase.sh

Pat Thoyts (6):
      git-gui: Make usage statement visible on Windows.
      git-gui: display error launching blame as a message box.
      git-gui: handle textconv filter on Windows and in development
      git-gui: ensure correct application termination in git-gui--askpass
      git-gui: avoid mis-encoding the copyright message on Windows.
      git-gui 0.13

Peter Krefting (1):
      git-gui: Update Swedish translation (521t).

Ramsay Jones (1):
      vcs-svn: Fix some printf format compiler warnings

René Scharfe (1):
      compat/nedmalloc: don't force NDEBUG on the rest of git

Schalk, Ken (1):
      RE: [PATCH] Avoid rename/add conflict when contents are identical


Version v1.7.3-rc1; changes since v1.7.3-rc0:
---------------------------------------------

Anselm Kruis (1):
      Add a new option 'core.askpass'.

Brandon Casey (10):
      t/t5510: demonstrate failure to fetch when current branch has merge ref
      builtin/fetch.c: ignore merge config when not fetching from branch's remote
      t/t7008: workaround broken handling of \000 by printf on IRIX
      Makefile: use compat regex on IRIX 6.5
      builtin/fetch.c: comment that branch->remote_name is usable when has_merge
      t/t5510-fetch.sh: improve testing with explicit URL and merge spec
      diff.c: call regfree to free memory allocated by regcomp when necessary
      xdiff-interface.c: always trim trailing space from xfuncname matches
      t/t4018: test whether the word_regex patterns compile
      t/t4018: avoid two unnecessary sub-shell invocations

Elijah Newren (2):
      cache_tree_free: Fix small memory leak
      revert: Fix trivial comment style issue

Jeff King (3):
      pass "git -c foo=bar" params through environment
      tests: make test_must_fail more verbose
      tests: make test_must_fail fail on missing commands

Jens Lehmann (1):
      t3404 & t7508: cd inside subshell instead of around

Johan Herland (1):
      notes: Don't create (empty) commit when removing non-existing notes

Johannes Sixt (1):
      fast-export: ensure that a renamed file is printed after all references

Jonathan Nieder (3):
      do not pass "git -c foo=bar" params to transport helpers
      tests: make test_might_fail more verbose
      tests: make test_might_fail fail on missing commands

Junio C Hamano (3):
      install-webdoc: keep installed RelNotes-*.txt
      Prepare for 1.7.3 rc1
      Git 1.7.3 rc1

Knut Franke (2):
      Allow core.askpass to override SSH_ASKPASS.
      Extend documentation of core.askpass and GIT_ASKPASS.

Mark Lodato (1):
      config.txt: fix placement of diff.noprefix

Nicolas Pitre (1):
      Documentation: move RelNotes into a directory of their own

Thiago Farina (2):
      builtin.h: Move two functions definitions to help.h.
      builtin/clean.c: Use STRING_LIST_INIT_NODUP.


Version v1.7.3-rc0; changes since v1.7.2.5:
-------------------------------------------

Alejandro R. Sedeño (1):
      gitweb: move highlight config out of guess_file_syntax()

Alex Riesen (2):
      Add a for_each_string_list_item macro
      Convert the users of for_each_string_list to for_each_string_list_item macro

Alexander Gladysh (1):
      Add a rename + D/F conflict testcase

Anders Kaseorg (1):
      gitweb: Don't die_error in git_tag after already printing headers

Brandon Casey (2):
      git-rebase--interactive.sh: rework skip_unnecessary_picks
      git-rebase--interactive.sh: use printf instead of echo to print commit message

Brian Gernhardt (2):
      t7610: cd inside subshell instead of around
      t7606: Avoid using head as a file name

Charles Bailey (1):
      mergetool: Remove explicit references to /dev/tty

Christian Couder (11):
      revert: report success when using option --strategy
      revert: refactor commit code into a new run_git_commit() function
      revert: don't print "Finished one cherry-pick." if commit failed
      revert: improve success message by adding abbreviated commit sha1
      t3508: add check_head_differs_from() helper function and use it
      revert: fix off by one read when searching the end of a commit subject
      revert: refactor code to find commit subject in find_commit_subject()
      revert: rename variables related to subject in get_message()
      bisect: use find_commit_subject() instead of custom code
      merge-recursive: use find_commit_subject() instead of custom code
      blame: use find_commit_subject() instead of custom code

Clemens Buchacher (1):
      hash binary sha1 into patch id

David Aguilar (1):
      mergetool: Skip autoresolved paths

David Barr (5):
      Add memory pool library
      Add string-specific memory pool
      Add stream helper library
      Infrastructure to write revisions in fast-export format
      SVN dump parser

David D. Kilzer (3):
      git svn: fix dcommit to work with touched files
      git-svn: fix regex to remove "tail" from svn tags
      git-svn: fix fetch with deleted tag

Diane Gasselin (2):
      merge-recursive: porcelain messages for checkout
      t7609: test merge and checkout error messages

Dmitry Statyvka (1):
      git svn: add an option to recode pathnames

Elijah Newren (13):
      Add additional testcases for D/F conflicts
      merge-recursive: Fix D/F conflicts
      merge_recursive: Fix renames across paths below D/F conflicts
      fast-export: Fix output order of D/F changes
      fast-import: Improve robustness when D->F changes provided in wrong order
      fast-export: Fix dropping of files with --import-marks and path limiting
      fast-export: Add a --full-tree option
      upload-pack: Improve error message when bad ref requested
      Mark tests that use symlinks as needing SYMLINKS prerequisite
      merge-recursive: Fix typo
      t6031: Add a testcase covering multiple renames across a D/F conflict
      merge-recursive: Fix multiple file rename across D/F conflict
      merge-recursive: Avoid excessive output for and reprocessing of renames

Eric Wong (4):
      instaweb: fix WEBrick server support
      instaweb: minimize moving parts for WEBrick
      instaweb: add access+error logging for WEBrick
      t9155: fix compatibility with older SVN

Eyvind Bernhardsen (3):
      Avoid conflicts when merging branches with mixed normalization
      Try normalizing files to avoid delete/modify conflicts when merging
      Don't expand CRLFs when normalizing text during merge

Frank Li (1):
      Change regerror() declaration from K&R style to ANSI C (C89)

Greg Brockman (1):
      split_cmdline: Allow caller to access error string

Heiko Voigt (4):
      Teach ref iteration module about submodules
      setup_revisions(): Allow walking history in a submodule
      Implement automatic fast-forward merge for submodules
      add configuration variable for --autosquash option of interactive rebase

Jakub Narębski (1):
      gitweb: Fix typo in run() subroutine

Jared Hance (5):
      Convert "! git" to "test_must_fail git"
      Add -e/--exclude to git-clean.
      Add test for git clean -e.
      builtin/push.c: remove useless temporary variable
      Document git-instaweb start/stop/restart

Jason Evans (1):
      Add treap implementation

Jeff King (1):
      docs: fix Makefile dependency for user manual

Jens Lehmann (7):
      Submodules: Add the new "ignore" config option for diff and status
      Submodules: Use "ignore" settings from .gitmodules too for diff and status
      Add tests for the diff.ignoreSubmodules config option
      checkout: Add test for diff.ignoreSubmodules
      checkout: Use submodule.*.ignore settings from .git/config and .gitmodules
      t7405: cd inside subshell instead of around
      t7406 & t7407: add missing && at end of lines

Johan Herland (2):
      Make graph_next_line() available in the graph.h API
      Enable custom schemes for column colors in the graph API

Johannes Schindelin (2):
      Add the 'diff.ignoreSubmodules' config setting
      checkout: respect diff.ignoreSubmodules setting

Johannes Sixt (1):
      Fix compat/regex ANSIfication on MinGW

Jon Seymour (14):
      detached-stash: introduce parse_flags_and_revs function
      detached-stash: work around git rev-parse failure to detect bad log refs
      detached-stash: simplify stash_apply
      detached-stash: simplify stash_drop
      detached-stash: refactor git stash pop implementation
      detached-stash: simplify git stash branch
      detached-stash: simplify git stash show
      detached-stash: tests of git stash with stash-like arguments
      detached-stash: update Documentation
      rev-parse: exit with non-zero status if ref@{n} is not valid.
      sha1_name.c: use warning in preference to fprintf(stderr
      rev-parse: tests git rev-parse --verify master@{n}, for various n
      t1503: fix broken test_must_fail calls
      t3903: fix broken test_must_fail calls

Jonathan Nieder (89):
      Teach fast-import to import subtrees named by tree id
      Export parse_date_basic() to convert a date string to timestamp
      t1501 (rev-parse): clarify
      tests: try git apply from subdir of toplevel
      setup: split off $GIT_DIR-set case from setup_git_directory_gently
      setup: split off a function to checks working dir for .git file
      setup: split off code to handle stumbling upon a repository
      setup: split off a function to handle hitting ceiling in repo search
      setup: split off get_device_or_die helper
      t1011 (sparse checkout): style nitpicks
      gitweb: allow configurations that change with each request
      t4111 (apply): refresh index before applying patches to it
      diff: split off a function for --stat-* option parsing
      t6038 (merge.renormalize): style nitpicks
      t6038 (merge.renormalize): try checkout -m and cherry-pick
      t6038 (merge.renormalize): check that it can be turned off
      merge-trees: push choice to renormalize away from low level
      merge-trees: let caller decide whether to renormalize
      Documentation/technical: document ll_merge
      ll-merge: make flag easier to populate
      ll-merge: let caller decide whether to renormalize
      t4200 (rerere): modernize style
      rerere: migrate to parse-options API
      rerere: never renormalize
      merge-recursive --renormalize
      Introduce vcs-svn lib
      Update svn-fe manual
      svn-fe manual: Clarify warning about deltas in dump files
      vcs-svn: remove build artifacts on "make clean"
      treap: style fix
      compat: add strtok_r()
      vcs-svn: Rename dirent pool to build on Windows
      vcs-svn: Avoid %z in format string
      t9010 (svn-fe): use Unix-style path in URI
      t9010 (svn-fe): avoid symlinks in test
      Eliminate “Finished cherry-pick/revert” message
      Introduce advise() to print hints
      cherry-pick/revert: Use error() for failure message
      cherry-pick/revert: Use advise() for hints
      t7606 (merge-theirs): modernize style
      merge: let custom strategies intervene in trivial merges
      t7006 (pager): add missing TTY prerequisites
      merge: do not mistake (ancestor of) tag for branch
      t7600 (merge): modernize style
      t7600 (merge): do not launch gitk for --debug
      t7600 (merge): check reflog entry
      t7600 (merge): test merge from branch yet to be born
      t6010 (merge-base): modernize style
      t6200 (fmt-merge-msg): style nitpicks
      Documentation: add a SEE ALSO section for merge-base
      merge-base --octopus to mimic show-branch --merge-base
      merge-base --independent to print reduced parent list in a merge
      fmt-merge-msg -m to override merge title
      merge script: --squash, --ff from unborn branch are errors
      merge script: tweak unmerged files message to match builtin
      merge script: refuse to merge during merge
      merge script: improve log message subject
      merge script: merge -X<option>
      merge script: allow custom strategies
      merge script: forbid merge -s index
      merge script: handle -m --log correctly
      merge script: handle many-way octopus
      merge script: --ff-only to disallow true merge
      merge script: handle --no-ff --no-commit correctly
      merge script: notice @{-1} shorthand
      merge script: learn --[no-]rerere-autoupdate
      autoconf: don't use platform regex if it lacks REG_STARTEND
      Documentation: set a !DOCTYPE for user manual
      Documentation: tweak description of log.date
      Documentation: quoting trouble in "git rm" discussion
      Documentation: unbreak regex in show-ref manual
      Documentation: clarify quoting in "git add" example
      Documentation: add missing quotes to "git grep" examples
      Documentation: clarify quoting in "git rm" example
      Documentation: clarify quoting in gitignore docs
      Documentation: remove backslashes in manpage synopses
      Documentation/technical: avoid stray backslash in parse-options API docs
      Documentation: remove stray backslash from "git bundle" manual
      Documentation: remove backslash before ~ in fast-import manual
      Documentation: remove stray backslashes in rev-parse manual
      Documentation: avoid stray backslashes in core tutorial
      Documentation: avoid stray backslash in user manual
      Documentation: do not convert ... operator to ellipses
      Documentation: remove stray backslashes from "Fighting regressions" article
      Documentation: remove stray backslash in show-branch discussion
      apply: split quoted filename handling into new function
      tests: exercise "git apply" with weird filenames
      apply: handle traditional patches with space in filename
      tests: simplify "missing PREREQ" message

Junio C Hamano (6):
      cvs tests: do not touch test CVS repositories shipped with source
      compat/regex: get rid of old-style definition
      autoconf: regex library detection typofix
      Work around em-dash handling in newer AsciiDoc
      install-webdoc: filter timestamp-only changes correctly
      Prepare for 1.7.3

Kevin P. Fleming (1):
      post-receive-email: optional message line count limit

Matthieu Moy (14):
      diff: parse separate options like -S foo
      diff: parse separate options --stat-width n, --stat-name-width n
      log: parse separate options like git log --grep foo
      log: parse separate option for --glob
      rebase -i: add exec command to launch a shell command
      test-lib: user-friendly alternatives to test [-d|-f|-e]
      Turn unpack_trees_options.msgs into an array + enum
      merge-recursive: distinguish "removed" and "overwritten" messages
      unpack_trees: group error messages by type
      tests: factor HOME=$(pwd) in test-lib.sh
      Move set_porcelain_error_msgs to unpack-trees.c and rename it
      setup_unpack_trees_porcelain: take the whole options struct as parameter
      Move "show_all_errors = 1" to setup_unpack_trees_porcelain()
      t7609-merge-co-error-msgs: test non-fast forward case too.

Michael J Gruber (3):
      git-bundle.txt: Cleanup
      git-bundle.txt: whitespace cleanup
      git-bundle.txt: Clarify rev-list-args restrictions

Mike Lundy (1):
      rebase: support -X to pass through strategy options

Nguyễn Thái Ngọc Duy (22):
      upload-pack: remove unused "create_full_pack" code in do_rev_list
      setup: do not forget working dir from subdir of gitdir
      Revert "rehabilitate 'git index-pack' inside the object store"
      setup: split off a function to handle ordinary .git directories
      unpack-trees: only clear CE_UPDATE|CE_REMOVE when skip-worktree is always set
      unpack-trees: let read-tree -u remove index entries outside sparse area
      unpack-trees: do not check for conflict entries too early
      unpack-trees: mark new entries skip-worktree appropriately
      git wrapper: introduce startup_info struct
      setup: remember whether repository was found
      git wrapper: allow setup_git_directory_gently() be called earlier
      shortlog: run setup_git_directory_gently() sooner
      grep: run setup_git_directory_gently() sooner
      apply: run setup_git_directory_gently() sooner
      bundle: run setup_git_directory_gently() sooner
      config: run setup_git_directory_gently() sooner
      index-pack: run setup_git_directory_gently() sooner
      ls-remote: run setup_git_directory_gently() sooner
      var: run setup_git_directory_gently() sooner
      merge-file: run setup_git_directory_gently() sooner
      clone: warn users --depth is ignored in local clones
      parse_object: pass on the original sha1, not the replaced one

Petr Onderka (1):
      Userdiff patterns for C#

Ralf Wildenhues (1):
      Typos in code comments, an error message, documentation

Ramkumar Ramachandra (1):
      builtin/checkout: Fix message when switching to an existing branch

Spencer E. Olson (1):
      Allow HTTP user agent string to be modified.

Steven Walter (1):
      git svn: URL-decode left-hand side of svn refspec

Sverre Rabbelier (1):
      config: add --local option

Tay Ray Chuan (4):
      add tests for checkout -b
      builtin/checkout: reword hint for -b
      builtin/checkout: learn -B
      builtin/checkout: handle -B from detached HEAD correctly

Thiago Farina (2):
      string_list: Add STRING_LIST_INIT macro and make use of it.
      object.h: Add OBJECT_ARRAY_INIT macro and make use of it.

Thomas Rast (4):
      Do not unquote + into ' ' in URLs
      ls-files: learn a debugging dump format
      Makefile: make gcov invocation configurable
      test: Introduce $GIT_BUILD_DIR

Ævar Arnfjörð Bjarmason (59):
      sha1_file: Show the the type and path to corrupt objects
      tests: Ignore the Test::Harness .prove file
      t/t6035-merge-dir-to-symlink.sh: Remove TODO on passing test
      SubmittingPatches: Clarify the Signed-off-by rules
      SubmittingPatches: Cite the 50 char subject limit
      perl/Makefile: Unset INSTALL_BASE when making perl.mak
      test-lib: Don't write test-results when HARNESS_ACTIVE
      test-lib: Add support for multiple test prerequisites
      test-lib: Print missing prerequisites in test output
      t/README: Document the predefined test prerequisites
      tests: A SANITY test prereq for testing if we're root
      test-lib: Multi-prereq support only checked the last prereq
      tests: Infrastructure for Git smoke testing
      t/README: Document the Smoke testing
      t/Makefile: Can't include GIT-BUILD-OPTIONS, it's a .sh
      t/README: Add SMOKE_{COMMENT,TAGS}= to smoke_report target
      gitignore: Ignore files generated by "make coverage"
      Makefile: Include subdirectories in "make cover" reports
      Makefile: Split out the untested functions target
      Makefile: Add cover_db target
      Makefile: Add cover_db_html target
      t/README: A new section about test coverage
      t/README: Add a note about the dangers of coverage chasing
      tests: implicitly skip SYMLINKS tests using <prereq>
      t/t4004-diff-rename-symlink.sh: use three-arg <prereq>
      t/t5800-remote-helpers.sh: Skip with prereq on python <2.4
      t/t7800-difftool.sh: Skip with prereq on no PERL
      t/README: Update "Skipping tests" to align with best practices
      t/t1304-default-acl: change from skip_all=* to prereq skip
      t/t5705-clone-2gb: change from skip_all=* to prereq skip
      t/t7005-editor: change from skip_all=* to prereq skip
      t/t5503-tagfollow: change from skip_all=* to prereq skip
      t/t4016-diff-quote: change from skip_all=* to prereq skip
      t/t3902-quoted: change from skip_all=* to prereq skip
      t/t3300-funny-names: change from skip_all=* to prereq skip
      git-notes: Run partial expensive test everywhere
      t/Makefile: Create test-results dir for smoke target
      tests: Move FILEMODE prerequisite to lib-prereq-FILEMODE.sh
      t/t3701-add-interactive.sh: change from skip_all=* to prereq skip
      lib-patch-mode tests: change from skip_all=* to prereq skip
      t/t9600-cvsimport.sh: change from skip_all=* to prereq skip
      t/t9001-send-email.sh: Remove needless PROG=* assignment
      t/t9001-send-email.sh: change from skip_all=* to prereq skip
      t/t9001-send-email.sh: convert setup code to tests
      t/t7105-reset-patch.sh: Add a PERL prerequisite
      t/t9601-cvsimport-vendor-branch.sh: Add a PERL prerequisite
      t/t9602-cvsimport-branches-tags.sh: Add a PERL prerequisite
      tests: fix syntax error in "Use advise() for hints" test
      compat/regex: use the regex engine from gawk for compat
      compat/regex: get the gawk regex engine to compile within git
      compat/regex: define out variables only used under RE_ENABLE_I18N
      t/t9010-svn-fe.sh: add an +x bit to this test
      t/t7008-grep-binary.sh: un-TODO a test that needs REG_STARTEND
      reset: suggest what to do upon "git reset --mixed <paths>"
      test-lib: Use $TEST_DIRECTORY or $GIT_BUILD_DIR instead of $(pwd) and ../
      test-lib: Use "$GIT_BUILD_DIR" instead of "$TEST_DIRECTORY"/../
      test-lib: Allow overriding of TEST_DIRECTORY
      t/t0000-basic.sh: Run the passing TODO test inside its own test-lib
      test-lib: use subshell instead of cd $new && .. && cd $old


Version v1.7.2.5; changes since v1.7.2.4:
-----------------------------------------

Jakub Narębski (1):
      gitweb: Introduce esc_attr to escape attributes of HTML elements

Junio C Hamano (1):
      Git 1.6.4.5


Version v1.7.2.4; changes since v1.7.2.3:
-----------------------------------------

Brandon Casey (2):
      diff.c: call regfree to free memory allocated by regcomp when necessary
      xdiff-interface.c: always trim trailing space from xfuncname matches

Daniel Knittl-Frank (1):
      bash: Match lightweight tags in prompt

Elijah Newren (2):
      cache_tree_free: Fix small memory leak
      revert: Fix trivial comment style issue

Jared Hance (1):
      Fix whitespace issue in object.c

Jari Aalto (1):
      git-commit.txt: (synopsis): move -i and -o before "--"

Jens Lehmann (1):
      t5505: add missing &&

Jonathan Nieder (1):
      add: introduce add.ignoreerrors synonym for add.ignore-errors

Junio C Hamano (3):
      tag.c: whitespace breakages fix
      t3101: modernise style
      Git 1.7.0.8

Mark Lodato (1):
      config.txt: fix placement of diff.noprefix

René Scharfe (1):
      compat/nedmalloc: don't force NDEBUG on the rest of git


Version v1.7.2.3; changes since v1.7.2.2:
-----------------------------------------

Brandon Casey (2):
      Makefile: link builtins residing in bin directory to main git binary too
      Makefile: make hard/symbolic links for non-builtins too

Dan Johnson (1):
      fetch: allow command line --tags to override config

David Aguilar (1):
      submodule sync: Update "submodule.<name>.url"

Elijah Newren (3):
      t5520-pull: Add testcases showing spurious conflicts from git pull --rebase
      pull --rebase: Avoid spurious conflicts and reapplying unnecessary patches
      tree-walk: Correct bitrotted comment about tree_entry()

Greg Price (1):
      pack-refs: remove newly empty directories

Jay Soffian (1):
      for-each-ref: fix objectname:short bug

Jens Lehmann (1):
      t7403: add missing &&'s

Jonathan Nieder (12):
      t4150 (am): style fix
      t4150 (am): futureproof against failing tests
      t3400 (rebase): whitespace cleanup
      archive: abbreviate substituted commit ids again
      checkout, commit: remove confusing assignments to rev.abbrev
      examples/commit: use --abbrev for commit summary
      Documentation: flesh out “git pull” description
      core: Stop leaking ondisk_cache_entrys
      read-tree: stop leaking tree objects
      write-tree: Avoid leak when index refers to an invalid object
      t3302 (notes): Port to Solaris
      parse-options: clarify PARSE_OPT_NOARG description

Junio C Hamano (6):
      Teach "apply --index-info" to handle rename patches
      rebase: protect against diff.renames configuration
      diff --follow: do not waste cycles while recursing
      diff --follow: do call diffcore_std() as necessary
      Prepare for 1.7.2.3
      Git 1.7.2.3

Linus Torvalds (1):
      Fix 'git log' early pager startup error case

Mark Rada (1):
      Tell ignore file about generate files in /gitweb/static

Matthieu Moy (2):
      xmalloc: include size in the failure message
      t0003: add missing && at end of lines

Nicolas Pitre (1):
      fix >4GiB source delta assertion failure

Ralf Wildenhues (1):
      Typos in code comments, an error message, documentation

SZEDER Gábor (2):
      mingw_utime(): handle NULL times parameter
      rerere: fix overeager gc

Thiago Farina (1):
      builtin/merge_recursive.c: Add an usage string and make use of it.

Thomas Rast (5):
      Documentation/git-reset: reorder modes for soft-mixed-hard progression
      Documentation/reset: separate options by mode
      Documentation/reset: promote 'examples' one section up
      Documentation/reset: reorder examples to match description
      Documentation/reset: move "undo permanently" example behind "make topic"

Ville Skyttä (1):
      Documentation: spelling fixes

Ævar Arnfjörð Bjarmason (1):
      log: test for regression introduced in v1.7.2-rc0~103^2~2


Version v1.7.2.2; changes since v1.7.2.1:
-----------------------------------------

Brad King (1):
      Documentation: cite git-am from git-apply

Brandon Casey (1):
      t/t7003: replace \t with literal tab in sed expression

Clément Poulain (1):
      git-gui: use textconv filter for diff and blame

David D. Kilzer (1):
      Fix git rebase --continue to work with touched files

Heiko Voigt (5):
      git-gui: check whether systems nice command works or disable it
      git-gui: fix usage of themed widgets variable
      git-gui: fix usage of _gitworktree when creating shortcut for windows
      git-gui: fix PATH environment for mingw development environment
      git-gui: fix shortcut creation on cygwin

Jakub Narębski (1):
      diff: strip extra "/" when stripping prefix

Jonathan Nieder (7):
      check-ref-format: handle subcommands in separate functions
      Allow "check-ref-format --branch" from subdirectory
      Makefile: add missing dependencies on url.h
      Makefile: add missing dependency on http.h
      Documentation: add a FILES section for show-ref
      gitweb: clarify search results page when no matching commit found
      Standardize do { ... } while (0) style

Junio C Hamano (4):
      Fix DIFF_QUEUE_CLEAR refactoring
      Documentation: reporting bugs
      sha1_name.c: fix parsing of ":/token" syntax
      Git 1.7.2.2

Markus Heidelberg (1):
      git-gui: fix "Explore Working Copy" for Windows again

Matthieu Moy (5):
      Document ls-files -t as semi-obsolete.
      pretty-options.txt: match --format's documentation with implementation.
      Document -B<n>[/<m>], -M<n> and -C<n> variants of -B, -M and -C
      post-receive-email: remove spurious commas in email subject
      push: mention "git pull" in error message for non-fast forwards

Michael J Gruber (1):
      Documentation/git-log: Clarify --full-diff

Nelson Elhage (1):
      index-pack: Don't follow replace refs.

Pat Thoyts (4):
      git-gui: Handle failure of core.worktree to identify the working directory.
      git-gui: Avoid using the <<Copy>> binding as a menu accelerator on win32
      git-gui: mc cannot be used before msgcat has been loaded
      git-gui: fix size and position of window panes on startup

Raja R Harinath (1):
      fast-import: export correctly marks larger than 2^20-1

Ramkumar Ramachandra (2):
      contrib/svn-fe: Fix IncludePath
      contrib/svn-fe: Add the svn-fe target to .gitignore

René Scharfe (2):
      notes: allow --dry-run for -n and --verbose for -v
      prune: allow --dry-run for -n and --verbose for -v

Shawn O. Pearce (1):
      smart-http: Don't deadlock on server failure

Thomas Rast (3):
      xsize_t: check whether we lose bits
      Documentation/rev-parse: quoting is required with --parseopt
      t7003: fix subdirectory-filter test

Willy Tarreau (1):
      git-rebase: fix typo when parsing --force-rebase

Ævar Arnfjörð Bjarmason (4):
      test-lib: Ignore --quiet under a TAP harness
      test-lib: Remove 3 year old no-op --no-python option
      imap-send: Fix sprintf usage
      t/lib-git-svn.sh: use $PERL_PATH for perl, not perl from $PATH


Version v1.7.2.1; changes since v1.7.2:
---------------------------------------

Brandon Casey (1):
      git-rebase--interactive.sh: use printf instead of echo to print commit message

Dan McGee (3):
      git-instaweb: Fix custom apache log placement
      git-instaweb: Fix Apache environment variable passing
      git-instaweb: Don't assume Apache executable is named apache2

Greg Brockman (1):
      Check size of path buffer before writing into it

Johannes Sixt (1):
      t3700-add: fix dependence on stdout and stderr buffering

Jon Seymour (1):
      INSTALL: configure /etc/xml/catalog to build docs on Cygwin

Jonathan Nieder (1):
      config --get --path: check for unset $HOME

Junio C Hamano (3):
      Git 1.7.0.7
      Git 1.7.1.2
      Git 1.7.2.1

Matthieu Moy (1):
      Clarify help message when no remote is specified in fetch/pull.

Nathan W. Panike (1):
      Add a google-chrome option for web--browse

Nguyễn Thái Ngọc Duy (1):
      git-read-tree.txt: acknowledge the directory matching bug in sparse checkout

Stephen Boyd (2):
      request-pull.txt: Document -p option
      commit: remove full stop from usage help for -u

Thomas Rast (5):
      Cast execl*() NULL sentinels to (char *)
      Document receive.denyDeleteCurrent
      Documentation/git-push: Explain status output in more detail
      Fix 'git' wrapper usage string
      Makefile: add check-docs exception for gitrevisions


Version v1.7.2; changes since v1.7.2-rc3:
-----------------------------------------

Brandon Casey (6):
      Makefile: remove some unnecessary curly braces
      Makefile: work around ksh's failure to handle missing list argument to for loop
      t/README: clarify test_must_fail description
      t/t3700: convert two uses of negation operator '!' to use test_must_fail
      t/{t5541,lib-httpd}: replace problematic '!()' notation with test_must_fail
      t/: work around one-shot variable assignment with test_must_fail

David Aguilar (1):
      Documentation: Explain git-mergetool's use of temporary files

Eli Barzilay (1):
      Reorganize `git-log' man page to clarify common diff options.

Greg Brockman (1):
      Check size of path buffer before writing into it

Jay Soffian (1):
      MERGE_RR is in .git, not .git/rr-cache

Jens Lehmann (2):
      git add: Add the "--ignore-missing" option for the dry run
      git submodule add: Require the new --force option to add ignored paths

Jonathan Nieder (9):
      t7006 (pager): introduce helper for parameterized tests
      t7006: test pager configuration for several git commands
      tests: local config file should be honored from subdirs of toplevel
      t3000 (ls-files -o): modernize style
      git --paginate: paginate external commands again
      gitmodules.5: url can be a relative path
      Documentation: add submodule.* to the big configuration variable list
      Add a sample user for the svndump library
      t/README: correct an exception when breaking a && chain in tests

Junio C Hamano (7):
      rebase-i: style fix
      rebase-i: do not get fooled by a log message ending with backslash
      do not write out index when status does not have to
      diff A...B: give one possible diff when there are more than one merge-base
      diff A...B: do not limit the syntax too narrowly
      tests: correct "does reflog exist?" tests
      Git 1.7.2

Michael J Gruber (3):
      Documentation: split off rev doc into include file
      Documentation: gitrevisions
      Documentation: link to gitrevisions rather than git-rev-parse

Nazri Ramliy (1):
      grep -O: Do not pass color sequences as filenames to pager

Nguyễn Thái Ngọc Duy (1):
      git --paginate: do not commit pager choice too early

Nicolas Sebrecht (1):
      merge-recursive: use "up-to-date" instead of "uptodate" in error message for consistency

Pavan Kumar Sunkara (1):
      gitweb: fix esc_url

Ralf Thielow (1):
      update-server-info: Shorten read_pack_info_file()

Sergey Vlasov (1):
      git-svn: write memoized data explicitly to avoid Storable bug

Thomas Rast (1):
      Only run aggregate-results over actual counts

Will Palmer (2):
      add basic tests for merge-tree
      merge-tree: fix where two branches share no changes

Ævar Arnfjörð Bjarmason (3):
      git submodule: add submodules with git add -f <path>
      git submodule add: Remove old docs about implicit -f
      git add: Add --ignore-missing to SYNOPSIS


Version v1.7.2-rc3; changes since v1.7.2-rc2:
---------------------------------------------

Bo Yang (1):
      diff.c: fix a graph output bug

Fredrik Skolmli (1):
      Documentation: Spelling fix in protocol-capabilities.txt

Johannes Sixt (1):
      t0005: work around strange $? in ksh when program terminated by a signal

Jonathan Nieder (1):
      t9118 (git-svn): prevent early failure from taking down later tests

Junio C Hamano (2):
      Fix "read-tree -m A B" priming the cache-tree
      Git 1.7.2-rc3

Michael J Gruber (3):
      t9118: avoid PEG revision identifier in tests
      test-lib: simplify GIT_SKIP_TESTS loop
      test-lib: TAP compliance for skipping tests on request

Miklos Vajna (1):
      format-patch: document the format.to configuration setting

Nicolas Sebrecht (1):
      checkout: accord documentation to what git does

Oren Held (1):
      git fetch documentation: describe short '-p' synonym to '--prune' option

Raja R Harinath (1):
      Use dev_t for device id (st_dev) from stat in setup_git_directory_gently()

Ævar Arnfjörð Bjarmason (1):
      tests: Use skip_all=* to skip tests


Version v1.7.2-rc2; changes since v1.7.2-rc1:
---------------------------------------------

Brandon Casey (2):
      t/t9700/test.pl: don't access private object members, use public access methods
      t/t0006: specify timezone as EST5 not EST to comply with POSIX

Chris Packham (1):
      Documentation/git-gc.txt: add reference to githooks

Dylan Reid (1):
      xdiff: optimise for no whitespace difference when ignoring whitespace.

Heiko Voigt (1):
      add missing && to submodule-merge testcase

Jakub Narębski (1):
      gitweb: Move evaluate_gitweb_config out of run_request

Jeff King (3):
      t0006: test timezone parsing
      parse_date: fix signedness in timezone calculation
      test-date: fix sscanf type conversion

Jonathan Nieder (1):
      t/README: document more test helpers

Junio C Hamano (4):
      Updates from the list to 1.7.2 Release Notes
      t/README: proposed rewording...
      backmerge a few more fixes to 1.7.1.X series
      Git 1.7.2-rc2

Michael J Gruber (1):
      rerere.txt: Document forget subcommand

Pierre Habouzit (1):
      fix git branch -m in presence of cross devices

Uwe Kleine-König (1):
      rev-parse: fix --parse-opt --keep-dashdash --stop-at-non-option

Ævar Arnfjörð Bjarmason (13):
      test-lib: Adjust output to be valid TAP format
      test-lib: Make the test_external_* functions TAP-aware
      test-lib: output a newline before "ok" under a TAP harness
      tests: Skip tests in a way that makes sense under TAP
      tests: Say "pass" rather than "ok" on empty lines for TAP
      t9700: Use Test::More->builder, not $Test::Builder::Test
      t/README: The trash is in 't/trash directory.$name'
      t/README: Typo: paralell -> parallel
      t/README: Document the prereq functions, and 3-arg test_*
      t/README: Document test_external*
      t/README: Document test_expect_code
      t/README: Add a section about skipping tests
      t/README: Document the do's and don'ts of tests


Version v1.7.2-rc1; changes since v1.7.2-rc0:
---------------------------------------------

Andrew Sayers (2):
      bash-completion: Fix __git_ps1 to work with "set -u"
      bash completion: Support "divergence from upstream" messages in __git_ps1

Brandon Casey (4):
      t/lib-pager.sh: remove unnecessary '^' from 'expr' regular expression
      t/t7811-grep-open.sh: ensure fake "less" is made executable
      t/t7811-grep-open.sh: remove broken/redundant creation of fake "less" script
      t/t9001: use egrep when regular expressions are involved

Brian Gernhardt (1):
      t4027,4041: Use test -s to test for an empty file

Christian Couder (1):
      revert: accept arbitrary rev-list options

Jeff King (1):
      notes: check number of parameters to "git notes copy"

Jens Lehmann (4):
      git diff: rename test that had a conflicting name
      Add optional parameters to the diff option "--ignore-submodules"
      git submodule: ignore dirty submodules for summary and status
      Add the option "--ignore-submodules" to "git status"

Johannes Schindelin (3):
      Unify code paths of threaded greps
      grep: Add the option '--open-files-in-pager'
      grep -O: allow optional argument specifying the pager (or editor)

Jonathan Nieder (3):
      grep: refactor grep_objects loop into its own function
      t3508 (cherry-pick): futureproof against unmerged files
      revert: do not rebuild argv on heap

Julian Phillips (6):
      string_list: Fix argument order for print_string_list
      string_list: Fix argument order for for_each_string_list
      string_list: Fix argument order for string_list_insert
      string_list: Fix argument order for string_list_insert_at_index
      string_list: Fix argument order for string_list_lookup
      string_list: Fix argument order for string_list_append

Junio C Hamano (5):
      url_decode: URL scheme ends with a colon and does not require a slash
      Update draft release notes to 1.7.1.1
      Git 1.7.1.1
      git.spec.in: Add gitweb subpackage
      Git 1.7.2-rc1

Michael J Gruber (4):
      t6018: add tests for rev-list's --branches and --tags
      t6018: make sure all tested symbolic names are different revs
      git-rev-parse.txt: Document ":path" specifier
      git-rev-parse.txt: Add more examples for caret and colon

Nazri Ramliy (5):
      commit.h: add 'type' to struct name_decoration
      log-tree.c: Use struct name_decoration's type for classifying decoration
      log --decorate: Colorize commit decorations
      Allow customizable commit decorations colors
      Add test for correct coloring of git log --decoration

Ramsay Jones (2):
      msvc: Select the "fast" definition of the {get,put}_be32() macros
      notes: Initialise variable to appease gcc

Thomas Rast (1):
      rev-list: introduce --count option


Version v1.7.2-rc0; changes since v1.7.1.4:
-------------------------------------------

Alex Riesen (2):
      Allow passing of configuration parameters in the command line
      Use strbufs instead of open-coded string manipulation

Axel Bonnet (3):
      textconv: make the API public
      textconv: support for blame
      t/t8006: test textconv support for blame

Bo Yang (9):
      Add a macro DIFF_QUEUE_CLEAR.
      Make diffcore_std only can run once before a diff_flush
      Make git log --follow find copies among unmodified files.
      Add a prefix output callback to diff output
      Output the graph columns at the end of the commit message
      diff.c: Output the text graph padding before each diff line
      Emit a whole line in one go
      graph.c: register a callback for graph output
      Make --color-words work well with --graph

Brandon Casey (7):
      t/t5800: skip if python version is older than 2.5
      git-request-pull.sh: remove -e switch to shell interpreter which breaks ksh
      t/t5150: remove space from sed script
      t/t7006: ignore return status of shell's unset builtin
      t/aggregate-results: accomodate systems with small max argument list length
      Makefile: add PYTHON_PATH to GIT-BUILD-OPTIONS
      Remove python 2.5'isms

Brian Gernhardt (1):
      Makefile: Simplify handling of python scripts

Chris Webb (5):
      whitespace: add tab-in-indent error class
      whitespace: tests for git-diff --check with tab-in-indent error class
      whitespace: replumb ws_fix_copy to take a strbuf *dst instead of char *dst
      whitespace: add tab-in-indent support for --whitespace=fix
      whitespace: tests for git-apply --whitespace=fix with tab-in-indent

Christian Couder (13):
      revert: use strbuf to refactor the code that writes the merge message
      revert: refactor merge recursive code into its own function
      merge: refactor code that calls "git merge-STRATEGY"
      merge: make function try_merge_command non static
      revert: add "--strategy" option to choose merge strategy
      revert: cleanup code for -x option
      revert: use run_command_v_opt() instead of execv_git_cmd()
      revert: refactor code into a do_pick_commit() function
      revert: change help_msg() to take no argument
      revert: allow cherry-picking more than one commit
      revert: add tests to check cherry-picking many commits
      Documentation/cherry-pick: describe passing more than one commit
      Documentation/revert: describe passing more than one commit

Clément Poulain (3):
      sha1_name: add get_sha1_with_context()
      textconv: support for cat_file
      t/t8007: test textconv support for cat-file

Daniel Knittl-Frank (1):
      Show branch information in short output of git status

Eli Barzilay (1):
      Add `%B' in format strings for raw commit body in `git log' and friends

Eli Collins (1):
      diff: add configuration option for disabling diff prefixes.

Eric Wong (1):
      git svn: avoid unnecessary '/' in paths for SVN

Erick Mattos (6):
      git checkout: create unparented branch by --orphan
      Documentation: alter checkout --orphan description
      refs: split log_ref_write logic into log_ref_setup
      checkout --orphan: respect -l option always
      t3200: test -l with core.logAllRefUpdates options
      bash completion: add --orphan to 'git checkout'

Erik Faye-Lund (1):
      mingw: use _commit to implement fsync

Eyvind Bernhardsen (4):
      Add tests for per-repository eol normalization
      Add per-repository eol normalization
      Rename the "crlf" attribute "text"
      Add "core.eol" config variable

Finn Arne Gangstad (1):
      autocrlf: Make it work also for un-normalized repositories

Gary V. Vaughan (17):
      Makefile: pass CPPFLAGS through to fllow customization
      Rewrite dynamic structure initializations to runtime assignment
      Makefile: -lpthread may still be necessary when libc has only pthread stubs
      enums: omit trailing comma for portability
      Do not use "diff" found on PATH while building and installing
      tests: use "test_cmp", not "diff", when verifying the result
      test_cmp: do not use "diff -u" on platforms that lack one
      git-compat-util.h: some platforms with mmap() lack MAP_FAILED definition
      Makefile: some platforms do not have hstrerror anywhere
      Make NO_{INET_NTOP,INET_PTON} configured independently
      Some platforms lack socklen_t type
      Allow disabling "inline"
      inline declaration does not work on AIX
      Makefile: SunOS 5.6 portability fix
      Makefile: HPUX11 portability fixes
      Makefile: HP-UX 10.20 portability fixes
      Makefile: Tru64 portability fix

Giuseppe Scrivano (1):
      print the usage string on stdout instead of stderr

Henrik Grubbström (2):
      convert: Safer handling of $Id$ contraction.
      convert: Keep foreign $Id$ on checkout.

Jakub Narębski (16):
      Export more test-related variables when running external tests
      gitweb: href(..., -path_info => 0|1)
      gitweb: Use nonlocal jump instead of 'exit' in die_error
      gitweb: Add custom error handler using die_error
      gitweb: Move generating page title to separate subroutine
      gitweb: Silence 'Variable VAR may be unavailable' warnings
      gitweb: Improve installation instructions in gitweb/INSTALL
      gitweb: Create install target for gitweb in Makefile
      gitweb: Refactor syntax highlighting support
      gitweb: Put all per-connection code in run() subroutine
      git-instaweb: Remove pidfile after stopping web server
      git-instaweb: Wait for server to start before running web browser
      git-instaweb: Add support for running gitweb via 'plackup'
      gitweb: Run in FastCGI mode if gitweb script has .fcgi extension
      gitweb: Fix typo in hash key name in %opts in git_header_html
      gitweb: Return or exit after done serving request

Jan Krüger (1):
      git-am: suggest what to do with superfluous patches

Jay Soffian (1):
      t5516-fetch-push.sh: style cleanup

Jeff King (11):
      make commit_tree a library function
      introduce notes-cache interface
      textconv: refactor calls to run_textconv
      diff: cache textconv output
      diff: avoid useless filespec population
      script with rev-list instead of log
      tests: rename duplicate t4205
      tests: chmod +x t5150
      make url-related functions reusable
      decode file:// and ssh:// URLs
      Makefile: default pager on AIX to "more"

Johan Herland (5):
      diff.c: Ensure "index $from..$to" line contains unambiguous SHA1s
      Documentation/rev-list-options.txt: Fix missing line in example history graph
      Documentation/rev-list-options.txt: Explain --ancestry-path
      revision: Fix typo in --ancestry-path error message
      revision: Turn off history simplification in --ancestry-path mode

Johannes Schindelin (1):
      gitweb: Syntax highlighting support

Johannes Sixt (11):
      Modernize t5530-upload-pack-error.
      Make report() from usage.c public as vreportf() and use it.
      Fix signature of fcntl() compatibility dummy
      Windows: more pthreads functions
      Reimplement async procedures using pthreads
      Dying in an async procedure should only exit the thread, not the process.
      Enable threaded async procedures whenever pthreads is available
      Have set_try_to_free_routine return the previous routine
      Do not call release_pack_memory in malloc wrappers when GIT_TRACE is used
      Recent MinGW has a C99 implementation of snprintf functions
      merge-recursive: demonstrate an incorrect conflict with submodule

Jonathan Nieder (17):
      t7400: split setup into multiple tests
      t7400: clarify 'submodule add' tests
      t7400: clarify submodule update tests
      t5800: testgit helper requires Python support
      tests for request-pull
      request-pull: protect against OPTIONS_KEEPDASHDASH from environment
      fsck: check ident lines in commit objects
      adapt request-pull tests for new pull request format
      pretty: initialize new cmt_fmt_map to 0
      Makefile: fix header dependency checker to allow NO_CURL builds
      Makefile: let header dependency checker override COMPUTE_HEADER_DEPENDENCIES
      git svn: avoid uninitialized var in 'reset'
      Add git remote set-branches
      fsck: fix bogus commit header check
      rebase: improve error message when upstream argument is missing
      DWIM 'git show -5' to 'git show --do-walk -5'
      git-svn: strip off leading slashes on --trunk argument

Junio C Hamano (31):
      git_config_maybe_bool()
      log.decorate: usability fixes
      whitespace: we cannot "catch all errors known to git" anymore
      GIT_ONE_FILESYSTEM: flip the default to stop at filesystem boundaries
      Rename ONE_FILESYSTEM to DISCOVERY_ACROSS_FILESYSTEM
      log --pretty/--oneline: ignore log.decorate
      war on "sleep" in tests
      reflog --expire-unreachable: avoid merge-base computation
      log.decorate: only ignore it under "log --pretty=raw"
      wt-status: remove unused workdir_untracked member
      wt-status: plug memory leak while collecting untracked files
      wt-status: collect ignored files
      wt-status: rename and restructure status-print-untracked
      status: --ignored option shows ignored files
      Document gc.<pattern>.reflogexpire variables
      more war on "sleep" in tests
      reflog --expire-unreachable: special case entries in "HEAD" reflog
      revision: --ancestry-path
      wt-status: fix 'fprintf' compilation warning
      t5150: protect backslash with backslash in shell
      Start 1.7.2 cycle
      fixup: do not unconditionally disable "diff -u"
      build: propagate $DIFF to scripts
      test-lib: use DIFF definition from GIT-BUILD-OPTIONS
      Update draft release notes to 1.7.2
      Update draft release notes to 1.7.2
      Update draft release notes to 1.7.2
      Drop items that are 1.7.1.1 fixes from the 1.7.1 release notes
      Update draft release notes to 1.7.2
      url.c: "<scheme>://" part at the beginning should not be URL decoded
      Git 1.7.2-rc0

Lars R. Damerow (3):
      config.c: remove static keyword from git_env_bool()
      truncate cwd string before printing error message
      Add support for GIT_ONE_FILESYSTEM

Linus Torvalds (1):
      Make :/ accept a regex rather than a fixed pattern

Michael J Gruber (5):
      for-each-ref: Field with abbreviated objectname
      notes: dry-run and verbose options for prune
      Documentation+t5708: document and test status -s -b
      pretty: Introduce ' ' modifier to add space if non-empty
      git-cat-file.txt: Document --textconv

Michael J. Kiwala (1):
      git svn: fix empty directory creation

Paolo Bonzini (2):
      patch-id: extract parsing one diff out of generate_id_list
      patch-id: Add support for mbox format

Pavan Kumar Sunkara (6):
      gitweb: Use @diff_opts while using format-patch
      gitweb: Move static files into seperate subdirectory
      gitweb: Set default destination directory for installing gitweb in Makefile
      git-instaweb: Put httpd logs in a "$httpd_only" subdirectory
      git-instaweb: Configure it to work with new gitweb structure
      git-web--browse: Add support for google chrome and chromium

Ramkumar Ramachandra (4):
      git am: Set cmdline globally
      git am: Display some help text when patch is empty
      git am: Remove stray error message from sed
      Refactor parse_date for approxidate functions

René Scharfe (8):
      grep: add test script for binary file handling
      grep: grep: refactor handling of binary mode options
      grep: --count over binary
      grep: --name-only over binary
      grep: use memmem() for fixed string search
      grep: continue case insensitive fixed string search after NUL chars
      grep: use REG_STARTEND for all matching if available
      grep: support NUL chars in search strings for -F

Sam Vilain (2):
      gitweb: Add support for FastCGI, using CGI::Fast
      git-cvsserver: use a password file cvsserver pserver

Samuel Tardieu (2):
      Honor "tagopt = --tags" configuration option
      remote add: add a --[no-]tags option

Simo Melenius (2):
      branch: exit status now reflects if branch listing finds an error
      branch: don't fail listing branches if one of the commits wasn't found

Stephen Boyd (2):
      format-patch: Add a signature option (--signature)
      completion: Add --signature and format.signature

Steven Drake (1):
      Add `log.decorate' configuration variable.

Sverre Rabbelier (7):
      clone: pass the remote name to remote_get
      clone: also configure url for bare clones
      fast-import: always create marks_file directories
      remote-helpers: allow requesing the path to the .git directory
      remote-helpers: add support for an export command
      remote-helpers: add testgit helper
      remote-helpers: add tests for testgit helper

Tay Ray Chuan (2):
      ls-remote: fall-back to default remotes when no remote specified
      ls-remote: print URL when no repo is specified

Thomas Rast (5):
      diff: add --word-diff option that generalizes --color-words
      Complete prototype of git_config_from_parameters()
      fast-import: die_nicely() back to vsnprintf (reverts part of ebaa79f)
      log_ref_setup: don't return stack-allocated array
      parseopt: wrap rev-parse --parseopt usage for eval consumption

Torsten Schmutzler (1):
      git-svn: mangle refnames forbidden in git

Will Palmer (4):
      pretty: make it easier to add new formats
      pretty: add infrastructure for commit format aliases
      pretty: add aliases for pretty formats
      diff-options: make --patch a synonym for -p

Ævar Arnfjörð Bjarmason (12):
      Add option to git-commit to allow empty log messages
      git-svn documentation: minor grammar fix
      git-svn: Remove unused use of File::Temp
      git-cvsserver: authentication support for pserver
      git-cvsserver: indent & clean up authdb code
      git-cvsserver: Improved error handling for pserver
      git-cvsserver: document making a password without htpasswd
      git-cvsserver: test for pserver authentication support
      git-submodule foreach: Add $toplevel variable
      Makefile: remove redundant munging of @@INSTLIBDIR@@
      git-cvsserver: typo in a comment: bas -> has
      git-cvsserver: fix error for invalid password formats


Version v1.7.1.4; changes since v1.7.1.3:
-----------------------------------------

Jakub Narębski (1):
      gitweb: Introduce esc_attr to escape attributes of HTML elements

Junio C Hamano (1):
      Git 1.6.4.5


Version v1.7.1.3; changes since v1.7.1.2:
-----------------------------------------

Jonathan Nieder (1):
      add: introduce add.ignoreerrors synonym for add.ignore-errors

Junio C Hamano (1):
      Git 1.7.0.8

Matthieu Moy (1):
      t0003: add missing && at end of lines


Version v1.7.1.2; changes since v1.7.1.1:
-----------------------------------------

Brandon Casey (1):
      t/README: clarify test_must_fail description

Chris Packham (1):
      Documentation/git-gc.txt: add reference to githooks

David Aguilar (1):
      Documentation: Explain git-mergetool's use of temporary files

Dylan Reid (1):
      xdiff: optimise for no whitespace difference when ignoring whitespace.

Fredrik Skolmli (1):
      Documentation: Spelling fix in protocol-capabilities.txt

Greg Brockman (2):
      Check size of path buffer before writing into it
      Check size of path buffer before writing into it

Heiko Voigt (1):
      add missing && to submodule-merge testcase

Jay Soffian (2):
      receive-pack: switch global variable 'commands' to a parameter
      receive-pack: detect aliased updates which can occur with symrefs

Jeff King (2):
      t0006: test timezone parsing
      test-date: fix sscanf type conversion

Johannes Sixt (1):
      t0005: work around strange $? in ksh when program terminated by a signal

Jonathan Nieder (3):
      gitmodules.5: url can be a relative path
      Documentation: add submodule.* to the big configuration variable list
      config --get --path: check for unset $HOME

Junio C Hamano (3):
      backmerge a few more fixes to 1.7.1.X series
      Git 1.7.0.7
      Git 1.7.1.2

Michael J Gruber (3):
      git-rev-parse.txt: Document ":path" specifier
      git-rev-parse.txt: Add more examples for caret and colon
      rerere.txt: Document forget subcommand

Miklos Vajna (1):
      format-patch: document the format.to configuration setting

Nicolas Sebrecht (1):
      checkout: accord documentation to what git does

Oren Held (1):
      git fetch documentation: describe short '-p' synonym to '--prune' option

Pavan Kumar Sunkara (1):
      gitweb: fix esc_url

Pierre Habouzit (1):
      fix git branch -m in presence of cross devices

Ralf Thielow (1):
      update-server-info: Shorten read_pack_info_file()

Stephen Boyd (1):
      request-pull.txt: Document -p option

Thomas Rast (1):
      check_aliased_update: strcpy() instead of strcat() to copy

Uwe Kleine-König (1):
      rev-parse: fix --parse-opt --keep-dashdash --stop-at-non-option


Version v1.7.1.1; changes since v1.7.1:
---------------------------------------

Alexey Mahotkin (1):
      xdiff/xmerge.c: use memset() instead of explicit for-loop

Bert Wesarg (1):
      diff: fix coloring of extended diff headers

Björn Gustavsson (1):
      apply: Allow blank *trailing* context lines to match beyond EOF

Björn Steinbrink (1):
      diff: Support visibility modifiers in the PHP hunk header regexp

Bo Yang (1):
      blame-options.txt: Add default value for `-M/-C` options.

Brandon Casey (1):
      t/t9001: use egrep when regular expressions are involved

Brian Downing (1):
      unpack-trees: Make index lookahead less pessimal

Brian Gernhardt (4):
      send-email: Cleanup { style
      send-email: Don't use FQDNs without a '.'
      Document send-email --smtp-domain
      send-email: Cleanup smtp-domain and add config

Charles Bailey (2):
      stash: Don't overwrite files that have gone from the index
      stash tests: stash can lose data in a file removed from the index

Chris Webb (1):
      exec_cmd.c: replace hard-coded path list with one from <paths.h>

Christian Couder (3):
      diff: fix "git show -C -C" output when renaming a binary file
      commit: use value of GIT_REFLOG_ACTION env variable as reflog message
      Documentation: grep: fix asciidoc problem with --

Clemens Buchacher (7):
      do not overwrite files marked "assume unchanged"
      Documentation: git-add does not update files marked "assume unchanged"
      test get_git_work_tree() return value for NULL
      get_cwd_relative(): do not misinterpret suffix as subdirectory
      setup: document prefix
      quote.c: separate quoting and relative path generation
      ls-files: allow relative pathspec

Dmitry Potapov (1):
      hash_object: correction for zero length file

Gary V. Vaughan (1):
      git-compat-util.h: use apparently more common __sgi macro to detect SGI IRIX

Gerrit Pape (1):
      git-submodule.sh: properly initialize shell variables

Henrik Grubbström (3):
      attr: Fixed debug output for macro expansion.
      attr: Allow multiple changes to an attribute on the same line.
      attr: Expand macros immediately when encountered.

Ian McLean (1):
      Fix "Out of memory? mmap failed" for files larger than 4GB on Windows

Ian Ward Comfort (1):
      rebase -i: Abort cleanly if new base cannot be checked out

Jakub Narębski (1):
      autoconf: Check if <paths.h> exists and set HAVE_PATHS_H

Jay Soffian (3):
      commit.txt: clarify how --author argument is used
      am: use get_author_ident_from_commit instead of mailinfo when rebasing
      gitweb/Makefile: fix typo in gitweb.min.css rule

Jeff King (7):
      handle "git --bare init <dir>" properly
      docs: clarify meaning of -M for git-log
      remove over-eager caching in sha1_file_name
      pull: do nothing on --dry-run
      commit: give advice on empty amend
      Makefile: default pager on AIX to "more"
      notes: check number of parameters to "git notes copy"

Johannes Sixt (1):
      Thread-safe xmalloc and xrealloc needs a recursive mutex

Jonathan Nieder (25):
      t7006: guard cleanup with test_expect_success
      t5704 (bundle): add tests for bundle --stdin
      fix "bundle --stdin" segfault
      test-lib: Let tests specify commands to be run at end of test
      commit --amend: cope with missing display name
      Documentation/shortlog: scripted users should not rely on implicit HEAD
      t4201 (shortlog): guard setup with test_expect_success
      t4201 (shortlog): Test output format with multiple authors
      shortlog: Document and test --format option
      test-lib: some shells do not let $? propagate into an eval
      cherry-pick: do not dump core when iconv fails
      Documentation/notes: document format of notes trees
      Documentation/notes: describe content of notes blobs
      Documentation/notes: add configuration section
      Documentation/notes: simplify treatment of default notes ref
      Documentation/log: add a CONFIGURATION section
      Documentation/notes: simplify treatment of default display refs
      Documentation/notes: clean up description of rewriting configuration
      Documentation/notes: nitpicks
      post-receive-email: document command-line mode
      Documentation/checkout: clarify description
      gitignore.5: Clarify matching rules
      rebase -i -p: document shortcomings
      Documentation/checkout: clarify description
      add-interactive: Clarify “remaining hunks in the file”

Junio C Hamano (10):
      am -3: recover the diagnostic messages for corrupt patches
      clone: quell the progress report from init and report on clone
      t9129: fix UTF-8 locale detection
      common_prefix: simplify and fix scanning for prefixes
      Prepare draft release notes to 1.7.1.1
      Update draft release notes to 1.7.1.1
      tests: remove unnecessary '^' from 'expr' regular expression
      Update draft release notes to 1.7.1.1
      Update draft release notes to 1.7.1.1
      Git 1.7.1.1

Leif Arne Storset (1):
      Documentation/config.txt: GIT_NOTES_REWRITE_REF overrides notes.rewriteRef

Marcus Comstedt (1):
      Add "Z" as an alias for the timezone "UTC"

Markus Heidelberg (4):
      t7508: add test for "git status" refreshing the index
      git status: refresh the index if possible
      t7508: add a test for "git status" in a read-only repository
      Documentation: rebase -i ignores options passed to "git am"

Michael J Gruber (10):
      index-pack: fix trivial typo in usage string
      t7508: test advice.statusHints
      wt-status: take advice.statusHints seriously
      Documentation: fix minor inconsistency
      Documentation/gitdiffcore: fix order in pickaxe description
      Documentation/SubmittingPatches: clarify GMail section and SMTP
      completion: --set-upstream option for git-branch
      Makefile: reenable install with NO_CURL
      Documentation/config: describe status.submodulesummary
      Documentation: A...B shortcut for checkout and rebase

Michal Sojka (1):
      test-lib.sh: Add explicit license detail, with change from GPLv2 to GPLv2+.

Nazri Ramliy (1):
      Documentation/pretty-{formats,options}: better reference for "format:<string>"

Nicolas Pitre (4):
      Make xmalloc and xrealloc thread-safe
      index-pack: smarter memory usage when resolving deltas
      index-pack: rationalize unpack_entry_data()
      index-pack: smarter memory usage when appending objects

Pete Harlan (1):
      clone: reword messages to match the end-user perception

Peter Collingbourne (4):
      Generalise the unlink_or_warn function
      Implement the rmdir_or_warn function
      Introduce remove_or_warn function
      Remove a redundant errno test in a usage of remove_path

Philippe Bruhat (1):
      Git.pm: better error message

Ping Yin (1):
      Documentation/git-send-email: Add "Use gmail as the smtp server"

Ramkumar Ramachandra (1):
      SubmittingPatches: Add new section about what to base work on

Ramsay Jones (4):
      Makefile: Fix 'clean' target to remove all gitweb build files
      msvc: Fix some "expr evaluates to function" compiler warnings
      msvc: Fix some compiler warnings
      notes: Initialise variable to appease gcc

René Scharfe (3):
      git diff too slow for a file
      remove ecb parameter from xdi_diff_outf()
      Fix checkout of large files to network shares on Windows XP

Scott Chacon (1):
      Prompt for a username when an HTTP request 401s

Shawn O. Pearce (16):
      tag.c: Correct indentation
      tag.h: Remove unused signature field
      tag.c: Refactor parse_tag_buffer to be saner to program
      tag.c: Parse tagger date (if present)
      describe: Break annotated tag ties by tagger date
      http.c: Remove bad free of static block
      t5550-http-fetch: Use subshell for repository operations
      http.c: Tiny refactoring of finish_http_pack_request
      http.c: Drop useless != NULL test in finish_http_pack_request
      http.c: Don't store destination name in request structures
      http.c: Remove unnecessary strdup of sha1_to_hex result
      Introduce close_pack_index to permit replacement
      Extract verify_pack_index for reuse from verify_pack
      Allow parse_pack_index on temporary files
      http-fetch: Use index-pack rather than verify-pack to check packs
      http-fetch: Use temporary files for pack-*.idx until verified

Sverre Rabbelier (1):
      Gitweb: ignore built file

Tay Ray Chuan (18):
      t5541-http-push: add test for URLs with trailing slash
      http: make end_url_with_slash() public
      remote-curl: ensure that URLs have a trailing slash
      http.c::new_http_pack_request: do away with the temp variable filename
      t7604-merge-custom-message: shift expected output creation
      t7604-merge-custom-message: show that --log doesn't append to -m
      merge: update comment
      merge: rename variable
      fmt-merge-msg: minor refactor of fmt_merge_msg()
      fmt-merge-msg: refactor merge title formatting
      fmt-merge-msg: add function to append shortlog only
      merge: --log appends shortlog to message if specified
      GIT-VERSION-GEN: restrict tags used
      t7502-commit: fix spelling
      show-branch: use DEFAULT_ABBREV instead of 7
      t7502-commit: add tests for summary output
      t7502-commit: add summary output tests for empty and merge commits
      commit::print_summary(): don't use format_commit_message()

Thomas Rast (2):
      t/README: document --root option
      send-email: ask about and declare 8bit mails

Tim Henigan (1):
      Documentation/SubmittingPatches: Fix typo in GMail section

Tor Arntsen (1):
      Change C99 comments to old-style C comments

Will Palmer (1):
      pretty: Respect --abbrev option

Zhang Le (1):
      git-mailinfo documentation: clarify -u/--encoding

bert Dvornik (1):
      start_command: close cmd->err descriptor when fork/spawn fails

Ævar Arnfjörð Bjarmason (3):
      Move t6000lib.sh to lib-*
      Turn setup code in t2007-checkout-symlink.sh into a test
      notes: Initialize variable to appease Sun Studio


Version v1.7.1; changes since v1.7.1-rc2:
-----------------------------------------

Eric Raymond (1):
      Documentation improvements for the description of short format.

Johannes Sixt (1):
      MSVC: Fix build by adding missing termios.h dummy

Jonathan Nieder (1):
      Documentation/Makefile: fix interrupted builds of user-manual.xml

Junio C Hamano (2):
      Git 1.7.0.6
      Git 1.7.1

Michael J Gruber (1):
      t7012: Mark missing tests as TODO

SZEDER Gábor (1):
      reflog: remove 'show' from 'expire's usage string


Version v1.7.1-rc2; changes since v1.7.1-rc1:
---------------------------------------------

Charles Bailey (1):
      Documentation: Describe other situations where -z affects git diff

Chris Webb (1):
      git-instaweb: pass through invoking user's path to gitweb CGI scripts

Jay Soffian (1):
      Documentation/config.txt: default gc.aggressiveWindow is 250, not 10

Jeff King (2):
      diff: use large integers for diffstat calculations
      rebase-interactive: silence warning when no commits rewritten

Jens Lehmann (2):
      gitk: Add Ctrl-W shortcut for closing the active window
      gitk: Display dirty submodules correctly

Johannes Gilger (1):
      pretty: Initialize notes if %N is used

Johannes Sixt (1):
      Windows: start_command: Support non-NULL dir in struct child_process

Jonathan Nieder (5):
      gitk: Add comments to explain encode_view_opts and decode_view_opts
      gitk: Don't clobber "Remember this view" setting
      Add .depend directories to .gitignore
      Document new "already-merged" rule for branch -d
      tag -v: use RUN_GIT_CMD to run verify-tag

Junio C Hamano (6):
      SubmittingPatches: update GMail section
      blame documentation: -M/-C notice copied lines as well as moved ones
      Git 1.7.0.5
      gitweb: simplify gitweb.min.* generation and clean-up rules
      t3301: add tests to use --format="%N"
      Git 1.7.1-rc2

Marc Branchaud (1):
      Docs: Add -X option to git-merge's synopsis.

Mark Hills (4):
      gitk: Remove forced use of sans-serif font
      gitk: Set the font for all spinbox widgets
      gitk: Set the font for all listbox widgets
      gitk: Use consistent font for all text input fields

Matthew Ogilvie (1):
      t6006: do not write to /tmp

Michael J Gruber (1):
      t1010-mktree: Adjust expected result to code and documentation

Pat Thoyts (3):
      gitk: Avoid calling tk_setPalette on Windows
      gitk: Add emacs editor variable block
      gitk: Fix display of copyright symbol

Ramkumar Ramachandra (5):
      Documentation/remote-helpers: Rewrite description
      Documentation/urls: Rewrite to accomodate <transport>::<address>
      Documentation/remote-helpers: Add invocation section
      Fixup: Second argument may be any arbitrary string
      Documentation/remote-helpers: Fix typos and improve language

Stephen Boyd (1):
      t3507: Make test executable

Thomas Rast (1):
      combined diff: correctly handle truncated file

Will Palmer (1):
      documentation: clarify direction of core.autocrlf


Version v1.7.1-rc1; changes since v1.7.1-rc0:
---------------------------------------------

Brandon Casey (1):
      notes.h: declare bit field as unsigned to silence compiler complaints

Jeff King (4):
      fix const-correctness of write_sha1_file
      fix textconv leak in emit_rewrite_diff
      fix typos and grammar in 1.7.1 draft release notes
      docs: clarify "branch -l"

Jens Lehmann (2):
      Let check_preimage() use memset() to initialize "struct checkout"
      Teach diff --submodule and status to handle .git files in submodules

Jonathan Nieder (1):
      Teach mailinfo %< as an alternative scissors mark

Junio C Hamano (2):
      diff.c: work around pointer constness warnings
      Git 1.7.1-rc1

Mark Rada (6):
      Gitweb: add ignore and clean rules for minified files
      Gitweb: add support for minifying gitweb.css
      Gitweb: add autoconfigure support for minifiers
      instaweb: add minification awareness
      gitweb: add documentation to INSTALL regarding gitweb.js
      gitweb: update INSTALL to use shorter make target

Michael J Gruber (2):
      t3301-notes: Test the creation of reflog entries
      refs.c: Write reflogs for notes just like for branch heads

Tay Ray Chuan (2):
      branch: say "Reset to" in reflog entries for 'git branch -f' operations
      fetch/push: fix usage strings


Version v1.7.1-rc0; changes since v1.7.0.9:
-------------------------------------------

Aaron Crane (1):
      cvsimport: new -R option: generate .git/cvs-revisions mapping

Anders Kaseorg (1):
      everyday: fsck and gc are not everyday operations

Ben Walton (2):
      Make templates honour SHELL_PATH and PERL_PATH
      Modernize git calling conventions in hook templates

Benjamin C Meyer (1):
      Fix a spelling mistake in a git-p4 console message

Bert Wesarg (4):
      make union merge an xdl merge favor
      refactor merge flags into xmparam_t
      merge-file: add option to specify the marker size
      merge-file: add option to select union merge favor

Brandon Casey (9):
      t/t1304: avoid -d option to setfacl
      t/t1304: set the Default ACL base entries
      t/t1304: use 'test -r' to test readability rather than looking at mode bits
      t/t1304: set the ACL effective rights mask
      t/t1304: make a second colon optional in the mask ACL check
      notes.c: remove inappropriate call to return
      t5505: remove unnecessary subshell invocations
      t5505: add missing &&
      t/t5505-remote.sh: escape * to prevent interpretation by shell as glob

Brian Gernhardt (1):
      Use test_expect_success for test setups

Chris Webb (1):
      imap-send: suppress warning about cleartext password with CRAM-MD5

Christian Couder (8):
      reset: add option "--keep" to "git reset"
      reset: add test cases for "--keep" option
      Documentation: reset: describe new "--keep" option
      reset: disallow "reset --keep" outside a work tree
      reset: disallow using --keep when there are unmerged entries
      cherry-pick: add tests for new --ff option
      Documentation: describe new cherry-pick --ff option
      rebase -i: use new --ff cherry-pick option

Dave Olszewski (1):
      rebase--interactive: don't require what's rebased to be a branch

Eric Blake (1):
      Makefile: update defaults for modern Cygwin

Eric S. Raymond (1):
      Integrate version 3 ciabot scripts into contrib/.

Erik Faye-Lund (5):
      hash-object: support --stdin-paths with --no-filters
      git-svn: support fetch with autocrlf on
      Revert "git-svn: always initialize with core.autocrlf=false"
      cherry: support --abbrev option
      ls: remove redundant logic

Frank Li (3):
      fallback SSH_ASKPASS when GIT_ASKPASS not set
      git-svn: Support retrieving passwords with GIT_ASKPASS
      git-core: Support retrieving passwords with GIT_ASKPASS

Hitoshi Mitake (1):
      imap-send: support CRAM-MD5 authentication

Ian Ward Comfort (1):
      RPM spec: include bash completion support

Ilari Liusvaara (1):
      Allow '+', '-' and '.' in remote helper names

Jakub Narębski (2):
      gitweb: esc_html (short) error message in die_error
      gitweb: Protect escaping functions against calling on undef

Jari Aalto (3):
      git-send-email.perl: improve error message in send_message()
      git-send-email.perl: add option --smtp-debug
      git-send-email.perl - try to give real name of the calling host to HELO/EHLO

Jeff King (1):
      submodule summary: do not shift a non-existent positional variable

Jens Lehmann (6):
      git diff --submodule: Show detailed dirty status of submodules
      git status: Show detailed dirty status of submodules in long format
      git submodule summary: Handle HEAD as argument when on an unborn branch
      Refactor dirty submodule detection in diff-lib.c
      git status: Fix false positive "new commits" output for dirty submodules
      git status: ignoring untracked files must apply to submodules too

Johan Herland (32):
      Minor cosmetic fixes to notes.c
      Notes API: get_commit_notes() -> format_note() + remove the commit restriction
      Add tests for checking correct handling of $GIT_NOTES_REF and core.notesRef
      Notes API: init_notes(): Initialize the notes tree from the given notes ref
      Notes API: add_note(): Add note objects to the internal notes tree structure
      Notes API: remove_note(): Remove note objects from the notes tree structure
      Notes API: get_note(): Return the note annotating the given object
      Notes API: for_each_note(): Traverse the entire notes tree with a callback
      Notes API: write_notes_tree(): Store the notes tree in the database
      Notes API: Allow multiple concurrent notes trees with new struct notes_tree
      Refactor notes concatenation into a flexible interface for combining notes
      Builtin-ify git-notes
      t3301: Verify successful annotation of non-commits
      t3305: Verify that adding many notes with git-notes triggers increased fanout
      Teach notes code to properly preserve non-notes in the notes tree
      Teach builtin-notes to remove empty notes
      builtin-notes: Add "remove" subcommand for removing existing notes
      t3305: Verify that removing notes triggers automatic fanout consolidation
      Notes API: prune_notes(): Prune notes that belong to non-existing objects
      builtin-notes: Add "prune" subcommand for removing notes for missing objects
      Documentation: Generalize git-notes docs to 'objects' instead of 'commits'
      builtin-notes: Add "list" subcommand for listing note objects
      builtin-notes: Add --message/--file aliases for -m/-F options
      builtin-notes: Add "add" subcommand for adding notes to objects
      builtin-notes: Add "append" subcommand for appending to note objects
      builtin-notes: Deprecate the -m/-F options for "git notes edit"
      builtin-notes: Refactor handling of -F option to allow combining -m and -F
      builtin-notes: Add -c/-C options for reusing notes
      builtin-notes: Misc. refactoring of argc and exit value handling
      builtin-notes: Add "copy" subcommand for copying notes between objects
      submodule summary: Don't barf when invoked in an empty repo
      builtin-notes: Minor (mostly parse_options-related) fixes

Johannes Sixt (2):
      Print RUNTIME_PREFIX warning only when GIT_TRACE is set
      Windows: redirect f[re]open("/dev/null") to f[re]open("nul")

Jonathan Nieder (33):
      Makefile: add missing header file dependencies
      Makefile: make sure test helpers are rebuilt when headers change
      Makefile: remove wt-status.h from LIB_H
      Makefile: clean up http-walker.o dependency rules
      Makefile: drop dependency on $(wildcard */*.h)
      Makefile: transport.o depends on branch.h now
      Makefile: rearrange dependency rules
      Makefile: disable default implicit rules
      Makefile: list generated object files in OBJECTS
      Makefile: lazily compute header dependencies
      Makefile: list standalone program object files in PROGRAM_OBJS
      Teach Makefile to check header dependencies
      Do not install shell libraries executable
      Makefile: tuck away generated makefile fragments in .depend
      Makefile: always remove .depend directories on 'make clean'
      Makefile: clarify definition of TEST_OBJS
      Makefile: Fix occasional GIT-CFLAGS breakage
      revert: fix tiny memory leak in cherry-pick --ff
      tests: document format of conflicts from checkout -m
      tests: document cherry-pick behavior in face of conflicts
      xdl_merge(): add optional ancestor label to diff3-style output
      xdl_merge(): move file1 and file2 labels to xmparam structure
      merge-file --diff3: add a label for ancestor
      ll_merge(): add ancestor label parameter for diff3-style output
      checkout --conflict=diff3: add a label for ancestor
      merge_file(): add comment explaining behavior wrt conflict style
      merge_trees(): add ancestor label parameter for diff3-style output
      checkout -m --conflict=diff3: add a label for ancestor
      compat: add mempcpy()
      revert: clarify label on conflict hunks
      cherry-pick, revert: add a label for ancestor
      merge-recursive: add a label for ancestor
      Makefile: future-proof Cygwin version check

Junio C Hamano (25):
      builtin-for-each-ref.c: comment fixes
      builtin-for-each-ref.c: check if we need to peel onion while parsing the format
      for-each-ref --format='%(symref) %(symref:short)'
      for-each-ref --format='%(flag)'
      Start 1.7.1 cycle
      Resurrect "git grep --no-index"
      Update draft release notes to 1.7.1
      notes: fix malformed tree entry
      wrap-for-bin: do not export an empty GIT_TEMPLATE_DIR
      submodule summary: do not fail before the first commit
      parse-options: add parse_options_concat() to concat options
      builtin/merge: make checkout_fast_forward() non static
      revert: add --ff option to allow fast forward when cherry-picking
      Update draft release notes to 1.7.1
      Documentation: improve description of "git reset --keep"
      t4013: add tests for log -p -m --first-parent
      revision: introduce setup_revision_opt
      show -c: show patch text
      show --first-parent/-m: do not default to --cc
      Makefile: update check-docs target
      t5516: Use test_cmp when appropriate
      Update draft release notes to 1.7.1
      Update draft release notes to 1.7.1
      Revert "Link against libiconv on IRIX"
      Git 1.7.1-rc0

Larry D'Anna (4):
      git-push: fix an advice message so it goes to stderr
      git-push: send "To <remoteurl>" messages to the standard output in --porcelain mode
      git-push: make git push --porcelain print "Done"
      git-push: add tests for git push --porcelain

Linus Torvalds (1):
      Move 'builtin-*' into a 'builtin/' subdirectory

Marc Branchaud (1):
      Teach rebase the --no-ff option.

Mark Lodato (4):
      Add an optional argument for --color options
      Add GIT_COLOR_BOLD_* and GIT_COLOR_BG_*
      grep: Colorize filename, line number, and separator
      grep: Colorize selected, context, and function lines

Markus Heidelberg (2):
      builtin/commit: fix duplicated sentence in a comment
      builtin/commit: remove unnecessary variable definition

Michael J Gruber (4):
      git-svn: req_svn when needed
      t9119-git-svn-info.sh: test with svn 1.6.* as well
      Documentation: fix a few typos in git-notes.txt
      git-svn: make git svn --version work again

Michael Lukashov (4):
      connect.c: move duplicated code to a new function 'get_host_and_port'
      refactor duplicated code in builtin-send-pack.c and transport.c
      refactor duplicated fill_mm() in checkout and merge-recursive
      refactor duplicated encode_header in pack-objects and fast-import

Michele Ballabio (1):
      shortlog: warn the user when there is no input

Miklos Vajna (1):
      request-pull: avoid mentioning that the start point is a single commit

Nguyễn Thái Ngọc Duy (5):
      make_absolute_path(): Do not append redundant slash
      init-db, rev-parse --git-dir: do not append redundant slash
      Move offset_1st_component() to path.c
      Support working directory located at root
      Add test for using Git at root of file system

Nicolas Pitre (1):
      move encode_in_pack_object_header() to a better place

Petr Baudis (1):
      git log -p -m: document -m and honor --first-parent

René Scharfe (2):
      setenv(GIT_DIR) clean-up
      grep: enable threading for context line printing

SZEDER Gábor (4):
      bash: improve aliased command recognition
      bash: support user-supplied completion scripts for user's git commands
      bash: support user-supplied completion scripts for aliases
      bash: completion for gitk aliases

Stefan-W. Hahn (4):
      documentation: 'git-mailsplit --keep-cr' is not hidden anymore
      git-am: Add command line parameter `--keep-cr` passing it to git-mailsplit
      git-am: Add am.keepcr and --no-keep-cr to override it
      git-am: Add tests for `--keep-cr`, `--no-keep-cr` and `am.keepcr`

Stephen Boyd (11):
      format-patch: use a string_list for headers
      format-patch: add --no-cc, --no-to, and --no-add-headers
      send-email: add --no-cc, --no-to, and --no-bcc
      notes: rework subcommands and parse options
      fmt-merge-msg: be quiet if nothing to merge
      t6200: modernize with test_tick
      t6200: test fmt-merge-msg more
      fmt-merge-msg: use pretty.c routines
      string-list: add unsorted_string_list_lookup()
      fmt-merge-msg: remove custom string_list implementation
      fmt-merge-msg: hide summary option

Steven Drake (5):
      Add `init.templatedir` configuration variable.
      Add a "TEMPLATE DIRECTORY" section to git-init[1].
      init: having keywords without value is not a global error.
      t/t0001-init.sh: add test for 'init with init.templatedir set'
      Add 'git format-patch --to=' option and 'format.to' configuration variable.

Tay Ray Chuan (17):
      Documentation/git-clone: mention progress in -v
      Documentation/git-pull: put verbosity options before merge/fetch ones
      Documentation/git-push: put --quiet before --verbose
      fetch: refactor verbosity option handling into transport.[ch]
      push: support multiple levels of verbosity
      clone: support multiple levels of verbosity
      transport->progress: use flag authoritatively
      push: learn --progress
      fetch and pull: learn --progress
      transport: update flags to be in running order
      t5541-http-push: check that ref is unchanged for non-ff test
      t554[01]-http-push: refactor, add non-ff tests
      http-push: remove "|| 1" to enable verbose check
      http-walker: cleanup more thoroughly
      http: init and cleanup separately from http-walker
      remote-curl: use http_fetch_ref() instead of walker wrapper
      remote-curl: init walker only when needed

Thomas Rast (14):
      test-lib: unset GIT_NOTES_REF to stop it from influencing tests
      Support showing notes from more than one notes tree
      Documentation: document post-rewrite hook
      commit --amend: invoke post-rewrite hook
      rebase: invoke post-rewrite hook
      rebase -i: invoke post-rewrite hook
      notes: implement 'git notes copy --stdin'
      notes: implement helpers needed for note copying during rewrite
      rebase: support automatic notes copying
      commit --amend: copy notes to the new commit
      notes: add shorthand --ref to override GIT_NOTES_REF
      notes: track whether notes_trees were changed at all
      git-notes(1): add a section about the meaning of history
      rebase -i: make post-rewrite work for 'edit'

Tuomas Suutari (5):
      t9151: Fix a few commits in the SVN dump
      t9151: Add two new svn:mergeinfo test cases
      git-svn: Fix discarding of extra parents from svn:mergeinfo
      git-svn: Fix merge detecting with rewrite-root
      t9150,t9151: Add rewrite-root option to init

YONETANI Tomokazu (1):
      Fix _XOPEN_SOURCE problem on DragonFly

josh robb (1):
      git svn: delay importing SVN::Base until it is needed


Version v1.7.0.9; changes since v1.7.0.8:
-----------------------------------------

Jakub Narębski (1):
      gitweb: Introduce esc_attr to escape attributes of HTML elements

Junio C Hamano (1):
      Git 1.6.4.5


Version v1.7.0.8; changes since v1.7.0.7:
-----------------------------------------

Jonathan Nieder (1):
      add: introduce add.ignoreerrors synonym for add.ignore-errors

Junio C Hamano (1):
      Git 1.7.0.8


Version v1.7.0.7; changes since v1.7.0.6:
-----------------------------------------

Eric Raymond (1):
      Documentation improvements for the description of short format.

Gerrit Pape (1):
      git-submodule.sh: properly initialize shell variables

Greg Brockman (1):
      Check size of path buffer before writing into it

Jonathan Nieder (1):
      config --get --path: check for unset $HOME

Junio C Hamano (1):
      Git 1.7.0.7

Michael J Gruber (3):
      index-pack: fix trivial typo in usage string
      Makefile: reenable install with NO_CURL
      Documentation/config: describe status.submodulesummary

René Scharfe (1):
      remove ecb parameter from xdi_diff_outf()

Stephen Boyd (1):
      request-pull.txt: Document -p option

Uwe Kleine-König (1):
      rev-parse: fix --parse-opt --keep-dashdash --stop-at-non-option


Version v1.7.0.6; changes since v1.7.0.5:
-----------------------------------------

Charles Bailey (1):
      Documentation: Describe other situations where -z affects git diff

David Aguilar (1):
      Makefile: Remove usage of deprecated Python "has_key" method

Jay Soffian (1):
      Documentation/config.txt: default gc.aggressiveWindow is 250, not 10

Jeff King (1):
      diff: use large integers for diffstat calculations

Johannes Sixt (1):
      MSVC: Fix build by adding missing termios.h dummy

Jonathan Nieder (2):
      Document new "already-merged" rule for branch -d
      Documentation/Makefile: fix interrupted builds of user-manual.xml

Junio C Hamano (1):
      Git 1.7.0.6

Marc Branchaud (1):
      Docs: Add -X option to git-merge's synopsis.

Michael J Gruber (3):
      rev-list: use default abbrev length when abbrev-commit is in effect
      t1010-mktree: Adjust expected result to code and documentation
      t7012: Mark missing tests as TODO

SZEDER Gábor (1):
      reflog: remove 'show' from 'expire's usage string

Thomas Rast (1):
      combined diff: correctly handle truncated file

Will Palmer (1):
      documentation: clarify direction of core.autocrlf


Version v1.7.0.5; changes since v1.7.0.4:
-----------------------------------------

Brandon Casey (1):
      daemon.c: avoid accessing ss_family member of struct sockaddr_storage

Erik Faye-Lund (1):
      rev-list: fix --pretty=oneline with empty message

Gustaf Hendeby (1):
      Improve error messages from 'git stash show'

Jeff King (1):
      docs: clarify "branch -l"

Jens Lehmann (1):
      Let check_preimage() use memset() to initialize "struct checkout"

Junio C Hamano (3):
      diff --check: honor conflict-marker-size attribute
      blame documentation: -M/-C notice copied lines as well as moved ones
      Git 1.7.0.5

Michael J Gruber (2):
      .mailmap: Entries for Alex Bennée, Deskin Miller, Vitaly "_Vi" Shukela
      send-email: lazily assign editor variable

R. Tyler Ballance (1):
      Correct references to /usr/bin/python which does not exist on FreeBSD

Ramkumar Ramachandra (1):
      imap-send: Remove limitation on message body

Shawn O. Pearce (1):
      http-backend: Don't infinite loop during die()

Tay Ray Chuan (4):
      pack-protocol.txt: fix spelling
      pack-protocol.txt: fix pkt-line lengths
      branch: say "Reset to" in reflog entries for 'git branch -f' operations
      fetch/push: fix usage strings


Version v1.7.0.4; changes since v1.7.0.3:
-----------------------------------------

Björn Gustavsson (5):
      apply: Don't unnecessarily update line lengths in the preimage
      apply: Remove the quick rejection test
      apply: Allow blank context lines to match beyond EOF
      t4124: Add additional tests of --whitespace=fix
      t3417: Add test cases for "rebase --whitespace=fix"

Chris Packham (1):
      test for add with non-existent pathspec

David Aguilar (1):
      difftool: Fix '--gui' when diff.guitool is unconfigured

Greg Bacon (1):
      Documentation: Clarify support for smart HTTP backend

Holger Weiß (3):
      Don't redefine htonl and ntohl on big-endian
      Link against libiconv on IRIX
      Documentation: show-ref <pattern>s are optional

Jakub Narębski (1):
      gitweb: git_get_project_config requires only $git_dir, not also $project

Jan Stępień (1):
      Updated the usage string of git reset

Jeff King (1):
      dir: fix COLLECT_IGNORED on excluded prefixes

Johannes Sixt (2):
      diff: fix textconv error zombies
      Windows: fix utime() for read-only files

Junio C Hamano (8):
      git add -u: die on unmatched pathspec
      color: allow multiple attributes
      t0050: mark non-working test as such
      tests for "git add ignored-dir/file" without -f
      refs: ref entry with NULL sha1 is can be a dangling symref
      t9350: fix careless use of "cd"
      Prepare for 1.7.0.4
      Git 1.7.0.4

Kevin Ballard (1):
      format-patch: Squelch 'fatal: Not a range." error

Markus Heidelberg (1):
      Documentation: explain the meaning of "-g" in git-describe output

Sverre Rabbelier (1):
      fast-export: don't segfault when marks file cannot be opened


Version v1.7.0.3; changes since v1.7.0.2:
-----------------------------------------

Adam Simpkins (2):
      prune: honor --expire=never
      reflog: honor gc.reflogexpire=never

Andreas Gruenbacher (3):
      fetch: Check for a "^{}" suffix with suffixcmp()
      fetch: Future-proof initialization of a refspec on stack
      fetch: Fix minor memory leak

Dave Olszewski (1):
      don't use default revision if a rev was specified

Filippo Negroni (1):
      Fix gitmkdtemp: correct test for mktemp() return value

Giuseppe Bilotta (5):
      Refactor list of of repo-local env vars
      rev-parse: --local-env-vars option
      shell setup: clear_local_git_env() function
      submodules: ensure clean environment when operating in a submodule
      is_submodule_modified(): clear environment properly

Ian Ward Comfort (1):
      bash: complete *_HEAD refs if present

Imre Deak (1):
      daemon: parse_host_and_port SIGSEGV if port is specified

Jeff King (2):
      add-interactive: fix bogus diff header line ordering
      push: fix segfault for odd config

Jonathan Nieder (1):
      Makefile: Fix CDPATH problem

Junio C Hamano (12):
      "log --author=me --grep=it" should find intersection, not union
      Reword "detached HEAD" notification
      mailinfo: do not strip leading spaces even for a header line
      t5521: fix and modernize
      builtin-fetch --all/--multi: propagate options correctly
      fetch --all/--multiple: keep all the fetched branch information
      pack-objects documentation: reword "objects that appear in the standard input"
      Merge accumulated fixes to prepare for 1.7.0.3
      t9400: Use test_cmp when appropriate
      t/Makefile: remove test artifacts upon "make clean"
      Update draft release notes to 1.7.0.3
      Git 1.7.0.3

Mark Lodato (4):
      grep docs: pluralize "Example" section
      grep docs: use AsciiDoc literals consistently
      grep docs: --cached and <tree>... are incompatible
      grep docs: document --no-index option

Matthieu Moy (6):
      Add a testcase for ACL with restrictive umask.
      Move gitmkstemps to path.c
      git_mkstemp_mode, xmkstemp_mode: variants of gitmkstemps with mode argument.
      Use git_mkstemp_mode and xmkstemp_mode in odb_mkstemp, not chmod later.
      git_mkstemps_mode: don't set errno to EINVAL on exit.
      Use git_mkstemp_mode instead of plain mkstemp to create object files

Michael J Gruber (7):
      Documentation/git-read-tree: fix table layout
      Documentation/git-read-tree: clarify 2-tree merge
      Documentation/git-reflog: Fix formatting of command lists
      Documentation/gitdiffcore: Remove misleading date in heading
      Documentation/urls: Remove spurious example markers
      Documentation/git-clone: Transform description list into item list
      .mailmap: Map the the first submissions of MJG by e-mail

Michael Wookey (1):
      run-command.c: fix build warnings on Ubuntu

Nelson Elhage (2):
      Documentation: pack-objects: Clarify --local's semantics.
      pack-objects documentation: Fix --honor-pack-keep as well.

René Scharfe (2):
      blame: fix indent of line numbers
      for_each_recent_reflog_ent(): use strbuf, fix offset handling

Stephen Boyd (1):
      pull: replace unnecessary sed invocation

Thomas Rast (1):
      Documentation: receive.denyCurrentBranch defaults to 'refuse'


Version v1.7.0.2; changes since v1.7.0.1:
-----------------------------------------

Bert Wesarg (1):
      unset GREP_OPTIONS in test-lib.sh

Christian Couder (1):
      bisect: error out when passing bad path parameters

Dmitry Potapov (1):
      hash-object: don't use mmap() for small files

Erik Faye-Lund (1):
      run-command: support custom fd-set in async

Gabriel Filion (1):
      require_work_tree broken with NONGIT_OK

Hitoshi Mitake (1):
      git-imap-send: Convert LF to CRLF before storing patch to draft box

Jakub Narębski (2):
      gitweb: Die if there are parsing errors in config file
      gitweb: Fix project-specific feature override behavior

Jonathan Nieder (8):
      Fix 'git var' usage synopsis
      Make 'git var GIT_PAGER' always print the configured pager
      git.1: Clarify the behavior of the --paginate option
      git svn: Fix launching of pager
      am: Fix launching of pager
      tests: Add tests for automatic use of pager
      t7006-pager: if stdout is not a terminal, make a new one
      tests: Fix race condition in t7006-pager

Junio C Hamano (6):
      t6000lib: Fix permission
      lib-patch-mode.sh: Fix permission
      status: preload index to optimize lstat(2) calls
      Start preparing for 1.7.0.2
      Update draft release notes to 1.7.0.2
      Git 1.7.0.2

Larry D'Anna (2):
      git diff --quiet -w: check and report the status
      git-diff: add a test for git diff --quiet -w

Matthieu Moy (1):
      stash: suggest the correct command line for unknown options.

Michal Sojka (1):
      Remove extra '-' from git-am(1)

Nicolas Pitre (8):
      fast-import: start using struct pack_idx_entry
      fast-import: use sha1write() for pack data
      fast-import: use write_idx_file() instead of custom code
      fast-import: make default pack size unlimited
      fast-import: honor pack.indexversion and pack.packsizelimit config vars
      fast-import: use the diff_delta() max_delta_size argument
      sha1_file: don't malloc the whole compressed result when writing out objects
      sha1_file: be paranoid when creating loose objects

René Scharfe (4):
      utf8.c: remove print_wrapped_text()
      utf8.c: remove print_spaces()
      utf8.c: remove strbuf_write()
      utf8.c: speculatively assume utf-8 in strbuf_add_wrapped_text()

Shawn O. Pearce (7):
      run-command: Allow stderr to be a caller supplied pipe
      send-pack: demultiplex a sideband stream with status data
      receive-pack: Refactor how capabilities are shown to the client
      receive-pack: Wrap status reports inside side-band-64k
      receive-pack: Send hook output over side band #2
      t5401: Use a bare repository for the remote peer
      receive-pack: Send internal errors over side-band #2

Stephen Boyd (1):
      t7406: Fix submodule init config tests

Sylvain Rabot (1):
      gitweb multiple project roots documentation

Tay Ray Chuan (1):
      transport: add got_remote_refs flag

Thomas Rast (1):
      cherry_pick_list: quit early if one side is empty


Version v1.7.0.1; changes since v1.7.0:
---------------------------------------

Bert Wesarg (2):
      Documentation: mention conflict marker size argument (%L) for merge driver
      rerere: fix memory leak if rerere images can't be read

Evan Powers (1):
      git-p4: fix bug in symlink handling

Jacob Helwig (1):
      Documentation: Fix indentation problem in git-commit(1)

Jeff King (9):
      accept "git grep -- pattern"
      cherry-pick: rewrap advice message
      cherry-pick: refactor commit parsing code
      cherry-pick: format help message as strbuf
      cherry-pick: show commit name instead of sha1
      cherry-pick: prettify the advice message
      dwim_ref: fix dangling symref warning
      docs: don't talk about $GIT_DIR/refs/ everywhere
      rm: fix bug in recursive subdirectory removal

Johannes Sixt (1):
      t3301-notes: insert a shbang line in ./fake_editor.sh

Jonathan Nieder (1):
      am: remove rebase-apply directory before gc

Junio C Hamano (6):
      Typofixes outside documentation area
      Start 1.7.0 maintenance track
      Fix use of mutex in threaded grep
      Prepare 1.7.0.1 release notes
      Update 1.7.0.1 release notes
      Git 1.7.0.1

Larry D'Anna (1):
      diff: make sure --output=/bad/path is caught

Mark Lodato (2):
      grep documentation: clarify what files match
      Remove reference to GREP_COLORS from documentation

Markus Heidelberg (1):
      sha1_name: fix segfault caused by invalid index access

Matt Kraai (1):
      commit: quote the user name in the example

Pete Harlan (1):
      Remove hyphen from "git-command" in two error messages

René Scharfe (1):
      fix minor memory leak in get_tree_entry()

Stephen Boyd (1):
      Documentation: describe --thin more accurately

Thomas Rast (2):
      stash pop: remove 'apply' options during 'drop' invocation
      t1450: fix testcases that were wrongly expecting failure


Version v1.7.0; changes since v1.7.0-rc2:
-----------------------------------------

Brian Gernhardt (1):
      t3902: Protect against OS X normalization

Jacob Helwig (1):
      filter-branch: Fix error message for --prune-empty --commit-filter

Jay Soffian (1):
      blame: prevent a segv when -L given start > EOF

Jeff King (1):
      am: switch --resolved to --continue

Junio C Hamano (11):
      git-add documentation: Fix shell quoting example
      Fix parsing of imap.preformattedHTML and imap.sslverify
      git-push: document all the status flags used in the output
      check-ref-format documentation: fix enumeration mark-up
      t8003: check exit code of command and error message separately
      Git 1.6.6.2
      Update draft release notes to 1.7.0 one more time
      archive documentation: attributes are taken from the tree by default
      Re-fix check-ref-format documentation mark-up
      Fix typo in 1.6.6.2 release notes
      Git 1.7.0

Michael J Gruber (1):
      Documentation: minor fixes to RelNotes-1.7.0

Nicolas Pitre (1):
      Revert "pack-objects: fix pack generation when using pack_size_limit"

SZEDER Gábor (1):
      bash: support 'git am's new '--continue' option

Thomas Rast (1):
      Documentation: quote braces in {upstream} notation


Version v1.7.0-rc2; changes since v1.7.0-rc1:
---------------------------------------------

Andrew Myrick (1):
      git-svn: persistent memoization

Ben Walton (2):
      configure: Allow GIT_ARG_SET_PATH to handle --without-PROGRAM
      configure: Allow --without-python

Björn Gustavsson (1):
      bash: support the --autosquash option for rebase

Brian Gernhardt (2):
      t9501: Skip testing load if we can't detect it
      t9501: Re-fix max load test

Christian Stimming (1):
      git-gui: Update German translation (12 new or changed strings).

Dan McGee (1):
      Make NO_PTHREADS the sole thread configuration variable

Emmanuel Trillaud (1):
      git-gui: update french translation

Giuseppe Bilotta (4):
      git-gui: handle non-standard worktree locations
      git-gui: handle bare repos correctly
      git-gui: update shortcut tools to use _gitworktree
      git-gui: set GIT_DIR and GIT_WORK_TREE after setup

Heiko Voigt (1):
      git-gui: fix shortcut for menu "Commit/Revert Changes"

Jakub Narębski (1):
      gitweb: Make running t9501 test with '--debug' reliable and usable

Jeff Epler (1):
      git-gui: Support applying a range of changes at once

Jeff King (3):
      mention new shell execution behavior in release notes
      docs: fix filter-branch example for quoted paths
      Fix invalid read in quote_c_style_counted

Jens Lehmann (5):
      git-gui: Use git diff --submodule when available
      git-gui: Add a special diff popup menu for submodules
      git-gui: Quote git path when starting another gui in a submodule
      Fix memory leak in submodule.c
      Updates for dirty submodules in release notes and user manual

John 'Warthog9' Hawley (7):
      gitweb: Load checking
      gitweb: Makefile improvements
      gitweb: Check that $site_header etc. are defined before using them
      gitweb: add a "string" variant of print_local_time
      gitweb: add a "string" variant of print_sort_th
      gitweb: Add optional extra parameter to die_error, for extended explanation
      gitweb: Simplify (and fix) chop_str

Junio C Hamano (7):
      RPM packaging: use %global inside %{!?...}
      Update draft release notes to 1.7.0
      build: make code "-Wpointer-arith" clean
      fast-import.c: Fix big-file-threshold parsing bug
      fast-import: count --max-pack-size in bytes
      Revert 30816237 and 7e62265
      Update draft release notes to 1.7.0

Michael J Gruber (1):
      git-clean: fix the description of the default behavior

Michal Sojka (2):
      filter-branch: Fix to allow replacing submodules with another content
      filter-branch: Add tests for submodules in tree-filter

Michele Ballabio (1):
      git-gui: update Italian translation

Nanako Shiraishi (1):
      git-gui: update Japanese translation

Nicolas Pitre (4):
      fix multiple issues with t5300
      pack-objects: fix pack generation when using pack_size_limit
      make --max-pack-size argument to 'git pack-object' count in bytes
      update git-repack documentation wrt repack.UseDeltaBaseOffset

Pal-Kristian Engstad (1):
      git-p4: Fix sync errors due to new server version

Pat Thoyts (1):
      git-gui: use themed tk widgets with Tk 8.5

Paul Mackerras (1):
      gitk: Fix copyright symbol in About box message

Peter Krefting (1):
      git-gui: Update Swedish translation (520t0f0u)

Peter Oberndorfer (1):
      git-gui: use different icon for new and modified files in the index

Ralf Wildenhues (1):
      Fix typos in technical documentation.

René Scharfe (2):
      grep: simplify assignment of ->fixed
      archive: simplify archive format guessing

Shawn O. Pearce (4):
      git-gui: Remove unused icon file_parttick
      git-gui: Update translation template
      fast-import: Stream very large blobs directly to pack
      Correct spelling of 'REUC' extension

Wesley J. Landaker (1):
      Update git fsck --full short description to mention packs


Version v1.7.0-rc1; changes since v1.7.0-rc0:
---------------------------------------------

Alejandro Riveira Fernández (1):
      Add test-run-command to .gitignore

Benjamin Kramer (1):
      grep: use REG_STARTEND (if available) to speed up regexec

Christian Couder (1):
      gitk: Add "--no-replace-objects" option

Christian Stimming (1):
      gitk: Update German translation

Dan McGee (1):
      grep: Fix two memory leaks

Dave Dulson (2):
      gitk: Enable gitk to create tags with messages
      gitk: Fix display of newly-created tags

Emmanuel Trillaud (1):
      gitk: Add French translation

Fredrik Kuivinen (1):
      Threaded grep

Gerrit Pape (1):
      git-cvsserver: allow regex metacharacters in CVSROOT

Ilari Liusvaara (7):
      Support addresses with ':' in git-daemon
      Allow use of []-wrapped addresses in git://
      Add xmallocz()
      Fix integer overflow in patch_delta()
      Fix integer overflow in unpack_sha1_rest()
      Fix integer overflow in unpack_compressed_entry()
      Fix remote.<remote>.vcs

Jeff King (8):
      t0101: use absolute date
      rerere: fix too-short initialization
      test combinations of @{} syntax
      fix parsing of @{-1}@{u} combination
      reject @{-1} not at beginning of object name
      fix memcpy of overlapping area
      fix off-by-one allocation error
      add shebang line to git-mergetool--lib.sh

Jens Lehmann (2):
      git diff: Don't test submodule dirtiness with --ignore-submodules
      Teach diff --submodule that modified submodule directory is dirty

Johan Herland (1):
      builtin-config: Fix crash when using "-f <relative path>" from non-root dir

Johannes Sixt (2):
      git_connect: use use_shell instead of explicit "sh", "-c"
      Implement pthread_cond_broadcast on Windows

Junio C Hamano (13):
      Make ce_uptodate() trustworthy again
      grep: expose "status-only" feature via -q
      Fix log -g this@{upstream}
      approxidate_careful() reports errorneous date string
      work around an obnoxious bash "safety feature" on OpenBSD
      Update @{bogus.timestamp} fix not to die()
      t0101: use a fixed timestamp when searching in the reflog
      transport_get(): drop unnecessary check for !remote
      tests: update tests that used to fail
      grep --quiet: finishing touches
      Update draft release notes to 1.7.0
      RPM packaging: don't include foreign-scm-helper bits yet
      is_submodule_modified(): fix breakage with external GIT_INDEX_FILE

Kirill Smelkov (1):
      gitk: Display submodule diffs with appropriate encoding

Laszlo Papp (1):
      gitk: Add Hungarian translation

Markus Heidelberg (2):
      gitk: Adjust two equal strings which differed in whitespace
      rebase: don't invoke the pager for each commit summary

Michele Ballabio (1):
      gitk: update Italian translation

Miklos Vajna (1):
      gitk: Update Hungarian translation

Peter Krefting (1):
      gitk: Update Swedish translation

SZEDER Gábor (2):
      bash: don't offer remote transport helpers as subcommands
      bash: support 'git notes' and its subcommands

Sebastian Schuberth (1):
      If deriving SVN_SSH from GIT_SSH on msys, also add quotes

Stephen Boyd (6):
      rebase: replace antiquated sed invocation
      commit-tree: remove unused #define
      tests: consolidate CR removal/addition functions
      t0022: replace non-portable literal CR
      am: fix patch format detection for Thunderbird "Save As" emails
      fix portability issues with $ in double quotes

Tay Ray Chuan (1):
      t5541-http-push: make grep expression check for one line only


Version v1.7.0-rc0; changes since v1.6.6.3:
-------------------------------------------

Andreas Gruenbacher (2):
      builtin-apply.c: Skip filenames without enough components
      builtin-apply.c: fix the --- and +++ header filename consistency check

Andrew Myrick (3):
      git-svn: ignore changeless commits when checking for a cherry-pick
      git-svn: handle merge-base failures
      git-svn: update svn mergeinfo test suite

Andrzej K. Haczewski (1):
      MSVC: Windows-native implementation for subset of Pthreads API

Avery Pennarun (3):
      git merge -X<option>
      Teach git-pull to pass -X<option> to git-merge
      Extend merge-subtree tests to test -Xsubtree=dir.

Bart Trojanowski (1):
      hg-to-git: fix COMMITTER type-o

Ben Walton (3):
      cvsimport: modernize callouts to git subcommands
      cvsimport: standarize open() calls to external git tools
      cvsimport: standarize system() calls to external git tools

Brad King (2):
      Test update-index for a gitlink to a .git file
      Handle relative paths in submodule .git files

Christian Couder (8):
      reset: improve mixed reset error message when in a bare repo
      Documentation: reset: add some tables to describe the different options
      reset: add a few tests for "git reset --merge"
      Documentation: reset: add some missing tables
      t7111: check that reset options work as described in the tables
      help: fix configured help format taking over command line one
      t7111: fix bad HEAD in tests with unmerged entries
      Documentation: rev-list: fix synopsys for --tags and and --remotes

Daniel Barkalow (9):
      Fix memory leak in helper method for disconnect
      Allow programs to not depend on remotes having urls
      Use a function to determine whether a remote is valid
      Allow fetch to modify refs
      Add a config option for remotes to specify a foreign vcs
      Add support for "import" helper command
      Allow helper to map private ref names into normal names
      Allow helpers to report in "list" command that the ref is unchanged
      Replace parse_blob() with an explanatory comment

David Aguilar (11):
      t7800-difftool: Set a bogus tool for use by tests
      git-difftool: Add '--gui' for selecting a GUI tool
      difftool--helper: Update copyright and remove distracting comments
      difftool--helper: Remove use of the GIT_MERGE_TOOL variable
      difftool: Allow specifying unconfigured commands with --extcmd
      git-diff.txt: Link to git-difftool
      t7800-difftool.sh: Simplify the --extcmd test
      difftool: Add '-x' and as an alias for '--extcmd'
      difftool: Use eval to expand '--extcmd' expressions
      difftool: Update copyright notices to list each year separately
      t7800-difftool.sh: Test mergetool.prompt fallback

Erik Faye-Lund (2):
      daemon: consider only address in kill_some_child()
      Windows: disable Python

Felipe Contreras (1):
      General --quiet improvements

Greg Bacon (1):
      No diff -b/-w output for all-whitespace changes

Horst H. von Brand (1):
      git-rebase.txt: Fix spelling

Igor Mironov (4):
      git-svn: fix mismatched src/dst errors for branch/tag
      git-svn: respect commiturl option for branch/tag
      git-svn: add --username/commit-url options for branch/tag
      git-svn: document --username/commit-url for branch/tag

Ilari Liusvaara (15):
      Add remote helper debug mode
      Support mandatory capabilities
      Pass unknown protocols to external protocol handlers
      Refactor git transport options parsing
      Support taking over transports
      Support remote helpers implementing smart transports
      Support remote archive from all smart transports
      Remove special casing of http, https and ftp
      Reset possible helper before reusing remote structure
      Improve error message when a transport helper was not found
      Add push --set-upstream
      Add git remote set-url
      Add branch --set-upstream
      rev-parse --glob
      rev-parse --branches/--tags/--remotes=pattern

Jakub Narębski (1):
      gitweb.js: Workaround for IE8 bug

James P. Howard, II (1):
      commit: support commit.status, --status, and --no-status

Jan Krüger (1):
      builtin-push: add --delete as syntactic sugar for :foo

Jay Soffian (2):
      git-svn: allow UUID to be manually remapped via rewriteUUID
      git-svn: allow subset of branches/tags to be specified in glob spec

Jeff King (20):
      status: typo fix in usage
      status: refactor short-mode printing to its own function
      status: refactor format option parsing
      status: add --porcelain output format
      commit: support alternate status formats
      docs: note that status configuration affects only long format
      tests: rename duplicate t1009
      status: disable color for porcelain format
      status: reduce duplicated setup code
      tests: handle NO_PYTHON setting
      run-command: add "use shell" option
      run-command: convert simple callsites to use_shell
      run-command: optimize out useless shell calls
      editor: use run_command's shell feature
      textconv: use shell to run helper
      diff: run external diff helper with shell
      strbuf_expand: convert "%%" to "%"
      strbuf: add strbuf_addbuf_percentquote
      commit: show interesting ident information in summary
      commit: allow suppression of implicit identity advice

Jens Lehmann (3):
      Show submodules as modified when they contain a dirty work tree
      git status: Show uncommitted submodule changes too when enabled
      Performance optimization for detection of modified submodules

Jim Meyering (1):
      diff.c: fix typoes in comments

Johan Herland (4):
      Basic build infrastructure for Python scripts
      fast-import: Proper notes tree manipulation
      Rename t9301 to t9350, to make room for more fast-import tests
      Add more testcases to test fast-import of notes

Johannes Schindelin (2):
      Allow specifying the remote helper in the url
      Introduce <branch>@{upstream} notation

Johannes Sixt (16):
      Make test case number unique
      filter-branch: remove an unnecessary use of 'git read-tree'
      t0021: use $SHELL_PATH for the filter script
      t4030, t4031: work around bogus MSYS bash path conversion
      start_command: report child process setup errors to the parent's stderr
      run-command: move wait_or_whine earlier
      start_command: detect execvp failures early
      Windows: boost startup by avoiding a static dependency on shell32.dll
      Windows: simplify the pipe(2) implementation
      Windows: avoid the "dup dance" when spawning a child process
      Do not use date.c:tm_to_time_t() from compat/mingw.c
      Makefile: honor NO_CURL when setting REMOTE_CURL_* variables
      Make test case numbers unique
      Make 'rerere forget' work from a subdirectory.
      merge-tree: remove unnecessary call of git_extract_argv0_path
      Make test numbers unique

Jonathan Nieder (15):
      Makefile: make ppc/sha1ppc.o depend on GIT-CFLAGS
      Makefile: regenerate assembler listings when asked
      Makefile: use target-specific variable to pass flags to cc
      Makefile: learn to generate listings for targets requiring special flags
      Makefile: consolidate .FORCE-* targets
      Documentation: git gc packs refs by default now
      Documentation: tiny git config manual tweaks
      Documentation: merge: move configuration section to end
      Documentation: suggest `reset --merge` in How Merge Works section
      Documentation: merge: move merge strategy list to end
      Documentation: merge: add an overview
      Documentation: emphasize when git merge terminates early
      Documentation: merge: add a section about fast-forward
      Documentation: simplify How Merge Works
      Documentation: merge: use MERGE_HEAD to refer to the remote branch

Junio C Hamano (96):
      Refuse updating the current branch in a non-bare repository via push
      Refuse deleting the current branch via push
      diff: change semantics of "ignore whitespace" options
      diff: Rename QUIET internal option to QUICK
      git stat: the beginning of "status that is not a dry-run of commit"
      git stat -s: short status output
      git status: not "commit --dry-run" anymore
      send-email: make --no-chain-reply-to the default
      "checkout A...B" switches to the merge base between A and B
      "rebase --onto A...B" replays history on the merge base between A and B
      git-merge-file --ours, --theirs
      Teach --[no-]rerere-autoupdate option to merge, revert and friends
      commit/status: check $GIT_DIR/MERGE_HEAD only once
      commit/status: "git add <path>" is not necessarily how to resolve
      status/commit: do not suggest "reset HEAD <path>" while merging
      builtin-merge.c: use standard active_cache macros
      resolve-undo: record resolved conflicts in a new index extension section
      resolve-undo: basic tests
      resolve-undo: allow plumbing to clear the information
      resolve-undo: "checkout -m path" uses resolve-undo information
      resolve-undo: teach "update-index --unresolve" to use resolve-undo info
      rerere: remove silly 1024-byte line limit
      Kick off 1.7.0 cycle
      Remove http.authAny
      branch -d: base the "already-merged" safety on the branch it merges with
      "reset --merge": fix unmerged case
      tests: move convenience regexp to match object names to test-lib.sh
      more D/F conflict tests
      traverse_trees(): handle D/F conflict case sanely
      Aggressive three-way merge: fix D/F case
      Fix bit assignment for CE_CONFLICTED
      .gitattributes: detect 8-space indent in shell scripts
      unpack-trees.c: prepare for looking ahead in the index
      unpack-trees.c: look ahead in the index
      read-tree --debug-unpack
      Describe second batch for 1.7.0 in draft release notes
      ident.c: remove unused variables
      t3001: test ls-files -o ignored/dir
      read_directory_recursive(): refactor handling of a single path into a separate function
      read_directory(): further split treat_path()
      ls-files: fix overeager pathspec optimization
      ident.c: check explicit identity for name and email separately
      ident.c: treat $EMAIL as giving user.email identity explicitly
      rerere: refactor rerere logic to make it independent from I/O
      rerere forget path: forget recorded resolution
      bisect.c: mark file-local function static
      builtin-rev-list.c: mark file-local function static
      pretty.c: mark file-local function static
      grep: optimize built-in grep by skipping lines that do not hit
      http.c: mark file-local functions static
      entry.c: mark file-local function static
      parse-options.c: mark file-local function static
      read-cache.c: mark file-local functions static
      remote-curl.c: mark file-local function static
      quote.c: mark file-local function static
      submodule.c: mark file-local function static
      utf8.c: mark file-local function static
      mailmap.c: remove unused function
      sha1_file.c: remove unused function
      strbuf.c: remove unused function
      grep: rip out support for external grep
      grep: rip out pessimization to use fixmatch()
      t7502: test commit.status, --status and --no-status
      strbuf_addbuf(): allow passing the same buf to dst and src
      grep: prepare to run outside of a work tree
      grep --no-index: allow use of "git grep" outside a git repository
      Teach diff that modified submodule directory is dirty
      git_attr(): fix function signature
      xdl_merge(): introduce xmparam_t for merge specific parameters
      xdl_merge(): allow passing down marker_size in xmparam_t
      merge-tree: use ll_merge() not xdl_merge()
      rerere: use ll_merge() instead of using xdl_merge()
      conflict-marker-size: new attribute
      commit.c::print_summary: do not release the format string too early
      rerere: prepare for customizable conflict marker length
      rerere: honor conflict-marker-size attribute
      user_ident_sufficiently_given(): refactor the logic to be usable from elsewhere
      user_ident_sufficiently_given(): refactor the logic to be usable from elsewhere
      Update COPYING with GPLv2 with new FSF address
      Update draft release notes to 1.7.0
      pull: Fix parsing of -X<option>
      Make "subtree" part more orthogonal to the rest of merge-recursive.
      Document that merge strategies can now take their own options
      object.c: remove unused functions
      symlinks.c: remove unused functions
      Update draft release notes to 1.7.0
      Fix "checkout A..." synonym for "checkout A...HEAD" on Windows
      t1506: more test for @{upstream} syntax
      Teach @{upstream} syntax to strbuf_branchanme()
      date.c: mark file-local function static
      Update draft release notes to 1.7.0
      conflict-marker-size: add test and docs
      git-mv: fix moving more than one source to a single destination
      Update draft release notes to 1.7.0
      rebase -i: Export GIT_AUTHOR_* variables explicitly
      pull: re-fix command line generation

Linus Torvalds (11):
      Remove diff machinery dependency from read-cache
      slim down "git show-index"
      make "git merge-tree" a built-in
      make "git hash-object" a built-in
      make "git var" a built-in
      make "git patch-id" a built-in
      make "merge-index" a built-in
      make "mktag" a built-in
      make "git unpack-file" a built-in
      make "git pack-redundant" a built-in
      make "index-pack" a built-in

Martin Storsjö (2):
      Add an option for using any HTTP authentication scheme, not only basic
      Allow curl to rewind the RPC read buffer

Matthew Ogilvie (3):
      build dashless "bin-wrappers" directory similar to installed bindir
      run test suite without dashed git-commands in PATH
      INSTALL: document a simpler way to run uninstalled builds

Matthieu Moy (6):
      Detailed diagnosis when parsing an object name fails.
      builtin-config: add --path option doing ~ and ~user expansion.
      push: spell 'Note about fast-forwards' section name correctly in error message.
      Be more user-friendly when refusing to do something because of conflict.
      lockfile: show absolute filename in unable_to_lock_message
      branch: warn and refuse to set a branch as a tracking branch of itself.

Michael Haggerty (25):
      t3404: Use test_commit to set up test repository
      Add a command "fixup" to rebase --interactive
      lib-rebase: Provide clearer debugging info about what the editor did
      lib-rebase: Allow comments and blank lines to be added to the rebase script
      rebase-i: Ignore comments and blank lines in peek_next_command
      rebase -i: Make the condition for an "if" more transparent
      rebase -i: Remove dead code
      rebase -i: Inline expression
      rebase -i: Use "test -n" instead of "test ! -z"
      rebase -i: Use symbolic constant $MSG consistently
      rebase -i: Document how temporary files are used
      rebase -i: Introduce a constant AUTHOR_SCRIPT
      rebase -i: Introduce a constant AMEND
      t3404: Test the commit count in commit messages generated by "rebase -i"
      rebase -i: Improve consistency of commit count in generated commit messages
      rebase -i: Simplify commit counting for generated commit messages
      rebase -i: Extract a function "commit_message"
      rebase -i: Handle the author script all in one place in do_next
      rebase -i: Extract function do_with_author
      rebase -i: Change function make_squash_message into update_squash_message
      rebase -i: For fixup commands without squashes, do not start editor
      t3404: Set up more of the test repo in the "setup" step
      rebase -i: Retain user-edited commit messages after squash/fixup conflicts
      rebase -i: Avoid non-portable "test X -a Y"
      rebase -i: Enclose sed command substitution in quotes

Michael J Gruber (7):
      status -s: respect the status.relativePaths option
      t7508-status.sh: Add tests for status -s
      builtin-commit: refactor short-status code into wt-status.c
      status -s: obey color.status
      t7508-status: status --porcelain ignores relative paths setting
      t7508-status: test all modes with color
      tag -d: print sha1 of deleted tag

Michael Lukashov (1):
      Windows: Remove dependency on pthreadGC2.dll

Miklos Vajna (2):
      builtin-commit: add --date option
      Document date formats accepted by parse_date()

Nanako Shiraishi (3):
      rebase -i --autosquash: auto-squash commits
      rebase: fix --onto A...B parsing and add tests
      rebase -i: teach --onto A...B syntax

Nguyễn Thái Ngọc Duy (27):
      update-index: refactor mark_valid() in preparation for new options
      Add test-index-version
      Introduce "skip-worktree" bit in index, teach Git to get/set this bit
      Teach Git to respect skip-worktree bit (reading part)
      Teach Git to respect skip-worktree bit (writing part)
      Avoid writing to buffer in add_excludes_from_file_1()
      Read .gitignore from index if it is skip-worktree
      unpack-trees(): carry skip-worktree bit over in merged_entry()
      excluded_1(): support exclude files in index
      dir.c: export excluded_1() and add_excludes_from_file_1()
      Introduce "sparse checkout"
      unpack-trees(): add CE_WT_REMOVE to remove on worktree alone
      unpack-trees.c: generalize verify_* functions
      unpack-trees(): "enable" sparse checkout and load $GIT_DIR/info/sparse-checkout
      unpack_trees(): apply $GIT_DIR/info/sparse-checkout to the final index
      unpack-trees(): ignore worktree check outside checkout area
      read-tree: add --no-sparse-checkout to disable sparse checkout support
      Add tests for sparse checkout
      sparse checkout: inhibit empty worktree
      ie_match_stat(): do not ignore skip-worktree bit with CE_MATCH_IGNORE_VALID
      commit: correctly respect skip-worktree bit
      grep: do not do external grep on skip-worktree entries
      t7002: set test prerequisite "external-grep" if supported
      t7002: test for not using external grep on skip-worktree paths
      status: only touch path we may need to check
      rm: only refresh entries that we may touch
      Fix memory corruption when .gitignore does not end by \n

Nicolas Pitre (1):
      fix git-p4 editor invocation

Peter Collingbourne (1):
      Remove empty directories when checking out a commit with fewer submodules

Phil Miller (1):
      CVS Server: Support reading base and roots from environment

Ramkumar Ramachandra (1):
      Documentation: Update git core tutorial clarifying reference to scripts

Ramsay Jones (5):
      MSVC: Fix an "incompatible pointer types" compiler warning
      engine.pl: Fix a recent breakage of the buildsystem generator
      msvc: Fix an "unrecognized option" linker warning
      msvc: Fix a compiler warning due to an incorrect pointer cast
      msvc: Add a definition of NORETURN compatible with msvc compiler

Robert Zeh (1):
      Add completion for git-svn mkdirs,reset,and gc

Sebastian Schuberth (1):
      Make difftool.prompt fall back to mergetool.prompt

Sergei Organov (1):
      cvsserver: make the output of 'update' more compatible with cvs.

Shawn O. Pearce (1):
      bash completion: add space between branch name and status flags

Stephan Beyer (1):
      reset: use "unpack_trees()" directly instead of "git read-tree"

Steven Drake (2):
      Add 'git rev-parse --show-toplevel' option.
      Use $(git rev-parse --show-toplevel) in cd_to_toplevel().

Sverre Rabbelier (9):
      Fix various memory leaks in transport-helper.c
      Add Python support library for remote helpers
      fast-import: put option parsing code in separate functions
      fast-import: put marks reading in its own function
      fast-import: add feature command
      fast-import: add option command
      fast-import: test the new option command
      fast-import: allow for multiple --import-marks= arguments
      fast-import: add (non-)relative-marks feature

Tarmigan Casebolt (7):
      t/lib-http.sh: Restructure finding of default httpd location
      Smart-http: check if repository is OK to export before serving it
      Smart-http tests: Improve coverage in test t5560
      Smart-http tests: Break test t5560-http-backend into pieces
      Smart-http tests: Test http-backend without curl or a webserver
      Test t5560: Fix test when run with dash
      ident.c: replace fprintf with fputs to suppress compiler warning

Tay Ray Chuan (12):
      http: maintain curl sessions
      builtin-push: don't access freed transport->url
      check stderr with isatty() instead of stdout when deciding to show progress
      git-clone.txt: reword description of progress behaviour
      clone: set transport->verbose when -v/--verbose is used
      clone: use --progress to force progress reporting
      t5541-http-push.sh: add tests for non-fast-forward pushes
      t5541-http-push.sh: add test for unmatched, non-fast-forwarded refs
      refactor ref status logic for pushing
      transport.c::transport_push(): make ref status affect return value
      transport-helper.c::push_refs(): ignore helper-reported status if ref is not to be pushed
      transport-helper.c::push_refs(): emit "no refs" error message

Thiago Farina (2):
      Use warning function instead of fprintf(stderr, "Warning: ...").
      string-list: rename the include guard to STRING_LIST_H

Thomas Rast (9):
      Documentation/git-merge: reword references to "remote" and "pull"
      Documentation: warn prominently against merging with dirty trees
      Documentation: format full commands in typewriter font
      Documentation: spell 'git cmd' without dash throughout
      Documentation: show-files is now called git-ls-files
      Documentation: emphasise 'git shortlog' in its synopsis
      Documentation: improve description of --glob=pattern and friends
      Documentation: add missing :: in config.txt
      Documentation: move away misplaced 'push --upstream' description


Version v1.6.6.3; changes since v1.6.6.2:
-----------------------------------------

Christian Couder (1):
      bisect: error out when passing bad path parameters

Erik Faye-Lund (1):
      run-command: support custom fd-set in async

Gabriel Filion (1):
      require_work_tree broken with NONGIT_OK

Greg Brockman (1):
      Check size of path buffer before writing into it

Hitoshi Mitake (1):
      git-imap-send: Convert LF to CRLF before storing patch to draft box

Jacob Helwig (1):
      filter-branch: Fix error message for --prune-empty --commit-filter

Jakub Narębski (1):
      gitweb: Introduce esc_attr to escape attributes of HTML elements

Jeff King (2):
      dwim_ref: fix dangling symref warning
      rm: fix bug in recursive subdirectory removal

Johannes Sixt (2):
      t3301-notes: insert a shbang line in ./fake_editor.sh
      MSVC: Fix build by adding missing termios.h dummy

Junio C Hamano (5):
      t6000lib: Fix permission
      lib-patch-mode.sh: Fix permission
      Re-fix check-ref-format documentation mark-up
      Fix typo in 1.6.6.2 release notes
      Git 1.6.4.5

Larry D'Anna (1):
      diff: make sure --output=/bad/path is caught

Michael J Gruber (4):
      Documentation/git-reflog: Fix formatting of command lists
      Documentation/gitdiffcore: Remove misleading date in heading
      Documentation/urls: Remove spurious example markers
      Documentation/git-clone: Transform description list into item list

Michal Sojka (1):
      Remove extra '-' from git-am(1)

Pete Harlan (1):
      Remove hyphen from "git-command" in two error messages

René Scharfe (5):
      fix minor memory leak in get_tree_entry()
      utf8.c: remove print_wrapped_text()
      utf8.c: remove print_spaces()
      utf8.c: remove strbuf_write()
      utf8.c: speculatively assume utf-8 in strbuf_add_wrapped_text()

Shawn O. Pearce (7):
      run-command: Allow stderr to be a caller supplied pipe
      send-pack: demultiplex a sideband stream with status data
      receive-pack: Refactor how capabilities are shown to the client
      receive-pack: Wrap status reports inside side-band-64k
      receive-pack: Send hook output over side band #2
      t5401: Use a bare repository for the remote peer
      receive-pack: Send internal errors over side-band #2

Stephen Boyd (1):
      request-pull.txt: Document -p option

Thomas Rast (2):
      stash pop: remove 'apply' options during 'drop' invocation
      cherry_pick_list: quit early if one side is empty

Uwe Kleine-König (1):
      rev-parse: fix --parse-opt --keep-dashdash --stop-at-non-option


Version v1.6.6.2; changes since v1.6.6.1:
-----------------------------------------

Christopher Beelby (1):
      git-gui: Keep repo_config(gui.recentrepos) and .gitconfig in sync

Gerrit Pape (1):
      git-cvsserver: allow regex metacharacters in CVSROOT

Giuseppe Bilotta (1):
      git-gui: work from the .git dir

Ilari Liusvaara (4):
      Add xmallocz()
      Fix integer overflow in patch_delta()
      Fix integer overflow in unpack_sha1_rest()
      Fix integer overflow in unpack_compressed_entry()

Jay Soffian (1):
      blame: prevent a segv when -L given start > EOF

Jeff Epler (1):
      git-gui: Fix applying a line when all following lines are deletions

Jeff King (1):
      fix memcpy of overlapping area

Jens Lehmann (1):
      git-gui: Correct file_states when unstaging partly staged entry

Johan Herland (1):
      builtin-config: Fix crash when using "-f <relative path>" from non-root dir

Jonathan Nieder (1):
      git-gui: Makefile: consolidate .FORCE-* targets

Junio C Hamano (15):
      checkout -m path: fix recreating conflicts
      status: don't require the repository to be writable
      Fix "log" family not to be too agressive about showing notes
      Fix "log --oneline" not to show notes
      merge-recursive: do not return NULL only to cause segfault
      ignore duplicated slashes in make_relative_path()
      approxidate_careful() reports errorneous date string
      Update @{bogus.timestamp} fix not to die()
      t0101: use a fixed timestamp when searching in the reflog
      git-add documentation: Fix shell quoting example
      Fix parsing of imap.preformattedHTML and imap.sslverify
      git-push: document all the status flags used in the output
      check-ref-format documentation: fix enumeration mark-up
      t8003: check exit code of command and error message separately
      Git 1.6.6.2

Nguyễn Thái Ngọc Duy (1):
      Add missing #include to support TIOCGWINSZ on Solaris

Pat Thoyts (1):
      git-gui: handle really long error messages in updateindex.

Peter Krefting (1):
      git-gui: Fix gitk for branch whose name matches local file

René Scharfe (2):
      archive: complain about path specs that don't match anything
      archive: simplify archive format guessing

SZEDER Gábor (1):
      bash: don't offer remote transport helpers as subcommands

Shawn O. Pearce (1):
      fast-import: Stream very large blobs directly to pack

Tay Ray Chuan (1):
      retry request without query when info/refs?query fails

Vitaly "_Vi" Shukela (1):
      git-gui: Add hotkeys for "Unstage from commit" and "Revert changes"

Wesley J. Landaker (1):
      Update git fsck --full short description to mention packs


Version v1.6.6.1; changes since v1.6.6:
---------------------------------------

Andreas Gruenbacher (3):
      base85 debug code: Fix length byte calculation
      base85: encode_85() does not use the decode table
      base85: Make the code more obvious instead of explaining the non-obvious

Andreas Schwab (1):
      git count-objects: handle packs bigger than 4G

Björn Gustavsson (4):
      Documentation: 'git add -A' can remove files
      git-add/rm doc: Consistently back-quote
      Fix "git remote update" with remotes.defalt set
      git-rm doc: Describe how to sync index & work tree

David Ripton (1):
      bisect: fix singular/plural grammar nit

Dmitry Potapov (1):
      fast-import: tag may point to any object type

Greg Price (1):
      commit: --cleanup is a message option

Jeff King (2):
      reset: unbreak hard resets with GIT_WORK_TREE
      textconv: stop leaking file descriptors

Jim Meyering (1):
      grep: NUL terminate input from a file

Jonathan Nieder (2):
      Documentation: git gc packs refs by default now
      Documentation: tiny git config manual tweaks

Junio C Hamano (10):
      t1200: work around a bug in some implementations of "find"
      t4019 "grep" portability fix
      Start 1.6.6.X maintenance track
      Makefile: FreeBSD (both 7 and 8) needs OLD_ICONV
      checkout -m: do not try to fall back to --merge from an unborn branch
      grep: -L should show empty files
      Update draft release notes to 1.6.6.1
      Fix mis-backport of t7002
      Git 1.6.5.8
      Git 1.6.6.1

Matthieu Moy (3):
      SubmittingPatches: hints to know the status of a submitted patch.
      branch: die explicitly why when calling "git branch [-a|-r] branchname".
      stash: mention --patch in usage string.

Michael Haggerty (1):
      rebase--interactive: Ignore comments and blank lines in peek_next_command

Nathaniel W Filardo (1):
      read_index(): fix reading extension size on BE 64-bit archs

Nguyễn Thái Ngọc Duy (2):
      Documentation: always respect core.worktree if set
      t7102: make the test fail if one of its check fails

Ramkumar Ramachandra (1):
      Document git-blame triple -C option

Richard Weinberger (1):
      Fix uninitialized variable in get_refs_via_rsync().

Shawn O. Pearce (2):
      fast-import: Document author/committer/tagger name is optional
      remote-curl: Fix Accept header for smart HTTP connections

Stephen Boyd (3):
      octopus: make merge process simpler to follow
      octopus: reenable fast-forward merges
      octopus: remove dead code

Tarmigan Casebolt (1):
      Add git-http-backend to command-list.

Thomas Rast (1):
      bash completion: factor submodules into dirty state


Version v1.6.6; changes since v1.6.6-rc4:
-----------------------------------------

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

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

Eric Wong (4):
      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

Junio C Hamano (1):
      Git 1.6.6

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

Sam Vilain (5):
      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.


Version v1.6.6-rc4; changes since v1.6.6-rc3:
---------------------------------------------

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


Version v1.6.6-rc3; changes since v1.6.6-rc2:
---------------------------------------------

Björn Gustavsson (1):
      bash: Support new 'git fetch' options

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 (7):
      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

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


Version v1.6.6-rc2; changes since v1.6.6-rc1:
---------------------------------------------

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 Narębski (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 -> 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 <msg> HEAD <commit>..." 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


Version v1.6.6-rc1; changes since v1.6.6-rc0:
---------------------------------------------

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 Narębski (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<n> when determining the name
      Remove dead code from "git am"
      emit_line(): don't emit an empty <SET><RESET> 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 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


Version v1.6.6-rc0; changes since v1.6.5.9:
-------------------------------------------

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

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

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

Björn Gustavsson (10):
      Teach 'rebase -i' the command "reword"
      bash: complete more options for 'git rebase'
      Teach 'git merge' and 'git pull' the option --ff-only
      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
      Fix truncated usage messages
      User Manual: Write "Git" instead of "GIT"

Christian Couder (1):
      git: add --no-replace-objects option to disable replacing

Clemens Buchacher (2):
      remote-helpers: return successfully if everything up-to-date
      set httpd port before sourcing lib-httpd

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

David Aguilar (1):
      submodule.c: Squelch a "use before assignment" warning

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.

Eric Wong (6):
      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

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 (2):
      diff.c: stylefix
      Use 'fast-forward' all over the place

Heiko Voigt (1):
      git-gui: remove warning when deleting correctly merged remote branch

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

Jakub Narębski (4):
      gitweb: Add 'show-sizes' feature to show blob sizes in tree view
      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()

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

Jeff King (3):
      imap-send: remove useless uid code
      gitignore: root most patterns at the top-level directory
      t915{0,1}: use $TEST_DIRECTORY

Jens Lehmann (5):
      git-gui: display summary when showing diff of a submodule
      git-gui: fix diff for partially staged submodule changes
      git submodule add: make the <path> parameter optional
      git-gui: fix use of uninitialized variable
      add tests for git diff --submodule

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

Johan Herland (9):
      Teach "-m <msg>" and "-F <file>" 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

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

Johannes Sixt (1):
      Windows: use BLK_SHA1 again

Jonathan Nieder (34):
      Add tests for git check-ref-format
      check-ref-format: simplify --print implementation
      Handle more shell metacharacters in editor names
      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'
      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 <command> -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

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 (20):
      diff-lib.c: fix misleading comments on oneway_diff()
      unpack-trees: typofix
      unpack_callback(): use unpack_failed() consistently
      git check-ref-format --print
      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
      Teach --wrap to only indent without wrapping
      Update draft release notes to 1.6.6
      Revert "Don't create the $GIT_DIR/branches directory on init"
      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
      Provide a build time default-pager setting
      Update draft release notes to 1.6.6
      Git v1.6.6-rc0

Linus Torvalds (1):
      Add '--bisect' revision machinery argument

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 (1):
      instaweb: support mod_cgid for apache2

Markus Heidelberg (1):
      bash completion: difftool accepts the same options as diff

Michael J Gruber (1):
      Make t9150 and t9151 test scripts executable

Nicolas Pitre (1):
      pack-objects: move thread autodetection closer to relevant code

Ramsay Jones (2):
      Makefile: keep MSVC and Cygwin configuration separate
      MSVC: Add support for building with NO_MMAP

René Scharfe (6):
      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

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

SZEDER Gábor (1):
      Documentation: add 'git replace' to main git manpage

Sam Vilain (5):
      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

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

Sebastian Schuberth (2):
      Use faster byte swapping when compiling with MSVC
      Make the MSVC projects use PDB/IDB files named after the project

Shawn O. Pearce (27):
      git-gui: Ensure submodule path is quoted properly
      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

Stephen Boyd (7):
      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
      t3101: test more ls-tree options
      ls-tree: migrate to parse-options

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 (2):
      http-push: fix check condition on http.c::finish_http_pack_request()
      t5540-http-push: remove redundant fetches

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

Thomas Rast (14):
      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
      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

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

Vietor Liu (1):
      git-gui: adjust the minimum height of diff pane for shorter screen height

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


Version v1.6.5.9; changes since v1.6.5.8:
-----------------------------------------

Björn Gustavsson (3):
      Documentation: 'git add -A' can remove files
      git-add/rm doc: Consistently back-quote
      git-rm doc: Describe how to sync index & work tree

Greg Brockman (1):
      Check size of path buffer before writing into it

Jakub Narębski (1):
      gitweb: Introduce esc_attr to escape attributes of HTML elements

Jay Soffian (1):
      blame: prevent a segv when -L given start > EOF

Jeff King (2):
      fix memcpy of overlapping area
      dwim_ref: fix dangling symref warning

Junio C Hamano (2):
      t8003: check exit code of command and error message separately
      Git 1.6.4.5

Larry D'Anna (1):
      diff: make sure --output=/bad/path is caught

Michal Sojka (1):
      Remove extra '-' from git-am(1)

Stephen Boyd (4):
      octopus: make merge process simpler to follow
      octopus: reenable fast-forward merges
      octopus: remove dead code
      request-pull.txt: Document -p option

Thomas Rast (1):
      stash pop: remove 'apply' options during 'drop' invocation

Uwe Kleine-König (1):
      rev-parse: fix --parse-opt --keep-dashdash --stop-at-non-option


Version v1.6.5.8; changes since v1.6.5.7:
-----------------------------------------

Andreas Gruenbacher (3):
      base85 debug code: Fix length byte calculation
      base85: encode_85() does not use the decode table
      base85: Make the code more obvious instead of explaining the non-obvious

Andreas Schwab (1):
      git count-objects: handle packs bigger than 4G

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

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

Dmitry Potapov (1):
      fast-import: tag may point to any object type

Greg Price (1):
      commit: --cleanup is a message option

Jeff King (2):
      reset: unbreak hard resets with GIT_WORK_TREE
      textconv: stop leaking file descriptors

Jim Meyering (1):
      grep: NUL terminate input from a file

Junio C Hamano (3):
      checkout -m: do not try to fall back to --merge from an unborn branch
      Fix mis-backport of t7002
      Git 1.6.5.8

Matthieu Moy (1):
      branch: die explicitly why when calling "git branch [-a|-r] branchname".

Nguyễn Thái Ngọc Duy (1):
      t7102: make the test fail if one of its check fails

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

Thomas Rast (1):
      bash completion: factor submodules into dirty state


Version v1.6.5.7; changes since v1.6.5.6:
-----------------------------------------

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


Version v1.6.5.6; changes since v1.6.5.5:
-----------------------------------------

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.


Version v1.6.5.5; changes since v1.6.5.4:
-----------------------------------------

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


Version v1.6.5.4; changes since v1.6.5.3:
-----------------------------------------

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

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

Greg Price (1):
      Documentation: undocument gc'd function graph_release()

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

Junio C Hamano (7):
      builtin-apply.c: pay attention to -p<n> when determining the name
      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
      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

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

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

Stephen Boyd (1):
      instaweb: restart server if already running


Version v1.6.5.3; changes since v1.6.5.2:
-----------------------------------------

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 Narębski (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


Version v1.6.5.2; changes since v1.6.5.1:
-----------------------------------------

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


Version v1.6.5.1; changes since v1.6.5:
---------------------------------------

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


Version v1.6.5; changes since v1.6.5-rc3:
-----------------------------------------

Alexander Gavrilov (1):
      git-svn: Avoid spurious errors when rewriteRoot is used.

Ben Walton (1):
      ls-files: die instead of fprintf/exit in -i error

Björn Gustavsson (1):
      bash: add support for 'git replace'

Brandon Casey (2):
      Makefile: enable THREADED_DELTA_SEARCH on IRIX and IRIX64
      Makefile: add a note about the NO_MMAP setting on IRIX and IRIX64

Christian Himpel (2):
      git-am: fixed patch_format detection according to RFC2822
      git-am: force egrep to use correct characters set

Erik Faye-Lund (2):
      increase portability of NORETURN declarations
      add NORETURN_PTR for function pointers

Felipe Contreras (1):
      send-email: fix mutt regex for grouped aliases

Ingmar Vanhassel (1):
      import-tars: Add missing closing bracket

Jeff King (2):
      improve reflog date/number heuristic
      pull: improve advice for unconfigured error case

Jonathan Nieder (8):
      Describe DOCBOOK_XSL_172, ASCIIDOC_NO_ROFF options in Makefile
      Documentation: git fmt-merge-msg does not have to be a script
      Documentation: clarify mergeoptions description
      Documentation: branch: update --merged description
      Documentation: clarify branch creation
      Documentation: clarify "working tree" definition
      racy-git.txt: explain nsec problem in more detail
      Documentation: clone: clarify discussion of initial branch

Junio C Hamano (2):
      Update draft release notes to 1.6.5
      GIT 1.6.5

Ramsay Jones (2):
      Fix MSVC build on cygwin
      Fix the exit code of MSVC build scripts on cygwin

René Scharfe (1):
      Git archive and trailing "/" in prefix

Simon Arlott (1):
      git-svn: hide find_parent_branch output in double quiet mode

Stephen Boyd (2):
      completion: fix completion of git <TAB><TAB>
      completion: fix alias listings with newlines


Version v1.6.5-rc3; changes since v1.6.5-rc2:
---------------------------------------------

Adam Brewster (1):
      filter-branch: add --prune-empty to option summary

Andreas Schwab (1):
      parse-opt: ignore negation of OPT_NONEG for ambiguity checks

Brandon Casey (3):
      perl/Makefile.PL: detect MakeMaker versions incompatible with DESTDIR
      Documentation/git-gc.txt: default --aggressive window is 250, not 10
      Makefile: enable THREADED_DELTA_SEARCH on SunOS

Frederik Schwarzer (1):
      Correct minor typo in post-receive hook template

Jim Meyering (1):
      typo fix: Directory `...' exist, ...: s/exist/exists/

Johan Sageryd (1):
      Fix '--relative-date'

Junio C Hamano (4):
      builtin-mailinfo.c: check error status from rewind and ftruncate
      show-branch: fix segfault when showbranch.default exists
      git-pull: dead code removal
      fast-import.c::validate_raw_date(): really validate the value

Mark Rada (1):
      tests: make all test files executable

Michael Wookey (1):
      generators/vcproj.pm: remove UNICODE from build

Miklos Vajna (1):
      git branch -D: give a better error message when lockfile creation fails

Nicolas Pitre (1):
      make 'git clone' ask the remote only for objects it cares about

Ramsay Jones (1):
      Fix some printf format warnings

SZEDER Gábor (1):
      bash: teach 'git checkout' options

Sebastian Schuberth (2):
      Make generated MSVC solution file open from Windows Explorer
      Make just opening the generated MSVC solution file not modify it

Stefan Naewe (1):
      README: git lives at http://git-scm.com these days

Stephen Boyd (2):
      completion: update am, commit, and log
      completion: add dirstat and friends to diff options

Yakov Lerner (1):
      send-email: fix obscure error when encryption=tls and smtp cannot connect


Version v1.6.5-rc2; changes since v1.6.5-rc1:
---------------------------------------------

Clemens Buchacher (2):
      test local clone by copying
      cvs: initialize empty password

Dmitry Potapov (2):
      git-archive: add '-o' as a alias for '--output'
      git-archive: infer output format from filename when unspecified

Frank Li (6):
      Avoid declaration after statement
      Change regerror() declaration from K&R style to ANSI C (C89)
      Fix __stdcall placement and function prototype
      Test for WIN32 instead of __MINGW32_
      Add MinGW header files to build git with MSVC
      Add platform files for porting to MSVC

Heiko Voigt (2):
      remove logical typo in documentation of sample update hook
      web--browse: fix Mac OS X GUI detection for 10.6

Jim Meyering (1):
      pre-commit.sample: add comment re tr portability; fix grammar

Johannes Gilger (1):
      git-clone doc: typofix

Johannes Sixt (1):
      test-genrandom: ensure stdout is set to _O_BINARY on Windows

Junio C Hamano (6):
      git-commit doc: remove duplicated --dry-run description
      http.c: avoid freeing an uninitialized pointer
      GIT 1.6.4.4
      Update Release Notes to 1.6.5
      pay attention to DESTDIR when building with NO_PERL_MAKEMAKER
      pull: Clarify "helpful" message for another corner case

Marius Storm-Olsen (9):
      Add include guards to compat/win32.h
      Set _O_BINARY as default fmode for both MinGW and MSVC
      Add empty header files for MSVC port
      Make usage of windows.h lean and mean
      Define strncasecmp and ftruncate for MSVC
      Add MSVC to Makefile
      Add README for MSVC build
      Add scripts to generate projects for other buildsystems (MSVC vcproj, QMake)
      Tag GIT_VERSION when Git is built with MSVC

Matthieu Moy (1):
      push: Correctly initialize nonfastforward in transport_push.

Nelson Elhage (1):
      git-push: Accept -n as a synonym for --dry-run.

Nicolas Pitre (1):
      Nicolas Pitre has a new email address

Pat Thoyts (1):
      gitk: Work around leftover temporary save file

Paul Mackerras (1):
      gitk: Show diff of commits at end of compare-commits output

Peter Krefting (1):
      gitk: Update Swedish translation (280t0f0u)

SZEDER Gábor (3):
      bash: rename __git_find_subcommand() to __git_find_on_cmdline()
      bash: update 'git stash' completion
      bash: teach 'git reset --patch'

Thiago Farina (3):
      Update the usage bundle string.
      pack-objects: remove SP at the end of usage string
      Update "describe" documentation to match reality

Todd Zullinger (1):
      completion: Replace config --list with --get-regexp


Version v1.6.5-rc1; changes since v1.6.5-rc0:
---------------------------------------------

Brian Gernhardt (4):
      INSTALL: Update description of our SHA-1 code
      Makefile: Add NEEDS_CRYPTO_WITH_SSL
      INSTALL: Reorder dependencies, split shell and Perl
      INSTALL: Describe dependency knobs from Makefile

Clemens Buchacher (3):
      grep: fix exit status if external_grep() punts
      grep: accept relative paths outside current working directory
      preserve mtime of local clone

Daniel Barkalow (4):
      Add support for external programs for handling native fetches
      Use an external program to implement fetching with curl
      Make the "traditionally-supported" URLs a special case
      Use a clearer style to issue commands to remote helpers

Jari Aalto (1):
      Improve --patch option documentation in git-add

Jeff King (4):
      Makefile: git-http-fetch does not need expat
      push: make non-fast-forward help message configurable
      status: make "how to stage" messages optional
      rebase: use plumbing to show dirty state

Jim Meyering (3):
      use write_str_in_full helper to avoid literal string lengths
      use write_str_in_full helper to avoid literal string lengths
      don't dereference NULL upon fdopen failure

Johannes Sixt (2):
      start_command: do not clobber cmd->env on Windows code path
      pager: set LESS=FRSX also on Windows

Josh Triplett (2):
      Wrap rewrite globals in a struct in preparation for adding another set
      Add url.<base>.pushInsteadOf: URL rewriting for push only

Junio C Hamano (7):
      Makefile: do not link three copies of git-remote-* programs
      Makefile: install hardlinks for git-remote-<scheme> supported by libcurl if possible
      merge-recursive: give less scary messages when merge did not start
      Makefile: remove remnant of separate http/https/ftp helpers
      GIT 1.6.4.3
      quiltimport documentation: --dry-run and -n are synonyms
      GIT 1.6.5-rc1

Linus Torvalds (1):
      git-http-fetch: not a builtin

Mark Lodato (1):
      svn: properly escape arguments for authors-prog

Martin Nordholts (1):
      git.el: Use git-add-file for unmerged files, remove git-resolve-file

Matthieu Moy (1):
      wrap git's main usage string.

Mike Ralphson (2):
      Add transport native helper executables to .gitignore
      http-fetch: Fix Makefile dependancies

Nicolas Sebrecht (2):
      mailinfo: add '--scissors' to usage message
      add documentation for mailinfo.scissors and '--no-scissors'

Peter Krefting (2):
      import-tars: Allow per-tar author and commit message.
      Add script for importing bits-and-pieces to Git.

Reilly Grant (1):
      git-p4: Avoid modules deprecated in Python 2.6.

Tay Ray Chuan (1):
      http.c: remove verification of remote packs


Version v1.6.5-rc0; changes since v1.6.4.5:
-------------------------------------------

Adam Brewster (3):
      svn: Add && to t9107-git-svn-migrate.sh
      svn: Honor --prefix option in init without --stdlayout
      svn: allow branches outside of refs/remotes

Adam Simpkins (3):
      graph API: use a new color when starting a brand new column
      graph API: fix bug in graph_is_interesting()
      Add tests for rev-list --graph with options that simplify history

Alex Riesen (2):
      Add a reminder test case for a merge with F/D transition
      Add date formatting and parsing functions relative to a given time

Alexandre Julliard (1):
      read-tree: Fix regression with creation of a new index file.

André Goddard Rosa (1):
      Fix typos on pt_BR/gittutorial.txt translation

Benjamin Kramer (1):
      gitweb: Optimize git-favicon.png

Björn Steinbrink (1):
      git-describe: Die early if there are no possible descriptions

Brandon Casey (9):
      strbuf: add new function strbuf_getwholeline()
      builtin-mailinfo,builtin-mailsplit: use strbufs
      builtin-mailsplit.c: remove read_line_with_nul() since it is no longer used
      block-sha1/sha1.c: silence compiler complaints by casting void * to char *
      git-compat-util.h: remove superfluous test for __sun__
      Makefile: remove pointless conditional assignment in SunOS section
      abspath.c: move declaration of 'len' into inner block and use appropriate type
      commit.c: rename variable named 'n' which masks previous declaration
      t/test-lib.sh: provide a shell implementation of the 'yes' utility

Brian Gianforcaro (1):
      Style fixes, add a space after if/for/while.

Christian Couder (13):
      refs: add a "for_each_replace_ref" function
      replace_object: add mechanism to replace objects found in "refs/replace/"
      sha1_file: add a "read_sha1_file_repl" function
      object: call "check_sha1_signature" with the replacement sha1
      replace_object: add a test case
      mktag: call "check_sha1_signature" with the replacement sha1
      environment: add global variable to disable replacement
      Add new "git replace" command
      builtin-replace: teach "git replace" to actually replace
      parse-options: add new function "usage_msg_opt"
      builtin-replace: use "usage_msg_opt" to give better error messages
      Documentation: add documentation for "git replace"
      t6050: check pushing something based on a replaced commit

David Aguilar (1):
      Add git-replace to .gitignore

David Kågedal (1):
      git.el: Clarify documentation of git-commit-tree

David Soria Parra (1):
      run-command.c: squelch a "use before assignment" warning

Dirk Hoerner (1):
      git-cvsimport: add support for cvs pserver password scrambling.

Eric Wong (3):
      svn: initial "master" points to trunk if possible
      svn: (cleanup) use predefined constant for rev_map_fmt
      svn: assume URLs from the command-line are URI-encoded

Geoffrey Irving (1):
      git fast-export: add --no-data option

Giuseppe Bilotta (3):
      gitweb: fix 'Use of uninitialized value' error in href()
      git apply: option to ignore whitespace differences
      gitweb: pull ref markes pull out of subject <a> element

Heiko Voigt (2):
      cvsimport: add test illustrating a bug in cvsps
      cvsimport: extend testcase about patchset order to contain branches

Jakub Narębski (6):
      gitweb: Make .error style generic
      gitweb: Mark boundary commits in 'blame' view
      gitweb: Use "previous" header of git-blame -p in 'blame' view
      gitweb: Mark commits with no "previous" in 'blame' view
      gitweb: Add author initials in 'blame' view, a la "git gui blame"
      gitweb: Use light/dark for class names also in 'blame' view

Jari Aalto (1):
      git-tag(1): Refer to git-check-ref-format(1) for <name>

Jeff King (14):
      push: add --quiet flag
      transport: pass "quiet" flag to pack-objects
      transport: don't show push status if --quiet is given
      tests: use "$TEST_DIRECTORY" instead of ".."
      tests: provide $TRASH_DIRECTORY variable
      tests: allow user to specify trash directory location
      t/Makefile: include config.mak
      allow pull --rebase on branch yet to be born
      tests: disable interactive hunk selection tests if perl is not available
      clone: add --branch option to select a different HEAD
      refactor test-date interface
      tests: add date printing and parsing tests
      fix approxidate parsing of relative months and years
      push: teach --quiet to suppress "Everything up-to-date"

Jeff Lasslett (1):
      Check return value of ftruncate call in http.c

Jens Lehmann (1):
      git submodule summary: add --files option

Johan Herland (9):
      git submodule foreach: Provide access to submodule name, as '$name'
      git submodule: Cleanup usage string and add option parsing to cmd_foreach()
      Add selftest for 'git submodule foreach'
      git submodule foreach: test access to submodule name as '$name'
      git submodule foreach: Add --recursive to recurse into nested submodules
      git submodule update: Introduce --recursive to update nested submodules
      git submodule status: Add --recursive to recurse into nested submodules
      t7407: Use 'rev-parse --short' rather than bash's substring expansion notation
      git clone: Add --recursive to automatically checkout (nested) submodules

Johannes Schindelin (2):
      Make 'git stash -k' a short form for 'git stash save --keep-index'
      parse-opt: optionally show "--no-" option string

Johannes Sixt (13):
      MinGW: simplify waitpid() emulation macros
      run_command: return exit code as positive value
      run_command: report system call errors instead of returning error codes
      run_command: encode deadly signal number in the return value
      run_command: report failure to execute the program, but optionally don't
      receive-pack: remove unnecessary run_status report
      api-run-command.txt: describe error behavior of run_command functions
      t0001-init: fix a file name
      t0001-init: split the existence test from the permission test
      gitk: Do not hard-code "encoding" in attribute lookup functions
      Make test number t7406- unique
      Make test case number unique
      status: list unmerged files much later

Junio C Hamano (31):
      t/t9600: remove exit after test_done
      Start 1.6.5 cycle
      request-pull: optionally show a patch as well
      diff-index: report unmerged new entries
      diff-index: keep the original index intact
      Allow mailsplit (and hence git-am) to handle mails with CRLF line-endings
      wt-status.c: rework the way changes to the index and work tree are summarized
      git-rev-list.txt: Clarify the use of multiple revision arguments
      block-sha1: undo ctx->size change
      block-sha1: minor fixups
      am: allow individual e-mail files as input
      status: show worktree status of conflicted paths separately
      verify-pack --stat-only: show histogram without verifying
      commit: --dry-run
      wt-status: move many global settings to wt_status structure
      wt-status: move wt_status_colors[] into wt_status structure
      Make git_status_config() file scope static to builtin-commit.c
      wt-status: collect untracked files in a separate "collect" phase
      Documentation/git-commit.txt: describe --dry-run
      git commit --dry-run -v: show diff in color when asked
      compat/snprintf.c: clarify SNPRINTF_SIZE_CORR
      builtin-mailinfo.c: fix confusing internal API to mailinfo()
      Teach mailinfo to ignore everything before -- >8 -- mark
      am/mailinfo: Disable scissors processing by default
      mailinfo.scissors: new configuration
      Draft release notes to 1.6.5 before -rc0
      upload-pack: add a trigger for post-upload-pack hook
      upload-pack: feed "kind [clone|fetch]" to post-upload-pack hook
      builtin-pack-objects.c: avoid vla
      builtin-apply.c: get rid of an unnecessary use of temporary array
      GIT 1.6.5-rc0

Karthik R (1):
      git-svn: Use GIT_SSH setting if SVN_SSH is not set

Lars Hjemli (2):
      Documentaqtion/git-submodule.txt: Typofix
      git-log: allow --decorate[=short|full]

Linus Torvalds (12):
      Add new optimized C 'block-sha1' routines
      block-sha1: try to use rol/ror appropriately
      block-sha1: make the 'ntohl()' part of the first SHA1 loop
      block-sha1: re-use the temporary array as we calculate the SHA1
      block-sha1: macroize the rounds a bit further
      block-sha1: Use '(B&C)+(D&(B^C))' instead of '(B&C)|(D&(B|C))' in round 3
      block-sha1: get rid of redundant 'lenW' context
      block-sha1: perform register rotation using cpp
      block-sha1: improved SHA1 hashing
      block-sha1: improve code on large-register-set machines
      Improve on 'approxidate'
      Further 'approxidate' improvements

Luke Diamand (1):
      git-p4: stream from perforce to speed up clones

Mark Rada (6):
      gitweb: support to globally disable a snapshot format
      gitweb: update INSTALL regarding specific snapshot settings
      gitweb: add support for XZ compressed snapshots
      gitweb: improve snapshot error handling
      gitweb: split test suite into library and tests
      gitweb: add t9501 tests for checking HTTP status codes

Matthieu Moy (6):
      rebase: consistent error messages for staged and unstaged changes.
      git-ls-files.txt: clarify what "other files" mean for --other
      Show usage string for 'git log -h', 'git show -h' and 'git diff -h'
      Rename REFRESH_SAY_CHANGED to REFRESH_IN_PORCELAIN.
      reset: make the reminder output consistent with "checkout"
      stash: simplify defaulting to "save" and reject unknown options

Michael Haggerty (6):
      Start a library for cvsimport-related tests
      Use CVS's -f option if available (ignore user's ~/.cvsrc file)
      Test contents of entire cvsimported "master" tree contents
      Add some tests of git-cvsimport's handling of vendor branches
      Add a test of "git cvsimport"'s handling of tags and branches
      git-svn: ignore leading blank lines in svn:ignore

Michael J Gruber (3):
      t6010-merge-base.sh: Depict the octopus test graph
      git-merge-base/git-show-branch: Cleanup documentation and usage
      git-merge-base/git-show-branch --merge-base: Documentation and test

Michał Kiedrowicz (2):
      init-db: migrate to parse-options
      grep: Add --max-depth option.

Nanako Shiraishi (3):
      git init: optionally allow a directory argument
      Documentation: consistently refer to check-ref-format
      Documentation: describe the scissors mark support of "git am"

Nguyễn Thái Ngọc Duy (1):
      Prevent diff machinery from examining assume-unchanged entries on worktree

Nick Edelen (1):
      Shift object enumeration out of upload-pack

Nicolas Pitre (11):
      block-sha1: move code around
      block-sha1: split the different "hacks" to be individually selected
      block-sha1: support for architectures with memory alignment restrictions
      block-sha1: more good unaligned memory access candidates
      block-sha1: make the size member first in the context struct
      make sure byte swapping is optimal for git
      block-sha1: guard gcc extensions with __GNUC__
      remove ARM and Mozilla SHA1 implementations
      fix simple deepening of a repo
      make shallow repository deepening more network efficient
      pack-objects: free preferred base memory after usage

Nicolas Sebrecht (1):
      git-am: print fair error message when format detection fails

Ori Avtalion (1):
      git stash: Give friendlier errors when there is nothing to apply

Pascal Obry (1):
      Do not scramble password read from .cvspass

René Scharfe (2):
      update-server-info: make builtin, use parseopt
      UI consistency: allow --force for where -f means force

Stephen Boyd (7):
      read-tree: convert unhelpful usage()'s to helpful die()'s
      read-tree: migrate to parse-options
      write-tree: migrate to parse-options
      verify-tag: migrate to parse-options
      verify-pack: migrate to parse-options
      prune-packed: migrate to parse-options
      technical-docs: document tree-walking API

Tay Ray Chuan (2):
      http.c: free preq when aborting
      http.c: replace usage of temporary variable for urls

Thadeu Lima de Souza Cascardo (1):
      Translate the tutorial to Brazillian Portuguese

Thomas Rast (11):
      Document 'stash clear' recovery via unreachable commits
      gitk: New option to hide remote refs
      gitk: Fix direction of symmetric difference in optimized mode
      gitk: Parse arbitrary commit-ish in SHA1 field
      git-apply--interactive: Refactor patch mode code
      Add a small patch-mode testing library
      builtin-add: refactor the meat of interactive_add()
      Implement 'git reset --patch'
      Implement 'git checkout --patch'
      Implement 'git stash save --patch'
      DWIM 'git stash save -p' for 'git stash -p'

Tuomas Suutari (1):
      git-svn.txt: Fix location of parent argument

Wesley J. Landaker (2):
      Documentation: git-send-email: fix submission port number
      Documentation: git-send-email: correct statement about standard ports

Wilhansen Li (1):
      Add support for the Mongoose web server.


Version v1.6.4.5; changes since v1.6.4.4:
-----------------------------------------

Andreas Gruenbacher (3):
      base85 debug code: Fix length byte calculation
      base85: encode_85() does not use the decode table
      base85: Make the code more obvious instead of explaining the non-obvious

Andreas Schwab (1):
      git count-objects: handle packs bigger than 4G

Ben Walton (1):
      ls-files: die instead of fprintf/exit in -i error

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

Greg Brockman (1):
      Check size of path buffer before writing into it

Greg Price (1):
      commit: --cleanup is a message option

Jakub Narębski (1):
      gitweb: Introduce esc_attr to escape attributes of HTML elements

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

Jeff King (2):
      ls-files: excludes should not impact tracked files
      textconv: stop leaking file descriptors

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

Junio C Hamano (5):
      show-branch: fix segfault when showbranch.default exists
      fast-import.c::validate_raw_date(): really validate the value
      checkout -m: do not try to fall back to --merge from an unborn branch
      Fix mis-backport of t7002
      Git 1.6.4.5

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

Matthieu Moy (2):
      push: Correctly initialize nonfastforward in transport_push.
      branch: die explicitly why when calling "git branch [-a|-r] branchname".

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

Nguyễn Thái Ngọc Duy (1):
      t7102: make the test fail if one of its check fails

Uwe Kleine-König (1):
      rev-parse: fix --parse-opt --keep-dashdash --stop-at-non-option


Version v1.6.4.4; changes since v1.6.4.3:
-----------------------------------------

Jeff King (1):
      checkout: do not imply "-f" on unborn branches

Junio C Hamano (6):
      Fix "unpack-objects --strict"
      check_path(): allow symlinked directories to checkout-index --prefix
      xutils: Fix hashing an incomplete line with whitespaces at the end
      xutils: Fix xdl_recmatch() on incomplete lines
      http.c: avoid freeing an uninitialized pointer
      GIT 1.6.4.4


Version v1.6.4.3; changes since v1.6.4.2:
-----------------------------------------

Bert Wesarg (1):
      githooks.txt: put hooks into subsections

Clemens Buchacher (2):
      grep: fix exit status if external_grep() punts
      grep: accept relative paths outside current working directory

Emmanuel Trillaud (1):
      git-pull: do not mention --quiet and --verbose twice

Gerrit Pape (1):
      git-cvsserver: no longer use deprecated 'git-subcommand' commands

Jeff King (3):
      clone: disconnect transport after fetching
      push: fix english in non-fast-forward message
      push: re-flow non-fast-forward message

Junio C Hamano (1):
      GIT 1.6.4.3

Mark Lodato (1):
      svn: properly escape arguments for authors-prog

Miklos Vajna (1):
      git-clone: add missing comma in --reference documentation

Tay Ray Chuan (1):
      http.c: remove verification of remote packs


Version v1.6.4.2; changes since v1.6.4.1:
-----------------------------------------

David Kågedal (1):
      Minor improvement to the write-tree documentation

David Reiss (1):
      Round-down years in "years+months" relative date view

Jeff King (3):
      add tests for merge message headings
      merge: fix incorrect merge message for ambiguous tag/branch
      merge: indicate remote tracking branches in merge message

Johannes Schindelin (2):
      Expose the has_non_ascii() function
      Correctly mark cover letters' encodings if they are not pure ASCII

Johannes Sixt (1):
      t6035-merge-dir-to-symlink depends on SYMLINKS prerequisite

Junio C Hamano (3):
      apply: notice creation/removal patches produced by GNU diff
      clean: require double -f options to nuke nested git repository and work tree
      GIT 1.6.4.2

Kirill Smelkov (1):
      git add -p: demonstrate failure when staging both mode and hunk

Kjetil Barvik (1):
      lstat_cache: guard against full match of length of 'name' parameter

Lars Hjemli (1):
      git-log: allow --decorate[=short|full]

Linus Torvalds (1):
      git-checkout: be careful about untracked symlinks

Nanako Shiraishi (3):
      git-bisect: call the found commit "*the* first bad commit"
      Fix overridable written with an extra 'e'
      Remove unused t/t8005/iso8859-5.txt

Pickens, James E (1):
      Demonstrate bugs when a directory is replaced with a symlink

Tay Ray Chuan (2):
      http.c: don't assume that urls don't end with slash
      http.c: set slot callback members to NULL when releasing object

Thomas Rast (1):
      add -p: do not attempt to coalesce mode changes

Wesley J. Landaker (1):
      Documentation: git-archive: mark --format as optional in summary


Version v1.6.4.1; changes since v1.6.4:
---------------------------------------

Björn Steinbrink (1):
      config: Keep inner whitespace verbatim

Erik Faye-Lund (1):
      send-email: remove debug trace

Jakub Narębski (1):
      gitweb/README: Document $base_url

Jeff King (3):
      show: suppress extra newline when showing annotated tag
      show: add space between multiple items
      docs: describe impact of repack on "clone -s"

Jens Lehmann (1):
      Documentation: git submodule: add missing options to synopsis

Johan Herland (1):
      help.c: give correct structure's size to memset()

Johannes Schindelin (1):
      filter-branch: add an example how to add ACKs to a range of commits

Junio C Hamano (5):
      merge-recursive: don't segfault while handling rename clashes
      t5510: harden the way verify-pack is used
      verify-pack -v: do not report "chain length 0"
      am: allow individual e-mail files as input
      GIT 1.6.4.1

Mark Rada (1):
      git-instaweb: fix mod_perl detection for apache2

Matthieu Moy (3):
      Better usage string for reflog.
      push: point to 'git pull' and 'git push --force' in case of non-fast forward
      filter-branch: make the usage string fit on 80 chars terminals.

Miklos Vajna (1):
      hg-to-git: don't import the unused popen2 module

Nicolas Pitre (1):
      don't let the delta cache grow unbounded in 'git repack'

Nicolas Sebrecht (1):
      git-am: print fair error message when format detection fails

Ori Avtalion (1):
      Change mentions of "git programs" to "git commands"

Paul Bolle (2):
      Documentation: merge: one <remote> is required
      Documentation: add: <filepattern>... is optional

Santi Béjar (2):
      t5520-pull: Test for rebased upstream + fetch + pull --rebase
      pull: support rebased upstream + fetch + pull --rebase

Zoltán Füzesi (1):
      gitweb: parse_commit_text encoding fix

Štěpán Němec (1):
      Fix typos in git-remote.txt and git-symbolic-ref.txt


Version v1.6.4; changes since v1.6.4-rc3:
-----------------------------------------

David Kågedal (1):
      Update the documentation of the raw diff output format

Elijah Newren (7):
      fast-export: Set revs.topo_order before calling setup_revisions
      fast-export: Omit tags that tag trees
      fast-export: Make sure we show actual ref names instead of "(null)"
      fast-export: Do parent rewriting to avoid dropping relevant commits
      fast-export: Add a --tag-of-filtered-object option for newly dangling tags
      Add new fast-export testcases
      fast-export: Document the fact that git-rev-list arguments are accepted

Eric Wong (1):
      t9143: do not fail if Compress::Zlib is missing

Greg Price (1):
      Fix rebase -p --onto

Junio C Hamano (2):
      GIT 1.6.3.4
      GIT 1.6.4

Michael J Gruber (1):
      git-rerere.txt: Clarify ambiguity of the config variable

Sean Estabrooks (1):
      Trivial path quoting fixes in git-instaweb

Stephen Boyd (1):
      config.txt: document add.ignore-errors

Tom Grennan (1):
      request-pull: allow ls-remote to notice remote.$nickname.uploadpack


Version v1.6.4-rc3; changes since v1.6.4-rc2:
---------------------------------------------

Alex Vandiver (2):
      Make section_name_match start on '[', and return the length on success
      After renaming a section, print any trailing variable definitions

Björn Steinbrink (1):
      Add a test showing that 'git repack' throws away grafted-away parents

Daniel Trstenjak (1):
      Show the presence of untracked files in the bash prompt.

Eric Wong (6):
      git svn: fix shallow clone when upstream revision is too new
      git svn: revert default behavior for --minimize-url
      git svn: the branch command no longer needs the full path
      t9142: stop httpd after the test
      git svn: avoid escaping '/' when renaming/copying files
      git svn: make minimize URL more reliable over http(s)

Jeff King (1):
      send-email: detect cycles in alias expansion

Johannes Schindelin (1):
      git repack: keep commits hidden by a graft

Junio C Hamano (6):
      do_one_ref(): null_sha1 check is not about broken ref
      SunOS grep does not understand -C<n> nor -e
      Update release notes for 1.6.4
      Fix severe breakage in "git-apply --whitespace=fix"
      t8005: Nobody writes Russian in shift_jis
      GIT 1.6.4-rc3

Linus Torvalds (3):
      git branch: fix performance problem
      git branch: avoid unnecessary object lookups
      git branch: clean up detached branch handling

Matthias Andree (1):
      Fix export_marks() error handling.

Nanako Shiraishi (1):
      Documentation/config.txt: a variable can be defined on the section header line

Robert Zeh (1):
      git svn: add gc command

Thomas Rast (1):
      Disable asciidoc 8.4.1+ semantics for `{plus}` and friends


Version v1.6.4-rc2; changes since v1.6.4-rc1:
---------------------------------------------

Brandon Casey (4):
      refs.c: release file descriptor on error return
      sha1_name.c: avoid unnecessary strbuf_release
      configure.ac: rework/fix the NEEDS_RESOLV and NEEDS_LIBGEN tests
      configure.ac: properly unset NEEDS_SSL_WITH_CRYPTO when sha1 func is missing

Eric Wong (2):
      git svn: rename tests that had conflicting numbers
      git svn: fix reparenting when ugly http(s) URLs are used

Junio C Hamano (5):
      checkout -f: deal with a D/F conflict entry correctly
      push: do not give big warning when no preference is configured
      Updates to draft release notes to 1.6.4
      combine-diff.c: fix performance problem when folding common deleted lines
      diff --cc: a lost line at the beginning of the file is shown incorrectly

Martin Koegler (1):
      git stash: modernize use of "dashed" git-XXX calls

Michael J Gruber (1):
      t4202-log.sh: Test git log --no-walk sort order

Mike Ralphson (1):
      cvsexportcommit: reorder tests to quiet intermittent failure

Pierre Habouzit (4):
      janitor: use NULL and not 0 for pointers.
      refactor: use bitsizeof() instead of 8 * sizeof()
      janitor: add DIV_ROUND_UP and use it.
      janitor: useless checks before free

SZEDER Gábor (1):
      Trailing whitespace and no newline fix

Yann Dirson (2):
      List send-email config options in config.txt.
      Improve doc for format-patch threading options.


Version v1.6.4-rc1; changes since v1.6.4-rc0:
---------------------------------------------

Andreas Ericsson (1):
      mailinfo: Remove only one set of square brackets

Brandon Casey (5):
      unpack-trees.c: work around run-time array initialization flaw on IRIX 6.5
      git-compat-util.h: adjust for SGI IRIX 6.5
      Makefile: add NEEDS_LIBGEN to optionally add -lgen to compile arguments
      Makefile: add section for SGI IRIX 6.5
      Makefile: update IRIX64 section

Eric Wong (1):
      git svn: allow uppercase UUIDs from SVN

Johan Herland (1):
      quickfetch(): Prevent overflow of the rev-list command line

Junio C Hamano (2):
      Makefile: keep "git" when bindir is execdir
      Revert "mailinfo: Remove only one set of square brackets"

Linus Torvalds (10):
      Add 'fill_directory()' helper function for directory traversal
      Simplify read_directory[_recursive]() arguments
      Avoid doing extra 'lstat()'s for d_type if we have an up-to-date cache entry
      Avoid using 'lstat()' to figure out directories
      Prepare symlink caching for thread-safety
      Export thread-safe version of 'has_symlink_leading_path()'
      Make index preloading check the whole path to the file
      Make 'git show' more useful
      Improve on the 'invalid object' error message at commit time
      Fix extraneous lstat's in 'git checkout -f'

Mattias Nissler (2):
      git-svn: Always duplicate paths returned from get_log
      git-svn: Fix branch detection when repository root is inaccessible

SZEDER Gábor (2):
      Document 'git (rev-list|log) --merges'
      bash: add '--merges' to common 'git log' options

Wincent Colaiuta (1):
      gitweb: update Git homepage URL


Version v1.6.4-rc0; changes since v1.6.3.4:
-------------------------------------------

Alex Bennée (1):
      Add -k option to cvsexportcommit to revert expanded CVS keywords in CVS working tree before applying commit patch

Alex Riesen (3):
      Quote LF in urls git fetch saves in FETCH_HEAD
      Use UTF-8 instead of utf8 for backward compatibility
      Improve the naming of guessed target repository for git clone

Alex Vandiver (3):
      git-svn: Fix for svn paths removed > log-window-size revisions ago
      git-svn: Correctly report max revision when following deleted paths
      git-svn: Set svn.authorsfile if it is passed to git svn clone

Allan Caffee (1):
      graph API: Use horizontal lines for more compact graphs

Andreas Ericsson (1):
      fetch: Strip usernames from url's before storing them

Ben Jackson (3):
      Add 'git svn help [cmd]' which works outside a repo.
      git-svn: speed up find_rev_before
      Add 'git svn reset' to unwind 'git svn fetch'

Benjamin Kramer (1):
      imap-send: add support for IPv6

Bert Wesarg (1):
      builtin-remote: (get_one_entry): use strbuf

Björn Steinbrink (1):
      git-apply(1): Clarify that one can select where to apply the patch

Brandon Casey (23):
      t3900: use ancient iconv names for backward compatibility
      Use 'UTF-8' rather than 'utf-8' everywhere for backward compatibility
      builtin-mailinfo.c: compare character encodings case insensitively
      builtin-mailinfo.c: use "ISO8859-1" instead of "latin1" as fallback encoding
      t3901: avoid negation on right hand side of '|'
      t3901: Use ISO8859-1 instead of ISO-8859-1 for backward compatibility
      t9301: use ISO8859-1 rather than ISO-8859-1
      t5100: use ancient encoding syntax for backwards compatibility
      t8005: use more portable character encoding names
      t8005: convert CP1251 character set to ISO8859-5
      t8005: fix typo, it's ISO-8859-5, not KOI8-R
      Makefile: use /usr/ucb/install on SunOS platforms rather than ginstall
      Makefile: add NEEDS_RESOLV to optionally add -lresolv to compile arguments
      On Solaris choose the OLD_ICONV iconv() declaration based on the UNIX spec
      git-compat-util.h: tweak the way _XOPEN_SOURCE is set on Solaris
      Makefile: define __sun__ on SunOS
      Makefile: add section for SunOS 5.7
      git-compat-util.h: avoid using c99 flex array feature with Sun compiler 5.8
      git-send-email.perl: improve detection of MIME encoded-words
      send-email: use UTF-8 rather than utf-8 for consistency
      Makefile: Solaris needs HAVE_ALLOCA_H for alloca()
      t/t9001-send-email.sh: ensure generated script is executed with $SHELL_PATH
      git.c: avoid allocating one-too-many elements for new argv array

Christian Couder (30):
      rev-list: make "estimate_bisect_steps" non static
      rev-list: refactor printing bisect vars
      bisect: move common bisect functionality to "bisect_common"
      bisect--helper: add "--next-exit" to output bisect results
      bisect: use "git bisect--helper --next-exit" in "git-bisect.sh"
      bisect--helper: remove "--next-vars" option as it is now useless
      rev-list: remove stringed output flag from "show_bisect_vars"
      rev-parse: add --sq-quote to shell quote arguments
      bisect: use "git rev-parse --sq-quote" instead of a custom "sq" function
      am: simplify "sq" function by using "git rev-parse --sq-quote"
      bisect: use "sha1_array" to store skipped revisions
      bisect: implement "rev_argv_push" to fill an argv with revs
      bisect: store good revisions in a "sha1_array"
      bisect: use new "struct argv_array" to prepare argv for "setup_revisions"
      bisect: remove too much function nesting
      bisect: make skipped array functions more generic
      bisect: automatically sort sha1_array if needed when looking it up
      bisect: implement the "check_merge_bases" function
      bisect: add "check_good_are_ancestors_of_bad" function
      bisect: make "git bisect" use new "--next-all" bisect-helper function
      bisect: rework some rev related functions to make them more reusable
      commit: add function to unparse a commit and its parents
      bisect: check ancestors without forking a "git rev-list" process
      bisect: drop unparse_commit() and use clear_commit_marks()
      bisect: display first bad commit without forking a new process
      bisect: add parameters to "filter_skipped"
      bisect: when skipping, choose a commit away from a skipped commit
      t6030: test skipping away from an already skipped commit
      bisect: use a PRNG with a bias when skipping away from untestable commits
      Documentation: remove warning saying that "git bisect skip" may slow bisection

Christian Stimming (1):
      gitk: Update German translation.

Clemens Buchacher (5):
      http-push: reuse existing is_null_ref
      match_refs: search ref list tail internally
      test-lib: fail if invalid options are passed
      test-lib: allow exit trap to be used for cleanup by tests
      test-lib: fix http exit codes

Dan McGee (1):
      Unify signedness in hashing calls

Daniel Trstenjak (1):
      Show presence of stashed changes in bash prompt.

David Aguilar (5):
      mergetool--lib: specialize diff options for emerge and ecmerge
      mergetool--lib: add support for araxis merge
      compat: add a mkstemps() compatibility function
      compat: add a basename() compatibility function
      diff: generate pretty filenames in prep_temp_blob()

Dirk Süsserott (1):
      gitk: Add option 'Simple history' to the options menu

Edward Z. Yang (1):
      connect.c: Support PuTTY plink and TortoisePlink as SSH on Windows

Elijah Newren (1):
      gitk: Make more options easily accessible from Edit View dialog

Eric W. Biederman (1):
      git-send-email: Handle quotes when parsing .mailrc files

Eric Wong (4):
      git-svn: refuse to dcommit non-UTF-8 messages
      git-svn: convert globs to regexps for branch destinations
      t9138: remove stray dot in test which broke bash
      Allow the Unix epoch to be a valid commit date

Eygene Ryabinkin (1):
      git-svn testsuite: use standard configuration for Subversion tools

Felipe Contreras (2):
      Change prettify_ref to prettify_refname
      Prettify log decorations even more

Frank Lichtenheld (2):
      Git.pm: Set GIT_WORK_TREE if we set GIT_DIR
      Git.pm: Always set Repository to absolute path if autodetecting

Giuseppe Bilotta (11):
      git-am foreign patch support: introduce patch_format
      git-am foreign patch support: autodetect some patch formats
      git-am foreign patch support: StGIT support
      git-am: refactor 'cleaning up and aborting'
      gitweb: refactor author name insertion
      gitweb: uniform author info for commit and commitdiff
      gitweb: use git_print_authorship_rows in 'tag' view too
      gitweb: (gr)avatar support
      gitweb: gravatar url cache
      gitweb: picon avatar provider
      gitweb: add empty alt text to avatar img

Heiko Voigt (2):
      Extend sample update hook, disable modifying of existing tags
      Extend sample pre-commit hook to check for non ascii filenames

Hunter, D. Seth (1):
      http-push: fix xml_entities() string parsing overrun

Jakub Narębski (10):
      gitweb: Remove function prototypes (cleanup)
      gitweb: Do not use bareword filehandles
      gitweb: Always use three argument form of open
      gitweb: Always use three argument form of open
      gitweb: Use block form of map/grep in a few cases more
      gitweb: Replace wrongly added tabs with spaces
      gitweb: Use capturing parentheses only when you intend to capture
      gitweb: Simplify snapshot format detection logic in evaluate_path_info
      gitweb: Remove unused $hash_base parameter from normalize_link_target
      gitweb: Sanitize title attribute in format_subject_html

Jeff King (7):
      parseopt: add OPT_NEGBIT
      convert bare readlink to strbuf_readlink
      git-add: no need for -f when resolving a conflict in already tracked path
      Makefile: refactor regex compat support
      Makefile: use compat regex on Solaris
      log-tree: fix confusing comment
      Makefile: install 'git' in execdir

Jim Meyering (2):
      post-receive-email: hooks.showrev: show how to include both web link and patch
      avoid NULL dereference on failed malloc

Johan Herland (2):
      Rename submodule.<name>.rebase to submodule.<name>.update
      git-submodule: add support for --merge.

Johannes Schindelin (12):
      git-add: introduce --edit (to edit the diff vs. the index)
      t3702: fix reliance on SHELL_PATH being '/bin/sh'
      MinGW: the path separator to split GITPERLLIB is ';' on Win32
      MinGW: use POSIX signature of waitpid()
      MinGW: Add a simple getpass()
      MinGW: Fix compiler warning in merge-recursive
      MinGW: GCC >= 4 does not need SNPRINTF_SIZE_CORR anymore
      Quiet make: do not leave Windows behind
      Work around a regression in Windows 7, causing erase_in_line() to crash sometimes
      test-chmtime: work around Windows limitation
      MinGW: fix warning about implicit declaration of _getch()
      Fix warnings in nedmalloc when compiling with GCC 4.4.0

Johannes Sixt (10):
      gitk: Use --textconv to generate diff text
      Simplify some instances of run_command() by using run_command_v_opt().
      Simplify some 'fprintf(stderr); return -1;' by using 'return error()'
      Fix typo in nedmalloc warning fix
      compat/ has subdirectories: do not omit them in 'make clean'
      daemon: send stderr of service programs to the syslog
      upload-pack: squelch progress indicator if client cannot see it
      receive-pack: do not send error details to the client
      git-mv: fix directory separator treatment on Windows
      MinGW: truncate exit()'s argument to lowest 8 bits

Josh Micich (3):
      mktree --missing: updated usage message and man page
      mktree --batch: build more than one tree object
      mktree: validate entry type in input

Junio C Hamano (22):
      Start 1.6.4 development
      build-in git-mktree
      mktree: use parse-options
      builtin-mktree.c: use a helper function to handle one line of input
      mktree: do not barf on a submodule commit
      t1010: add mktree test
      mktree --missing: allow missing objects
      t3900: ISO-2022-JP has more than one popular variants
      write-tree --ignore-cache-tree
      Teach Solaris that _XOPEN_SOURCE=600 really menas XPG6
      OpenSolaris 200811 (SunOS 5.11) does not want OLD_ICONV
      cache-tree.c::cache_tree_find(): simplify internal API
      t4007: modernize the style
      Optimize "diff-index --cached" using cache-tree
      Avoid "diff-index --cached" optimization under --find-copies-harder
      Update draft release notes to 1.6.4
      completion: fix PS1 display during an AM on detached HEAD
      Documentation/git.txt: update links to release notes
      Makefile: introduce SANE_TOOL_PATH for prepending required elements to PATH
      Makefile: test-parse-options depends on parse-options.h
      Makefile: insert SANE_TOOL_PATH to PATH before /bin or /usr/bin
      die_errno(): double % in strerror() output just in case

Kjetil Barvik (1):
      symlinks.c: small style cleanup

Larry D'Anna (1):
      add --porcelain option to git-push

Linus Torvalds (3):
      Clean up and simplify rev_compare_tree()
      Fix various sparse warnings in the git source code
      git log: add '--merges' flag to match '--no-merges'

Marc Branchaud (3):
      git svn: Support multiple branch and tag paths in the svn repository.
      git svn: cleanup t9138-multiple-branches
      git svn: Doc update for multiple branch and tag paths

Marius Storm-Olsen (2):
      MinGW readdir reimplementation to support d_type
      Add custom memory allocator to MinGW and MacOS builds

Mark Lodato (3):
      git-svn: add --authors-prog option
      http.c: prompt for SSL client certificate password
      http.c: add http.sslCertPasswordProtected option

Markus Heidelberg (10):
      show-branch: color the commit status signs
      bash completion: show-branch color support
      diff: do not color --stat output like patch context
      gitk: Allow diff view without context lines
      add a test for git-send-email for non-threaded mails
      send-email: fix non-threaded mails
      doc/send-email: clarify the behavior of --in-reply-to with --no-thread
      add a test for git-send-email for threaded mails without chain-reply-to
      send-email: fix threaded mails without chain-reply-to
      send-email: fix a typo in a comment

Martin Renold (1):
      Remove filename from conflict markers

Michael J Gruber (9):
      Documentation: clarify / requirement in 'git check-ref-format'
      Test tracking of non-commit upstreams
      Fix behavior with non-commit upstream references
      Allow push and fetch urls to be different
      t5516: Check pushurl config setting
      technical/api-remote: Describe new struct remote member pushurl
      git-repack.txt: Clarify implications of -a for dumb protocols
      builtin-remote: Show push urls as well
      builtin-remote: Make "remote -v" display push urls

Michael S. Tsirkin (1):
      Add --reference option to git submodule.

Michael Witten (6):
      Docs: send-email: Put options back into alphabetical order
      Docs: send-email: Refer to CONFIGURATION section for sendemail.multiedit
      Docs: send-email: --smtp-server-port can take symbolic ports
      send-email: Handle "GIT:" rather than "GIT: " during --compose
      send-email: 'References:' should only reference what is sent
      send-email: Remove superfluous `my $editor = ...'

Michal Marek (1):
      apply: handle filenames with double slashes better

Michele Ballabio (1):
      gitk: Add another string to translation

Mike Hommey (7):
      Don't expect verify_pack() callers to set pack_size
      transport.c::get_refs_via_curl(): do not leak refs_url
      http.c: new functions for the http API
      transport.c::get_refs_via_curl(): use the new http API
      http.c::http_fetch_ref(): use the new http API
      http-push.c::remote_exists(): use the new http API
      http-push.c::fetch_symref(): use the new http API

Nguyễn Thái Ngọc Duy (3):
      doc/git-rebase.txt: remove mention of multiple strategies
      Terminate argv with NULL before calling setup_revisions()
      t/t3400-rebase.sh: add more tests to help migrating git-rebase.sh to C

Nick Edelen (1):
      diff-tree -r -t: include added/removed directories in the output

Nick Stokoe (3):
      git-cvsexportcommit can't commit files which have been removed from CVS
      Remove archaic use of regex capture \1 in favour of $1
      Avoid generating a warning if $fullname{$file} is undefined

Paolo Bonzini (1):
      Test cccmd in t9001-send-email.sh and fix some bugs

Pat Thoyts (2):
      gitk: Handle msysGit version during version comparisons
      git: browsing paths with spaces when using the start command

Paul Mackerras (1):
      gitk: Check git version before using --textconv flag

Peter Harris (1):
      MinGW: Scan for \r in addition to \n when reading shbang lines

Peter Hutterer (1):
      git-submodule: add support for --rebase.

Pierre Habouzit (1):
      parse-options: add parse_options_check to validate option specs.

Ralf Wildenhues (1):
      configure: test whether -lresolv is needed

René Scharfe (13):
      parseopt: add OPT_NEGBIT
      parseopt: add OPT_NUMBER_CALLBACK
      parseopt: add PARSE_OPT_NODASH
      grep: remove global variable builtin_grep
      grep: use parseopt
      grep: make callback functions static
      userdiff: add xdiff_clear_find_func()
      grep: move context hunk mark handling into show_line()
      grep: print context hunk marks between files
      grep: handle pre context lines on demand
      grep: add option -p/--show-function
      grep -p: support user defined regular expressions
      grep: simplify -p output

Robin Rosenberg (1):
      Disallow '\' in ref names

SZEDER Gábor (3):
      bash: remove always true if statement from __git_ps1()
      Documentation: mention 'git stash pop --index' option explicitly
      bash: add support for 'git stash pop --index' option

Santi Béjar (3):
      parse-remote: function to get the tracking branch to be merge
      parse-remote: support default reflist in get_remote_merge_branch
      parse-remote: remove unused functions

Sitaram Chamarty (1):
      allow -t abbreviation for --track in git branch

Steffen Prohaska (1):
      MinGW: Teach Makefile to detect msysgit and apply specific settings

Stephen Boyd (22):
      bash completion: complete variable names for "git config" with options
      format-patch: migrate to parse-options API
      parse-options: add PARSE_OPT_LITERAL_ARGHELP for complicated argh's
      show-branch: migrate to parse-options API
      parse-opts: prepare for OPT_FILENAME
      parse-opts: add OPT_FILENAME and transition builtins
      t5500: Modernize test style
      t9120: don't expect failure with SVN_HTTPD_PORT unset
      config.txt: document add.ignore-errors
      git-show-branch.txt: document --date-order option
      parse-options: make OPT_INTEGER's argh explicit
      parse-options: simplify usage argh handling
      show-branch: don't use LASTARG_DEFAULT with OPTARG
      t4150: test applying with a newline in subject
      am: suppress apply errors when using 3-way
      git-sh-setup: introduce say() for quiet options
      submodule, repack: migrate to git-sh-setup's say()
      am, rebase: teach quiet option
      stash: teach quiet option
      show-ref: migrate to parse-options
      completion: add missing config variables
      completion: __git_config_get_set_variables() handle values with spaces

Tay Ray Chuan (15):
      t5540-http-push: test fetching of loose objects
      t5540-http-push: test fetching of packed objects
      http-push: send out fetch requests on queue
      http-push: fix missing "#ifdef USE_CURL_MULTI" around "is_running_queue"
      t5550-http-fetch: test fetching of packed objects
      http-push, http-walker: style fixes
      http-walker: verify remote packs
      http*: copy string returned by sha1_to_hex
      http-push: do not SEGV after fetching a bad pack idx file
      http*: move common variables and macros to http.[ch]
      http: create function end_url_with_slash
      http*: add http_get_info_packs
      http: use new http API in fetch_index()
      http*: add helper methods for fetching packs
      http*: add helper methods for fetching objects (loose)

Thomas Rast (5):
      Documentation: teach stash/pop workflow instead of stash/apply
      git-svn: let 'dcommit $rev' work on $rev instead of HEAD
      Introduce die_errno() that appends strerror(errno) to die()
      Convert existing die(..., strerror(errno)) to die_errno()
      Use die_errno() instead of die() when checking syscalls

Todd Zullinger (1):
      completion: Add --full-diff to log options

Trent Piepho (1):
      send-email: Add config option for sender address

Ulrich Dangel (1):
      git-svn: Canonicalize svn urls to prevent libsvn assertion

Uwe Kleine-König (2):
      more tests for git rev-parse --parse-opt
      parse-opt: make PARSE_OPT_STOP_AT_NON_OPTION available to git rev-parse

Yann Dirson (4):
      git-svn.txt: stop using dash-form of commands.
      git-svn.txt: make formatting more consistent.
      git-svn.txt: fix fetch flags incorrectly documented as init flags.
      git-svn.txt: fix description of fetch flags accepted by clone.


Version v1.6.3.4; changes since v1.6.3.3:
-----------------------------------------

Brandon Casey (2):
      refs.c: release file descriptor on error return
      sha1_name.c: avoid unnecessary strbuf_release

Chris Frey (1):
      git-remote: fix missing .uploadpack usage for show command

Clemens Buchacher (1):
      fetch: do not create ref from empty name

Giuseppe Bilotta (1):
      gitweb/README: fix AliasMatch in example

Johannes Sixt (2):
      t3700-add: add a POSIXPERM prerequisite to a new test
      Makefile: git.o depends on library headers

Junio C Hamano (9):
      request-pull: really disable pager
      checkout -f: deal with a D/F conflict entry correctly
      combine-diff.c: fix performance problem when folding common deleted lines
      diff --cc: a lost line at the beginning of the file is shown incorrectly
      do_one_ref(): null_sha1 check is not about broken ref
      SunOS grep does not understand -C<n> nor -e
      Fix severe breakage in "git-apply --whitespace=fix"
      t8005: Nobody writes Russian in shift_jis
      GIT 1.6.3.4

Linus Torvalds (3):
      git branch: fix performance problem
      git branch: avoid unnecessary object lookups
      git branch: clean up detached branch handling

Matthias Andree (1):
      Fix export_marks() error handling.

Michal Marek (1):
      request-pull: really really disable pager

Miklos Vajna (1):
      git-submodule documentation: fix foreach example

René Scharfe (1):
      attr: plug minor memory leak

Roel Kluin (1):
      fread does not return negative on error

SZEDER Gábor (1):
      Trailing whitespace and no newline fix

Sitaram Chamarty (1):
      Documentation: update description of shell aliases

Stephen Boyd (2):
      add: allow configurations to be overriden by command line
      config.txt: document add.ignore-errors

Thadeu Lima de Souza Cascardo (1):
      Makes some cleanup/review in gittutorial

Thomas Rast (2):
      Test git archive --remote
      Test grep --and/--or/--not

Tom Grennan (1):
      request-pull: allow ls-remote to notice remote.$nickname.uploadpack


Version v1.6.3.3; changes since v1.6.3.2:
-----------------------------------------

Anders Kaseorg (1):
      for-each-ref: Do not lookup objects when they will not be used

Clemens Buchacher (1):
      refuse to merge during a merge

Jim Meyering (1):
      use xstrdup, not strdup in ll-merge.c

Johannes Schindelin (1):
      import-tars: support symlinks

Johannes Sixt (2):
      fetch-pack: close output channel after sideband demultiplexer terminates
      diff.c: plug a memory leak in an error path

Junio C Hamano (3):
      t3505: fix abuse of test_expect_code
      attribute: whitespace set to true detects all errors known to git
      GIT 1.6.3.3

Linus Torvalds (1):
      Fix big left-shifts of unsigned char

Marco Nelissen (1):
      fix handling of iconv configuration options

Mark Lodato (1):
      http.c: fix compiling with libcurl 7.9.2

Michael J Gruber (1):
      builtin-remote: Make "remote show" display all urls

Miklos Vajna (1):
      git-svn documentation: fix typo in 'rebase vs. pull/merge' section

Nanako Shiraishi (1):
      .gitattributes: CR at the end of the line is an error

Paolo Bonzini (2):
      Documentation: git-send-mail can take rev-list arg to drive format-patch
      avoid exponential regex match for java and objc function names

René Scharfe (1):
      upload-archive: fix infinite loop on Cygwin

Shawn O. Pearce (1):
      daemon: Strictly parse the "extra arg" part of the command

Stephen Boyd (3):
      git-rerere.txt: grammatical fixups and cleanups
      pull, rebase: simplify to use die()
      git-show-ref.txt: remove word and make consistent

Tay Ray Chuan (1):
      http*: cleanup slot->local after fclose

Thomas Rast (1):
      Documentation: refer to gitworkflows(7) from tutorial and git(1)

Uwe Kleine-König (1):
      rebase--interactive: remote stray closing parenthesis


Version v1.6.3.2; changes since v1.6.3.1:
-----------------------------------------

Alex Riesen (7):
      Introduce an unlink(2) wrapper which gives warning if unlink failed
      replace direct calls to unlink(2) with unlink_or_warn
      print unlink(2) errno in copy_or_link_directory
      Clarify kind of conflict in merge-one-file helper
      ls-tree manpage: use "unless" instead of "when ... is not"
      ls-tree manpage: output of ls-tree is compatible with update-index
      http-push.c::remove_locks(): fix use after free

Charles Bailey (2):
      t6023: merge-file fails to output anything for a degenerate merge
      Change xdl_merge to generate output even for null merges

Clemens Buchacher (1):
      fix segfault showing an empty remote

Dan McGee (1):
      Fix type-punning issues

Daniel Cordero (1):
      builtin-checkout: Don't tell user that HEAD has moved before it has

Dave Olszewski (1):
      merge-recursive: never leave index unmerged while recursing

Giuseppe Bilotta (1):
      completion: use git rev-parse to detect bare repos

Jeff King (6):
      fix GIT_TRACE segfault with shell-quoted aliases
      add: don't complain when adding empty project root
      for-each-ref: fix segfault in copy_email
      lock_ref: inform callers of unavailable ref
      fetch: report ref storage DF errors more accurately
      fix cat-file usage message and documentation

Jim Meyering (2):
      format-patch let -k override a config-specified format.numbered
      pre-commit.sample: don't print incidental SHA1

Johannes Schindelin (2):
      Add NO_CROSS_DIRECTORY_HARDLINKS support to the Makefile
      Cope better with a _lot_ of packs

Johannes Sixt (1):
      t3701: ensure correctly set up repository after skipped tests

Junio C Hamano (8):
      Revert "git-add--interactive: remove hunk coalescing"
      completion: fix PS1 display during a merge on detached HEAD
      completion: simplify "current branch" in __git_ps1()
      completion: enhance "current branch" display
      Prepare for 1.6.3.2
      Update draft release notes for 1.6.3.2
      blame: correctly handle a path that used to be a directory
      GIT 1.6.3.2

Linus Torvalds (3):
      Avoid unnecessary 'lstat()' calls in 'get_stat_data()'
      Teach 'git checkout' to preload the index contents
      dir.c: clean up handling of 'path' parameter in read_directory_recursive()

Matt Graham (1):
      Splitting a hunk that adds a line at the top fails in "add -p"

Michael J Gruber (1):
      merge-options.txt: Clarify merge --squash

Nanako Shiraishi (1):
      test: checkout shouldn't say that HEAD has moved if it didn't

Nicolas Pitre (1):
      allow OFS_DELTA objects during a push

René Scharfe (4):
      grep: fix word-regexp colouring
      grep: fix word-regexp at the beginning of lines
      grep: fix colouring of matches with zero length
      grep: fix empty word-regexp matches

Stephen Boyd (6):
      api-parse-options.txt: use 'func' instead of 'funct'
      tests: Add tests for missing format-patch long options
      completion: add missing options to show-branch and show
      show-branch: Fix die message in parse_reflog_param()
      commit: -F overrides -t
      apply, fmt-merge-msg: use relative filenames

Thomas Rast (2):
      Documentation: teach stash/pop workflow instead of stash/apply
      add -i: do not dump patch during application

Tony Kemp (1):
      Turn on USE_ST_TIMESPEC for OpenBSD


Version v1.6.3.1; changes since v1.6.3:
---------------------------------------

Alex Riesen (1):
      Clarify kind of conflict in merge-one-file helper

Alexander Potashev (1):
      Documentation: cloning to empty directory is allowed

Felipe Contreras (1):
      git config: clarify --add and --get-color

Junio C Hamano (4):
      Start 1.6.3.1 maintenance series.
      archive-tar.c: squelch a type mismatch warning
      Revert "checkout branch: prime cache-tree fully"
      GIT 1.6.3.1


Version v1.6.3; changes since v1.6.3-rc4:
-----------------------------------------

Alex Riesen (1):
      improve error message in config.c

Allan Caffee (1):
      dir.c: Fix two minor grammatical errors in comments

Bernd Ahlers (1):
      Work around BSD whose typeof(tv.tv_sec) != time_t

Brandon Casey (7):
      t4018-diff-funcname: add cpp xfuncname pattern to syntax test
      t8005: use egrep when extended regular expressions are required
      t4118: add missing '&&'
      t4118: avoid sed invocation on file without terminating newline
      t/annotate-tests.sh: avoid passing a non-newline terminated file to sed
      t4200: remove two unnecessary lines
      t4200: convert sed expression which operates on non-text file to perl

Junio C Hamano (4):
      GIT 1.6.1.4
      GIT 1.6.2.5
      git-clean doc: the command only affects paths under $(cwd)
      GIT 1.6.3

Nguyễn Thái Ngọc Duy (1):
      t4029: use sh instead of bash

Nicolas Pitre (1):
      honor repack.usedeltabaseoffset when fetching packs

Robin H. Johnson (1):
      git-svn: fix a sloppy Getopt::Long usage

Stephen Boyd (8):
      completion: add missing configuration variables to _git_config()
      completion: add {gui,diff,merge}tool, man, and pager config variables
      completion: complete values for help.format
      completion: complete values for log.date
      completion: complete values for send-email
      git-am.txt: add an 'a', say what 'it' is, simplify a sentence
      git-am.txt: Use date or value instead of time or timestamp
      git-am.txt: reword extra headers in message body


Version v1.6.3-rc4; changes since v1.6.3-rc3:
---------------------------------------------

Alex Riesen (3):
      git-gui: Update Russian translation
      improve error message in config.c
      gitk: Add Russian translation

Alexander Gavrilov (3):
      git-gui: Fix post-commit status with subject in non-locale encoding
      git-gui: Avoid an infinite rescan loop in handle_empty_diff.
      git-gui: Support more git version notations.

Allan Caffee (2):
      builtin-merge: fix a typo in an error message
      Documentation: fix a grammatical error in api-builtin.txt

Benjamin Kramer (1):
      daemon.c: fix segfault on OS X

Christian Stimming (1):
      gitk: Mark forgotten string for translation

Daniel A. Steffen (2):
      gitk: Fixes for Mac OS X TkAqua
      git-gui: Fixes for Mac OS X TkAqua

Eric Blake (2):
      Makefile: installing git in cygwin 1.7.0
      doc: consistently use ASCIIDOC_EXTRA

Felipe Contreras (2):
      git config: error when editing a repo config and not being in one
      Fix a bunch of pointer declarations (codestyle)

Ferry Huberts (1):
      git-gui: Ensure consistent usage of mergetool.keepBackup

Giuseppe Bilotta (1):
      gitk: Provide a window icon if possible

Jeff King (1):
      Makefile: fix NO_PERL bug with gitweb

Jens Lehmann (4):
      git-gui: Fix merge conflict display error when filename contains spaces
      git-gui: When calling post-commit hook wrong variable was cleared.
      git-gui: run post-checkout hook on checkout
      git-gui: run post-checkout hook after clone

Joerg Bornemann (1):
      git-gui: fix use of undeclared variable diff_empty_count

Johannes Schindelin (2):
      t5701: do not get stuck in empty-push/
      Rename core.unreliableHardlinks to core.createObject

Johannes Sixt (1):
      prune-packed: advanced progress even for non-existing fan-out directories

Junio C Hamano (3):
      diff -c -p: do not die on submodules
      merge-recursive: do not die on a conflicting submodule
      GIT 1.6.3-rc4

Linus Torvalds (1):
      grep: fix segfault when "git grep '('" is given

Mark Drago (1):
      Add semicolon to curly brace group in main Makefile

Markus Heidelberg (5):
      git-gui: don't hide the Browse button when resizing the repo chooser
      git-gui: fix deleting from the context menu with empty selection
      git-gui: use `git --html-path` to get the location of installed HTML docs
      git-gui (Win): make "Explore Working Copy" more robust
      git-gui (Win): make starting via "Git GUI Here" on .git/ possible

Michele Ballabio (2):
      gitk: Mark some more strings for translation
      gitk: Map KP_Divide to focus the search box

Pat Thoyts (4):
      gitk: Handle blobs containing a DOS end-of-file marker
      gitk: Remember and restore the window state with the geometry
      gitk: Handle external diff tool with spaces in the path
      gitk: Avoid crash if closed while reading references

Patrick Welche (1):
      NetBSD compilation fix

Paul Mackerras (4):
      gitk: Add a way to mark a commit, plus a "find descendant" command
      gitk: Add a command to compare two strings of commits
      gitk: Make .gitk a hidden file under windows
      gitk: Fix compare-commits function when we have local changes

Phil Lawrence (1):
      Append ampersand to "Target" of lnk files created by do_cygwin_shortcut

René Scharfe (1):
      ctype.c: fix typo in comment

Sam Hocevar (2):
      git-gui: various French translation fixes
      git-gui: minor spelling fix and string factorisation.

Sam Vilain (1):
      SubmittingPatches: itemize and reflect upon well written changes

Stephen Boyd (1):
      gitk: Provide a 32x32 window icon based on the git logo

Uwe Kleine-König (1):
      parseopt: fix documentation for --keep-dashdash


Version v1.6.3-rc3; changes since v1.6.3-rc2:
---------------------------------------------

Benjamin Kramer (1):
      connect: replace inet_ntop with getnameinfo

Brandon Casey (2):
      t9001: use older Getopt::Long boolean prefix '--no' rather than '--no-'
      t7700-repack: repack -a now works properly, expect success from test

Johannes Schindelin (1):
      Add an option not to use link(src, dest) && unlink(src) when that is unreliable

Linus Torvalds (1):
      t4202: fix typo

Nicolas Pitre (1):
      progress bar: round to the nearest instead of truncating down

Sitaram Chamarty (1):
      Remove obsolete bug warning in man git-update-server-info

Wesley J. Landaker (2):
      Documentation: git-clean: fix minor grammatical errors
      Documentation: git-clean: make description more readable


Version v1.6.3-rc2; changes since v1.6.3-rc1:
---------------------------------------------

Alex Riesen (2):
      Wait for git diff to finish in git difftool
      Explain seemingly pointless use of system in difftool

Allan Caffee (3):
      t4202-log: extend test coverage of graphing
      graph API: fix extra space during pre_commit_line state
      graph API: fix a bug in the rendering of octopus merges

Ben Jackson (1):
      Work around ash "alternate value" expansion bug

Bill Pemberton (1):
      Add parsing of elm aliases to git-send-email

Dan Loewenherz (1):
      Convert to use quiet option when available

Erik Faye-Lund (4):
      test-suite: adding a test for fast-export with tag variants
      builtin-fast-export.c: turn error into warning
      builtin-fast-export.c: fix crash on tagged trees
      builtin-fast-export.c: handle nested tags

Frank Lichtenheld (1):
      gitcvs-migration: Link to git-cvsimport documentation

Holger Weiß (1):
      gitweb: Fix snapshots requested via PATH_INFO

Jeff King (2):
      add-interactive: refactor mode hunk handling
      t7800: respect NO_PERL

Johan Herland (1):
      Update docs on behaviour of 'core.sharedRepository' and 'git init --shared'

Johannes Schindelin (1):
      Fix off-by-one in read_tree_recursive

Johannes Sixt (4):
      Windows: Work around intermittent failures in mingw_rename
      Windows: Skip fstat/lstat optimization in write_entry()
      builtin-help: silently tolerate unknown keys
      remote.c: do not trigger remote.<name>.<var> codepath for two-level names

Junio C Hamano (9):
      Speed up reflog pruning of unreachable commits
      GIT 1.6.2.4
      read-tree A B: do not corrupt cache-tree
      Move prime_cache_tree() to cache-tree.c
      read-tree -m A B: prime cache-tree from the switched-to tree
      checkout branch: prime cache-tree fully
      Revert "stat_tracking_info(): only count real commits"
      Makefile: ignore perl/ subdirectory under NO_PERL
      GIT 1.6.3-rc2

Linus Torvalds (1):
      Clean up reflog unreachability pruning decision

Markus Heidelberg (1):
      grep: don't support "grep.color"-like config options

Matthieu Moy (3):
      git add -p: new "quit" command at the prompt.
      Update git-add.txt according to the new possibilities of 'git add -p'.
      clone: add test for push on an empty clone.

Michael J Gruber (2):
      test-lib.sh: Help test_create_repo() find the templates dir
      Fix more typos/spelling in comments

Michał Kiedrowicz (3):
      tests: test applying criss-cross rename patch
      builtin-apply: keep information about files to be deleted
      tests: make test-apply-criss-cross-rename more robust

Mike Ralphson (3):
      builtin-remote: fix typo in option description
      Documentation: fix typos / spelling mistakes
      Fix typos / spelling in comments

Nguyễn Thái Ngọc Duy (1):
      Makefile: remove {fetch,send}-pack from PROGRAMS as they are builtins

Stephen Boyd (8):
      test-genrandom: Add newline to usage string
      config.txt: add missing format.{subjectprefix,cc,attach} variables
      Documentation: use lowercase for shallow and deep threading
      git-show-branch.txt: cleanup example description
      git-format-patch.txt: general rewordings and cleanups
      config.txt: add missing 'the's and make words plural
      config.txt: clarify sentences in the configuration and syntax sections
      config.txt: Make configuration paragraph more consistent

Wesley J. Landaker (2):
      Documentation: git-svn: fix spurious bolding that mangles the output
      Documentation: git-svn: fix a grammatical error without awkwardness

Wincent Colaiuta (1):
      git add -p: add missing "q" to patch prompt


Version v1.6.3-rc1; changes since v1.6.3-rc0:
---------------------------------------------

Allan Caffee (1):
      graph API: Added logic for colored edges

Bert Wesarg (3):
      shorten_unambiguous_ref(): add strict mode
      for-each-ref: utilize core.warnAmbiguousRefs for :short-format
      rev-parse: --abbrev-ref option to shorten ref name

David Aguilar (11):
      difftool: remove merge options for opendiff, tkdiff, kdiff3 and xxdiff
      difftool: remove the backup file feature
      difftool: use perl built-ins when testing for msys
      difftool: add a -y shortcut for --no-prompt
      difftool: move 'git-difftool' out of contrib
      difftool: add various git-difftool tests
      difftool: add support for a difftool.prompt config variable
      bash completion: add git-difftool
      mergetool: use $( ... ) instead of `backticks`
      difftool/mergetool: refactor commands to use git-mergetool--lib
      mergetool--lib: simplify API usage by removing more global variables

Erik Broes (1):
      git-shell: Add 'git-upload-archive' to allowed commands.

Ferry Huberts (1):
      Fix misspelled mergetool.keepBackup

Frank Lichtenheld (1):
      init: Do not segfault on big GIT_TEMPLATE_DIR environment variable

Jeff King (7):
      doc: clarify --no-track option
      doc: refer to tracking configuration as "upstream"
      doc/checkout: refer to git-branch(1) as appropriate
      doc/checkout: split checkout and branch creation in synopsis
      docs/checkout: clarify what "non-branch" means
      add-interactive: refactor mode hunk handling
      doc/gitattributes: clarify location of config text

Johannes Sixt (1):
      t1301-shared-repo: fix forced modes test

Junio C Hamano (4):
      gitignore git-bisect--helper
      unpack-trees: do not muck with attributes when we are not checking out
      Describe fixes since 1.6.2.3
      Update draft release notes to 1.6.3

Linus Torvalds (3):
      Allow users to un-configure rename detection
      process_{tree,blob}: show objects without buffering
      show_object(): push path_name() call further down

Markus Heidelberg (5):
      doc/merge-config: list ecmerge as a built-in merge tool
      git-mergetool/difftool: make (g)vimdiff workable under Windows
      git-mergetool: add new merge tool TortoiseMerge
      doc/git-daemon: add missing arguments to options
      doc/git-daemon: add missing arguments to max-connections option

Matthieu Moy (2):
      git add -p: new "quit" command at the prompt.
      Update git-add.txt according to the new possibilities of 'git add -p'.

Michael J Gruber (1):
      remote.c: use shorten_unambiguous_ref

Michał Kiedrowicz (3):
      tests: test applying criss-cross rename patch
      builtin-apply: keep information about files to be deleted
      Documentation: boolean value may be given by on/off

Nanako Shiraishi (1):
      git-am: teach git-am to apply a patch to an unborn branch

Nguyễn Thái Ngọc Duy (3):
      get_local_heads(): do not return random pointer if there is no head
      attr: add GIT_ATTR_INDEX "direction"
      archive: do not read .gitattributes in working directory

Paul Bolle (1):
      imap-send: use correct configuration variable in documentation

Pierre Habouzit (1):
      hook/update: example of how to prevent branch creation

René Scharfe (2):
      archive tests: do not use .gitattributes in working directory
      archive test: attributes

Sebastian Pipping (1):
      difftool/mergetool: add diffuse as merge and diff tool

Thomas Jarosch (1):
      Fix buffer overflow in config parser

Ulrich Windl (1):
      git-apply: fix option description


Version v1.6.3-rc0; changes since v1.6.2.5:
-------------------------------------------

Alex Riesen (4):
      disable post-checkout test on Cygwin
      Produce a nicer output in case of sha1_object_info failures in ls-tree -l
      Microoptimize strbuf_cmp
      Improve error message about fetch into current branch

Ali Gholami Rudi (2):
      builtin-clone.c: make junk_pid static
      builtin-clone.c: no need to strdup for setenv

Amos King (2):
      Do not name "repo" struct "remote" in push_http.c
      http-push.c: use a faux remote to pass to http_init

Arjen Laarhoven (2):
      Clean up use of ANSI color sequences
      builtin-branch.c: Rename branch category color names

Arto Jonsson (1):
      bash completion: add options for 'git fsck'

Ben Jackson (2):
      git-svn: Add per-svn-remote ignore-paths config
      git-svn: Save init/clone --ignore-paths in config

Ben Walton (8):
      configure: ensure settings from user are also usable in the script
      configure: reorganize flow of argument checks
      configure: add macros to stash FLAG variables
      configure: wrap some library tests with GIT_STASH_FLAGS
      configure: asciidoc version test cleanup
      configure: make iconv tests aware of user arguments
      configure: rework pthread handling to allow for user defined flags
      documentation: Makefile accounts for SHELL_PATH setting

Benjamin Kramer (4):
      Remove unused function scope local variables
      Move local variables to narrower scopes
      Remove unused assignments
      Fix various dead stores found by the clang static analyzer

Björn Steinbrink (1):
      Mailmap: Allow empty email addresses to be mapped

Boris Byk (1):
      git-svn: speed up blame command

Brandon Casey (1):
      builtin-send-pack.c: avoid empty structure initialization

Brian Gernhardt (2):
      Create USE_ST_TIMESPEC and turn it on for Darwin
      Makefile: Set compiler switch for USE_NSEC

Carlos Manuel Duclos Vergara (1):
      git-archive: add --output=<file> to send output to a file

Carlos Rica (1):
      config: test for --replace-all with one argument and fix documentation.

Chris Johnsen (13):
      git-push.txt: describe how to default to pushing only current branch
      Documentation: remove extra quoting/emphasis around literal texts
      Documentation/Makefile: make most operations "quiet"
      Documentation/Makefile: break up texi pipeline
      Documentation: move callouts.xsl to manpage-{base,normal}.xsl
      Documentation: use parametrized manpage-base.xsl with manpage-{1.72,normal}.xsl
      Documentation: rename docbook-xsl-172 attribute to git-asciidoc-no-roff
      Documentation: move quieting params into manpage-base.xsl
      Documentation: move "spurious .sp" code into manpage-base.xsl
      Documentation: asciidoc.conf: always use <literallayout> for [blocktext]
      Documentation: asciidoc.conf: fix verse block with block titles
      Documentation: option to render literal text as bold for manpages
      Documentation: use "spurious .sp" XSLT if DOCBOOK_SUPPRESS_SP is set

Christian Couder (24):
      rev-list: estimate number of bisection step left
      log-tree: fix patch filename computation in "git format-patch"
      quote: implement "sq_dequote_many" to unwrap many args in one string
      quote: add "sq_dequote_to_argv" to put unwrapped args in an argv array
      refs: add "for_each_ref_in" function to refactor "for_each_*_ref" functions
      rev-list: make "bisect_list" variable local to "cmd_rev_list"
      rev-list: move bisect related code into its own file
      rev-list: move code to show bisect vars into its own function
      rev-list: make "show_bisect_vars" non static
      rev-list: pass "revs" to "show_bisect_vars"
      sha1-lookup: add new "sha1_pos" function to efficiently lookup sha1
      patch-ids: use the new generic "sha1_pos" function to lookup sha1
      bisect: improve error message when branch checkout fails
      rev-list: call new "filter_skip" function
      bisect: use the new generic "sha1_pos" function to lookup sha1
      bisect--helper: implement "git bisect--helper"
      bisect: implement "read_bisect_paths" to read paths in "$GIT_DIR/BISECT_NAMES"
      bisect: use "bisect--helper" and remove "filter_skipped" function
      t6030: test bisecting with paths
      rev-list: pass "int flags" as last argument of "show_bisect_vars"
      bisect--helper: string output variables together with "&&"
      list-objects: add "void *data" parameter to show functions
      rev-list: remove last static vars used in "show_commit"
      rev-list: add "int bisect_show_flags" in "struct rev_list_info"

Dan McGee (1):
      Update delta compression message to be less misleading

Daniel Barkalow (8):
      Make clone parse the default refspec with the normal code
      Use a single function to match names against patterns
      Use the matching function to generate the match results
      Keep '*' in pattern refspecs
      Support '*' in the middle of a refspec
      Use a common function to get the pretty name of refs
      Move push matching and reporting logic into transport.c
      Include log_config module in apache.conf

David Aguilar (1):
      contrib/difftool: use a separate config namespace for difftool commands

Deskin Miller (1):
      add -i: revisit hunk on editor failure

Elijah Newren (3):
      git-filter-branch: avoid collisions with variables in eval'ed commands
      Correct missing SP characters in grammar comment at top of fast-import.c
      fast-export: Avoid dropping files from commits

Emil Sit (1):
      config.txt: Describe special 'none' handling in core.gitProxy.

Eric Wong (1):
      git-svn: fix ls-tree usage with dash-prefixed paths

Erik Faye-Lund (5):
      connect.c: remove a few globals by using git_config callback data
      test-suite: adding a test for fast-export with tag variants
      builtin-fast-export.c: turn error into warning
      builtin-fast-export.c: fix crash on tagged trees
      builtin-fast-export.c: handle nested tags

Eugene Letuchy (1):
      Make git blame's date output format configurable, like git log

Felipe Contreras (14):
      config: Add new option to open an editor.
      git config: codestyle cleanups
      git_config(): not having a per-repo config file is not an error
      git config: trivial rename in preparation for parseopt
      git config: reorganize get_color*
      git config: reorganize to use parseopt
      git config: don't allow multiple config file locations
      git config: don't allow multiple variable types
      git config: don't allow extra arguments for -e or -l.
      git config: don't allow --get-color* and variable type
      Add tests for git log --pretty, --format and --oneline.
      user-manual: remove some git-foo usage
      docbook: change css style
      user-manual: the name of the hash function is SHA-1, not sha1

Finn Arne Gangstad (7):
      New config push.default to decide default behavior for push
      Display warning for default git push with no push.default config
      builtin-remote.c: Split out prune_remote as a separate function.
      git remote update: New option --prune
      git remote update: Report error for non-existing groups
      remote: New function remote_is_configured()
      git remote update: Fallback to remote if group does not exist

Giuseppe Bilotta (1):
      import-tars: separate author from committer

Heiko Voigt (3):
      Add warning about known issues to documentation of cvsimport
      Cleanup warning about known issues in cvsimport documentation
      Add configuration variable for sign-off to format-patch

Janos Laube (1):
      MinGW: implement mmap

Jason Merrill (1):
      git-svn: add fetch --parent option

Jay Soffian (30):
      builtin-branch: improve output when displaying remote branches
      move duplicated get_local_heads() to remote.c
      move duplicated ref_newer() to remote.c
      move locate_head() to remote.c
      remote: simplify guess_remote_head()
      remote: make copy_ref() perform a deep copy
      remote: let guess_remote_head() optionally return all matches
      remote: make match_refs() copy src ref before assigning to peer_ref
      remote: make match_refs() not short-circuit
      string-list: new for_each_string_list() function
      builtin-remote: refactor duplicated cleanup code
      builtin-remote: remove unused code in get_ref_states
      builtin-remote: rename variables and eliminate redundant function call
      builtin-remote: make get_remote_ref_states() always populate states.tracked
      builtin-remote: fix two inconsistencies in the output of "show <remote>"
      builtin-remote: teach show to display remote HEAD
      builtin-remote: add set-head subcommand
      builtin-remote: new show output style
      builtin-remote: new show output style for push refspecs
      send-email: add --confirm option and configuration setting
      bash completion: fix completion issues with fetch, pull, and push
      bash completion: refactor --strategy completion
      bash completion: teach fetch, pull, and push to complete their options
      send-email: refactor and ensure prompting doesn't loop forever
      send-email: add tests for refactored prompting
      send-email: don't attempt to prompt if tty is closed
      send-email: ask_default should apply to all emails, not just the first
      send-email: correct two tests which were going interactive
      send-email: ensure quoted addresses are rfc2047 encoded
      send-email: fix nasty bug in ask() function

Jeff King (26):
      valgrind: ignore ldso and more libz errors
      branch: clean up repeated strlen
      add basic branch display tests
      test scripts: refactor start_httpd helper
      add basic http clone/fetch tests
      refactor find_ref_by_name() to accept const list
      remote: make guess_remote_head() use exact HEAD lookup if it is available
      clone: run post-checkout hook when checking out
      improve missing repository error message
      config: set help text for --bool-or-int
      t3000: use test_cmp instead of diff
      ls-files: fix broken --no-empty-directory
      ls-files: require worktree when --deleted is given
      make oneline reflog dates more consistent with multiline format
      remote: improve sorting of "configure for git push" list
      Makefile: turn on USE_ST_TIMESPEC for FreeBSD
      t0060: fix whitespace in "wc -c" invocation
      tests: remove exit after test_done call
      for-each-ref: refactor get_short_ref function
      for-each-ref: refactor refname handling
      for-each-ref: add "upstream" format field
      make get_short_ref a public function
      branch: show upstream branch when double verbose
      Makefile: allow building without perl
      tests: skip perl tests if NO_PERL is defined
      add tests for remote groups

Jens Lehmann (1):
      githooks documentation: post-checkout hook is also called after clone

Jeremy White (2):
      Enable setting attach as the default in .gitconfig for git-format-patch.
      imap.preformattedHTML to tell Thunderbird to send non-flowed text

Johannes Schindelin (23):
      Add valgrind support in test scripts
      Valgrind support: check for more than just programming errors
      test-lib.sh: optionally output to test-results/$TEST.out, too
      t/Makefile: provide a 'valgrind' target
      Add a script to coalesce the valgrind outputs
      Tests: let --valgrind imply --verbose and --tee
      test-lib: avoid assuming that templates/ are in the GIT_EXEC_PATH
      valgrind: do not require valgrind 3.4.0 or newer
      Avoid segfault with 'git branch' when the HEAD is detached
      Turn the flags in struct dir_struct into a single variable
      git config: trivial cleanup for editor action
      rebase -i: avoid 'git reset' when possible
      MinGW: 64-bit file offsets
      Brown paper bag fix for MinGW 64-bit stat
      Add an (optional, since expensive) test for >2gb clones
      MinGW: fix diff --no-index /dev/null ...
      winansi: support ESC [ K (erase in line)
      test: do not LoadModule log_config_module unconditionally
      test-lib: write test results to test-results/<basename>-<pid>
      gc --aggressive: make it really aggressive
      t7300: fix clean up on Windows
      Guard a few Makefile variables against user environments
      git-svn: always initialize with core.autocrlf=false

Johannes Sixt (30):
      recv_sideband: Bands #2 and #3 always go to stderr
      test-suite: Make test script numbers unique
      t9400, t9401: Do not force hard-linked clone
      test suite: Use 'say' to say something instead of 'test_expect_success'
      Call 'say' outside test_expect_success
      test-lib: Replace uses of $(expr ...) by POSIX shell features.
      test-lib: Simplify test counting.
      test-lib: Introduce test_chmod and use it instead of update-index --chmod
      t2200, t7004: Avoid glob pattern that also matches files
      t5300, t5302, t5303: Do not use /dev/zero
      t5602: Work around path mangling on MSYS
      test-lib: Work around incompatible sort and find on Windows
      test-lib: Work around missing sum on Windows
      Tests on Windows: $(pwd) must return Windows-style paths
      t0050: Check whether git init detected symbolic link support correctly
      test-lib: Infrastructure to test and check for prerequisites
      t3600: Use test prerequisite tags
      Skip tests that fail if the executable bit is not handled by the filesystem
      t5302: Use prerequisite tags to skip 64-bit offset tests
      t9100, t9129: Use prerequisite tags for UTF-8 tests
      Use prerequisite tags to skip tests that depend on symbolic links
      t0060: Fix tests on Windows
      Skip tests that require a filesystem that obeys POSIX permissions
      t3700: Skip a test with backslashes in pathspec
      Use prerequisites to skip tests that need unzip
      t7004: Use prerequisite tags to skip tests that need gpg
      t5503: GIT_DEBUG_SEND_PACK is not supported on MinGW
      MinGW: Quote arguments for subprocesses that contain a single-quote
      t7005-editor: Use $SHELL_PATH in the editor scripts
      t7502-commit: Skip SIGTERM test on Windows

John Tapsell (4):
      Modify description file to say what this file is
      Google has renamed the imap folder
      Improve error message for git-filter-branch
      Documentation - More examples for git bisect

Junio C Hamano (29):
      git-blame: refactor code to emit "porcelain format" output
      blame: show "previous" information in --porcelain/--incremental format
      Make git-clone respect branch.autosetuprebase
      Draft release notes: Carry forward the warning for behaviour changes
      Update draft release notes to 1.6.3
      builtin-remote.c: no "commented out" code, please
      Not all systems use st_[cm]tim field for ns resolution file timestamp
      grep: cast printf %.*s "precision" argument explicitly to int
      http.c: style cleanups
      Improve "git branch --tracking" output
      http_init(): Fix config file parsing
      http authentication via prompts
      Update release notes to 1.6.3
      http.c: CURLOPT_NETRC_OPTIONAL is not available in ancient versions of cURL
      Read attributes from the index that is being checked out
      Update draft release notes to 1.6.3
      http tests: Darwin is not that special
      Rename interpret/substitute nth_last_branch functions
      strbuf_branchname(): a wrapper for branch name shorthands
      check-ref-format --branch: give Porcelain a way to grok branch shorthand
      Fix branch -m @{-1} newname
      strbuf_check_branch_ref(): a helper to check a refname for a branch
      check_ref_format(): tighten refname rules
      Update draft release notes to 1.6.3
      Speed up reflog pruning of unreachable commits
      Update draft release notes to 1.6.3
      sha1-lookup: fix up the assertion message
      Update draft release notes to 1.6.3
      GIT 1.6.3-rc0

Keith Cascio (2):
      Use DIFF_XDL_SET/DIFF_OPT_SET instead of raw bit-masking
      Fix neglect of diff_setup()/diff_setup_done() symmetry.

Kevin Ballard (1):
      builtin-push.c: Fix typo: "anythig" -> "anything"

Kevin McConnell (1):
      Add --staged to bash completion for git diff

Kjetil Barvik (18):
      lstat_cache(): small cleanup and optimisation
      lstat_cache(): generalise longest_match_lstat_cache()
      lstat_cache(): swap func(length, string) into func(string, length)
      unlink_entry(): introduce schedule_dir_for_removal()
      create_directories(): remove some memcpy() and strchr() calls
      write_entry(): cleanup of some duplicated code
      write_entry(): use fstat() instead of lstat() when file is open
      show_patch_diff(): remove a call to fstat()
      lstat_cache(): print a warning if doing ping-pong between cache types
      check_updates(): effective removal of cache entries marked CE_REMOVE
      fix compile error when USE_NSEC is defined
      make USE_NSEC work as expected
      verify_uptodate(): add ce_uptodate(ce) test
      write_index(): update index_state->timestamp after flushing to disk
      stat_tracking_info(): only count real commits
      Record ns-timestamps if possible, but do not use it without USE_NSEC
      checkout bugfix: use stat.mtime instead of stat.ctime in two places
      Revert "lstat_cache(): print a warning if doing ping-pong between cache types"

Kristian Amlie (1):
      Add a test for checking whether gitattributes is honored by checkout.

Linus Torvalds (2):
      Clean up reflog unreachability pruning decision
      Allow users to un-configure rename detection

Marius Storm-Olsen (2):
      Add bare repository indicator for __git_ps1
      Fixup: Add bare repository indicator for __git_ps1

Markus Heidelberg (1):
      add --html-path to get the location of installed HTML docs

Martin Storsjö (1):
      Allow curl to rewind the read buffers

Matthieu Moy (2):
      git-send-email.txt: clarify which options take an argument.
      git-rev-list.txt: make ascii markup uniform with other pages.

Michael Hendricks (1):
      format-patch: add arbitrary email headers

Michael J Gruber (6):
      Typo and language fixes for git-checkout.txt
      test-lib.sh: Test for presence of git-init in the right path.
      test-lib.sh: Allow running the test suite against installed git
      git-branch.txt: document -f correctly
      Test for local branches being followed with --track
      Make local branches behave like remote branches when --tracked

Michael Lai (1):
      git-svn: support intermediate paths when matching tags/branches

Michele Ballabio (6):
      apply: consistent spelling of "don't"
      apply: hide unused options from short help
      git log: avoid segfault with --all-match
      document --force-rebase
      rebase: add options passed to git-am
      rebase: fix typo (force_rebas -> force-rebas)

Mike Hommey (1):
      Replace ",<,>,& with their respective XML entities in DAV requests

Miklos Vajna (11):
      parse-opt: migrate builtin-ls-files.
      Tests: use test_cmp instead of diff where possible
      http-push: using error() and warning() as appropriate
      builtin-apply: use warning() instead of fprintf(stderr, "warning: ")
      builtin-checkout: use warning() instead of fprintf(stderr, "warning: ")
      builtin-fetch-pack: use warning() instead of fprintf(stderr, "warning: ")
      builtin-init-db: use warning() instead of fprintf(stderr, "warning: ")
      builtin-rm: use warning() instead of fprintf(stderr, "warning: ")
      builtin-show-branch: use warning() instead of fprintf(stderr, "warning: ")
      builtin-show-ref: use warning() instead of fprintf(stderr, "warning: ")
      refs: use warning() instead of fprintf(stderr, "warning: ")

Nanako Shiraishi (4):
      Add --format that is a synonym to --pretty
      Give short-hands to --pretty=tformat:%formatstring
      Add --oneline that is a synonym to "--pretty=oneline --abbrev-commit"
      Documentation/git.txt: GIT 1.6.2.2 has been out for a while

Nate Case (1):
      format-patch: Respect --quiet option

Nguyễn Thái Ngọc Duy (1):
      grep: prefer builtin over external one when coloring results

Pete Wyckoff (1):
      git-p4: remove tabs from usermap file

Petr Kodl (2):
      MinGW: a helper function that translates Win32 API error codes
      MinGW: a hardlink implementation

Ramsay Jones (1):
      git-instaweb: fix lighttpd configuration on cygwin

René Scharfe (12):
      grep: micro-optimize hit collection for AND nodes
      grep: remove grep_opt argument from match_expr_eval()
      grep: add pmatch and eflags arguments to match_one_pattern()
      grep: color patterns in output
      grep: add support for coloring with external greps
      parseopt: add PARSE_OPT_KEEP_UNKNOWN
      parseopt: add PARSE_OPT_NO_INTERNAL_HELP
      parseopt: make usage optional
      archive: use parseopt for local-only options
      parseopt: document KEEP_ARGV0, KEEP_UNKNOWN, NO_INTERNAL_HELP
      parseopt: prevent KEEP_UNKNOWN and STOP_AT_NON_OPTION from being used together
      pickaxe: count regex matches only once

SZEDER Gábor (1):
      rerere: remove duplicated functions

Santi Béjar (4):
      Documentation: enhance branch.<name>.{remote,merge}
      Documentation: push.default applies to all remotes
      Documentation: branch.*.merge can also affect 'git-push'
      Documentation: Introduce "upstream branch"

Shawn O. Pearce (1):
      Don't permit ref/branch names to end with ".lock"

Simon Arlott (2):
      git-svn: don't output git commits in quiet mode
      git-svn: add a double quiet option to hide git commits

Stephen Boyd (11):
      git-send-email.txt: describe --compose better
      pretty.c: add %f format specifier to format_commit_message()
      format-patch: construct patch filename in one function
      format-patch: pass a commit to reopen_stdout()
      format-patch: move get_patch_filename() into log-tree
      format-patch: --attach/inline uses filename instead of SHA1
      format-patch: --numbered-files and --stdout aren't mutually exclusive
      completion: add --annotate option to send-email
      completion: add --cc and --no-attachment option to format-patch
      completion: add --thread=deep/shallow to format-patch
      format_sanitized_subject: Don't trim past initial length of strbuf

Sverre Rabbelier (1):
      Teach rebase to rebase even if upstream is up to date

Tay Ray Chuan (1):
      http.c: use strbuf API in quote_ref_url

Ted Pavlic (4):
      completion: For consistency, change "git rev-parse" to __gitdir calls
      completion: Use consistent if [...] convention, not "test"
      completion: Better __git_ps1 support when not in working directory
      completion: More fixes to prevent unbound variable errors

Teemu Likonen (1):
      bash completion: add --format= and --oneline options for "git log"

Thomas Rast (13):
      format-patch: threading test reactivation
      Support coverage testing with GCC/gcov
      Test that diff can read from stdin
      Test diff --dirstat functionality
      Test log --graph
      Test fsck a bit harder
      Test log --decorate
      Test rev-list --parents/--children
      Test git-patch-id
      format-patch: track several references
      format-patch: thread as reply to cover letter even with in-reply-to
      format-patch: support deep threading
      Documentation: filter-branch: show --ignore-unmatch in main index-filter example

Todd Zullinger (1):
      bash completion: Update 'git am' options

Tor Arne Vestbø (2):
      git-rebase: Add --stat and --no-stat for producing diffstat on rebase
      git-pull: Allow --stat and --no-stat to be used with --rebase

Wesley J. Landaker (1):
      Documentation: git-svn: fix trunk/fetch svn-remote key typo

Wincent Colaiuta (2):
      Grammar fixes to "merge" and "patch-id" docs
      Grammar fix for "git merge" man page


Version v1.6.2.5; changes since v1.6.2.4:
-----------------------------------------

Allan Caffee (2):
      builtin-merge: fix a typo in an error message
      Documentation: fix a grammatical error in api-builtin.txt

Frank Lichtenheld (1):
      gitcvs-migration: Link to git-cvsimport documentation

Johannes Schindelin (1):
      Fix off-by-one in read_tree_recursive

Junio C Hamano (7):
      read-tree A B: do not corrupt cache-tree
      Move prime_cache_tree() to cache-tree.c
      read-tree -m A B: prime cache-tree from the switched-to tree
      checkout branch: prime cache-tree fully
      diff -c -p: do not die on submodules
      GIT 1.6.1.4
      GIT 1.6.2.5

Linus Torvalds (3):
      process_{tree,blob}: show objects without buffering
      show_object(): push path_name() call further down
      grep: fix segfault when "git grep '('" is given

Michał Kiedrowicz (3):
      tests: test applying criss-cross rename patch
      builtin-apply: keep information about files to be deleted
      tests: make test-apply-criss-cross-rename more robust

Nicolas Pitre (1):
      honor repack.usedeltabaseoffset when fetching packs

Stephen Boyd (1):
      test-genrandom: Add newline to usage string

Wincent Colaiuta (1):
      git add -p: add missing "q" to patch prompt


Version v1.6.2.4; changes since v1.6.2.3:
-----------------------------------------

Björn Steinbrink (1):
      tree_entry_interesting: a pathspec only matches at directory boundary

Clemens Buchacher (3):
      add tests for merging with submodules
      update cache for conflicting submodule entries
      simplify output of conflicting merge

Erik Faye-Lund (4):
      test-suite: adding a test for fast-export with tag variants
      builtin-fast-export.c: turn error into warning
      builtin-fast-export.c: fix crash on tagged trees
      builtin-fast-export.c: handle nested tags

Frank Lichtenheld (1):
      init: Do not segfault on big GIT_TEMPLATE_DIR environment variable

Jeff King (2):
      doc/gitattributes: clarify location of config text
      add-interactive: refactor mode hunk handling

Johan Herland (1):
      Update docs on behaviour of 'core.sharedRepository' and 'git init --shared'

Johannes Schindelin (1):
      Fix 'git checkout <submodule>' to update the index

Johannes Sixt (1):
      t1301-shared-repo: fix forced modes test

Junio C Hamano (4):
      match_tree_entry(): a pathspec only matches at directory boundaries
      Describe fixes since 1.6.2.3
      Speed up reflog pruning of unreachable commits
      GIT 1.6.2.4

Linus Torvalds (1):
      Clean up reflog unreachability pruning decision

Markus Heidelberg (2):
      doc/git-daemon: add missing arguments to options
      doc/git-daemon: add missing arguments to max-connections option

Matthieu Moy (2):
      git add -p: new "quit" command at the prompt.
      Update git-add.txt according to the new possibilities of 'git add -p'.

Nguyễn Thái Ngọc Duy (1):
      Makefile: remove {fetch,send}-pack from PROGRAMS as they are builtins

Paul Bolle (1):
      imap-send: use correct configuration variable in documentation

Thomas Jarosch (1):
      Fix buffer overflow in config parser

Ulrich Windl (1):
      git-apply: fix option description


Version v1.6.2.3; changes since v1.6.2.2:
-----------------------------------------

Björn Steinbrink (1):
      process_{tree,blob}: Remove useless xstrdup calls

Brandon Casey (6):
      t7700-repack: add two new tests demonstrating repacking flaws
      git-repack.sh: don't use --kept-pack-only option to pack-objects
      pack-objects: only repack or loosen objects residing in "local" packs
      Remove --kept-pack-only option and associated infrastructure
      t7700: demonstrate repack flaw which may loosen objects unnecessarily
      pack-objects: don't loosen objects available in alternate or kept packs

Dan McGee (1):
      git-repack: use non-dashed update-server-info

Daniel Cheng (aka SDiZ) (1):
      State the effect of filter-branch on graft explicitly

Jari Aalto (1):
      Change double quotes to single quotes in message

Jason Merrill (1):
      Documentation: clarify .gitattributes search

Jeff King (2):
      t1301: loosen test for forced modes
      commit: abort commit if interactive add failed

Johan Herland (1):
      Move chmod(foo, 0444) into move_temp_to_file()

Julien Danjou (1):
      git submodule: fix usage line

Junio C Hamano (12):
      git-repack: resist stray environment variable
      has_sha1_pack(): refactor "pretend these packs do not exist" interface
      has_sha1_kept_pack(): take "struct rev_info"
      Consolidate ignore_packed logic more
      Simplify is_kept_pack()
      is_kept_pack(): final clean-up
      diff --cached: do not borrow from a work tree when a path is marked as assume-unchanged
      "core.sharedrepository = 0mode" should set, not loosen
      move_temp_to_file(): do not forget to chmod() in "Coda hack" codepath
      set_shared_perm(): sometimes we know what the final mode bits should look like
      Start 1.6.2.3 preparation
      GIT 1.6.2.3

Linus Torvalds (1):
      process_{tree,blob}: Remove useless xstrdup calls

Markus Heidelberg (1):
      doc/git-pack-refs: fix two grammar issues

Matthieu Moy (3):
      git-checkout.txt: fix incorrect statement about HEAD and index
      git-checkout.txt: clarify that <branch> applies when no path is given.
      git-pull.sh: better warning message for "git pull" on detached head.


Version v1.6.2.2; changes since v1.6.2.1:
-----------------------------------------

Allan Caffee (1):
      Documentation: update graph api example.

Brandon Casey (1):
      git-branch: display "was sha1" on branch deletion rather than just "sha1"

Carlo Marcelo Arenas Belon (1):
      documentation: update cvsimport description of "-r" for recent clone

Daniel Barkalow (1):
      Give error when no remote is configured

Daniel Cheng (aka SDiZ) (1):
      Fix bash completion in path with spaces

David Aguilar (1):
      everyday: use the dashless form of git-init

David J. Mellor (12):
      Documentation: minor grammatical fixes in git-archive.txt.
      Documentation: reword the "Description" section of git-bisect.txt.
      Documentation: minor grammatical fixes in git-blame.txt.
      Documentation: minor grammatical fixes in git-branch.txt.
      Documentation: reworded the "Description" section of git-bisect.txt.
      Documentation: reword example text in git-bisect.txt.
      Documentation: remove some uses of the passive voice in git-bisect.txt
      Documentation: minor grammatical fixes and rewording in git-bundle.txt
      Documentation: minor grammatical fixes in git-cat-file.txt
      Documentation: minor grammatical fixes in git-check-attr.txt
      Documentation: minor grammatical fix in git-check-ref-format.txt
      Documentation: Remove spurious uses of "you" in git-bisect.txt.

Emil Sit (1):
      test-lib: Clean up comments and Makefile.

Eric Wong (1):
      git-svn: fix ls-tree usage with dash-prefixed paths

Holger Weiß (1):
      Documentation: Remove an odd "instead"

Jeff King (3):
      doc: clarify how -S works
      ls-files: require worktree when --deleted is given
      fix portability problem with IS_RUN_COMMAND_ERR

Johannes Schindelin (4):
      rsync transport: allow local paths, and fix tests
      Smudge the files fed to external diff and textconv
      import-zips: fix thinko
      mailmap: resurrect lower-casing of email addresses

Johannes Sixt (2):
      Propagate --exec-path setting to external commands via GIT_EXEC_PATH
      diff --no-index: Do not generate patch output if other output is requested

Junio C Hamano (6):
      read-tree A B C: do not create a bogus index and do not segfault
      Remove total confusion from git-fetch and git-push
      blame: read custom grafts given by -S before calling setup_revisions()
      Update draft release notes to 1.6.2.2
      Update draft release notes to 1.6.2.2
      GIT 1.6.2.2

Linus Torvalds (1):
      close_sha1_file(): make it easier to diagnose errors

Michael J Gruber (2):
      git submodule: Add test cases for git submodule add
      git submodule: Fix adding of submodules at paths with ./, .. and //

Nico -telmich- Schottelius (1):
      git-tag(1): add hint about commit messages

Nicolas Pitre (1):
      avoid possible overflow in delta size filtering computation

René Scharfe (3):
      diffcore-pickaxe: use memmem()
      optimize compat/ memmem()
      pickaxe: count regex matches only once

Shawn O. Pearce (1):
      Increase the size of the die/warning buffer to avoid truncation

Stephen Boyd (1):
      format-patch: --numbered-files and --stdout aren't mutually exclusive

Thomas Rast (4):
      send-email: respect in-reply-to regardless of threading
      send-email: test --no-thread --in-reply-to combination
      Documentation: format-patch --root clarifications
      bash completion: only show 'log --merge' if merging


Version v1.6.2.1; changes since v1.6.2:
---------------------------------------

Chris Johnsen (1):
      builtin-revert.c: release index lock when cherry-picking an empty commit

Christian Couder (1):
      Documentation: fix badly indented paragraphs in "--bisect-all" description

Elijah Newren (1):
      Ensure proper setup of git_dir for git-hash-object

Finn Arne Gangstad (1):
      Support "\" in non-wildcard exclusion entries

Jay Soffian (4):
      send-email: allow send-email to run outside a repo
      send-email: handle multiple Cc addresses when reading mbox message
      send-email: --suppress-cc improvements
      send-email: don't create temporary compose file until it is needed

Jeff King (3):
      never fallback relative times to absolute
      t1300: use test_must_fail as appropriate
      document config --bool-or-int

John Tapsell (1):
      Make the 'lock file' exists error more informative

Junio C Hamano (4):
      git-add -i/-p: learn to unwrap C-quoted paths
      Beginning of 1.6.2 maintenance track
      Update draft release notes for 1.6.2.1
      GIT 1.6.2.1

René Scharfe (1):
      cleanup: add isascii()


Version v1.6.2; changes since v1.6.2-rc2:
-----------------------------------------

Ben Walton (1):
      git-svn - return original format_svn_date semantics

Christian Couder (2):
      bisect: fix quoting TRIED revs when "bad" commit is also "skip"ped
      bisect: fix another instance of eval'ed string

Danijel Tasov (1):
      added missing backtick in git-apply.txt

David J. Mellor (4):
      Documentation: minor grammatical fixes.
      Documentation: minor grammatical fixes.
      Documentation: minor grammatical fixes.
      Documentation: minor grammatical fixes.

Eric Wong (1):
      git-svn: disable broken symlink workaround by default

Jay Soffian (1):
      t5540-http-push.sh: avoid non-portable grep -P

Johannes Sixt (1):
      t3400-rebase: Move detached HEAD check earlier

Junio C Hamano (2):
      git-am: make --abort less dangerous
      GIT 1.6.2

Michael J Gruber (1):
      git-am: Keep index in case of abort with dirty index

Mike Ralphson (4):
      Fix odb_mkstemp() on AIX
      Documentation: Typos / spelling fixes in RelNotes
      Documentation: Expand a couple of abbreviations
      Documentation: Typo / spelling / formatting fixes

Paul Mackerras (1):
      gitk: Fix possible infinite loop and display corruption

Roy Lee (1):
      Documentation/git-archive.txt: Note attributes

Todd Zullinger (1):
      git-rebase: Update --whitespace documentation


Version v1.6.2-rc2; changes since v1.6.2-rc1:
---------------------------------------------

Abhijit Menon-Sen (1):
      Convert git-* invocations to "git *" in the svnimport example.

Alexandre Julliard (3):
      git.el: Make sure that file lists are sorted as they are created.
      git.el: Improve the confirmation message on remove and revert.
      Add a README in the contrib/emacs directory.

Allan Caffee (1):
      trace: Fixed a minor typo in an error message.

Ben Walton (1):
      git-svn fix to avoid using strftime %z

Brian Gernhardt (1):
      git-svn: Create leading directories in create-ignore

Christian Couder (1):
      README: fix path to "gitcvs-migration.txt" and be more consistent

Eric Wong (1):
      git-svn: fix delete+add branch tracking with empty files

Felipe Contreras (2):
      git add: trivial codestyle cleanup
      sha1_file.c: fix typo

Gerrit Pape (3):
      Documentation/git-push: --all, --mirror, --tags can not be combined
      Install builtins with the user and group of the installing personality
      git-quiltimport: preserve standard input to be able to read user input

Giuseppe Bilotta (1):
      gitweb: fix wrong base URL when non-root DirectoryIndex

Jay Soffian (2):
      disallow providing multiple upstream branches to rebase, pull --rebase
      Allow HTTP tests to run on Darwin

Johannes Schindelin (2):
      Introduce the function strip_path_suffix()
      system_path(): simplify using strip_path_suffix(), and add suffix "git"

Johannes Sixt (1):
      gitattributes.txt: Path matching rules are explained in gitignore.txt

Junio C Hamano (4):
      git-svn: fix parsing of timestamp obtained from svn
      tests: fix "export var=val"
      Make sure objects/pack exists before creating a new pack
      GIT 1.6.2-rc2

Lars Noschinski (1):
      filter-branch -d: Export GIT_DIR earlier

Linus Torvalds (1):
      Support 'raw' date format

Marc Branchaud (1):
      Docs: Expand explanation of the use of + in git push refspecs.

Marcel M. Cary (2):
      gitweb: Fix warnings with override permitted but no repo override
      gitweb: Hyperlink multiple git hashes on the same commit message line

Matthieu Moy (2):
      Document git blame --reverse.
      More friendly message when locking the index fails.

Michael J Gruber (1):
      Fix typo in contrib/examples/git-svnimport.txt

Michael Spang (1):
      Skip timestamp differences for diff --no-index

Pete Wyckoff (1):
      git-p4: avoid syncing duplicate changes

Peter Oberndorfer (1):
      git-svn: read the dcommit url from the config file on a per remote basis

SZEDER Gábor (2):
      bash: add missing 'git merge' options
      bash: update 'git svn' options

Thomas Rast (2):
      bash completion: refactor common log, shortlog and gitk options
      bash completion: only show 'log --merge' if merging

Todd Zullinger (1):
      Documentation: Note file formats send-email accepts


Version v1.6.2-rc1; changes since v1.6.2-rc0:
---------------------------------------------

Alexandre Julliard (1):
      Describe notable git.el changes in the release notes

Anton Gyllenberg (1):
      test case for regression caused by git-svn empty symlink fix

Christian Couder (1):
      rev-list: fix showing distance when using --bisect-all

Deskin Miller (1):
      git-svn: Print revision while searching for earliest use of path

Dévai Tamás (1):
      git-svn: Fix for rewriteRoot URL containing username.

Elijah Newren (1):
      fast-export: ensure we traverse commits in topological order

Eric Kidd (1):
      filter-branch: Add more error-handling

Eric Wong (2):
      git-svn: allow disabling expensive broken symlink checks
      git-svn: fix broken symlink workaround when switching branches

Fabian Franz (1):
      submodule: add --no-fetch parameter to update command

Jacob Helwig (1):
      Add 'rm -f' equivalent to 'git rm' example of filter-branch --index-filter

Jakub Narębski (1):
      gitweb: Better regexp for SHA-1 committag match

Jeff King (1):
      symbolic-ref: allow refs/<whatever> in HEAD

Jeremy White (1):
      Update documentation to add further information about using Thunderbird with git-imap-send.

Johannes Schindelin (4):
      Let ls-files strip trailing slashes in submodules' paths
      submodule: warn about non-submodules
      Add two extra tests for git rebase
      gc: make --prune useful again by accepting an optional parameter

Johannes Sixt (4):
      Make test-path-utils more robust against incorrect use
      Move sanitary_path_copy() to path.c and rename it to normalize_path_copy()
      Test and fix normalize_path_copy()
      Remove unused normalize_absolute_path()

Junio C Hamano (16):
      Revert "Merge branch 'js/notes'"
      Modernize t5400 test script
      remote prune: warn dangling symrefs
      Warn use of "origin" when remotes/origin/HEAD is dangling
      Drop double-semicolon in C
      receive-pack: receive.denyDeleteCurrent
      builtin-receive-pack.c: do not initialize statics to 0
      revision traversal and pack: notice and die on missing commit
      Squelch overzealous "ignoring dangling symref" in an empty repository
      Make repack less likely to corrupt repository
      Prepare for 1.6.1.4.
      Revert "validate_headref: tighten ref-matching to just branches"
      Install the default "master" branch configuration after cloning a void
      Teach the "@{-1} syntax to "git branch"
      Teach @{-1} to git merge
      RelNotes Update

Keith Cascio (1):
      Remove redundant bit clears from diff_setup()

Lars Hjemli (1):
      tree.c: allow read_tree_recursive() to traverse gitlink entries

Marcel M. Cary (1):
      git-sh-setup: Use "cd" option, not /bin/pwd, for symlinked work tree

Marius Storm-Olsen (5):
      Add mailmap.file as configurational option for mailmap location
      Add find_insert_index, insert_at_index and clear_func functions to string_list
      Add map_user() and clear_mailmap() to mailmap
      Change current mailmap usage to do matching on both name and email of author/committer.
      Move mailmap documentation into separate file

Mark Burton (1):
      git-rebase.txt: --interactive does not work with --whitespace

Matt Kraai (1):
      bash-completion: Complete the values of color.interactive, color.ui, color.pager

Matt McCutchen (1):
      gitweb: add $prevent_xss option to prevent XSS by repository content

Michael J Gruber (1):
      Fix the installation path for html documentation

Nazri Ramliy (1):
      Bugfix: GIT_EXTERNAL_DIFF with more than one changed files

Pat Notz (1):
      Fix contrib/hooks/post-receive-email for new duplicate branch

René Scharfe (2):
      Fix GIT_CEILING_DIRECTORIES on Windows
      builtin-receive-pack.c: fix compiler warnings about format string

SZEDER Gábor (3):
      Move 'rev-parse --git-dir' test to t1500
      t1500: more 'git rev-parse --git-dir' tests
      bash: fix misspelled 'git svn' option

Sam Vilain (1):
      git-svn: abstract out a block into new method other_gs()

Santi Béjar (1):
      doc/bundle: Use the more conventional suffix '.bundle'

Shawn O. Pearce (2):
      Clear the delta base cache during fast-import checkpoint
      Clear the delta base cache if a pack is rebuilt

Sitaram Chamarty (1):
      Documentation: clarify commits affected by gitk --merge

Stephan Beyer (3):
      add -p: get rid of Git.pm warnings about unitialized values
      Makefile: resort filenames alphabetically
      Generalize and libify index_is_dirty() to index_differs_from(...)

Tay Ray Chuan (1):
      use a hash of the lock token as the suffix for PUT/MOVE

Ted Pavlic (2):
      completion: Fix GIT_PS1_SHOWDIRTYSTATE to prevent unbound variable errors.
      completion: Get rid of tabbed indentation in comments. Replace with spaces.

Thomas Rast (2):
      log: do not print ellipses with --abbrev-commit
      Documentation: pruning recipe for destructive filter-branch

Todd Zullinger (1):
      git-web--browse: Fix check for /bin/start


Version v1.6.2-rc0; changes since v1.6.1.4:
-------------------------------------------

Adeodato Simó (3):
      builtin-shortlog.c: use string_list_append(), and don't strdup unnecessarily
      git.c: make autocorrected aliases work
      t7501-commit.sh: explicitly check that -F prevents invoking the editor

Alexander Potashev (4):
      remove trailing LF in die() messages
      add is_dot_or_dotdot inline function
      Allow cloning to an existing empty directory
      Replace deprecated dashed git commands in usage

Alexandre Julliard (8):
      git.el: Add a checkout command.
      git.el: Add a command to create a new branch.
      git.el: Add commands for cherry-pick and revert.
      git.el: Make git-run-command-region display the error if any.
      git.el: Set a regexp for paragraph-separate in log-edit mode.
      git.el: Use integer instead of character constants in case statement.
      git.el: Add some notes about Emacs versions compatibility.
      emacs: Remove the no longer maintained vc-git package.

Arjen Laarhoven (1):
      t/t4202-log.sh: Add testcases

Benjamin Kramer (1):
      Ignore test-ctype

Boyd Stephen Smith Jr (2):
      color-words: Support diff.wordregex config option
      Change the spelling of "wordregex".

Brandon Casey (2):
      t7700: demonstrate misbehavior of 'repack -a' when local packs exist
      Makefile: use shell for-loop rather than Make's foreach loop during install

Charles Bailey (7):
      Fix some tab/space inconsistencies in git-mergetool.sh
      Add -y/--no-prompt option to mergetool
      mergetool: Add prompt to continue after failing to merge a file
      mergetool: Don't keep temporary merge files unless told to
      mergetool: respect autocrlf by using checkout-index
      mergetool: Add a test for running mergetool in a sub-directory
      mergetool: fix running mergetool in sub-directories

Christian Couder (1):
      sha1_file: make "read_object" static

Clemens Buchacher (2):
      clean up pathspec matching
      remove pathspec_match, use match_pathspec instead

David Aguilar (4):
      contrib: add 'git difftool' for launching common merge tools
      difftool: fix documentation problems
      difftool: put the cursor on the editable file for Vim
      contrib/difftool: Don't repeat merge tool candidates

David M. Syzdek (1):
      autoconf: Enable threaded delta search when pthreads are supported

Eric Wong (6):
      git-svn: add --authors-file test
      git-svn: handle empty files marked as symlinks in SVN
      git-svn: better attempt to handle broken symlink updates
      git-svn: fix SVN 1.1.x compatibility
      git-svn: avoid importing nested git repos
      git-svn: fix memory leak when checking for empty symlinks

Fabian Emmes (2):
      cvsserver: add option to configure commit message
      cvsserver: change generation of CVS author names

Giuseppe Bilotta (16):
      gitweb: add patch view
      gitweb: change call pattern for git_commitdiff
      gitweb: add patches view
      gitweb: link to patch(es) view in commit(diff) and (short)log view
      gitweb: use href() when generating URLs in OPML
      gitweb: don't use pathinfo for global actions
      gitweb: suggest name for OPML view
      gitweb: channel image in rss feed
      gitweb: feed generator metadata
      gitweb: rss feed managingEditor
      gitweb: rss channel date
      gitweb: last-modified time should be commiter, not author
      gitweb: check if-modified-since for feeds
      gitweb: make static files accessible with PATH_INFO
      gitweb: webserver config for PATH_INFO
      gitweb: align comments to code

Jake Goulding (3):
      Make opt_parse_with_commit() non-static
      Make has_commit() non-static
      git-tag: Add --contains option

Jakub Narębski (4):
      gitweb: Move 'lineno' id from link to row element in git_blame
      gitweb: A bit of code cleanup in git_blame()
      gitweb: cache $parent_commit info in git_blame()
      gitweb: Update README that gitweb works better with PATH_INFO

Jay Soffian (2):
      git-am: minor cleanups
      Makefile: minor improvements for Mac OS X (Darwin)

Jeff King (10):
      Makefile: clean up TEST_PROGRAMS definition
      color: make it easier for non-config to parse color specs
      expand --pretty=format color options
      diff: refactor tempfile cleanup handling
      chain kill signals for cleanup functions
      refactor signal handling for cleanup functions
      pager: do wait_for_pager on signal death
      validate_headref: tighten ref-matching to just branches
      symbolic ref: refuse non-ref targets in HEAD
      t0005: use SIGTERM for sigchain test

Johannes Gilger (1):
      mergetool: Don't repeat merge tool candidates

Johannes Schindelin (24):
      Force t5302 to use a single thread
      Introduce commit notes
      Add a script to edit/inspect notes
      git wrapper: Make while loop more reader-friendly
      bundle: allow rev-list options to exclude annotated tags
      show <tag>: reuse pp_user_info() instead of duplicating code
      Implement the patience diff algorithm
      Introduce the diff option '--patience'
      bash completions: Add the --patience option
      Speed up git notes lookup
      Add an expensive test for git-notes
      Add color_fwrite_lines(), a function coloring each line individually
      color-words: refactor word splitting and use ALLOC_GROW()
      color-words: change algorithm to allow for 0-character word boundaries
      color-words: take an optional regular expression describing words
      Fix parsing of @{-1}@{1}
      rebase -i --root: fix check for number of arguments
      t3404 & t3411: undo copy&paste
      lib-rebase.sh: Document what set_fake_editor() does
      test-lib.sh: introduce test_commit() and test_merge() helpers
      Simplify t3410
      Simplify t3411
      Simplify t3412
      Fix 'git diff --no-index' with a non-existing symlink target

Johannes Sixt (2):
      Windows: Fix signal numbers
      Windows: Fix intermittent failures of t7701

Jon Loeliger (1):
      Fix Documentation typos surrounding the word 'handful'.

Jonas Flodén (1):
      git-am: Make it easier to see which patch failed

Junio C Hamano (26):
      Document "git-reset --merge"
      Start 1.6.2 cycle
      Resurrect "git apply --flags -" to read from the standard input
      git-am: add --directory=<dir> option
      Update 1.6.2 draft release notes
      git-am: fix shell quoting
      checkout: implement "@{-N}" shortcut name for N-th last branch
      git-am: re-fix the diag message printing
      interpret_nth_last_branch(): avoid traversing the reflog twice
      Fix reflog parsing for a malformed branch switching entry
      interpret_nth_last_branch(): plug small memleak
      Introduce for_each_recent_reflog_ent().
      Simplify parsing branch switching events in reflog
      http-push.c: style fixes
      am: Add --committer-date-is-author-date option
      rebase -i: correctly remember --root flag across --continue
      tests: Avoid single-shot environment export for shell function invocation
      Update draft release notes to 1.6.2
      fsck: HEAD is part of refs
      fsck: check loose objects from alternate object stores by default
      http-push.c: get_remote_object_url() is only used under USE_CURL_MULTI
      receive-pack: explain what to do when push updates the current branch
      t3412: further simplify setting of GIT_EDITOR
      tests: fix test_commit() for case insensitive filesystems
      Makefile: fix misdetection of relative pathnames
      GIT 1.6.2-rc0

Keith Cascio (1):
      test more combinations of ignore-whitespace options to diff

Kirill Smelkov (1):
      mailinfo: cleanup extra spaces for complex 'From:'

Kjetil Barvik (6):
      Cleanup of unused symcache variable inside diff-lib.c
      lstat_cache(): more cache effective symlink/directory detection
      lstat_cache(): introduce has_symlink_or_noent_leading_path() function
      lstat_cache(): introduce has_dirs_only_path() function
      lstat_cache(): introduce invalidate_lstat_cache() function
      lstat_cache(): introduce clear_lstat_cache() function

Lee Marlow (2):
      bash completion: Add '--intent-to-add' long option for 'git add'
      bash completion: Use 'git add' completions for 'git stage'

Linus Torvalds (1):
      Add 'merge' mode to 'git reset'

Marcel Koeppen (1):
      git-svn: Show UUID in svn info for added directories with svn 1.5.5

Markus Heidelberg (10):
      git-cherry: make <upstream> parameter optional
      Documentation: clarify which parameters are optional to git-cherry
      contrib/vim: change URL to point to the latest syntax files
      Documentation: let asciidoc align related options
      mergetool: put the cursor on the editable file for Vim
      contrib/difftool: change trap condition from SIGINT to INT
      contrib/difftool: remove distracting 'echo' in the SIGINT handler
      use uppercase POSIX compliant signals for the 'trap' command
      bash completion: add 'rename' subcommand to git-remote
      contrib/difftool: add support for Kompare

Matt Kraai (1):
      gitweb: unify boolean feature subroutines

Michele Ballabio (1):
      git-shortlog.txt: fix example about .mailmap

Miklos Vajna (3):
      Add support for a pdf version of the user manual
      parse-opt: migrate builtin-apply.
      gittutorial: remove misleading note

Nanako Shiraishi (3):
      git-am: Add --ignore-date option
      Mention "local convention" rule in the CodingGuidelines
      git-bundle doc: update examples

Nicolas Pitre (2):
      autodetect number of CPUs by default when using threads
      pack-objects: don't use too many threads with few objects

Pascal Obry (1):
      config.mak.in: define paths without trailing slash

Pete Harlan (1):
      git-svn: Add --localtime option to "fetch"

Pierre Habouzit (1):
      filter-branch: add git_commit_non_empty_tree and --prune-empty.

Ralf Wildenhues (1):
      Fix naming scheme for configure cache variables.

René Scharfe (9):
      diff: add option to show context between close hunks
      strbuf: instate cleanup rule in case of non-memory errors
      grep -w: forward to next possible position after rejected match
      grep: don't call regexec() for fixed strings
      Add ctype test
      Reformat ctype.c
      Change NUL char handling of isspecial()
      Add is_regex_special()
      Optimize color_parse_mem

SZEDER Gábor (4):
      bash: add '--merge' to 'git reset'
      bash: remove unnecessary checks for long options with argument
      bash: add missing format-patch command line options
      bash: refactor 'git log --pretty=<format>' options

Santi Béjar (2):
      commit: more compact summary and without extra quotes
      tutorial-2: Update with the new "git commit" ouput

Serge van den Boom (1):
      Makefile: Make 'configure --with-expat=path' actually work

Stefan Karpinski (2):
      git-cvsserver: handle CVS 'noop' command.
      git-cvsserver: run post-update hook *after* update.

Steffen Prohaska (6):
      Move computation of absolute paths from Makefile to runtime (in preparation for RUNTIME_PREFIX)
      git_extract_argv0_path(): Move check for valid argv0 from caller to callee
      Add calls to git_extract_argv0_path() in programs that call git_config_*
      Modify setup_path() to only add git_exec_path() to PATH
      Compute prefix at runtime if RUNTIME_PREFIX is set
      Windows: Revert to default paths and convert them by RUNTIME_PREFIX

Stephan Beyer (5):
      checkout: don't crash on file checkout before running post-checkout hook
      Move run_hook() from builtin-commit.c into run-command.c (libgit)
      api-run-command.txt: talk about run_hook()
      run_hook(): check the executability of the hook before filling argv
      run_hook(): allow more than 9 hook arguments

Steve Haslam (1):
      Refactor git_set_argv0_path() to git_extract_argv0_path()

Sverre Rabbelier (1):
      Allow cloning an empty repository

Tay Ray Chuan (4):
      http-push: refactor lock-related headers creation for curl requests
      http-push: refactor request url creation
      http-push: add back underscore separator before lock token
      http-push: wrap signature of get_remote_object_url

Ted Pavlic (4):
      bash-completion: Support running when set -u is enabled
      bash-completion: Try bash completions before simple filetype
      bash-completion: Add comments to remind about required arguments
      make: Remove -pthread on Darwin (it is included by cstdlib).

Teemu Likonen (3):
      Fix the building of user-manual.texi and gitman.texi documents
      Fix the building of gitman.info document
      diff-options.txt: Fix asciidoc markup issue

Thomas Rast (23):
      rebase -i: execute hook only after argument checking
      rebase: learn to rebase root commit
      rebase -i: learn to rebase root commit
      rebase: update documentation for --root
      notes: fix core.notesRef documentation
      color-words: enable REG_NEWLINE to help user
      color-words: expand docs with precise semantics
      color-words: make regex configurable via attributes
      sha1_name: tweak @{-N} lookup
      sha1_name: support @{-N} syntax in get_sha1()
      checkout: implement "-" abbreviation, add docs and tests
      bash completion: move pickaxe options to log
      bash completion: refactor diff options
      t1505: remove debugging cruft
      t3412: clean up GIT_EDITOR usage
      t3412: use log|name-rev instead of log --graph
      bash: offer to show (un)staged changes
      add -p: change prompt separator for 'g'
      add -p: trap Ctrl-D in 'goto' mode
      contrib git-resurrect: find traces of a branch name and resurrect it
      add -p: prompt for single characters
      add -p: print errors in separate color
      add -p: import Term::ReadKey with 'require'

Tor Arne Vestbø (1):
      git-notes: fix printing of multi-line notes

Vitaly "_Vi" Shukela (3):
      git-svn: add --ignore-paths option for fetching
      git-svn: documented --ignore-paths
      git-svn: Add test for --ignore-paths parameter

William Pursell (5):
      Add subroutine to display one-line summary of hunks
      Add 'g' command to go to a hunk
      git-add -i/-p: Change prompt separater from slash to comma
      Add / command in add --patch
      In add --patch, Handle K,k,J,j slightly more gracefully.

jidanni@jidanni.org (1):
      git-show-branch doc: show -g as synonym to --reflog in the list

martin f. krafft (1):
      git-am: implement --reject option passed to git-apply


Version v1.6.1.4; changes since v1.6.1.3:
-----------------------------------------

Allan Caffee (3):
      Documentation: update graph api example.
      builtin-merge: fix a typo in an error message
      Documentation: fix a grammatical error in api-builtin.txt

Björn Steinbrink (2):
      tree_entry_interesting: a pathspec only matches at directory boundary
      process_{tree,blob}: Remove useless xstrdup calls

Brandon Casey (7):
      t7700-repack: add two new tests demonstrating repacking flaws
      git-repack.sh: don't use --kept-pack-only option to pack-objects
      pack-objects: only repack or loosen objects residing in "local" packs
      Remove --kept-pack-only option and associated infrastructure
      git-branch: display "was sha1" on branch deletion rather than just "sha1"
      t7700: demonstrate repack flaw which may loosen objects unnecessarily
      pack-objects: don't loosen objects available in alternate or kept packs

Chris Johnsen (1):
      builtin-revert.c: release index lock when cherry-picking an empty commit

Christian Couder (3):
      rev-list: fix showing distance when using --bisect-all
      bisect: fix quoting TRIED revs when "bad" commit is also "skip"ped
      bisect: fix another instance of eval'ed string

Dan McGee (1):
      git-repack: use non-dashed update-server-info

Daniel Cheng (aka SDiZ) (2):
      Fix bash completion in path with spaces
      State the effect of filter-branch on graft explicitly

Danijel Tasov (1):
      added missing backtick in git-apply.txt

David Aguilar (1):
      everyday: use the dashless form of git-init

David J. Mellor (1):
      Documentation: minor grammatical fixes.

Elijah Newren (2):
      fast-export: ensure we traverse commits in topological order
      Ensure proper setup of git_dir for git-hash-object

Emil Sit (1):
      test-lib: Clean up comments and Makefile.

Eric Kidd (1):
      filter-branch: Fix fatal error on bare repositories

Finn Arne Gangstad (1):
      Support "\" in non-wildcard exclusion entries

Frank Lichtenheld (1):
      init: Do not segfault on big GIT_TEMPLATE_DIR environment variable

Geoffrey Thomas (2):
      utf8: add utf8_strwidth()
      builtin-blame.c: Use utf8_strwidth for author's names

Gerrit Pape (1):
      Documentation/git-push: --all, --mirror, --tags can not be combined

Holger Weiß (1):
      Documentation: Remove an odd "instead"

Jason Merrill (1):
      Documentation: clarify .gitattributes search

Jay Soffian (2):
      builtin-remote: make rm() use properly named variable to hold return value
      builtin-remote: make rm operation safer in mirrored repository

Jeff King (5):
      git: s/run_command/run_builtin/
      run_command(): handle missing command errors more gracefully
      run_command(): help callers distinguish errors
      git: use run_command() to execute dashed externals
      commit: abort commit if interactive add failed

Johannes Schindelin (3):
      Fix submodule squashing into unrelated commit
      filter-branch: do not consider diverging submodules a 'dirty worktree'
      import-zips: fix thinko

Johannes Sixt (6):
      Make test-path-utils more robust against incorrect use
      Move sanitary_path_copy() to path.c and rename it to normalize_path_copy()
      Test and fix normalize_path_copy()
      Remove unused normalize_absolute_path()
      Propagate --exec-path setting to external commands via GIT_EXEC_PATH
      diff --no-index: Do not generate patch output if other output is requested

Junio C Hamano (19):
      revision traversal: allow UNINTERESTING objects to be missing
      rebase -i squashes submodule changes into unrelated commit
      add -u: do not fail to resolve a path as deleted
      revision traversal and pack: notice and die on missing commit
      Make repack less likely to corrupt repository
      Prepare for 1.6.1.4.
      tests: fix "export var=val"
      Make sure objects/pack exists before creating a new pack
      git-repack: resist stray environment variable
      has_sha1_pack(): refactor "pretend these packs do not exist" interface
      has_sha1_kept_pack(): take "struct rev_info"
      Consolidate ignore_packed logic more
      Simplify is_kept_pack()
      is_kept_pack(): final clean-up
      blame: read custom grafts given by -S before calling setup_revisions()
      diff --cached: do not borrow from a work tree when a path is marked as assume-unchanged
      match_tree_entry(): a pathspec only matches at directory boundaries
      diff -c -p: do not die on submodules
      GIT 1.6.1.4

Kirill Smelkov (4):
      mailinfo: correctly handle multiline 'Subject:' header
      mailinfo: 'From:' header should be unfold as well
      mailinfo: add explicit test for mails like '<a.u.thor@example.com> (A U Thor)'
      mailinfo: tests for RFC2047 examples

Linus Torvalds (3):
      close_sha1_file(): make it easier to diagnose errors
      process_{tree,blob}: Remove useless xstrdup calls
      grep: fix segfault when "git grep '('" is given

Markus Heidelberg (1):
      doc/git-daemon: add missing arguments to options

Matt McCutchen (1):
      gitweb: add $prevent_xss option to prevent XSS by repository content

Matthieu Moy (4):
      Document git blame --reverse.
      More friendly message when locking the index fails.
      git-checkout.txt: fix incorrect statement about HEAD and index
      git-checkout.txt: clarify that <branch> applies when no path is given.

Michael Spang (1):
      Skip timestamp differences for diff --no-index

Mike Ralphson (1):
      Fix odb_mkstemp() on AIX

Nico -telmich- Schottelius (1):
      git-tag(1): add hint about commit messages

Nicolas Pitre (1):
      avoid possible overflow in delta size filtering computation

René Scharfe (1):
      Fix GIT_CEILING_DIRECTORIES on Windows

Shawn O. Pearce (2):
      Clear the delta base cache during fast-import checkpoint
      Clear the delta base cache if a pack is rebuilt

Stephen Boyd (1):
      test-genrandom: Add newline to usage string

Thomas Jarosch (1):
      Fix buffer overflow in config parser

Thomas Rast (2):
      Documentation: format-patch --root clarifications
      bash completion: only show 'log --merge' if merging

Todd Zullinger (1):
      Documentation: Note file formats send-email accepts


Version v1.6.1.3; changes since v1.6.1.2:
-----------------------------------------

Anders Melchiorsen (2):
      Documentation: more git push examples
      Documentation: rework src/dst description in git push

David J. Mellor (1):
      Fixed broken git help -w when installing from RPM

Guanqun Lu (2):
      fix typo in Documentation
      add test-dump-cache-tree in Makefile

Johannes Schindelin (2):
      revision walker: include a detached HEAD in --all
      apply: fix access to an uninitialized mode variable, found by valgrind

Junio C Hamano (6):
      bundle: allow the same ref to be given more than once
      Documentation: simplify refspec format description
      diff.c: output correct index lines for a split diff
      builtin-apply.c: do not set bogus mode in check_preimage() for deleted path
      grep: pass -I (ignore binary) down to external grep
      GIT 1.6.1.3

Keith Cascio (2):
      test more combinations of ignore-whitespace options to diff
      Fix combined use of whitespace ignore options to diff

Linus Torvalds (1):
      Wrap inflate and other zlib routines for better error reporting

Matthieu Moy (3):
      Missing && in t/t7001.sh.
      Add a testcase for "git mv -f" on untracked files.
      builtin-mv.c: check for unversionned files before looking at the destination.

René Scharfe (1):
      merge: fix out-of-bounds memory access

SZEDER Gábor (1):
      Fix gitdir detection when in subdir of gitdir

Stefan Naewe (1):
      urls.txt: document optional port specification in git URLS

William Pursell (1):
      User-manual: "git stash <comment>" form is long gone


Version v1.6.1.2; changes since v1.6.1.1:
-----------------------------------------

Björn Steinbrink (1):
      Rename detection: Avoid repeated filespec population

Jeff King (1):
      avoid 31-bit truncation in write_loose_object

Johannes Schindelin (2):
      get_sha1_basic(): fix invalid memory access, found by valgrind
      test-path-utils: Fix off by one, found by valgrind

Junio C Hamano (4):
      ls-tree: add --full-tree option
      Teach format-patch to handle output directory relative to cwd
      send-pack: do not send unknown object name from ".have" to pack-objects
      GIT 1.6.1.2

Marcel M. Cary (1):
      git-sh-setup: Fix scripts whose PWD is a symlink to a work-dir on OS X

Markus Heidelberg (2):
      git-commit: color status output when color.ui is set
      git-status -v: color diff output when color.ui is set

Nanako Shiraishi (1):
      Document git-ls-tree --full-tree

Nguyễn Thái Ngọc Duy (2):
      grep: support --no-ext-grep to test builtin grep
      grep: grep cache entries if they are "assume unchanged"

Nicolas Pitre (1):
      objects to be pruned immediately don't have to be loosened


Version v1.6.1.1; changes since v1.6.1:
---------------------------------------

Adeodato Simó (2):
      git-shortlog.txt: improve documentation about .mailmap files
      git-send-email.txt: move --format-patch paragraph to a proper location

Anders Melchiorsen (4):
      Documentation: git push repository can also be a remote
      Documentation: remove a redundant elaboration
      Documentation: mention branches rather than heads
      Documentation: avoid using undefined parameters

Boyd Stephen Smith Jr (1):
      Fix Documentation for git-describe

Christian Couder (1):
      builtin-fsck: fix off by one head count

Clemens Buchacher (4):
      modify/delete conflict resolution overwrites untracked file
      unpack-trees: handle failure in verify_absent
      unpack-trees: fix path search bug in verify_absent
      unpack-trees: remove redundant path search in verify_absent

Devin Doucette (1):
      gitweb: Fix export check in git_get_projects_list

Felipe Contreras (1):
      fast-import: Cleanup mode setting.

Henrik Austad (2):
      Use capitalized names where appropriate
      Be consistent in switch usage for tar

Jay Soffian (1):
      Git.pm: call Error::Simple() properly

Joey Hess (1):
      README: tutorial.txt is now called gittutorial.txt

Johannes Schindelin (7):
      merge-recursive: mark rename/delete conflict as unmerged
      bisect view: call gitk if Cygwin's SESSIONNAME variable is set
      git add: do not add files from a submodule
      http-push: fix off-by-path_len
      http-push: when making directories, have a trailing slash in the path name
      t5540: clarify that http-push does not handle packed-refs on the remote
      Rename diff.suppress-blank-empty to diff.suppressBlankEmpty

Junio C Hamano (8):
      merge-recursive: do not clobber untracked working tree garbage
      Prepare for v1.6.1.1 maintenance release
      builtin-apply: prevent non-explicit permission changes
      git checkout: do not allow switching to a tree-ish that is not a commit
      format-patch: show patch text for the root commit
      Update draft release notes to 1.6.1.1
      Update draft release notes for 1.6.1.1
      GIT 1.6.1.1

Kirill A. Korinskiy (1):
      http-push: support full URI in handle_remote_ls_ctx()

Lars Noschinski (1):
      shell: Document that 'cvs server' is a valid command

Markus Heidelberg (2):
      doc/git-send-email: mention sendemail.cc config variable
      Documentation: let asciidoc align related options

Michael J Gruber (2):
      add test cases for "git mv -k"
      fix handling of multiple untracked files for git mv -k

Miklos Vajna (2):
      fast-export: print usage when no options specified
      Make t3411 executable

Paul Jarc (1):
      configure clobbers LDFLAGS

Philippe Bruhat (1):
      Git.pm: correctly handle directory name that evaluates to "false"

Pierre Habouzit (1):
      Avoid spurious error messages on error mistakes.

René Scharfe (8):
      daemon: handle freopen() failure
      daemon: cleanup: replace loop with if
      daemon: cleanup: factor out xstrdup_tolower()
      merge-file: handle freopen() failure
      pretty: factor out skip_empty_lines()
      pretty: factor out format_subject()
      pretty: support multiline subjects with format:
      shortlog: handle multi-line subjects like log --pretty=oneline et. al. do

Shawn O. Pearce (1):
      describe: Avoid unnecessary warning when using --all

Stephan Beyer (5):
      t3501: check that commits are actually done
      t3404: Add test case for aborted --continue after "edit"
      t3404: Add test case for auto-amending only edited commits after "edit"
      builtin-commit.c: do not remove COMMIT_EDITMSG
      githooks.txt: add missing word

Thomas Rast (3):
      diff: accept -- when using --no-index
      diff --no-index: test for pager after option parsing
      diff --no-index -q: fix endless loop

jidanni@jidanni.org (4):
      Documentation/diff-options.txt: unify options
      Documentation/git-tag.txt: minor typo and grammar fix
      Documentation/git-push.txt: minor: compress one option
      contrib/examples/README: give an explanation of the status of these files


Version v1.6.1; changes since v1.6.1-rc4:
-----------------------------------------

Johannes Schindelin (1):
      rebase -i -p: leave a --cc patch when a merge could not be redone

Johannes Sixt (2):
      Show a failure of rebase -p if the merge had a conflict
      rebase -i -p: Fix --continue after a merge could not be redone

Junio C Hamano (1):
      GIT 1.6.1

Miklos Vajna (1):
      t9129: skip the last three tests if UTF-8 locale is not available


Version v1.6.1-rc4; changes since v1.6.1-rc3:
---------------------------------------------

Alexander Gavrilov (2):
      git-gui: Fix handling of relative paths in blame.
      git-gui: Fix commit encoding handling.

Arjen Laarhoven (1):
      Enable threaded delta search on Mac OS X/Darwin

Boyd Stephen Smith Jr (1):
      git-revert documentation: refer to new HOWTO on reverting faulty merges

Christian Stimming (3):
      git-gui: Update German (completed) translation.
      gitk: Mark forgotten strings (header sentence parts in color chooser) for translation
      gitk: Update German translation

David Aguilar (1):
      git-mergetool: properly handle "git mergetool -- filename"

Fredrik Skolmli (1):
      git-gui: Starting translation for Norwegian

Giuseppe Bilotta (1):
      gitk: Map / to focus the search box

Johannes Schindelin (3):
      fast-import: close pack before unlinking it
      git-gui: Get rid of the last remnants of GIT_CONFIG_LOCAL
      fast-export: deal with tag objects that do not have a tagger

Johannes Sixt (3):
      gitk: Use check-buttons' -text property instead of separate labels
      gitk: Ensure that "Reset branch" menu entry is enabled
      gitk: Force the focus to the main window on Windows

Junio C Hamano (12):
      git-show: do not segfault when showing a bad tag
      pager: do not dup2 stderr if it is already redirected
      gitweb: do not run "git diff" that is Porcelain
      GIT 1.5.4.7
      gitweb: do not run "git diff" that is Porcelain
      make_absolute_path(): check bounds when seeing an overlong symlink
      builtin-blame.c: use strbuf_readlink()
      combine-diff.c: use strbuf_readlink()
      fast-import: make tagger information optional
      Make sure lockfiles are unlocked when dying on SIGPIPE
      send-email: futureproof split_addrs() sub
      GIT 1.6.1-rc4

Kevin Ballard (1):
      gitk: Allow unbalanced quotes/braces in commit headers

Kirill A. Korinskiy (1):
      Remove the requirement opaquelocktoken uri scheme

Lee Marlow (2):
      bash completion: Sort config completion variables
      bash completion: Sync config variables with their man pages

Linus Torvalds (5):
      Add generic 'strbuf_readlink()' helper function
      Make 'ce_compare_link()' use the new 'strbuf_readlink()'
      Make 'index_path()' use 'strbuf_readlink()'
      Make 'diff_populate_filespec()' use the new 'strbuf_readlink()'
      Make 'prepare_temp_file()' ignore st_size for symlinks

Marcel M. Cary (1):
      git-sh-setup: Fix scripts whose PWD is a symlink into a git work-dir

Markus Heidelberg (7):
      Documentation: fix description for enabling hooks
      doc/git-reset: add reference to git-stash
      Documentation: sync example output with git output
      Documentation: fix typos, grammar, asciidoc syntax
      Documentation: fix typos, grammar, asciidoc syntax
      Documentation/git-show-branch: work around "single quote" typesetting glitch
      doc/git-fsck: change the way for getting heads' SHA1s

Michael J Gruber (1):
      test overlapping ignore patterns

Michele Ballabio (1):
      git gui: update Italian translation

Miklos Vajna (4):
      git-gui: Update Hungarian translation for 0.12
      git-daemon documentation: use {tilde}
      githooks documentation: add a note about the +x mode
      SubmittingPatches: mention the usage of real name in Signed-off-by: lines

Nanako Shiraishi (3):
      git-gui: Update Japanese translation for 0.12
      Clarify documentation of "git checkout <tree-ish> paths" syntax
      Add a documentat on how to revert a faulty merge

Paul Mackerras (1):
      gitk: Fix bugs in blaming code

Peter Krefting (2):
      git-gui: Updated Swedish translation (515t0f0u).
      git-gui: Fixed typos in Swedish translation.

René Scharfe (3):
      Fix type-mismatch compiler warning from diff_populate_filespec()
      connect.c: stricter port validation, silence compiler warning
      fast-import.c: stricter strtoul check, silence compiler warning

Richard Hartmann (2):
      Make help entries alphabetical
      Always show which directory is not a git repository

Robin Rosenberg (1):
      git-revert: record the parent against which a revert was made

Shawn O. Pearce (2):
      git-gui: Update po template to include 'Mirroring %s' message
      git-gui 0.12

Wu Fengguang (1):
      git-send-email: handle email address with quoted comma


Version v1.6.1-rc3; changes since v1.6.1-rc2:
---------------------------------------------

Alexander Gavrilov (1):
      Documentation: Describe git-gui Tools menu configuration options.

Alexander Potashev (2):
      Fix typos in documentation
      Fix typo in comment in builtin-add.c

Alexey Borzenkov (1):
      Define linkgit macro in [macros] section

Brandon Casey (1):
      git-branch: display sha1 on branch deletion

Deskin Miller (1):
      git-svn: Make following parents atomic

Jakub Narębski (1):
      gitweb: Fix bug in insert_file() subroutine

Jeff King (5):
      reorder ALLOW_TEXTCONV option setting
      diff: allow turning on textconv explicitly for plumbing
      diff: fix handling of binary rewrite diffs
      diff: respect textconv in rewrite diffs
      rebase: improve error messages about dirty state

Jim Meyering (1):
      git-config.txt: fix a typo

Johannes Schindelin (1):
      Get rid of the last remnants of GIT_CONFIG_LOCAL

Junio C Hamano (4):
      builtin-checkout.c: check error return from read_cache()
      read-cache.c: typofix in comment
      work around Python warnings from AsciiDoc
      Fix t4031

Linus Torvalds (1):
      fsck: reduce stack footprint

Markus Heidelberg (1):
      builtin-commit: remove unused message variable

Nicolas Pitre (1):
      make sure packs to be replaced are closed beforehand

Ralf Wildenhues (1):
      Improve language in git-merge.txt and related docs

Tor Arvid Lund (1):
      git-p4: Fix regression in p4Where method.

YONETANI Tomokazu (1):
      git-fast-import possible memory corruption problem


Version v1.6.1-rc2; changes since v1.6.1-rc1:
---------------------------------------------

Alex Riesen (3):
      Make some of fwrite/fclose/write/close failures visible
      Make chdir failures visible
      Report symlink failures in merge-recursive

Alexander Gavrilov (2):
      gitk: Make line origin search update the busy status
      gitk: Add a menu option to start git gui

Christian Couder (2):
      bisect: fix "git bisect skip <commit>" and add tests cases
      Documentation: describe how to "bisect skip" a range of commits

Christian Stimming (1):
      gitk: Update German translation

Davide Libenzi (1):
      xdiff: give up scanning similar lines early

Deskin Miller (1):
      git-svn: Make branch use correct svn-remote

Giuseppe Bilotta (2):
      gitweb: make gitweb_check_feature a boolean wrapper
      Update comment on gitweb_check/get_feature

Jakub Narębski (2):
      gitweb: Fix handling of non-ASCII characters in inserted HTML files
      gitweb: Make project specific override for 'grep' feature work

Jeff King (2):
      add stage to gitignore
      tag: delete TAG_EDITMSG only on successful tag

Johannes Sixt (1):
      t4030-diff-textconv: Make octal escape sequence more portable

Junio C Hamano (17):
      builtin-rm.c: explain and clarify the "local change" logic
      git add --intent-to-add: fix removal of cached emptiness
      git add --intent-to-add: do not let an empty blob be committed by accident
      gitweb: fix 'ctags' feature check and others
      gitweb: rename gitweb_check_feature to gitweb_get_feature
      Makefile: introduce NO_PTHREADS
      Install git-stage in exec-path
      git-am --whitespace: do not lose the command line option
      git-am: propagate -C<n>, -p<n> options as well
      git-am: propagate --3way options as well
      Test that git-am does not lose -C/-p/--whitespace options
      git-am: rename apply_opt_extra file to apply-opt
      Update draft release notes to 1.6.1
      GIT 1.6.0.5
      Update draft release notes for 1.6.1
      Revert "git-stash: use git rev-parse -q"
      Point "stale" 1.6.0.5 documentation from the main git documentation page

Linus Torvalds (1):
      Add backslash to list of 'crud' characters in real name

Mark Burton (1):
      git-gui: Teach start_push_anywhere_action{} to notice when remote is a mirror.

Matt McCutchen (1):
      "git diff <tree>{3,}": do not reverse order of arguments

Miklos Vajna (8):
      User's Manual: remove duplicated url at the end of Appendix B
      git-stash: use git rev-parse -q
      filter-branch: use git rev-parse -q
      lost-found: use git rev-parse -q
      pull: use git rev-parse -q
      rebase: use git rev-parse -q
      submodule: use git rev-parse -q
      http.c: use 'git_config_string' to get 'curl_http_proxy'

Nguyễn Thái Ngọc Duy (1):
      Extend index to save more flags

Paul Mackerras (3):
      gitk: Fix context menu items for generating diffs when in tree mode
      gitk: Highlight only when search type is "containing:".
      gitk: Fix bug in accessing undefined "notflag" variable

Scott Chacon (1):
      Add a built-in alias for 'stage' to the 'add' command

Thomas Rast (1):
      fetch-pack: Avoid memcpy() with src==dst

Tor Arvid Lund (1):
      git-p4: Fix bug in p4Where method.


Version v1.6.1-rc1; changes since v1.6.0.6:
-------------------------------------------

Abhijit Menon-Sen (1):
      Make cherry-pick use rerere for conflict resolution.

Alex Riesen (11):
      Extend "checkout --track" DWIM to support more cases
      Remove calculation of the longest command name from where it is not used
      Remove useless memset of static command name lists in builtin-merge.c
      Make main_cmds and other_cmds local to builtin-help.c
      Allow git help work without PATH set
      list_commands: only call git_exec_path if it is needed
      Add help.autocorrect to enable/disable autocorrecting
      Cleanup remove_path
      Fix potentially dangerous uses of mkpath and git_path
      Fix handle leak in sha1_file/unpack_objects if there were damaged object data
      Fix t4030-diff-textconv.sh

Alexander Gavrilov (58):
      git-gui: Support starting gitk from Gui Blame
      git-gui: Support passing blame to a parent commit.
      git-gui: Better positioning in Blame Parent Commit
      git-gui: Allow specifying an initial line for git gui blame.
      gitk: Add option to specify the default commit on command line
      gitk: Add menu item for calling git gui blame
      git-gui: Support resolving conflicts via the diff context menu.
      git-gui: Support calling merge tools.
      git-gui: Don't allow staging files with conflicts.
      git-gui: Support more merge tools.
      git-gui: Support conflict states _U & UT.
      git-gui: Reimplement and enhance auto-selection of diffs.
      git-gui: Make F5 reselect a diff, if an untracked file is selected.
      git-gui: Show special diffs for complex conflict cases.
      git-gui: Fix Blame Parent & Context for working copy lines.
      git-gui: Restore ability to Stage Working Copy for conflicts.
      gitk: Fix a bug in collapsing deeply nested trees
      git-gui: Add more integration options to citool.
      git-gui: Cleanup handling of the default encoding.
      git-gui: Add a menu of available encodings.
      git-gui: Allow forcing display encoding for diffs using a submenu.
      git-gui: Optimize encoding name resolution using a lookup table.
      git-gui: Support the encoding menu in gui blame.
      git-gui: Reenable staging unmerged files by clicking the icon.
      git-gui: Make Ctrl-T safe to use for conflicting files.
      git-gui: Fix the blame window shape.
      git-gui: Add a search command to the blame viewer.
      git-gui: Fix the blame viewer destroy handler.
      gitk: Enhance file encoding support
      gitk: Implement batch lookup and caching of encoding attrs
      gitk: Allow forcing branch creation if it already exists
      gitk: Fix file list context menu for merge commits
      builtin-blame: Reencode commit messages according to git-log rules.
      gitk: Allow starting gui blame for a specific line
      git-gui: Add a dialog that shows the OpenSSH public key.
      git-gui: Add a simple implementation of SSH_ASKPASS.
      Windows: Make OpenSSH properly detect tty detachment.
      gitweb: Use single implementation of export_ok check.
      gitweb: Add a per-repository authorization hook.
      gitweb: Fix mod_perl support.
      gitk: Add Return and Escape bindings to dialogs
      gitk: Make gitk dialog windows transient
      gitk: Make cherry-pick call git-citool on conflicts
      gitk: Implement a user-friendly Edit View dialog
      git-gui: Fix focus transition in the blame viewer.
      git-gui: Add the Show SSH Key item to the clone dialog.
      git-gui: Request blame metadata in utf-8.
      gitk: Add accelerators to frequently used menu commands
      gitk: Fix transient windows on Win32 and MacOS
      gitk: Fix commit encoding support
      Documentation: New GUI configuration and command-line options.
      git-gui: Implement system-wide configuration handling.
      git-gui: Fix the after callback execution in rescan.
      git-gui: Add a Tools menu for arbitrary commands.
      git-gui: Allow Tools request arguments from the user.
      git-gui: Implement automatic rescan after Tool execution.
      git-gui: Fix the search bar destruction handler.
      gitk: Avoid handling the Return key twice in Add Branch

Alexandre Julliard (9):
      git.el: Improve error handling for commits.
      git.el: Remove the env parameter in git-call-process and git-call-process-string.
      git.el: Simplify handling of merge heads in the commit log-edit buffer.
      git.el: Properly handle merge commits in git-amend-commit.
      git.el: Fix git-amend-commit to support amending an initial commit.
      git.el: Never clear the status buffer, only update the files.
      git.el: Add an insert file command.
      git.el: Add possibility to mark files directly in git-update-status-files.
      git.el: Allow to commit even if there are no marked files.

Anders Melchiorsen (2):
      wt-status: Split header generation into three functions
      wt-status: Teach how to discard changes in the working directory

Andreas Ericsson (3):
      Teach "git diff -p" to locate PHP class methods
      git commit: Reformat output somewhat
      rebase: Support preserving merges in non-interactive mode

Arjen Laarhoven (1):
      t6023-merge-file: Work around non-portable sed usage

Bert Wesarg (1):
      for-each-ref: `:short` format for `refname`

Brandon Casey (9):
      remote.c: add a function for deleting a refspec array and use it (twice)
      dir.c: Avoid c99 array initialization
      t4018-diff-funcname: test syntax of builtin xfuncname patterns
      diff.c: remove duplicate bibtex pattern introduced by merge 92bb9785
      xdiff-interface.c: strip newline (and cr) from line before pattern matching
      Replace xmalloc/memset(0) pairs with xcalloc
      t9001: use older Getopt::Long boolean prefix '--no' rather than '--no-'
      Replace calls to strbuf_init(&foo, 0) with STRBUF_INIT initializer
      t4018-diff-funcname: add objective-c xfuncname pattern to syntax test

Brian Downing (4):
      Make xdi_diff_outf interface for running xdiff_outf diffs
      Use strbuf for struct xdiff_emit_state's remainder
      Always initialize xpparam_t to 0
      Allow alternate "low-level" emit function from xdl_diff

Brian Gernhardt (2):
      format-patch: autonumber by default
      Avoid using non-portable `echo -n` in tests.

Cheng Renquan (2):
      git-remote: match usage string with the manual pages
      git-remote: add verbose mode to git remote update

Christian Couder (10):
      merge-base: teach "git merge-base" to drive underlying merge_bases_many()
      bisect: test merge base if good rev is not an ancestor of bad rev
      bisect: only check merge bases when needed
      bisect: remove "checkout_done" variable used when checking merge bases
      refs: improve comments about "reading" argument of "resolve_ref"
      bisect: fix missing "exit"
      Documentation: user-manual: add information about "git help" at the beginning
      Documentation: tutorial: add information about "git help" at the beginning
      git-gui: french translation update
      bisect: teach "skip" to accept special arguments like "A..B"

Christian Stimming (5):
      git-gui: Mark forgotten strings for translation.
      git-gui: I18n fix sentence parts into full sentences for translation again.
      git-gui: Updated German translation.
      gitk: Add untranslated error messages to translation
      git-gui: Update German translation.

Dan Hensgen (1):
      git-merge documentation: more details about resolving conflicts

Daniel Lowe (1):
      Fix non-literal format in printf-style calls

David Aguilar (3):
      git-submodule: replace duplicated code with a module_list function
      git-submodule: add "sync" command
      tests: add a testcase for "git submodule sync"

David Bryson (1):
      Use "git_config_string" to simplify "builtin-gc.c" code where "prune_expire" is set

David M. Syzdek (5):
      Build: add NO_UINTMAX_T to support ancient systems
      Add Makefile check for FreeBSD 4.9-SECURITY
      autoconf: Add link tests to each AC_CHECK_FUNC() test
      Make Pthread link flags configurable
      Add autoconf tests for pthreads

David Soria Parra (1):
      cast pid_t's to uintmax_t to improve portability

David Symonds (1):
      git-diff: Add --staged as a synonym for --cached.

Davide Libenzi (1):
      xdiff: give up scanning similar lines early

Deskin Miller (4):
      git-svn: testcase for partial rebuild
      git-svn: do a partial rebuild if rev_map is out-of-date
      git-svn: proper detection of bare repositories
      git-svn: proper detection of bare repositories

Dmitry Potapov (14):
      teach index_fd to work with pipes
      correct argument checking test for git hash-object
      correct usage help string for git-hash-object
      use parse_options() in git hash-object
      add --path option to git hash-object
      add --no-filters option to git hash-object
      mingw: remove use of _getdrive() from lstat/fstat
      add have_git_dir() function
      mingw: move common functionality to win32.h
      cygwin: Use native Win32 API for stat
      do not segfault if make_cache_entry failed
      print an error message for invalid path
      check-attr: add an internal check_attr() function
      check-attr: Add --stdin option

Dotan Barak (1):
      Use xmalloc() and friends to catch allocation failures

Eric Wong (7):
      git-svn: check error code of send_txstream
      t9124: clean up chdir usage
      git-svn: fix handling of even funkier branch names
      git-svn: don't escape tilde ('~') for http(s) URLs
      git-svn: respect i18n.commitencoding config
      git-svn: don't escape tilde ('~') for http(s) URLs
      git-svn: respect i18n.commitencoding config

Florian Ragwitz (1):
      Add git-svn branch to allow branch creation in SVN repositories

Florian Weimer (3):
      git-svn: extract base blob in generate_diff
      git-svn: Introduce SVN::Git::Editor::_chg_file_get_blob
      git-svn: Send deltas during commits

Fredrik Skolmli (1):
      Documentation: Spelling fix

Garry Dolley (1):
      Fixed some grammatical errors in git-rebase.txt documentation.

Giovanni Funchal (1):
      configure: auto detect dynamic library path switches

Giuseppe Bilotta (12):
      gitweb: ref markers link to named shortlogs
      gitweb: shortlog now also obeys $hash_parent
      gitweb: refactor input parameters parse/validation
      gitweb: parse project/action/hash_base:filename PATH_INFO
      gitweb: generate project/action/hash URLs
      gitweb: use_pathinfo filenames start with /
      gitweb: parse parent..current syntax from PATH_INFO
      gitweb: generate parent..current URLs
      gitweb: make the supported snapshot formats array global
      gitweb: retrieve snapshot format from PATH_INFO
      gitweb: embed snapshot format parameter in PATH_INFO
      git-gui: try to provide a window icon under X

Gustaf Hendeby (2):
      Update .gitignore to ignore git-help
      git-gui: Teach git gui about file type changes

Heikki Orsila (1):
      diff --dirstat-by-file: count changed files, not lines

Jakub Narębski (1):
      gitweb: Better processing format string in custom links in navbar

Jan Krüger (1):
      Introduce receive.denyDeletes

Jeff King (28):
      run-command: add pre-exec callback
      spawn pager via run_command interface
      format-patch: use default diff format even with patch options
      tests: grep portability fixes
      reformat informational commit message
      tutorial: update output of git commit
      tests: shell negation portability fix
      t4012: use test_cmp instead of cmp
      diff: unify external diff and funcname parsing code
      diff: introduce diff.<driver>.binary
      diff: add filter for converting binary to text
      document "intent to add" option to git-add
      rm: loosen safety valve for empty files
      submodule: fix some non-portable grep invocations
      diff: add missing static declaration
      document the diff driver textconv feature
      refactor userdiff textconv code
      userdiff: require explicitly allowing textconv
      only textconv regular files
      wt-status: load diff ui config
      add userdiff textconv tests
      enable textconv for diff in verbose status/commit
      t5400: expect success for denying deletion
      t5516: refactor oddball tests
      receive-pack: detect push to current branch of non-bare repo
      define empty tree sha1 as a macro
      wt-status: refactor initial commit printing
      status: show "-v" diff even for initial commit

Jim Meyering (4):
      add boolean diff.suppress-blank-empty config option
      SubmittingPatches: fix a typo
      reword --full-index description
      xdiff-interface.c: remove 10 duplicated lines

Joey Hess (2):
      git-daemon: set REMOTE_ADDR to client address
      sha1_file: avoid bogus "file exists" error message

Johan Herland (3):
      Teach "git diff -p" HTML funcname patterns
      Fix AsciiDoc errors in merge documentation
      Fix submodule sync with relative submodule URLs

Johannes Schindelin (7):
      t9700: remove useless check
      tests: Clarify dependencies between tests, 'aggregate-results' and 'clean'
      Enable parallel tests
      checkout --track: make up a sensible branch name if '-b' was omitted
      test-lib: do not remove trash_directory if called with --debug
      git wrapper: DWIM mistyped commands
      Document levenshtein.c

Johannes Sixt (11):
      Revert "Windows: Use a customized struct stat that also has the st_blocks member."
      filter-branch: Grok special characters in tag names
      Windows: git-shell can be compiled again
      compat/mingw: Support a timeout in the poll emulation if no fds are given
      git-gui: Do not automatically stage file after merge tool finishes
      git-gui: Remove space from the end of aspell's reply before processing
      git-gui: Fix switch statement in lib/merge.tcl
      git-gui: Show a round number of bytes of large untracked text files
      git-gui: Mark-up strings in show_{other,unmerged}_diff() for localization
      git-remote: list branches in vertical lists
      git-gui: Do not munge conflict marker lines in a normal diff

John Chapman (2):
      git-p4: Support purged files and optimize memory usage
      git-p4: Cache git config for performance

Jonas Fonseca (1):
      git-check-attr(1): use 'verse' for multi-line synopsis sections

Jonathan del Strother (3):
      Revert "Convert output messages in merge-recursive to past tense."
      Add OS X support to the pre-auto-gc example hook
      Teach git diff about Objective-C syntax

Joshua Williams (1):
      git-gui: Add support for calling out to the prepare-commit-msg hook

Junio C Hamano (78):
      builtin-add.c: restructure the code for maintainability
      builtin-add.c: optimize -A option and "git add ."
      imap-send.c: more style fixes
      documentation: merge-base: explain "git merge-base" with more than 2 args
      merge-base-many: add trivial tests based on the documentation
      git-merge-octopus: use (merge-base A (merge B C D E...)) for stepwise merge
      revision.c: whitespace fix
      revision traversal: show full history with merge simplification
      Topo-sort before --simplify-merges
      update-index: refuse to add working tree items beyond symlinks
      add: refuse to add working tree items beyond symlinks
      xdiff-interface: hide the whole "xdiff_emit_state" business from the caller
      revision --simplify-merges: use decoration instead of commit->util field
      index: future proof for "extended" index entries
      tests: use $TEST_DIRECTORY to refer to the t/ directory
      Start 1.6.1 cycle
      Makefile: Allow CC_LD_DYNPATH to be overriden
      revision --simplify-merges: do not leave commits unprocessed
      revision --simplify-merges: make it a no-op without pathspec
      compat: introduce on_disk_bytes()
      shell: do not play duplicated definition games to shrink the executable
      Build-in "git-shell"
      Update draft release notes for 1.6.1
      Fix "git-merge -s bogo" help text
      templates/Makefile: install is unnecessary, just use mkdir -p
      t7606: fix custom merge test
      Revert "Build-in "git-shell""
      daemon.c: minor style fixup
      checkout -f: allow ignoring unmerged paths when checking out of the index
      checkout --ours/--theirs: allow checking out one side of a conflicting merge
      xdl_fill_merge_buffer(): separate out a too deeply nested function
      xdiff-merge: optionally show conflicts in "diff3 -m" style
      xmerge.c: minimum readability fixups
      xmerge.c: "diff3 -m" style clips merge reduction level to EAGER or less
      rerere.c: use symbolic constants to keep track of parsing states
      rerere: understand "diff3 -m" style conflicts with the original
      merge.conflictstyle: choose between "merge" and "diff3 -m" styles
      git-merge-recursive: learn to honor merge.conflictstyle
      checkout -m: recreate merge when checking out of unmerged index
      diff: vary default prefix depending on what are compared
      git commit --author=$name: look $name up in existing commits
      git-add --intent-to-add (-N)
      checkout --conflict=<style>: recreate merge in a non-default style
      git-merge documentation: describe how conflict is presented
      Update draft release notes for 1.6.1
      safe_create_leading_directories(): make it about "leading" directories
      git-apply:--include=pathspec
      Update draft release notes for 1.6.1
      daemon.c: avoid setlinebuf()
      is_directory(): a generic helper function
      receive-pack: make it a builtin
      push: prepare sender to receive extended ref information from the receiver
      push: receiver end advertises refs from alternate repositories
      Fix git-diff-tree --stdin
      diff: use extended regexp to find hunk headers
      diff: fix "multiple regexp" semantics to find hunk header comment
      Update draft release notes to 1.6.1
      t5510: test "git fetch" following tags minimally
      Update draft release notes to 1.6.1
      Fix reading of cloud tags
      Update draft release notes for 1.6.1
      Fix mismerge at cdb22c4 in builtin-checkout.c
      rebase-i-p: minimum fix to obvious issues
      git-rebase--interactive.sh: comparision with == is bashism
      receive-pack: fix "borrowing from alternate object store" implementation
      compat/cygwin.c: make runtime detection of lstat/stat lessor impact
      Stop using compat/regex.c on platforms with working regexp library
      Update draft release notes to 1.6.1
      Update draft release notes to 1.6.1
      Update draft release notes to 1.6.1
      t5303: work around printf breakage in dash
      t5303: fix printf format string for portability
      git.html: Update the links to stale versions
      Update draft release notes to 1.6.1
      builtin-remote.c: plug a small memory leak in get_one_remote_for_updates()
      send-email: do not reverse the command line arguments
      Include git-gui--askpass in git-gui RPM package
      GIT 1.6.1-rc1

Karl Wiberg (4):
      Refactoring: Split up diff_tree_stdin
      diff-tree: Note that the commit ID is printed with --stdin
      Teach git diff-tree --stdin to diff trees
      Add test for diff-tree --stdin with two trees

Kirill Smelkov (1):
      Teach "git diff -p" Python funcname patterns

Lee Marlow (2):
      bash completion: Add 'workflows' to 'git help'
      workflows documentation: fix link to git-request-pull[1]

Linus Torvalds (8):
      date/time: do not get confused by fractional seconds
      Add a 'source' decorator for commits
      revision: make tree comparison functions take commits rather than trees
      Make '--decorate' set an explicit 'show_decorations' flag
      revision traversal: '--simplify-by-decoration'
      Add cache preload facility
      Fix machine-parseability of 'git log --source'
      Fix index preloading for racy dirty case

Marcel Koeppen (1):
      t9129-git-svn-i18n-commitencoding: Make compare_svn_head_with() compatible with OSX sed

Marcus Griep (2):
      count-objects: Add total pack size to verbose output
      Update t/.gitignore to ignore all trash directories

Marek Zawirski (1):
      Make push more verbose about illegal combination of options

Mark Burton (2):
      Documentation: rev-list-options.txt: added --branches, --tags & --remotes.
      git-commit.txt - mention that files listed on the command line must be known to git.

Mark Levedahl (5):
      git-submodule - Add 'foreach' subcommand
      git-submodule.sh - Remove trailing / from URL if found
      git-submodule.sh - Remove trailing / from URL if found
      git-submodule - Use "get_default_remote" from git-parse-remote
      compat/cygwin.c - Use cygwin's stat if core.filemode == true

Markus Heidelberg (1):
      Makefile: add install-man rules (quick and normal)

Marten Svanfeldt (dev) (2):
      Git.pm: Make _temp_cache use the repository directory
      git-svn: Update git-svn to use the ability to place temporary files within repository directory

Matt McCutchen (2):
      "git diff <tree>{3,}": do not reverse order of arguments
      git-merge-recursive: honor merge.conflictstyle once again

Matthias Kestenholz (1):
      bash-completion: Add all submodule subcommands to the completion list

Michael J Gruber (3):
      allow installation of man and html doc from the man and html branches
      separate build targets for man and html documentation
      make prune report removed objects on -v

Michael Witten (9):
      Docs: send-email's usage text and man page mention same options
      Docs: send-email usage text much sexier
      Docs: send-email: Man page option ordering
      send-email: change --no-validate to boolean --[no-]validate
      Docs: send-email: --chain_reply_to -> --[no-]chain-reply-to
      Docs: send-email: Remove unnecessary config variable description
      Docs: send-email: Create logical groupings for --help text
      Docs: send-email: Create logical groupings for man text
      send-email: signedoffcc -> signedoffbycc, but handle both

Michele Ballabio (1):
      git gui: update Italian translation

Mikael Magnusson (1):
      Correct output of git-count-objects.

Mike Ralphson (1):
      gitweb: Sort the list of forks on the summary page by age

Miklos Vajna (36):
      builtin-help: make some internal functions available to other builtins
      builtin-merge: allow using a custom strategy
      Add a new test for using a custom merge strategy
      Add a second testcase for handling invalid strategies in git-merge
      builtin-help: always load_command_list() in cmd_help()
      Builtin git-help.
      Split out merge_recursive() to merge-recursive.c
      merge-recursive: introduce merge_options
      builtin-merge: avoid run_command_v_opt() for recursive and subtree
      cherry-pick/revert: make direct internal call to merge_tree()
      merge-recursive: move call_depth to struct merge_options
      merge-recursive: get rid of the index_only global variable
      merge-recursive: move the global obuf to struct merge_options
      merge-recursive: move current_{file,directory}_set to struct merge_options
      merge-recursive: get rid of virtual_id
      builtin-merge: release the lockfile in try_merge_strategy()
      commit_tree(): add a new author parameter
      builtin-commit: use commit_tree()
      t7603: add new testcases to ensure builtin-commit uses reduce_heads()
      builtin-merge: refresh the index before calling a strategy
      builtin-commit: use reduce_heads() only when appropriate
      Cleanup in sha1_file.c::cache_or_unpack_entry()
      Implement git clone -v
      Add Linux PPC support to the pre-auto-gc example hook
      parse-opt: migrate builtin-checkout-index.
      Implement git remote rename
      remote: add a new 'origin' variable to the struct
      git-remote rename: migrate from remotes/ and branches/
      git-remote: document the migration feature of the rename subcommand
      Update Hungarian translation. 100% completed.
      builtin-branch: use strbuf in delete_branches()
      builtin-branch: use strbuf in fill_tracking_info()
      builtin-branch: use strbuf in rename_branch()
      builtin-clone: use strbuf in guess_dir_name()
      builtin-clone: use strbuf in clone_local() and copy_or_link_directory()
      builtin_clone: use strbuf in cmd_clone()

Nanako Shiraishi (22):
      t/t91XX-svn: start removing use of "git-" from these tests
      t/t91XX git-svn tests: run "git svn" not "git-svn"
      t9200: use "git cvsexportcommit" without dash
      t9300, t9301: use "git fast-import/fast-export" without dash
      t9700: use "git config" without dash
      tests: use "git foo" without dash in strings
      t9101: use "git hash-object" without dash
      Install git-cvsserver in $(bindir)
      remote.c: make free_ref(), parse_push_refspec() and free_refspecs() static.
      graph.c: make many functions static
      usage.c: remove unused functions
      Add contrib/rerere-train script
      dir.c: make dir_add_name() and dir_add_ignored() static
      run-command.c: remove run_command_v_opt_cd()
      config.c: make git_parse_long() static
      commit.c: make read_graft_file() static
      archive.c: make archiver static
      rebase --no-verify
      rebase: Document --no-verify option to bypass pre-rebase hook
      Document "git log --source"
      Document "git log --simplify-by-decoration"
      git-gui: update Japanese translation

Neil Roberts (1):
      config.mak.in: Pass on LDFLAGS from configure

Nicolas Pitre (18):
      sha1write: don't copy full sized buffers
      pack-objects: don't include missing preferred base objects
      t5300: improve SHA1 collision test
      fix openssl headers conflicting with custom SHA1 implementations
      index-pack: rationalize delta resolution code
      index-pack: smarter memory usage during delta resolution
      fix multiple issues in index-pack
      improve index-pack tests
      index-pack: don't leak leaf delta result
      close another possibility for propagating pack corruption
      better validation on delta base object offsets
      make unpack_object_header() non fatal
      make packed_object_info() resilient to pack corruptions
      make check_object() resilient to pack corruptions
      make find_pack_revindex() aware of the nasty world
      pack-objects: allow "fixing" a corrupted pack without a full repack
      extend test coverage for latest pack corruption resilience improvements
      pack-objects: don't leak pack window reference when splitting packs

Paolo Bonzini (1):
      provide more errors for the "merge into empty head" case

Paul Mackerras (17):
      gitk: Use <Button-2> for context menus on OSX
      gitk: Clean up file encoding code and add enable/disable option
      gitk: Fix binding for <Return> in sha1 entry field
      gitk: New way of constructing menus that allows for Alt+letter accelerators
      gitk: Regenerate .po files
      gitk: Turn short SHA1 names into links too
      gitk: Fix some off-by-one errors in computing which line to blame
      gitk: Add a menu item to show where a given line comes from
      gitk: Make the background color of marked lines configurable
      gitk: Unify handling of merge diffs with normal 2-way diffs
      gitk: Make "show origin of this line" work on fake commits
      gitk: Cope with unmerged files in local changes
      gitk: Improve cherry-pick error handling
      gitk: Fix linehtag undefined error with file highlighting
      gitk: Index line[hnd]tag arrays by id rather than row number
      gitk: Fix switch statement in parseviewargs
      gitk: Show local changes properly when we have a path limit

Paul Talacko (1):
      git-svn: set auto_props when renaming files

Pete Harlan (2):
      contrib/hooks/post-receive-email: Put rev display in separate function
      contrib/hooks/post-receive-email: Make revision display configurable

Peter Krefting (1):
      Updated Swedish translation (514t0f0u).

Peter Valdemar Mørch (2):
      Teach git log --check to return an appropriate exit code
      Teach git log --exit-code to return an appropriate exit code

Petr Baudis (22):
      git-web--browse: Support for using /bin/start on MinGW
      git-gui: Clarify the Remote -> Delete... action
      git-gui: Squash populate_{push,fetch}_menu to populate_remotes_menu
      git-gui: Add support for adding remotes
      git-gui: Add support for removing remotes
      git-gui: mkdir -p when initializing new remote repository
      git-gui: Use git web--browser for web browsing
      git-gui: Add Explore Working Copy to the Repository menu
      git-gui: gui.autoexplore makes explorer to pop up automatically after picking
      git-gui: Avoid using the term URL when specifying repositories
      git-gui: Make input boxes in init/clone/open dialogs consistent
      git-gui: Fix removing non-pushable remotes
      git-gui: Fix fetching from remotes when adding them
      gitweb: Clean-up sorting of project list
      gitweb: Quote non-displayable characters in hex, not octal
      config.c: Tolerate UTF8 BOM at the beginning of config file
      gitweb: Identify all summary metadata table rows
      gitweb: Add support for extending the action bar with custom links
      gitweb: Support for tag clouds
      gitweb: Make the by_tag filter delve in forks as well
      gitweb: Support for simple project search form
      Do not rename read-only files during a push

Pierre Habouzit (8):
      Enable threaded delta search on *BSD and Linux.
      parse-opt: migrate fmt-merge-msg.
      parse-opt: migrate git-merge-base.
      parse-opt: migrate builtin-merge-file.
      git send-email: make the message file name more specific.
      git send-email: interpret unknown files as revision lists
      git send-email: add --annotate option
      git send-email: ask less questions when --compose is used.

Pieter de Bie (3):
      builtin-reflog: Allow reflog expire to name partial ref
      builtin-commit.c: show on which branch a commit was added
      git wrapper: also use aliases to correct mistyped commands

Quy Tonthat (1):
      Update RPM spec for the new location of git-cvsserver.

Ralf Wildenhues (2):
      Correct typos in RelNotes-1.6.1
      Fix typos in the documentation.

Raphael Zimmerer (1):
      git grep: Add "-z/--null" option as in GNU's grep.

René Scharfe (15):
      log: add load_ref_decorations()
      move load_ref_decorations() to log-tree.c and export it
      add '%d' pretty format specifier to show decoration
      add alloc_ref_with_prefix()
      use alloc_ref_from_str() everywhere
      make alloc_ref_from_str() the new alloc_ref()
      blame: inline get_patch()
      add xdi_diff_hunks() for callers that only need hunk lengths
      blame: use xdi_diff_hunks(), get rid of struct patch
      add strbuf_expand_dict_cb(), a helper for simple cases
      merge-recursive: use strbuf_expand() instead of interpolate()
      daemon: use strbuf_expand() instead of interpolate()
      daemon: inline fill_in_extra_table_entries()
      daemon: deglobalize variable 'directory'
      remove the unused files interpolate.c and interpolate.h

Richard Quirk (1):
      gitk: Bind Key-Return to create on new branch dialog

Robert Shearman (4):
      git-imap-send: Allow the program to be run from subdirectories of a git tree
      git-imap-send: Support SSL
      imap-send.c: style fixes
      Documentation: Improve documentation for git-imap-send(1)

Romain Francoise (1):
      builtin-help: fallback to GIT_MAN_VIEWER before man

SZEDER Gábor (3):
      bash: use for-each-ref format 'refname:short'
      remove vim syntax highlighting in favor of upstream
      bash: complete full refs

Samuel Tardieu (1):
      Fix deletion of last character in levenshtein distance

Santi Béjar (1):
      rev-list documentation: clarify the two parts of history simplification

Shawn O. Pearce (7):
      Make reflog query '@{1219188291}' act as '@{2008.8.19.16:24:51.-0700}'
      git-gui: Hide commit related UI during citool --nocommit
      git-gui: Use gitattribute "encoding" for file content display
      git-gui: Assume `blame --incremental` output is in UTF-8
      git-gui: Show/hide "Sign Off" based on nocommitmsg option
      describe: Make --tags and --all match lightweight tags more often
      Update the po template

Simon Hausmann (1):
      Make it possible to abort the submission of a change to Perforce

Stephan Beyer (2):
      Fix commit_tree() buffer leak
      merge-recursive.c: Add more generic merge_recursive_generic()

Stephen Haberman (8):
      rebase--interactive: fix parent rewriting for dropped commits
      rebase-i-p: test to exclude commits from todo based on its parents
      rebase-i-p: use HEAD for updating the ref instead of mapping OLDHEAD
      rebase-i-p: delay saving current-commit to REWRITTEN if squashing
      rebase-i-p: fix 'no squashing merges' tripping up non-merges
      rebase-i-p: only list commits that require rewriting in todo
      rebase-i-p: do not include non-first-parent commits touching UPSTREAM
      rebase-i-p: if todo was reordered use HEAD as the rewritten parent

Stephen R. van den Berg (4):
      git-daemon: call logerror() instead of error()
      git-daemon: use LOG_PID, simplify logging code
      git-daemon: Simplify dead-children reaping logic
      git-daemon: rewrite kindergarden, new option --max-connections

Teemu Likonen (1):
      bash completion: Add --[no-]validate to "git send-email"

Thomas Rast (19):
      filter-branch: Extend test to show rewriting bug
      filter-branch: fix ref rewriting with --subdirectory-filter
      filter-branch: use --simplify-merges
      Documentation: rev-list-options: move --simplify-merges documentation
      rev-list: fix --reverse interaction with --parents
      t6013: replace use of 'tac' with equivalent Perl
      git svn: catch lack of upstream info for dcommit earlier
      git svn info: tests: let 'init' test run with SVN 1.5
      git svn info: tests: do not use set -e
      git svn info: tests: use test_cmp instead of git-diff
      git svn info: tests: fix ptouch argument order in setup
      git svn info: make info relative to the current directory
      git svn info: always quote URLs in 'info' output
      git-svn: match SVN 1.5 behaviour of info' on unknown item
      git-svn: fix 'info' tests for unknown items
      Documentation: new upstream rebase recovery section in git-rebase
      Documentation: Refer to git-rebase(1) to warn against rewriting
      Documentation: remove stale howto/rebase-and-edit.txt
      Documentation: add manpage about workflows

Tom Preston-Werner (1):
      connect.c: add a way for git-daemon to pass an error back to client

Tommi Virtanen (1):
      Install git-shell in bindir, too

Tor Arvid Lund (1):
      git-p4: Fix checkout bug when using --import-local.

Trent Piepho (1):
      send-email: Fix Pine address book parsing

Tuncer Ayaz (2):
      Teach/Fix pull/fetch -q/-v options
      Retain multiple -q/-v occurrences in git pull


Version v1.6.0.6; changes since v1.6.0.5:
-----------------------------------------

David Aguilar (1):
      git-mergetool: properly handle "git mergetool -- filename"

Deskin Miller (1):
      git-svn: Make following parents atomic

Jim Meyering (1):
      git-config.txt: fix a typo

Johannes Schindelin (2):
      fast-import: close pack before unlinking it
      fast-export: deal with tag objects that do not have a tagger

Junio C Hamano (6):
      work around Python warnings from AsciiDoc
      git-show: do not segfault when showing a bad tag
      pager: do not dup2 stderr if it is already redirected
      gitweb: do not run "git diff" that is Porcelain
      GIT 1.5.4.7
      fast-import: make tagger information optional

Linus Torvalds (1):
      fsck: reduce stack footprint

Markus Heidelberg (1):
      Documentation: fix typos, grammar, asciidoc syntax

Miklos Vajna (1):
      SubmittingPatches: mention the usage of real name in Signed-off-by: lines

Nicolas Pitre (1):
      make sure packs to be replaced are closed beforehand

Wu Fengguang (1):
      git-send-email: handle email address with quoted comma


Version v1.6.0.5; changes since v1.6.0.4:
-----------------------------------------

Alexandre Julliard (2):
      checkout: Don't crash when switching away from an invalid branch.
      git-submodule: Avoid printing a spurious message.

Brandon Casey (12):
      t7700: demonstrate mishandling of objects in packs with a .keep file
      packed_git: convert pack_local flag into a bitfield and add pack_keep
      pack-objects: new option --honor-pack-keep
      repack: don't repack local objects in packs with .keep file
      repack: do not fall back to incremental repacking with [-a|-A]
      builtin-gc.c: use new pack_keep bitfield to detect .keep file existence
      t7700: demonstrate mishandling of loose objects in an alternate ODB
      sha1_file.c: split has_loose_object() into local and non-local counterparts
      pack-objects: extend --local to mean ignore non-local loose objects too
      t7700: test that 'repack -a' packs alternate packed objects
      repack: only unpack-unreachable if we are deleting redundant packs
      revision.c: use proper data type in call to sizeof() within xrealloc

Bryan Drewery (1):
      Fix misleading wording for git-cherry-pick

Christian Couder (3):
      Documentation: rev-list: change a few instances of "git-cmd" to "git cmd"
      Documentation: bisect: change a few instances of "git-cmd" to "git cmd"
      Documentation: fix links to "everyday.html"

Daniel Lowe (1):
      Fix non-literal format in printf-style calls

Davide Libenzi (1):
      xdiff: give up scanning similar lines early

Jakub Narębski (1):
      gitweb: Make project specific override for 'grep' feature work

Jan Krüger (1):
      Documentation: git-svn: fix example for centralized SVN clone

Jeff King (2):
      commit: Fix stripping of patch in verbose mode.
      tag: delete TAG_EDITMSG only on successful tag

Joey Hess (1):
      sha1_file: avoid bogus "file exists" error message

Johannes Schindelin (1):
      fast-export: use an unsorted string list for extra_refs

Johannes Sixt (1):
      compat/mingw.c: Teach mingw_rename() to replace read-only files

Junio C Hamano (8):
      Makefile: help people who run 'make check' by mistake
      checkout: Fix "initial checkout" detection
      Start 1.6.0.5 cycle
      builtin-ls-files.c: coding style fix.
      Teach ls-files --with-tree=<tree> to work with options other than -c
      Teach "git diff" to honour --[no-]ext-diff
      Update draft release notes to 1.6.0.5
      GIT 1.6.0.5

Linus Torvalds (1):
      date/time: do not get confused by fractional seconds

Martin Koegler (1):
      git push: Interpret $GIT_DIR/branches in a Cogito compatible way

Matt Kraai (1):
      Remove the period after the git-check-attr summary

Matt McCutchen (3):
      config.txt: alphabetize configuration sections
      git checkout: don't warn about unborn branch if -f is already passed
      "git diff <tree>{3,}": do not reverse order of arguments

Miklos Vajna (3):
      Add new testcase to show fast-export does not always exports all tags
      User's Manual: remove duplicated url at the end of Appendix B
      http.c: use 'git_config_string' to get 'curl_http_proxy'

Nguyễn Thái Ngọc Duy (1):
      generate-cmdlist.sh: avoid selecting synopsis at wrong place

Nicolas Pitre (1):
      Fix pack.packSizeLimit and --max-pack-size handling

Pete Wyckoff (1):
      git-p4: fix keyword-expansion regex

Ralf Wildenhues (1):
      Fix typos in the documentation.

SZEDER Gábor (2):
      bash: remove dashed command leftovers
      bash: offer refs instead of filenames for 'git revert'

Sam Vilain (1):
      sha1_file.c: resolve confusion EACCES vs EPERM

Samuel Tardieu (2):
      tag: Check that options are only allowed in the appropriate mode
      tag: Add more tests about mixing incompatible modes and options

Stefan Naewe (2):
      git ls-remote: make usage string match manpage
      request-pull: make usage string match manpage

Thomas Rast (1):
      fetch-pack: Avoid memcpy() with src==dst


Version v1.6.0.4; changes since v1.6.0.3:
-----------------------------------------

Alex Riesen (10):
      Add mksnpath which allows you to specify the output buffer
      Fix mkpath abuse in dwim_ref and dwim_log of sha1_name.c
      Fix potentially dangerous uses of mkpath and git_path
      Plug a memleak in builtin-revert
      Add git_snpath: a .git path formatting routine with output buffer
      Fix potentially dangerous use of git_path in ref.c
      git_pathdup: returns xstrdup-ed copy of the formatted path
      Use git_pathdup instead of xstrdup(git_path(...))
      Add --verbose|-v to test-chmtime
      Use test-chmtime -v instead of perl in t5000 to get mtime of a file

Charles Bailey (1):
      git-archive: work in bare repos

Christian Jaeger (1):
      Git.pm: do not break inheritance

Clemens Buchacher (2):
      do not force write of packed refs
      push: fix local refs update if already up-to-date

Deskin Miller (2):
      git-svn: change dashed git-config to git config
      git-svn: change dashed git-commit-tree to git commit-tree

Gustaf Hendeby (1):
      git-gui: Help identify aspell version on Windows too

Jakub Narębski (1):
      Documentation/gitattributes: Add subsection header for each attribute

Jan Krüger (1):
      Documentation: clarify information about 'ident' attribute

Jeff King (5):
      refactor handling of "other" files in ls-files and status
      correct cache_entry allocation
      pack-objects: avoid reading uninitalized data
      fix overlapping memcpy in normalize_absolute_path
      send-pack: do not send out single-level refs such as refs/stash

Johannes Schindelin (1):
      Fix fetch/pull when run without --update-head-ok

Jonas Fonseca (1):
      asciidoc: add minor workaround to add an empty line after code blocks

Junio C Hamano (9):
      pull: allow "git pull origin $something:$current_branch" into an unborn branch
      Fix "checkout --track -b newbranch" on detached HEAD
      reset --hard/read-tree --reset -u: remove unmerged new paths
      demonstrate breakage of detached checkout with symbolic link HEAD
      Enhance hold_lock_file_for_{update,append}() API
      Start 1.6.0.4 cycle
      Update draft 1.6.0.4 release notes
      format-patch documentation: mention the special case of showing a single commit
      GIT 1.6.0.4

Linus Torvalds (1):
      Add file delete/create info when we overflow rename_limit

Markus Heidelberg (1):
      bash completion: add doubledash to "git show"

Mikael Magnusson (1):
      Document that git-log takes --all-match.

Miklos Vajna (5):
      Fix git branch -m for symrefs.
      rename_ref(): handle the case when the reflog of a ref does not exist
      Fix git update-ref --no-deref -d.
      git branch -m: forbid renaming of a symref
      update-ref --no-deref -d: handle the case when the pointed ref is packed

Nanako Shiraishi (1):
      Install git-cvsserver in $(bindir)

Pierre Habouzit (1):
      git send-email: avoid leaking directory file descriptors.

Quy Tonthat (1):
      Update RPM spec for the new location of git-cvsserver.

Thomas Rast (1):
      add -p: warn if only binary changes present

Tom Preston-Werner (1):
      add instructions on how to send patches to the mailing list with Gmail

Tommi Virtanen (1):
      Install git-shell in bindir, too

Yann Dirson (1):
      Add reference for status letters in documentation.


Version v1.6.0.3; changes since v1.6.0.2:
-----------------------------------------

Abhijit Bhopatkar (1):
      Documentation: Clarify '--signoff' for git-commit

Alec Berryman (2):
      git-svn: factor out svnserve test code for later use
      git-svn: Always create a new RA when calling do_switch for svn://

Alex Riesen (3):
      Remove empty directories in recursive merge
      Add remove_path: a function to remove as much as possible of a path
      Use remove_path from dir.c instead of own implementation

Alexander Gavrilov (1):
      builtin-blame: Fix blame -C -C with submodules.

Björn Steinbrink (1):
      force_object_loose: Fix memory leak

Brandon Casey (14):
      t9700/test.pl: avoid bareword 'STDERR' in 3-argument open()
      t9700/test.pl: remove File::Temp requirement
      diff.c: return pattern entry pointer rather than just the hunk header pattern
      diff.c: associate a flag with each pattern and use it for compiling regex
      diff.*.xfuncname which uses "extended" regex's for hunk header selection
      t4018-diff-funcname: test syntax of builtin xfuncname patterns
      builtin-prune.c: prune temporary packs in <object_dir>/pack directory
      git-stash.sh: don't default to refs/stash if invalid ref supplied
      builtin-merge.c: allocate correct amount of memory
      git-stash.sh: fix flawed fix of invalid ref handling (commit da65e7c1)
      remote.c: correct the check for a leading '/' in a remote name
      t4018-diff-funcname: rework negated last expression test
      t4018-diff-funcname: demonstrate end of line funcname matching flaw
      xdiff-interface.c: strip newline (and cr) from line before pattern matching

Charles Bailey (2):
      Add new test to demonstrate git archive core.autocrlf inconsistency
      Make git archive respect core.autocrlf when creating zip format archives

Chris Frey (1):
      Documentation: clarify the details of overriding LESS via core.pager

Dan McGee (1):
      contrib: update packinfo.pl to not use dashed commands

Daniel Barkalow (1):
      Check early that a new branch is new and valid

David Soria Parra (1):
      Solaris: Use OLD_ICONV to avoid compile warnings

Deskin Miller (2):
      maint: check return of split_cmdline to avoid bad config strings
      git init: --bare/--shared overrides system/global config

Dmitry Potapov (4):
      git-rebase-interactive: do not squash commits on abort
      git-rebase--interactive: auto amend only edited commit
      make prefix_path() never return NULL
      do not segfault if make_cache_entry failed

Eric Raible (1):
      completion: git commit should list --interactive

Eric Wong (1):
      git-svn: fix handling of even funkier branch names

Fabrizio Chiarello (1):
      builtin-clone: fix typo

Garry Dolley (1):
      Clarified gitattributes documentation regarding custom hunk header.

Giuseppe Bilotta (1):
      gitweb: remove PATH_INFO from $my_url and $my_uri

Heikki Orsila (2):
      Start conforming code to "git subcmd" style part 3
      Cosmetical command name fix

Imre Deak (1):
      builtin-apply: fix typo leading to stack corruption

Jakub Narębski (2):
      gitweb: Fix two 'uninitialized value' warnings in git_tree()
      gitweb: Add path_info tests to t/t9500-gitweb-standalone-no-errors.sh

Jeff King (3):
      Makefile: do not set NEEDS_LIBICONV for Solaris 8
      git apply --directory broken for new files
      tests: shell negation portability fix

Joey Hess (1):
      gitweb: avoid warnings for commits without body

Johan Herland (2):
      for-each-ref: Fix --format=%(subject) for log message without newlines
      Use strchrnul() instead of strchr() plus manual workaround

Johannes Schindelin (2):
      git rm: refresh index before up-to-date check
      rebase -i: do not fail when there is no commit to cherry-pick

Johannes Sixt (2):
      git-remote: do not use user input in a printf format string
      git-push.txt: Describe --repo option in more detail

Jonas Fonseca (2):
      checkout: Do not show local changes when in quiet mode
      git-check-attr(1): add output and example sections

Junio C Hamano (15):
      discard_cache: reset lazy name_hash bit
      diff Porcelain: do not disable auto index refreshing on -C -C
      diff --quiet: make it synonym to --exit-code >/dev/null
      Don't verify host name in SSL certs when GIT_SSL_NO_VERIFY is set
      Fix permission bits on sources checked out with an overtight umask
      checkout: do not lose staged removal
      diff/diff-files: do not use --cc too aggressively
      Start draft release notes for 1.6.0.3
      diff: use extended regexp to find hunk headers
      diff hunk pattern: fix misconverted "\{" tex macro introducers
      Update draft release notes to 1.6.0.3
      diff(1): clarify what "T"ypechange status means
      Hopefully the final draft release notes update before 1.6.0.3
      Fix testcase failure when extended attributes are in use
      GIT 1.6.0.3

Linus Torvalds (1):
      fix bogus "diff --git" header from "diff --no-index"

Luc Heinrich (1):
      git-svn: call 'fatal' correctly in set-tree

Matt McCutchen (1):
      t1301-shared-repo.sh: don't let a default ACL interfere with the test

Michael J Gruber (1):
      make "git remote" report multiple URLs

Michael Prokop (1):
      Replace svn.foo.org with svn.example.com in git-svn docs (RFC 2606)

Mikael Magnusson (4):
      Typo "bogos" in format-patch error message.
      git-repack uses --no-repack-object, not --no-repack-delta.
      Fix a few typos in relnotes
      Typo "does not exists" when git remote update remote.

Miklos Vajna (2):
      test-lib: fix color reset in say_color()
      Add testcase to ensure merging an early part of a branch is done properly

Nanako Shiraishi (2):
      docs: describe pre-rebase hook
      Teach rebase -i to honor pre-rebase hook

Nicolas Pitre (2):
      fix pread()'s short read in index-pack
      rehabilitate 'git index-pack' inside the object store

Petr Baudis (1):
      Do not perform cross-directory renames when creating packs

Ping Yin (1):
      git-submodule: Fix "Unable to checkout" for the initial 'update'

Rafael Garcia-Suarez (1):
      Clarify commit error message for unmerged files

SZEDER Gábor (5):
      t0024: add executable permission
      Documentation: remove '\' in front of short options
      rebase -i: proper prepare-commit-msg hook argument when squashing
      rebase -i: remove leftover debugging
      bash: remove fetch, push, pull dashed form leftovers

Samuel Tardieu (1):
      Do not use errno when pread() returns 0

Shawn O. Pearce (3):
      Update release notes for 1.6.0.3
      Update release notes for 1.6.0.3
      test-lib: fix broken printf

Stephen Haberman (1):
      Clarify how the user can satisfy stash's 'dirty state' check.

Thomas Rast (1):
      sha1_file: link() returns -1 on failure, not errno

Todd Zullinger (1):
      Use dashless git commands in setgitperms.perl

Tuncer Ayaz (1):
      Fix fetch/clone --quiet when stdout is connected

Yann Dirson (1):
      Bust the ghost of long-defunct diffcore-pathspec.

martin f. krafft (1):
      Improve git-log documentation wrt file filters


Version v1.6.0.2; changes since v1.6.0.1:
-----------------------------------------

Alex Riesen (1):
      Fix use of hardlinks in "make install"

Alexander Gavrilov (1):
      git-gui: Fix string escaping in po2msg.sh

Alexandre Bourget (2):
      git-gui: Update french translation
      git-gui: update all remaining translations to French.

Andreas Färber (1):
      Makefile: always provide a fallback when hardlinks fail

Arjen Laarhoven (1):
      Use compatibility regex library for OSX/Darwin

Ask Bjørn Hansen (1):
      Document sendemail.envelopesender configuration

Björn Steinbrink (1):
      for-each-ref: Allow a trailing slash in the patterns

Clemens Buchacher (2):
      git gui: show diffs with a minimum of 1 context line
      clone: fix creation of explicitly named target directory

Gustaf Hendeby (1):
      Document clarification: gitmodules, gitattributes

Heikki Orsila (3):
      Start conforming code to "git subcmd" style
      Improve documentation for --dirstat diff option
      Start conforming code to "git subcmd" style part 2

Jeff King (4):
      Fix "git log -i --grep"
      pretty=format: respect date format options
      checkout: fix message when leaving detached HEAD
      Use compatibility regex library also on FreeBSD

Johan Herland (1):
      Bring local clone's origin URL in line with that of a remote clone

Johannes Sixt (1):
      Use compatibility regex library also on AIX

Jonas Fonseca (1):
      Fix passwd(5) ref and reflect that commit doens't use commit-tree

Junio C Hamano (17):
      ctype.c: protect tiny C preprocessor constants
      shell: do not play duplicated definition games to shrink the executable
      Fix example in git-name-rev documentation
      git-apply: Loosen "match_beginning" logic
      checkout: do not check out unmerged higher stages randomly
      gitattributes: -crlf is not binary
      diff: Help "less" hide ^M from the output
      'git foo' program identifies itself without dash in die() messages
      Start 1.6.0.2 maintenance cycle
      diff --cumulative is a sub-option of --dirstat
      log --author/--committer: really match only with name part
      "blame -c" should be compatible with "annotate"
      Mention the fact that 'git annotate' is only for backward compatibility.
      stash: refresh the index before deciding if the work tree is dirty
      Update draft release notes for 1.6.0.2
      Update draft release notes for 1.6.0.2
      GIT 1.6.0.2

Linus Torvalds (2):
      index-pack: be careful after fixing up the header/footer
      Fix '--dirstat' with cross-directory renaming

Marcus Griep (2):
      Git.pm: Use File::Temp->tempfile instead of ->new
      git-svn: Fixes my() parameter list syntax error in pre-5.8 Perl

Miklos Vajna (2):
      Makefile: add merge_recursive.h to LIB_H
      t7501: always use test_cmp instead of diff

Nanako Shiraishi (4):
      tests: use "git xyzzy" form (t0000 - t3599)
      tests: use "git xyzzy" form (t3600 - t6999)
      tests: use "git xyzzy" form (t7000 - t7199)
      tests: use "git xyzzy" form (t7200 - t9001)

Nguyễn Thái Ngọc Duy (6):
      index-pack: setup git repository
      diff*: fix worktree setup
      grep: fix worktree setup
      read-tree: setup worktree if merge is required
      update-index: fix worktree setup
      setup_git_directory(): fix move to worktree toplevel directory

Nicolas Pitre (7):
      discard revindex data when pack list changes
      pack-objects: improve returned information from write_one()
      improve reliability of fixup_pack_header_footer()
      pack-objects: use fixup_pack_header_footer()'s validation mode
      index-pack: use fixup_pack_header_footer()'s validation mode
      fixup_pack_header_footer(): use nicely aligned buffer sizes
      improve handling of sideband message display

Paolo Bonzini (1):
      make git-shell paranoid about closed stdin/stdout/stderr

Paolo Ciarrocchi (1):
      tutorial: gentler illustration of Alice/Bob workflow using gitk

Petr Baudis (1):
      bash completion: Hide more plumbing commands

Ralf Wildenhues (1):
      Fix some manual typos.

Ramsay Jones (2):
      Fix a warning (on cygwin) to allow -Werror
      Suppress some bash redirection error messages

SZEDER Gábor (3):
      Documentation: fix reference to a for-each-ref option
      Documentation: fix disappeared lines in 'git stash' manpage
      Documentation: minor cleanup in a use case in 'git stash' manual

Shawn O. Pearce (2):
      pack-objects: Allow missing base objects when creating thin packs
      git-gui: Fix diff parsing for lines starting with "--" or "++"

Teemu Likonen (1):
      config.txt: Add missing colons after option name

Yann Dirson (1):
      Document gitk --argscmd flag.


Version v1.6.0.1; changes since v1.6.0:
---------------------------------------

Alexander Gavrilov (1):
      Respect core.autocrlf in combined diff

Brandon Casey (3):
      t1002-read-tree-m-u-2way.sh: use 'git diff -U0' rather than 'diff -U0'
      revision.h: make show_early_output an extern which is defined in revision.c
      compat/snprintf.c: handle snprintf's that always return the # chars transmitted

Don Zickus (1):
      mailinfo: re-fix MIME multipart boundary parsing

Eric Raible (1):
      Completion: add missing '=' for 'diff --diff-filter'

Eric Wong (1):
      git-svn: fix dcommit to urls with embedded usernames

Jeff King (2):
      mailinfo: avoid violating strbuf assertion
      decorate: allow const objects to be decorated

Jim Meyering (2):
      git format-patch: avoid underrun when format.headers is empty or all NLs
      remote.c: remove useless if-before-free test

Johannes Sixt (1):
      Install templates with the user and group of the installing personality

Jonathan Nieder (2):
      Documentation: clarify pager.<cmd> configuration
      Documentation: clarify pager configuration

Junio C Hamano (9):
      Start 1.6.0.X maintenance series
      diff --check: do not get confused by new blank lines in the middle
      for-each-ref: cope with tags with incomplete lines
      completion: find out supported merge strategies correctly
      "git-merge": allow fast-forwarding in a stat-dirty tree
      Update draft release notes for 1.6.0.1
      unpack_trees(): protect the handcrafted in-core index from read_cache()
      merge: fix numerus bugs around "trivial merge" area
      GIT 1.6.0.1

Miklos Vajna (2):
      Fix 'git help help'
      Makefile: enable SNPRINTF_RETURNS_BOGUS for HP-UX

Robert Schiele (1):
      adapt git-cvsserver manpage to dash-free syntax

Simon Hausmann (1):
      Clean up the git-p4 documentation

Tarmigan Casebolt (1):
      Add hints to revert documentation about other ways to undo changes

Tor Arvid Lund (1):
      git-p4: Fix one-liner in p4_write_pipe function.


Version v1.6.0; changes since v1.6.0-rc3:
-----------------------------------------

Alex Riesen (1):
      Fix t3700 on filesystems which do not support question marks in names

Alexander Gavrilov (1):
      gitk: Allow safely calling nukefile from a run queue handler

Anand Kumria (14):
      Create a specific version of the read_pipe_lines command for p4 invocations
      Utilise the new 'p4_read_pipe_lines' command
      Have a command that specifically invokes 'p4' (via system)
      Utilise the new 'p4_system' function.
      Add a single command that will be used to construct the 'p4' command
      If we are in verbose mode, output what we are about to run (or return)
      Switch to using 'p4_build_cmd'
      If the user has configured various parameters, use them.
      Consistently use 'git-p4' for the configuration entries
      Move git-p4.syncFromOrigin into a configuration parameters section
      Put some documentation in about the parameters that have been added
      Put in the two other configuration elements found in the source
      Add p4 read_pipe and write_pipe wrappers
      Utilise our new p4_read_pipe and p4_write_pipe wrappers

Brandon Casey (2):
      test-parse-options: use appropriate cast in length_callback
      t5304-prune: adjust file mtime based on system time rather than file mtime

Eric Blake (1):
      Makefile: building git in cygwin 1.7.0

Eric Raible (1):
      bash completion: 'git apply' should use 'fix' not 'strip'

Junio C Hamano (1):
      GIT 1.6.0

Kevin Ballard (1):
      Fix escaping of glob special characters in pathspecs

Lee Marlow (2):
      bash completion: Add completion for 'git mergetool'
      bash completion: Add '--merge' long option for 'git log'

Marcus Griep (2):
      bash-completion: Add non-command git help files to bash-completion
      Git.pm: Make File::Spec and File::Temp requirement lazy

Matt McCutchen (1):
      git format-patch documentation: clarify what --cover-letter does

Miklos Vajna (2):
      Documentation: document the pager.* configuration setting
      t9300: replace '!' with test_must_fail

Robert Blum (1):
      git-p4: chdir now properly sets PWD environment variable in msysGit

Shawn O. Pearce (1):
      git-gui 0.11

Stephan Beyer (3):
      git-am: ignore --binary option
      git-stash: improve synopsis in help and manual page
      Improve error output of git-rebase

Thomas Rast (2):
      rebase -i -p: handle index and workdir correctly
      rebase -i -p: fix parent rewriting


Version v1.6.0-rc3; changes since v1.6.0-rc2:
---------------------------------------------

Brandon Casey (2):
      Makefile: set SHELL to value of SHELL_PATH
      Makefile: add a target which will abort compilation with ancient shells

Eric Wong (2):
      git-svn: add ability to specify --commit-url for dcommit
      git-svn: wrap long lines in a few places

Francis Moreau (1):
      git-bisect: fix wrong usage of read(1)

Gustaf Hendeby (2):
      gitattributes: Document built in hunk header patterns
      Teach git diff about BibTeX head hunk patterns

Ivan Stankovic (1):
      Documentation: fix invalid reference to 'mybranch' in user manual

Johannes Schindelin (1):
      clone --mirror: avoid storing repeated tags

Jonathan Nieder (1):
      Documentation: user-manual: "git commit -a" doesn't motivate .gitignore

Junio C Hamano (9):
      asciidoc markup fixes
      GIT-VERSION-GEN: mark the version 'dirty' only if there are modified files
      mailinfo: fix MIME multi-part message boundary handling
      Update draft RelNotes for 1.6.0
      Fix deleting reflog entries from HEAD reflog
      Re-fix rev-list-options documentation
      diff --check: do not unconditionally complain about trailing empty lines
      Do not talk about "diff" in rev-list documentation.
      GIT 1.6.0-rc3

Marcus Griep (5):
      Fix multi-glob assertion in git-svn
      git-svn: Allow deep branch names by supporting multi-globs
      Git.pm: Add faculties to allow temp files to be cached
      git-svn: Make it incrementally faster by minimizing temp files
      git-svn: Reduce temp file usage when dealing with non-links

Nguyễn Thái Ngọc Duy (1):
      Fix typo in comments of longest_ancestor_length()

Petr Baudis (2):
      Fail properly when cloning from invalid HTTP URL
      Adjust for the new way of enabling the default post-update hook

Pieter de Bie (2):
      builtin-rm: Add a --force flag
      reflog test: add more tests for 'reflog delete'

SZEDER Gábor (1):
      bash: remove redundant check for 'git stash apply' options

Stephen R. van den Berg (1):
      git-daemon: SysV needs the signal handler reinstated.

Thomas Rast (6):
      Documentation: commit-tree: remove 16 parents restriction
      Documentation: filter-branch: document how to filter all refs
      filter-branch: be more helpful when an annotated tag changes
      Documentation: rev-list-options: Fix -g paragraph formatting
      Documentation: rev-list-options: Fix a typo
      Documentation: rev-list-options: Rewrite simplification descriptions for clarity


Version v1.6.0-rc2; changes since v1.6.0-rc1:
---------------------------------------------

Abhijit Menon-Sen (7):
      `git submodule add` now requires a <path>
      Make it clear that push can take multiple refspecs
      Make the DESCRIPTION match <x>... items in the SYNOPSIS
      Git.pm: localise $? in command_close_bidi_pipe()
      Fix hash slice syntax error
      Fix typo in perl/Git.pm
      Fix typos in INSTALL

Alex Riesen (1):
      Make use of stat.ctime configurable

Alexander Gavrilov (9):
      git-gui: Fix the Remote menu separator.
      git-gui: Preserve scroll position on reshow_diff.
      Support copy and rename detection in fast-export.
      gitk: Kill back-end processes on window close
      gitk: Arrange to kill diff-files & diff-index on quit
      gitk: On Windows, use a Cygwin-specific flag for kill
      gitk: Fixed broken exception handling in diff
      gitk: Fixed automatic row selection during load
      gitk: Fallback to selecting the head commit upon load

Anders Melchiorsen (4):
      Advertise the ability to abort a commit
      Documentation: fix diff.external example
      Flush output in start_async
      Add output flushing before fork()

Avery Pennarun (2):
      Teach "git diff -p" Pascal/Delphi funcname pattern
      git-svn: Abort with an error if 'fetch' parameter is invalid.

Brandon Casey (3):
      t/t4202-log.sh: add newline at end of file
      Teach fsck and prune that tmp_obj_ file names may not be 14 bytes long
      perl/Makefile: handle paths with spaces in the NO_PERL_MAKEMAKER section

Brian Gernhardt (1):
      Documentation: Remove mentions of git-svnimport.

Cesar Eduardo Barros (1):
      Documentation/git-rev-parse.txt: update for new git-describe output format

Christian Couder (2):
      merge-base: die with an error message if not passed a commit ref
      documentation: user-manual: update "using-bisect" section

Christian Stimming (2):
      git-gui: Update German translation
      gitk: Updated German translation

Ciaran McCreesh (1):
      Make git-add -i accept ranges like 7-

David D. Kilzer (1):
      Fix race condition in t9119-git-svn-info.sh

Dmitry Potapov (1):
      correct access right for git-svn-dcommit test

Eric Wong (2):
      git-svn: properly set path for "info" command
      t9119: conditionally re-enable test depending on svn(1) version

Giuseppe Bilotta (2):
      diff: add ruby funcname pattern
      diff: chapter and part in funcname for tex

Jeff King (3):
      init: handle empty "template" parameter
      Compact commit template message
      init: handle empty "template" parameter

Jim Meyering (1):
      git-cvsimport.perl: Print "UNKNOWN LINE..." on stderr, not stdout.

Johannes Schindelin (3):
      sort_in_topological_order(): avoid setting a commit flag
      clone: Add an option to set up a mirror
      clone --bare: Add ".git" suffix to the directory name to clone into

Johannes Sixt (1):
      git-gui: Adapt discovery of oguilib to execdir 'libexec/git-core'

Jon Jensen (1):
      Fix reference to Everyday Git, which is an HTML document and not a man page.

Jonathan Nieder (1):
      git-diff(1): "--c" -> "--cc" typo fix

Junio C Hamano (19):
      Allow building without any git installed
      Allow installing in the traditional way
      ls-tree documentation: enhance notes on subdirectory and pathspec behaviour
      Documentation: clarify what is shown in "git-ls-files -s" output
      t7001: fix "git mv" test
      Teach gitlinks to ie_modified() and ce_modified_check_fs()
      Fix merge name generation in "merge in C"
      Fix test-parse-options "integer" test
      Teach --find-copies-harder to "git blame"
      make sure parsed wildcard refspec ends with slash
      Documentation: clarify diff --cc
      Update my e-mail address
      Start 1.5.6.5 RelNotes to describe accumulated fixes
      builtin-name-rev.c: split deeply nested part from the main function
      RelNotes 1.5.6.5 updates
      fix diff-tree --stdin documentation
      Files given on the command line are relative to $cwd
      GIT 1.5.6.5
      GIT 1.6.0-rc2

Kevin Ballard (1):
      format-patch: Produce better output with --inline or --attach

Lee Marlow (11):
      bash completion: remove unused function _git_diff_tree
      bash completion: Add more long options for 'git log'
      bash completion: Add completion for 'git grep'
      bash completion: Add completion for 'git clone'
      bash completion: Add completion for 'git clean'
      bash completion: Add completion for 'git init'
      bash completion: Add completion for 'git revert'
      bash completion: More completions for 'git stash'
      bash completion: Add completion for 'git archive'
      bash completion: Add completion for 'git ls-files'
      bash completion: Add completion for 'git mv'

Linus Torvalds (1):
      diff.renamelimit is a basic diff configuration

Michele Ballabio (2):
      git-gui: update po/it.po
      git-gui: add a part about format strings in po/README

Mikael Magnusson (2):
      git-gui: Update swedish translation.
      gitk: Update swedish translation.

Mike Ralphson (2):
      Documentation: typos / spelling fixes in older RelNotes
      Documentation: typos / spelling fixes

Nanako Shiraishi (1):
      git-gui: update Japanese translation

Olivier Marin (1):
      builtin-verify-tag: fix -v option parsing

Pierre Habouzit (2):
      Allow "non-option" revision options in parse_option-enabled commands
      git-submodule: move ill placed shift.

Pieter de Bie (1):
      git-name-rev: allow --name-only in combination with --stdin

René Scharfe (2):
      archive: allow --exec and --remote without equal sign
      git-name-rev: don't use printf without format

Shawn O. Pearce (2):
      git-gui: Fix gitk search in $PATH to work on Windows
      git-gui: Update git-gui.pot for 0.11 nearing release

Steffen Prohaska (6):
      Refactor, adding prepare_git_cmd(const char **argv)
      run-command (Windows): Run dashless "git <cmd>"
      git-gui: Correct installation of library to be $prefix/share
      git-gui (Windows): Switch to relative discovery of oguilib
      git-gui (Windows): Change wrapper to execdir 'libexec/git-core'
      Modify mingw_main() workaround to avoid link errors

Stephan Beyer (1):
      builtin-revert.c: typofix

Steve Haslam (1):
      Propagate -u/--upload-pack option of "git clone" to transport.

Steven Grimm (1):
      Optimize sha1_object_info for loose objects, not concurrent repacks

Todd Zullinger (1):
      Replace uses of "git-var" with "git var"


Version v1.6.0-rc1; changes since v1.6.0-rc0:
---------------------------------------------

Abhijit Menon-Sen (2):
      git-gui: Look for gitk in $PATH, not $LIBEXEC/git-core
      Clarify that "git log x.c y.h" lists commits that touch either file

Alex Riesen (1):
      Allow pager of diff command be enabled/disabled

Alexander Gavrilov (4):
      Fix pre-commit hooks under MinGW/MSYS
      Add options to control the search for copies in blame.
      Kill the blame back-end on window close.
      Add a menu item to invoke full copy detection in blame.

Anders Melchiorsen (1):
      Documentation: fix diff.external example

Björn Steinbrink (2):
      index-pack.c: correctly initialize appended objects
      rev-parse: Add support for the ^! and ^@ syntax

Brad King (1):
      git-svn: teach dcommit about svn auto-props

Brandon Casey (7):
      t/: Replace diff [-u|-U0] with test_cmp to allow compilation with old diff
      t4116-apply-reverse.sh: use $TAR rather than tar
      t3200,t7201: replace '!' with test_must_fail
      t7502-commit.sh: rearrange test to make more portable
      t/t4202-log.sh: add newline at end of file
      Teach fsck and prune about the new location of temporary objects
      perl/Makefile: update NO_PERL_MAKEMAKER section

Cesar Eduardo Barros (1):
      Documentation/git-submodule.txt: fix doubled word

Daniel Barkalow (1):
      In perforce, RCS keywords are case-sensitive

Jakub Narębski (1):
      gitweb: More about how gitweb gets 'owner' of repository

Johannes Schindelin (9):
      Rename .git/rebase to .git/rebase-apply
      Rename path_list to string_list
      Fix two leftovers from path_list->string_list
      Ignore dirty submodule states in "git pull --rebase"
      Add test to show that show-branch misses out the 8th column
      sort_in_topological_order(): avoid setting a commit flag
      builtin-commit: Two trivial style-cleanups
      git daemon: avoid waking up too often
      Avoid chdir() in list_commands_in_dir()

Johannes Sixt (12):
      rebase -i: When an 'edit' stops, mention the commit
      Makefile: Do not install a copy of 'git' in $(gitexecdir)
      Makefile: Normalize $(bindir) and $(gitexecdir) before comparing
      Record the command invocation path early
      Fix relative built-in paths to be relative to the command invocation
      Allow the built-in exec path to be relative to the command invocation path
      Allow add_path() to add non-existent directories to the path
      Windows: Make $(gitexecdir) relative
      Windows: Make sure argv[0] has a path
      Windows: Do not compile git-shell
      git-gui: Fix "Stage/Unstage Line" with one line of context.
      git-gui: "Stage Line": Treat independent changes in adjacent lines better

Jonathan Nieder (3):
      git-diff(1): "--c" -> "--cc" typo fix
      document that git-tag can tag more than heads
      t6030 (bisect): work around Mac OS X "ls"

Junio C Hamano (13):
      Update my e-mail address
      Revert "make git-status use a pager"
      tests: do not rely on external "patch"
      stash save: fix parameter handling
      builtin-branch.c: remove unused code in append_ref() callback function
      builtin-branch.c: optimize --merged and --no-merged
      Documentation: clarify diff --cc
      ignore non-existent refs in dwim_log()
      tests: propagate $(TAR) down from the toplevel Makefile
      Makefile: fix shell quoting
      Documentation: clarify how to disable elements in core.whitespace
      make sure parsed wildcard refspec ends with slash
      GIT 1.6.0-rc1

Lars Hjemli (3):
      builtin-branch: remove duplicated code
      builtin-branch: factor out merge_filter matching
      builtin-branch: fix -v for --[no-]merged

Lee Marlow (2):
      bash completion: Add long options for 'git rm'
      bash completion: Add completion for 'git help'

Miklos Vajna (2):
      builtin-merge: give a proper error message for invalid strategies in config
      t7601: extend the 'merge picks up the best result' test

Nikolaj Schumacher (1):
      Don't cut off last character of commit descriptions.

Olivier Marin (4):
      git-am: remove dash from help message
      parse-options: fix segmentation fault when a required value is missing
      git am --skip: clean the index while preserving local changes
      update test case to protect am --skip behaviour

P. Christeas (1):
      svnimport: newer libsvn wants us to ask for the root with "", not "/"

Peter Valdemar Mørch (1):
      send-email: find body-encoding correctly

Petr Baudis (4):
      git-filter-branch.sh: Allow running in bare repositories
      Documentation/git-filter-branch: teach "rm" instead of "update-index --remove"
      git-mv: Remove dead code branch
      git-mv: Keep moved index entries inact

Philippe Bruhat (1):
      mailinfo: better parse email adresses containg parentheses

Pierre Habouzit (4):
      builtin-merge: add missing structure initialization
      git-submodule: move ill placed shift.
      git-checkout: fix command line parsing.
      git-checkout: improve error messages, detect ambiguities.

René Scharfe (5):
      archive: add write_archive()
      archive: move parameter parsing code to archive.c
      archive: define MAX_ARGS where it's needed
      archive: declare struct archiver where it's needed
      archive: allow --exec and --remote without equal sign

SZEDER Gábor (2):
      checkout: mention '--' in the docs
      bash: offer only paths after '--' for 'git checkout'

Shawn O. Pearce (2):
      git-gui: Correct 'Visualize Branches' on Mac OS X to start gitk
      fsck: Don't require tmp_obj_ file names are 14 bytes in length

Stephan Beyer (7):
      git-am: Add colon before the subject that is printed out as being applied
      am --abort: Add to bash-completion and mention in git-rerere documentation
      Make non-static functions, that may be static, static
      Move launch_editor() from builtin-tag.c to editor.c
      editor.c: Libify launch_editor()
      git-am: Mention --abort in usage string part of OPTIONS_SPEC
      git-reset: Let -q hush "locally modified" messages

Steve Haslam (2):
      Propagate -u/--upload-pack option of "git clone" to transport.
      Remove references to git-fetch-pack from "git clone" documentation.

Thomas Rast (2):
      git-completion.bash: provide completion for 'show-branch'
      bash completion: Add long options for 'git describe'


Version v1.6.0-rc0; changes since v1.5.6.6:
-------------------------------------------

Abhijit Menon-Sen (4):
      git-gui: Move on to the next filename after staging/unstaging a change
      git-gui: Don't select the wrong file if the last listed file is staged.
      Implement "git stash branch <newbranch> <stash>"
      Add a test for "git stash branch"

Adam Brewster (2):
      Move read_revisions_from_stdin from builtin-rev-list.c to revision.c
      Teach git-bundle to read revision arguments from stdin like git-rev-list.

Alex Riesen (1):
      Fix use of "perl -i" on Windows

Alexander Gavrilov (3):
      Avoid rescanning unchanged entries in search for copies.
      Do not try to detect move/copy for entries below threshold.
      Support gitlinks in fast-import.

Avery Pennarun (1):
      Reword "your branch has diverged..." lines to reduce line length

Brandon Casey (1):
      t7701-repack-unpack-unreachable.sh: check timestamp of unpacked objects

Brian Gernhardt (4):
      Fix t4017-diff-retval for white-space from wc
      Add test results directory to t/.gitignore
      Documentation: Point to gitcli(7) from git(1)
      Documentation: mention ORIG_HEAD in am, merge, and rebase

Christian Couder (2):
      help: check early if we have a command, if not try a documentation topic
      Fix "config_error_nonbool" used with value instead of key

Ciaran McCreesh (1):
      Make git-add -i accept ranges like 7-

Cristian Peraferrer (1):
      Print errno upon failure to open the COMMIT_EDITMSG file

Daniel Barkalow (1):
      Only use GIT_CONFIG in "git config", not other programs

David Reiss (4):
      Implement normalize_absolute_path
      Fold test-absolute-path into test-path-utils
      Add support for GIT_CEILING_DIRECTORIES
      Eliminate an unnecessary chdir("..")

Dmitry Kakurin (1):
      Fixed text file auto-detection: treat EOF character 032 at the end of file as printable

Dmitry Potapov (4):
      update-hook-example: optionally allow non-fast-forward
      shrink git-shell by avoiding redundant dependencies
      completion.bash: add 'skip' and 'run' to git-bisect
      git-svn: fix git svn info to work without arguments

Don Zickus (1):
      git-apply: handle a patch that touches the same path more than once better

Eric Hanchrow (2):
      user-manual: typo and grammar fixes
      Documentation: fix broken "linkgit" links

Eric Raible (3):
      Documentation: tweak use case in "git stash save --keep-index"
      completion: add branch options --contains --merged --no-merged
      Teach lookup_prog not to select directories

Eric Wong (1):
      t/lib-git-svn: fix SVN_HTTPD tests to work with "trash directory"

Fabian Emmes (2):
      Testsuite: Unset CVS_SERVER
      testsuite for cvs co -c

Frederik Schwarzer (1):
      git-svn: typofix

Ian Katz (1):
      tutorial: use prompt with user names in example, to clarify who is doing what

Jakub Narębski (4):
      gitweb: Separate filling list of projects info
      gitweb: Separate generating 'sort by' table header
      t/README: Add 'Skipping Tests' section below 'Running Tests'
      gitweb: Describe projects_index format in more detail

Jeff King (9):
      fix whitespace violations in test scripts
      mask necessary whitespace policy violations in test scripts
      avoid whitespace on empty line in automatic usage message
      avoid trailing whitespace in zero-change diffstat lines
      enable whitespace checking of test scripts
      clone: create intermediate directories of destination repo
      improve for-each-ref test script
      Allow per-command pager config
      avoid null SHA1 in oldest reflog

Jing Xue (1):
      Add 'git-p4.allowSubmit' to git-p4

Johan Herland (4):
      Incorporate fetched packs in future object traversal
      Move pack_refs() and friends into libgit
      Prepare testsuite for a "git clone" that packs refs
      Teach "git clone" to pack refs

Johannes Schindelin (12):
      Windows: always chmod(, 0666) before unlink().
      commit-tree: lift completely arbitrary limit of 16 parents
      Allow git-apply to recount the lines in a hunk (AKA recountdiff)
      Add another fast-import example, this time for .zip files
      Teach "git apply" to prepend a prefix with "--root=<root>"
      git fetch-pack: do not complain about "no common commits" in an empty repo
      Allow cherry-picking root commits
      Convert CR/LF to LF in tag signatures
      Move MERGE_RR from .git/rr-cache/ into .git/
      git-gui: MERGE_RR lives in .git/ directly with newer Git versions
      shortlog: support --pretty=format: option
      Rename ".dotest/" to ".git/rebase" and ".dotest-merge" to "rebase-merge"

Johannes Sixt (38):
      Add compat/regex.[ch] and compat/fnmatch.[ch].
      Compile some programs only conditionally.
      Add target architecture MinGW.
      Windows: Use the Windows style PATH separator ';'.
      setup.c: Prepare for Windows directory separators.
      Windows: Treat Windows style path names.
      Windows: Handle absolute paths in safe_create_leading_directories().
      Windows: Strip ".exe" from the program name.
      Windows: Implement a wrapper of the open() function.
      Windows: A minimal implemention of getpwuid().
      Windows: Work around misbehaved rename().
      Make my_mktime() public and rename it to tm_to_time_t()
      Windows: Implement gettimeofday().
      Windows: Fix PRIuMAX definition.
      Windows: Implement setitimer() and sigaction().
      Windows: Wrap execve so that shell scripts can be invoked.
      Windows: A pipe() replacement whose ends are not inherited to children.
      Windows: Implement start_command().
      Windows: A rudimentary poll() emulation.
      Windows: Disambiguate DOS style paths from SSH URLs.
      Windows: Implement asynchronous functions as threads.
      Windows: Work around incompatible sort and find.
      Windows: Implement wrappers for gethostbyname(), socket(), and connect().
      Windows: Implement a custom spawnve().
      Windows: Add a custom implementation for utime().
      Windows: Use a customized struct stat that also has the st_blocks member.
      Turn builtin_exec_path into a function.
      Windows: Compute the fallback for exec_path from the program invocation.
      Windows: Use a relative default template_dir and ETC_GITCONFIG
      When installing, be prepared that template_dir may be relative.
      Windows: Make the pager work.
      Windows: Work around an oddity when a pipe with no reader is written to.
      Windows: Make 'git help -a' work.
      Windows: TMP and TEMP environment variables specify a temporary directory.
      git-gui: Implement "Stage/Unstage Line"
      t4127-apply-same-fn: Avoid sed -i
      Provide fallback definitions of PRIu32 and PRIx32
      builtin-clone: rewrite guess_dir_name()

Jonathan Nieder (23):
      Documentation: don't assume git-sh-setup and git-parse-remote are in PATH
      Documentation: fix links to tutorials and other new manual pages
      whitespace fix in Documentation/git-repack.txt
      Documentation: complicate example of "man git-command"
      git-daemon(1): don't assume git-daemon is in /usr/bin
      Documentation: prepare to be consistent about "git-" versus "git "
      Documentation: be consistent about "git-" versus "git "
      Documentation formatting and cleanup
      git-format-patch(1): fix stray \ in output
      Documentation: fix gitlinks
      manpages: fix bogus whitespace
      git(1): add comma
      git-commit(1): depersonalize description
      Documentation: rewrap to prepare for "git-" vs "git " change
      Documentation: more "git-" versus "git " changes
      gitdiffcore(7): fix awkward wording
      manpages: italicize command names in synopses
      manpages: italicize command names
      manpages: italicize git command names (which were in teletype font)
      manpages: italicize gitk's name (where it was in teletype font)
      manpages: italicize nongit command names (if they are in teletype font)
      manpages: italicize git subcommand names (which were in teletype font)
      manpages: use teletype font for sample command lines

João Abecasis (1):
      git-svn: find-rev and rebase for SVN::Mirror repositories

Junio C Hamano (65):
      revision traversal: --children option
      rev-list --children
      builtin-blame.c: move prepare_final() into a separate function.
      builtin-blame.c: allow more than 16 parents
      git-blame --reverse
      rerere: rerere_created_at() and has_resolution() abstraction
      git-rerere: detect unparsable conflicts
      rerere: remove dubious "tail_optimization"
      t4200: fix rerere test
      rerere.autoupdate
      git-shell: accept "git foo" form
      Prepare execv_git_cmd() for removal of builtins from the filesystem
      pre-rebase hook update
      Ship sample hooks with .sample suffix
      Keep some git-* programs in $(bindir)
      Start draft release notes for 1.6.0
      diff --check: explain why we do not care whether old side is binary
      check_and_emit_line(): rename and refactor
      checkdiff: pass diff_options to the callback
      Teach "diff --check" about new blank lines at end
      diff --check: detect leftover conflict markers
      Update sample pre-commit hook to use "diff --check"
      Document the double-dash "rev -- path" disambiguator
      t9700: skip when Test::More is not available
      Update draft release notes for 1.6.0
      Introduce get_merge_bases_many()
      Introduce reduce_heads()
      Update draft release notes for 1.6.0
      apply --root: thinkofix.
      Refactor "tracking statistics" code used by "git checkout"
      git-status: show the remote tracking statistics
      git-branch -v: show the remote tracking statistics
      fast-export --export-marks: fix off by one error
      stat_tracking_info(): clear object flags used during counting
      branch -r -v: do not spit out garbage
      git-apply --directory: make --root more similar to GNU diff
      Update draft release notes for 1.6.0
      Teach "am" and "rebase" to mark the original position with ORIG_HEAD
      Tone down warning about GNU Interactive Tools
      Documentation: update sections on naming revisions and revision ranges
      branch --contains: default to HEAD
      branch --merged/--no-merged: allow specifying arbitrary commit
      apply: fix copy/rename breakage
      Teach merge.log to "git-merge" again
      Update draft release notes for 1.6.0
      reduce_heads(): protect from duplicate input
      git-rebase: report checkout failure
      tutorial: clarify "pull" is "fetch + merge"
      Update draft release notes to 1.6.0
      t/aggregate-results: whitespace fix
      Update draft release notes for 1.6.0
      read-cache.c: typofix
      mailinfo: off-by-one fix for [PATCH (foobar)] removal from Subject: line
      rerere.autoupdate: change the message when autoupdate is in effect
      builtin-remote.c: fix earlier "skip_prefix()" conversion
      t9001 (send-email): Do not use hardcoded /bin/sh in test
      .mailmap update
      Getting closer to 1.6.0-rc0
      builtin-add.c: restructure the code for maintainability
      git-add --all: add all files
      git-add --all: tests
      git-add --all: documentation
      Link shell with compat layer functions
      Move read_in_full() and write_in_full() to wrapper.c
      "needs update" considered harmful

Karl Wiberg (2):
      Clean up builtin-update-ref's option parsing
      Make old sha1 optional with git update-ref -d

Kevin Ballard (1):
      git-send-email: Accept fifos as well as files

Lars Noschinski (3):
      cvsserver: Add support for packed refs
      cvsserver: Add cvs co -c support
      cvsserver: Add testsuite for packed refs

Lea Wiemann (6):
      test-lib.sh: add --long-tests option
      t/test-lib.sh: add test_external and test_external_without_stderr
      Git.pm: add test suite
      gitweb: standarize HTTP status codes
      test-lib.sh: show git init output when in verbose mode
      GIT-VERSION-GEN: do not fail if a 'HEAD' file exists in the working copy

Linus Torvalds (1):
      Shrink the git binary a bit by avoiding unnecessary inline functions

Lukas Sandström (4):
      Add a helper script to send patches with Mozilla Thunderbird
      Make some strbuf_*() struct strbuf arguments const.
      Add some useful functions for strbuf manipulation.
      git-mailinfo: use strbuf's instead of fixed buffers

Marius Storm-Olsen (4):
      Add an optional <mode> argument to commit/status -u|--untracked-files option
      Add argument 'no' commit/status option -u|--untracked-files
      Add configuration option for default untracked files mode
      Windows: Add a new lstat and fstat implementation based on Win32 API.

Mark Levedahl (3):
      install-doc-quick - use git --exec-path to find git-sh-setup
      git-submodule - make "submodule add" more strict, and document it
      git-submodule - register submodule URL if adding in place

Michele Ballabio (3):
      t9301-fast-export.sh: Remove debug line
      builtin-merge.c: Fix option parsing
      builtin-push.c: Cleanup - use OPT_BIT() and remove some variables

Mike Hommey (4):
      Catch failures from t5540-http-push
      Fix http-push test
      Skip t5540-http-push test when USE_CURL_MULTI is undefined
      Avoid apache complaining about lack of server's FQDN

Mike Pape (1):
      We need to check for msys as well as Windows in add--interactive.

Miklos Vajna (27):
      A simple script to parse the results from the testcases
      Move split_cmdline() to alias.c
      Move commit_list_count() to commit.c
      Move parse-options's skip_prefix() to git-compat-util.h
      Add new test to ensure git-merge handles pull.twohead and pull.octopus
      Move read_cache_unmerged() to read-cache.c
      git-fmt-merge-msg: make it usable from other builtins
      Introduce get_octopus_merge_bases() in commit.c
      Add new test to ensure git-merge handles more than 25 refs.
      Add new test case to ensure git-merge reduces octopus parents when possible
      Retire 'stupid' merge strategy
      INSTALL: Update section about git-frotz form.
      hg-to-git: avoid raising a string exception
      hg-to-git: abort if the project directory is not a hg repo
      hg-to-git: rewrite "git-frotz" to "git frotz"
      hg-to-git: use git init instead of git init-db
      Add new test case to ensure git-merge prepends the custom merge message
      git-commit-tree: make it usable from other builtins
      Fix t7601-merge-pull-config.sh on AIX
      Build in merge
      t0001-init.sh: change confusing directory name
      t1007-hash-object.sh: use quotes for the test description
      git-bisect: use dash-less form on git bisect log
      make remove-dashes: apply to scripts and programs as well, not just to builtins
      t6021: add a new test for git-merge-resolve
      Add a new test for git-merge-resolve
      Teach 'git merge' that some merge strategies no longer exist

Nanako Shiraishi (7):
      environment.c: remove unused function
      config.c: make git_env_bool() static
      gitcli: Document meaning of --cached and --index
      cache-tree.c: make cache_tree_find() static
      builtin-describe.c: make a global variable "pattern" static
      parse-options.c: make check_typos() static
      git am --abort

Nguyễn Thái Ngọc Duy (1):
      Move all dashed-form commands to libexecdir

Nicolas Pitre (11):
      call init_pack_revindex() lazily
      implement some resilience against pack corruptions
      test case for pack resilience against corruptions
      refactor pack structure allocation
      optimize verify-pack a bit
      move show_pack_info() where it belongs
      verify-pack: check packed object CRC when using index version 2
      verify-pack: test for detection of index v2 object CRC mismatch
      repack.usedeltabaseoffset config option now defaults to "true"
      pack.indexversion config option now defaults to 2
      restore legacy behavior for read_sha1_file()

Olivier Marin (3):
      Documentation: remove {show,whatchanged}.difftree config options
      show_stats(): fix stats width calculation
      builtin-rerere: more carefully find conflict markers

Patrick Higgins (1):
      Remove the use of '--' in merge program invocation

Pavel Roskin (1):
      t9600: allow testing with cvsps 2.2, including beta versions

Peter Harris (1):
      Add ANSI control code emulation for the Windows console

Petr Baudis (6):
      Git.pm: Add remote_refs() git-ls-remote frontend
      Documentation/git-submodule.txt: Add Description section
      Documentation/RelNotes-1.6.0.txt: Expand on the incompatible packfiles
      Documentation/git-submodule.txt: Further clarify the description
      Documentation: How to ignore local changes in tracked files
      Documentation/git-merge.txt: Partial rewrite of How Merge Works

Pierre Habouzit (13):
      parse-opt: have parse_options_{start,end}.
      parse-opt: Export a non NORETURN usage dumper.
      parse-opt: create parse_options_step.
      parse-opt: do not print errors on unknown options, return -2 intead.
      parse-opt: fake short strings for callers to believe in.
      parse-opt: add PARSE_OPT_KEEP_ARGV0 parser option.
      revisions: split handle_revision_opt() from setup_revisions()
      git-blame: migrate to incremental parse-option [1/2]
      git-blame: migrate to incremental parse-option [2/2]
      parse-options: add PARSE_OPT_LASTARG_DEFAULT flag
      git-blame: fix lapsus
      git-shortlog: migrate to parse-options partially.
      revisions: refactor handle_revision_opt into parse_revision_opt.

Pieter de Bie (1):
      builtin-fast-export: Add importing and exporting of revision marks

Rafael Garcia-Suarez (1):
      gitweb: remove git_blame and rename git_blame2 to git_blame

Ramsay Jones (4):
      Fix some warnings (on cygwin) to allow -Werror
      t9113-*.sh: provide user feedback when test skipped
      t9100-git-svn-basic.sh: Fix determination of utf-8 locale
      git-request-pull: replace call to deprecated peek-remote

René Scharfe (9):
      Teach new attribute 'export-ignore' to git-archive
      archive: remove args member from struct archiver
      add context pointer to read_tree_recursive()
      archive: add baselen member to struct archiver_args
      archive: centralize archive entry writing
      archive: unify file attribute handling
      archive: remove extra arguments parsing code
      archive: make zip compression level independent from core git
      archive: remove unused headers

Richard Quirk (1):
      git-gui: Fix accidental staged state toggle when clicking top pixel row

Robert Shearman (1):
      git-send-email: Fix authenticating on some servers when using TLS.

SZEDER Gábor (1):
      stash: introduce 'stash save --keep-index' option

Shawn O. Pearce (2):
      Correct documentation for git-push --mirror
      bash completion: Remove dashed command completion support

Soeren Finster (1):
      git-gui: Exit shortcut in MacOSX repaired

Steffen Prohaska (5):
      Windows: Fix ntohl() related warnings about printf formatting
      compat/pread.c: Add a forward declaration to fix a warning
      Move code interpreting path relative to exec-dir to new function system_path()
      help.c: Add support for htmldir relative to git_exec_path()
      help (Windows): Display HTML in default browser using Windows' shell API

Stephan Beyer (10):
      api-builtin.txt: update and fix typo
      t3404: stricter tests for git-rebase--interactive
      rerere: Separate libgit and builtin functions
      t/test-lib.sh: exit with small negagive int is ok with test_must_fail
      t/: Use "test_must_fail git" instead of "! git"
      Make usage strings dash-less
      git-am/git-mailsplit: correct synopsis for reading from stdin
      t3404: test two "preserve merges with -p" cases
      Make rebase--interactive use OPTIONS_SPEC
      Link git-shell only to a subset of libgit.a

SungHyun Nam (1):
      t/Makefile: use specified shell when running aggregation script

Sverre Hvammen Johansen (1):
      reduce_heads(): thinkofix

Sverre Rabbelier (2):
      Modify test-lib.sh to output stats to t/test-results/*
      Hook up the result aggregation in the test makefile.

Ted Percival (1):
      Don't use dash commands (git-foo) in tutorial-2

Teemu Likonen (3):
      bash: Add more option completions for 'git log'
      Add target "install-html" the the top level Makefile
      bash: Add long option completion for 'git send-email'

Thomas Rast (7):
      git-send-email: add support for TLS via Net::SMTP::SSL
      git-send-email: prevent undefined variable warnings if no encryption is set
      git-add--interactive: replace hunk recounting with apply --recount
      git-add--interactive: remove hunk coalescing
      git-add--interactive: manual hunk editing mode
      git-send-email: Do not attempt to STARTTLS more than once
      Fix apply --recount handling of no-EOL line


Version v1.5.6.6; changes since v1.5.6.5:
-----------------------------------------

Alexander Gavrilov (1):
      Fix quadratic performance in rewrite_one.

Brandon Casey (1):
      t5304-prune: adjust file mtime based on system time rather than file mtime

Francis Moreau (1):
      git-bisect: fix wrong usage of read(1)

Ivan Stankovic (1):
      Documentation: fix invalid reference to 'mybranch' in user manual

Junio C Hamano (8):
      Per-ref reflog expiry configuration
      Make default expiration period of reflog used for stash infinite
      asciidoc markup fixes
      Fix deleting reflog entries from HEAD reflog
      Re-fix rev-list-options documentation
      Do not talk about "diff" in rev-list documentation.
      gitweb: do not run "git diff" that is Porcelain
      GIT 1.5.4.7

Kevin Ballard (1):
      Fix escaping of glob special characters in pathspecs

Linus Torvalds (4):
      Split up default "core" config parsing into helper routine
      Split up default "user" config parsing into helper routine
      Split up default "i18n" and "branch" config parsing into helper routines
      Add config option to enable 'fsync()' of object files

Petr Baudis (1):
      Fail properly when cloning from invalid HTTP URL

Pieter de Bie (1):
      reflog test: add more tests for 'reflog delete'

Thomas Rast (1):
      Documentation: rev-list-options: Fix -g paragraph formatting


Version v1.5.6.5; changes since v1.5.6.4:
-----------------------------------------

Anders Melchiorsen (1):
      Documentation: fix diff.external example

Björn Steinbrink (1):
      index-pack.c: correctly initialize appended objects

Brandon Casey (1):
      t/t4202-log.sh: add newline at end of file

Ciaran McCreesh (1):
      Make git-add -i accept ranges like 7-

Jeff King (1):
      init: handle empty "template" parameter

Jim Meyering (1):
      git-cvsimport.perl: Print "UNKNOWN LINE..." on stderr, not stdout.

Johannes Schindelin (1):
      sort_in_topological_order(): avoid setting a commit flag

Jonathan Nieder (2):
      fix usage string for git grep
      git-diff(1): "--c" -> "--cc" typo fix

Junio C Hamano (12):
      refresh-index: fix bitmask assignment
      tests: propagate $(TAR) down from the toplevel Makefile
      Makefile: fix shell quoting
      make sure parsed wildcard refspec ends with slash
      Documentation: clarify diff --cc
      Update my e-mail address
      Start 1.5.6.5 RelNotes to describe accumulated fixes
      builtin-name-rev.c: split deeply nested part from the main function
      RelNotes 1.5.6.5 updates
      fix diff-tree --stdin documentation
      Files given on the command line are relative to $cwd
      GIT 1.5.6.5

Linus Torvalds (1):
      diff.renamelimit is a basic diff configuration

Mike Ralphson (1):
      Documentation: typos / spelling fixes in older RelNotes

Peter Valdemar Mørch (1):
      send-email: find body-encoding correctly

Pierre Habouzit (2):
      git-checkout: fix command line parsing.
      git-submodule: move ill placed shift.

Pieter de Bie (1):
      git-name-rev: allow --name-only in combination with --stdin

René Scharfe (1):
      git-name-rev: don't use printf without format

Stephan Beyer (1):
      builtin-revert.c: typofix

Steve Haslam (1):
      Propagate -u/--upload-pack option of "git clone" to transport.


Version v1.5.6.4; changes since v1.5.6.3:
-----------------------------------------

Dmitry Potapov (3):
      Fix buffer overflow in git-grep
      Fix buffer overflow in git diff
      Fix buffer overflow in prepare_attr_stack

Johannes Schindelin (3):
      git daemon: avoid calling syslog() from a signal handler
      Add pretty format %aN which gives the author name, respecting .mailmap
      git fetch-pack: do not complain about "no common commits" in an empty repo

Johannes Sixt (1):
      t7600-merge: Use test_expect_failure to test option parsing

Junio C Hamano (4):
      Start preparing 1.5.6.4 release notes
      rev-list: honor --quiet option
      http-fetch: do not SEGV after fetching a bad pack idx file
      GIT 1.5.6.4

Lars Noschinski (1):
      git-cvsserver: fix call to nonexistant cleanupWorkDir()

Lukas Sandström (1):
      git-mailinfo: Fix getting the subject from the in-body [PATCH] line

Olivier Marin (1):
      builtin-rm: fix index lock file path

Petr Baudis (1):
      Documentation/git-cherry-pick.txt et al.: Fix misleading -n description

Shawn O. Pearce (9):
      Correct pack memory leak causing git gc to try to exceed ulimit
      bash completion: Improve responsiveness of git-log completion
      bash completion: Don't offer "a.." as a completion for "a."
      bash completion: Append space after file names have been completed
      bash completion: Resolve git show ref:path<tab> losing ref: portion
      index-pack: Refactor base arguments of resolve_delta into a struct
      index-pack: Chain the struct base_data on the stack for traversal
      index-pack: Track the object_entry that creates each base_data
      index-pack: Honor core.deltaBaseCacheLimit when resolving deltas

Stephan Beyer (2):
      rebase-i: keep old parents when preserving merges
      api-run-command.txt: typofix


Version v1.5.6.3; changes since v1.5.6.2:
-----------------------------------------

Alex Riesen (1):
      git-clone: remove leftover debugging fprintf().

Brian Hetro (5):
      builtin-log.c: Use 'git_config_string' to get 'format.subjectprefix' and 'format.suffix'
      convert.c: Use 'git_config_string' to get 'smudge' and 'clean'
      diff.c: Use 'git_config_string' to get 'diff.external'
      http.c: Use 'git_config_string' to clean up SSL config.
      builtin-commit.c: Use 'git_config_string' to get 'commit.template'

Christian Couder (1):
      Fix "config_error_nonbool" used with value instead of key

Gerrit Pape (1):
      git-svn.perl: workaround assertions in svn library 1.5.0

Jeff King (1):
      make deleting a missing ref more quiet

Johannes Schindelin (1):
      run_command(): respect GIT_TRACE

Junio C Hamano (6):
      attribute documentation: keep EXAMPLE at end
      clone -q: honor "quiet" option over native transports.
      mailinfo: feed the correct line length to decode_transfer_encoding()
      Start preparing release notes for 1.5.6.3
      t0004: fix timing bug
      GIT 1.5.6.3

Linus Torvalds (1):
      racy-git: an empty blob has a fixed object name

Lukas Sandström (1):
      git-mailinfo: document the -n option

Mark Levedahl (1):
      git-submodule - Fix bugs in adding an existing repo as a module

Matthew Ogilvie (1):
      Documentation cvs: Clarify when a bare repository is needed

Mikael Magnusson (1):
      Fix grammar in git-rev-parse(1).

Nikolaus Schulz (1):
      Documentation: be precise about which date --pretty uses

Petr Baudis (1):
      Fix backwards-incompatible handling of core.sharedRepository

SZEDER Gábor (1):
      bash: offer only paths after '--'

Shawn O. Pearce (1):
      Remove unnecessary pack-*.keep file after successful git-clone

Stephan Beyer (1):
      git-am: Do not exit silently if committer is unset


Version v1.5.6.2; changes since v1.5.6.1:
-----------------------------------------

Avery Pennarun (1):
      git-svn: avoid filling up the disk with temp files.

Björn Steinbrink (1):
      git cat-file: Fix memory leak in batch mode

Eric Wong (1):
      git-svn: don't sanitize remote names in config

Jeff King (3):
      fetch: report local storage errors in status table
      doc/rev-parse: clarify reflog vs --until for specifying revisions
      fetch: give a hint to the user when local refs fail to update

Jochen Voss (1):
      avoid off-by-one error in run_upload_archive

Joey Hess (1):
      fix git config example syntax

Johannes Schindelin (2):
      clone: respect url.insteadOf setting in global configs
      clone: respect the settings in $HOME/.gitconfig and /etc/gitconfig

Junio C Hamano (9):
      Allow "git-reset path" when unambiguous
      diff --check: do not discard error status upon seeing a good line
      git-shell: accept "git foo" form
      GIT 1.5.4.6
      GIT 1.5.5.5
      Start draft release notes for 1.5.6.2
      Work around gcc warnings from curl headers
      Fix executable bits in t/ scripts
      GIT 1.5.6.2

Shawn O. Pearce (1):
      Fix describe --tags --long so it does not segfault

Thomas Rast (1):
      Fix 'git show' on signed tag of signed tag of commit


Version v1.5.6.1; changes since v1.5.6:
---------------------------------------

Brandon Casey (2):
      git-merge.sh: fix typo in usage message: sucesses --> succeeds
      t7502-commit.sh: test_must_fail doesn't work with inline environment variables

Dan McGee (1):
      completion: add --graph to log command completion

Dmitry Potapov (1):
      fix update-hook-example to work with packed tag references

Jan Krüger (2):
      Documentation: fix formatting in git-svn
      git-svn: make rebuild respect rewriteRoot option

Jeff King (2):
      for-each-ref: implement missing tag values
      clone: create intermediate directories of destination repo

Junio C Hamano (2):
      diff -c/--cc: do not include uninteresting deletion before leading context
      GIT 1.5.6.1

Linus Torvalds (1):
      Make git_dir a path relative to work_tree in setup_work_tree()

Michele Ballabio (1):
      parse-options.c: fix documentation syntax of optional arguments

Patrick Higgins (1):
      Workaround for AIX mkstemp()

Stephan Beyer (4):
      git-rebase.sh: Add check if rebase is in progress
      api-builtin.txt: update and fix typo
      api-parse-options.txt: Introduce documentation for parse options API
      Extend parse-options test suite


Version v1.5.6; changes since v1.5.6-rc3:
-----------------------------------------

Alejandro Mery (1):
      git-am: head -1 is obsolete and doesn't work on some new systems

Christian Couder (1):
      Documentation: RelNotes-1.5.6: talk about renamed HTML files

Jeff King (1):
      clean up error conventions of remote.c:match_explicit

Johan Herland (3):
      cpio is no longer used by git-clone
      Consistency: Use "libcurl" instead of "cURL library" and "curl"
      The "curl" executable is no longer required

Junio C Hamano (7):
      Makefile: update check-docs target
      Update RPM spec to drop curl executable requirement
      diff.c: fix emit_line() again not to add extra line
      create_tempfile: make sure that leading directories can be accessible by peers
      sha1_file.c: simplify parse_pack_index()
      builtin-rerere: fix a small leak
      GIT 1.5.6

Lea Wiemann (2):
      gitweb: quote commands properly when calling the shell
      gitweb: remove unused parse_ref method

Linus Torvalds (1):
      write_loose_object: don't bother trying to read an old object

Miklos Vajna (2):
      run-command documentation: fix "memset()" parameter
      path-list documentation: document all functions and data structures

Olivier Marin (1):
      Fix approxidate("never") to always return 0

Pierre Habouzit (1):
      Make git reflog expire honour core.sharedRepository.

SZEDER Gábor (1):
      diff: reset color before printing newline


Version v1.5.6-rc3; changes since v1.5.6-rc2:
---------------------------------------------

Ask Bjørn Hansen (2):
      gitweb setup instruction: rewrite HEAD and root as well
      send-email: Allow the envelope sender to be set via configuration

Avery Pennarun (2):
      git-svn: don't append extra newlines at the end of commit messages.
      git-svn: test that extra blank lines aren't inserted in commit messages.

Boyd Lynn Gerber (2):
      progress.c: avoid use of dynamic-sized array
      Port to 12 other Platforms.

Chris Ridd (1):
      Improve sed portability

Christian Couder (1):
      documentation: bisect: remove bits talking about a bisection branch

Flavio Poletti (1):
      git-instaweb: improve auto-discovery of httpd and call conventions.

Fred Maranhão (1):
      fix typo in tutorial

Geoffrey Irving (1):
      doc: adding gitman.info and *.texi to .gitignore

Jakub Narębski (2):
      gitweb: Make it work with $GIT containing spaces
      Use 'trash directory' thoroughly in t/test-lib.sh

Jeff King (1):
      document --pretty=tformat: option

Johannes Schindelin (1):
      merge-recursive: respect core.autocrlf when writing out the result

Johannes Sixt (2):
      make_nonrelative_path: Use is_absolute_path()
      Remove exec bit from builtin-fast-export.c

Junio C Hamano (8):
      http-push.c: remove duplicated code
      "remote prune": be quiet when there is nothing to prune
      Documentation/git-pull.txt: Use more standard [NOTE] markup
      Documentation: exclude @pxref{[REMOTES]} from texinfo intermediate output
      user-manual: describe how higher stages are set during a merge
      t4126: fix test that happened to work due to timing
      sha1_file.c: dead code removal
      GIT 1.5.6-rc3

Lea Wiemann (4):
      t1006-cat-file.sh: typo
      cat-file --batch / --batch-check: do not exit if hashes are missing
      Documentation/git-cat-file.txt: add missing line break
      t/.gitattributes: only ignore whitespace errors in test files

Linus Torvalds (4):
      Consolidate SHA1 object file close
      Avoid cross-directory renames and linking on object creation
      Make loose object file reading more careful
      Simplify and rename find_sha1_file()

Marius Storm-Olsen (1):
      Add testcase for merging in a CRLF repo

Mark Levedahl (1):
      git-submodule - Fix errors regarding resolve_relative_url

Mikael Magnusson (1):
      Typo in RelNotes.

Mike Hommey (1):
      Don't allocate too much memory in quote_ref_url

Miklos Vajna (3):
      Remove unused code in parse_commit_buffer()
      git-rebase -i: mention the short command aliases in the todo list
      git-read-tree: document -v option.

Olivier Marin (4):
      remote show: fix the -n option
      builtin-remote: split show_or_prune() in two separate functions
      remote prune: print the list of pruned branches
      remote show: list tracked remote branches with -n

Paul Mackerras (1):
      gitk: Handle detached heads better

Philippe Bruhat (1):
      git-cvsimport: do not fail when CVSROOT is /

Pieter de Bie (1):
      git-send-email: allow whitespace in addressee list

René Scharfe (1):
      Ignore .gitattributes in bare repositories

SZEDER Gábor (2):
      git add: add long equivalents of '-u' and '-f' options
      completion: add more 'git add' options

Shawn O. Pearce (1):
      fast-export: Correctly generate initial commits with no parents

Stephan Beyer (6):
      git-commit.txt: Correct option alternatives
      git-commit.txt: Add missing long/short options
      Docs: Use "-l::\n--long\n" format in OPTIONS sections
      Docs: add some long/short options
      git-describe.txt: document --always
      git-name-rev.txt: document --no-undefined and --always


Version v1.5.6-rc2; changes since v1.5.6-rc1:
---------------------------------------------

Adam Simpkins (2):
      graph API: fix "git log --graph --first-parent"
      git log --graph: print '*' for all commits, including merges

Alex Riesen (1):
      Fix t5516 on cygwin: it does not like double slashes at the beginning of a path

Björn Steinbrink (1):
      name-rev: Fix segmentation fault when using --all

Christian Couder (2):
      documentation: convert "diffcore" and "repository-layout" to man pages
      documentation: move git(7) to git(1)

Daniel Barkalow (1):
      Use nonrelative paths instead of absolute paths for cloned repositories

Dirk Süsserott (1):
      Documentation/git-mailsplit: Enhanced description of -o option

Jakub Narębski (1):
      gitweb: Add charset info to "raw" output of 'text/plain' blobs

Jeff King (1):
      Fix "git clone http://$URL" to check out the worktree when asked

Junio C Hamano (6):
      t7502: do not globally unset GIT_COMMITTER_* environment variables
      t7502: tighten loosely written test sequence
      Documentation: git-log cannot use rev-list specific options
      t7502: honor SHELL_PATH
      GIT 1.5.5.4
      GIT 1.5.6-rc2

Lea Wiemann (2):
      cat-file --batch: flush stdout also when objects are missing
      git-for-each-ref.txt: minor improvements

Michael Dressel (1):
      describe: match pattern for lightweight tags too

Miklos Vajna (1):
      Strbuf documentation: document most functions

Teemu Likonen (1):
      Print info about "git help COMMAND" on git's main usage pages


Version v1.5.6-rc1; changes since v1.5.6-rc0:
---------------------------------------------

Adam Simpkins (2):
      graph API: improve display of merge commits
      graph API: avoid printing unnecessary padding before some octopus merges

Christian Couder (2):
      bisect: use "$GIT_DIR/BISECT_START" to check if we are bisecting
      Documentation: convert "glossary" and "core-tutorial" to man pages

Christian Engwer (1):
      git-svn fails in prop_walk if $self->{path} is not empty

Dmitry V. Levin (1):
      builtin-fetch.c (store_updated_refs): Honor update_local_ref() return value

Gerrit Pape (2):
      Documentation/git-bundle.txt: fix synopsis
      commit --interactive: properly update the index before commiting

Jakub Narębski (2):
      gitweb: Remove gitweb/test/ directory
      gitweb: Fix "next" link on bottom of page

Jamis Buck (1):
      git-reset: honor -q and do not show progress message

Jeff King (1):
      clone: make sure we support the transport type

Johannes Schindelin (1):
      hg-to-git: add --verbose option

Johannes Sixt (3):
      t5700-clone-reference: Quote $U
      Revert "filter-branch: subdirectory filter needs --full-history"
      rebase --interactive: Compute upstream SHA1 before switching branches

John J. Franey (1):
      Clarify description of <repository> argument to pull/fetch for naming remotes.

Junio C Hamano (25):
      tests: do not use implicit "git diff --no-index"
      diff-files: do not play --no-index games
      "git diff": do not ignore index without --no-index
      Update draft release notes for 1.5.6
      log --graph: do not accept log --graphbogus
      log --pretty: do not accept bogus "--prettyshort"
      Release Notes for 1.5.5.2
      Documentation/git.txt: link to 1.5.5.2 documentation.
      Makefile: fix dependency on wt-status.h
      show-branch --current: do not barf on detached HEAD
      git-diff: allow  --no-index semantics a bit more
      git diff --no-index: default to page like other diff frontends
      GIT 1.5.5.3
      t5100: Avoid filename "nul"
      Git::cat_blob: allow using an empty blob to fix git-svn breakage
      fix sha1_pack_index_name()
      Manual subsection to refer to other pages is SEE ALSO
      Documentation: git-cherry uses git-patch-id
      "git checkout -- paths..." should error out when paths cannot be written
      checkout: make reset_clean_to_new() not die by itself
      checkout: consolidate reset_{to_new,clean_to_new}()
      unpack_trees(): allow callers to differentiate worktree errors from merge errors
      checkout: "best effort" checkout
      commit: drop duplicated parents
      GIT v1.5.6-rc1

Karl Wiberg (3):
      Add some tests for git update-ref -d
      Fix path duplication in git svn commit-diff
      Revert "git.el: Set process-environment instead of invoking env"

Kevin Ballard (1):
      Documentation/git-filter-branch.txt: Fix description of --commit-filter

Lea Wiemann (5):
      gitweb: only display "next" links in logs if there is a next page
      t/test-lib.sh: resolve symlinks in working directory, for pathname comparisons
      Git.pm: fix documentation of hash_object
      glossary: improve a few links
      Git.pm: fix return value of config method

Linus Torvalds (2):
      Make pack creation always fsync() the result
      Remove now unnecessary 'sync()' calls

Luciano Rocha (1):
      git-init: accept --bare option

Marius Storm-Olsen (2):
      Clearify the documentation for core.ignoreStat
      Add shortcut in refresh_cache_ent() for marked entries.

Michele Ballabio (1):
      Documentation: fix graph in git-rev-parse.txt

Miklos Vajna (1):
      Revision walking documentation: document most important functions

Nicolas Pitre (1):
      make verify-pack a bit more useful with bad packs

Paolo Bonzini (1):
      rollback lock files on more signals than just SIGINT

Pieter de Bie (1):
      builtin-fast-export: Only output a single parent per line

Seth Falcon (1):
      Add a --dry-run option to git-svn rebase

Shawn O. Pearce (8):
      git-gui: Add a --trace command line option
      git-gui: Handle workdir detection when CYGWIN=nowinsymlinks
      Don't diff empty tree on branch creation in paranoid update hook
      Don't load missing ACL files in paranoid update hook
      Ignore no-op changes in paranoid update hook
      Remove unused remote_prefix member in builtin-remote
      Make "git-remote prune" delete refs according to fetch specs
      Make "git-remote rm" delete refs acccording to fetch specs

Stephan Beyer (2):
      Add test cases for git-am
      Merge t4150-am-subdir.sh and t4151-am.sh into t4150-am.sh

Twiinz (1):
      git-gui: Vertically align textboxes with labels


Version v1.5.6-rc0; changes since v1.5.5.6:
-------------------------------------------

Adam Roben (11):
      Add tests for git cat-file
      git-cat-file: Small refactor of cmd_cat_file
      git-cat-file: Make option parsing a little more flexible
      git-cat-file: Add --batch-check option
      git-cat-file: Add --batch option
      Move git-hash-object tests from t5303 to t1007
      Add more tests for git hash-object
      git-hash-object: Add --stdin-paths option
      Git.pm: Add command_bidi_pipe and command_close_bidi_pipe
      Git.pm: Add hash_and_insert_object and cat_blob
      git-svn: Speed up fetch

Adam Simpkins (11):
      Remove dead code: show_log() sep argument and diff_options.msg_sep
      log: print log entry terminator even if the message is empty
      revision API: split parent rewriting and parent printing options
      Add history graph API
      log and rev-list: add --graph option
      graph API: eliminate unnecessary indentation
      graph API: fix graph mis-alignment after uninteresting commits
      graph API: don't print branch lines for uninteresting merge parents
      log --graph --left-right: show left/right information in place of '*'
      Fix output of "git log --graph --boundary"
      get_revision(): honor the topo_order flag for boundary commits

Alex Riesen (10):
      Use the modern syntax of git-diff-files in t2002-checkout-cache-u.sh
      Improve reporting of errors in config file routines
      Make the exit code of add_file_to_index actually useful
      Extend interface of add_files_to_cache to allow ignore indexing errors
      Add --ignore-errors to git-add to allow it to skip files with read errors
      Add a test for git-add --ignore-errors
      Add a config option to ignore errors for git-add
      Ensure that a test is run in the trash directory
      Fix t6031 on filesystems without working exec bit
      Fix t3701 if core.filemode disabled

Anders Waldenborg (1):
      gitweb: Convert string to internal form before chopping in chop_str

Avery Pennarun (3):
      git-svn: add documentation for --use-log-author option.
      git-svn: Add --add-author-from option.
      git-svn: add documentation for --add-author-from option.

Bart Trojanowski (1):
      make git-status use a pager

Brandon Casey (7):
      filter-branch.sh: support nearly proper tag name filtering
      compat/fopen.c: avoid clobbering the system defined fopen macro
      repack: modify behavior of -A option to leave unreferenced objects unpacked
      git-gc: always use -A when manually repacking
      builtin-gc.c: deprecate --prune, it now really has no effect
      builtin-clone.c: Need to closedir() in copy_or_link_directory()
      t/Makefile: "trash" directory was renamed recently

Bryan Donlan (10):
      git-rebase.sh: Fix --merge --abort failures when path contains whitespace
      config.c: Escape backslashes in section names properly
      git-send-email.perl: Handle shell metacharacters in $EDITOR properly
      test-lib.sh: Add a test_set_editor function to safely set $VISUAL
      Use test_set_editor in t9001-send-email.sh
      test-lib.sh: Fix some missing path quoting
      lib-git-svn.sh: Fix quoting issues with paths containing shell metacharacters
      Don't use the 'export NAME=value' in the test scripts.
      Fix tests breaking when checkout path contains shell metacharacters
      Rename the test trash directory to contain spaces.

Caio Marcelo de Oliveira Filho (1):
      git-format-patch: add --no-binary to omit binary changes in the patch.

Chris Frey (2):
      Documentation/git-prune.txt: document unpacked logic
      Documentation/git-repack.txt: document new -A behaviour

Chris Parsons (1):
      Updated status to show 'Not currently on any branch' in red

Christian Couder (21):
      bisect: add "git bisect help" subcommand to get a long usage string
      help: use man viewer path from "man.<tool>.path" config var
      documentation: help: add "man.<tool>.path" config variable
      help: use "man.<tool>.cmd" as custom man viewer command
      documentation: help: add info about "man.<tool>.cmd" config var
      documentation: web--browse: add a note about konqueror
      rev-parse: teach "--verify" to be quiet when using "-q" or "--quiet"
      rev-parse: fix --verify to error out when passed junk after a good rev
      Documentation: hooks: fix missing verb in pre-applypatch description
      Documentation: rename "hooks.txt" to "githooks.txt" and make it a man page
      Documentation: improve "add", "pull" and "format-patch" examples
      Documentation: bisect: add a few "git bisect run" examples
      rev-parse: add test script for "--verify"
      rev-parse: fix using "--default" with "--verify"
      rev-parse --verify: do not output anything on error
      Documentation: rev-parse: add a few "--verify" and "--default" examples
      bisect: add test cases to check that "git bisect start" is atomic
      bisect: fix left over "BISECT_START" file when starting with junk rev
      bisect: trap critical errors in "bisect_start"
      bisect: use a detached HEAD to bisect
      Documentation: convert tutorials to man pages

Christian Stimming (3):
      git-gui: Update German translation
      gitk: Update German translation
      gitk: German translation again updated

Clemens Buchacher (2):
      Reset the signal being handled
      http-push: remove remote locks on exit signals

Clifford Caoile (1):
      git.el: Set process-environment instead of invoking env

Dan McGee (3):
      completion: allow 'git remote' subcommand completion
      completion: remove use of dashed git commands
      Allow cherry-pick (and revert) to add signoff line

Daniel Barkalow (12):
      Make walker.fetch_ref() take a struct ref.
      Make ls-remote http://... list HEAD, like for git://...
      Mark the list of refs to fetch as const
      Add a lockfile function to append to a file
      Add a library function to add an alternate to the alternates file
      Have a constant extern refspec for "--tags"
      Allow for having for_each_ref() list extra refs
      Add a function to set a non-default work tree
      Provide API access to init_db()
      Build in clone
      clone: fall back to copying if hardlinking fails
      Test that --reference actually suppresses fetching referenced objects

Dmitry Potapov (1):
      git-init: autodetect core.ignorecase

Dustin Sallings (2):
      Allow tracking branches to set up rebase by default.
      Allow tracking branches to set up rebase by default.

Eric Wong (1):
      git-svn: fix cloning of HTTP URLs with '+' in their path

Frank Lichtenheld (4):
      var: Don't require to be in a git repository.
      Git.pm: Don't require a repository instance for config
      Git.pm: Don't require repository instance for ident
      send-email: Don't require to be called in a repository

Gerrit Pape (3):
      gitweb: fallback to system-wide config file if default config does not exist
      gitweb: fallback to system-wide config file (fixup)
      gitk: Makefile/install: force permissions when installing files and dirs

Govind Salinas (1):
      pretty.c: add %x00 format specifier.

Gustaf Hendeby (6):
      git-svn: Make create-ignore use git add -f
      Documentation: Add create-ignore to git svn manual
      Documentation/config.txt: Add git-gui options
      Documentation: Add missing git svn commands
      Documentation: Fix skipped section level
      Make git add -n and git -u -n output consistent

Heikki Orsila (7):
      Make core.sharedRepository more generic
      Document functions xmemdupz(), xread() and xwrite()
      Die for an early EOF in a file reading loop
      Make read_in_full() and write_in_full() consistent with xread() and xwrite()
      Cleanup xread() loops to use read_in_full()
      Add log.date config variable
      Remove redundant code, eliminate one static variable

Imran M Yousuf (1):
      Use '-f' option to point to the .gitmodules file

Jakub Narębski (1):
      gitweb: Use feed link according to current view

Jeff King (12):
      add--interactive: ignore mode change in 'p'atch command
      add--interactive: allow user to choose mode update
      git-fetch: always show status of non-tracking-ref fetches
      git-remote: show all remotes with "git remote show"
      Documentation: point git-prune users to git-gc
      add merge.renamelimit config option
      bump rename limit defaults
      diff: make "too many files" rename warning optional
      fix bsd shell negation
      t5000: tar portability fix
      clone: bsd shell portability fix
      filter-branch: fix variable export logic

Johan Herland (2):
      Add a test for another combination of --reference
      Add test for cloning with "--reference" repo being a subset of source repo

Johannes Schindelin (10):
      Provide git_config with a callback-data parameter
      builtin-clone: fix initial checkout
      cvsexportcommit: chomp only removes trailing whitespace
      diff options: Introduce --ignore-submodules
      Teach update-index about --ignore-submodules
      Ignore dirty submodule states during rebase and stash
      cvsexportcommit: introduce -W for shared working trees (between Git and CVS)
      submodule update: add convenience option --init
      pull --rebase: exit early when the working directory is dirty
      mailsplit and mailinfo: gracefully handle NUL characters

Johannes Sixt (3):
      builtin-commit.c: Remove a redundant assignment.
      git-gui: Report less precise object estimates for database compression
      compat-util: avoid macro redefinition warning

Jon Loeliger (1):
      Add otherwise missing --strict option to unpack-objects summary.

Junio C Hamano (24):
      Optimize rename detection for a huge diff
      t5300: add test for "unpack-objects --strict"
      unpack-objects: fix --strict handling
      rebase [--onto O] A B: omit needless checkout
      sha1-lookup: more memory efficient search in sorted list of SHA-1
      diff: make --dirstat binary-file safe
      sha1-lookup: make selection of 'middle' less aggressive
      log: teach "terminator" vs "separator" mode to "--pretty=format"
      git_config_bool_or_int()
      write_index(): optimize ce_smudge_racily_clean_entry() calls with CE_UPTODATE
      diff-files: mark an index entry we know is up-to-date as such
      Fix git_config_bool_or_int
      First batch of post 1.5.5 updates
      diff: a submodule not checked out is not modified
      diff-lib.c: rename check_work_tree_entity()
      is_racy_timestamp(): do not check timestamp for gitlinks
      git-svn: add test for --add-author-from and --use-log-author
      builtin-apply: typofix
      builtin-apply: accept patch to an empty file
      builtin-apply: do not declare patch is creation when we do not know it
      unpack-trees: allow Porcelain to give different error messages
      "git-add -n -u" should not add but just report
      mailinfo: apply the same fix not to lose NULs in BASE64 and QP codepaths
      mailsplit: minor clean-up in read_line_with_nul()

Jörg Sommer (1):
      post-merge: Add it's not executed if merge failed.

Krzysztof Kowalczyk (1):
      alloc_ref_from_str(): factor out a common pattern of alloc_ref from string

Lars Hjemli (8):
      Add platform-independent .git "symlink"
      Teach resolve_gitlink_ref() about the .git file
      Teach git-submodule.sh about the .git file
      Teach GIT-VERSION-GEN about the .git file
      git-branch: add support for --merged and --no-merged
      git-branch.txt: compare --contains, --merged and --no-merged
      Add tests for `branch --[no-]merged`
      revision.c: really honor --first-parent

Linus Torvalds (12):
      Make unpack_trees_options bit flags actual bitfields
      Move name hashing functions into a file of its own
      Make "index_name_exists()" return the cache_entry it found
      Make hash_name_lookup able to do case-independent lookups
      Add 'core.ignorecase' option
      Make branch merging aware of underlying case-insensitive filsystems
      Make unpack-tree update removed files before any updated files
      When adding files to the index, add support for case-independent matches
      Make git-add behave more sensibly in a case-insensitive environment
      Optimize match_pathspec() to avoid fnmatch()
      Avoid some unnecessary lstat() calls
      Optimize symlink/directory detection

Liu Yubao (1):
      Documentation on --git-dir and --work-tree

Marcel Koeppen (2):
      Replace in-place sed in t7502-commit
      Fix prepare-commit-msg hook and replace in-place sed

Mark Hills (1):
      Be more careful with objects directory permissions on clone

Martin Koegler (3):
      unpack-objects: prevent writing of inconsistent objects
      receive-pack: allow using --strict mode for unpacking objects
      t5300: add test for "index-pack --strict"

Matthew Ogilvie (3):
      git-cvsserver: add mechanism for managing working tree and current directory
      implement gitcvs.usecrlfattr
      git-cvsserver: add ability to guess -kb from contents

Matthias Kestenholz (1):
      Use color.ui variable in scripts too

Matthieu Moy (1):
      git-svn: detect and fail gracefully when dcommitting to a void

Michele Ballabio (4):
      gitk: Disable "Reset %s branch to here" when on a detached head
      gitk: Move es.po where it belongs
      builtin-cat-file.c: use parse_options()
      change quoting in test t1006-cat-file.sh

Mike Ralphson (1):
      Makefile: update the default build options for AIX

Miklos Vajna (11):
      git-gc --auto: add pre-auto-gc hook
      Documentation/hooks: add pre-auto-gc hook
      contrib/hooks: add an example pre-auto-gc hook
      git checkout: add -t alias for --track
      git-format-patch: add a new format.cc configuration variable
      git-send-email: add a new sendemail.cc configuration variable
      Add tests for sendemail.cc configuration variable
      INSTALL: add a note about GNU interactive tools has been renamed
      git-fast-import: rename cmd_*() functions to parse_*()
      git-merge: exclude unnecessary options from OPTIONS_SPEC
      CodingGuidelines: Add a note to avoid assignments inside if()

Nicolas Pitre (9):
      pack-objects: small cleanup
      pack-objects: remove some double negative logic
      pack-objects: simplify the condition associated with --all-progress
      pack-objects: clean up write_object() a bit
      pack-objects: move compression code in a separate function
      pack-objects: allow for early delta deflating
      pack-objects: fix early eviction for max depth delta objects
      add a force_object_loose() function
      let pack-objects do the writing of unreachable objects as loose objects

Paolo Bonzini (2):
      Add a remote.*.mirror configuration option
      add special "matching refs" refspec

Paul Mackerras (40):
      gitk: Use git log without --topo-order and reorganize the commits ourselves
      gitk: Fix bug in assigning row numbers to arcs
      gitk: Fix bug in parsing multiple revision arguments
      gitk: Compute row numbers and order tokens lazily
      gitk: Fix a couple of bugs
      gitk: Fix more bugs resulting in Tcl "no such element in array" errors
      gitk: More bug fixes and cleanups
      gitk: Implement date mode in the new framework
      gitk: Fix another collection of bugs
      gitk: Don't try to show local changes from a head that isn't shown
      gitk: Keep the same commits visible as other commits come in
      gitk: Fix some corner cases in the targetid/targetrow stuff
      gitk: Fix a couple of bugs in the find function
      gitk: Fix potential bug with fake commit IDs in renumbervarc
      gitk: Index [fnvr]highlights by id rather than row
      gitk: Fix handling of flag arguments
      gitk: Fix a bug in make_disporder
      gitk: Select head of current branch by default
      gitk: Select something appropriate on cherry-pick, branch reset and checkout
      gitk: Fix bug where editing an existing view would cause an infinite loop
      gitk: Fix bug causing Tcl error when no commits are selected
      gitk: Fix cherry-picking to insert a real row not a fake row
      gitk: Cope better with getting commits that we have already seen
      gitk: Fix bug where arcs could get lost
      gitk: Handle updating with path limiting better
      gitk: Fix problems with target row stuff
      gitk: Don't filter view arguments through git rev-parse
      gitk: Correct a few strings and comments to say "git log"
      gitk: Fix some corner cases in computing vrowmod and displayorder
      gitk: Avoid a crash in selectline if commitinfo($id) isn't set
      gitk: Fix problem with target row not being in scroll region
      gitk: Reorganize processing of arguments for git log
      gitk: Fix handling of tree file list with special chars in names
      gitk: Make updates go faster
      gitk: Synchronize highlighting in file view for 'f' and 'b' commands
      gitk: Show current row number and total number of rows
      gitk: Add a progress bar for checking out a head
      gitk: Fix "wrong # coordinates" error on reload
      gitk: Fix bug where current row number display stops working
      gitk: Fix bug introduced by "gitk: Fix "wrong # coordinates" error on reload"

Paul Oliver (1):
      Make git-cvsimport remove ['s from tags, as bad_ref_char doesn't allow them.

Peter Krefting (1):
      gitk: Initial Swedish translation.

Ping Yin (5):
      git-submodule summary: --for-status option
      builtin-status: submodule summary support
      builtin-status: Add tests for submodule summary
      t4027: test diff for submodule with empty directory
      Add t7506 to test submodule related functions for git-status

Rafael Garcia-Suarez (1):
      Spelling fixes in the gitweb documentation

Richard Quirk (2):
      bash: Add completion for gitk --merge
      Documentation gitk: Describe what --merge does

SZEDER Gábor (5):
      doc: moved merge.* config variables into separate merge-config.txt
      merge, pull: introduce '--(no-)stat' option
      add 'merge.stat' config variable
      fmt-merge-msg: add '--(no-)log' options and 'merge.log' config variable
      merge, pull: add '--(no-)log' command line option

Santi Béjar (3):
      Preparation to call determine_author_info from prepare_to_commit
      commit: Show author if different from committer
      commit: Show committer if automatic

Santiago Gala (1):
      gitk: Spanish translation of gitk

Sebastian Schuberth (1):
      mergetool: Make ECMerge use the settings as specified by the user in the GUI

Shawn O. Pearce (3):
      git-gui: Don't use '$$cr master' with aspell earlier than 0.60
      git-gui: Setup branch.remote,merge for shorthand git-pull
      git-gui: Delete branches with 'git branch -D' to clear config

Steffen Prohaska (4):
      t0050: Test autodetect core.ignorecase
      t0050: Set core.ignorecase case to activate case insensitivity
      t0050: Add test for case insensitive add
      t0050: Fix merge test on case sensitive file systems

Stephan Beyer (1):
      builtin-apply.c: use git_config_string() to get apply_default_whitespace

Stephen R. van den Berg (2):
      Simplify and fix --first-parent implementation
      git-svn: Same default as cvsimport when using --use-log-author

Steven Grimm (1):
      Add svn-compatible "blame" output format to git-svn

Teemu Likonen (1):
      Documentation/git-web--browse.txt: fix small typo

Thomas Arcila (1):
      gitk: Allow users to view diffs in external diff viewer

Trent Piepho (1):
      cvsexportcommit: Create config option for CVS dir


Version v1.5.5.6; changes since v1.5.5.5:
-----------------------------------------

Junio C Hamano (2):
      gitweb: do not run "git diff" that is Porcelain
      GIT 1.5.4.7


Version v1.5.5.5; changes since v1.5.5.4:
-----------------------------------------

Fred Maranhão (1):
      fix typo in tutorial

Johannes Sixt (1):
      Remove exec bit from builtin-fast-export.c

Junio C Hamano (4):
      diff.c: fix emit_line() again not to add extra line
      git-shell: accept "git foo" form
      GIT 1.5.4.6
      GIT 1.5.5.5

Miklos Vajna (1):
      git-read-tree: document -v option.

SZEDER Gábor (1):
      diff: reset color before printing newline


Version v1.5.5.4; changes since v1.5.5.3:
-----------------------------------------

Björn Steinbrink (1):
      name-rev: Fix segmentation fault when using --all

Junio C Hamano (1):
      GIT 1.5.5.4

Lea Wiemann (1):
      git-for-each-ref.txt: minor improvements

Michael Dressel (1):
      describe: match pattern for lightweight tags too


Version v1.5.5.3; changes since v1.5.5.2:
-----------------------------------------

Christian Couder (1):
      bisect: print an error message when "git rev-list --bisect-vars" fails

Gerrit Pape (3):
      git-bisect.sh: don't accidentally override existing branch "bisect"
      Documentation/git-bundle.txt: fix synopsis
      commit --interactive: properly update the index before commiting

Horst H. von Brand (1):
      Fix recipient santitization

Jeff King (2):
      send-email: specify content-type of --compose body
      send-email: rfc2047-quote subject lines with non-ascii characters

Johannes Sixt (1):
      Revert "filter-branch: subdirectory filter needs --full-history"

Junio C Hamano (3):
      Release Notes for 1.5.5.2
      show-branch --current: do not barf on detached HEAD
      GIT 1.5.5.3

Lea Wiemann (1):
      gitweb: only display "next" links in logs if there is a next page

Michele Ballabio (1):
      Documentation: fix graph in git-rev-parse.txt

Pieter de Bie (1):
      builtin-fast-export: Only output a single parent per line


Version v1.5.5.2; changes since v1.5.5.1:
-----------------------------------------

A Large Angry SCM (1):
      git-repack: re-enable parsing of -n command line option

Alex Riesen (2):
      Use "=" instead of "==" in condition as it is more portable
      Fix use after free() in builtin-fetch

Andy Parkins (1):
      post-receive-email: fix accidental removal of a trailing space in signature line

Ariel Badichi (2):
      copy.c: copy_fd - correctly report write errors
      archive.c: format_subst - fixed bogus argument to memchr

Brandon Casey (1):
      git-clone.txt: Adjust note to --shared for new pruning behavior of git-gc

Dan McGee (1):
      Remove 'header' from --signoff option description

Dmitry Potapov (1):
      git-gc --prune is deprecated

Dustin Sallings (1):
      Documentation/config.txt: Mention branch.<name>.rebase applies to "git pull"

Florian Ragwitz (1):
      filter-branch: Documentation fix.

Gerrit Pape (1):
      diff-options.txt: document the new "--dirstat" option

Heikki Orsila (1):
      Add missing "short" alternative to --date in rev-list-options.txt

Ian Hilt (1):
      Documentation/git-describe.txt: make description more readable

Jeff King (11):
      Don't force imap.host to be set when imap.tunnel is set
      t5516: remove ambiguity test (1)
      doc/git-gc: add a note about what is collected
      push: allow unqualified dest refspecs to DWIM
      remote: create fetch config lines with '+'
      fix reflog approxidate parsing bug
      cvsimport: always pass user data to "system" as a list
      checkout: don't rfc2047-encode oneline on detached HEAD
      doc: clarify definition of "update" for git-add -u
      doc/git-daemon: s/uploadarchive/uploadarch/
      git-am: fix typo in usage message

Johannes Sixt (2):
      wt-status.h: declare global variables as extern
      rev-parse --symbolic-full-name: don't print '^' if SHA1 is not a ref

Jon Loeliger (2):
      git-filter-branch: Clarify file removal example.
      git-show.txt: Not very stubby these days.

Junio C Hamano (3):
      write-tree: properly detect failure to write tree objects
      clone: detect and fail on excess parameters
      fetch-pack: brown paper bag fix

Linus Torvalds (1):
      fetch-pack: do not stop traversing an already parsed commit

Matt Graham (1):
      Linked glossary from cvs-migration page

Matthew Ogilvie (1):
      gitattributes: Fix subdirectory attributes specified from root directory

Michael Weber (1):
      svn-git: Use binmode for reading/writing binary rev maps

Miklos Vajna (1):
      diff options documentation: refer to --diff-filter in --name-status

Sam Vilain (1):
      Amend git-push refspec documentation

Shawn O. Pearce (1):
      Clarify repack -n documentation

Sitaram Chamarty (1):
      builtin-commit.c: add -u as short name for --untracked-files

Teemu Likonen (1):
      bash: Add completion for git diff --base --ours --theirs

Thomas Guyot-Sionnest (1):
      git-svn bug with blank commits and author file

martin f. krafft (2):
      Escape project name in regexp
      Escape project names before creating pathinfo URLs


Version v1.5.5.1; changes since v1.5.5:
---------------------------------------

Alberto Bertogli (1):
      builtin-apply: Show a more descriptive error on failure when opening a patch

Björn Steinbrink (1):
      Fix section about backdating tags in the git-tag docs

Carlos Rica (2):
      Fix documentation syntax of optional arguments in short options.
      core-tutorial.txt: Fix showing the current behaviour.

Christian Couder (4):
      bisect: fix bad rev checking in "git bisect good"
      bisect: report bad rev better
      bisect: squelch "fatal: ref HEAD not a symref" misleading message
      git-bisect: make "start", "good" and "skip" succeed or fail atomically

Clifford Caoile (1):
      Docs gitk: Explicitly mention the files that gitk uses (~/.gitk)

Daniel Barkalow (1):
      Fix config key miscount in url.*.insteadOf

Dirk Süsserott (1):
      Documentation/git-request-pull: Fixed a typo ("send" -> "end")

Jakub Narębski (1):
      gitweb: Fix 'history' view for deleted files with history

Jeff King (1):
      git-fetch: fix status output when not storing tracking ref

Johannes Sixt (1):
      Document option --only of git commit

Jon Loeliger (1):
      Clarify and fix English in "git-rm" documentation

Jonas Fonseca (1):
      git-remote: reject adding remotes with invalid names

Junio C Hamano (7):
      Document -w option to shortlog
      Documentation/git-submodule: typofix
      t7401: squelch garbage output
      rebase: do not munge commit log message
      git-am: minor cleanup
      am: POSIX portability fix
      GIT 1.5.5.1

Linus Torvalds (2):
      Ignore leading empty lines while summarizing merges
      git-am: cope better with an empty Subject: line

Mark Levedahl (1):
      git-submodule - possibly use branch name to describe a module

Matthieu Moy (1):
      Document that WebDAV doesn't need git on the server, and works over SSL

Michele Ballabio (1):
      revision.c: make --date-order overriddable

Pedro Melo (1):
      Force the medium pretty format on calls to git log

Ping Yin (1):
      git-submodule: Avoid 'fatal: cannot describe' message

René Scharfe (1):
      git-archive: ignore prefix when checking file attribute

Scott Collins (1):
      Clarify documentation of git-cvsserver, particularly in relation to git-shell

Shawn Bohrer (2):
      git clean: Don't automatically remove directories when run within subdirectory
      git clean: Add test to verify directories aren't removed with a prefix


Version v1.5.5; changes since v1.5.5-rc3:
-----------------------------------------

Christian Couder (2):
      git-gui: Update french translation
      test suite: remove useless TERM cruft in "t7005-editor.sh"

Eric Wong (1):
      git-svn: fix following renamed paths when tracking a single path

Gerrit Pape (1):
      gitk: Fix changing colors through Edit->Preferences

Jakub Narębski (1):
      Revert "gitweb: Add 'status_str' to parse_difftree_raw_line output"

Junio C Hamano (2):
      Fix "git apply" to correctly enforce "match at the beginning"
      GIT 1.5.5

Kevin Ballard (1):
      git-fetch: Don't trigger a bus error when given the refspec "tag"

Michele Ballabio (1):
      git-gui: use +/- instead of ]/[ to show more/less context in diff

Pascal Obry (2):
      Add interactive option in rebase command completion list.
      Add prefix oriented completions for diff and format-patch commands.

Peter Eriksen (2):
      git-pack-objects.txt: Make wording slightly less ambiguous
      Add description of OFS_DELTA to the pack format description

Shawn O. Pearce (1):
      git-gui: Switch keybindings for [ and ] to bracketleft and bracketright


Version v1.5.5-rc3; changes since v1.5.5-rc2:
---------------------------------------------

Brandon Casey (2):
      mktag.c: improve verification of tagger field and tests
      mktag.c: tweak validation of tagger field and adjust test script

Bryan Donlan (1):
      Silence cpio's "N blocks" output when cloning locally

Christian Couder (1):
      help: Add a missing OPT_END().

Damien Diederen (7):
      cvsserver: Respond to the 'editors' and 'watchers' commands
      cvsserver: Only print the file part of the filename in status header
      cvsserver: Do not include status output for subdirectories if -l is passed
      cvsserver: Add a few tests for 'status' command
      cvsserver: Implement update -p (print to stdout)
      cvsserver: Add test for update -p
      cvsserver: Use the user part of the email in log and annotate results

Eric Wong (1):
      git-svn: remove redundant slashes from show-ignore

Johannes Sixt (3):
      filter-branch: Test renaming directories in a tree-filter
      verify-tag: Clean up the temporary file if gpg cannot be started.
      t7004-tag: Skip more tests if gpg is not available.

Jonathan del Strother (1):
      git-gui: Add shortcut keys for Show More/Less Context

Josh Elsasser (1):
      Allow git-cvsserver database table name prefix to be specified.

Junio C Hamano (5):
      Add corner case tests for diff-index and diff-files
      diff-index: careful when inspecting work tree items
      diff-files: careful when inspecting work tree items
      Accept git aliases outside a git repository
      GIT 1.5.5-rc3

Marius Storm-Olsen (1):
      git-p4: Handle Windows EOLs properly after removal of p4 submit template handling.

Paolo Bonzini (1):
      git-cvsserver: handle change type T

Shawn O. Pearce (1):
      git-gui 0.10

Teemu Likonen (1):
      Describe the bug in handling filenames with funny characters in 'git add -i'

veillette@yahoo.ca (1):
      filter-branch: Fix renaming a directory in the tree-filter


Version v1.5.5-rc2; changes since v1.5.5-rc1:
---------------------------------------------

Brandon Casey (1):
      t/t3800-mktag.sh: use test_must_fail rather than '!'

Daniel Barkalow (2):
      Tighten refspec processing
      Fix branches file configuration

Dirk Süsserott (1):
      Documentation: git-tag '-m'/'-F' implies '-a'

Frank Lichtenheld (1):
      t9600-cvsimport.sh: set HOME before checking for cvsps availability

Gerrit Pape (1):
      imap-send: properly error out if imap.host is not set in config

Guanqun Lu (2):
      Fix the wrong output of `git-show v1.3.0~155^2~4` in documentation.
      Fix the wrong output of `git-show v1.3.0~155^2~4` in documentation.

Jeff King (1):
      Documentation: clarify use of .git{ignore,attributes} versus .git/info/*

Johannes Schindelin (2):
      RelNotes: mention checkout/branch's --track option, too
      init: show "Reinit" message even in an (existing) empty repository

Johannes Sixt (1):
      builtin-remote: Fix missing newline at end of listing of pushed branches

Julian Phillips (1):
      Documentation/git-checkout: Update summary to reflect current abilities

Junio C Hamano (7):
      refspec: allow colon-less wildcard "refs/category/*"
      git-fetch test: test tracking fetch results, not just FETCH_HEAD
      test_must_fail: 129 is a valid error code from usage()
      Update draft release notes for 1.5.4.5
      Update draft release notes for 1.5.5
      builtin-prune: protect objects listed on the command line
      GIT 1.5.4.5

Michele Ballabio (3):
      parse-options.c: introduce OPT_DATE
      Add tests for git-prune
      builtin-prune.c: use parse_options()

SZEDER Gábor (1):
      Always set *nongit_ok in setup_git_directory_gently()


Version v1.5.5-rc1; changes since v1.5.5-rc0:
---------------------------------------------

Brandon Casey (2):
      builtin-gc.c: allow disabling all auto-gc'ing by assigning 0 to gc.auto
      t/t7003-filter-branch.sh: use test_must_fail rather than '!'

Daniel Barkalow (3):
      Tighten refspec processing
      Fix t3200 config
      Fix tag following

Eyvind Bernhardsen (2):
      fast-import: Allow "reset" to delete a new branch without error
      fast-import: Document the effect of "merge" with no "from" in a commit

Johannes Schindelin (1):
      remote show: do not show symbolic refs

Junio C Hamano (10):
      Makefile: DIFF_OBJS is not special at all these days
      Makefile: flatten enumeration of headers, objects and programs
      t1000: use "test_must_fail git frotz", not "! git frotz"
      git-merge-one-file: fix longstanding stupid thinko
      Test: catch if trash cannot be removed
      Add tests to catch problems with un-unlinkable symlinks
      Fix read-tree not to discard errors
      remote.c: Fix overtight refspec validation
      gc --auto: raise default auto pack limit from 20 to 50
      GIT 1.5.5-rc1

Kevin Ballard (4):
      Add --reverse to the git-rev-list usage string
      Document the sendemail.smtpserverport config variable
      Don't try and percent-escape existing percent escapes in git-svn URIs
      Make git-svn tests behave better on OS X

Linus Torvalds (3):
      Don't update unchanged merge entries
      Fix possible Solaris problem in 'checkout_entry()'
      Make revision limiting more robust against occasional bad commit dates

Marius Storm-Olsen (1):
      git-p4: Optimize the fetching of data from perforce.

Miklos Vajna (1):
      Documentation/git-merge: document subtree strategy.

Nicolas Pitre (1):
      make it easier for people who just want to get rid of 'git gc --auto'

Ralf Wildenhues (1):
      Improve description of git filter-branch.

Shawn Bohrer (2):
      git-p4: Unset P4DIFF environment variable when using 'p4 -du diff'
      git-p4: Use P4EDITOR environment variable when set


Version v1.5.5-rc0; changes since v1.5.4.7:
-------------------------------------------

Adam Piątyszek (1):
      git-gui: Add option for changing the width of the commit message text box

Alex Riesen (4):
      Fix builtin checkout crashing when given an invalid path
      Fix test for cleanup failure in t7300 on Windows
      Do not use GUID on dir in git init --shared=all on FreeBSD
      git-gui: update russian translation

Alexandre Julliard (5):
      git.el: Support for showing unknown/ignored directories.
      git.el: Added a command to amend a commit.
      git.el: Check for existing buffers on revert.
      git.el: Better handling of subprocess errors.
      git.el: Do not display empty directories.

Andreas Ericsson (1):
      pack-objects: Add runtime detection of online CPU's

Brandon Casey (13):
      builtin-reflog.c: fix typo that accesses an unset variable
      Add compat/fopen.c which returns NULL on attempt to open directory
      builtin-reflog.c: don't install new reflog on write failure
      reflog-delete: parse standard reflog options
      git-reflog: add option --rewrite to update reflog entries while expiring
      refs.c: make close_ref() and commit_ref() non-static
      git-reflog: add option --updateref to write the last reflog sha1 into the ref
      git-stash: add new 'drop' subcommand
      git-stash: add new 'pop' subcommand
      pack-objects: Print a message describing the number of threads for packing
      t3903-stash.sh: Add missing '&&' to body of testcase
      git-reflog.txt: Document new commands --updateref and --rewrite
      t3903-stash.sh: Add tests for new stash commands drop and pop

Brian Downing (1):
      compat: Add simplified merge sort implementation from glibc

Bruno Ribas (2):
      gitweb: Make use of the $git_dir variable at sub git_get_project_url_list
      gitweb: Use the config file to set repository owner's name.

Carl Worth (1):
      Eliminate confusing "won't bisect on seeked tree" failure

Carlos Rica (1):
      Make builtin-reset.c use parse_options.

Charles Bailey (6):
      Tidy up git mergetool's backup file behaviour
      Changed an internal variable of mergetool to support custom commands
      Teach git mergetool to use custom commands defined at config time
      Add a very basic test script for git mergetool
      git-mergetool documentaiton: show toolnames in typewriter font
      merge-tool documentation: describe custom command usage

Cheng Renquan (4):
      cleanup: remove unused git_checkout_config
      whatchanged documentation: share description of --pretty with others
      specify explicit "--pretty=medium" with `git log/show/whatchanged`
      log/show/whatchanged: introduce format.pretty configuration

Christian Couder (17):
      help: make 'git-help--browse' usable outside 'git-help'.
      help--browse: add '--config' option to check a config option for a browser.
      Rename 'git-help--browse.sh' to 'git-web--browse.sh'.
      instaweb: use 'git-web--browse' to launch browser.
      config: add test cases for empty value and no value config variables.
      Documentation: instaweb: add 'git-web--browse' information.
      web--browse: Add a few quotes in 'init_browser_path'.
      Documentation: add 'git-web--browse.txt' and simplify other docs.
      help.c: use 'git_config_string' to get 'help_default_format'.
      run-command: Redirect stderr to a pipe before redirecting stdout to stderr
      help: add "man.viewer" config var to use "woman" or "konqueror"
      Documentation: help: describe 'man.viewer' config variable
      help: implement multi-valued "man.viewer" config option
      Documentation: help: explain 'man.viewer' multiple values
      help: warn if specified 'man.viewer' is unsupported, instead of erroring out
      web--browse: use custom commands defined at config time
      Documention: web--browse: add info about "browser.<tool>.cmd" config var

Christian Stimming (4):
      git-gui: (i18n) Fix a bunch of still untranslated strings.
      git-gui: Update German translation.
      git-gui: (i18n) Add newly added translation strings to template.
      git-gui: Update German translation.

Clemens Buchacher (2):
      http-push: push <remote> :<branch> deletes remote branch
      http-push: add regression tests

Daniel Barkalow (33):
      Test :/string form for checkout
      Reduce the number of connects when fetching
      Allow callers of unpack_trees() to handle failure
      Add flag to make unpack_trees() not print errors.
      Send unpack-trees debugging output to stderr
      Discard "deleted" cache entries after using them to update the working tree
      Add "skip_unmerged" option to unpack_trees.
      Build-in merge-recursive
      Move create_branch into a library file
      Use diff -u instead of diff in t7201
      Library function to check for unmerged index entries
      Move code to clean up after a branch change to branch.c
      Build in checkout
      Clean up reporting differences on branch switch
      API documentation for remote.h
      Add more tests for format-patch
      Improve message-id generation flow control for format-patch
      Export some email and pretty-printing functions
      Use ALLOC_GROW in remote.{c,h}
      Add a --cover-letter option to format-patch
      Add tests for extra headers in format-patch
      Fix format.headers not ending with a newline
      Combine To: and Cc: headers
      Support a --cc=<email> option in format-patch
      Resolve value supplied for no-colon push refspecs
      builtin-checkout.c: Remove unused prefix arguments in switch_branches path
      Add support for url aliases in config files
      Add API access to shortlog
      Improve collection of information for format-patch --cover-letter
      Always use the current connection's remote ref list in git protocol
      Use diff_tree() directly in making cover letter
      Write index file on any checkout of files
      Write diff output to a file in struct diff_options

David Aguilar (1):
      gitk: Don't show local changes when we there is no work tree

David Brown (1):
      git-send-email: Generalize auto-cc recipient mechanism.

David Kågedal (1):
      git.el: Set process-environment instead of invoking env

Dmitry Potapov (3):
      git-web--browse: do not start the browser with nohup
      Make private quote_path() in wt-status.c available as quote_path_relative()
      git-clean: correct printing relative path

Eric Wong (1):
      git-svn: improve repository URL matching when following parents

Florian La Roche (1):
      gitweb: Make feed entries point to commitdiff view

Frank Lichtenheld (1):
      gc: Add --quiet option

Gerrit Pape (4):
      gitk: properly deal with tag names containing / (slash)
      git-merge-index documentation: clarify synopsis
      builtin-tag.c: remove cruft
      hash-object: cleanup handling of command line options

Jakub Narębski (11):
      gitweb: Fix displaying unchopped argument in chop_and_escape_str
      gitweb: Add new option -nohtml to quot_xxx subroutines
      gitweb: Fix bug in href(..., -replay=>1) when using 'pathinfo' form
      gitweb: Fix bugs in git_search_grep_body: it's length(), not len()
      gitweb: Better cutting matched string and its context
      Add '--fixed-strings' option to "git log --grep" and friends
      gitweb: Change parse_commits signature to allow for multiple options
      gitweb: Simplify fixed string search
      Documentation: Remove --{min,max}-age option from git-log(1)
      gitweb: Mark first match when searching commit messages
      gitweb: Fix and simplify pickaxe search

James Bowes (1):
      Add a BuildRequires for gettext in the spec file.

Jason McMullan (1):
      Remove $Id: ..$ $Header: ..$ etc from +ko and +k files during import

Jay Soffian (8):
      git-web--browse: fix misplaced quote in init_browser_path()
      git-help--browse: improve browser support under OS X
      builtin-checkout.c: fix possible usage segfault
      branch: optionally setup branch.*.merge from upstream local branches
      doc: documentation update for the branch track changes
      Correct git-pull documentation
      send-email: fix In-Reply-To regression
      pull: pass --strategy along to to rebase

Jean-Luc Herren (1):
      fast-import: exit with proper message if not a git dir

Jeff King (31):
      allow suppressing of global and system config
      fix config reading in tests
      hard-code the empty tree object
      add--interactive: handle initial commit better
      git_config_*: don't assume we are parsing a config file
      t3404: use configured shell instead of /bin/sh
      diff: fix java funcname pattern for solaris
      t9001: enhance fake sendmail test harness
      send-email: test compose functionality
      help: use parseopt
      make alias lookup a public, procedural function
      help: respect aliases
      use build-time SHELL_PATH in test scripts
      rename: warn user when we have turned off rename detection
      allow git-am to run in a subdirectory
      Add a test for read-tree -u --reset with a D/F conflict
      gitk: make autoselect optional
      tr portability fixes
      t0050: perl portability fix
      more tr portability test script fixes
      grep portability fix: don't use "-e" or "-q"
      remove use of "tail -n 1" and "tail -1"
      add test_cmp function for test scripts
      t4020: don't use grep -a
      t6000lib: tr portability fix
      add NO_EXTERNAL_GREP build option
      filter-branch: don't use xargs -0
      filter-branch: use $SHELL_PATH instead of 'sh'
      t9112: add missing #!/bin/sh header
      t7505: use SHELL_PATH in hook
      t6000lib: re-fix tr portability

Jim Meyering (1):
      Avoid unnecessary "if-before-free" tests.

Johan Herland (2):
      Add testcase for 'git cvsexportcommit -w $cvsdir ...' with relative $GIT_DIR
      Fix 'git cvsexportcommit -w $cvsdir ...' when used with relative $GIT_DIR

Johannes Schindelin (21):
      Teach "git reflog" a subcommand to delete single entries
      Also use unpack_trees() in do_diff_cache()
      Fix "git clone" for git:// protocol
      Adjust .gitignore for 5884f1(Rename 'git-help--browse.sh'...)
      Introduce the config variable pack.packSizeLimit
      bisect view: check for MinGW32 and MacOSX in addition to X11
      xdl_merge(): make XDL_MERGE_ZEALOUS output simpler
      xdl_merge(): introduce XDL_MERGE_ZEALOUS_ALNUM
      completion: support format-patch's --cover-letter option
      path-list: add functions to work with unsorted lists
      parseopt: add flag to stop on first non option
      Test "git remote show" and "git remote prune"
      Make git-remote a builtin
      builtin-remote: prune remotes correctly that were added with --mirror
      Fix make_absolute_path() for parameters without a slash
      format-patch: use the diff options for the cover letter, too
      format-patch: wrap cover-letter's shortlog sensibly
      remote show: Clean up connection correctly if object fetch wasn't done
      remote: fix "update [group...]"
      builtin remote rm: remove symbolic refs, too
      gc: call "prune --expire 2.weeks.ago" by default

Johannes Sixt (7):
      Fix misuse of prefix_path()
      gitk: Heed the lines of context in merge commits
      Technical documentation of the run-command API.
      prefix_path: use is_absolute_path() instead of *orig == '/'
      start_command(), .in/.out/.err = -1: Callers must close the file descriptor
      start_command(), if .in/.out > 0, closes file descriptors, not the callers
      git-submodule summary: fix that some "wc" flavors produce leading spaces

Jonas Fonseca (2):
      man pages are littered with .ft C and others
      shortlog: do not require to run from inside a git repository

Junichi Uekawa (1):
      git-blame.el: show the when, who and what in the minibuffer.

Junio C Hamano (93):
      index: be careful when handling long names
      Avoid running lstat(2) on the same cache entry.
      read-cache.c: fix a couple more CE_REMOVE conversion
      read-cache.c: introduce is_racy_timestamp() helper
      lazy index hashing
      Sane use of test_expect_failure
      test: reword the final message of tests with known breakages
      known breakage: revision range computation with clock skew
      fix misuse of prefix_path()
      builtin-apply.c: refactor small part that matches context
      builtin-apply.c: restructure "offset" matching
      builtin-apply.c: push match-beginning/end logic down
      builtin-apply.c: make it more line oriented
      builtin-apply.c: optimize match_beginning/end processing a bit.
      builtin-apply.c: mark common context lines in lineinfo structure.
      builtin-apply.c: clean-up apply_one_fragment()
      builtin-apply.c: simplify calling site to apply_line()
      builtin-apply.c: do not feed copy_wsfix() leading '+'
      builtin-apply.c: move copy_wsfix() function a bit higher.
      builtin-apply.c: pass ws_rule down to match_fragment()
      git-apply --whitespace=fix: fix whitespace fuzz introduced by previous run
      core.whitespace: cr-at-eol
      Documentation/SubmittingPatches: Instruct how to use [PATCH] Subject header
      Documentation/SubmittingPatches: discuss first then submit
      Documentation/SubmittingPatches: What's Acked-by and Tested-by?
      Make error messages from cherry-pick/revert more sensible
      setup: sanitize absolute and funny paths in get_pathspec()
      git-add: adjust to the get_pathspec() changes.
      builtin-mv: minimum fix to avoid losing files
      gitignore(5): Allow "foo/" in ignore list to match directory "foo"
      gitignore: lazily find dtype
      Define the project whitespace policy
      apply: do not barf on patch with too large an offset
      Update the main documentation (stale notes section)
      .mailmap: adjust to a recent patch application glitch.
      diff --relative: output paths as relative to the current subdirectory
      diff --relative: help working in a bare repository
      checkout: notice when the switched branch is behind or forked
      Documentation/SubmittingPatches - a suggested patch flow
      Sync with 1.5.4.2 and start 1.5.5 Release Notes
      sending errors to stdout under $PAGER
      merge-recursive: split low-level merge functions out.
      expose a helper function peel_to_type().
      checkout: tone down the "forked status" diagnostic messages
      checkout: work from a subdirectory
      git-reset --hard and git-read-tree --reset: fix read_cache_unmerged()
      checkout: updates to tracking report
      gitweb: Better chopping in commit search results
      Add merge-subtree back
      checkout: show progress when checkout takes long time while switching branches
      ws_fix_copy(): move the whitespace fixing function to ws.c
      checkout: error out when index is unmerged even with -m
      diff --dirstat: saner handling of binary and unmerged files
      url rewriting: take longest and first match
      git-apply --whitespace=fix: fix off by one thinko
      Revert "pack-objects: Print a message describing the number of threads for packing"
      git-remote: do not complain on multiple URLs for a remote
      format-patch: remove a leftover debugging message
      tests: introduce test_must_fail
      Update draft release notes for 1.5.5
      t6024: move "git reset" to prepare for a test inside the test itself
      CodingGuidelines: spell out how we use grep in our scripts
      find_unique_abbrev(): redefine semantics
      Clean up find_unique_abbrev() callers
      diff-lib.c: constness strengthening
      diff: make sure work tree side is shown as 0{40} when different
      Update draft release notes for 1.5.5
      describe --always: fall back to showing an abbreviated object name
      git-describe: use tags found in packed-refs correctly
      describe: fix --long output
      describe: re-fix display_name()
      t6120 (describe): check --long properly
      Revert "receive-pack: use strict mode for unpacking objects"
      Revert "unpack-objects: prevent writing of inconsistent objects"
      fsck.c: fix bogus "empty tree" check
      am: read from the right mailbox when started from a subdirectory
      am: remove support for -d .dotest
      am: --rebasing
      get_pathspec(): die when an out-of-tree path is given
      Revert part of 744dacd (builtin-mv: minimum fix to avoid losing files)
      Revert part of 1abf095 (git-add: adjust to the get_pathspec() changes)
      Revert part of d089eba (setup: sanitize absolute and funny paths in get_pathspec())
      git-clean: add tests for relative path
      send-email: --no-signed-off-cc should suppress 'sob' cc
      traverse_trees_recursive(): propagate merge errors up
      git-gui: Simplify MSGFMT setting in Makefile
      Documentation/config: typofix
      Documentation/git-help: typofix
      read-tree() and unpack_trees(): use consistent limit
      Redo "add test_cmp function for test scripts"
      git-gui: Improve directions regarding POT update in po/README
      Resurrect git-rerere to contrib/examples
      Update draft release notes for 1.5.5

Karl Wiberg (2):
      git-svn: Don't call git-repack anymore
      Let "git svn" run "git gc --auto" occasionally

Kevin Ballard (1):
      bash: Properly quote the GIT_DIR at all times to fix subdirectory paths with spaces

Kristian Høgsberg (1):
      wt-status.c: no need for dup() dance anymore

Lars Hjemli (1):
      Simplify setup of $GIT_DIR in git-sh-setup.sh

Linus Torvalds (22):
      Make on-disk index representation separate from in-core one
      Make run_diff_index() use unpack_trees(), not read_tree()
      Create pathname-based hash-table lookup into index
      Add "--dirstat" for some directory statistics
      gitk: learn --show-all output
      Add "--show-all" revision walker flag for debugging
      Fix name re-hashing semantics
      Name hash fixups: export (and rename) remove_hash_entry
      Use helper function for copying index entry information
      Be more verbose when checkout takes a long time
      Add 'df_name_compare()' helper function
      Make 'traverse_tree()' use linked structure rather than 'const char *base'
      Add return value to 'traverse_tree()' callback
      Make 'traverse_trees()' traverse conflicting DF entries in parallel
      Move 'unpack_trees()' over to 'traverse_trees()' interface
      Fix tree-walking compare_entry() in the presense of --prefix
      Add 'const' where appropriate to index handling functions
      Make 'unpack_trees()' take the index to work on as an argument
      Make 'unpack_trees()' have a separate source and destination index
      unpack_trees(): minor memory leak fix in unused destination index
      unpack_trees(): fix diff-index regression.
      Fix recent 'unpack_trees()'-related changes breaking 'git stash'

Marco Costalba (1):
      Avoid a useless prefix lookup in strbuf_expand()

Mark Levedahl (1):
      git-submodule - Allow adding a submodule in-place

Martin Koegler (28):
      git-fsck: report missing author/commit line in a commit as an error
      parse_object_buffer: don't ignore errors from the object specific parsing functions
      deref_tag: handle return value NULL
      deref_tag: handle tag->tagged = NULL
      check return code of prepare_revision_walk
      read_object_with_reference: don't read beyond the buffer
      get_sha1_oneline: check return value of parse_object
      mark_blob/tree_uninteresting: check for NULL
      reachable.c::add_one_tree: handle NULL from lookup_tree
      list-objects.c::process_tree/blob: check for NULL
      check results of parse_commit in merge_bases
      process_tag: handle tag->tagged == NULL
      reachable.c::process_tree/blob: check for NULL
      revision.c: handle tag->tagged == NULL
      parse_commit: don't fail, if object is NULL
      check return value from parse_commit() in various functions
      peel_onion: handle NULL
      add generic, type aware object chain walker
      builtin-fsck: move away from object-refs to fsck_walk
      Remove unused object-ref code
      builtin-fsck: reports missing parent commits
      builtin-fsck: move common object checking code to fsck.c
      add common fsck error printing function
      unpack-object: cache for non written objects
      unpack-objects: prevent writing of inconsistent objects
      index-pack: introduce checking mode
      receive-pack: use strict mode for unpacking objects
      fetch-pack: check parse_commit/object results

Matthias Kestenholz (1):
      Add color.ui variable which globally enables colorization if set

Michael Witten (3):
      git-send-email: ssh/login style password requests
      git-send-email: SIG{TERM,INT} handlers
      git-send-email: Better handling of EOF

Michal Rokos (2):
      Add compat/snprintf.c for systems that return bogus
      autoconf: Test FREAD_READS_DIRECTORIES

Michele Ballabio (7):
      gitk: Fix "Key bindings" message
      git-gui: fix typo in lib/spellcheck.tcl
      builtin-for-each-ref.c: fix typo in error message
      gitk: Mark another string for translation
      git-gui: update Italian translation
      gitk: initial Italian translation
      git-gui: remove spurious "fuzzy" attributes in po/it.po

Mike Hommey (5):
      Work around curl-gnutls not liking to be reinitialized
      Add test for git rebase --abort
      Documentation/git-rebase.txt: Add --strategy to synopsys
      git rebase --abort: always restore the right commit
      t3407-rebase-abort.sh: Enhance existing tests, and add test for rebase --merge

Miklos Vajna (4):
      git-clean: handle errors if removing files fails
      Improve t6029 to check the real "subtree" case
      Update Hungarian translation. 100% completed.
      git-gui: Updated Hungarian translation (e5fba18)

Nanako Shiraishi (2):
      git-gui: Update Japanese translation
      git-gui: Update Japanese translation

Nicolas Pitre (5):
      factorize revindex code out of builtin-pack-objects.c
      make verify_one_pack() a bit less wrong wrt packed_git structure
      fix unimplemented packed_object_info_detail() features
      add storage size output to 'git verify-pack -v'
      pack-objects: proper pack time stamping with --max-pack-size

Paolo Bonzini (4):
      git-commit: support variable number of hook arguments
      git-commit: set GIT_EDITOR=: if editor will not be launched
      git-commit: Refactor creation of log message.
      git-commit: add a prepare-commit-msg hook

Paul Mackerras (3):
      gitk: Only restore window size from ~/.gitk, not position
      gitk: Avoid Tcl error when switching views
      gitk: Default to using po2msg.sh if msgfmt doesn't grok --tcl, -l and -d

Pekka Kaitaniemi (1):
      gitk: Add horizontal scrollbar to the diff view

Peter Krefting (2):
      git-gui: Regenerated po template and merged translations with it
      git-gui: updated Swedish translation

Petr Baudis (1):
      gitweb: Clearly distinguish regexp / exact match searches

Philipp A. Hartmann (1):
      git-gui: if a background colour is set, set foreground colour as well

Philippe Bruhat (3):
      cvsimport: have default merge regex allow for dashes in the branch name
      cvsimport: allow for multiple -M options
      cvsimport: document that -M can be used multiple times

Pierre Habouzit (4):
      git-describe: Add a --match option to limit considered tags.
      git-name-rev: add a --(no-)undefined option.
      parse-opt: bring PARSE_OPT_HIDDEN and NONEG to git-rev-parse --parseopt
      parse-options: new option type to treat an option-like parameter as an argument.

Ping Yin (5):
      git-submodule summary: code framework
      git-submodule summary: show commit summary
      git-submodule summary: limit summary size
      git-submodule summary: documentation
      git-submodule summary: test

Rafael Garcia-Suarez (1):
      Make git-remote.perl "use strict" compliant

Ralf Wildenhues (1):
      Fix doc typos.

Robin Rosenberg (2):
      Make blame accept absolute paths
      Improve bash prompt to detect various states like an unfinished merge

SZEDER Gábor (9):
      bash: add git-branch options
      bash: git-branch -d and -m lists only local branches
      bash: remove unnecessary conditions when checking for subcommands
      bash: refactor searching for subcommands on the command line
      bash: add new 'git stash' subcommands
      bash: add 'git svn' subcommands and options
      bash: use __gitdir when completing 'git rebase' options
      bash: fix long option with argument double completion
      update 'git rebase' documentation

Samuel Tardieu (1):
      "remote update": print remote name being fetched from

Santi Béjar (3):
      git-bundle.txt: Add different strategies to create the bundle
      git-describe: --long shows the object name even for a tagged commit
      clone: support cloning full bundles

Sebastian Noack (1):
      git-svn: Don't prompt for client cert password everytime.

Shawn O. Pearce (37):
      git-gui: Automatically spell check commit messages as the user types
      git-gui: Paper bag fix bad string length call in spellchecker
      git-gui: Correct size of dictionary name widget in options dialog
      Include annotated tags in fast-import crash reports
      Include the fast-import marks table in crash reports
      Finish current packfile during fast-import crash handler
      Update fast-import documentation to discuss crash reports
      Teach git-grep --name-only as synonym for -l
      git-gui: Ensure all spellchecker 'class' variables are initialized
      git-gui: Remove explicit references to 'aspell' in message strings
      git-gui: Only bind the spellcheck popup suggestion hook once
      git-gui: Catch and display aspell startup failures to the user
      git-gui: Gracefully display non-aspell version errors to users
      git-gui: Shorten Aspell version strings to just Aspell version number
      Optimize peel_ref for the current ref of a for_each_ref callback
      Teach git-describe to use peeled ref information when scanning tags
      Avoid accessing non-tag refs in git-describe unless --all is requested
      Teach git-describe --exact-match to avoid expensive tag searches
      Use git-describe --exact-match in bash prompt on detached HEAD
      Teach git-describe to verify annotated tag names before output
      Remove unused variable in builtin-fetch find_non_local_tags
      Remove unnecessary delaying of free_refs(ref_map) in builtin-fetch
      Ensure tail pointer gets setup correctly when we fetch HEAD only
      Allow builtin-fetch's find_non_local_tags to append onto a list
      Free the path_lists used to find non-local tags in git-fetch
      Teach upload-pack to log the received need lines to an fd
      Make git-fetch follow tags we already have objects for sooner
      Teach git-fetch to grab a tag at the same time as a commit
      Don't allow git-describe failures to go unnoticed in t6120
      Test for packed tags in git-describe output
      Add git-describe test for "verify annotated tag names on output"
      git-pack-objects: Automatically pack annotated tags if object was packed
      Teach fetch-pack/upload-pack about --include-tag
      Teach git-fetch to exploit server side automatic tag following
      bash: Remove completion of core.legacyheaders option
      git-gui: Don't translate the special Apple menu
      git-gui: Adjusted Japanese translation to updated POT

Simon Hausmann (7):
      git-p4: Fix submit user-interface.
      git-p4: Ensure the working directory and the index are clean before "git-p4 rebase"
      git-p4: Remove --log-substitutions feature.
      git-p4: Clean up git-p4 submit's log message handling.
      git-p4: Removed git-p4 submit --direct.
      git-p4: git-p4 submit cleanups.
      git-p4: Fix import of changesets with file deletions

Steffen Prohaska (4):
      safecrlf: Add mechanism to warn about irreversible crlf conversions
      gitk: Add checkbutton to ignore space changes
      t4014: Replace sed's non-standard 'Q' by standard 'q'
      Add tests for filesystem challenges (case and unicode normalization)

Teemu Likonen (1):
      bash: Add more long options to be completed with "git --<TAB>"

Tim Stoakes (1):
      Add `git svn blame' command

Toby Allsopp (1):
      git-p4: Fix indentation from tab to spaces

Tommy Thorn (2):
      git-p4: Fix an obvious typo
      git-p4: support exclude paths

Tor Arvid Lund (1):
      git-p4: Support usage of perforce client spec

Uwe Kleine-König (1):
      rev-list: add --branches, --tags and --remotes

Yann Dirson (1):
      Add an --argscmd flag to get the list of refs to show

eric miao (1):
      git-gui: translate the remaining messages in zh_cn.po to chinese


Version v1.5.4.7; changes since v1.5.4.6:
-----------------------------------------

Junio C Hamano (2):
      gitweb: do not run "git diff" that is Porcelain
      GIT 1.5.4.7


Version v1.5.4.6; changes since v1.5.4.5:
-----------------------------------------

A Large Angry SCM (1):
      git-repack: re-enable parsing of -n command line option

Alberto Bertogli (1):
      builtin-apply: Show a more descriptive error on failure when opening a patch

Ariel Badichi (2):
      copy.c: copy_fd - correctly report write errors
      archive.c: format_subst - fixed bogus argument to memchr

Björn Steinbrink (1):
      Fix section about backdating tags in the git-tag docs

Carlos Rica (2):
      Fix documentation syntax of optional arguments in short options.
      core-tutorial.txt: Fix showing the current behaviour.

Christian Couder (4):
      bisect: fix bad rev checking in "git bisect good"
      bisect: report bad rev better
      bisect: squelch "fatal: ref HEAD not a symref" misleading message
      git-bisect: make "start", "good" and "skip" succeed or fail atomically

Clifford Caoile (1):
      Docs gitk: Explicitly mention the files that gitk uses (~/.gitk)

Dan McGee (1):
      Remove 'header' from --signoff option description

Dirk Süsserott (1):
      Documentation/git-request-pull: Fixed a typo ("send" -> "end")

Dustin Sallings (1):
      Documentation/config.txt: Mention branch.<name>.rebase applies to "git pull"

Florian Ragwitz (1):
      filter-branch: Documentation fix.

Ian Hilt (1):
      Documentation/git-describe.txt: make description more readable

Jeff King (6):
      t5516: remove ambiguity test (1)
      fix reflog approxidate parsing bug
      cvsimport: always pass user data to "system" as a list
      doc: clarify definition of "update" for git-add -u
      doc/git-daemon: s/uploadarchive/uploadarch/
      git-am: fix typo in usage message

Johannes Sixt (3):
      Document option --only of git commit
      wt-status.h: declare global variables as extern
      rev-parse --symbolic-full-name: don't print '^' if SHA1 is not a ref

Jon Loeliger (1):
      Clarify and fix English in "git-rm" documentation

Junio C Hamano (7):
      Fix "git apply" to correctly enforce "match at the beginning"
      Document -w option to shortlog
      git-am: minor cleanup
      am: POSIX portability fix
      write-tree: properly detect failure to write tree objects
      git-shell: accept "git foo" form
      GIT 1.5.4.6

Linus Torvalds (2):
      Ignore leading empty lines while summarizing merges
      git-am: cope better with an empty Subject: line

Matt Graham (1):
      Linked glossary from cvs-migration page

Matthew Ogilvie (1):
      gitattributes: Fix subdirectory attributes specified from root directory

Michael Weber (1):
      svn-git: Use binmode for reading/writing binary rev maps

Michele Ballabio (1):
      revision.c: make --date-order overriddable

Miklos Vajna (1):
      diff options documentation: refer to --diff-filter in --name-status

Pieter de Bie (1):
      builtin-fast-export: Only output a single parent per line

René Scharfe (1):
      git-archive: ignore prefix when checking file attribute

Scott Collins (1):
      Clarify documentation of git-cvsserver, particularly in relation to git-shell

Sitaram Chamarty (1):
      builtin-commit.c: add -u as short name for --untracked-files

Thomas Guyot-Sionnest (1):
      git-svn bug with blank commits and author file


Version v1.5.4.5; changes since v1.5.4.4:
-----------------------------------------

Andy Whitcroft (1):
      shortlog: take the first populated line of the description

Bernt Hansen (1):
      git-new-workdir: Share SVN meta data between work dirs and the repository

Brandon Casey (1):
      t/t3800-mktag.sh: use test_must_fail rather than '!'

Clemens Buchacher (1):
      merge-recursive: handle file mode changes

Daniel Barkalow (2):
      Tighten refspec processing
      Fix branches file configuration

Eric Wong (1):
      git-svn: don't blindly append '*' to branch/tags config

Guanqun Lu (1):
      Fix the wrong output of `git-show v1.3.0~155^2~4` in documentation.

Jakub Narębski (1):
      gitweb: Fix bug in href(..., -replay=>1) when using 'pathinfo' form

Jeff King (2):
      t0021: tr portability fix for Solaris
      Documentation: clarify use of .git{ignore,attributes} versus .git/info/*

Johannes Schindelin (3):
      launch_editor(): allow spaces in the filename
      git fetch: Take '-n' to mean '--no-tags'
      merge-file: handle empty files gracefully

Jonas Fonseca (1):
      Make man page building quiet when DOCBOOK_XSL_172 is defined

Junio C Hamano (9):
      filter-branch: handle "disappearing tree" case correctly in subdir filter
      git-pull documentation: warn about the option order
      quiltimport: fix misquoting of parsed -p<num> parameter
      format-patch: generate MIME header as needed even when there is format.header
      rebase -m: do not trigger pre-commit verification
      Start draft ReleaseNotes for 1.5.4.5
      git-fetch test: test tracking fetch results, not just FETCH_HEAD
      Update draft release notes for 1.5.4.5
      GIT 1.5.4.5

Linus Torvalds (1):
      rev-parse: fix meaning of rev~ vs rev~0.

Marc-André Lureau (2):
      git-svn: fix find-rev error message when missing arg
      git-cvsimport: fix merging with remote parent branch

Mike Hommey (1):
      git rebase --abort: always restore the right commit

Pierre Habouzit (1):
      git-quiltimport: better parser to grok "enhanced" series files.

Vineet Kumar (1):
      Minor wording changes in the keyboard descriptions in git-add --interactive.


Version v1.5.4.4; changes since v1.5.4.3:
-----------------------------------------

Adeodato Simó (1):
      Really make the LF after reset in fast-import optional

Björn Steinbrink (1):
      receive-pack: Initialize PATH to include exec-dir.

Brandon Casey (1):
      builtin-reflog.c: don't install new reflog on write failure

Bryan Donlan (1):
      Documentation/git-am.txt: Pass -r in the example invocation of rm -f .dotest

Caio Marcelo de Oliveira Filho (1):
      filter-branch documentation: non-zero exit status in command abort the filter

Carl Worth (1):
      Eliminate confusing "won't bisect on seeked tree" failure

Daniel Barkalow (3):
      Use a single implementation and API for copy_file()
      Don't use GIT_CONFIG in t5505-remote
      Correct name of diff_flush() in API documentation

Gerrit Pape (2):
      templates/Makefile: don't depend on local umask setting
      git-merge.sh: better handling of combined --squash,--no-ff,--no-commit options

Jay Soffian (2):
      rev-parse: fix potential bus error with --parseopt option spec handling
      send-email: fix In-Reply-To regression

Jeff King (1):
      revert: actually check for a dirty index

Johan Herland (2):
      Add testcase for 'git cvsexportcommit -w $cvsdir ...' with relative $GIT_DIR
      Fix 'git cvsexportcommit -w $cvsdir ...' when used with relative $GIT_DIR

Johannes Schindelin (4):
      http-push: avoid invalid memory accesses
      http-push: do not get confused by submodules
      http-push: avoid a needless goto
      cvsexportcommit: be graceful when "cvs status" reorders the arguments

Johannes Sixt (2):
      daemon: send more error messages to the syslog
      daemon: ensure that base-path is an existing directory

John Goerzen (1):
      Fix dcommit, rebase when rewriteRoot is in use

Jonathan del Strother (1):
      Prompt to continue when editing during rebase --interactive

Junio C Hamano (6):
      Fix "git log --merge --left-right"
      Start preparing for 1.5.4.4
      tests: introduce test_must_fail
      Update draft release notes for 1.5.4.4
      test-lib: fix TERM to dumb for test repeatability
      GIT 1.5.4.4

Matthieu Moy (1):
      Fix incorrect wording in git-merge.txt.

Mike Hommey (2):
      Set proxy override with http_init()
      Fix random crashes in http_cleanup()

Mike Ralphson (1):
      Documentation cherry-pick: Fix cut-and-paste error

Miklos Vajna (2):
      Documentation/git-filter-branch: add a new msg-filter example
      Documentation/git svn log: add a note about timezones.

Pierre Habouzit (1):
      unquote_c_style: fix off-by-one.

Ping Yin (1):
      git-submodule: Fix typo 'url' which should be '$url'

Rémi Vanicat (1):
      git.el: find the git-status buffer whatever its name is

Santi Béjar (1):
      ident.c: reword error message when the user name cannot be determined

Sebastian Noack (1):
      git-svn: Don't prompt for client cert password everytime.

Shawn O. Pearce (6):
      Ensure 'make dist' compiles git-archive.exe on Cygwin
      Protect peel_ref fallback case from NULL parse_object result
      Correct fast-export file mode strings to match fast-import standard
      git-gui: Paper bag fix info dialog when no files are staged at commit
      Fix 'git remote show' regression on empty repository in 1.5.4
      git-gui: Gracefully fall back to po2msg.sh if msgfmt --tcl fails

Steven Drake (1):
      timezone_names[]: fixed the tz offset for New Zealand.

Uwe Kleine-König (1):
      config.txt: refer to --upload-pack and --receive-pack instead of --exec


Version v1.5.4.3; changes since v1.5.4.2:
-----------------------------------------

Gerrit Pape (1):
      git-clone.sh: properly configure remote even if remote's head is dangling

Jay Soffian (2):
      git-gui: support Git Gui.app under OS X 10.5
      send-email: squelch warning due to comparing undefined $_ to ""

Jeff King (4):
      push: indicate partialness of error message
      Documentation/push: clarify matching refspec behavior
      push: document the status output
      hash: fix lookup_hash semantics

Junio C Hamano (1):
      GIT 1.5.4.3

Kristian Høgsberg (1):
      Rename git-core rpm to just git and rename the meta-pacakge to git-all.

Miklos Vajna (1):
      Documentation/git-stash: document options for git stash list

Pekka Kaitaniemi (1):
      Clarified the meaning of git-add -u in the documentation

Shawn O. Pearce (5):
      git-gui: Ensure error dialogs always appear over all other windows
      git-gui: Paper bag fix error dialogs opening over the main window
      git-gui: Default TCL_PATH to same location as TCLTK_PATH
      git-gui: Avoid hardcoded Windows paths in Cygwin package files
      git-gui: Focus insertion point at end of strings in repository chooser

Wincent Colaiuta (1):
      git-gui: relax "dirty" version detection


Version v1.5.4.2; changes since v1.5.4.1:
-----------------------------------------

Christian Couder (8):
      config: add test cases for empty value and no value config variables.
      diff.c: replace a 'strdup' with 'xstrdup'.
      diff.c: remove useless check for value != NULL
      config: add 'git_config_string' to refactor string config variables.
      Add "const" qualifier to "char *pager_program".
      Add "const" qualifier to "char *editor_program".
      Add "const" qualifier to "char *excludes_file".
      diff.c: add "const" qualifier to "char *cmd" member of "struct ll_diff_driver"

Daniel Barkalow (1):
      Validate nicknames of remote branches to prohibit confusing ones

David Steven Tweed (1):
      Make git prune remove temporary packs that look like write failures

Frank Lichtenheld (1):
      config: Fix --unset for continuation lines

Gerrit Pape (2):
      builtin-commit: remove .git/SQUASH_MSG upon successful commit
      cvsimport: have default merge regex also match beginning of commit message

James Bowes (1):
      Add a BuildRequires for gettext in the spec file.

Jay Soffian (1):
      mailinfo: feed only one line to handle_filter() for QP input

Jeff King (2):
      status: suggest "git rm --cached" to unstage for initial commit
      commit: discard index after setting up partial commit

Johannes Schindelin (3):
      bisect: allow starting with a detached HEAD
      Document that the default of branch.autosetupmerge is true
      bisect: use verbatim commit subject in the bisect log

Johannes Sixt (1):
      upload-pack: Initialize the exec-path.

Jonas Fonseca (1):
      man pages are littered with .ft C and others

Junio C Hamano (31):
      git-pull documentation: fix markup
      archive-tar.c: guard config parser from value=NULL
      Add config_error_nonbool() helper function
      builtin-apply.c: guard config parser from value=NULL
      builtin-branch.c: guard config parser from value=NULL
      builtin-commit.c: guard config parser from value=NULL
      builtin-config.c: guard config parser from value=NULL
      builtin-log.c: guard config parser from value=NULL
      builtin-reflog.c: guard config parser from value=NULL
      builtin-show-branch.c: guard config parser from value=NULL
      builtin-tag.c: guard config parser from value=NULL
      connect.c: guard config parser from value=NULL
      convert.c: guard config parser from value=NULL
      diff.c: guard config parser from value=NULL
      git.c: guard config parser from value=NULL
      help.c: guard config parser from value=NULL
      http.c: guard config parser from value=NULL
      merge-recursive.c: guard config parser from value=NULL
      remote.c: guard config parser from value=NULL
      setup.c: guard config parser from value=NULL
      wt-status.c: guard config parser from value=NULL
      imap-send.c: guard config parser from value=NULL
      builtin-log.c: guard config parser from value=NULL
      config.c: guard config parser from value=NULL
      Revert "pack-objects: only throw away data during memory pressure"
      Protect get_author_ident_from_commit() from filenames in work tree
      diff.c: fixup garding of config parser from value=NULL
      diff: Fix miscounting of --check output
      filter-branch: handle filenames that need quoting
      Documentation/git-reset:
      GIT 1.5.4.2

Martin Koegler (1):
      pack-objects: only throw away data during memory pressure

Mike Hommey (1):
      Work around curl-gnutls not liking to be reinitialized

Miklos Vajna (2):
      builtin-gc.c: guard config parser from value=NULL
      git clone -s documentation: force a new paragraph for the NOTE

Pieter de Bie (2):
      Documentation/git-reset: don't mention --mixed for selected-paths reset
      Documentation/git-reset: Add an example of resetting selected paths

Sergei Organov (1):
      git-cvsimport.txt: fix '-M' description.

Shawn O. Pearce (1):
      fast-import: check return value from unpack_entry()

Stelian Pop (1):
      hg-to-git: fix parent analysis

Uwe Kleine-König (1):
      rebase -i: accept -m as advertised in the man page


Version v1.5.4.1; changes since v1.5.4:
---------------------------------------

Gerrit Pape (1):
      INSTALL: git-merge no longer uses cpio

Jari Aalto (1):
      Documentation/git-stash.txt: Adjust SYNOPSIS command syntax (2)

Junio C Hamano (3):
      Update stale documentation links from the main documentation.
      Fix "git-commit -C $tag"
      gitattributes: fix relative path matching

Jörg Sommer (2):
      git-am: fix type in its usage string
      git-remote documentation: fix synopsis to match description

Tim Stoakes (1):
      Fix typo in 'blame' documentation.

Timo Hirvonen (1):
      Fix parsing numeric color values


Version v1.5.4; changes since v1.5.4-rc5:
-----------------------------------------

Brandon Casey (4):
      git-relink: avoid hard linking in objects/info directory
      filter-branch.sh: remove temporary directory on failure
      filter-branch docs: remove brackets so not to imply revision arg is optional
      filter-branch: assume HEAD if no revision supplied

Bruno Ribas (1):
      gitweb: Make use of the $git_dir variable at sub git_get_project_description

Christian Couder (3):
      Documentation: config: add "browser.<tool>.path".
      Documentation: help: specify supported html browsers.
      instaweb: use 'browser.<tool>.path' config option if it's set.

Jakub Narębski (1):
      gitweb: Add info about $projectroot and $projects_list to gitweb/README

Jean-Luc Herren (1):
      Documentation/git-cvsserver: Fix typo

Jeff King (1):
      t9001: add missing && operators

Jim Meyering (1):
      fix doc typos

Johannes Schindelin (1):
      Add test for rebase -i with commits that do not pass pre-commit

Junio C Hamano (4):
      reflog-expire: Avoid creating new files in a directory inside readdir(3) loop
      Revert "filter-branch docs: remove brackets so not to imply revision arg is optional"
      Fix "git checkout -b foo ':/substring'"
      GIT 1.5.4

Michele Ballabio (1):
      Fix typo in a comment in t/test-lib.sh

Miklos Vajna (1):
      git rev-parse manpage: spelling fix

Shawn O. Pearce (1):
      Use 'printf %s $x' notation in t5401

Yasushi SHOJI (1):
      gitweb: Convert generated contents to utf8 in commitdiff_plain


Version v1.5.4-rc5; changes since v1.5.4-rc4:
---------------------------------------------

Alex Riesen (1):
      Make t5710 more strict when creating nested repos

Brandon Casey (1):
      git-commit: exit non-zero if we fail to commit the index

Eric Wong (1):
      git-svn: default to repacking every 1000 commits

Gustaf Hendeby (1):
      send-email, fix breakage in combination with --compose

Jakub Narębski (1):
      autoconf: define NO_SYS_SELECT_H on systems without <sys/select.h>.

Johannes Schindelin (1):
      pull --rebase: be cleverer with rebased upstream branches

Junio C Hamano (5):
      git-submodule: rename shell functions for consistency
      git-submodule: fix subcommand parser
      git-submodule: add test for the subcommand parser fix
      Clarify that http-push being temporarily disabled with older cURL
      GIT 1.5.4-rc5

Mike Hommey (2):
      Add a missing dependency on http.h
      Documentation: add a bit about sendemail.to configuration

Miklos Vajna (2):
      git-clone -s: document problems with git gc --prune
      git pull manpage: don't include -n from fetch-options.txt

Nicolas Pitre (1):
      pack-objects: Fix segfault when object count is less than thread count

Pierre Habouzit (1):
      parse-options: catch likely typo in presense of aggregated options.

Robert Schiele (2):
      pre-POSIX.1-2001 systems do not have <sys/select.h>
      Makefile: customization for supporting HP-UX

Sam Vilain (1):
      git-svn(1): update instructions for resuming a git-svn clone

Shawn O. Pearce (10):
      git-gui: Honor the standard commit-msg hook
      git-gui: Correct window title for hook failure dialogs
      git-gui: Consolidate hook execution code into a single function
      git-gui: Correct encoding of glossary/fr.po to UTF-8
      Teach fast-import to honor pack.compression and pack.depth
      Document the hairy gfi_unpack_entry part of fast-import
      git-gui: Work around random missing scrollbar in revision list
      git-gui: Fallback to Tcl based po2msg.sh if msgfmt isn't available
      git-gui: Make the statistics of po2msg match those of msgfmt
      git-gui: Correctly cleanup msgfmt '1 message untranslated' output

Steffen Prohaska (3):
      submodule: Document the details of the command line syntax
      t9400-git-cvsserver-server: Wrap setup into test case
      cvsserver: Fix for histories with multiple roots


Version v1.5.4-rc4; changes since v1.5.4-rc3:
---------------------------------------------

Bill Lear (1):
      Correct spelling in diff.c comment

Brandon Casey (4):
      close_lock_file(): new function in the lockfile API
      Improve use of lockfile API
      refs.c: rework ref_locks by abstracting from underlying struct lock_file
      fast-import.c: don't try to commit marks file if write failed

Christian Couder (2):
      git-gui: Initial french translation
      git-gui: add french glossary: glossary/fr.po

Christian Stimming (4):
      git-gui: Update glossary: add term "hunk"
      git-gui: Update German translation
      git-gui: Fix broken revert confirmation.
      git-gui: Improve German translation.

Dan McGee (3):
      Remove usage of git- (dash) commands from email hook
      cvsimport: remove last use of repo-config from git standard tools
      Update git-completion for new 'remote rm' option

Dave Peticolas (1):
      Documentation: fix and clarify grammar in git-merge docs.

Dmitry Potapov (1):
      treat any file with NUL as binary

Eric Wong (1):
      git-svn: handle leading/trailing whitespace from svnsync revprops

Grégoire Barbier (4):
      http-push: disable http-push without USE_CURL_MULTI
      http-push: fix webdav lock leak.
      http-push: fail when info/refs exists and is already locked
      http-push and http-fetch: handle URLs without trailing /

Jakub Narębski (1):
      autoconf: Add checking for unsetenv function

Jean-Luc Herren (1):
      Make default pre-commit hook less noisy

Jeff King (5):
      git-clean: fix off-by-one memory access when given no arguments
      color unchanged lines as "plain" in "diff --color-words"
      send-email: detect invocation errors earlier
      send-email: validate patches before sending anything
      send-email: add no-validate option

Jim Meyering (2):
      fast-import: Don't use a maybe-clobbered errno value
      doc typo: s/prior committing/prior to committing/

Johannes Schindelin (1):
      gitk: make Ctrl "+" really increase the font size

Junio C Hamano (8):
      builtin-commit.c: remove useless check added by faulty cut and paste
      Revert "builtin-commit.c: remove useless check added by faulty cut and paste"
      Fix git-rerere documentation
      Squelch bogus progress output from git-rebase--interactive
      Document lockfile API
      Officially deprecate repo-config.
      http-push: clarify the reason of error from the initial PROPFIND request
      GIT 1.5.4-rc4

Kristian Høgsberg (1):
      git-commit: fix double close(2) that can close a wrong file descriptor

Lars Hjemli (1):
      Move sha1_file_to_archive into libgit

Linus Torvalds (4):
      Fix performance regression for partial commits
      Make builtin-commit.c more careful about parenthood
      Make 'git fsck' complain about non-commit branches
      Be more careful about updating refs

Mark Drago (1):
      hg-to-git: improve popen calls

Mark Levedahl (1):
      git-gui: Makefile - Handle $DESTDIR on Cygwin

Martin Koegler (1):
      parse_commit_buffer: tighten checks while parsing

Miklos Vajna (3):
      Add using merge subtree How-To
      ls-remote: add -t and -h options.
      Include rev-list options in git-log manpage.

Peter Krefting (1):
      git-gui: Updated Swedish translation after mailing list review.

Shawn O. Pearce (3):
      git-gui: Allow 'Create New Repository' on existing directories
      git-gui: Refresh file status description after hunk application
      Fix random fast-import errors when compiled with NO_MMAP

Thomas Zander (1):
      core-tutorial typofix


Version v1.5.4-rc3; changes since v1.5.4-rc2:
---------------------------------------------

Alexandre Julliard (6):
      git.el: Support for getting diffs from inside the log-edit buffer.
      git.el: Retrieve the permissions for up-to-date files.
      git.el: Display file types and type changes.
      git.el: Make sure we never insert the same file twice.
      git.el: Refresh files from their real state upon commit.
      git.el: Make status refresh faster.

Bernt Hansen (1):
      git-gui: Make commit log messages end with a newline

Brandon Casey (1):
      git-relink.txt: describe more clearly how hard linking occurs

Charles Bailey (1):
      gitk: Fix the Makefile to cope with systems lacking msgfmt

Christian Couder (1):
      Documentation: config: add 'help.*' and 'instaweb.*' variables.

Christian Stimming (10):
      gitk i18n: Add Makefile with rules for po file creation and installation
      gitk i18n: Import msgcat for message string translation; load translation catalogs
      gitk i18n: Markup several strings for translation
      gitk i18n: Initial German translation
      gitk i18n: More markup -- various options menus
      gitk i18n: Recode gitk from latin1 to utf8 so that the (c) copyright character is valid utf8.
      gitk: Update and fix Makefile
      gitk: Update German translation
      gitk: Fix typo in user message.
      gitk: Update German translation.

Dan McGee (1):
      Documentation: rename gitlink macro to linkgit

Eric Wong (4):
      git-svn: allow dcommit --no-rebase to commit multiple, dependent changes
      git-svn: unlink index files that were globbed, too
      git-svn: support for funky branch and project names over HTTP(S)
      git-svn: clarify the "Ignoring error from SVN" piece

Florian La Roche (1):
      Change git-gc documentation to reflect gc.packrefs implementation.

Gerrit Pape (1):
      gitk: use user-configured background in view definition dialog

Grégoire Barbier (1):
      Fix double-free() in http-push.c:remote_exists()

Gustaf Hendeby (1):
      Documentation/user-manual.txt: fix typo

J. Bruce Fields (1):
      Documentation: fix remote.<name>.skipDefaultUpdate description

James Bowes (1):
      Make the git metapackage require the same version of the subpackages.

Jeff King (8):
      config: handle lack of newline at end of file better
      git-reset: refuse to do hard reset in a bare repository
      add a "basic" diff config callback
      diff: load funcname patterns in "basic" config
      diff: remove lazy config loading
      add--interactive: remove unused diff colors
      add--interactive: allow diff colors without interactive colors
      Document the color.interactive semantics

Jim Meyering (3):
      Fix grammar nits in documentation and in code comments.
      Don't access line[-1] for a zero-length "line" from fgets.
      bundle, fast-import: detect write failure

Johannes Schindelin (2):
      Optimize prefixcmp()
      shortlog: mention the "-e" option in the usage

Johannes Sixt (2):
      git-gui: Move frequently used commands to the top of the context menu.
      recv_sideband: Do not use ANSI escape sequence on dumb terminals.

Junio C Hamano (27):
      Documentation/git-submodule.txt: typofix
      "git pull --tags": error out with a better message.
      git-rebase -i behaves better on commits with incomplete messages
      git-rebase -i: clean-up error check codepath.
      lock_any_ref_for_update(): reject wildcard return from check_ref_format
      Update callers of check_ref_format()
      Uninline prefixcmp()
      git-clean: make "Would remove ..." path relative to cwd again
      t/t7600: avoid GNUism in grep
      t/t{3600,3800,5401}: do not use egrep when grep would do
      t/t3800: do not use a temporary file to hold expected result.
      Update draft release notes for 1.5.4
      git-stash clear: refuse to work with extra parameter for now
      git-rev-parse --symbolic-full-name
      filter-branch: work correctly with ambiguous refnames
      custom pretty format: tolerate empty e-mail address
      Documentation: remove gitman.info with "make clean"
      Documentation: fix "gitlink::foobar[s]"
      utf8: pick_one_utf8_char()
      utf8_width(): allow non NUL-terminated input
      diff: do not chomp hunk-header in the middle of a character
      Update draft release notes for 1.5.4
      GIT 1.5.3.8
      "git-apply --check" should not report "fixed"
      pack-objects: remove redundant and wrong call to deflateEnd()
      RPM spec: include gitk message files.
      GIT 1.5.4-rc3

Kevin Ballard (1):
      Trim leading / off of paths in git-svn prop_walk

Marco Costalba (2):
      Document git-reset defaults to HEAD if no commit is given
      git-stash: use stdout instead of stderr for non error messages

Mark Levedahl (2):
      git-gui: Unconditionally use absolute paths with Cygwin
      Documentation/Makefile - honor $DESTDIR for quick-install target

Martin Koegler (4):
      receive-pack: check object type of sha1 before using them as commits
      receive-pack: reject invalid refnames
      parse_tag_buffer: don't parse invalid tags
      tree-walk: don't parse incorrect entries

Michael Stefaniuc (1):
      git-am: Run git gc only once and not for every patch.

Michele Ballabio (1):
      Document some default values in config.txt

Miklos Vajna (2):
      git-sh-setup: document git_editor() and get_author_ident_from_commit()
      t/t7001: avoid unnecessary ERE when using grep

Nicolas Pitre (1):
      slightly better auto gc message

Paul Mackerras (2):
      gitk: Recode de.po to UTF-8
      gitk: Restore some widget options whose defaults changed in Tk 8.5

Peter Krefting (1):
      Added Swedish translation.

Ralf Wildenhues (1):
      Documentation: typofix

Rogan Dawes (1):
      Allow git-mergetool to handle paths with a leading space

Shawn O. Pearce (1):
      git-gui: Handle file mode changes (644->755) in diff viewer


Version v1.5.4-rc2; changes since v1.5.4-rc1:
---------------------------------------------

Alex Riesen (1):
      Allow selection of different cleanup modes for commit messages

Arjen Laarhoven (1):
      Fix "git log --diff-filter" bug

Charles Bailey (1):
      Remove old generated files from .gitignore.

Gustaf Hendeby (2):
      Make git send-email accept $EDITOR with arguments
      shortlog manpage documentation: work around asciidoc markup issues

Jakub Narębski (1):
      gitweb: fix whitespace in config_to_multi (indent with tab)

Jeff King (2):
      clean up 1.5.4 release notes
      cvsimport: die on cvsps errors

Jim Meyering (1):
      Don't dereference NULL upon lookup failure.

Johannes Schindelin (2):
      Teach diff machinery to display other prefixes than "a/" and "b/"
      Mention git-shell's "cvs" substitution in the RelNotes

Junio C Hamano (14):
      t4024: fix test script to use simpler sed pattern
      fix git commit --amend -m "new message"
      shell-scripts usage(): consistently exit with non-zero
      Documentation: ls-files -v is about "assume unchanged".
      Fix $EDITOR regression introduced by rewrite in C.
      t7005: do not exit inside test.
      builtin-commit: fix amending of the initial commit
      builtin-commit: avoid double-negation in the code.
      Documentation: describe 'union' low-level merge driver
      Fix documentation of --first-parent in git-log and copy it to git-rev-list
      combine-diff: Fix path quoting
      Fix rewrite_diff() name quoting.
      contrib: resurrect scripted git-revert.
      GIT 1.5.4-rc2

Linus Torvalds (1):
      Re(-re)*fix trim_common_tail()

Miklos Vajna (1):
      everyday: replace 'prune' and 'repack' with 'gc'

Pierre Habouzit (3):
      git-tag: fix -l switch handling regression.
      Force the sticked form for options with optional arguments.
      parse-options: Add a gitcli(5) man page.

René Scharfe (1):
      Make "--pretty=format" parser a bit more careful.

Shawn O. Pearce (2):
      Reallow git-rebase --interactive --continue if commit is unnecessary
      Improve error messages when int/long cannot be parsed from config

Stefan Sperling (1):
      Small comment fix for git-cvsimport.

Wincent Colaiuta (1):
      Emit helpful status for accidental "git stash" save


Version v1.5.4-rc1; changes since v1.5.4-rc0:
---------------------------------------------

Andy Whitcroft (1):
      git-svn: expand handling of From: and Signed-off-by:

Charles Bailey (1):
      Fix git-instaweb breakage on MacOS X due to the limited sed functionality

Christian Couder (1):
      git-help: add "help.format" config variable.

David S. Miller (1):
      fast-import: fix unalinged allocation and access

Eric Wong (5):
      git-svn: unlink internal index files after operations
      git-svn: handle our top-level path being deleted and later re-added
      git-svn: avoid leaving leftover committer/author info in rebase
      git-svn: workaround a for broken symlinks in SVN
      git-svn: avoid warning when run without arguments

Finn Arne Gangstad (1):
      Improved submodule merge support

H. Merijn Brand (1):
      the use of 'tr' in the test suite isn't really portable

J. Bruce Fields (8):
      whitespace: fix off-by-one error in non-space-in-indent checking
      whitespace: reorganize initial-indent check
      whitespace: minor cleanup
      whitespace: fix initial-indent checking
      whitespace: more accurate initial-indent highlighting
      whitespace: fix config.txt description of indent-with-non-tab
      builtin-apply: minor cleanup of whitespace detection
      builtin-apply: stronger indent-with-on-tab fixing

Jakub Narębski (2):
      gitweb: disambiguate heads and tags withs the same name
      gitweb: Teach "a=blob" action to be more lenient about blob/file mime type

Jeff King (7):
      cvsexportcommit: fix massive commits
      trim_common_tail: brown paper bag fix.
      teach bash completion to treat commands with "--" as a helper
      rename git-browse--help to git-help--browse
      clone: correctly report http_fetch errors
      git-send-email: avoid duplicate message-ids
      test "git clone -o"

Jim Meyering (1):
      git-filter-branch.sh: more portable tr usage: use \012, not \n.

Johannes Schindelin (4):
      Support config variable diff.external
      Document diff.external and mergetool.<tool>.path
      rebase -p -i: handle "no changes" gracefully
      git show <tag>: show the tagger

Johannes Sixt (4):
      threaded pack-objects: Use condition variables for thread communication.
      Plug a resource leak in threaded pack-objects code.
      Clean up documentation that references deprecated 'git peek-remote'.
      filter-branch: Remove broken and unnecessary summary of rewritten refs.

Junio C Hamano (18):
      git-commit: squelch needless message during an empty merge
      xdl_diff: identify call sites.
      xdi_diff: trim common trailing lines
      diff --check: minor fixups
      Add tests for "git diff --check" with core.whitespace options
      xdiff tail trimming: use correct type.
      commit: allow --amend to reuse message from another commit
      remote: Fix bogus make_branch() call in configuration reader.
      Rename git-browse-help helper to git-browse--help
      Retire git-runstatus for real.
      Start preparing the API documents.
      Update draft release notes for 1.5.4
      Re-re-re-fix common tail optimization
      builtin-commit: fix summary output.
      builtin-commit: make summary output consistent with status
      Documentation/git-submodule: refer to gitmodules(5)
      builtin-blame.c: remove unneeded memclr()
      GIT 1.5.4-rc1

Kristian Høgsberg (1):
      Use a strbuf for building up section header and key/value pair strings.

Li Hong (1):
      Fix a memory leak

Linus Torvalds (1):
      unpack-trees: FLEX_ARRAY fix

Marco Roeland (1):
      clone: fix options '-o' and '--origin' to be recognised again

Mike Hommey (8):
      Fix some more memory leaks in http-push.c
      Fix random sha1 in error message in http-fetch and http-push
      Remove the default_headers variable from http-push.c
      Remove a CURLOPT_HTTPHEADER (un)setting
      Avoid redundant declaration of missing_target()
      Use strbuf in http code
      Fix various memory leaks in http-push.c and http-walker.c
      Move fetch_ref from http-push.c and http-walker.c to http.c

Nicolas Pitre (3):
      provide advance warning of some future pack default changes
      fix style of a few comments in diff-delta.c
      make 'git describe --all --contains' work

Petr Baudis (1):
      gitweb: Make config_to_multi return [] instead of [undef]

Pierre Habouzit (1):
      Fix segfault in diff-delta.c when FLEX_ARRAY is 1

Ralf Wildenhues (1):
      Fix some documentation typos.

Sam Vilain (1):
      Clarify error response from 'git fetch' for bad responses

Sean Estabrooks (1):
      Fix interactive rebase to preserve author email address

Shawn Bohrer (1):
      Fix spelling mistakes in user manual

Shawn O. Pearce (2):
      Avoid update hook during git-rebase --interactive
      Catch and handle git-commit failures in git-rebase --interactive

Wincent Colaiuta (5):
      "diff --check" should affect exit status
      Unify whitespace checking
      Make "diff --check" output match "git apply"
      Use shorter error messages for whitespace problems
      Test interaction between diff --check and --exit-code

anonymous (1):
      Documentation: describe pack idx v2


Version v1.5.4-rc0; changes since v1.5.3.8:
-------------------------------------------

Alex Riesen (12):
      fix t5403-post-checkout-hook.sh: built-in test in dash does not have "=="
      Fix a crash in ls-remote when refspec expands into nothing
      More updates and corrections to the russian translation of git-gui
      Rework make_usage to print the usage message immediately
      Updated russian translation of git-gui
      Do no colorify test output if stdout is not a terminal
      Add a test checking if send-pack updated local tracking branches correctly
      Update the tracking references only if they were succesfully updated on remote
      Fix dependencies of parse-options test program
      Do not generate full commit log message if it is not going to be used
      Simplify crud() in ident.c
      Fix git-fast-export for zero-sized blobs

Alexandre Julliard (12):
      git.el: Keep the status buffer sorted by filename.
      git.el: Allow selecting whether to display uptodate/unknown/ignored files.
      git.el: Allow the add and remove commands to be applied to ignored files.
      git.el: Preserve file marks when doing a full refresh.
      git.el: Do not print a status message on every git command.
      git.el: Update a file status in the git buffer upon save.
      git.el: Reset the permission flags when changing a file state.
      git.el: Fix typo in "Reverted file" message.
      git.el: Fix typo in git-update-saved-file error handling.
      git.el: Refresh only the changed file marks when marking/unmarking all.
      git.el: Run git-gc --auto after commits.
      git.el: Added a menu for git-status-mode.

Andreas Ericsson (1):
      Simplify strchrnul() compat code

André Goddard Rosa (2):
      Print the real filename that we failed to open.
      Error out when user doesn't have access permission to the repository

Andy Parkins (4):
      parse_date_format(): convert a format name to an enum date_mode
      Make for-each-ref allow atom names like "<name>:<something>"
      Make for-each-ref's grab_date() support per-atom formatting
      Add a test script for for-each-ref, including test of date formatting

Andy Whitcroft (6):
      Teach send-pack a mirror mode
      git-push: plumb in --mirror mode
      Add tests for git push'es mirror mode
      git-push: add documentation for the newly added --mirror mode
      git-quiltimport.sh fix --patches handling
      git-svn: add support for pulling author from From: and Signed-off-by:

Anton Gyllenberg (1):
      gitview: import only one of gtksourceview and gtksourceview2

Ask Bjørn Hansen (1):
      send-email: Don't add To: recipients to the Cc: header

Benoit Sigoure (7):
      git-svn: add a generic tree traversal to fetch SVN properties
      git-svn: implement git svn create-ignore
      git-svn: add git svn propget
      git-svn: add git svn proplist
      git-svn: simplify the handling of fatal errors
      core-tutorial: Catch up with current Git
      git-svn: sort the options in the --help message.

Björn Steinbrink (1):
      git config: Don't rely on regexec() returning 1 on non-match

Blake Ramsdell (1):
      transport.c: squelch a gcc 4.0.1 complaint about an uninitialized variable

Brandon Casey (2):
      git-gc: by default use safer "-A" option to repack when not --prune'ing
      git-gc --auto: simplify "repack" command line building

Brian Ewins (2):
      Add a --dry-run option to git-send-pack.
      Add a --dry-run option to git-push.

Brian Gernhardt (3):
      format-patch: Add configuration and off switch for --numbered
      format-patch: Test --[no-]numbered and format.numbered
      t3502: Disambiguate between file and rev by adding --

Carlos Rica (5):
      Function for updating refs.
      Add tests for documented features of "git reset".
      Move make_cache_entry() from merge-recursive.c into read-cache.c
      Make "git reset" a builtin.
      Make builtin-tag.c use parse_options.

Charles Bailey (1):
      Fix clone not to ignore depth when performing a local clone

Cheng Renquan (1):
      gitweb: the commitdiff is very commonly used, it's needed on search page, too

Chris Pettitt (3):
      git-p4 support for perforce renames.
      git-p4: Add a helper function to parse the full git diff-tree output.
      git-p4: Detect changes to executable bit and include them in p4 submit.

Christian Couder (27):
      rev-list --bisect: Move finding bisection into do_find_bisection.
      rev-list --bisect: Move some bisection code into best_bisection.
      rev-list --bisect: Bisection "distance" clean up.
      rev-list --bisect: Fix best == NULL case.
      Test suite: reset TERM to its previous value after testing.
      rev-list: implement --bisect-all
      rev-list documentation: add "--bisect-all".
      Bisect: fix some white spaces and empty lines breakages.
      Bisect: implement "bisect skip" to mark untestable revisions.
      Bisect: refactor "bisect_write_*" functions.
      Bisect: refactor some logging into "bisect_write".
      Bisect: refactor "bisect_{bad,good,skip}" into "bisect_state".
      Bisect: add "bisect skip" to the documentation.
      Bisect: add a "bisect replay" test case.
      Bisect run: "skip" current commit if script exit code is 125.
      Bisect: add "skip" to the short usage string.
      Bisect reset: remove bisect refs that may have been packed.
      Bisect visualize: use "for-each-ref" to list all good refs.
      Bisect: use "$GIT_DIR/BISECT_NAMES" to check if we are bisecting.
      Bisect reset: do nothing when not bisecting.
      Documentation: add a new man page for "git-help"
      Trace and quote with argv: get rid of unneeded count argument.
      git-help: add -i|--info option to display info page.
      Documentation: describe -i/--info option to "git-help"
      git-help: add -w|--web option to display html man page in a browser.
      Use {web,instaweb,help}.browser config options.
      Documentation: describe -w/--web option to "git-help".

Christian Stimming (14):
      Mark strings for translation.
      Makefile rules for translation catalog generation and installation.
      Add glossary that can be converted into a po file for each language.
      Add glossary translation template into git.
      German translation for git-gui
      German glossary for translation
      git-gui: Add more words to translation glossary
      git-gui: Update German glossary according to mailing list discussion
      git-gui: Incorporate glossary changes into existing German translation
      git-gui: Update German translation, including latest glossary changes
      git-gui: Add more terms to glossary.
      git-gui: Update German translation
      Update git-gui.pot with latest (few) string additions and changes.
      Update German translation. 100% completed.

Dan McGee (1):
      Remove outdated references to cogito in documentation

Daniel Barkalow (23):
      Refactor http.h USE_CURL_MULTI fill_active_slots().
      Make function to refill http queue a callback
      Remove obsolete commit-walkers
      Modularize commit-walker
      Add uploadpack configuration info to remote.
      Report information on branches from remote.h
      Make fetch-pack a builtin with an internal API
      Push code for transport library
      Add matching and parsing for fetch-side refspec rules
      Add fetch methods to transport library.
      Make fetch a builtin
      Allow abbreviations in the first refspec to be merged
      Fix adding a submodule with a remote url
      Restore default verbosity for http fetches.
      Remove duplicate ref matches in fetch
      Correct handling of upload-pack in builtin-fetch-pack
      Miscellaneous const changes and utilities
      Build-in peek-remote, using transport infrastructure.
      Use built-in send-pack.
      Build-in send-pack, with an API for other programs to call.
      Build in ls-remote
      Use parseopts in builtin-push
      Add more checkout tests

David D. Kilzer (8):
      git-svn log: fix ascending revision ranges
      git-svn log: include commit log for the smallest revision in a range
      git-svn log: handle unreachable revisions like "svn log"
      git-send-email: show all headers when sending mail
      git-svn: extract reusable code into utility functions
      git-svn info: implement info command
      git-svn: info --url [path]
      git-svn: Remove unnecessary Git::SVN::Util package

David Kastrup (3):
      diff-delta.c: pack the index structure
      diff-delta.c: Rationalize culling of hash buckets
      git-commit.sh: Shell script cleanup

David Reiss (1):
      git-svn: Fix a typo and add a comma in an error message in git-svn

David Symonds (7):
      gitweb: Provide title attributes for abbreviated author names.
      gitweb: Refactor abbreviation-with-title-attribute code.
      gitweb: Use chop_and_escape_str in more places.
      Rearrange git-format-patch synopsis to improve clarity.
      git-checkout: Support relative paths containing "..".
      git-checkout: Test for relative path use.
      Mention that git-rm can be an appropriate resolution as well as git-add.

Dmitry Potapov (1):
      preserve executable bits in zip archives

Douglas Stockwell (1):
      send-email: Add support for SSL and SMTP-AUTH

Emil Medve (2):
      Fixed a command line option type for builtin-fsck.c
      git-stash: Fix listing stashes

Eric Wong (6):
      git-svn: support for funky branch and project names over HTTP(S)
      git-svn: add tests for command-line usage of init and clone commands
      t9106: fix a race condition that caused svn to miss modifications
      git-svn: allow `info' command to work offline
      git-svn: replace .rev_db with a more space-efficient .rev_map format
      git-svn: reinstate old rev_db optimization in new rev_map

Eygene Ryabinkin (2):
      git-svn: respect Subversion's [auth] section configuration values
      git-svn: use "no warnings 'once'" to disable false-positives

Eyvind Bernhardsen (1):
      Fix mis-markup of the -p, --patch option in git-add(1)

Frederick Akalin (1):
      gtksourceview2 support for gitview

Gerrit Pape (9):
      No longer install git-svnimport, move to contrib/examples
      git-reset: add -q option to operate quietly
      contrib/hooks/post-receive-email: fix typo
      contrib/hooks/post-receive-email: reformat to wrap comments at 76 chars
      contrib/hooks/post-receive-email: make subject prefix configurable
      hooks--update: fix test for properly set up project description file
      hooks--update: decline deleting tags or branches by default, add config options
      contrib/hooks/post-receive-email: remove cruft, $committer is not used
      Don't cache DESTDIR in perl/perl.mak.

Gordon Hopper (1):
      git-cvsimport: fix handling of user name when it is not set in CVSROOT

Guido Ostkamp (2):
      Remove unreachable statements
      Use compat mkdtemp() on Solaris boxes

Gustaf Hendeby (1):
      git-svn now reads settings even if called in subdirectory

H. Merijn Brand (1):
      Do not rely on the exit status of "unset" for unset variables

Harri Ilari Tapio Liusvaara (1):
      git-gui: Disambiguate "commit"

Heikki Orsila (1):
      git-clone: honor "--" to end argument parsing

Irina Riesen (1):
      git-gui: initial version of russian translation

J. Bruce Fields (3):
      git-rebase: support --whitespace=<option>
      git-rebase: fix -C option
      errors: "strict subset" -> "ancestor"

Jakub Narębski (18):
      gitweb: Fix and simplify "split patch" detection
      gitweb: Always set 'from_file' and 'to_file' in parse_difftree_raw_line
      gitweb: Add 'status_str' to parse_difftree_raw_line output
      gitweb: Remove CGI::Carp::set_programname() call from t9500 gitweb test
      gitweb: Easier adding/changing parameters to current URL
      gitweb: Use href(-replay=>1, page=>...) to generate pagination links
      gitweb: Use href(-replay=>1, action=>...) to generate alternate views
      gitweb: Add tests for overriding gitweb config with repo config
      gitweb: Read repo config using 'git config -z -l'
      gitweb: Use config file for repository description and URLs
      gitweb: Style all tables using CSS
      gitweb: Put project README in div.readme, fix its padding
      autoconf: Add tests for memmem, strtoumax and mkdtemp functions
      Add config_int() method to the Git perl module
      gitweb: Update and improve gitweb/README file
      contrib: Make remotes2config.sh script more robust
      autoconf: Add test for OLD_ICONV (squelching compiler warning)
      autoconf: Check asciidoc version to automatically set ASCIIDOC8

James Bowes (3):
      remote: add 'rm' subcommand
      remote: document the 'rm' subcommand
      gc: use parse_options

Jari Aalto (2):
      git-remote: exit with non-zero status after detecting error in "rm".
      On error, do not list all commands, but point to --help option

Jeff King (36):
      contrib/fast-import: add perl version of simple example
      diffcore-rename: cache file deltas
      git-rebase: document suppression of duplicate commits
      send-pack: don't update tracking refs on error
      t5516: test update of local refs on push
      git-gc: improve wording of --auto notification
      Documentation/git-gc: explain --auto in description
      Documentation/git-gc: improve description of --auto
      more terse push output
      receive-pack: don't mention successful updates
      send-pack: require --verbose to show update of tracking refs
      git-ls-files: add --exclude-standard
      send-pack: track errors for each ref
      send-pack: check ref->status before updating tracking refs
      send-pack: assign remote errors to each ref
      make "find_ref_by_name" a public function
      send-pack: tighten remote error reporting
      send-pack: fix "everything up-to-date" message
      avoid "defined but not used" warning for fetch_objs_via_walker
      send-pack: cluster ref status reporting
      git-tag: test that -s implies an annotated tag
      Revert "t5516: test update of local refs on push"
      git-commit: clean up die messages
      Enable rewrite as well as rename detection in git-status
      quote_path: fix collapsing of relative paths
      t9600: require cvsps 2.1 to perform tests
      t7300: add test for clean with wildcard pathspec
      wt-status.c:quote_path(): convert empty path to "./"
      add status.relativePaths config variable
      git-status: documentation improvements
      don't mention index refreshing side effect in git-status docs
      Add git-browse-help to .gitignore
      Support GIT_PAGER_IN_USE environment variable
      git-svn: get color config from --get-colorbool
      shortlog: document -e option
      git-clone: print an error message when trying to clone empty repo

Jeff Muizelaar (1):
      fix contrib/hooks/post-receive-email hooks.recipients error message

Jim Meyering (1):
      hooks-pre-commit: use \t, rather than a literal TAB in regexp

Johannes Schindelin (57):
      Add po/git-gui.pot
      Ignore po/*.msg
      Teach "git remote" a mirror mode
      verify-tag: also grok CR/LFs in the tag signature
      apply: get rid of --index-info in favor of --build-fake-ancestor
      Move bundle specific stuff into bundle.[ch]
      Add bundle transport
      git-gui: Deiconify startup wizard so it raises to the top
      git-gui: add a simple msgfmt replacement
      rebase -i: commit when continuing after "edit"
      rebase -i: style fixes and minor cleanups
      rebase -i: Fix numbers in progress report
      rebase -i: avoid exporting GIT_AUTHOR_* variables
      rebase -i: work on a detached HEAD
      rebase -i: support single-letter abbreviations for the actions
      Introduce remove_dir_recursively()
      fetch/push: readd rsync support
      Support cvs via git-shell
      Fix compilation when NO_CURL is defined
      cvsexportcommit: get rid of temporary directory
      fetch: if not fetching from default remote, ignore default merge
      Deduce exec_path also from calls to git with a relative path
      Add tests for parse-options.c
      parse-options: Allow abbreviated options when unambiguous
      po2msg: ignore entries marked with "fuzzy"
      po2msg: ignore untranslated messages
      po2msg: actually output statistics
      git-reset: do not be confused if there is nothing to reset
      Split off the pretty print stuff into its own file
      parse-options: abbreviation engine fix.
      builtin-reset: do not call "ls-files --unmerged"
      builtin-reset: avoid forking "update-index --refresh"
      Deprecate git-lost-found
      rebase: operate on a detached HEAD
      builtin-blame: set up the work_tree before the first file access
      rebase: fix "rebase --continue" breakage
      Close files opened by lock_file() before unlinking.
      rebase -i: move help to end of todo file
      launch_editor(): read the file, even when EDITOR=:
      builtin-commit: fix reflog message generation
      git status: show relative paths when run in a subdirectory
      builtin-commit: fix --signoff
      builtin-commit --s: add a newline if the last line was not a S-o-b
      builtin-commit: resurrect behavior for multiple -m options
      builtin-commit: Add newline when showing which commit was created
      Replace "runstatus" with "status" in the tests
      filter-branch: fix dirty way to provide the helpers to commit filters
      git checkout's reflog: even when detaching the HEAD, say from where
      bash completion: add diff options
      Replace instances of export VAR=VAL with VAR=VAL; export VAR
      Teach 'git pull' about --rebase
      rebase -i: give rerere a chance
      receive-pack: allow deletion of corrupt refs
      Add "--expire <time>" option to 'git prune'
      Add 'git fast-export', the sister of 'git fast-import'
      fast-export: rename the signed tag mode 'ignore' to 'verbatim'
      Allow ':/<oneline-prefix>' syntax to work with save_commit_buffer == 0

Johannes Sixt (38):
      git-gui: Change main window layout to support wider screens
      gitk: Do not pick up file names of "copy from" lines
      Change git_connect() to return a struct child_process instead of a pid_t.
      Use start_command() in git_connect() instead of explicit fork/exec.
      Use start_command() to run content filters instead of explicit fork/exec.
      Use run_command() to spawn external diff programs instead of fork/exec.
      Use start_comand() in builtin-fetch-pack.c instead of explicit fork/exec.
      Have start_command() create a pipe to read the stderr of the child.
      upload-pack: Use start_command() to run pack-objects in create_pack_file().
      Add infrastructure to run a function asynchronously.
      Use the asyncronous function infrastructure in builtin-fetch-pack.c.
      upload-pack: Move the revision walker into a separate function.
      upload-pack: Run rev-list in an asynchronous function.
      t0021-conversion.sh: Test that the clean filter really cleans content.
      Avoid a dup2(2) in apply_filter() - start_command() can do it for us.
      Use the asyncronous function infrastructure to run the content filter.
      Fix an infinite loop in sq_quote_buf().
      upload-pack: Use finish_{command,async}() instead of waitpid().
      Give git-am back the ability to add Signed-off-by lines.
      git-clean: Fix error message if clean.requireForce is not set.
      Fix preprocessor logic that determines the availablity of strchrnul().
      t5300-pack-object.sh: Split the big verify-pack test into smaller parts.
      t7501-commit.sh: Not all seds understand option -i
      t5302-pack-index: Skip tests of 64-bit offsets if necessary.
      Skip t3902-quoted.sh if the file system does not support funny names.
      Use is_absolute_path() in sha1_file.c.
      Move #include <sys/select.h> and <sys/ioctl.h> to git-compat-util.h.
      builtin run_command: do not exit with -1.
      Allow a relative builtin template directory.
      Introduce git_etc_gitconfig() that encapsulates access of ETC_GITCONFIG.
      Allow ETC_GITCONFIG to be a relative path.
      refs.c: Remove unused get_ref_sha1()
      fetch-pack: Prepare for a side-band demultiplexer in a thread.
      Flush progress message buffer in display().
      git-gui: Improve the application icon on Windows.
      git-commit: Allow to amend a merge commit that does not change the tree
      for-each-ref: Fix quoting style constants.
      Fix a typo in checkout.sh and cleanup one-line help messages

Jonas Fonseca (2):
      Update manpages to reflect new short and long option aliases
      Documentation: Fix references to deprecated commands

Jonathan del Strother (2):
      Fixing path quoting in git-rebase
      gitk: Add support for OS X mouse wheel

Josh England (4):
      Add post-merge hook, related documentation, and tests.
      Added example hook script to save/restore permissions/ownership.
      post-checkout hook, tests, and docs
      Minor usage update in setgitperms.perl

Junio C Hamano (157):
      Keep last used delta base in the delta window
      git-gui po/README: Guide to translators
      Start 1.5.4 cycle
      Implement git gc --auto
      Invoke "git gc --auto" from commit, merge, am and rebase.
      archive - leakfix for format_subst()
      git-commit: Allow partial commit of file removal.
      An additional test for "git-reset -- path"
      Simplify cache API
      git-commit: partial commit of paths only removed from the index
      Document ls-files --with-tree=<tree-ish>
      builtin-pack-objects.c: avoid bogus gcc warnings
      stash: implement "stash create"
      rebase: allow starting from a dirty tree.
      Export matches_pack_name() and fix its return value
      pack-objects --keep-unreachable
      repack -A -d: use --keep-unreachable when repacking
      git-gc --auto: move threshold check to need_to_gc() function.
      git-gc --auto: add documentation.
      git-gc --auto: protect ourselves from accumulated cruft
      git-gc --auto: restructure the way "repack" command line is built.
      git-gc --auto: run "repack -A -d -l" as necessary.
      builtin-apply.c: fix a tiny leak introduced during xmemdupz() conversion.
      builtin-for-each-ref.c::copy_name() - do not overstep the buffer.
      git-remote rm: add tests and minor fix-ups
      Start RelNotes for 1.5.4
      strbuf_setlen(): do not barf on setting length of an empty buffer to 0
      send-email --smtp-server-port: allow overriding the default port
      rerere: Fix use of an empty strbuf.buf
      git-am: make the output quieter.
      bundle transport: fix an alloc_ref() call
      Update stale documentation link in the k.org site
      git-am: fix typo in the previous one.
      dateformat: parse %(xxdate) %(yydate:format) correctly
      builtin-apply: fix conversion error in strbuf series
      Update state documentation link for 1.5.3.4
      k.org git toppage: Add link to 1.5.3 release notes.
      help: remove extra blank line after "See 'git --help'" message
      revert/cherry-pick: work on merge commits as well
      git-fetch: do not fail when remote branch disappears
      RelNotes-1.5.4: describe recent updates
      git-gui: Update Japanese strings (part 2)
      Revert "rebase: allow starting from a dirty tree."
      git-merge: no reason to use cpio anymore
      format-patch -s: add MIME encoding header if signer's name requires so
      cherry-pick/revert -m: add tests
      test format-patch -s: make sure MIME content type is shown as needed
      War on whitespace: first, a bit of retreat.
      git-diff: complain about >=8 consecutive spaces in initial indent
      core.whitespace: add test for diff whitespace error highlighting
      clean: require -f to do damage by default
      gc: --prune prunes unreferenced objects.
      scripts: Add placeholders for OPTIONS_SPEC
      git-rev-parse --parseopt
      git-sh-setup: fix parseopt `eval` string underquoting
      send-pack: segfault fix on forced push
      Style: place opening brace of a function definition at column 1
      git-am: -i does not take a string parameter.
      Update draft release notes for 1.5.4
      Documentation: lost-found is now deprecated.
      Make check-docs target detect removed commands
      Documentation: remove documentation for removed tools.
      git-commit: a bit more tests
      Resurrect git-revert.sh example and add comment to builtin-revert.c
      core.excludesfile clean-up
      Fix per-directory exclude handing for "git add"
      git-bisect: war on "sed"
      git-bisect: use update-ref to mark good/bad commits
      git-bisect: modernize branch shuffling hack
      Update draft release notes for 1.5.4
      Draft release notes: fix clean.requireForce description
      Update draft release notes for 1.5.4
      Move gitk to its own subdirectory
      git-clean: Fix error message if clean.requireForce is not set.
      git-compat-util.h: auto-adjust to compiler support of FLEX_ARRAY a bit better
      Fix "quote" misconversion for rewrite diff output.
      Make test scripts executable.
      file_exists(): dangling symlinks do exist
      builtin-commit: do not color status output shown in the message template
      builtin-commit: run commit-msg hook with correct message file
      Export three helper functions from ls-files
      Fix add_files_to_cache() to take pathspec, not user specified list of files
      builtin-commit: fix partial-commit support
      Addendum to "MaintNotes"
      git-add -i: allow multiple selection in patch subcommand
      git-branch --contains=commit
      git-branch --contains: doc and test
      builtin-tag: accept and process multiple -m just like git-commit
      Add a few more tests for git-commit
      builtin-apply: rename "whitespace" variables and fix styles
      t4119: correct overeager war-on-whitespace
      builtin-apply: teach whitespace_rules
      core.whitespace: documentation updates.
      Deprecate peek-remote
      Update draft release notes for 1.5.4
      builtin-add: fix command line building to call interactive
      add -i: Fix running from a subdirectory
      "git-tag -s" should create a signed annotated tag
      revert/cherry-pick: do not mention the original ref
      "color.diff = true" is not "always" anymore.
      git-config --get-color: get configured color
      dir.c: minor clean-up
      per-directory-exclude: lazily read .gitignore files
      Update draft release notes for 1.5.4
      Resurrect peek-remote
      Consolidate command list to one.
      Update draft release notes for 1.5.4
      rename: Break filepairs with different types.
      git-am: catch missing author date early.
      Fix --signoff in builtin-commit differently.
      git-commit: Allow to amend a merge commit that does not change the tree
      git-commit --allow-empty
      git-commit --allow-empty
      git-commit documentation: fix unfinished sentence.
      Add git-fast-export to list of commands.
      Update draft release notes for 1.5.4
      Run the specified perl in Documentation/
      Formatting fix for Documentation/git-help.txt
      Documentation: rerere is enabled by default these days.
      Documentation/git.txt: typofix
      t5510: add a bit more tests for fetch
      git-cvsserver runs hooks/post-update
      Revert "git-am: catch missing author date early."
      Documentation: color.* = true means "auto"
      git config --get-colorbool
      Color support for "git-add -i"
      git-clean: Honor pathspec.
      config --get-colorbool: diff.color is a deprecated synonym to color.diff
      Use gitattributes to define per-path whitespace rule
      hg-to-git: handle an empty dir in hg.
      do not discard status in fetch_refs_via_pack()
      git-status documentation: mention subdirectory behaviour
      Update draft release notes to 1.5.4
      git-bisect visualize: work in non-windowed environments better
      mailmap: fix bogus for() loop that happened to be safe by accident
      shortlog: code restructuring and clean-up
      git-shortlog -e: show e-mail address as well
      ls-remote: resurrect pattern limit support
      Fix commit-msg hook to allow editing
      Re-fix "builtin-commit: fix --signoff"
      Re-fix ls-remote
      Update draft Release Notes for 1.5.4
      Documentation: add gitman.info target
      git-help -i: invoke info with document and node name
      git-help -i: show info documentation from matching version of git
      send-email: do not muck with initial-reply-to when unset.
      commit: do not add extra LF at the end of the summary.
      Support a merge with conflicting gitlink change
      blame: drop blob data after passing blame to the parent
      shortlog: default to HEAD when the standard input is a tty
      git-diff --numstat -z: make it machine readable
      disable t9119 for now.
      Documentation: rename git.texi to user-manual.texi
      git.spec.in: remove python_path
      git-help -w: do not require to be in git repository
      RPM spec: Adjust htmldir
      GIT 1.5.4-rc0

Kevin Leung (2):
      git-p4: Fix typo in --detect-labels
      git-stash: Display help message if git-stash is run with wrong sub-commands

Kirill (1):
      Updated Russian translation.

Konstantin V. Arkhipov (1):
      git-svn's dcommit must use subversion's config

Kristian Høgsberg (18):
      Enable wt-status output to a given FILE pointer.
      Enable wt-status to run against non-standard index file.
      Add strbuf_read_file().
      Clean up stripspace a bit, use strbuf even more.
      Introduce entry point add_interactive and add_files_to_cache
      Export rerere() and launch_editor().
      Port builtin-add.c to use the new option parser.
      Add testcase for amending and fixing author in git commit.
      Export launch_editor() and make it accept ':' as a no-op editor.
      Port git commit to C.
      builtin-commit: Refresh cache after adding files.
      Call refresh_cache() when updating the user index for --only commits.
      builtin-commit: Clean up an unused variable and a debug fprintf().
      t7501-commit: Add test for git commit <file> with dirty index.
      builtin-commit: Include the diff in the commit message when verbose.
      Fix off-by-one error when truncating the diff out of the commit message.
      Use a strbuf for copying the command line for the reflog.
      Rewrite builtin-fetch option parsing to use parse_options().

Kristof Provost (1):
      makefile: Add a cscope target

Lars Hjemli (11):
      git-svn: add support for --first-parent
      git-svn: always use --first-parent
      Add test-script for git-merge porcelain
      git-merge: fix faulty SQUASH_MSG
      git-merge: refactor option parsing
      git-merge: add support for branch.<name>.mergeoptions
      git-merge: add support for --commit and --no-squash
      git-merge: add --ff and --no-ff options
      Make merge-recursive honor diff.renamelimit
      Teach git-pull about --[no-]ff, --no-squash and --commit
      for-each-ref: fix setup of option-parsing for --sort

Lars Knoll (1):
      Speedup scanning for excluded files.

Linus Torvalds (18):
      optimize diffcore-delta by sorting hash entries.
      Add 'diffcore.h' to LIB_H
      Split out "exact content match" phase of rename detection
      Ref-count the filespecs used by diffcore
      copy vs rename detection: avoid unnecessary O(n*m) loops
      Do linear-time/space rename logic for exact renames
      Do exact rename detection regardless of rename limits
      Fix ugly magic special case in exact rename detection
      Do the fuzzy rename detection limits with the exact renames removed
      Simplify topo-sort logic
      Add "--early-output" log flag for interactive GUI use
      Enhance --early-output format
      revision walker: mini clean-up
      Fix rev-list when showing objects involving submodules
      Fix parent rewriting in --early-output
      Fix a pathological case in git detecting proper renames
      Fix a pathological case in git detecting proper renames
      "git tag -u keyname" broken

Luke Lu (1):
      gitweb: speed up project listing on large work trees by limiting find depth

Marius Storm-Olsen (2):
      Add 'git-p4 commit' as an alias for 'git-p4 submit'
      Teach core.autocrlf to 'git blame'

Mark Levedahl (1):
      git-submodule - allow a relative path as the subproject url

Matt Kraai (2):
      Move convert-objects to contrib.
      rebase -i: create .dotest-merge after validating options.

Matthias Kestenholz (1):
      Documentation: add --patch option to synopsis of git-add

Michael Gebetsroither (1):
      hg-to-git speedup through selectable repack intervals

Michael W. Olson (2):
      git-rebase--interactive.sh: Quote arguments to test
      Documentation/git-tag.txt: Document how to backdate tags

Michael Witten (2):
      git-cvsexportcommit.perl: git-apply no longer needs --binary
      git-cvsserver runs hooks/post-receive

Michal Vitecek (1):
      Don't use "<unknown>" for placeholders and suppress printing of empty user formats.

Michele Ballabio (7):
      git-gui: remove dots in some UI strings
      git-gui: add some strings to translation
      git-gui: fix typo in lib/blame.tcl
      git-gui: update Italian translation
      test-lib.sh: move error line after error() declaration
      git-gui: fix a typo in lib/commit.tcl
      git-gui: update it.po and glossary/it.po

Mike Dalessio (2):
      instaweb: allow for use of auto-generated scripts
      instaweb: support for Ruby's WEBrick server

Mike Hommey (13):
      Reuse previous annotation when overwriting a tag
      Add tests for git tag
      Refactor working tree setup
      Use setup_work_tree() in builtin-ls-files.c
      Don't always require working tree for git-rm
      Make git-blame fail when working tree is needed and we're not in one
      Small code readability improvement in show_reference() in builtin-tag.c
      Do git reset --hard HEAD when using git rebase --skip
      Fix and improve t7004 (git-tag tests)
      git-send-email.perl: Really add angle brackets to In-Reply-To if necessary
      Cleanup variables in http.[ch]
      Fix small memory leaks induced by diff_tree_setup_paths
      Fix XML parser leaks in http-push

Miklos Vajna (4):
      Hungarian translation of git-gui
      git-send-email: add a new sendemail.to configuration variable
      Include diff options in the git-log manpage
      Update Hungarian translation. 100% completed.

Nanako Shiraishi (3):
      Japanese translation of git-gui
      git-gui: Update Japanese strings
      Update ja.po for git-gui

Nguyễn Thái Ngọc Duy (3):
      contrib/fast-import: add simple shell example
      git-sh-setup.sh: use "git rev-parse --show-cdup" to check for SUBDIRECTORY_OK
      Remove repo version check from setup_git_directory

Nicolas Pitre (42):
      straighten the list of objects to deltify
      localize window memory usage accounting
      rearrange delta search progress reporting
      basic threaded delta search
      threaded delta search: refine work allocation
      threaded delta search: better chunck split point
      threaded delta search: specify number of threads at run time
      fix threaded delta search locking
      threaded delta search: add pack.threads config variable
      threaded delta search: proper locking for cache accounting
      more compact progress display
      cope with multiple line breaks within sideband progress messages
      pack-objects: no delta possible with only one object in the list
      pack-objects.c: fix some global variable abuse and memory leaks
      fix const issues with some functions
      fix for more minor memory leaks
      prune-packed: don't call display_progress() for every file
      make struct progress an opaque type
      relax usage of the progress API
      add throughput to progress display
      add throughput display to index-pack
      add some copyright notice to the progress display code
      add throughput display to git-push
      return the prune-packed progress display to the inner loop
      make sure throughput display gets updated even if progress doesn't move
      Show total transferred as part of throughput progress
      make the pack index version configurable
      pack-objects: get rid of an ugly cast
      git-fetch: more terse fetch output
      fix display overlap between remote and local progress
      sideband.c: ESC is spelled '\033' not '\e' for portability.
      make display of total transferred more accurate
      remove dead code from the csum-file interface
      restore fetching with thin-pack capability
      make display of total transferred fully accurate
      nicer display of thin pack completion
      add a howto document about corrupted blob recovery
      rehabilitate some t5302 tests on 32-bit off_t machines
      pack-objects: fix delta cache size accounting
      pack-objects: reverse the delta search sort list
      pack-objects: fix threaded load balancing
      pack-objects: more threaded load balancing fix with often changed paths

Paolo Ciarrocchi (1):
      Italian translation of git-gui

Pascal Obry (2):
      git-stash: do not get fooled with "color.diff = true"
      Set OLD_ICONV on Cygwin.

Paul Mackerras (37):
      gitk: Establish and use global left-to-right ordering for commits
      gitk: Improve the drawing of links to parent lines
      gitk: Eliminate diagonal arrows
      gitk: Get rid of idrowranges and rowrangelist
      gitk: Get rid of idinlist array
      gitk: Fix some problems with the display of ids as links
      gitk: Get rid of the rowchk array
      gitk: Do only the parts of the layout that are needed
      gitk: Fix bug causing incorrect ref list contents when switching view
      gitk: Fix bug causing undefined variable error when cherry-picking
      gitk: Add a cache for the topology info
      gitk: Make it possible to lay out all the rows we have received so far
      gitk: Fix bugs in setting rowfinal
      gitk: Get rid of lookingforhead, use commitinterest instead
      gitk: Fix bug in generating patches
      gitk: Simplify highlighting interface and combine with Find function
      gitk: Fix a couple of bugs
      gitk: Add progress bars for reading in stuff and for finding
      gitk: Fix the tab setting in the diff display window
      gitk: Fix bug causing Tcl error when changing find match type
      gitk: Use named fonts instead of the font specification
      gitk: Keep track of font attributes ourselves instead of using font actual
      gitk: Add a font chooser
      gitk: Fix bug where the last few commits would sometimes not be visible
      gitk: Get rid of the diffopts variable
      gitk: Fix Tcl error: can't unset findcurline
      gitk: Check that we are running on at least Tcl/Tk 8.4
      gitk: Avoid an error when cherry-picking if HEAD has moved on
      gitk: Fix "can't unset prevlines(...)" Tcl error
      gitk: Limit diff display to listed paths by default
      gitk: Ensure tabstop setting gets restored by Cancel button
      gitk: Integrate the reset progress bar in the main frame
      gitk: Use the status window for other functions
      gitk: Fix some bugs with path limiting in the diff display
      gitk: Fix a couple more bugs in the path limiting
      gitk: Simplify the code for finding commits
      gitk: Use the UI font for the diff/old version/new version radio buttons

Pierre Habouzit (80):
      Rework strbuf API and semantics.
      Simplify strbuf uses in archive-tar.c using strbuf API
      fast-import: Use strbuf API, and simplify cmd_data()
      mktree: Simplify write_tree() using strbuf API
      Use strbuf API in apply, blame, commit-tree and diff
      Use strbuf API in buitin-rerere.c
      Use strbuf API in cache-tree.c
      Strbuf API extensions and fixes.
      Change semantics of interpolate to work like snprintf.
      Rework pretty_print_commit to use strbufs instead of custom buffers.
      Use strbuf_read in builtin-fetch-tool.c.
      Use strbufs to in read_message (imap-send.c), custom buffer--.
      Replace all read_fd use with strbuf_read, and get rid of it.
      New strbuf APIs: splice and attach.
      Rewrite convert_to_{git,working_tree} to use strbuf's.
      Now that cache.h needs strbuf.h, remove useless includes.
      builtin-apply: use strbuf's instead of buffer_desc's.
      Refactor replace_encoding_header.
      Remove preemptive allocations.
      Drop strbuf's 'eof' marker, and make read_line a first class citizen.
      fast-import was using dbuf's, replace them with strbuf's.
      fast-import optimization:
      Add xmemdupz() that duplicates a block of memory, and NUL terminates it.
      Use xmemdupz() in many places.
      Fix the expansion pattern of the pseudo-static path buffer.
      nfv?asprintf are broken without va_copy, workaround them.
      strbuf API additions and enhancements.
      Rework unquote_c_style to work on a strbuf.
      Full rework of quote_c_style and write_name_quoted.
      sq_quote_argv and add_to_string rework with strbuf's.
      Add strbuf_cmp.
      Make builtin-rerere use of strbuf nicer and more efficient.
      Small cache_tree_write refactor.
      double free in builtin-update-index.c
      strbuf change: be sure ->buf is never ever NULL.
      strbuf_read_file enhancement, and use it.
      Make read_patch_file work on a strbuf.
      Fix in-place editing functions in convert.c
      Add some fancy colors in the test library when terminal supports it.
      Support a --quiet option in the test-suite.
      fast-import.c: fix regression due to strbuf conversion
      Add a simple option parser.
      parse-options: be able to generate usages automatically
      parse-options: make some arguments optional, add callbacks.
      Add shortcuts for very often used options.
      parse-options: allow callbacks to take no arguments at all.
      Make builtin-rm.c use parse_options.
      Make builtin-mv.c use parse-options
      Make builtin-branch.c use parse_options.
      Make builtin-describe.c use parse_options
      Make builtin-revert.c use parse_options.
      Make builtin-update-ref.c use parse_options
      Make builtin-symbolic-ref.c use parse_options.
      Make builtin-for-each-ref.c use parse-opts.
      Make builtin-fsck.c use parse_options.
      Make builtin-count-objects.c use parse_options.
      Make builtin-name-rev.c use parse_options.
      Make builtin-pack-refs.c use parse_options.
      git-fetch: be even quieter.
      Some better parse-options documentation.
      Add a parseopt mode to git-rev-parse to bring parse-options to shell scripts.
      Update git-sh-setup(1) to allow transparent use of git-rev-parse --parseopt
      Migrate git-clean.sh to use git-rev-parse --parseopt.
      Migrate git-clone to use git-rev-parse --parseopt
      Migrate git-am.sh to use git-rev-parse --parseopt
      Migrate git-merge.sh to use git-rev-parse --parseopt
      Migrate git-instaweb.sh to use git-rev-parse --parseopt
      Migrate git-checkout.sh to use git-rev-parse --parseopt --keep-dashdash
      Migrate git-quiltimport.sh to use git-rev-parse --parseopt
      Migrate git-repack.sh to use git-rev-parse --parseopt
      sh-setup: don't let eval output to be shell-expanded.
      parse-options new features.
      Use OPT_SET_INT and OPT_BIT in builtin-branch
      Use OPT_BIT in builtin-for-each-ref
      Use OPT_BIT in builtin-pack-refs
      Make the diff_options bitfields be an unsigned with explicit masks.
      Reorder diff_opt_parse options more logically per topics.
      parse-options: Allow to hide options from the default usage.
      builtin-commit.c: export GIT_INDEX_FILE for launch_editor as well.
      Invert numbers and names in the git-shortlog summary mode.

Pini Reznik (1):
      Open external merge tool with original file extensions for all three files

Ralf Wildenhues (10):
      manual: Fix or remove em dashes.
      Fix some typos, punctuation, missing words, minor markup.
      Fix wording in push definition.
      manual: Fix example finding commits referencing given content.
      manual: add some markup.
      manual: use 'URL' instead of 'url'.
      git-cherry-pick: improve description of -x.
      Fix minor nits in configure.ac
      git-bisect.sh: Fix sed script to work with AIX and BSD sed.
      Document all help keys in "git add -i" patch mode.

René Scharfe (13):
      Export format_commit_message()
      archive: specfile support (--pretty=format: in archive files)
      Remove unused function convert_sha1_file()
      add memmem()
      archive: specfile syntax change: "$Format:%PLCHLDR$" instead of just "%PLCHLDR" (take 2)
      archive: rename attribute specfile to export-subst
      archive: fix subst file generation
      Correct some sizeof(size_t) != sizeof(unsigned long) typing errors
      Add strchrnul()
      --pretty=format: on-demand format expansion
      --pretty=format: parse commit message only once
      add strbuf_adddup()
      --format=pretty: avoid calculating expensive expansions twice

Robert Boone (1):
      Define NO_MEMMEM of FreeBSD as it lacks the function

Robert Schiele (2):
      git-gui: install-sh from automake does not like -m755
      install-sh from automake does not like -m without delimiting space

Robin Rosenberg (1):
      cvsexportcommit: Add switch to specify CVS workdir

Sam Vilain (6):
      git-svn: fix test for trunk svn (commit message not needed)
      git-svn: fix test for trunk svn (transaction out of date)
      git-svn: handle changed svn command-line syntax
      gitk: disable colours when calling git log
      Allow HTTP proxy to be overridden in config
      Add remote.<name>.proxy

Scott R Parish (7):
      "git" returns 1; "git help" and "git help -a" return 0
      remove unused/unneeded "pattern" argument of list_commands
      "current_exec_path" is a misleading name, use "argv_exec_path"
      list_commands(): simplify code by using chdir()
      use only the $PATH for exec'ing git commands
      include $PATH in generating list of commands for "help -a"
      shell should call the new setup_path() to setup $PATH

Sergei Organov (7):
      core-tutorial.txt: Fix git-show-branch example and its description
      user-manual.txt: fix a few mistakes
      user-manual: minor rewording for clarity.
      Documentation: customize diff-options depending on particular command
      user-manual.txt: minor clarification.
      Documentation: fix git-clone manpage not to refer to itself
      Let git-help prefer man-pages installed with this version of git

Shawn Bohrer (4):
      Add more tests for git-clean
      Make git-clean a builtin
      Teach git clean to use setup_standard_excludes()
      Make git status usage say git status instead of git commit

Shawn O. Pearce (106):
      git-gui: Locate the library directory early during startup
      git-gui: Initialize Tcl's msgcat library for internationalization
      git-gui: Update po/README as symlink process is not necessary
      git-gui: Correct stock message for 'Invalid font specified in %s'
      git-gui: Quiet the msgfmt part of the make process
      git-gui: Ensure msgfmt failure stops GNU make
      Define NO_MEMMEM on Darwin as it lacks the function
      git-gui: Mark revision chooser tooltip for translation
      git-gui: Localize commit/author dates when displaying them
      git-gui: Support context-sensitive i18n
      git-gui: Document the new i18n context support
      git-gui: Make the tree browser also use lightgray selection
      git-gui: Paper bag fix missing translated strings
      Correct builtin-fetch to handle + in refspecs
      Fix off by one bug in reflog messages written by builtin-fetch
      Remove unnecessary debugging from builtin-fetch
      Remove unused unpacklimit variable from builtin-fetch
      Replace custom memory growth allocator with ALLOC_GROW
      Simplify fetch transport API to just one function
      Refactor index-pack "keep $sha1" handling for reuse
      Remove pack.keep after ref updates in git-fetch
      Always ensure the pack.keep file is removed by git-fetch
      Fix builtin-fetch memory corruption by not overstepping array
      Backup the array passed to fetch_pack so we can free items
      Properly cleanup in http_cleanup so builtin-fetch does not segfault
      Don't bother passing ref log details to walker in builtin-fetch
      Cleanup duplicate initialization code in transport_get
      Add transport.h to LIB_H as transport.o is in LIB_OBJS
      Remove unnecessary 'fetch' argument from transport_get API
      Allow builtin-fetch to work on a detached HEAD
      Don't configure remote "." to fetch everything to itself
      Remove more debugging from builtin-fetch
      builtin-fetch: Don't segfault on "fetch +foo"
      Don't attempt to merge non-existant remotes in t5515
      Correct handling of branch.$name.merge in builtin-fetch
      Avoid printing unnecessary warnings during fetch and push
      Use 'unsigned:1' when we mean boolean options
      Rename remote.uri to remote.url within remote handling internals
      Refactor struct transport_ops inlined into struct transport
      Always obtain fetch-pack arguments from struct fetch_pack_args
      Ensure builtin-fetch honors {fetch,transfer}.unpackLimit
      Fix memory leaks when disconnecting transport instances
      git-gui: Fix missing i18n markup in push/fetch windows
      git-gui: Support native Win32 Tcl/Tk under Cygwin
      git-gui: Refactor some UI init to occur earlier
      git-gui: Allow users to choose/create/clone a repository
      git-gui: Avoid console scrollbars unless they are necessary
      git-gui: Don't bother showing OS error message about hardlinks
      git-gui: Keep the UI responsive while counting objects in clone
      git-gui: Copy objects/info/alternates during standard clone
      Cleanup style nit of 'x == NULL' in remote.c
      Cleanup unnecessary break in remote.c
      Prevent send-pack from segfaulting when a branch doesn't match
      git-gui: Don't delete console window namespaces too early
      git-gui: Don't delete scrollbars in console windows
      git-gui: Switch the git-gui logo to Henrik Nyh's logo
      git-gui: Make the status bar easier to read in the setup wizard
      git-gui: Use Henrik Nyh's git logo icon on Windows systems
      git-gui: Support a native Mac OS X application bundle
      git-gui: Refer to ourselves as "Git Gui" and not "git-gui"
      git-gui: Allow forced push into remote repository
      git-gui: Refactor Henrik Nyh's logo into its own procedure
      git-gui: Refactor about dialog code into its own module
      git-gui: Include our Git logo in the about dialog
      git-gui: Use progress meter in the status bar during index updates
      git-gui: Consolidate the Fetch and Push menus into a Remote menu
      git-gui: Bind Cmd-, to Preferences on Mac OS X
      git-gui: Shorten the staged/unstaged changes title bar text
      git-gui: Updated po strings based on current sources
      git-gui: Move load_config procedure below git-version selection
      git-gui: Refactor git-config --list parsing
      git-gui: Support LFs embedded in config file values
      git-gui: Change repository browser radio buttons to hyperlinks
      git-gui: Offer repository management features in menu bar
      git-gui: Fix bind errors when switching repository chooser panels
      git-gui: Disable the text widget in the repository chooser
      git-gui: Bind n/c/o accelerators in repository chooser
      git-gui: Ensure copyright message is correctly read as UTF-8
      git-gui: Use proper Windows shortcuts instead of bat files
      git-gui: Support cloning Cygwin based work-dirs
      git-gui: Collapse $env(HOME) to ~/ in recent repositories on Windows
      git-gui: Honor a config.mak in git-gui's top level
      Fix 'push --all branch...' error handling
      Support 'push --dry-run' for rsync transport
      Support 'push --dry-run' for http transport
      git-gui: Paper bag fix the global config parsing
      Change 'Deltifying objects' to 'Compressing objects'
      Teach prune-packed to use the standard progress meter
      Stop displaying "Pack pack-$ID created." during git-gc
      Avoid scary errors about tagged trees/blobs during git-fetch
      Define compat version of mkdtemp for systems lacking it
      Improved const correctness for strings
      Use PRIuMAX instead of 'unsigned long long' in show-index
      git-gui: Make sure we get errors from git-update-index
      git-gui: Protect against bad translation strings
      git-gui: Allow users to set font weights to bold
      Reteach builtin-ls-remote to understand remotes
      git-gui: Bind Meta-T for "Stage To Commit" menu action
      git-fetch: Always fetch tags if the object they reference exists
      run-command: Support sending stderr to /dev/null
      rev-list: Introduce --quiet to avoid /dev/null redirects
      git-fetch: avoid local fetching from alternate (again)
      Handle broken vsnprintf implementations in strbuf
      Fix warning about bitfield in struct ref
      git-gui 0.9.0
      Remove git-status from list of scripts as it is builtin

Simon Hausmann (10):
      git-p4: Always call 'p4 sync ...' before submitting to Perforce.
      git-p4: After submission to p4 always synchronize from p4 again (into refs/remotes). Whether to rebase HEAD or not is still left as question to the end-user.
      git-p4: Cleanup; moved the code for getting a sorted list of p4 changes for a list of given depot paths into a standalone method.
      git-p4: Cleanup; moved the code to import a list of p4 changes using fast-import into a separate member function of P4Sync.
      git-p4: Cleanup; Turn self.revision into a function local variable (it's not used anywhere outside the function).
      git-p4: Cleanup; moved the code for the initial #head or revision import into a separate function, out of P4Sync.run.
      git-p4: Cleanup; moved the (duplicated) code for turning a branch into a git ref (for example foo -> refs/remotes/p4/<project>/foo) into a separate method.
      git-p4: Added support for automatically importing newly appearing perforce branches.
      git-p4: When skipping a patch as part of "git-p4 submit" make sure we correctly revert to the previous state of the files using "p4 revert".
      git-p4: Fix direct import from perforce after fetching changes through git from origin

Simon Sasburg (1):
      Make mailsplit and mailinfo strip whitespace from the start of the input

Stefan Sperling (1):
      Fix pool handling in git-svnimport to avoid memory leaks.

Steffen Prohaska (16):
      git-gui: add directory git-gui is located in to PATH (on Windows)
      git-gui: set NO_MSGFMT to force using pure tcl replacement in msysgit
      git-gui: add mingw specific startup wrapper
      git-gui: offer a list of recent repositories on startup
      mergetool: use path to mergetool in config var mergetool.<tool>.path
      mergetool: add support for ECMerge
      mergetool: avoid misleading message "Resetting to default..."
      Fix comment in strbuf.h to use correct name strbuf_avail()
      push: mention --verbose option in documentation
      push: teach push to pass --verbose option to transport layer
      push: support pushing HEAD to real branch name
      add refname_match()
      push: use same rules as git-rev-parse to resolve refspecs
      refactor fetch's ref matching to use refname_match()
      Use is_absolute_path() in diff-lib.c, lockfile.c, setup.c, trace.c
      sha1_file.c: Fix size_t related printf format warnings

Steven Grimm (3):
      Add a message explaining that automatic GC is about to start
      builtin-fetch: Add "-q" as a synonym for "--quiet"
      git-svn: Don't create a "master" branch every time rebase is run

Steven Walter (1):
      Don't checkout the full tree if avoidable

Theodore Ts'o (2):
      Make the list of common commands more exclusive
      Remove hint to use "git help -a"

Thomas Harning (1):
      git-merge-ours: make it a builtin.

Uwe Kleine-König (1):
      send-email: apply --suppress-from to S-o-b and cc-cmd

Vineet Kumar (1):
      git-svn: add a show-externals command.

Väinö Järvelä (1):
      Added a test for fetching remote tags when there is not tags.

Wincent Colaiuta (21):
      Further clarify clean.requireForce changes
      Authenticate only once in git-send-email
      Refactor patch_update_cmd
      Teach builtin-add to pass multiple paths to git-add--interactive
      Add path-limiting to git-add--interactive
      Add "--patch" option to git-add--interactive
      Fix typo in draft 1.5.4 release notes
      Highlight keyboard shortcuts in git-add--interactive
      revert/cherry-pick: Allow overriding the help text by the calling Porcelain
      add -i: allow prefix highlighting for "Add untracked" as well.
      git-add -i: add help text for list-and-choose UI
      Silence iconv warnings on Leopard
      Teach "git add -i" to colorize whitespace errors
      Allow --no-verify to bypass commit-msg hook
      Documentation: fix --no-verify documentation for "git commit"
      Add tests for pre-commit and commit-msg hooks
      Interactive editor tests for commit-msg hook
      Style fixes for pre-commit hook tests
      Use "whitespace" consistently
      Documentation: minor grammar fix for "git apply"
      Fix "diff --check" whitespace detection

Xudong Guan (2):
      Initial Chinese translation for git-gui
      git-gui: Added initial version of po/glossary/zh_cn.po

brian m. carlson (1):
      git-gui: Reorder msgfmt command-line arguments

İsmail Dönmez (1):
      gitweb: use Perl built-in utf8 function for UTF-8 decoding.


Version v1.5.3.8; changes since v1.5.3.7:
-----------------------------------------

David Symonds (1):
      Change from using email.com to example.com as example domain, as per RFC 2606.

Eric Wong (2):
      git-svn: support for funky branch and project names over HTTP(S)
      git-svn: clarify the "Ignoring error from SVN" piece

Jeff King (3):
      t9600: test cvsimport from CVS working tree
      clone: correctly report http_fetch errors
      git-send-email: avoid duplicate message-ids

Jim Meyering (1):
      config.c:store_write_pair(): don't read the byte before a malloc'd buffer.

Junio C Hamano (3):
      git grep shows the same hit repeatedly for unmerged paths
      git-am -i: report rewritten title
      GIT 1.5.3.8

Nguyễn Thái Ngọc Duy (3):
      Add missing inside_work_tree setting in setup_git_directory_gently
      Do check_repository_format() early
      Do check_repository_format() early (re-fix)


Version v1.5.3.7; changes since v1.5.3.6:
-----------------------------------------

Björn Steinbrink (3):
      git-commit.sh: Fix usage checks regarding paths given when they do not make sense
      t7005-editor.sh: Don't invoke real vi when it is in GIT_EXEC_PATH
      git-commit: Add tests for invalid usage of -a/--interactive with paths

Brian Downing (2):
      config: correct core.loosecompression documentation
      config: clarify compression defaults

J. Bruce Fields (7):
      git-remote.txt: fix example url
      user-manual: mention "..." in "Generating diffs", etc.
      Documentation: Fix references to deprecated commands
      user-manual: define "branch" and "working tree" at start
      user-manual: failed push to public repository
      user-manual: clarify language about "modifying" old commits
      user-manual: recovering from corruption

Jan Hudec (1):
      Improve description of git-branch -d and -D in man page.

Jeff King (5):
      send-email: add transfer encoding header with content-type
      Add basic cvsimport tests
      cvsimport: use rev-parse to support packed refs
      cvsimport: miscellaneous packed-ref fixes
      cvsimport: fix usage of cvsimport.module

Johannes Schindelin (2):
      bundle create: keep symbolic refs' names instead of resolving them
      Replace the word 'update-cache' by 'update-index' everywhere

Johannes Sixt (1):
      t7003-filter-branch: Fix test of a failing --msg-filter.

Junio C Hamano (11):
      format-patch -s: add MIME encoding header if signer's name requires so
      test format-patch -s: make sure MIME content type is shown as needed
      ce_match_stat, run_diff_files: use symbolic constants for readability
      git-add: make the entry stat-clean after re-adding the same contents
      t2200: test more cases of "add -u"
      Make test scripts executable.
      Fix sample pre-commit hook
      git-checkout: describe detached head correctly
      scripts: do not get confused with HEAD in work tree
      Fix typo in t4008 test title
      GIT 1.5.3.7

Linus Torvalds (1):
      Fix rev-list when showing objects involving submodules

Matthieu Moy (1):
      Doc fix for git-reflog: mention @{...} syntax, and <ref> in synopsys.

Rémi Vanicat (1):
      Make GIT_INDEX_FILE apply to git-commit

Steffen Prohaska (1):
      user-manual: Add section "Why bisecting merge commits can be harder ..."


Version v1.5.3.6; changes since v1.5.3.5:
-----------------------------------------

Alex Riesen (1):
      stop t1400 hiding errors in tests

Ask Bjørn Hansen (1):
      When exec() fails include the failing command in the error message

Benoit Sigoure (2):
      git-send-email: Change the prompt for the subject of the initial message.
      git-svn: prevent dcommitting if the index is dirty.

Brad King (1):
      cvsexportcommit: fix for commits that do not have parents

Christian Couder (1):
      for-each-ref: fix off by one read.

David D. Kilzer (2):
      RelNotes-1.5.3.5: fix typo
      RelNotes-1.5.3.5: fix another typo

David Symonds (1):
      Improve accuracy of check for presence of deflateBound.

Eric Wong (2):
      git-svn: fix dcommit clobbering when committing a series of diffs
      git-svn: t9114: verify merge commit message in test

Gerrit Pape (4):
      git-diff.txt: add section "output format" describing the diff formats
      git-cvsimport: really convert underscores in branch names to dots with -u
      git-daemon: fix remote port number in log entry
      git-mailsplit: with maildirs not only process cur/, but also new/

Jakub Narębski (1):
      gitweb: Update config file example for snapshot feature in gitweb/INSTALL

Jeff King (2):
      git-branch: remove mention of non-existent '-b' option
      git-send-email: add charset header if we add encoded 'From'

Jing Xue (1):
      replace reference to git-rm with git-reset in git-commit doc

Johannes Schindelin (1):
      Add Documentation/CodingGuidelines

Jonas Fonseca (3):
      Remove escaping of '|' in manpage option sections
      instaweb: Minor cleanups and fixes for potential problems
      Documentation: Fix man page breakage with DocBook XSL v1.72

Jonathan del Strother (1):
      Fixing path quoting in git-rebase

Junio C Hamano (12):
      grep with unmerged index
      refresh_index_quietly(): express "optional" nature of index writing better
      Makefile: add missing dependency on wt-status.h
      Start preparing for 1.5.3.6
      t/t3404: fix test for a bogus todo file.
      revert/cherry-pick: allow starting from dirty work tree.
      git-clean: honor core.excludesfile
      core.excludesfile clean-up
      Fix per-directory exclude handing for "git add"
      Update draft release notes for 1.5.3.6
      grep -An -Bm: fix invocation of external grep command
      GIT 1.5.3.6

Kristian Høgsberg (1):
      Remove unecessary hard-coding of EDITOR=':' VISUAL=':' in some test suites.

Marco Costalba (1):
      Remove a couple of duplicated include

Mike Hommey (1):
      Delay pager setup in git blame

Nicolas Pitre (3):
      print warning/error/fatal messages in one shot
      git-hash-object should honor config variables
      fix index-pack with packs >4GB containing deltas on 32-bit machines

Ralf Wildenhues (3):
      git-clone.txt: Improve --depth description.
      Avoid a few unportable, needlessly nested "...`...".
      Fix sed string regex escaping in module_name.

Sergei Organov (6):
      git-filter-branch.txt: fix a typo.
      git-format-patch.txt: fix explanation of an example.
      Documentation: quote commit messages consistently.
      SubmittingPatches: improve the 'Patch:' section of the checklist
      core-tutorial.txt: Fix argument mistake in an example.
      git-remote.txt: fix typo

Shawn O. Pearce (2):
      Fix memory leak in traverse_commit_list
      Don't allow fast-import tree delta chains to exceed maximum depth

Vincent Zanotti (1):
      gitweb: correct month in date display for atom feeds

Wincent Colaiuta (2):
      Grammar fixes for gitattributes documentation
      Fix t9101 test failure caused by Subversion "auto-props"


Version v1.5.3.5; changes since v1.5.3.4:
-----------------------------------------

Alex Bennée (1):
      Ensure we add directories in the correct order

Alex Riesen (1):
      Fix generation of perl/perl.mak

Andrew Clausen (1):
      helpful error message when send-pack finds no refs in common.

Aurelien Bompard (1):
      honor the http.sslVerify option in shell scripts

Benoit Sigoure (1):
      Fix a small memory leak in builtin-add

Björn Steinbrink (3):
      Fix --strategy parsing in git-rebase--interactive.sh
      git-rebase--interactive.sh: Don't pass a strategy to git-cherry-pick.
      git-rebase--interactive.sh: Make 3-way merge strategies work for -p.

Brian Gernhardt (1):
      cvsserver: Use exit 1 instead of die when req_Root fails.

Frank Lichtenheld (1):
      git-config: don't silently ignore options after --list

Gerrit Pape (2):
      git-config: handle --file option with relative pathname properly
      git-config: print error message if the config file cannot be read

Jean-Luc Herren (2):
      git add -i: Fix parsing of abbreviated hunk headers
      git add -i: Remove unused variables

Jeff King (1):
      send-pack: respect '+' on wildcard refspecs

Joakim Tjernlund (1):
      Improve receive-pack error message about funny ref creation

Johannes Schindelin (5):
      clear_commit_marks(): avoid deep recursion
      rebase -i: use diff plumbing instead of porcelain
      Fix setup_git_directory_gently() with relative GIT_DIR & GIT_WORK_TREE
      fix filter-branch documentation
      filter-branch: update current branch when rewritten

Julian Phillips (1):
      fast-import: Fix argument order to die in file_change_m

Junio C Hamano (8):
      git-remote: fix "Use of uninitialized value in string ne"
      sha1_file.c: avoid gcc signed overflow warnings
      merge-recursive.c: mrtree in merge() is not used before set
      RelNotes-1.5.3.5: describe recent fixes
      Prevent send-pack from segfaulting (backport from 'master')
      git-merge: document but discourage the historical syntax
      Update GIT 1.5.3.5 Release Notes
      GIT 1.5.3.5

Lars Hjemli (1):
      Make merge-recursive honor diff.renamelimit

Linus Torvalds (6):
      Fix embarrassing "git log --follow" bug
      Clean up "git log" format with DIFF_FORMAT_NO_OUTPUT
      git-blame shouldn't crash if run in an unmerged tree
      Avoid scary errors about tagged trees/blobs during git-fetch
      Fix directory scanner to correctly ignore files without d_type
      Fix diffcore-break total breakage

Mathias Megyei (1):
      Do not remove distributed configure script

Michael W. Olson (1):
      Documentation/git-cvsexportcommit.txt: s/mgs/msg/ in example

Michele Ballabio (2):
      git-reflog: document --verbose
      git-archive: document --exec

Nicolas Pitre (1):
      cherry-pick/revert: more compact user direction message

Patrick Welche (1):
      Define NI_MAXSERV if not defined by operating system

Ralf Wildenhues (1):
      gitk.txt: Fix markup.

Robert Schiele (1):
      fixing output of non-fast-forward output of post-receive-email

Sergei Organov (1):
      core-tutorial: Use new syntax for git-merge.

Shawn O. Pearce (17):
      git-gui: Display message box when we cannot find git in $PATH
      git-gui: Handle starting on mapped shares under Cygwin
      git-gui: Ensure .git/info/exclude is honored in Cygwin workdirs
      git-gui: Allow gitk to be started on Cygwin with native Tcl/Tk
      git-gui: Don't crash when starting gitk from a browser session
      Whip post 1.5.3.4 maintenance series into shape.
      Correct typos in release notes for 1.5.3.5
      Avoid 'expr index' on Mac OS X as it isn't supported
      Document additional 1.5.3.5 fixes in release notes
      Yet more 1.5.3.5 fixes mentioned in release notes
      Avoid invoking diff drivers during git-stash
      Further 1.5.3.5 fixes described in release notes
      Paper bag fix diff invocation in 'git stash show'
      git-gui: Correctly report failures from git-write-tree
      git-gui: Handle progress bars from newer gits
      git-gui: Don't display CR within console windows
      Describe more 1.5.3.5 fixes in release notes

Simon Sasburg (1):
      git-gui: Avoid using bold text in entire gui for some fonts

Steffen Prohaska (2):
      git-gui: accept versions containing text annotations, like 1.5.3.mingw.1
      attr: fix segfault in gitattributes parsing code


Version v1.5.3.4; changes since v1.5.3.3:
-----------------------------------------

Andy Parkins (1):
      post-receive-hook: Remove the From field from the generated email header so that the pusher's name is used

Carl Worth (1):
      Add test case for ls-files --with-tree

Federico Mena Quintero (4):
      Say when --track is useful in the git-checkout docs.
      Add documentation for --track and --no-track to the git-branch docs.
      Note that git-branch will not automatically checkout the new branch
      Make git-pull complain and give advice when there is nothing to merge with

Jari Aalto (1):
      git-remote: exit with non-zero status after detecting errors.

Jean-Luc Herren (2):
      git-add--interactive: Allow Ctrl-D to exit
      git-add--interactive: Improve behavior on bogus input

Jeff King (1):
      diffcore-rename: cache file deltas

Johan Herland (1):
      Mention 'cpio' dependency in INSTALL

Johannes Schindelin (2):
      rebase -i: squash should retain the authorship of the _first_ commit
      Fix typo in config.txt

Junio C Hamano (5):
      Whip post 1.5.3.3 maintenance series into shape.
      git-commit: initialize TMP_INDEX just to be sure.
      for-each-ref: fix %(numparent) and %(parent)
      rename diff_free_filespec_data_large() to diff_free_filespec_blob()
      GIT 1.5.3.4

Keith Packard (1):
      Must not modify the_index.cache as it may be passed to realloc at some point.

Miklos Vajna (1):
      git stash: document apply's --index switch

Robert Schiele (1):
      the ar tool is called gar on some systems

Steffen Prohaska (1):
      fixed link in documentation of diff-options


Version v1.5.3.3; changes since v1.5.3.2:
-----------------------------------------

Carlos Rica (1):
      Move make_cache_entry() from merge-recursive.c into read-cache.c

Dan Nicholson (1):
      quiltimport: Skip non-existent patches

David Brown (1):
      Detect exec bit in more cases.

David Kastrup (1):
      Supplant the "while case ... break ;; esac" idiom

Eric Wong (1):
      git-svn: don't attempt to spawn pager if we don't want one

Glenn Rempe (1):
      Fixed minor typo in t/t9001-send-email.sh test command line.

J. Bruce Fields (1):
      user-manual: don't assume refs are stored under .git/refs

Jakub Narębski (2):
      gitweb: Remove parse_from_to_diffinfo code from git_patchset_body
      gitweb: No difftree output for trivial merge

Jim Meyering (2):
      unexpected Make output (e.g. from --debug) causes build failure
      Do not over-quote the -f envelopesender value.

Johannes Schindelin (1):
      apply: get rid of --index-info in favor of --build-fake-ancestor

Johannes Sixt (2):
      gitattributes.txt: Remove a duplicated paragraph about 'ident' and 'crlf' interaction.
      gitattributes.txt: Be more to the point in the filter driver description.

Junio C Hamano (3):
      Documentation/git-lost-found.txt: drop unnecessarily duplicated name.
      Mergetool generating blank files (1.5.3)
      GIT 1.5.3.3

Linus Torvalds (1):
      Fix revision log diff setup, avoid unnecessary diff generation

Matt Kraai (2):
      Move the paragraph specifying where the .idx and .pack files should be
      Conjugate "search" correctly in the git-prune-packed man page.

Michael Smith (1):
      user-manual: Explain what submodules are good for.

Miklos Vajna (2):
      User Manual: add a chapter for submodules
      git-bundle: fix commandline examples in the manpage

Randy Dunlap (1):
      core-tutorial: correct URL

Shawn Bohrer (1):
      Fix spelling of overridden in documentation

Theodore Ts'o (2):
      mergetool: fix emerge when running in a subdirectory
      mergetool: Fix typo in options passed to kdiff3


Version v1.5.3.2; changes since v1.5.3.1:
-----------------------------------------

Alexandre Julliard (1):
      hooks--update: Explicitly check for all zeros for a deleted ref.

Benoit Sigoure (1):
      Add test to check recent fix to "git add -u"

Carlos Rica (1):
      git-tag -s must fail if gpg cannot sign the tag.

David Kastrup (1):
      git-send-email.perl: Add angle brackets to In-Reply-To if necessary

Dmitry V. Levin (2):
      Makefile: Add cache-tree.h to the headers list
      git-commit: Disallow amend if it is going to produce an empty non-merge commit

Eric Wong (3):
      git-svn: fix "Malformed network data" with svn:// servers
      git-svn: understand grafts when doing dcommit
      Documentation/git-svn: updated design philosophy notes

Gerrit Pape (2):
      git-gui: lib/index.tcl: handle files with % in the filename properly
      git-clone: improve error message if curl program is missing or not executable

J. Bruce Fields (13):
      user-manual: adjust section levels in "git internals"
      user-manual: move object format details to hacking-git chapter
      user-manual: rename "git internals" to "git concepts"
      user-manual: create new "low-level git operations" chapter
      user-manual: rewrite index discussion
      user-manual: reorder commit, blob, tree discussion
      user-manual: rewrite object database discussion
      user-manual: move packfile and dangling object discussion
      user-manual: fix introduction to packfiles
      user-manual: todo updates and cleanup
      documentation: replace Discussion section by link to user-manual chapter
      core-tutorial: minor cleanup
      git-apply: fix whitespace stripping

Jari Aalto (1):
      Documentation/git-archive.txt: a couple of clarifications.

Jean-Luc Herren (1):
      stash: end index commit log with a newline

Jeff King (1):
      git-push: documentation and tests for pushing only branches

Johannes Schindelin (2):
      revision walker: --cherry-pick is a limited operation
      apply --index-info: fall back to current index for mode changes

Junio C Hamano (13):
      git-apply: do not read past the end of buffer
      git-add -u: do not barf on type changes
      git-format-patch --in-reply-to: accept <message@id> with angle brackets
      diff --no-index: do not forget to run diff_setup_done()
      Documentation/git-config.txt: AsciiDoc tweak to avoid leading dot
      Split grep arguments in a way that does not requires to add /dev/null.
      git-sh-setup: typofix in comments
      send-email: make message-id generation a bit more robust
      git-commit: Allow partial commit of file removal.
      git-commit: partial commit of paths only removed from the index
      Document ls-files --with-tree=<tree-ish>
      t/t4014: test "am -3" with mode-only change.
      GIT 1.5.3.2

Linus Torvalds (1):
      Fix the rename detection limit checking

Matthias Urlichs (1):
      git-svnimport: Use separate arguments in the pipe for git-rev-parse

Michael Smith (1):
      (cvs|svn)import: Ask git-tag to overwrite old tags.

Michele Ballabio (2):
      git-gui: show unstaged symlinks in diff viewer
      git-gui: handle "deleted symlink" diff marker

Mike Ralphson (1):
      Documentation / grammer nit

Nicolas Pitre (1):
      fix doc for --compression argument to pack-objects

Pierre Habouzit (1):
      Fix lapsus in builtin-apply.c

Ramsay Jones (1):
      Fix a test failure (t9500-*.sh) on cygwin

Shawn O. Pearce (17):
      git-gui: Correct starting of git-remote to handle -w option
      git-gui: Fix detaching current branch during checkout
      git-gui: Properly set the state of "Stage/Unstage Hunk" action
      Don't allow contrib/workdir/git-new-workdir to trash existing dirs
      Cleanup unnecessary file modifications in t1400-update-ref
      Include a git-push example for creating a remote branch
      git-gui: Disable Tk send in all git-gui sessions
      git-gui: Avoid use of libdir in Makefile
      git-gui: Assume untracked directories are Git submodules
      git-gui: Trim trailing slashes from untracked submodule names
      Make --no-thin the default in git-push to save server resources
      git-gui: Don't delete send on Windows as it doesn't exist
      git-gui: Make backporting changes from i18n version easier
      git-gui: Font chooser to handle a large number of font families
      git-gui: Provide 'uninstall' Makefile target to undo an installation
      git-gui: Paper bag fix "Commit->Revert" format arguments
      git-gui: Disable native platform text selection in "lists"

Sven Verdoolaege (1):
      git-diff: don't squelch the new SHA1 in submodule diffs

Ulrik Sverdrup (1):
      Remove duplicate note about removing commits with git-filter-branch

Väinö Järvelä (1):
      Fixed update-hook example allow-users format.


Version v1.5.3.1; changes since v1.5.3:
---------------------------------------

Junio C Hamano (2):
      Typofix: 1.5.3 release notes
      GIT 1.5.3.1: obsolete git-p4 in RPM spec file.


Version v1.5.3; changes since v1.5.3-rc7:
-----------------------------------------

Alex Riesen (1):
      Temporary fix for stack smashing in mailinfo

Carlos Rica (1):
      git-tag: Fix -l option to use better shell style globs.

Eric Wong (1):
      git-svn: fix dcommit clobbering upstream when committing multiple changes

Giuseppe Bilotta (2):
      git-filter-branch: more detailed USAGE
      git-filter-branch: document --original option

Joe Perches (1):
      git-send-email --cc-cmd

Johannes Schindelin (5):
      completion: also complete git-log's --left-right and --cherry-pick option
      filter-branch: fix remnants of old syntax in documentation
      rebase -i: mention the option to split commits in the man page
      filter-branch: provide the convenience functions also for commit filters
      filter-branch: introduce convenience function "skip_commit"

Johannes Sixt (1):
      rebase -m: Fix incorrect short-logs of already applied commits.

Junio C Hamano (13):
      git-daemon(1): assorted improvements.
      ls-files --error-unmatch: do not barf if the same pattern is given twice.
      Makefile: do not allow gnu make to remove test-*.o files
      filter-branch: make sure orig_namespace ends with a single slash.
      git-init: autodetect core.symlinks
      Make "git-log --" without paths behave the same as "git-log" without --
      Hopefully the final update to draft release notes for 1.5.3.
      git-svn: Protect against "diff.color = true".
      git-diff: resurrect the traditional empty "diff --git" behaviour
      Avoid one-or-more (\+) non BRE in sed scripts.
      Documentation: minor AsciiDoc mark-up fixes.
      Update my contact address as the maintainer.
      GIT 1.5.3

Luben Tuikov (1):
      URL: allow port specification in ssh:// URLs

Miles Bader (1):
      Make git-archimport log entries more consistent

Nicolas Pitre (1):
      fix same sized delta logic

Paul Mackerras (1):
      gitk: Fix bug causing undefined variable error when cherry-picking

Robin Rosenberg (1):
      Mention -m as an abbreviation for --merge

Shawn O. Pearce (1):
      Teach bash about completing arguments for git-tag

Tom Clarke (1):
      Fixing comment in merge strategies


Version v1.5.3-rc7; changes since v1.5.3-rc6:
---------------------------------------------

Alex Riesen (1):
      Fix git-remote for ActiveState Perl

Alexandre Julliard (1):
      git.el: Avoid a lisp error when there's no current branch (detached HEAD).

Brian Hetro (5):
      Documentation: For consistency, use CVS instead of cvs.
      Documentation: Correct various misspellings and typos.
      Make usage documentation for git-am consistent.
      Make usage documentation for git-add consistent.
      When nothing to git-commit, honor the git-status color setting.

David Kastrup (4):
      diff-delta.c: Fix broken skip calculation.
      Documentation/user-manual.txt: fix a few omissions of gitlink commands.
      Documentation/user-manual.txt: fix a few omissions of gitlink commands.
      git-svn.txt: fix an obvious misspelling.

David Kågedal (1):
      git.el: Added colors for dark background

Eric Wong (2):
      git-svn: update documentation with CAVEATS section
      git-svn: dcommit prints out the URL to be committed to

J. Bruce Fields (5):
      user-manual: edit "ignoring files" for conciseness
      user-manual: minor editing for conciseness
      user-manual: introduce the word "commit" earlier
      user-manual: use pithier example commit
      user-manual: fix incorrect header level

Jakub Narębski (1):
      gitweb: Fix escaping HTML of project owner in 'projects_list' and 'summary' views

Jari Aalto (1):
      git-tag(1): Remove duplicate text

Johannes Schindelin (2):
      rebase -i: fix squashing corner case
      name-rev: Fix non-shortest description

Junio C Hamano (11):
      blame: check return value from read_sha1_file()
      pack-objects: check return value from read_sha1_file()
      RelNotes draft for 1.5.3 update.
      Fix initialization of a bare repository
      git --bare cmd: do not unconditionally nuke GIT_DIR
      git-merge: do up-to-date check also for all strategies
      Porcelain level "log" family should recurse when diffing.
      "format-patch --root rev" is the way to show everything.
      Documentation/git-diff: A..B and A...B cannot take tree-ishes
      format-patch documentation: reword to hint "--root <one-commit>" more clearly
      GIT 1.5.3-rc7

Linus Torvalds (1):
      Fix racy-git handling in git-write-tree.

Mike Hommey (1):
      Describe two-dot and three-dot notation for diff endpoints.

Petr Baudis (4):
      gitweb: Fix searchbox positioning
      gitweb: Lift any characters restriction on searched strings
      git-add: Make the "tried to add ignored file" error message less confusing
      git-add: Make the filename globbing note a bit clearer

Quy Tonthat (1):
      Fix breakage in git-rev-list.txt

René Scharfe (1):
      Documentation: update tar.umask default

Sean Estabrooks (1):
      Reset terminal attributes when terminating git send-email

Shawn O. Pearce (13):
      git-gui: Fix window manager problems on ion3
      git-gui: Allow git-merge to use branch names in conflict markers
      git-gui: Paper bag fix "Stage Hunk For Commit" in diff context menu
      git-gui: Fix "unoptimized loading" to not cause git-gui to crash
      Fix new-workdir (again) to work on bare repositories
      Suggest unsetting core.bare when using new-workdir on a bare repository
      Update bash completion with new 1.5.3 command line options
      Teach bash to complete ref arguments to git-describe
      Teach bash about git-submodule and its subcommands
      git-gui: Refactor diff pane popup support for future improvements
      git-gui: Do not offer to stage three-way diff hunks into the index
      git-gui: Correct 'git gui blame' in a subdirectory
      Don't segfault if we failed to inflate a packed delta

Simon Hausmann (2):
      git-p4: Make 'git-p4 branches' work after an initial clone with git clone from an origin-updated repository.
      git-p4: Fix warnings about non-existant refs/remotes/p4/HEAD ref when running git-p4 sync the first time after a git clone.

Stefan Sperling (1):
      Document -u option in git-svnimport man page

martin f. krafft (2):
      git-svn init/clone --stdlayout option to default-init trunk/tags/branches
      Install man3 manpages to $PREFIX/share/man/man3 even for site installs


Version v1.5.3-rc6; changes since v1.5.3-rc5:
---------------------------------------------

Alex Riesen (2):
      Fix whitespace in "Format of STDIN stream" of fast-import
      Avoid using va_copy in fast-import: it seems to be unportable.

Arjen Laarhoven (2):
      gitk: Make the date/time display configurable
      t1301-shared-repo.sh: fix 'stat' portability issue

Brian Downing (1):
      Clarify actual behavior of 'git add' and ignored files

Brian Gernhardt (1):
      Minor clarifications to git-filter-branch usage and doc

Dave Watson (1):
      Fix misspelling of 'suppress' in docs

Eric Wong (1):
      git-svn: fix log with single revision against a non-HEAD branch

Johannes Sixt (1):
      gitk: Handle 'copy from' and 'copy to' in diff headers.

Junio C Hamano (10):
      Fix "git add -u" data corruption.
      GIT 1.5.2.5
      Fix read-tree merging more than 3 trees using 3-way merge
      Update documentation links for older releases.
      git-clone: allow --bare clone
      Documentation/git-rebase: fix an example
      Clean-up read-tree error condition.
      fast-import pull request
      git clone: do not issue warning while cloning locally across filesystems
      GIT 1.5.3-rc6

Lars Hjemli (1):
      git-submodule: re-enable 'status' as the default subcommand

Linus Torvalds (2):
      Make thin-pack generation subproject aware.
      Take binary diffs into account for "git rebase"

Lukas Sandström (1):
      Add the word reflog to Documentation/config.txt:core.logAllRefUpdates

Mark Levedahl (1):
      git-completion.bash - add support for git-bundle

Matthieu Moy (1):
      Add and document a global --no-pager option for git.

Mike Hommey (1):
      Clarify commit-tree documentation

Nicolas Pitre (1):
      pack-objects: remove bogus arguments to delta_cacheable()

Paul Mackerras (3):
      gitk: Fix warning when removing a branch
      gitk: Fix bug in fix for warning when removing a branch
      gitk: Add a window to list branches, tags and other references

René Scharfe (1):
      path-list.c: always free strdup'ed paths

Salikh Zakirov (1):
      git-add -u paths... now works from subdirectory

Sean Estabrooks (1):
      Fix small typo in git send-email man page.

Shawn O. Pearce (11):
      git-gui: Avoid Tcl error in popup menu on diff viewer
      Actually allow TAG_FIXUP branches in fast-import
      Use handy ALLOC_GROW macro in fast-import when possible
      Teach fast-import to ignore lines starting with '#'
      Make trailing LF following fast-import `data` commands optional
      Make trailing LF optional for all fast-import commands
      Allow frontends to bidirectionally communicate with fast-import
      Generate crash reports on die in fast-import
      Include recent command history in fast-import crash reports
      Correct documentation of 'reflog show' to explain it shows HEAD
      Don't allow combination of -g and --reverse as it doesn't work

Steffen Prohaska (1):
      gitk: Let user easily specify lines of context in diff view

Steven Grimm (1):
      Document what the stage numbers in the :$n:path syntax mean.

Sven Verdoolaege (1):
      git-apply: apply submodule changes

Väinö Järvelä (1):
      git-gui: Added support for OS X right click


Version v1.5.3-rc5; changes since v1.5.3-rc4:
---------------------------------------------

Adam Roben (1):
      Documentation/git-svn: how to clone a git-svn-created repository

Alberto Bertogli (1):
      Allow git-svnimport to take "" as the trunk directory.

Alex Riesen (3):
      Fix filehandle leak in "git branch -D"
      gitk: Continue and show error message in new repos
      gitk: Show an error and exit if no .git could be found

Alexandre Julliard (3):
      git.el: Add support for interactive diffs.
      git.el: Always set the current directory in the git-diff buffer.
      git-add: Add support for --refresh option.

Brian Downing (2):
      cvsserver: Fix for work trees
      Add read_cache to builtin-check-attr

Brian Gernhardt (1):
      Fix t5701-clone-local for white space from wc

Carlos Rica (3):
      Make git tag a builtin.
      builtin-tag.c: Fix two memory leaks and minor notation changes.
      Make verify-tag a builtin.

David Kastrup (6):
      Documentation/git-commit.txt: correct bad list formatting.
      Add support for an info version of the user manual
      INSTALL: explain info installation and dependencies.
      Documentation/Makefile: remove cmd-list.made before redirecting to it.
      git-sh-setup.sh: make GIT_DIR absolute
      Add a test for git-commit being confused by relative GIT_DIR

Gerrit Pape (1):
      git-am: initialize variable $resume on startup

J. Bruce Fields (4):
      user-manual: update for new default --track behavior
      user-manual: mention git-gui
      documentation: use the word "index" in the git-add manual page
      documentation: use the word "index" in the git-commit man page

Jakub Narębski (1):
      gitweb: Fix handling of $file_name in feed generation

Johannes Schindelin (4):
      launch_editor(): Heed GIT_EDITOR and core.editor settings
      Teach "git stripspace" the --strip-comments option
      checkout-index needs a working tree
      Reinstate the old behaviour when GIT_DIR is set and GIT_WORK_TREE is unset

Junio C Hamano (24):
      git-clone: aggressively optimize local clone behaviour.
      git-completion: add "git stash"
      INSTALL: add warning on docbook-xsl 1.72 and 1.73
      unpack-trees.c: assume submodules are clean during check-out
      Fix install-doc-quick target
      user-manual: mention git stash
      setup.c:verify_non_filename(): don't die unnecessarily while disambiguating
      pager: find out pager setting from configuration
      Fix "make GZ=1 quick-install-doc"
      Reorder the list of commands in the manual.
      Fix formatting of git-blame documentation.
      Fix an illustration in git-rev-parse.txt
      tweak manpage formatting
      Revert "tweak manpage formatting"
      Optimize "diff --cached" performance.
      allow git-bundle to create bottomless bundle
      allow git-bundle to create bottomless bundle
      t3404: fix "fake-editor"
      builtin-bundle create - use lock_file
      git-diff: squelch "empty" diffs
      merge-recursive: do not rudely die on binary merge
      attr.c: refactoring
      attr.c: read .gitattributes from index as well.
      GIT 1.5.3-rc5

Jyotirmoy Bhattacharya (1):
      Fixed git-push manpage

Linus Torvalds (8):
      connect: accept file:// URL scheme
      apply: remove directory that becomes empty by renaming the last file away
      Start moving unpack-trees to "struct tree_desc"
      Fix "git commit directory/" performance anomaly
      Move old index entry removal from "unpack_trees()" into the individual functions
      Optimize the common cases of git-read-tree
      Optimize the two-way merge of git-read-tree too
      Optimize the three-way merge of git-read-tree

Luiz Fernando N. Capitulino (3):
      Avoid ambiguous error message if pack.idx header is wrong
      Introduces xmkstemp()
      Use xmkstemp() instead of mkstemp()

Marco Costalba (1):
      Add --log-size to git log to print message size

Mark Levedahl (5):
      builtin-bundle.c - use stream buffered input for rev-list
      builtin-bundle - use buffered reads for bundle header
      gitk: Enable selected patch text on Windows
      gitk: Handle MouseWheel events on Windows
      t3902 - skip test if file system doesn't support HT in names

Paul Mackerras (4):
      gitk: Add a context menu for file list entries
      gitk: Fix bug causing the "can't unset idinlist(...)" error
      gitk: Fix bug introduced in commit 67a4f1a7
      gitk: Fix bug causing Tcl error when updating graph

Randal L. Schwartz (1):
      add "test-absolute-path" to .gitignore

Reece H. Dunn (1):
      git-p4: Fix the sorting of changelists when cloning a Perforce repository.

René Scharfe (2):
      diff: don't run pager if user asked for a diff style exit code
      diff: squelch empty diffs even more

Shawn O. Pearce (4):
      Document GIT_SSH environment variable alongside other variables
      Teach update-paranoid how to store ACLs organized by groups
      Teach the update-paranoid to look at file differences
      Use the empty tree for base diff in paranoid-update on new branches

Simon Hausmann (2):
      git-p4: Fix support for symlinks.
      git-p4: Fix git-p4 submit to include only changed files in the perforce submit template.

Steffen Prohaska (1):
      Improved hint on how to set identity

Steve Hoelzer (2):
      git-stash documentation: stash numbering starts at zero, not one
      git-stash documentation: add missing backtick

Steven Grimm (1):
      Add a note about the index being updated by git-status in some cases

Uwe Kleine-König (3):
      send-email: teach sanitize_address to do rfc2047 quoting
      send-email: rfc822 forbids using <address@domain> without a non-empty "phrase"
      send-email: get all the quoting of realnames right


Version v1.5.3-rc4; changes since v1.5.3-rc3:
---------------------------------------------

Alex Riesen (4):
      Add an option to specify a file to config builtin
      Add a test for git-config --file
      Make verse of git-config manpage more readable
      Hack git-add--interactive to make it work with ActiveState Perl

Alexandre Julliard (2):
      git.el: Avoid using ewoc-set-data for compatibility with Emacs 21.
      git.el: Take into account the core.excludesfile config option.

Bradford C. Smith (2):
      fully resolve symlinks when creating lockfiles
      use lockfile.c routines in git_commit_set_multivar()

Brian Gernhardt (1):
      Document commit.template configuration variable.

Christian Couder (1):
      rev-list --bisect: fix allocation of "int*" instead of "int".

Christian Stimming (1):
      git-gui: Unify wording to say "to stage" instead of "to add"

David Kastrup (3):
      Makefile: use $(FIND) instead of find
      git-sh-setup.sh: make GIT_EDITOR/core.editor/VISUAL/EDITOR accept commands
      When generating manpages, delete outdated targets first.

David Soria Parra (1):
      Documentation/gitattributes.txt: typofix

David Symonds (1):
      Fix documentation for core.gitproxy to reflect code

Han-Wen Nienhuys (2):
      Sort output of "p4 change" in incremental import before further
      Fix style nit in Python slicing.

Jakub Narębski (3):
      gitweb: Show submodule entries in the 'tree' view
      gitweb: Simplify 'opt' parameter validation, add "no merges" feeds
      gitweb: Allow for multivalued parameters passed to href subroutine

Jeff King (2):
      Documentation/git-diff: remove -r from --name-status example
      git-diff: turn on recursion by default

Jens Axboe (1):
      --base-path-relaxed option

Johannes Schindelin (11):
      rebase -i: fix overzealous output redirection
      rebase -i: fix interrupted squashing
      white space fixes in setup.c
      Add is_absolute_path() and make_absolute_path()
      Add functions get_relative_cwd() and is_inside_dir()
      Add set_git_dir() function
      Clean up work-tree handling
      get_relative_cwd(): clarify why it handles dir == NULL
      rebase -i: ignore patches that are already in the upstream
      rebase -i: fix for optional [branch] parameter
      read-tree: remove unnecessary call to setup_git_directory()

Julian Phillips (1):
      git-gui: Handle git versions of the form n.n.n.GIT

Junio C Hamano (23):
      Make sure git-stash works from subdirectory.
      gitweb: fix broken snapshot
      git-submodule module_name: avoid using unwieldy "value_regexp" feature.
      git-submodule: remove redundant call to git-describe
      When locking in a symlinked repository, try to lock the original.
      git_mkstemp(): be careful not to overflow the path buffer.
      Update description of -z option.
      git-stash: do not remove a ref by hand.
      Add test for symlinked configuration file updates.
      Fix git-stash apply --index
      git-stash apply --index: optimize postprocessing
      log_ref_write() -- do not chomp reflog message at the first LF
      symbolic-ref, update-ref: do not refuse reflog message with LF
      rebase: try not to munge commit log message
      add_file_to_index: skip rehashing if the cached stat already matches
      Unset GIT_EDITOR while running tests.
      git.c: execution path
      git-commit.sh: Permit the --amend message to be given with -m/-c/-C/-F.
      RelNotes 1.5.3 updates before -rc4
      Fix work-tree related breakages
      gitweb: do not choke on recursive symlink
      Fix bogus use of printf in t3700 test
      GIT 1.5.3-rc4

Kristian Høgsberg (1):
      Add test case for basic commit functionality.

Mark Levedahl (1):
      gitk: Ignore ctrl-z as EOF on windows

Nanako Shiraishi (1):
      git-stash: Make sure reflog is created for refs/stash

Nguyễn Thái Ngọc Duy (1):
      git-write-tree should not crash if prefix does not exist

Paul Mackerras (4):
      gitk: Show changes in index and changes in working directory separately
      gitk: Make the fake commit for the index changes green rather than magenta
      gitk: Wait for the window to become visible after creating it
      gitk: Fix bugs in the Find function

Robert Ewald (1):
      git-svn: Translate invalid characters in refname

Robert Schiele (2):
      add option to find zlib in custom path
      make the name of the library directory a config option

Robin Rosenberg (1):
      Document --unified/-U option

Seth Falcon (1):
      Rename git-rebase interactive buffer: todo => git-rebase-todo

Shawn O. Pearce (49):
      git-gui: Skip -dirty suffix on core git versions
      git-gui: Brown paper bag "dirty git version fix"
      git-gui: Always disable the Tcl EOF character when reading
      git-gui: Delay searching for 'nice' until its really asked for
      git-gui: Don't crash in ask_popup if we haven't mapped main window yet
      git-gui: Change our initial GC hint to be an estimate
      git-gui: Let the user continue even if we cannot understand git version
      git-gui: Delay the GC hint until after we are running
      git-gui: Move feature option selection before GIT_DIR init
      git-gui: Allow blame/browser subcommands on bare repositories
      git-gui: Allow browser subcommand to start in subdirectory
      git-gui: Allow users to browse any branch, not just the current one
      git-gui: Clarify the visualize history menu options
      git-gui: Increase the default height of the revision picker
      git-gui: Convert merge dialog to use class system
      Don't offer my special Tools/Migrate hack unless in multicommit
      git-gui: Bind Ctrl/Cmd-M to merge action
      git-gui: Avoid unnecessary global statements when possible
      git-gui: Translate standard encoding names to Tcl ones
      git-gui: Don't show blame tooltips that we have no data for
      git-gui: Completely remove support for creating octopus merges
      git-gui: Automatically backup the user's commit buffer
      git-gui: Save the merge base during checkout_op processing
      git-gui: Factor out common fast-forward merge case
      git-gui: Simplify error case for unsupported merge types
      git-gui: Skip unnecessary read-tree work during checkout
      git-gui: Internally allow fetch without storing for future pull support
      git-gui: Completely remove my Tools/Migrate hack
      git-gui: Fix unnecessary fast-forward during checkout
      gitk: Bind keyboard actions to the command key on Mac OS
      git-gui: Clarify meaning of add tracked menu option
      git-gui: Paper bag fix quitting crash after commit
      git-gui: Refactor diff popup into a procedure to ease i18n work
      git-gui: Refactor current branch menu items to make i18n easier
      git-gui: Avoid unnecessary symbolic-ref call during checkout
      git-gui: Save remote urls obtained from config/remotes setup
      git-gui: Display commit/tag/remote info in tooltip of revision picker
      git-gui: Show ref last update times in revision chooser tooltips
      git-gui: Replace merge dialog with our revision picker widget
      git-gui: Cleanup bindings within merge dialog
      git-gui: Format tracking branch merges as though they were pulls
      git-gui: Remove usernames from absolute SSH urls during merging
      git-gui: Don't kill modified commit message buffer with merge templates
      git-gui: Honor core.excludesfile when listing extra files
      git-gui: Use progress bar while resetting/aborting files
      git-gui: Make sure remotes are loaded when picking revisions
      git-gui: Don't offer to stage hunks from untracked files
      git-gui: Use more modern looking icons in the tree browser
      git-gui: Minor refactoring of merge command line in merge support

Simon Hausmann (1):
      git-p4: Fix p4 user cache population on Windows.

Steve Hoelzer (1):
      Try to be consistent with capitalization in the documentation

Thomas Schwinge (2):
      Don't rely on unspecified behavior
      Support building on GNU/Hurd


Version v1.5.3-rc3; changes since v1.5.3-rc2:
---------------------------------------------

Adam Roben (1):
      Add GIT_EDITOR environment and core.editor configuration variables

Alexandre Julliard (2):
      git.el: Support for incremental status updates.
      git.el: Pass an explicit argument to enable smerge-mode.

Carlos Rica (1):
      Rename read_pipe() with read_fd() and make its buffer nul-terminated.

David Kastrup (2):
      contrib/emacs/Makefile: Also install .el files.
      Documentation/gitignore.txt: Fix the seriously misleading priority explanation

Eric Wong (1):
      git-svn: fix commiting renames over DAV with funky file names

Francis Moreau (1):
      Fix git-branch documentation when using remote refs

Jakub Narębski (3):
      gitweb cleanup: Move @diff_opts declaration earlier
      gitweb: Fix support for legacy gitweb config for snapshots
      gitweb: More detailed error messages for snapshot format

Jim Meyering (1):
      pretty-options.txt: tiny doc fix

Johannes Schindelin (11):
      filter-branch: get rid of "set -e"
      rebase -i: call editor just once for a multi-squash
      fsck --lost-found: write blob's contents, not their SHA-1
      mailinfo: fix 'fatal: cannot convert from utf-8 to utf-8'
      Shut "git rebase -i" up when no --verbose was given
      rebase -i: exchange all "if [ .. ]" by "if test .."
      filter-branch: Big syntax change; support rewriting multiple refs
      Teach revision machinery about --no-walk
      git log -g: Complain, but do not fail, when no reflogs are there
      Teach approxidate() to understand "never"
      git am: skip pine's internal folder data

Julian Phillips (1):
      Force listingblocks to be monospaced in manpages

Junio C Hamano (8):
      Update INSTALL
      Do not expect unlink(2) to fail on a directory.
      Fix VISUAL/EDITOR preference order in Documentation/config.txt.
      Synonyms: -i == --regexp-ignore-case, -E == --extended-regexp
      Mark user-manual as UTF-8
      user-manual: fix typolets.
      t9200: Be careful when checking CVS/Entries
      GIT 1.5.3-rc3

Kumar Gala (1):
      send-email: Update regex parsing for pine aliases

Linus Torvalds (2):
      Do a better job at guessing unknown character sets
      Fix up duplicate parents removal

Marco Costalba (1):
      Avoid to duplicate commit message when is not encoded

Matt McCutchen (1):
      gitweb: snapshot cleanups & support for offering multiple formats

Nanako Shiraishi (1):
      Document "git stash message..."

René Scharfe (2):
      filter-branch: fix dash complaining about "Missing '))'"
      cleanup unpack-trees.c: shrink struct tree_entry_list

Richard MUSIL (1):
      git-svn: Minimalistic patch which allows svn usernames with space(s).

Robin Rosenberg (1):
      cvsexportcommit: avoid racy CVS problem.

Scott Lamb (2):
      git-p4: use subprocess in p4CmdList
      git-p4: input to "p4 files" by stdin instead of arguments

Simon Hausmann (3):
      git-p4: Cleanup, make listExistingP4Branches a global function for later use.
      git-p4: Fix upstream branch detection for submit/rebase with multiple branches.
      git-p4: Cleanup, used common function for listing imported p4 branches

Steven Grimm (2):
      Document how to tell git to not launch a pager
      Teach git-commit about commit message templates.

Sven Verdoolaege (1):
      unpack-trees.c: assume submodules are clean during check-out


Version v1.5.3-rc2; changes since v1.5.3-rc1:
---------------------------------------------

Alex Riesen (1):
      Fix git-rebase -i to allow squashing of fast-forwardable commits

Emil Medve (1):
      Use $(RM) in Makefiles instead of 'rm -f'

Eric Wong (1):
      git-svn: remove leading slashes from fetch lines in the generate config

Greg KH (1):
      make git-send-email.perl handle email addresses with no names when Email::Valid is present

Jakub Narębski (3):
      Update git-merge documentation.
      Document long options '--message=<msg>' and '--no-commit'
      Document git commit --untracked-files and --verbose

Jim Meyering (1):
      git-cvsserver: detect/diagnose write failure, etc.

Josh Triplett (1):
      Remove useless uses of cat, and replace with filename arguments

Junio C Hamano (7):
      Make show_rfc2822_date() just another date output format.
      Wire new date formats to --date=<format> parser.
      Document new --date=<format>
      Add contrib/stats/mailmap.pl script
      Update .mailmap
      Documentation/git-commit-tree: remove description of a nonexistent limitation
      GIT v1.5.3-rc2

Marius Storm-Olsen (1):
      Fix git-p4 on Windows to not use the Posix sysconf function.

Matthieu Moy (1):
      More permissive "git-rm --cached" behavior without -f.

Nicolas Pitre (1):
      Pack-objects: properly initialize the depth value

Paul Mackerras (1):
      gitk: Fix bug introduced by previous commit

Peter Hagervall (1):
      Make every builtin-*.c file #include "builtin.h"

Robin Rosenberg (1):
      Support output ISO 8601 format dates

Sean Estabrooks (3):
      Remove "WITH_P4IMPORT" knob from the Makefile
      Remove p4 rpm from git.spec.in.
      Demote git-p4import to contrib status.

Shawn O. Pearce (2):
      Correct trivial typo in fast-import documentation
      Teach fast-import to recursively copy files/directories

Stephen Rothwell (1):
      send-email: discard blank around address in extract_valid_address as well.

Sven Verdoolaege (1):
      lockfile.c: schedule remove_lock_file only once.


Version v1.5.3-rc1; changes since v1.5.3-rc0:
---------------------------------------------

Alecs King (1):
      fix remote.origin.url in tutorial.txt

Alex Riesen (4):
      Handle missing prefix for "Subject:" as if no prefix given
      Handle format.subjectprefix for every command which accepts --pretty
      Fix t5516 to create test repo without hooks
      Add -v|--verbose to git remote to show remote url

Andrew Ruder (2):
      Remove USE_PAGER from git-pickaxe and git-annotate
      Add urls.txt to git-clone man page

Andy Parkins (1):
      user-manual: grammar and style fixes

Brian Downing (10):
      pack-objects: Prefer shallower deltas if the size is equal
      gitk: Fix for tree view ending in nested directories
      Pack information tool
      Correct shebang line for contrib/stats/packinfo.pl
      Don't try to delta if target is much smaller than source
      Support fetching the memory usage of a delta index
      Add functions for parsing integers with size suffixes
      Add pack-objects window memory usage limit
      Add --window-memory option to git-repack
      Add documentation for --window-memory, pack.windowMemory

Brian Gernhardt (1):
      Add core.pager config variable.

CJ van den Berg (1):
      git-submodule: Fix two instances of the same typo

Carlos Rica (5):
      t7004: Skip tests for signed tags in an old version of gpg.
      t0030: Remove repeated instructions and add missing &&
      t0030: Add tests with consecutive text lines and others with spaces added.
      t7004: Add tests for the git tag -n option.
      Function stripspace now gets a buffer instead file descriptors.

Daniel Barkalow (2):
      Add allocation and freeing functions for struct refs
      Some cosmetic changes to remote library

David Kastrup (1):
      Add missing functions to contrib/emacs/vc-git.el

Eric Wong (1):
      git-svn: fix blocking with svn:// servers after do_switch

Frank Lichtenheld (1):
      cvsserver: always initialize state in argsplit()

Gerrit Pape (2):
      git-gui: properly popup error if gitk should be started but is not installed
      git-commit: don't add multiple Signed-off-by: from the same identity

J. Bruce Fields (2):
      tutorial: Fix typo
      user-manual: more explanation of push and pull usage

James Bowes (1):
      stash: allow running from a subdirectory

Jim Meyering (1):
      Don't smash stack when $GIT_ALTERNATE_OBJECT_DIRECTORIES is too long

Johannes Schindelin (24):
      diff --no-index: fix --name-status with added files
      glossary: add 'reflog'
      Document git-filter-branch
      Add diff-option --ext-diff
      filter-branch: add a test for the commit removal example
      filter-branch: make output nicer
      filter-branch: a few more touch ups to the man page
      filter-branch documentation: clarify which filters are eval'ed
      filter-branch: fail gracefully when a filter fails
      Future-proof source for changes in xdemitconf_t
      Teach git-stash to "apply --index"
      Enable "git rerere" by the config variable rerere.enabled
      git-branch: default to --track
      Fix "apply --reverse" with regard to whitespace
      branch.autosetupmerge: allow boolean values, or "all"
      rebase -i: handle --continue more like non-interactive rebase
      rebase -i: actually show the diffstat when being verbose
      rebase -i: remember the settings of -v, -s and -p when interrupted
      rebase -i: put a nice warning into the todo list
      rerere: record resolution even if file is not in merge base
      Fix core.sharedRepository = 2
      Fix --cherry-pick with given paths
      Add for_each_remote() function, and extend remote_find_tracking()
      branch --track: code cleanup and saner handling of local branches

Johannes Sixt (3):
      filter-branch: Avoid an error message in the map function.
      filter-branch documentation: some more touch-ups.
      Allow rebase to run if upstream is completely merged

Jonas Fonseca (1):
      fsck --lost-found writes to subdirectories in .git/lost-found/

Junio C Hamano (22):
      Update draft Release Notes for 1.5.3
      Update reflog message created for stashes
      Do not check if getcwd() result begins with a slash.
      Fix git-stash(1) markup.
      git-stash: allow more descriptive reminder message when saving
      Introduce diff_filespec_is_binary()
      Per-path attribute based hunk header selection.
      Fix configuration syntax to specify customized hunk header patterns.
      diff: honor binariness specified in attributes
      gitweb: make repeated calls to git_get_project_owner() bearable
      diff.c: make built-in hunk header pattern a separate table
      git-gui: use "blame -w -C -C" for "where did it come from, originally?"
      git-stash: try reusing cached stat info as much as possible
      Fix merge-one-file for our-side-added/our-side-removed cases
      Document custom hunk header selection
      revision.c: remove duplicated parents after history simplification
      Revert 88494423 (removal of duplicate parents in the output codepath)
      Re-code builtin-branch.c in UTF-8
      Teach read-tree 2-way merge to ignore intermediate symlinks
      GIT 1.5.2.4
      Update list of older git docs
      GIT v1.5.3-rc1

Lars Hjemli (1):
      git-submodule(1): update description and key names

Marcus Fritzsch (1):
      Fixed a formulation mistake in Documentation/user-manual.txt

Matt Kraai (3):
      Prefer EMAIL to username@hostname.
      Change "added.moved or removed" to "added, moved or removed" in
      Add [verse] to the SYNOPSIS section of git-submodule.txt.

Matt McCutchen (3):
      gitweb: make search form generate pathinfo-style URLs
      gitweb: make "No commits" in project list gray, not bold green
      Makefile: rebuild git.o on version change, clean up git$X flags

Matthias Lederhofer (3):
      git-init: set core.worktree if GIT_WORK_TREE is specified
      git-clone: split up long &&-command-chain and use a function for cleanup
      make git-clone GIT_WORK_TREE aware

Michael Hendricks (2):
      git-send-email: allow an email alias for --from
      gitweb: configurable width for the projects list Description column

Miklos Vajna (3):
      Document -<n> for git-format-patch
      gitweb: prefer git_get_project_owner() over get_file_owner()
      gitweb: new cgi parameter: opt

Nicolas Pitre (3):
      apply delta depth bias to already deltified objects
      script to display a distribution of longest common hash prefixes
      reduce git-pack-objects memory usage a little more

Paul Mackerras (6):
      gitk: Fix the find and highlight functions
      gitk: Fix bug in the anc_or_desc routine
      gitk: Remove the unused stopfindproc function
      gitk: Fix bug causing "can't read commitrow(0,n)" error
      gitk: Use git log and add support for --left-right
      gitk: Improve handling of -- and ambiguous arguments

René Scharfe (1):
      diff-lib.c: don't strdup twice

Sean Estabrooks (1):
      Alter git-checkout reflog message to include "from" branch

Shawn O. Pearce (46):
      git-gui: Unlock the index when cancelling merge dialog
      git-gui: Start blame windows as tall as possible
      git-gui: Correct resizing of remote branch delete dialog
      git-gui: Don't bind F5/M1-R in all windows
      git-gui: Bind M1-P to push action
      git-gui: Include a Push action on the left toolbar
      git-gui: Ensure windows shortcuts always have .bat extension
      git-gui: Honor rerere.enabled configuration option
      git-gui: New Git version check support routine
      git-gui: Skip nicknames when selecting author initials
      git-gui: Teach class system to support [$this cmd] syntax
      git-gui: Abstract the revision picker into a mega widget
      git-gui: Refactor the delete branch dialog to use class system
      git-gui: Optimize for newstyle refs/remotes layout
      git-gui: Maintain remote and source ref for tracking branches
      git-gui: Allow users to match remote branch names locally
      git-gui: Fast-forward existing branch in branch create dialog
      git-gui: Enhance choose_rev to handle hundreds of branches
      git-gui: Sort tags descending by tagger date
      git-gui: Option to default new branches to match tracking branches
      git-gui: Automatically refresh tracking branches when needed
      git-gui: Better handling of detached HEAD
      git-gui: Refactor our ui_status_value update technique
      git-gui: Refactor branch switch to support detached head
      git-gui: Unabbreviate commit SHA-1s prior to display
      git-gui: Default selection to first matching ref
      git-gui: Allow double-click in checkout dialog to start checkout
      git-gui: Extract blame viewer status bar into mega-widget
      git-gui: Change the main window progress bar to use status_bar
      git-gui: Show a progress meter for checking out files
      git-gui: Always use absolute path to all git executables
      git-gui: Correct gitk installation location
      git-gui: Assume unfound commands are known by git wrapper
      git-gui: Treat `git version` as `git --version`
      git-gui: Perform our own magic shbang detection on Windows
      git-gui: Teach console widget to use git_read
      git-gui: Improve the Windows and Mac OS X shortcut creators
      git-gui: Correct ls-tree buffering problem in browser
      git-gui: Don't linewrap within console windows
      git-gui: Paper bag fix for Cygwin shortcut creation
      git-gui: Use sh.exe in Cygwin shortcuts
      git-gui: Include a space in Cygwin shortcut command lines
      Clarify documentation of fast-import's D subcommand
      Support wholesale directory renames in fast-import
      git-gui: Work around bad interaction between Tcl and cmd.exe on ^{tree}
      git-gui: Change prior tree SHA-1 verification to use git_read

Steffen Prohaska (1):
      filter-branch: added missing warn function

Steven Walter (1):
      Documentation for git-log --follow

Uwe Kleine-König (2):
      stash: end commit log with a newline
      repack: don't report "Nothing new to pack." if -q is given

William Pursell (1):
      user-manual: fix directory name in git-archive example


Version v1.5.3-rc0; changes since v1.5.2.5:
-------------------------------------------

Adam Roben (3):
      git-send-email: Add --threaded option
      git-send-email: make options easier to configure.
      format-patch: Add format.subjectprefix config option

Alex Riesen (11):
      Fix the progress code to output LF only when it is really needed
      Add run_command_v_opt_cd: chdir into a directory before exec
      Add ability to specify environment extension to run_command
      Allow environment variables to be unset in the processes started by run_command
      Verbose connect messages to show the IP addresses used
      Add another verbosity level to git-fetch
      Add a configuration option to control diffstat after merge
      Fix push with refspecs containing wildcards
      Do not use h_errno after connect(2): the function does not set it
      cvsserver: Actually implement --export-all
      Avoid perl in t1300-repo-config

Alexandre Julliard (1):
      pack-check: Sort entries by pack offset before unpacking them.

Alexandre Vassalotti (1):
      git-tag: Fix "can't shift that many".

Andy Whitcroft (3):
      cvsimport: add support for new style remote layout
      cvsimport: update documentation to include separate remotes option
      cvsimport: add <remote>/HEAD reference in separate remotes more

Aneesh Kumar K.V (2):
      gitview: Fix the blame interface.
      gitview: run blame with -C -C

Benjamin Sergeant (1):
      git-p4 fails when cloning a p4 depo.

Brian Gernhardt (1):
      Fix t5516-fetch for systems where `wc -l` outputs whitespace.

Carlos Rica (3):
      Fix git-stripspace to process correctly long lines and spaces.
      Add test script for git-stripspace.
      Add test-script for git-tag

Dan McGee (1):
      git-mergetool: Allow gvimdiff to be used as a mergetool

Dana L. How (8):
      Custom compression levels for objects and packs
      Alter sha1close() 3rd argument to request flush only
      git-repack --max-pack-size: new file statics and code restructuring
      git-repack --max-pack-size: write_{object,one}() respect pack limit
      git-repack --max-pack-size: split packs as asked by write_{object,one}()
      git-repack --max-pack-size: add option parsing to enable feature
      pack-objects: clarification & option checks for --max-pack-size
      Ensure git-repack -a -d --max-pack-size=N deletes correct packs

Daniel Barkalow (6):
      Move remote parsing into a library file out of builtin-push.
      Move refspec parser from connect.c and cache.h to remote.{c,h}
      Add handlers for fetch-side configuration of remotes.
      Update local tracking refs when pushing
      Move refspec pattern matching to match_refs().
      Fix pushing to a pattern with no dst

Dave O'Neill (1):
      Generate tags with correct timestamp (git-svnimport)

Elvis Pranskevichus (1):
      Use git-tag in git-cvsimport

Emil Medve (1):
      git-submodule: Instead of using only annotated tags, use any tags.

Eric Wong (4):
      git-svn: cleanup: factor out longest_common_path() function
      git-svn: test for creating new directories over svn://
      git-svn: reduce stat() calls for a backwards compatibility check
      git-svn: allow dcommit to retain local merge information

Fernando J. Pereda (1):
      Teach mailsplit about Maildir's

Frank Lichtenheld (11):
      t9400: Add test cases for config file handling
      t9400: Add some more cvs update tests
      t9400: Add some basic pserver tests
      t9400: Work around CVS' deficiencies
      cvsserver: Handle 'cvs login'
      cvsserver: Make req_Root more critical of its input data
      cvsserver: Add some useful commandline options
      cvsserver: Let --base-path and pserver get along just fine
      cvsserver: Actually implement --export-all
      config: Add --null/-z option for null-delimted output
      config: add support for --bool and --int while setting values

Geert Bosch (1):
      Unify write_index_file functions

Gerrit Pape (3):
      git-branch: cleanup config file when deleting branches
      git-svn: trailing slash in prefix is mandatory with --branches/-b
      git-cvsimport: force checkout of working tree after initial import

Han-Wen Nienhuys (28):
      Cleanups
      reformatting: break long lines.
      rename apply() to applyCommit(); apply is a python builtin
      add .dotest to .gitignore
      Robustness fixes for pipes
      cleanup
      minor cleanups
      clone and sync --keep-path to keep perforce path to module.
      use string.strip() iso. slicing.
      use strip() iso. slicing for removing \n
      add --verbose to all commands.
      Extract multiple paths concurrently.
      Diverse cleanups
      remove global .gitdir
      Read p4 files in one batch.
      Thinko, fix buglet.
      store p4 user cache in home directory.
      thinko.
      read files before creating the commit.
      don't p4 print deleted files.
      only run p4 print if necessary
      use p4CmdList() to get file contents in Python dicts. This is more robust.
      Cleanups & import into p4/master for local import
      remove debug print
      thinko: really ignore deleted files.
      look for 'text' and 'binary' files.
      print error message when p4 print fails (eg. due to permission problems)
      also strip p4/ from local imports.

Jakub Narębski (16):
      gitweb: Add test t9500 for gitweb (as standalone script)
      Add an option to git-ls-tree to display also the size of blob
      gitweb: Provide links to commitdiff to each parent in 'commitdiff' view
      gitweb: Improve "next" link in commitdiff view
      gitweb: Split git_patchset_body into separate subroutines
      gitweb: Create special from-file/to-file header for combined diff
      gitweb: Add links to blobdiffs in from-file/to-file header for merges
      gitweb: '--cc' for merges in 'commitdiff' view
      Document git rev-list --full-history
      Document git read-tree --trivial
      Document git rev-parse --is-inside-git-dir
      Document git reflog --stale-fix
      Document git rev-list --timestamp
      Use tabs for indenting definition list for options in git-log.txt
      Document git log --abbrev-commit, as a kind of pretty option
      Document git log --full-diff

James Bowes (2):
      Add colour support in rebase and merge tree diff stats output.
      rev-parse: Identify short sha1 sums correctly.

Jeff King (12):
      cmd_log_init: remove parsing of --encoding command line parameter
      refactor dir_add_name
      dir_struct: add collect_ignored option
      builtin-add: simplify (and increase accuracy of) exclude handling
      Fix ALLOC_GROW off-by-one
      Fix ALLOC_GROW calls with obsolete semantics
      git-stash: fix "no arguments" case in documentation
      git-stash: fix "can't shift that many" with no arguments
      git-stash: don't complain when listing in a repo with no stash
      Documentation: quote {non-attributes} for asciidoc
      Documentation: quote {non-attributes} for asciidoc
      Documentation: minor cleanups to branch/checkout wording

Jeffrey C. Ollie (2):
      Add an option to quiet git-init.
      Quiet the output from git-init when cloning, if requested.

Jim Meyering (4):
      Don't dereference a strdup-returned NULL
      detect close failure on just-written file handles
      Don't ignore a pack-refs write failure
      git-log: detect dup and fdopen failure

Johan Herland (1):
      Remove unnecessary code and comments on non-existing 8kB tag object restriction

Johannes Schindelin (23):
      Update to SubmittingPatches
      Add git-filter-branch
      git-fsck: learn about --verbose
      Move buffer_is_binary() to xdiff-interface.h
      merge-recursive: refuse to merge binary files
      git-merge-file: refuse to merge binary files
      filter-branch: use $(($i+1)) instead of $((i+1))
      filter-branch: fix behaviour of '-k'
      t5000: skip ZIP tests if unzip was not found
      Teach filter-branch about subdirectory filtering
      Teach diff to imply --find-copies-harder upon -C -C
      pp_header(): work around possible memory corruption
      diffcore-rename: favour identical basenames
      filter-branch: add example to move everything into a subdirectory
      Move the pick_author code to git-sh-setup
      Teach rebase an interactive mode
      rebase -i: several cleanups
      rebase -i: provide reasonable reflog for the rebased branch
      Teach rebase -i about --preserve-merges
      t7004: ship trustdb to avoid gpg warnings
      git add: respect core.filemode with unmerged entries
      Make '!' aliases more useful
      git-fsck: add --lost-found option

Johannes Sixt (9):
      filter-branch: Use rev-list arguments to specify revision ranges.
      filter-branch: also don't fail in map() if a commit cannot be mapped
      Makefile: Remove git-merge-base from PROGRAMS.
      filter-branch: Simplify parent computation.
      filter-branch: subdirectory filter needs --full-history
      Avoid double-slash in path names that depend on $(sharedir).
      Remove trailing slash from $(template_dir).
      git-remote show: Also shorten non-fast-forward refs in the 'push' listing
      Test 'git add' for unmerged entries when core.symlinks=false.

Jon Loeliger (1):
      Add the --numbered-files option to git-format-patch.

Jonas Fonseca (2):
      Fix git-am(1) synopsis formatting
      git-rebase: suggest to use git-add instead of git-update-index

Josh Triplett (1):
      Fix typo in git-mergetool

Julian Phillips (2):
      Makefile: Use generic rule to build test programs
      new-workdir: handle rev-parse --git-dir not always giving full path

Junio C Hamano (48):
      git-apply: Fix removal of new trailing blank lines.
      pack-objects: pass fullname down to add_object_entry()
      Teach "delta" attribute to pack-objects.
      builtin-pack-objects: remove unnecessary code for no-delta
      Fix command line parameter parser of revert/cherry-pick
      Remove git-applypatch
      mailsplit: fix for more than one input files
      Add DLH to .mailmap
      Release Notes: start preparing for 1.5.3
      git-apply: what is detected and fixed is not just trailing spaces.
      t7003: make test repeatable
      git-branch --track: fix tracking branch computation.
      War on whitespace
      Test wildcard push/fetch
      More missing static
      More missing static
      Even more missing static
      remote.c: refactor match_explicit_refs()
      remote.c: refactor creation of new dst ref
      remote.c: minor clean-up of match_explicit()
      remote.c: fix "git push" weak match disambiguation
      remote.c: "git-push frotz" should update what matches at the source.
      git-push: Update description of refspecs and add examples
      git-blame: do not indent with spaces.
      git-blame -w: ignore whitespace
      mktag: minimally update the description.
      Lift 16kB limit of log message output
      Extend --pretty=oneline to cover the first paragraph,
      Makefile: common-cmds.h depends on generate-cmdlist.sh script
      Makefile: allow generating git.o for debugging purposes
      -Wold-style-definition fix
      More static
      Documentation: update "stale" links for 1.5.2.2
      INSTALL: explain how to build documentation
      Two trivial -Wcast-qual fixes
      git-send-email: Do not make @-less message ID
      Add core.quotepath configuration variable.
      Update draft Release Notes for 1.5.3
      diffcore_count_changes: pass diffcore_filespec
      diffcore_filespec: add is_binary
      diffcore-delta.c: update the comment on the algorithm.
      diffcore-delta.c: Ignore CR in CRLF for text files
      git-stash: require "save" to be explicit and update documentation
      Update public documentation links for 1.5.2.3
      "git-push $URL" without refspecs pushes only matching branches
      Rewrite "git-frotz" to "git frotz"
      git-stash: make "save" the default action again.
      Mark disused commit walkers officially deprecated.

Kevin Green (1):
      git-p4: check for existence of repo dir before trying to create

Lars Hjemli (10):
      Add git-submodule command
      Add basic test-script for git-submodule
      git-submodule: move cloning into a separate function
      git-submodule: clone during update, not during init
      t7400: barf if git-submodule removes or replaces a file
      git-submodule: remember to checkout after clone
      Rename sections from "module" to "submodule" in .gitmodules
      git-submodule: give submodules proper names
      Add gitmodules(5)
      gitmodules(5): remove leading period from synopsis

Linus Torvalds (9):
      Make "git gc" pack all refs by default
      Make the pack-refs interfaces usable from outside
      Makefile: add an explicit rule for building assembly output
      Finally implement "git log --follow"
      Fix up "git log --follow" a bit..
      Clean up internal command handling
      Check for IO errors after running a command
      git: Try a bit harder not to lose errno in stdio
      Start deprecating "git-command" in favor of "git command"

Marco Costalba (1):
      Teach 'git-apply --whitespace=strip' to remove empty lines at the end of file

Marius Storm-Olsen (7):
      Make the command call silent
      Replace \r\n with \n when importing from p4 on Windows
      Ensure that the commit message is Windows formated (CRLF) before invoking the editor.
      Fix git-p4 clone (defaultDestination)
      Fix single branch import into remotes
      Exclude the HEAD symbolic ref from the list of known branches
      Only use double quotes on Windows

Mark Levedahl (6):
      gitk: Make selection highlight color configurable
      gitk: Update fontsize in patch / tree list
      gitk: Allow specifying tabstop as other than default 8 characters.
      gitweb.perl - Optionally send archives as .zip files
      gitk: Use a spinbox for setting tabstop settings
      gitk: Update selection background colorbar in prefs dialog

Martin Koegler (5):
      builtin-pack-objects: don't fail, if delta is not possible
      git-pack-objects: cache small deltas between big objects
      builtin-pack-object: cache small deltas
      diff-delta: use realloc instead of xrealloc
      gitweb: Handle non UTF-8 text better

Martin Waitz (1):
      rename dirlink to gitlink.

Matthias Lederhofer (18):
      add git-filter-branch to .gitignore
      make clean should remove all the test programs too
      filter-branch: prevent filters from reading from stdin
      chmod +x git-filter-branch.sh
      rev-parse: document --is-inside-git-dir
      rev-parse: introduce --is-bare-repository
      test git rev-parse
      introduce GIT_WORK_TREE to specify the work tree
      Use new semantics of is_bare/inside_git_dir/inside_work_tree
      extend rev-parse test for --is-inside-work-tree
      test GIT_WORK_TREE
      setup_git_directory: fix segfault if repository is found in cwd
      filter-branch: always export GIT_DIR if it is set
      gitweb: change filename/directory name of snapshots
      make git barf when an alias changes environment variables
      make dist: include configure script in tarball
      ignore git-rebase--interactive
      getenv/setenv: use constants if available

Matthijs Melchior (1):
      Teach git-tag about showing tag annotations.

Michael Ellerman (2):
      gitview: Use new-style classes
      gitview: Define __slots__ for Commit

Michael Krelin (1):
      git-svn: honor ~/.subversion/ client cert file settings.

Michael S. Tsirkin (1):
      connect: display connection progress

Nanako Shiraishi (3):
      Cloning from a repo without "current branch"
      Add git-stash script
      Document git-stash

Nicolas Pitre (8):
      allow for undeltified objects not to be reused
      make "repack -f" imply "pack-objects --no-reuse-object"
      deprecate the new loose object header format
      fixes to output of git-verify-pack -v
      improve delta long block matching with big files
      update diff-delta.c copyright
      fix repack with --max-pack-size
      always start looking up objects in the last used pack first

Paul Mackerras (18):
      gitk: Use the -q flag to git checkout
      gitk: New infrastructure for working out branches & previous/next tags
      gitk: Don't try to list large numbers of tags or heads in the details pane
      gitk: Add some more comments to the optimize_rows procedure
      gitk: Improve the behaviour of the initial selection
      gitk: Implement a simple scheduler for the compute-intensive stuff
      gitk: Cope with commit messages with carriage-returns and initial blank lines
      gitk: Disable the head context menu entries for the checked-out branch
      gitk: Store ids in rowrangelist and idrowranges rather than row numbers
      gitk: New algorithm for drawing the graph lines
      gitk: Show local uncommitted changes as a fake commit
      gitk: Speed up the reading of references
      gitk: Get rid of the childlist variable
      gitk: Add a "reset branch to here" row context-menu operation
      gitk: Limit how often we change the canvas scrolling region
      gitk: Fix bug causing nearby tags/heads to sometimes not be displayed
      gitk: Improve handling of whitespace and special chars in filenames
      gitk: Add a progress bar to show progress while resetting

Petr Baudis (2):
      git-rev-list: Add regexp tuning options
      git-applymbox: Remove command

Pierre Habouzit (3):
      $EMAIL is a last resort fallback, as it's system-wide.
      Active_nr is unsigned, hence can't be < 0
      Missing statics.

Quy Tonthat (1):
      git.spec: RPM failed, looking for wrong files.

Randal L. Schwartz (1):
      Add test-sha1 to .gitignore.

René Scharfe (3):
      t5000: silence unzip availability check
      diffcore-rename: don't change similarity index based on basename equality
      diff: round down similarity index

Robin Rosenberg (1):
      Add option to cvs update before export

Sam Vilain (3):
      git-svn: avoid string eval for defining functions
      git-svn: use git-log rather than rev-list | xargs cat-file
      git-svn: cache max revision in rev_db databases

Shawn O. Pearce (24):
      Teach git-describe how to run name-rev
      Lazily open pack index files on demand
      Micro-optimize prepare_alt_odb
      Attempt to delay prepare_alt_odb during get_sha1
      git gui 0.8.0
      git-gui: GUI support for running 'git remote prune <name>'
      git-gui: Show the git-gui library path in 'About git-gui'
      git-gui: Enable verbose Tcl loading earlier
      git-gui: Provide fatal error if library is unavailable
      git-gui: Disable tearoff menus on Windows, Mac OS X
      git-gui: Allow users to rename branches through 'branch -m'
      git-gui: Allow users to delete remote branches
      git-gui: Expose the merge.diffstat configuration option
      Allow contrib new-workdir to link into bare repositories
      Test for recent rev-parse $abbrev_sha1 regression
      Simplify index access condition in count-objects, pack-redundant
      Ensure the pack index is opened before access
      Style nit - don't put space after function names
      git-gui: Internalize symbolic-ref HEAD reading logic
      git-gui: Quiet our installation process
      Avoid src:dst syntax as default bash completion for git push
      Document git-gui, git-citool as mainporcelain manual pages
      Teach bash how to complete +refspec on git-push
      Correct usages of sed in git-tag for Mac OS X

Simon Hausmann (223):
      Initial import of a python script to import changesets from Perforce into git.
      Added basic support for specifying the depot path to import from as well as the range of perforce changes.
      Slightly improved help usage output and made specifying the trailing slash for the depot path optional.
      Implemented basic support for converting the date of the perforce change to the git format. The timezone isn't correctly set up yet though.
      Some fixes to the timezone conversion between the date of a perforce change and the git commit.
      Speed up the import of individual files from Perforce into git by passing the output of "p4 print" directly to git fast-import. Also try to set the mode of the file in git correctly based on file type heuristics.
      Removed unused p4cat function and added helper function for the perforce python interface (p4Cmd).
      Changed the import mechanism to write to git fast-import through a pipe instead of having p4-fast-export write to stdout and let the caller connect it to git fast-import.
      Minor code cleanups and ported some p4 interfacing code over to the p4 python mode.
      Instead of parsing the output of "p4 users" use the python objects of "p4 -G users".
      Ported the remaining functions that parsed p4 shell output over to the p4 python interface.
      Avoid calling fstat for every imported file (slow!) and instead read the file data first into the python process and use the length of the bytes read for the size field of git fast-import.
      Permit calling p4-fast-export with a depot path that has the typical ... wildcard at the end.
      Fixed displaying import progress by calling flush on stdout.
      Create a git tag for every changeset imported from perforce.
      Fix file permissions of p4-fast-export.py to be executable.
      Started working on incremental imports from Perforce.
      Simplify the incremental import by elimination the need for a temporary import branch.
      Code cleanups, move the code to create a commit with fast-import into a separate function out of the main loop.
      Initial support for importing a directory from Perforce at a specified revision.
      Minor cleanups and print an error message of git fast-import if it fails.
      Fixed incremental imports by using the correct "from" command instead of "merge" with git fast-import.
      Make incremental imports easier to use by storing the p4 depot path after an import in .git/config and re-using it when we're invoked again later.
      Make specifying the revision ranges more convenient.
      Fix calculation of the newest imported revision for #head imports.
      Catch io exceptions from git fast-import again and print the error message.
      Made the name of the git branch used for the perforce import configurable through a new --branch=<name> commandline option.
      Added a little helper script to debug the output of the p4 python interface.
      Minor code cleanups.
      Avoid the excessive use of git tags for every perforce change and instead just create one git tag for the last imported change.
      Changed the default git import branch from "p4" to "master".
      Added a little helper script to remove unused tags from the perforce import.
      Create lightweight git tags (using the "reset" trick) for the incremental import instead of full-blown ones. Also fix parsing the output of git name-rev for figuring out the last imported p4 change number.
      Cleanups, remove unused variable.
      Code cleanups.
      Started work on p4 branch detection (experimental!).
      More fixes in heuristic p4 branch detection based on common path components.
      After marking a p4 branch as merged don't ever merge it in git again.
      Set git fast-import marks for every imported change for future use.
      When trying to map p4 integrations to git merges just record it as a single merge with the newest p4 change as secondary parent.
      Make it possible to specify the p4 changes to import through a text file (for debugging) and made various improvements to the branch/merge heuristic detection.
      Use sets.Set() instead of set() to run also with older versions of Python.
      Fix single-branch imports by skipping the branch/merge detection correctly.
      Added p4 delete behavioural emulation as todo item.
      Added support for --silent so that p4-fast-export can be called from cronjobs.
      More work in --silent support.
      Don't print a plain newline at the end of the execution (avoids bogus cron error mails).
      Adjust the output parsing of git name-rev to handle the output of the latest git version.
      Work in progress on detecting branches.
      Changed --known-branches to take a file as argument instead of a comma separated list.
      Fixed p4-debug file extension.
      Make the p4 data/command cache configurable through the --cache-debug commandline option.
      Minor code cleanups.
      More code cleanups and preparations for more branch detection heuristics.
      More work on branch detection by implementing changeIsBranchMerge().
      Reduce the number of false "merges" by skipping "branch from" entries in the integrated output as well as by ignoring integrations of future (newer) changes.
      Split up the cache commandline options into (command) cache and data cache.
      First version of a new script to submit changes back to perforce from git repositories.
      Fix git-dir option and allow reading log substitutions from a file
      Lots of bugfixes to p4-git-sync.
      Automatically operate on a temporary branch, needed for cherry-pick to work when applying changes to
      Be nice and use /usr/bin/env python for the git-p4 scripts
      Ignore Apple resource files when importing from perforce to git.
      Auto-detect the current git branch before submitting back to perforce.
      Use p4 revert ... instead of revert -a ... after submitting, to make sure the p4 checkout is clean.
      Default to interactive syncing
      Improved the git dir detection.
      Pass the right number of arguments to commit, fixes single-branch imports.
      Start moving the git-p4 tools into one single script.
      Provide a little bit of help description for the git-p4 "tools".
      First (untested) attempt at migrating p4-git-sync into the final git-p4 script
      Part of the code is copyright by Trolltech ASA.
      sync-to-perforce is now called submit and fixed the gitdir check a little bit
      Completely untested "merge" of p4-fast-export.py into git-p4.py
      Added missing "self"s to make the script evaluate correctly.
      Fixed the initial version import by getting the file index correct by correctly skipping deleted files.
      Removed p4-fast-export and p4-git-sync as they've been integrated into git-p4 now.
      Start of the git-p4 documentation.
      Documentation enhancements.
      Added experimental but super-fast --apply-as-patch option to git-p4 submit
      Fix support for deletions in git-p4 submit when using --apply-as-patch by filtering out deletions in the diff-tree output.
      Made --apply-as-patch the default for git-p4 submit as it's significantly faster.
      Make it possible to invoke git-p4 from within subdirectories of a git working tree.
      Don't show the submit template and the diff first in less but show it in $editor right away
      Removed the .py extension from git-p4 as it's annoying to type every time.
      Changed the format of the imported log message slightly, so that it's easier to parse again.
      Changed the default branch for imports from "master" to "p4"
      Added some helper function(s) to parse the depot path and change number from the log message
      Helper function to check the existance of a revision
      Set the default branch in run, not in the constructor
      Brand new smart incremental import that doesn't need tags or git repo-config :)
      Make it possible to run git-p4 submit from within the git repository
      Use the new incremental import style by default
      Different versions of p4 have different output for the where command ;(
      Minor cosmetic fixlet for the git-p4 submit sync question.
      Prefer git command over git-command.
      Don't try to parse any options with git-p4 debug but pass it straight on to p4
      git-p4 debug doesn't need a git repository
      Added support for mapping p4 labels to git tags
      Fix variable usage in tag import
      Fix the docs for git-p4 submit and turn git-p4 submit --master=foo into simply git-p4 submit mytopicbranch.
      Fix "compilation" :)
      Clean up python class names.
      Added git-p4 rebase convenience
      Provide a tree summary after git-p4 rebase
      Turn off potentially slow label detection by default
      Honor --silent for labels
      Added git-p4 clone convenience command
      Fix file determination for #head imports
      fix variable usage (oops)
      Added a simple example of usage to the "documentation" :)
      Allow for convenient rebasing after git-p4 submit
      Print an error message of some sort if git fast-import fails.
      Fix the timezone formatting. Now qgit also displays (parses) it correctly.
      Removed the old patch apply code from git-p4 submit.
      Slightly improved formatting of the raw_input questions.
      A new attempt at fixing the child-fast-import-process-not-finished race condition in the clone command
      Handle patch errors in git-p4 submit better.
      Doc cleanups.
      Micro cleanup
      cleanup, renamed self.globalPrefix to self.depotPath
      Cleanup, removed the old tagging code
      Document some implementation details, for the curious... :)
      Use the subprocess module instead of popen2 to make it work on Windows.
      Added a little .bat wrapper from Marius
      Make sure all popen calls use binary mode (for Windows) and
      Make submitting work on Windows.
      Converted to unix newlines
      Fix git-p4 clone //depot/project (head import)
      Make git-p4 work with bare repositories.
      Added the possibility of skipping patches during git-p4 submit
      Give a better hint if git-p4 submit fails
      Fix calling git-p4 rebase from within a subdirectory (git rebase wants to be in toplevel)
      A little todo note before I forget it :), based on a suggestion from Lars.
      Fixing syncing (gitdir discovery / cd) for bare repositories
      Always pass a sha1 for the initial parent so that git-fast-import doesn't think it's creating a new branch from itself. It's a sensible error in general but in the case of incremental imports we have to apply force :)
      Clean up code duplication for revision parsing and fix previous commit to not import into remotes/p4 (yet!).
      Removed cleantags command. It doesn't have any meaning anymore.
      Removed ancient and unused code to find the last imported revision from previous imports to use for the current import by looking at the p4 tags. The current approach of using the log message works better.
      Create the origin based import branch using git update-ref instead of git branch so that it's possible to have the import branch in refs/remotes.
      Changed the default p4 import branch to be refs/remotes/p4/{HEAD,master} instead of refs/heads/p4.
      Bite the bullet and automatically convert old style refs/heads/p4 repositories to the new style refs/remotes/p4 branching.
      Added support for git-p4 sync/rebase --with-origin. See git-p4.txt for details :)
      Removed todo item that is implemented :)
      Fix branch setup after initial clone.
      Removed unused cache variables.
      Started rewriting the branch detection, based on "p4 branches" and "p4 branch -o foo".
      Give branches a nice project prefix and don't bail out on clone if we failed to detect the master branch.
      More work on the incremental importing of multiple branches. Improved error detection by checking the exit code of git-fast-import.
      Cleanup/speed up the branch<> file split and removed change range limitation that I added for debugging (oops).
      More cleanups and speedups for labels and branches
      Removed unused variable, more cleanups
      Cache the output of "p4 users" for faster syncs on high latency links.
      Fix gitdir not being set when cloning. Needed for writing the p4 users cache.
      Oops, not only /set/ gitdir on clone, also set it /correctly/ :)
      Use git format-patch and git apply --apply when extracting patches from git and applying them to a Perforce checkout. This should make it possible to apply git commits with binary files that cannot be handled by path.
      Added support for git-p4 submit --direct (experimental)
      Specifying --detect-branches is now only needed for the initial clone/sync. Afterwards it's turned on implicitly if more p4 branches than remotes/p4/master are found.
      Had an idea for debugging, record it :)
      Another (potentially life-saving) idea for submit --direct
      Improved output for multi branch imports and noted another little todo item
      Fix conversion from old style heads/p4 to remotes/p4/master
      Fix error detection with git-p4 submit when the requested depot path is not in the client view.
      Fix git symbolic-ref warning on initial clone
      Detect with git-p4 submit --direct when there are no changes in the working directory
      Make git-p4 submit --direct safer by also creating a git commit
      Added a rollback command for debugging. It sets back the heads of the p4 branches to the specified p4 change number or earlier.
      Fix branch detection in multi-branch imports
      Fixes for rollback, delete branches that did not exist at the specified p4 change
      Added support for importing multiple branches into refs/heads instead of just refs/remotes using --import-local. Needs some further microfix but seems to work otherwise.
      Added support for --max-changes=<count> to ease import debugging
      Use refs/heads/* instead of refs/heads/p4/* for local imports
      Doc updates
      Avoid calling git symbolic-ref refs/heads/p4//HEAD (double slash)
      Make rollback work with locally imported branches
      Don't make len(p4Cmd("p4 changes -m 1 //foo/...")) == 0 succeed when the p4 command itself failed.
      Oops, fill the /list/ correct with the p4 exit code.
      Catch p4 errors in rollback early enough (before deleting refs!)
      Fix p4 execution in git-p4 rollback.
      Fix multi-branch import with --silent.
      Load the user map from p4 only once at run-time.
      Fix creating the remotes/p4 branches based on origin/* for the multi-branch import
      Forgot to remove this return statement from debugging
      Added support for --with-origin with multi-branch imports
      Oops, fix --with-origin to /really/ also call git fetch :)
      Avoid creating non-p4 branches in remotes/p4 off of remotes/origin
      Make git-p4 work with packed refs (don't use os.path.exists to check for the existance of a ref)
      Make --with-origin also work without origin :)
      Make --with-origin the default for syncing.
      Shortcut the case where we have no origin branch
      Forgot to remove this TODO item when I made --with-origin the default :)
      Added git-p4 submit --trust-me-like-a-fool for the adventurous users :)
      Fix creation of refs/remotes/p4/HEAD symbolic ref
      Fix my email address, this isn't really KDE related :)
      In *_pipe print the command that failed if it fails. Fixed old calls to mypopen.
      Fix typo in listExistingP4Branches that broke sync.
      Fix support for "depot-path" in older git-p4 imports
      Fix common path "calculation" from logs of multiple branches. Need to use min instead of max for prev/cur to avoid out-of-bounds string access. Also treat "i" as index of the last match instead of a length because in case of a complete match of the two strings i was off by one.
      Don't attempt to set the initialParent on multi-branch imports (useless). At some point the code paths should be unified, but for now I need a working git-p4 :)
      Hack to make the multi-branch import work again with self.depotPaths now that self.depotPath is gone
      Fix git-p4 rebase
      Fix git-p4 submit
      Fix depot-path determination for git-p4 submit
      Make clone behave like git clone by default again.
      Make git-p4 submit detect the correct reference (origin) branch when working with multi-branch imports.
      Only get the expensive branch mapping from the p4 server when not syncing with the help of an origin remote (which we instead then use to get new branches from).
      Fixed the check to make sure to exclude the HEAD symbolic refs when updating the remotes/p4 branches from origin.
      Fix updating/creating remotes/p4/* heads from origin/p4/*
      Fix project name guessing
      Fix depot-paths encoding for multi-path imports (don't split up //depot/path/foo)
      Fix support for explicit disabling of syncing with the origin
      Write out the options tag in the log message of imports only if we actually have options
      Provide some information for single branch imports where the commits go
      Mention remotes/p4/master also in the documentation.
      git-p4 submit: Fix missing quotes around p4 commands to make them work with spaces in filenames
      Moved the code from git-p4 submit to figure out the upstream branch point into a separate helper method.
      Fix git-p4 rebase to detect the correct upstream branch instead of unconditionally always rebasing on top of remotes/p4/master
      Fix initial multi-branch import.
      Fix the branch mapping detection to be independent from the order of the "p4 branches" output.
      Warn about conflicting p4 branch mappings and use the first one found.
      Added git-p4 branches command that shows the mapping of perforce depot paths to imported git branches.
      Make it possible to specify the HEAD for the internal findUpstreamBranchPoint function.
      git-new-workdir: Fix shell warning about operator == used with test.

Sven Verdoolaege (4):
      git-update-ref: add --no-deref option for overwriting/detaching ref
      t9500: skip gitweb tests if perl version is too old
      git-submodule: provide easy way of adding new submodules
      git-clone: fetch possibly detached HEAD over dumb http

Theodore Ts'o (4):
      Add --aggressive option to 'git gc'
      Fix minor grammatical typos in the git-gc man page
      git-mergetool: Make default selection of merge-tool more intelligent
      Don't fflush(stdout) when it's not helpful

İsmail Dönmez (1):
      Change default man page path to /usr/share/man


Version v1.5.2.5; changes since v1.5.2.4:
-----------------------------------------

Christian Couder (1):
      rev-list --bisect: fix allocation of "int*" instead of "int".

Julian Phillips (1):
      Force listingblocks to be monospaced in manpages

Junio C Hamano (4):
      Do not expect unlink(2) to fail on a directory.
      setup.c:verify_non_filename(): don't die unnecessarily while disambiguating
      Fix "git add -u" data corruption.
      GIT 1.5.2.5

Linus Torvalds (1):
      apply: remove directory that becomes empty by renaming the last file away

Salikh Zakirov (1):
      git-add -u paths... now works from subdirectory


Version v1.5.2.4; changes since v1.5.2.3:
-----------------------------------------

Andy Parkins (2):
      Make git-prune submodule aware (and fix a SEGFAULT in the process)
      user-manual: grammar and style fixes

Gerrit Pape (1):
      git-gui: properly popup error if gitk should be started but is not installed

J. Bruce Fields (2):
      tutorial: Fix typo
      user-manual: more explanation of push and pull usage

Jim Meyering (1):
      Don't smash stack when $GIT_ALTERNATE_OBJECT_DIRECTORIES is too long

Johannes Schindelin (3):
      diff --no-index: fix --name-status with added files
      glossary: add 'reflog'
      Fix "apply --reverse" with regard to whitespace

Junio C Hamano (2):
      Teach read-tree 2-way merge to ignore intermediate symlinks
      GIT 1.5.2.4

Michael Hendricks (1):
      Correctly document the name of the global excludes file configuration

Miklos Vajna (1):
      Document -<n> for git-format-patch

Shawn O. Pearce (10):
      git-gui: Unlock the index when cancelling merge dialog
      git-gui: Don't bind F5/M1-R in all windows
      git-gui: Bind M1-P to push action
      git-gui: Include a Push action on the left toolbar
      git-gui: Ensure windows shortcuts always have .bat extension
      git-gui: Skip nicknames when selecting author initials
      git-gui: Correct ls-tree buffering problem in browser
      git-gui: Don't linewrap within console windows
      Clarify documentation of fast-import's D subcommand
      git-gui: Work around bad interaction between Tcl and cmd.exe on ^{tree}

William Pursell (1):
      user-manual: fix directory name in git-archive example


Version v1.5.2.3; changes since v1.5.2.2:
-----------------------------------------

Frank Lichtenheld (2):
      config: Complete documentation of --get-regexp
      config: Change output of --get-regexp for valueless keys

Junio C Hamano (1):
      GIT 1.5.2.3

Linus Torvalds (1):
      Fix zero-object version-2 packs

Matt Kraai (1):
      Correct the name of NO_R_TO_GCC_LINKER in the comment describing it.

Sam Vilain (3):
      cleanup merge-base test script
      repack: improve documentation on -a option
      git-remote: document -n

Shawn O. Pearce (5):
      git-gui: Correctly install to /usr/bin on Cygwin
      git-gui: Bind Tab/Shift-Tab to cycle between panes in blame
      git-gui: Don't require $DISPLAY just to get --version
      git-gui: Don't nice git blame on MSYS as nice is not supported
      git-gui: Don't require a .pvcsrc to create Tools/Migrate menu hack

Sven Verdoolaege (1):
      Ignore submodule commits when fetching over dumb protocols


Version v1.5.2.2; changes since v1.5.2.1:
-----------------------------------------

Alex Riesen (3):
      Make the installation target of git-gui a little less chatty
      Fix clone to setup the origin if its name ends with .git
      Add a local implementation of hstrerror for the system which do not have it

Gerrit Pape (1):
      Fix typo in remote branch example in git user manual

J. Bruce Fields (4):
      user-manual: quick-start updates
      user-manual: add a missing section ID
      Documentation: user-manual todo
      tutorial: use "project history" instead of "changelog" in header

Jakub Narębski (1):
      Generated spec file to be ignored is named git.spec and not git-core.spec

Johannes Schindelin (2):
      Move buffer_is_binary() to xdiff-interface.h
      merge-recursive: refuse to merge binary files

Johannes Sixt (1):
      Accept dates before 2000/01/01 when specified as seconds since the epoch

Junio C Hamano (6):
      checkout: do not get confused with ambiguous tag/branch names
      $EMAIL is a last resort fallback, as it's system-wide.
      git-branch --track: fix tracking branch computation.
      Avoid diff cost on "git log -z"
      Documentation: adjust to AsciiDoc 8
      GIT 1.5.2.2

Kristian Høgsberg (1):
      Unquote From line from patch before comparing with given from address.

Luiz Fernando N. Capitulino (1):
      git-cherry: Document 'limit' command-line option

Matthijs Melchior (1):
      New selection indication and softer colors

Michael Milligan (1):
      git-cvsimport: Make sure to use $git_dir always instead of .git sometimes

Sam Vilain (2):
      fix documentation of unpack-objects -n
      Don't assume tree entries that are not dirs are blobs

Shawn O. Pearce (47):
      git-gui: Allow creating a branch when none exists
      git-gui: Allow as few as 0 lines of diff context
      git-gui: Don't quit when we destroy a child widget
      git-gui: Attach font_ui to all spinbox widgets
      git-gui: Verify Tcl/Tk is new enough for our needs
      Revert "Make the installation target of git-gui a little less chatty"
      git-gui: Add a 4 digit commit abbreviation to the blame viewer
      git-gui: Cleanup blame::new widget initialization
      git-gui: Remove empty blank line at end of blame
      git-gui: Improve the coloring in blame viewer
      git-gui: Simplify consecutive lines that come from the same commit
      git-gui: Use arror cursor in blame viewer file data
      git-gui: Display tooltips in blame viewer
      git-gui: Highlight the blame commit header from everything else
      git-gui: Remove unnecessary reshow of blamed commit
      git-gui: Cleanup minor style nit
      git-gui: Space the commit group continuation out in blame view
      git-gui: Show author initials in blame groups
      git-gui: Allow the user to control the blame/commit split point
      git-gui: Display a progress bar during blame annotation gathering
      git-gui: Allow digging through history in blame viewer
      git-gui: Combine blame groups only if commit and filename match
      git-gui: Show original filename in blame tooltip
      git-gui: Use a label instead of a button for the back button
      git-gui: Clip the commit summaries in the blame history menu
      git-gui: Remove the loaded column from the blame viewer
      git-gui: Remove unnecessary space between columns in blame viewer
      git-gui: Use lighter colors in blame view
      git-gui: Make the line number column slightly wider in blame
      git-gui: Automatically expand the line number column as needed
      git-gui: Remove unused commit_list from blame viewer
      git-gui: Better document our blame variables
      git-gui: Cleanup redundant column management in blame viewer
      git-gui: Switch internal blame structure to Tcl lists
      git-gui: Label the uncommitted blame history entry
      git-gui: Rename fields in blame viewer to better descriptions
      git-gui: Display the "Loading annotation..." message in italic
      git-gui: Run blame twice on the same file and display both outputs
      git-gui: Display both commits in our tooltips
      git-gui: Jump to original line in blame viewer
      git-gui: Use three colors for the blame viewer background
      git-gui: Improve our labeling of blame annotation types
      git-gui: Favor the original annotations over the recent ones
      git-gui: Changed blame header bar background to match main window
      git-gui: Include 'war on whitespace' fixes from git.git
      git-gui: Give amend precedence to HEAD over MERGE_MSG
      git-gui: Save geometry before the window layout is damaged

William Pursell (1):
      Make command description imperative statement, not third-person present.


Version v1.5.2.1; changes since v1.5.2:
---------------------------------------

Andy Parkins (2):
      Fix mishandling of $Id$ expanded in the repository copy in convert.c
      Add test case for $Id$ expanded in the repository

Carlos Rica (1):
      fix memory leak in parse_object when check_sha1_signature fails

Eric Wong (1):
      git-svn: avoid md5 calculation entirely if SVN doesn't provide one

Fernando J. Pereda (1):
      Use PATH_MAX instead of TEMPFILE_PATH_LEN

Frank Lichtenheld (7):
      t1300: Add tests for git-config --bool --get
      git-config: Correct asciidoc documentation for --int/--bool
      cvsserver: Correct inetd.conf example in asciidoc documentation
      cvsserver: Note that CVS_SERVER can also be specified as method variable
      cvsserver: Fix some typos in asciidoc documentation
      git-config: Various small fixes to asciidoc documentation
      git-config: Improve documentation of git-config file handling

Jakub Narębski (3):
      Documentation: Clean up links in GIT Glossary
      Replace the last 'dircache's by 'index'
      Documentation: Add definition of "evil merge" to GIT Glossary

James Bowes (1):
      Documentation: fix git-config.xml generation

James Y Knight (1):
      Fix git-svn to handle svn not reporting the md5sum of a file, and test.

Jeff King (3):
      git-am: use printf instead of echo on user-supplied strings
      More echo "$user_message" fixes.
      Documentation: robustify asciidoc GIT_VERSION replacement

Jerald Fitzjerald (1):
      decode_85(): fix missing return.

Jim Meyering (1):
      git-daemon: don't ignore pid-file write failure

Johan Herland (1):
      Fix stupid typo in lookup_tag()

Johannes Schindelin (2):
      SubmittingPatches: mention older C compiler compatibility
      git-status: respect core.excludesFile

Jonas Fonseca (2):
      branch: fix segfault when resolving an invalid HEAD
      Update bash completion to ignore some more plumbing commands

Josh Triplett (1):
      Create a new manpage for the gitignore format, and reference it elsewhere

Junio C Hamano (6):
      annotate: make it work from subdirectories.
      git-cvsserver: fix disabling service via per-method config
      name-rev: tolerate clock skew in committer dates
      git-commit: use printf '%s\n' instead of echo on user-supplied strings
      Add tests for the last two fixes.
      GIT 1.5.2.1

Kristian Høgsberg (1):
      Use =20 when rfc2047 encoding spaces.

Linus Torvalds (1):
      fix signed range problems with hex conversions

Nguyễn Thái Ngọc Duy (1):
      Makefile: Remove git-fsck and git-verify-pack from PROGRAMS

Paolo Bonzini (1):
      Document branch.autosetupmerge.

Shawn O. Pearce (12):
      git-gui: Tighten internal pattern match for lib/ directory
      Refactor fast-import branch creation from existing commit
      Fix possible coredump with fast-import --import-marks
      Hide the plumbing diff-{files,index,tree} from bash completion
      Teach bash completion about git-shortlog
      Remove a duplicate --not option in bash completion
      Update bash completion header documentation
      Teach bash completion about 'git remote update'
      Teach bash completion about recent log long options
      Update bash completion for git-config options
      Correct key bindings to Control-<foo>
      git-gui: Guess our share/git-gui/lib path at runtime if possible

Simon Hausmann (2):
      fast-import: Fix uninitialized variable
      fast-import: Fix crash when referencing already existing objects

Steffen Prohaska (1):
      user-manual: fixed typo in example

Stephan Springl (1):
      Use git-for-each-ref to check whether the origin branch exists.

Sven Verdoolaege (1):
      unpack-trees.c: verify_uptodate: remove dead code


Version v1.5.2; changes since v1.5.2-rc3:
-----------------------------------------

Alex Riesen (1):
      Allow fetching references from any namespace

Andy Parkins (2):
      Use $Id$ as the ident attribute keyword rather than $ident$ to be consistent with other VCSs
      Fix crlf attribute handling to match documentation

Andy Whitcroft (1):
      git name-rev writes beyond the end of malloc() with large generations

Eric Wong (6):
      git-svn: don't drop the username from URLs when dcommit is run
      git-svn: clean up caching of SVN::Ra functions
      git-svn: fix segfaults due to initial SVN pool being cleared
      git-svn: don't attempt to minimize URLs by default
      git-svn: avoid crashing svnserve when creating new directories
      git-svn: don't minimize-url when doing an init that tracks multiple paths

Frank Lichtenheld (5):
      cvsserver: Limit config parser to needed options
      cvsserver: Don't send mixed messages to clients
      builtin-log.c: Fix typo in comment
      Documentation: format-patch has no --mbox option
      git-am: Clean up the asciidoc documentation

J. Bruce Fields (14):
      user-manual: revise birdseye-view chapter
      glossary: expand and clarify some definitions, prune cross-references
      user-manual: move quick-start to an appendix
      Documentation: remove howto's now incorporated into manual
      user-manual: move howto/make-dist.txt into user manual
      user-manual: move howto/using-topic-branches into manual
      user-manual: add a "counting commits" example
      user-manual: introduce git
      user-manual: listing commits reachable from some refs not others
      user-manual: reorganize public git repo discussion
      tutorials: add user-manual links
      tutorial: revise index introduction
      user-manual: discourage shared repository
      user-manual: finding commits referencing given file content

Jakub Narębski (10):
      gitweb: Test if $from_id and $to_id are defined before comparison
      gitweb: Check if requested object exists
      gitweb: Fix "Use of unitialized value" warnings in empty repository
      Documentation: Split description of pretty formats of commit log
      gitweb: Add a few comments about %feature hash
      gitweb: Do not use absolute font sizes
      gitweb: Separate search regexp from search text
      gitweb: Empty patch for merge means trivial merge, not no differences
      gitweb: Fix error in git_patchset_body for deletion in merge commit
      gitweb: Fix "Use of uninitialized value" warning in git_feed

Jan Hudec (2):
      Updated documentation of hooks in git-receive-pack.
      Minor fixup to documentation of hooks in git-receive-pack.

Jeff King (3):
      git-add: allow path limiting with -u
      Documentation/git-add: clarify -u with path limiting
      format-patch: add MIME-Version header when we add content-type.

Johan Herland (3):
      Fix signedness on return value from xread()
      Ensure return value from xread() is always stored into an ssize_t
      user-manual: Add section on ignoring files

Johannes Schindelin (2):
      import-tars: Use the "Link indicator" to identify directories
      Add a birdview-on-the-source-code section to the user manual

Junio C Hamano (17):
      Minor copyediting on Release Notes for 1.5.2
      Add has_symlink_leading_path() function.
      apply: do not get confused by symlinks in the middle
      read-tree -m -u: avoid getting confused by intermediate symlinks.
      t9400: Use the repository config and nothing else.
      checkout: allow detaching to HEAD even when switching to the tip of a branch
      git-config: do not forget seeing "a.b.var" means we are out of "a.var" section.
      Link to HTML version of external doc if available
      Fix git-clone buglet for remote case.
      Prepare for 1.5.1.5 Release Notes
      gitweb: fix another use of undefined value
      GIT v1.5.1.5
      Add link to 1.5.1.5 release notes.
      Documentation/git.txt: Update links to older documentation pages.
      GIT 1.5.1.6
      git-cvsserver: exit with 1 upon "I HATE YOU"
      GIT 1.5.2

Lars Hjemli (1):
      git-archive: don't die when repository uses subprojects

Marco Costalba (1):
      Fix an unmatched comment end in arm/sha1_arm.S

Matthias Kestenholz (2):
      Documentation: Added [verse] to SYNOPSIS where necessary
      Documentation: Reformatted SYNOPSIS for several commands

Matthieu Castet (1):
      Remove stale non-static-inline prototype for tree_entry_extract()

Michael Hendricks (2):
      git-send-email: allow leading white space on mutt aliases
      Document core.excludesfile for git-add

Petr Baudis (5):
      gitweb: Normalize searchbar font size
      gitweb: Add support for grep searches
      gitweb: Allow arbitrary strings to be dug with pickaxe
      Documentation: git-rev-list's "patterns"
      gitweb: Remove redundant $searchtype setup

Quy Tonthat (2):
      RPM spec: include files in technical/ to package.
      Documentation/branch: fix small typo in -D example

René Scharfe (1):
      git-archive: convert archive entries like checkouts do

Shawn O. Pearce (1):
      git-gui: Gracefully handle bad TCL_PATH at compile time

Steffen Prohaska (4):
      tiny fix in documentation of git-clone
      git-config: test for 'do not forget "a.b.var" ends "a.var" section'.
      Optimized cvsexportcommit: calling 'cvs status' once instead of once per touched file.
      Fixed link in user-manual


Version v1.5.2-rc3; changes since v1.5.2-rc2:
---------------------------------------------

Alex Riesen (1):
      Use GIT_OBJECT_DIR for temporary files of pack-objects

Amos Waterland (1):
      wcwidth redeclaration

Frank Lichtenheld (1):
      cvsserver: Add test cases for git-cvsserver

Gerrit Pape (1):
      gitweb: choose appropriate view for file type if a= parameter missing

J. Bruce Fields (7):
      user-manual: more discussion of detached heads, fix typos
      user-manual: add section ID's
      user-manual: clean up fast-forward and dangling-objects sections
      user-manual: fix .gitconfig editing examples
      user-manual: miscellaneous editing
      user-manual: stop deprecating the manual
      user-manual: fix clone and fetch typos

Jakub Narębski (6):
      gitweb: Add parsing of raw combined diff format to parse_difftree_raw_line
      gitweb: Add combined diff support to git_difftree_body
      gitweb: Add combined diff support to git_patchset_body
      gitweb: Make it possible to use pre-parsed info in git_difftree_body
      gitweb: Show combined diff for merge commits in 'commitdiff' view
      gitweb: Show combined diff for merge commits in 'commit' view

Jari Aalto (1):
      SPECIFYING RANGES typo fix: it it => it is

Jeff King (1):
      Documentation: don't reference non-existent 'git-cvsapplycommit'

Johannes Sixt (1):
      git-gui: Call changes "Staged" and "Unstaged" in file list titles.

Junio C Hamano (10):
      diff: release blobs after generating textual diff.
      diff.c: do not use a separate "size cache".
      diff -M: release the preimage candidate blobs after rename detection.
      diff -S: release the image after looking for needle in it
      GIT v1.5.1.4
      Update documentation links to point at 1.5.1.4
      t9400: skip cvsserver test if Perl SQLite interface is unavailable
      git-clone: don't get fooled by $PWD
      .mailmap: add some aliases
      GIT v1.5.2-rc3

Matthieu Moy (2):
      Document git add -u introduced earlier.
      Added a reference to git-add in the documentation for git-update-index

Michael Hendricks (1):
      Document 'git-log --decorate'

Michael Spang (3):
      dir.c: Omit non-excluded directories with dir->show_ignored
      t7300: Basic tests for git-clean
      Fix minor documentation errors

Paul Mackerras (1):
      gitk: Allow user to choose whether to see the diff, old file, or new file

Petr Baudis (2):
      Git.pm: config_boolean() -> config_bool()
      gitweb: Do not use absolute font sizes

Quy Tonthat (2):
      Add howto files to rpm packages.
      Added new git-gui library files to rpm spec

Richard P. Curnow (2):
      Fix documentation of tag in git-fast-import.txt
      Fix documentation of tag in git-fast-import.txt

Shawn O. Pearce (32):
      git-gui: Correctly handle UTF-8 encoded commit messages
      git-gui: Allow spaces in path to 'wish'
      git-gui: Include the subject in the status bar after commit
      git-gui: Warn users before making an octopus merge
      git-gui: Correct line wrapping for too many branch message
      git-gui: Cleanup common font handling for font_ui
      git-gui: Use option database defaults to set the font
      git-gui: Refactor to use our git proc more often
      git-gui: Track our own embedded values and rebuild when they change
      Properly handle '0' filenames in import-tars
      git-gui: Refactor into multiple files to save my sanity
      git-gui: Move console procs into their own namespace
      git-gui: Allow vi keys to scroll the diff/blame regions
      git-gui: Move merge support into a namespace
      git-gui: Show all possible branches for merge
      git-gui: Include commit id/subject in merge choices
      git-gui: Use vi-like keys in merge dialog
      Remove duplicate exports from Makefile
      git-gui: Allow shift-{k,j} to select a range of branches to merge
      git-gui: Define a simple class/method system
      git-gui: Convert browser, console to "class" format
      git-gui: Don't attempt to inline array reads in methods
      git-gui: Convert blame to the "class" way of doing things
      git-gui: Use prefix if blame is run in a subdirectory
      git-gui: Smarter command line parsing for browser, blame
      git-gui: Generate blame on uncommitted working tree file
      git-gui: Cleanup minor nits in blame code
      git-gui: Format author/committer times in ISO format
      Use .git/MERGE_MSG in cherry-pick/revert
      git-gui: Paperbag fix blame in subdirectory
      git gui 0.7.0
      Correct error message in revert/cherry-pick

Theodore Ts'o (2):
      Add pack.depth option to git-pack-objects.
      Increase pack.depth default to 50


Version v1.5.2-rc2; changes since v1.5.2-rc1:
---------------------------------------------

Alex Riesen (2):
      Small correction in reading of commit headers
      Handle return code of parse_commit in revision machinery

Alexandre Julliard (1):
      http-fetch: Disable use of curl multi support for libcurl < 7.16.

Arjen Laarhoven (1):
      Document 'opendiff' value in config.txt and git-mergetool.txt

Bryan Larsen (2):
      Allow PERL_PATH="/usr/bin/env perl"
      posix compatibility for t4200

Carl Worth (1):
      Mention version 1.5.1 in tutorial and user-manual

Dana L. How (1):
      Create pack-write.c for common pack writing code

Daniel Barkalow (1):
      Make xstrndup common

Frank Lichtenheld (1):
      cvsserver: Handle re-added files correctly

Jakub Narębski (1):
      diff format documentation: describe raw combined diff format

James Bowes (1):
      Documentation: fix typo in git-remote.txt

Johannes Schindelin (1):
      Teach import-tars about GNU tar's @LongLink extension.

Jonas Fonseca (1):
      git-tag(1): -v option is a subcommand; fix code block

Junio C Hamano (6):
      blame: use .mailmap unconditionally
      diff.c: fix "size cache" handling.
      blame: Notice a wholesale incorporation of an existing file.
      blame: -C -C -C
      Add test for blame corner cases.
      GIT v1.5.2-rc2

Karl Wiberg (2):
      Fix markup in git-svn man page
      Add --no-rebase option to git-svn dcommit

Linus Torvalds (1):
      Fix --boundary output

Martin Koegler (1):
      Fix compilation of test-delta

Shawn O. Pearce (3):
      Reuse fixup_pack_header_footer in index-pack
      Don't use seq in tests, not everyone has it
      Improve request-pull to handle non-rebased branches

İsmail Dönmez (1):
      gitweb: use decode_utf8 directly


Version v1.5.2-rc1; changes since v1.5.2-rc0:
---------------------------------------------

Adam Roben (5):
      Remove usernames from all commit messages, not just when using svmprops
      git-svn: Don't rely on $_ after making a function call
      git-svn: Ignore usernames in URLs in find_by_url
      git-svn: Added 'find-rev' command
      git-svn: Add 'find-rev' command

Alex Riesen (8):
      Fix handle leak in write_tree
      Avoid excessive rewrites in merge-recursive
      Add a test for merging changed and rename-changed branches
      Ignore merged status of the file-level merge
      Use strlcpy instead of strncpy in mailmap.c
      Fix read_mailmap to handle a caller uninterested in repo abbreviation
      Remove pointless calls to access(2) when checking for .mailmap
      Include mailmap.h in mailmap.c to catch mailmap interface changes

Andrew Ruder (8):
      Removing -n option from git-diff-files documentation
      Document additional options for git-fetch
      Update git-fmt-merge documentation
      Update git-grep documentation
      Update -L documentation for git-blame/git-annotate
      Update git-http-push documentation
      Update git-local-fetch documentation
      Update git-http-fetch documentation

Andy Parkins (3):
      post-receive-email example hook: fastforward should have been fast_forward
      post-receive-email example hook: detect rewind-only updates and output sensible message
      post-receive-email example hook: sed command for getting description was wrong

Brian Gernhardt (2):
      Reverse the order of -b and --track in the man page.
      Ignore all man sections as they are generated files.

Gerrit Pape (1):
      Documentation/git-reset.txt: suggest git commit --amend in example.

Jari Aalto (3):
      Clarify SubmittingPatches Checklist
      git.7: Mention preformatted html doc location
      send-email documentation: clarify --smtp-server

Johannes Schindelin (3):
      dir.c(common_prefix): Fix two bugs
      t4201: Do not display weird characters on the terminal
      import-tars: be nice to wrong directory modes

Josh Triplett (5):
      Add clean.requireForce option, and add -f option to git-clean to override it
      Fix typo in git-am: s/Was is/Was it/
      Create a sysconfdir variable, and use it for ETC_GITCONFIG
      Add missing reference to GIT_COMMITTER_DATE in git-commit-tree documentation
      Fall back to $EMAIL for missing GIT_AUTHOR_EMAIL and GIT_COMMITTER_EMAIL

Julian Phillips (1):
      http.c: Fix problem with repeated calls of http_init

Junio C Hamano (25):
      Move index-related variables into a structure.
      Make read-cache.c "the_index" free.
      Document "diff=driver" attribute
      t5302: avoid using tail -c
      t6030: grab commit object name as we go
      Build RPM with ETC_GITCONFIG=/etc/gitconfig
      Diff between two blobs should take mode changes into account now.
      t/test-lib.sh: Protect ourselves from common misconfiguration that exports CDPATH to the environment
      gitattributes documentation: clarify overriding
      applymbox & quiltimport: typofix.
      Add 'ident' conversion.
      Add 'filter' attribute and external filter driver definition.
      Add --date={local,relative,default}
      Start preparing for 1.5.1.3
      Do not barf on too long action description
      Update .mailmap with "Michael"
      Fix import-tars fix.
      blame -s: suppress author name and time.
      Split out mailmap handling out of shortlog
      Apply mailmap in git-blame output.
      Make macros to prevent double-inclusion in headers consistent.
      Make sure test-genrandom and test-chmtime are builtas part of the main build.
      Fix symlink handling in git-svn, related to PerlIO
      GIT v1.5.1.3
      GIT v1.5.2-rc1

Luiz Fernando N. Capitulino (5):
      remove_subtree(): Use strerror() when possible
      entry.c: Use const qualifier for 'struct checkout' parameters
      read_cache_from(): small simplification
      core-tutorial: minor fixes
      init_buffer(): Kill buf pointer

Martin Koegler (5):
      Add S_IFINVALID mode
      add get_sha1_with_mode
      add add_object_array_with_mode
      store mode in rev_list, if <tree>:<filename> syntax is used
      use mode of the tree in git-diff, if <tree>:<file> syntax is used

Michele Ballabio (1):
      git shortlog documentation: add long options and fix a typo

Nicolas Pitre (1):
      add file checkout progress

OGAWA Hirofumi (1):
      git-fetch: Fix "argument list too long"

Robin H. Johnson (10):
      Document --dry-run parameter to send-email.
      Prefix Dry- to the message status to denote dry-runs.
      Debugging cleanup improvements
      Change the scope of the $cc variable as it is not needed outside of send_message.
      Perform correct quoting of recipient names.
      Validate @recipients before using it for sendmail and Net::SMTP.
      Ensure clean addresses are always used with Net::SMTP
      Allow users to optionally specify their envelope sender.
      Document --dry-run and envelope-sender for git-send-email.
      Sanitize @to recipients.

Sami Farin (1):
      fast-import: size_t vs ssize_t

Shawn O. Pearce (4):
      Don't repack existing objects in fast-import
      Actually handle some-low memory conditions
      Don't allow empty pathnames in fast-import
      Catch empty pathnames in trees during fsck

Uwe Kleine-König (1):
      fix importing of subversion tars


Version v1.5.2-rc0; changes since v1.5.1.6:
-------------------------------------------

Alex Riesen (7):
      Fix passing of TCLTK_PATH to git-gui
      Fix t4201: accidental arithmetic expansion
      Fix permissions on test scripts
      Tests for core subproject support
      Simplify calling of CR/LF conversion routines
      Fix a typo in crlf conversion code
      Fix crash in t0020 (crlf conversion)

Alexandre Julliard (1):
      git.el: Add a commit description to the reflog.

Andrew Ruder (1):
      Add policy on user-interface changes

Andy Parkins (1):
      Show binary file size change in diff --stat

Aneesh Kumar K.V (1):
      gitview: annotation support

Brian Gernhardt (2):
      Remove unused WITH_OWN_SUBPROCESS_PY from RPM spec
      Remove case-sensitive file in t3030-merge-recursive.

Christian Couder (4):
      Bisect: teach "bisect start" to optionally use one bad and many good revs.
      Documentation: bisect: "start" accepts one bad and many good commits
      Bisect: simplify "bisect start" logging.
      Bisect: rename "t/t6030-bisect-run.sh" to "t/t6030-bisect-porcelain.sh".

Eric Wong (1):
      git-svn: bail out on incorrect command-line options

Eygene Ryabinkin (11):
      Add the WITH_P4IMPORT knob to the Makefile.
      Added git-p4 package to the list of git RPMs.
      Added correct Python path to the RPM specfile.
      NO_TCLTK
      Add --with-tcltk and --without-tcltk to configure.
      Rewrite Tcl/Tk interpreter path for the GUI tools.
      Eliminate checks of user-specified Tcl/Tk interpreter.
      Allow wish interpreter to be defined with TCLTK_PATH
      Teach git-gui to use the user-defined UI font everywhere.
      Improve look-and-feel of the git-gui tool.
      Do not break git-gui messages into multiple lines.

Fernando J. Pereda (1):
      Makefile: Add '+' to QUIET_SUBDIR0 to fix parallel make.

Frank Lichtenheld (16):
      cvsserver: Introduce new state variable 'method'
      cvsserver: Handle three part keys in git config correctly
      cvsserver: Allow to override the configuration per access method
      cvsserver: Make the database backend configurable
      cvsserver: Abort if connect to database fails
      Documentation: Replace @@GIT_VERSION@@ in documentation
      Documentation: Add version information to man pages
      cvsserver: Use DBI->table_info instead of DBI->tables
      cvsserver: Corrections to the database backend configuration
      cvsserver: Add asciidoc documentation for new database backend configuration
      gitweb: Allow forks with project list file
      gitweb: Allow configuring the default projects order and add order 'none'
      cvsserver: Allow to "add" a removed file
      cvsserver: Reword documentation on necessity of write access
      cvsserver: Document the GIT branches -> CVS modules mapping more prominently
      config.txt: Add gitcvs.db* variables

Jakub Narębski (2):
      gitweb: Whitespace cleanup - tabs are for indent, spaces are for align (3)
      gitweb: Quote hash keys, and do not use barewords keys

James Bowes (1):
      Document git-check-attr

Jim Meyering (1):
      sscanf/strtoul: parse integers robustly

Johannes Schindelin (1):
      Use print_wrapped_text() in shortlog

Julian Phillips (1):
      refs.c: add a function to sort a ref list, rather then sorting on add

Junio C Hamano (83):
      git-fetch: add --quiet
      t6002: minor spelling fix.
      git-rev-list: add --bisect-vars option.
      git-rev-list --bisect: optimization
      t6004: add a bit more path optimization test.
      rev-list --bisect: Fix "halfway" optimization.
      make the previous optimization work also on path-limited rev-list --bisect
      Documentation: unbreak user-manual.
      Optional Tck/Tk: ignore generated files.
      checkout: allow detaching to HEAD even when switching to the tip of a branch
      _GIT_INDEX_OUTPUT: allow plumbing to output to an alternative index file.
      git-read-tree --index-output=<file>
      add_cache_entry(): removal of file foo does not conflict with foo/bar
      unpack_trees.c: pass unpack_trees_options structure to keep_entry() as well.
      unpack-trees: get rid of *indpos parameter.
      Fix read-tree --prefix=dir/.
      Fix twoway_merge that passed d/f conflict marker to merged_entry().
      Fix switching to a branch with D/F when current branch has file D.
      RPM spec: include git-p4 in the list of all packages.
      Fix bogus error message from merge-recursive error path
      Propagate cache error internal to refresh_cache() via parameter.
      Rename internal function "add_file_to_cache" in builtin-update-index.c
      Rename static variable write_index to update_index in builtin-apply.c
      Rename add_file_to_index() to add_file_to_cache()
      git-bisect: modernization
      t6030: add a bit more tests to git-bisect
      git-bisect: allow bisecting with only one bad commit.
      git-push reports the URL after failing.
      git-push to multiple locations does not stop at the first failure
      A new merge stragety 'subtree'.
      Start 1.5.2 cycle by prepareing RelNotes for it.
      shortlog -w: make wrap-line behaviour optional.
      t1000: fix case table.
      Treat D/F conflict entry more carefully in unpack-trees.c::threeway_merge()
      merge-recursive: do not barf on "to be removed" entries.
      merge-recursive: handle D/F conflict case more carefully.
      t3030: merge-recursive backend test.
      git-fetch--tool pick-rref
      git-fetch: use fetch--tool pick-rref to avoid local fetch from alternate
      Add %m to '--pretty=format:'
      Refactor patch-id filtering out of git-cherry and git-format-patch.
      git-log --cherry-pick A...B
      Documentation: --cherry-pick
      Fix git {log,show,...} --pretty=email
      Add basic infrastructure to assign attributes to paths
      Define 'crlf' attribute.
      Teach 'diff' about 'diff' attribute.
      Fix 'crlf' attribute semantics.
      Fix 'diff' attribute semantics.
      Makefile: add patch-ids.h back in.
      attribute macro support
      Define a built-in attribute macro "binary".
      Change attribute negation marker from '!' to '-'.
      send-email: do not leave an empty CC: line if no cc is present.
      Make sure quickfetch is not fooled with a previous, incomplete fetch.
      Allow more than true/false to attributes.
      merge-recursive: separate out xdl_merge() interface.
      git-gui: Honor TCLTK_PATH if supplied
      Allow specifying specialized merge-backend per path.
      Add a demonstration/test of customized merge.
      Update draft release notes for 1.5.2 with accumulated changes.
      Custom low-level merge driver support.
      Allow the default low-level merge driver to be configured.
      Custom low-level merge driver: change the configuration scheme.
      Allow low-level driver to specify different behaviour during internal merge.
      Fix funny types used in attribute value representation
      Counto-fix in merge-recursive
      Simplify code to find recursive merge driver.
      Documentation: support manual section (5) - file formats.
      Update 'crlf' attribute semantics.
      Document gitattributes(5)
      git-add -u: match the index with working tree.
      Fix bogus linked-list management for user defined merge drivers.
      convert.c: restructure the attribute checking part.
      lockfile: record the primary process.
      Update documentation links to point at v1.5.1.2
      Documentation/Makefile: fix section (5) installation
      Update draft release notes for v1.5.2
      pack-objects: quickfix for permission modes.
      Fix 'quickfix' on pack-objects.
      Update tests not to assume that generated packfiles are writable.
      pack-objects: make generated packfile read-only
      Support 'diff=pgm' attribute

Linus Torvalds (24):
      Optimize directory listing with pathspec limiter.
      diff-lib: use ce_mode_from_stat() rather than messing with modes manually
      Avoid overflowing name buffer in deep directory structures
      Add 'resolve_gitlink_ref()' helper function
      Add "S_IFDIRLNK" file mode infrastructure for git links
      Teach "fsck" not to follow subproject links
      Teach core object handling functions about gitlinks
      Fix thinko in subproject entry sorting
      Teach directory traversal about subprojects
      Teach git-update-index about gitlinks
      Don't show gitlink directories when we want "other" files
      Teach git list-objects logic not to follow gitlinks
      Teach "git-read-tree -u" to check out submodules as a directory
      Fix gitlink index entry filesystem matching
      Teach git list-objects logic to not follow gitlinks
      Teach "git-read-tree -u" to check out submodules as a directory
      Fix some "git ls-files -o" fallout from gitlinks
      Expose subprojects as special files to "git diff" machinery
      Add a generic "object decorator" interface, and make object refs use it
      Add support for "commit name decorations" to log family of commands
      Use proper object allocators for unknown object nodes too
      Clean up object creation to use more common code
      Fix working directory errno handling when unlinking a directory
      Fix a copy-n-paste bug in the object decorator code.

Luiz Fernando N. Capitulino (2):
      ident.c: Use const qualifier for 'struct passwd' parameters
      ident.c: Use size_t (instead of int) to store sizes

Martin Koegler (1):
      gitweb: Show "no difference" message for empty diff

Michael S. Tsirkin (1):
      Display the subject of the commit just made.

Nicolas Pitre (32):
      clean up and optimize nth_packed_object_sha1() usage
      get rid of num_packed_objects()
      make overflow test on delta base offset work regardless of variable size
      add overflow tests on pack offset variables
      compute a CRC32 for each object as stored in a pack
      compute object CRC32 with index-pack
      pack-objects: learn about pack index version 2
      index-pack: learn about pack index version 2
      sha1_file.c: learn about index version 2
      show-index.c: learn about index v2
      pack-redundant.c: learn about index v2
      allow forcing index v2 and 64-bit offset treshold
      validate reused pack data with CRC when possible
      simple random data generator for tests
      use test-genrandom in tests instead of /dev/urandom
      tests for various pack index features
      clean up add_object_entry()
      pack-objects: optimize preferred base handling a bit
      pack-objects: equal objects in size should delta against newer objects
      pack-objects: rework check_delta_limit usage
      pack-objects: clean up list sorting
      pack-objects: get rid of reuse_cached_pack
      pack-objects: get rid of create_final_object_list()
      pack-objects: make in_pack_header_size a variable of its own
      add get_size_from_delta()
      pack-objects: better check_object() performances
      pack-objects: remove obsolete comments
      document --index-version for index-pack and pack-objects
      common progress display support
      make progress "title" part of the common progress interface
      provide a facility for "delayed" progress reporting
      delay progress display when checking out files

René Scharfe (1):
      git-archive: make tar the default format

Robin H. Johnson (2):
      Add custom subject prefix support to format-patch (take 3)
      Add testcase for format-patch --subject-prefix (take 3)

Shawn O. Pearce (8):
      Always bind the return key to the default button
      Fix lost-found to show commits only referenced by reflogs
      Don't yap about merge-subtree during make
      git-gui: Display the directory basename in the title
      Revert "Allow wish interpreter to be defined with TCLTK_PATH"
      Contribute a fairly paranoid update hook
      Kill the useless progress meter in merge-recursive
      Cleanup variables in cat-file

Steven Grimm (3):
      Add --quiet option to suppress output of "rm" commands for removed files.
      git-rm: Trivial fix for a comment typo.
      Add --ignore-unmatch option to exit with zero status when no files are removed.

Xavier Maillard (2):
      git-blame.el: separate git-blame-mode to ease maintenance
      git-blame.el: pick a set of random colors for each git-blame turn


Version v1.5.1.6; changes since v1.5.1.5:
-----------------------------------------

Eric Wong (2):
      git-svn: avoid crashing svnserve when creating new directories
      git-svn: don't minimize-url when doing an init that tracks multiple paths

J. Bruce Fields (4):
      tutorials: add user-manual links
      tutorial: revise index introduction
      user-manual: discourage shared repository
      user-manual: finding commits referencing given file content

Johan Herland (1):
      user-manual: Add section on ignoring files

Junio C Hamano (1):
      GIT 1.5.1.6

Matthias Kestenholz (2):
      Documentation: Added [verse] to SYNOPSIS where necessary
      Documentation: Reformatted SYNOPSIS for several commands


Version v1.5.1.5; changes since v1.5.1.4:
-----------------------------------------

Alex Riesen (1):
      Allow fetching references from any namespace

Andy Whitcroft (1):
      git name-rev writes beyond the end of malloc() with large generations

Eric Wong (4):
      git-svn: don't drop the username from URLs when dcommit is run
      git-svn: clean up caching of SVN::Ra functions
      git-svn: fix segfaults due to initial SVN pool being cleared
      git-svn: don't attempt to minimize URLs by default

Frank Lichtenheld (3):
      builtin-log.c: Fix typo in comment
      Documentation: format-patch has no --mbox option
      git-am: Clean up the asciidoc documentation

J. Bruce Fields (10):
      user-manual: revise birdseye-view chapter
      glossary: expand and clarify some definitions, prune cross-references
      user-manual: move quick-start to an appendix
      Documentation: remove howto's now incorporated into manual
      user-manual: move howto/make-dist.txt into user manual
      user-manual: move howto/using-topic-branches into manual
      user-manual: add a "counting commits" example
      user-manual: introduce git
      user-manual: listing commits reachable from some refs not others
      user-manual: reorganize public git repo discussion

Jakub Narębski (1):
      gitweb: Add a few comments about %feature hash

Jan Hudec (1):
      Updated documentation of hooks in git-receive-pack.

Jari Aalto (1):
      SPECIFYING RANGES typo fix: it it => it is

Jeff King (1):
      format-patch: add MIME-Version header when we add content-type.

Johannes Schindelin (2):
      import-tars: Use the "Link indicator" to identify directories
      Add a birdview-on-the-source-code section to the user manual

Junio C Hamano (7):
      git-clone: don't get fooled by $PWD
      .mailmap: add some aliases
      checkout: allow detaching to HEAD even when switching to the tip of a branch
      git-config: do not forget seeing "a.b.var" means we are out of "a.var" section.
      Fix git-clone buglet for remote case.
      Prepare for 1.5.1.5 Release Notes
      GIT v1.5.1.5

Marco Costalba (1):
      Fix an unmatched comment end in arm/sha1_arm.S

Matthieu Castet (1):
      Remove stale non-static-inline prototype for tree_entry_extract()

Michael Hendricks (2):
      git-send-email: allow leading white space on mutt aliases
      Document core.excludesfile for git-add

Petr Baudis (1):
      Documentation: git-rev-list's "patterns"

Quy Tonthat (2):
      RPM spec: include files in technical/ to package.
      Documentation/branch: fix small typo in -D example

Richard P. Curnow (2):
      Fix documentation of tag in git-fast-import.txt
      Fix documentation of tag in git-fast-import.txt

Shawn O. Pearce (1):
      Properly handle '0' filenames in import-tars

Steffen Prohaska (3):
      tiny fix in documentation of git-clone
      git-config: test for 'do not forget "a.b.var" ends "a.var" section'.
      Fixed link in user-manual


Version v1.5.1.4; changes since v1.5.1.3:
-----------------------------------------

Alex Riesen (1):
      Small correction in reading of commit headers

Alexandre Julliard (1):
      http-fetch: Disable use of curl multi support for libcurl < 7.16.

Amos Waterland (1):
      wcwidth redeclaration

Arjen Laarhoven (1):
      Document 'opendiff' value in config.txt and git-mergetool.txt

Bryan Larsen (2):
      Allow PERL_PATH="/usr/bin/env perl"
      posix compatibility for t4200

Carl Worth (1):
      Mention version 1.5.1 in tutorial and user-manual

Daniel Barkalow (1):
      Make xstrndup common

Frank Lichtenheld (1):
      cvsserver: Handle re-added files correctly

J. Bruce Fields (7):
      user-manual: more discussion of detached heads, fix typos
      user-manual: add section ID's
      user-manual: clean up fast-forward and dangling-objects sections
      user-manual: fix .gitconfig editing examples
      user-manual: miscellaneous editing
      user-manual: stop deprecating the manual
      user-manual: fix clone and fetch typos

Jakub Narębski (1):
      diff format documentation: describe raw combined diff format

James Bowes (1):
      Documentation: fix typo in git-remote.txt

Jeff King (1):
      Documentation: don't reference non-existent 'git-cvsapplycommit'

Johannes Schindelin (1):
      Teach import-tars about GNU tar's @LongLink extension.

Junio C Hamano (5):
      diff.c: fix "size cache" handling.
      blame: Notice a wholesale incorporation of an existing file.
      blame: -C -C -C
      Add test for blame corner cases.
      GIT v1.5.1.4

Karl Wiberg (2):
      Fix markup in git-svn man page
      Add --no-rebase option to git-svn dcommit

Linus Torvalds (1):
      Fix --boundary output

Martin Koegler (1):
      Fix compilation of test-delta

Paul Mackerras (1):
      gitk: Allow user to choose whether to see the diff, old file, or new file

Quy Tonthat (1):
      Add howto files to rpm packages.

Shawn O. Pearce (1):
      git-gui: Allow spaces in path to 'wish'

İsmail Dönmez (1):
      gitweb: use decode_utf8 directly


Version v1.5.1.3; changes since v1.5.1.2:
-----------------------------------------

Adam Roben (5):
      Remove usernames from all commit messages, not just when using svmprops
      git-svn: Don't rely on $_ after making a function call
      git-svn: Ignore usernames in URLs in find_by_url
      git-svn: Added 'find-rev' command
      git-svn: Add 'find-rev' command

Alex Riesen (1):
      Fix handle leak in write_tree

Andrew Ruder (8):
      Removing -n option from git-diff-files documentation
      Document additional options for git-fetch
      Update git-fmt-merge documentation
      Update git-grep documentation
      Update -L documentation for git-blame/git-annotate
      Update git-http-push documentation
      Update git-local-fetch documentation
      Update git-http-fetch documentation

Brian Gernhardt (2):
      Reverse the order of -b and --track in the man page.
      Ignore all man sections as they are generated files.

Gerrit Pape (1):
      Documentation/git-reset.txt: suggest git commit --amend in example.

Jari Aalto (3):
      Clarify SubmittingPatches Checklist
      git.7: Mention preformatted html doc location
      send-email documentation: clarify --smtp-server

Johannes Schindelin (2):
      dir.c(common_prefix): Fix two bugs
      import-tars: be nice to wrong directory modes

Josh Triplett (3):
      Fix typo in git-am: s/Was is/Was it/
      Create a sysconfdir variable, and use it for ETC_GITCONFIG
      Add missing reference to GIT_COMMITTER_DATE in git-commit-tree documentation

Julian Phillips (1):
      http.c: Fix problem with repeated calls of http_init

Junio C Hamano (8):
      Build RPM with ETC_GITCONFIG=/etc/gitconfig
      applymbox & quiltimport: typofix.
      Start preparing for 1.5.1.3
      Do not barf on too long action description
      Update .mailmap with "Michael"
      Fix import-tars fix.
      Fix symlink handling in git-svn, related to PerlIO
      GIT v1.5.1.3

Michele Ballabio (1):
      git shortlog documentation: add long options and fix a typo

Robin H. Johnson (10):
      Document --dry-run parameter to send-email.
      Prefix Dry- to the message status to denote dry-runs.
      Debugging cleanup improvements
      Change the scope of the $cc variable as it is not needed outside of send_message.
      Perform correct quoting of recipient names.
      Validate @recipients before using it for sendmail and Net::SMTP.
      Ensure clean addresses are always used with Net::SMTP
      Allow users to optionally specify their envelope sender.
      Document --dry-run and envelope-sender for git-send-email.
      Sanitize @to recipients.

Shawn O. Pearce (3):
      Actually handle some-low memory conditions
      Don't allow empty pathnames in fast-import
      Catch empty pathnames in trees during fsck


Version v1.5.1.2; changes since v1.5.1.1:
-----------------------------------------

Alex Riesen (3):
      Use rev-list --reverse in git-rebase.sh
      Document -g (--walk-reflogs) option of git-log
      Fix overwriting of files when applying contextually independent diffs

Andrew Ruder (8):
      Update git-am documentation
      Update git-applymbox documentation
      Update git-apply documentation
      Update git-annotate/git-blame documentation
      Update git-archive documentation
      Update git-cherry-pick documentation
      Fix unmatched emphasis tag in git-tutorial
      Update git-config documentation

Andy Whitcroft (1):
      fix up strtoul_ui error handling

Carlos Rica (1):
      Use const qualifier for 'sha1' parameter in delete_ref function

Eric Wong (4):
      git-svn: respect lower bound of -r/--revision when following parent
      git-svn: quiet some warnings when run only with --version/--help
      git-svn: don't allow globs to match regular files
      perl: install private Error.pm if the site version is older than our own

Eygene Ryabinkin (2):
      Teach gitk to use the user-defined UI font everywhere.
      Improve look-and-feel of the gitk tool.

Frank Lichtenheld (5):
      config.txt: Document gitcvs.allbinary
      config.txt: Document core.autocrlf
      config.txt: Change pserver to server in description of gitcvs.*
      config.txt: Fix grammatical error in description of http.noEPSV
      git-shortlog: Fix two formatting errors in asciidoc documentation

Gerrit Pape (2):
      variable $projectdesc needs to be set before checking against unchanged default.
      Have sample update hook not refuse deleting a branch through push.

J. Bruce Fields (7):
      Documentation: minor edits of git-lost-found manpage
      Documentation: clarify git-checkout -f, minor editing
      Documentation: clarify track/no-track option.
      user-manual: fix discussion of default clone
      user-manual: detached HEAD
      user-manual: start revising "internals" chapter
      user-manual: use detached head when rewriting history

Jim Meyering (1):
      sscanf/strtoul: parse integers robustly

Junio C Hamano (4):
      Do not default to --no-index when given two directories.
      Start preparing for 1.5.1.2
      git-clone: fix dumb protocol transport to clone from pack-pruned ref
      GIT 1.5.1.2

Linus Torvalds (1):
      git-quiltimport complaining yet still working

Matthias Lederhofer (1):
      handle_options in git wrapper miscounts the options it handled.

Michael Spang (1):
      git-blame: Fix overrun in fake_working_tree_commit()

Sam Vilain (1):
      git-tar-tree: complete deprecation conversion message

Shawn O. Pearce (1):
      git-gui: Brown paper bag fix division by 0 in blame


Version v1.5.1.1; changes since v1.5.1:
---------------------------------------

Arjen Laarhoven (4):
      usermanual.txt: some capitalization nits
      t3200-branch.sh: small language nit
      t5300-pack-object.sh: portability issue using /usr/bin/stat
      Makefile: iconv() on Darwin has the old interface

Brian Gernhardt (3):
      Fix t4200-rerere for white-space from "wc -l"
      Document --left-right option to rev-list.
      Distinguish branches by more than case in tests.

Dana L. How (1):
      Fix lseek(2) calls with args 2 and 3 swapped

Eric Wong (3):
      git-svn: bail out on incorrect command-line options
      git-svn: dcommit/rebase confused by patches with git-svn-id: lines
      git-svn: fix log command to avoid infinite loop on long commit messages

Frank Lichtenheld (7):
      cvsimport: sync usage lines with existing options
      cvsimport: Improve documentation of CVSROOT and CVS module determination
      cvsimport: Improve usage error reporting
      cvsimport: Reorder options in documentation for better understanding
      cvsimport: Improve formating consistency
      cvsserver: small corrections to asciidoc documentation
      cvsserver: Fix handling of diappeared files on update

Geert Bosch (1):
      Fix renaming branch without config file

Gerrit Pape (1):
      rename contrib/hooks/post-receieve-email to contrib/hooks/post-receive-email.

Jakub Narębski (1):
      gitweb: Fix bug in "blobdiff" view for split (e.g. file to symlink) patches

Jim Meyering (1):
      (encode_85, decode_85): Mark source buffer pointer as "const".

Julian Phillips (1):
      Documentation: show-ref: document --exclude-existing

Junio C Hamano (7):
      rerere: make sorting really stable.
      Fix dependency of common-cmds.h
      Documentation: tighten dependency for git.{html,txt}
      Prepare for 1.5.1.1
      Add Documentation/cmd-list.made to .gitignore
      fsck: do not complain on detached HEAD.
      GIT 1.5.1.1

Lars Hjemli (2):
      rename_ref(): only print a warning when config-file update fails
      Make builtin-branch.c handle the git config file

René Scharfe (1):
      Revert "builtin-archive: use RUN_SETUP"

Shawn O. Pearce (1):
      Honor -p<n> when applying git diffs

Tomash Brechko (1):
      cvsexportcommit -p : fix the usage of git-apply -C.

Ville Skyttä (1):
      DESTDIR support for git/contrib/emacs

YOSHIFUJI Hideaki (1):
      Avoid composing too long "References" header.


Version v1.5.1; changes since v1.5.1-rc3:
-----------------------------------------

Alex Riesen (1):
      Keep rename/rename conflicts of intermediate merges while doing recursive merge

Andy Parkins (1):
      Reimplement emailing part of hooks--update in contrib/hooks/post-receive-email

Christian Couder (1):
      Bisect: Improve error message in "bisect_next_check".

Don Zickus (1):
      git-mailinfo fixes for patch munging

Eric Wong (2):
      git-svn: avoid respewing similar error messages for missing paths
      git-svn: fail on rebase if we are unable to find a ref to rebase against

Francis Daly (1):
      git-quiltimport /bin/sh-ism fix

Frank Lichtenheld (1):
      cvsserver: Don't lie about binary mode in asciidoc documentation

Gerrit Pape (2):
      Documentation/git-svnimport.txt: fix typo.
      Documentation/git-rev-parse.txt: fix example in SPECIFYING RANGES.

H. Peter Anvin (1):
      git-upload-pack: make sure we close unused pipe ends

Jakub Narębski (2):
      gitweb: Support comparing blobs (files) with different names
      Documentation: A few minor fixes to Git User's Manual

Julian Phillips (1):
      contrib/workdir: add a simple script to create a working directory

Junio C Hamano (6):
      Update draft release notes for 1.5.1
      Do not bother documenting fetch--tool
      Hopefully final update to the draft Release Notes, preparing for 1.5.1
      rerere should not repeat the earlier hunks in later ones
      GIT 1.5.0.7
      GIT 1.5.1

Nicolas Pitre (1):
      Plug memory leak in index-pack collision checking codepath.

Theodore Ts'o (12):
      Fix minor formatting issue in man page for git-mergetool
      mergetool: Replace use of "echo -n" with printf(1) to be more portable
      mergetool: Don't error out in the merge case where the local file is deleted
      mergetool: portability fix: don't assume true is in /bin
      mergetool: portability fix: don't use reserved word function
      mergetool: factor out common code
      mergetool: Remove spurious error message if merge.tool config option not set
      mergetool: Fix abort command when resolving symlinks and deleted files
      mergetool: Add support for Apple Mac OS X's opendiff command
      mergetool: Make git-rm quiet when resolving a deleted file conflict
      mergetool: Clean up description of files and prompts for merge resolutions
      Rename warn() to warning() to fix symbol conflicts on BSD and Mac OS


Version v1.5.1-rc3; changes since v1.5.1-rc2:
---------------------------------------------

Alexandre Julliard (1):
      git.el: Display some information about the HEAD commit.

Christian Couder (2):
      Bisect: Use "git-show-ref --verify" when reseting.
      Bisect: add checks at the beginning of "git bisect run".

Gerrit Pape (3):
      Makefile: remove test-chmtime program in target clean.
      http-fetch: don't use double-slash as directory separator in URLs
      http-fetch: remove path_len from struct alt_base, it was computed but never used

H. Peter Anvin (1):
      git-upload-pack: make sure we close unused pipe ends

Jakub Narębski (2):
      gitweb: Add example of config file and how to generate projects list to gitweb/INSTALL
      gitweb: Cleanup and uniquify die_error calls

James Bowes (2):
      read-tree: use xcalloc
      use xrealloc in help.c

Jeff King (6):
      git-rm: don't remove newly added file without -f
      --pretty=format: fix broken %ct and %at interpolation
      Add some basic tests of rev-list --pretty=format
      Fix "--pretty=format:" encoding item
      t/t6006: add tests for a slightly more complex commit messages
      commit: fix pretty-printing of messages with "\nencoding "

Jim Meyering (1):
      sha1_file.c (write_sha1_from_fd): Detect close failure.

Johannes Schindelin (1):
      t4118: be nice to non-GNU sed

Junio C Hamano (7):
      Document git-log --first-parent
      sha1_file.c (write_sha1_file): Detect close failure
      git-commit: "read-tree -m HEAD" is not the right way to read-tree quickly
      Fix "--pretty=format:" for parent related items.
      GIT 1.5.0.6
      Update main git.html page to point at 1.5.0.6 documentation
      GIT 1.5.1-rc3

Linus Torvalds (1):
      Fix "getaddrinfo()" buglet


Version v1.5.1-rc2; changes since v1.5.1-rc1:
---------------------------------------------

Alex Riesen (2):
      Document --quiet option to git-diff
      Use diff* with --exit-code in git-am, git-rebase and git-merge-ours

Andy Parkins (2):
      update-hook: abort early if the project description is unset
      update-hook: remove e-mail sending hook.

Brandon Casey (1):
      prefer "git COMMAND" over "git-COMMAND" in gitk

Chris Wright (1):
      make git clone -q suppress the noise with http fetch

Christian Couder (6):
      Bisect: implement "git bisect run <cmd>..." to automatically bisect.
      Documentation: bisect: reformat some paragraphs.
      Documentation: bisect: reword one paragraph.
      Documentation: bisect: reformat more paragraphs.
      Documentation: bisect: add some titles to some paragraphs.
      Documentation: bisect: make a comment fit better in the man page.

Eric Wong (2):
      gitk: bind <F5> key to Update (reread commits)
      git-svn: fix rel_path() when not connected to the repository root

J. Bruce Fields (5):
      user-manual: run xsltproc without --nonet option
      user-manual: Use def_ instead of ref_ for glossary references.
      glossary: stop generating automatically
      glossary: clean up cross-references
      user-manual: introduce "branch" and "branch head" differently

Jakub Narębski (4):
      gitweb: Fix "next" link in commit view
      gitweb: Don't escape attributes in CGI.pm HTML methods
      gitweb: Fix not marking signoff lines in "log" view
      gitweb: Add some installation notes in gitweb/INSTALL

James Bowes (2):
      Replace remaining instances of strdup with xstrdup.
      use xmalloc in git.c and help.c

Jim Meyering (1):
      user-manual.txt: fix a tiny typo.

Johannes Schindelin (5):
      xdiff/xutils.c(xdl_hash_record): factor out whitespace handling
      Add a HOWTO for setting up a standalone git daemon
      Provide some technical documentation for shallow clones
      t4118: be nice to non-GNU sed
      git-revert: Revert revert message to old behaviour

Johannes Sixt (1):
      Teach git-remote to list pushed branches.

Junio C Hamano (15):
      git-log --first-parent: show only the first parent log
      blame: micro-optimize cmp_suspect()
      blame: cmp_suspect is not "cmp" anymore.
      Teach tree_entry_interesting() that the tree entries are sorted.
      tree-diff: avoid strncmp()
      tree_entry_interesting(): allow it to say "everything is interesting"
      git-rebase: make 'rebase HEAD branch' work as expected.
      git-apply: Do not free the wrong buffer when we convert the data for writeout
      checkout: report where the new HEAD is upon detaching HEAD
      git-bisect: typofix
      git-bisect.sh: properly dq $GIT_DIR
      Fix path-limited "rev-list --bisect" termination condition.
      git-am documentation: describe what is taken from where.
      Update README to point at a few key periodical messages to the list
      GIT 1.5.1-rc2

Li Yang (1):
      gitweb: Change to use explicitly function call cgi->escapHTML()

Linus Torvalds (6):
      Fix loose object uncompression check.
      Don't ever return corrupt objects from "parse_object()"
      Be more careful about zlib return values
      Remove "pathlen" from "struct name_entry"
      Initialize tree descriptors with a helper function rather than by hand.
      Switch over tree descriptors to contain a pre-parsed entry

Michael S. Tsirkin (2):
      fix typo in git-am manpage
      git-merge: Put FETCH_HEAD data in merge commit message

Nicolas Pitre (10):
      clean up the delta base cache size a bit
      use a LRU eviction policy for the delta base cache
      don't ever allow SHA1 collisions to exist by fetching a pack
      index-pack: use hash_sha1_file()
      index-pack: more validation checks and cleanups
      improve checkout message when asking for same branch
      minor git-prune optimization
      update HEAD reflog when branch pointed to by HEAD is directly modified
      make it more obvious that temporary files are temporary files
      write_sha1_from_fd() should make new objects read-only

Peter Eriksen (1):
      Documentation/pack-format.txt: Clear up description of types.

Santi Béjar (1):
      git-fetch: Fix single_force in append_fetch_head

Shawn O. Pearce (1):
      contrib/continuous: a continuous integration build manager

Uwe Kleine-König (1):
      Bisect: convert revs given to good and bad to commits


Version v1.5.1-rc1; changes since v1.5.0.7:
-------------------------------------------

Alex Riesen (7):
      disable t4016-diff-quote.sh on some filesystems
      git-gui: Support of "make -s" in: do not output anything of the build itself
      More build output cleaning up
      Support of "make -s": do not output anything of the build itself
      Allow "make -w" generate its usual output
      Allow git-diff exit with codes similar to diff(1)
      Add tests for --quiet option of diff programs

Alexandre Julliard (1):
      git.el: Add support for commit hooks.

Andy Parkins (7):
      Only show log entries for new revisions in hooks--update
      Have git-cvsserver call hooks/update before really altering the ref
      The "table-of-contents" in the update hook script should match the body
      cvsserver: Remove trailing "\n" from commithash in checkin function
      cvsserver: Make always-binary mode a config file option
      Sample update hook: typofix and modernization to use "git log"
      update-hook: fix incorrect use of git-describe and sed for finding previous tag

Aneesh Kumar K.V (1):
      Documentation: document remote.<name>.tagopt

Avi Kivity (1):
      git-send-email: configurable bcc and chain-reply-to

Don Zickus (3):
      builtin-mailinfo.c infrastrcture changes
      restrict the patch filtering
      Add a couple more test cases to the suite.

Eric Wong (119):
      git-svn: move authentication prompts into their own namespace
      git-svn: cleanup: move process_rm around
      git-svn: cleanup: put SVN workarounds into their own namespace
      git-svn: cleanup: avoid re-use()ing Git.pm in sub-packages
      git-svn: add Git::SVN module (to avoid global variables)
      git-svn: convert 'init' to use Git::SVN
      git-svn: convert multi-init over to using Git::SVN
      git-svn: make multi-init capable of reusing the Ra connection
      git-svn: add a test for show-ignore
      git-svn: convert show-ignore over to Git::SVN
      git-svn: moved the 'log' command into its own namespace
      git-svn: port the 'rebuild' command to use Git::SVN objects
      git-svn: do not let Git.pm warn if we prematurely close pipes
      git-svn: convert the 'commit-diff' command to Git::SVN
      git-svn: get rid of Memoize for now...
      git-svn: fetch/multi-fetch converted over to Git::SVN module
      git-svn: switch dcommit to using Git::SVN code
      git-svn: convert 'set-tree' command to use Git::SVN
      git-svn: remove graft-branches command
      git-svn: add support for metadata in .git/config
      git-svn: fix a regression in dcommit that caused empty log messages
      git-svn: reuse open SVN::Ra connections by URL
      git-svn: enable --minimize to simplify the config and connections
      git-svn: fix --follow-parent to work with Git::SVN
      git-svn: --follow-parent works with svn-remotes multiple branches
      git-svn: disallow ambigious local refspecs
      git-svn: allow --follow-parent on deleted directories
      git-svn: get rid of additional fetch-arguments
      git-svn: allow 'init' to work outside of tests
      git-svn: better error reporting if --follow-parent fails
      git-svn: 'init' attempts to connect to the repository root if possible
      git-svn: --follow-parent now works on sub-directories of larger branches
      git-svn: track writes writes to the index in fetch
      git-svn: add an odd test case that seems to cause segfaults over HTTP
      git-svn: avoid tracking change-less revisions
      git-svn: correctly track revisions made to deleted branches
      git-svn: fix segfaults from accessing svn_log_changed_path_t
      git-svn: fix committing to subdirectories, add tests
      git-svn: avoid an extra svn_ra connection during commits
      git-svn: simplify usage of the SVN::Git::Editor interface
      git-svn: cleanup remove unused function
      git-svn: allow multi-fetch to fetch things chronologically
      git-svn: correctly track diff-less copies with do_switch
      git-svn: correctly handle do_{switch,update} in deep directories
      git-svn: stop using path names as refnames with --follow-parent
      git-svn: cleanup: move editor-specific variables into the editor namespace
      git-svn: just use Digest::MD5 instead of requiring it
      git-svn: reinstate the default SVN error handler after using get_log
      git-svn: don't rely on do_switch + reparenting with svn(+ssh)://
      git-svn: fetch tracks initial change with --follow-parent
      git-svn: remove the 'rebuild' command and make the functionality automatic
      git-svn: fix several fetch bugs related to repeated invocations
      git-svn: reinstate --no-metadata, add --svn-remote=, variable cleanups
      git-svn: gracefully handle --follow-parent failures
      git-svn: make (multi-)fetch safer but slower
      git-svn: avoid a huge memory spike with high-numbered revisions
      git-svn: re-enable repacking flags
      git-svn: do our best to ensure that our ref and rev_db are consistent
      git-svn: avoid redundant get_log calls between invocations
      git-svn: use sys* IO functions for reading rev_db
      git-svn: don't write to the config file from --follow-parent
      git-svn: save paths to tags/branches with for future reuse
      git-svn: migrations default to [svn-remote "git-svn"]
      git-svn: get rid of revisions_eq check for --follow-parent
      git-svn: avoid extra get_log calls when refspecs are added for fetching
      git-svn: just name the default svn-remote "svn" instead of "git-svn"
      git-svn: prepare multi-init for wildcard support
      git-svn: reintroduce using a single get_log() to fetch
      git-svn: run get_log() on a sub-directory if possible
      git-svn: implement auto-discovery of branches/tags
      git-svn: --follow-parent tracks multi-parent paths
      git-svn: remove check_path calls before calling do_update
      git-svn: remove some noisy debugging messages
      git-svn: enable follow-parent functionality by default
      git-svn: fix buggy regular expression usage in several places
      git-svn: correctly handle the -q flag in SVN::Git::Fetcher
      git-svn: correctly handle globs with a right-hand-side path component
      git-svn: remove optimized commit stuff for set-tree
      git-svn: add support for SVN::Mirror/svk using revprops for metadata
      git-svn: add support for per-[svn-remote "..."] options
      git-svn: use private $GIT_DIR/svn/config file more
      git-svn: extra safety for noMetadata and useSvmProps users
      git-svn: use separate, per-repository .rev_db files
      git-svn: write the highest maxRex out for branches and tags
      git-svn: handle multi-init without --trunk, UseSvmProps fixes
      git-svn: make dcommit usable for glob users
      git-svn: include merges when calling rev-list for decommit
      git-svn: usability fixes for the 'git svn log' command
      t910*: s/repo-config/config/g; poke around possible race conditions
      git-svn: hopefully make 'fetch' more user-friendly
      git-svn: allow 'init' to act as multi-init
      git-svn: brown paper bag fixes
      git-svn: simplify the (multi-)init methods of fetching
      git-svn: allow --log-window-size to be specified, default to 100
      git-svn: remember to check for clean indices on globbed refs, too
      git-svn: error checking for invalid [svn-remote "..."] sections
      git-svn: allow dcommit for those who only fetch from SVM with useSvmProps
      git-svn: documentation updates for new functionality
      git-svn: add support for --stat in the log command
      git-svn: checkout files on new fetches
      git-svn: add a 'rebase' command
      git-svn: fix some issues for people migrating from older versions
      git-svn: hide the private git-svn 'config' file as '.metadata'
      git-svn: add 'clone' command, an alias for init + fetch
      git-svn: allow overriding of the SVN repo root in metadata
      git-svn: add support for using svnsync properties
      git-svn: fix useSvmProps, hopefully for the last time
      git-svn: add test for useSvnsyncProps
      git-svn: documentation updates
      git-svn: allow metadata options to be specified with 'init' and 'clone'
      git-svn: give show-ignore HEAD smarts, like dcommit and log
      git-svn: ensure we're at the top-level and can access $GIT_DIR
      git-svn: fix clone when a target directory has been specified
      git-svn: fix reconnections to different paths of svn:// repositories
      git-svn: fix some potential bugs with --follow-parent
      Add test-chmtime: a utility to change mtime on files
      Update tests to use test-chmtime
      git-svn: fix show-ignore when not connected to the repository root
      git-svn: add -l/--local command to "git svn rebase"

Frank Lichtenheld (3):
      cvsserver: Use Merged response instead of Update-existing for merged files
      cvsserver: Be more chatty
      cvsserver: further improve messages on commit and status

Fredrik Kuivinen (1):
      New autoconf test for iconv

J. Bruce Fields (1):
      Make git-send-email aware of Cc: lines.

Jakub Narębski (1):
      gitweb: Don't escape attributes in CGI.pm HTML methods

James Bowes (3):
      add: Support specifying an excludes file with a configuration variable
      Make gc a builtin.
      mergetool: Add support for vimdiff.

Jeff King (1):
      New fast-import test case for valid tree sorting

Jim Meyering (2):
      I like the idea of the new ':/<oneline prefix>' notation, and gave it a try, but all I could get was a segfault.  It was dereferencing a NULL commit list.  Fix below.  With it, this example now works:
      git-grep: don't use sscanf

Johannes Schindelin (42):
      Teach revision machinery about --reverse
      teach diff machinery about --ignore-space-at-eol
      name-rev: introduce the --refs=<pattern> option
      diff --check: use colour
      apply: fix memory leak in prefix_one()
      name-rev: avoid "^0" when unneeded
      rev-list --max-age, --max-count: support --boundary
      fetch & clone: do not output progress when not on a tty
      config: read system-wide defaults from /etc/gitconfig
      git grep: use pager
      Teach diff -B about colours
      apply: make --verbose a little more useful
      Teach git-diff-files the new option `--no-index`
      pretty-formats: add 'format:<string>'
      Make tests independent of global config files
      Add git-bundle: move objects and references by archive
      git-bundle: assorted fixes
      git-bundle: avoid fork() in verify_bundle()
      git-bundle: fix 'create --all'
      git-bundle: record commit summary in the prerequisite data
      Fixup no-progress for fetch & clone
      object name: introduce ':/<oneline prefix>' notation
      Fix typo: do not show name1 when name2 fails
      diff --no-index: also imitate the exit status of diff(1)
      Actually make print_wrapped_text() useful
      show_date(): rename the "relative" parameter to "mode"
      diff: make more cases implicit --no-index
      print_wrapped_text: fix output for negative indent
      Make git-revert & git-cherry-pick a builtin
      diff: support reading a file from stdin via "-"
      diff --no-index: support /dev/null as filename
      Get rid of the dependency to GNU diff in the tests
      cherry-pick: Suggest a better method to retain authorship
      format-patch: add --inline option and make --attach a true attachment
      bundle: fix wrong check of read_header()'s return value & add tests
      git-bundle: avoid packing objects which are in the prerequisites
      git-bundle: Make thin packs
      git-bundle: handle thin packs in subcommand "unbundle"
      git-bundle: die if a given ref is not included in bundle
      git-bundle: prevent overwriting existing bundles
      git-bundle: only die if pack would be empty, warn if ref is skipped
      Do not output "GEN " when generating perl.mak

Johannes Sixt (3):
      Add core.symlinks to mark filesystems that do not support symbolic links.
      Handle core.symlinks=false case in merge-recursive.
      Tell multi-parent diff about core.symlinks.

Julian Phillips (5):
      Allow fetch--tool to read from stdin
      Use stdin reflist passing in parse-remote
      Use stdin reflist passing in git-fetch.sh
      git-branch: improve abbreviation of sha1s in verbose mode
      git-branch: document new --no-abbrev option

Junio C Hamano (80):
      git-diff/git-apply: make diff output a bit friendlier to GNU patch (part 2)
      Make merge-base a built-in.
      Allow in_merge_bases() to take more than one reference commits.
      Remove git-resolve.
      Remove git-diff-stages.
      Add link to v1.5.0 documentation.
      blame: --show-stats for easier optimization work.
      git-fetch: split fetch_main into fetch_dumb and fetch_native
      git-fetch--tool: start rewriting parts of git-fetch in C.
      git-fetch: move more code into C.
      git-fetch: rewrite another shell loop in C
      git-fetch: rewrite expand_ref_wildcard in C
      Document --ignore-space-at-eol option.
      Add RelNotes 1.5.1
      Point top-level RelNotes link at 1.5.1 release notes being prepared.
      t0020: add test for auto-crlf
      remotes.not-origin.tagopt
      Teach 'git apply' to look at $GIT_DIR/config
      Teach core.autocrlf to 'git apply'
      Update draft release notes for 1.5.1
      Teach 'git apply' to look at $HOME/.gitconfig even outside of a repository
      git-apply: do not lose cwd when run from a subdirectory.
      git-apply: require -p<n> when working in a subdirectory.
      Link 1.5.0.1 documentation from the main page.
      Add prefixcmp()
      Mechanical conversion to use prefixcmp()
      prefixcmp(): fix-up mechanical conversion.
      prefixcmp(): fix-up leftover strncmp().
      t4119: add test for traditional patch and different p_value
      Fix botched "leak fix"
      git-apply: notice "diff --git" patch again
      git-apply: guess correct -p<n> value for non-git patches.
      t4119: test autocomputing -p<n> for traditional diff input.
      git-status: do not be totally useless in a read-only repository.
      update-index: do not die too early in a read-only repository.
      run_diff_{files,index}(): update calling convention.
      .mailmap maintenance after pulling from git-svn
      bundle: reword missing prerequisite error message
      git-fetch--tool takes flags before the subcommand.
      diff --cached: give more sensible error message when HEAD is yet to be created.
      Documentation: link in 1.5.0.2 material to the top documentation page.
      builtin-fetch--tool: adjust to updated sha1_object_info().
      Make 'cvs ci' lockless in git-cvsserver by using git-update-ref
      fetch--tool: fix uninitialized buffer when reading from stdin
      builtin-fetch--tool: make sure not to overstep ls-remote-result buffer.
      index_fd(): use enum object_type instead of type name string.
      index_fd(): pass optional path parameter as hint for blob conversion
      index_fd(): convert blob only if it is a regular file.
      Add recent changes to draft 1.5.1 release notes.
      git-fetch: retire update-local-ref which is not used anymore.
      builtin-fetch--tool: fix reflog notes.
      diff-ni: allow running from a subdirectory.
      diff-ni: fix the diff with standard input
      .gitignore: add git-fetch--tool
      format-patch --attach: not folding some long headers.
      Post 1.5.0.3 cleanup
      fsck: fix broken loose object check.
      unpack_sha1_file(): detect corrupt loose object files.
      fsck: exit with non-zero status upon errors
      git-bundle: fix pack generation.
      revision walker: Fix --boundary when limited
      revision traversal: retire BOUNDARY_SHOW
      git-bundle: various fixups
      revision traversal: SHOWN means shown
      git-bundle: make verify a bit more chatty.
      revision --boundary: fix stupid typo
      revision --boundary: fix uncounted case.
      Fix broken create_branch() in builtin-branch.
      prepare_packed_git(): sort packs by age and localness.
      Documentation: add git-mergetool to the command list.
      shortlog: prompt when reading from terminal by mistake
      Remove unused diffcore_std_no_resolve
      diff --quiet
      Teach --quiet to diff backends.
      revision.c: explain what tree_difference does
      try-to-simplify-commit: use diff-tree --quiet machinery.
      applymbox: brown paper bag fix.
      Update main git.html page to point at 1.5.0.5 documentation
      Fix merge-index
      GIT 1.5.1-rc1

Li Yang (1):
      gitweb: Change to use explicitly function call cgi->escapHTML()

Linus Torvalds (8):
      Lazy man's auto-CRLF
      Make AutoCRLF ternary variable.
      Re-fix get_sha1_oneline()
      Make trivial wrapper functions around delta base generation and freeing
      Implement a simple delta_base cache
      Avoid unnecessary strlen() calls
      Trivial cleanup of track_tree_refs()
      Set up for better tree diff optimizations

Martin Waitz (1):
      Support for large files on 32bit systems.

Michael Coleman (2):
      git-send-email: abort/usage on bad option
      fix various doc typos

Nicolas Pitre (12):
      sha1_file.c: cleanup hdr usage
      sha1_file.c: cleanup "offset" usage
      sha1_file.c: don't ignore an error condition in sha1_loose_object_info()
      formalize typename(), and add its reverse type_from_string()
      convert object type handling from a string to a number
      get rid of lookup_object_type()
      make sure enum object_type is signed
      local-fetch.c: some error printing cleanup
      fix t5300-pack-object.sh
      add test for OFS_DELTA objects
      clean up pack index handling a bit
      Reuse cached data out of delta base cache.

Paolo Bonzini (5):
      git-config: document --rename-section, provide --remove-section
      git-archimport: allow remapping branch names
      git-commit: add a --interactive option
      git-branch, git-checkout: autosetup for remote branch tracking
      git-fetch, git-branch: Support local --track via a special remote '.'

Pavel Roskin (1):
      git-remote: support remotes with a dot in the name

Sam Vilain (3):
      git-svn: make test for SVK mirror path import
      git-svn: don't consider SVN URL usernames significant when comparing
      git-svn: document --username

Santi Béjar (2):
      t/t5515-fetch-merge-logic.sh: Added tests for the merge login in git-fetch
      t/t5515-fetch-merge-logic.sh: Add two more tests

Sergey Vlasov (1):
      Documentation/git-svn.txt: Fix formatting errors

Shawn O. Pearce (43):
      Cleanup check_valid in commit-tree.
      cherry-pick: Bug fix 'cherry picked from' message.
      Make 'make' quieter while building git
      Make 'make' quiet by default
      Display the null SHA-1 as the base for an OBJ_OFS_DELTA.
      Fix mmap leak caused by reading bad indexes.
      Don't build external_grep if its not used
      General const correctness fixes
      Use uint32_t for all packed object counts.
      Use uint32_t for pack-objects counters.
      Use off_t when we really mean a file offset.
      Use off_t in pack-objects/fast-import when we mean an offset
      Cast 64 bit off_t to 32 bit size_t
      Preallocate memory earlier in fast-import
      Move post-update hook to after all other activity
      Don't run post-update hook unless a ref changed
      Refactor run_update_hook to be more useful
      Refactor handling of error_string in receive-pack
      Teach receive-pack to run pre-receive/post-receive hooks
      Use atomic updates to the fast-import mark file
      Allow fast-import frontends to reload the marks table
      Switch to run_command_v_opt in revert
      Remove unused run_command variants
      Start defining a more sophisticated run_command
      Split run_command into two halves (start/finish)
      Teach run_command how to setup a stdin pipe
      Refactor run_command error handling in receive-pack
      Split back out update_hook handling in receive-pack
      Change {pre,post}-receive hooks to use stdin
      Remove unnecessary casts from fast-import
      Simplify closing two fds at once in run-command.c
      Fix t5510-fetch's use of sed
      Teach run-command about stdout redirection
      Teach run-command to redirect stdout to /dev/null
      Replace fork_with_pipe in bundle with run_command
      Correct new compiler warnings in builtin-revert
      Use RUN_GIT_CMD to run push backends
      Use run_command for proxy connections
      Use run_command within merge-index
      Use run_command within receive-pack to invoke index-pack
      Use run_command within send-pack
      use xstrdup please
      Limit the size of the new delta_base_cache

Simon 'corecode' Schubert (1):
      Allow passing of an alternative CVSROOT via -d.

Theodore Ts'o (5):
      Teach git-remote to update existing remotes by fetching from them
      Add config_boolean() method to the Git perl module
      Allow git-remote to update named groups of remotes
      Add git-mergetool to run an appropriate merge conflict resolution program
      mergetool: print an appropriate warning if merge.tool is unknown

Xavier Maillard (1):
      contrib/emacs: Use non-interactive function to byte-compile files


Version v1.5.0.7; changes since v1.5.0.6:
-----------------------------------------

Gerrit Pape (2):
      Documentation/git-svnimport.txt: fix typo.
      Documentation/git-rev-parse.txt: fix example in SPECIFYING RANGES.

H. Peter Anvin (1):
      git-upload-pack: make sure we close unused pipe ends

Junio C Hamano (2):
      rerere should not repeat the earlier hunks in later ones
      GIT 1.5.0.7


Version v1.5.0.6; changes since v1.5.0.5:
-----------------------------------------

J. Bruce Fields (5):
      user-manual: run xsltproc without --nonet option
      user-manual: Use def_ instead of ref_ for glossary references.
      glossary: stop generating automatically
      glossary: clean up cross-references
      user-manual: introduce "branch" and "branch head" differently

Jakub Narębski (4):
      gitweb: Fix "next" link in commit view
      gitweb: Don't escape attributes in CGI.pm HTML methods
      gitweb: Fix not marking signoff lines in "log" view
      gitweb: Add some installation notes in gitweb/INSTALL

Jeff King (1):
      commit: fix pretty-printing of messages with "\nencoding "

Jim Meyering (1):
      user-manual.txt: fix a tiny typo.

Johannes Schindelin (1):
      t4118: be nice to non-GNU sed

Junio C Hamano (2):
      git-commit: "read-tree -m HEAD" is not the right way to read-tree quickly
      GIT 1.5.0.6

Li Yang (1):
      gitweb: Change to use explicitly function call cgi->escapHTML()

Michael S. Tsirkin (1):
      fix typo in git-am manpage

Peter Eriksen (1):
      Documentation/pack-format.txt: Clear up description of types.


Version v1.5.0.5; changes since v1.5.0.4:
-----------------------------------------

Junio C Hamano (1):
      GIT 1.5.0.5

Santi Béjar (1):
      git-merge: finish when git-read-tree fails


Version v1.5.0.4; changes since v1.5.0.3:
-----------------------------------------

Alexandre Julliard (2):
      git.el: Avoid appending a signoff line that is already present.
      git.el: Retrieve commit log information from .dotest directory.

Avi Kivity (1):
      git-send-email: Document configuration options

Brian Gernhardt (1):
      Fix diff-options references in git-diff and git-format-patch

Frank Lichtenheld (1):
      cvsserver: asciidoc formatting changes

J. Bruce Fields (7):
      glossary: fix overoptimistic automatic linking of defined terms
      user-manual: fix inconsistent example
      user-manual: fix inconsistent use of pull and merge
      user-manual: fix missing colon in git-show example
      user-manual: fix rendering of history diagrams
      user-manual: install user manual stylesheet with other web documents
      git-merge: warn when -m provided on a fast forward

Jeff King (2):
      Documentation: s/seperator/separator/
      fast-import: grow tree storage more aggressively

Johannes Schindelin (2):
      Begin SubmittingPatches with a check list
      make t8001 work on Mac OS X again

Junio C Hamano (3):
      git-commit: cd to top before showing the final stat
      git-checkout: fix "eval" used for merge labelling.
      GIT 1.5.0.4

Matthias Kestenholz (1):
      Adjust reflog filemode in shared repository

Matthias Lederhofer (1):
      setup_git_directory_gently: fix off-by-one error

Shawn O. Pearce (13):
      git-gui: Relocate the menu/transport menu code.
      git-gui: Add Reset to the Branch menu.
      git-gui: Don't create empty (same tree as parent) commits.
      git-gui: Remove unnecessary /dev/null redirection.
      fast-import: Avoid infinite loop after reset
      fast-import: Fail if a non-existant commit is used for merge
      git-gui: Make 'make' quieter by default
      Catch write_ref_sha1 failure in receive-pack
      git-gui: Allow committing empty merges
      git-gui: Revert "Don't modify CREDITS-FILE if it hasn't changed." This reverts commit 92446aba47b0e0db28f7b858ea387efcca30ab44.
      git-gui: Revert "git-gui: Display all authors of git-gui." This reverts commit 871f4c97ad7e021d1a0a98c80c5da77fcf70e4af.
      git-gui: Allow 'git gui version' outside of a repository
      Don't package the git-gui credits file anymore

Theodore Ts'o (1):
      Add definition of <commit-ish> to the main git man page.

Yann Dirson (1):
      Clarify doc for git-config --unset-all.


Version v1.5.0.3; changes since v1.5.0.2:
-----------------------------------------

Alexandre Julliard (1):
      git.el: Set the default commit coding system from the repository config.

Aneesh Kumar K.V (1):
      blameview: Fix the browse behavior in blameview

Christian Schlotter (1):
      Documentation: Correct minor typo in git-add documentation.

Eygene Ryabinkin (2):
      http-push.c::lock_remote(): validate all remote refs.
      Another memory overrun in http-push.c

Gerrit Pape (2):
      git-cvsexportcommit: don't cleanup .msg if not yet committed to cvs.
      Fix quoting in update hook template

J. Bruce Fields (6):
      Documentation: mention module option to git-cvsimport
      user-manual: reset to ORIG_HEAD not HEAD to undo merge
      user-manual: ensure generated manual references stylesheet
      user-manual: insert earlier of mention content-addressable architecture
      user-manual: how to replace commits older than most recent
      user-manual: more detailed merge discussion

Jim Meyering (1):
      diff --cc: integer overflow given a 2GB-or-larger file

Johannes Schindelin (3):
      fetch.o depends on the headers, too.
      builtin-archive: use RUN_SETUP
      Document the config variable format.suffix

Junio C Hamano (5):
      git-apply: do not fix whitespaces on context lines.
      Documentation: git-remote add [-t <branch>] [-m <branch>] [-f] name url
      Start preparing Release Notes for 1.5.0.3
      git-merge: fail correctly when we cannot fast forward.
      GIT 1.5.0.3

Linus Torvalds (2):
      mailinfo: do not get confused with logical lines that are too long.
      git-show: Reject native ref

Matthias Kestenholz (1):
      Fix git-gc usage note

Michael Coleman (2):
      Fix minor typos/grammar in user-manual.txt
      builtin-fmt-merge-msg: fix bugs in --file option

Michael Poole (1):
      Correct ordering in git-cvsimport's option documentation

Paolo Bonzini (1):
      git-archimport: support empty summaries, put summary on a single line.

Ramsay Jones (5):
      Fix a "label defined but unreferenced" warning.
      Fix an "implicit function definition" warning.
      Fix some "comparison is always true/false" warnings.
      Fix a "pointer type missmatch" warning.
      Unset NO_C99_FORMAT on Cygwin.

Sergey Vlasov (3):
      Documentation/build-docdep.perl: Fix dependencies for included asciidoc files
      Documentation/git-quiltimport.txt: Fix labeled list formatting
      Documentation/git-send-email.txt: Fix labeled list formatting

Shawn O. Pearce (1):
      index-pack: Loop over pread until data loading is complete.

Theodore Ts'o (1):
      Fix git-show man page formatting in the EXAMPLES section

Uwe Kleine-König (1):
      Include config.mak in doc/Makefile

Yasushi SHOJI (1):
      glossary: Add definitions for dangling and unreachable objects


Version v1.5.0.2; changes since v1.5.0.1:
-----------------------------------------

Christian Schlotter (1):
      git-clone: Sync documentation to usage note.

Dmitry V. Levin (1):
      git-show-ref --verify: Fail if called without a reference

Fredrik Kuivinen (1):
      Fix 'git commit -a' in a newly initialized repository

Jason Riedy (3):
      Add a compat/strtoumax.c for Solaris 8.
      Obey NO_C99_FORMAT in fast-import.c.
      Check for PRIuMAX rather than NO_C99_FORMAT in fast-import.c.

Johannes Schindelin (1):
      git-diff: fix combined diff

Junio C Hamano (11):
      Reword git-am 3-way fallback failure message.
      diff-patch: Avoid emitting double-slashes in textual patch.
      Don't modify CREDITS-FILE if it hasn't changed.
      rerere: do not skip two conflicted paths next to each other.
      rerere: do not deal with symlinks.
      Add Release Notes to prepare for 1.5.0.2
      merge-index: fix longstanding bug in merging symlinks
      merge-recursive: fix longstanding bug in merging symlinks
      diff --cc: fix display of symlink conflicts during a merge.
      Documentation: describe "-f/-t/-m" options to "git-remote add"
      GIT 1.5.0.2

Martin Koegler (1):
      git-gui: Create new branches from a tag.

Michael Loeffler (1):
      Use gunzip -c over gzcat in import-tars example.

Pavel Roskin (1):
      git-remote: support remotes with a dot in the name

Robin Rosenberg (1):
      Limit filename for format-patch

Roland Dreier (1):
      Allow arbitrary number of arguments to git-pack-objects

Santi Béjar (1):
      core.legacyheaders: Use the description used in RelNotes-1.5.0

Shawn O. Pearce (16):
      git-gui: Refactor 'exec git subcmd' idiom.
      git-gui: Basic version check to ensure git 1.5.0 or later is used.
      git-gui: Permit merging tags into the current branch.
      git-gui: More consistently display the application name.
      git-gui: Print version on the console.
      git-gui: Prefer version file over git-describe.
      git-gui: Expose the browser as a subcommand.
      git-gui: Correct crash when saving options in blame mode.
      git-gui: Use mixed path for docs on Cygwin.
      git-gui: Display all authors of git-gui.
      git-gui: Change summary of git-gui.
      git-gui: Include browser in our usage message.
      git-gui: Remove TODO list.
      git-gui: Don't crash in citool mode on initial commit.
      Document the new core.bare configuration option.
      Include git-gui credits file in dist.


Version v1.5.0.1; changes since v1.5.0:
---------------------------------------

Alexandre Julliard (2):
      git-daemon: Avoid leaking the listening sockets into child processes.
      sha1_file.c: Round the mmap offset to half the window size.

Fredrik Kuivinen (2):
      Read the config in rev-list
      Documentation/i18n.txt: it is i18n.commitencoding not core.commitencoding

Junio C Hamano (15):
      Documentation: Drop full-stop from git-fast-import title.
      cmd-list: add git-remote
      Makefile: update check-docs target
      Clarify two backward incompatible repository options.
      Still updating 1.5.0 release notes.
      Add RelNotes 1.5.0.1
      Make sure packedgitwindowsize is multiple of (pagesize * 2)
      Make gitk work reasonably well on Cygwin.
      gitk: Use show-ref instead of ls-remote
      GIT-VERSION-FILE: check ./version first.
      pretend-sha1: grave bugfix.
      git-merge: minor fix for no_trivial_merge_strategies.
      Do not take mode bits from index after type change.
      Update draft release notes for 1.5.0.1
      GIT 1.5.0.1

Mark Levedahl (3):
      gitk - remove trailing whitespace from a few lines.
      Make gitk save and restore the user set window position.
      Make gitk save and restore window pane position on Linux and Cygwin.

Nicolas Pitre (1):
      Minor corrections to release notes

Paul Mackerras (1):
      Change git repo-config to git config

Shawn O. Pearce (2):
      Attempt to improve git-rebase lead-in description.
      Convert update-index references in docs to add.

Tommi Kyntola (1):
      git-blame: prevent argument parsing segfault


Version v1.5.0; changes since v1.5.0-rc4:
-----------------------------------------

Alexandre Julliard (3):
      diff.c: Reuse the pprint_rename function for diff --summary output.
      diff.c: Properly quote file names in diff --summary output.
      diff.c: More logical file name quoting for renames in diffstat.

Andy Parkins (2):
      git-gui: fix typo in GIT-VERSION-GEN, "/dev/null" not "/devnull"
      Fix potential command line overflow in hooks--update

Aneesh Kumar K.V (1):
      blameview: Move the commit info to a pane below the blame window.

David Kågedal (5):
      Handle uncommitted changes and cache descriptions
      git-blame.el: improve color handling
      git-blame.el: blame unsaved changes
      git-blame.el: Doc fixes and cleanup
      git-blame.el: Autoupdate while editing

Dotan Barak (1):
      Make it easier to override path to asciidoc command

Eric Wong (1):
      git-svn: correctly handle boolean options via git-config

Jakub Narębski (2):
      git-blame: Add Emacs Lisp file headers and GNU GPL boilerplate
      git-blame: Change installation instructions

James Bowes (1):
      Read cvsimport options from repo-config

Johannes Schindelin (5):
      for_each_reflog_ent: be forgiving about missing message
      log --reflog: honour --relative-date
      format-patch -n: make sorting easier by padding number
      log --reflog: use dwim_log
      git-gc: run pack-refs by default unless the repo is bare

Junio C Hamano (17):
      create_symref(): create leading directories as needed.
      reflog: handle $name => remotes/%s/HEAD mapping consistently for logs
      Documentation/git-pull: describe default behaviour and config interactions
      git-fetch: document automatic tag following.
      wt_status_prepare(): clean up structure initialization.
      diff_flush_name(): take struct diff_options parameter.
      t4016: test quoting funny pathnames in diff output
      Documentation: git-rebase -C<n>
      Teach git-am to pass -p option down to git-apply
      Add discussion section to git-tag documentation.
      Add RPM target for git-gui
      Do not forget to pack objects reachable from HEAD reflog.
      for-each-reflog: not having $GIT_DIR/logs directory is not an error.
      "git-fetch --tags $URL" should not overwrite existing tags
      Documentation: Moving out of detached HEAD does not warn anymore.
      Add release notes to the distribution.
      GIT 1.5.0

Linus Torvalds (2):
      git reflog show
      Mark places that need blob munging later for CRLF conversion.

Mark Levedahl (2):
      Make gitk save and restore the user set window position.
      Make gitk save and restore window pane position on Linux and Cygwin.

Matthias Lederhofer (1):
      git merge documentation: -m is optional

Michael Loeffler (1):
      import-tars: brown paper bag fix for file mode.

Michael S. Tsirkin (3):
      Update git-log and git-show documentation
      add -C[NUM] to git-am
      Document that git-am can read standard input.

Michael Spang (1):
      Work around Subversion race in git-svn tests.

Mukund (1):
      Fixed some typos in git-repack docs

Nicolas Pitre (2):
      remove mailmap.linux
      Update RPM core package description

Pavel Roskin (1):
      Clarify that git-update-server-info should be run for every git-push

René Scharfe (1):
      Avoid ugly linewrap in git help

Shawn O. Pearce (313):
      git-gui: Initial revision.
      git-gui: Additional early feature development.
      git-gui: Fixed UI layout problems on Windows.
      git-gui: Corrected keyboard bindings on Windows, improved state management.
      git-gui: Verify we should actually perform a commit when asked to do so.
      git-gui: Finished commit implementation.
      git-gui: Implemented amended commits.
      git-gui: Misc. nit type of bug fixes.
      git-gui: Started construction of fetch and push operations.
      git-gui: Worked around environment variable problems on Windows.
      git-gui: Reorganized startup procedure to ensure gitdir is right.
      git-gui: Fix menu item accelerator display on Mac OS X.
      git-gui: Correctly handle CR vs. LF within the console of fetch.
      git-gui: Check for fetch or push command failure and denote it.
      git-gui: Don't complain if no .git/remotes exist.
      git-gui: Added current TODO list.
      git-gui: Last minute idea about fetch shortcuts.
      git-gui: Automatically reopen any console closed by the user.
      git-gui: Cache all repo-config data in an array.
      git-gui: Added support for pulling from default branch of a remote.
      git-gui: Updated TODO list now that pull is starting to work.
      git-gui: Corrected diff-index/diff-files protocol parsing errors.
      git-gui: Performance improvements for large file sets.
      git-gui: More performance improvements to rescan logic.
      git-gui: Flip commit message buffer and diff area.
      git-gui: Added repack database menu option, to invoke git repack.
      git-gui: Allow the user to disable update-index --refresh during rescan.
      git-gui: Grab the index lock while running pull.
      git-gui: Pluralize timestamps within the options menu.
      git-gui: Disable pull menu items when the index is locked.
      git-gui: Don't let the user pull into an uncommitted working directory.
      git-gui: Update TODO list.
      git-gui: Bug fix for bad variable reference in display_file.
      git-gui: Changed term 'check-in' to 'include'.
      git-gui: Show only the abbreviated SHA1 after committing.
      git-gui: Cache the GIT_COMMITTER_IDENT value on first sign-off.
      git-gui: Save window geometry to .git/config during exit.
      git-gui: Change accelerator for "Include All" to M1-I.
      git-gui: Created edit menu and basic editing bindings.
      git-gui: Clear undo/redo stack when loading a message file from disk.
      git-gui: Updated TODO list now that geometry is stored.
      git-gui: Always indicate the file in the diff viewer.
      git-gui: Correctly handle files containing LF in their name.
      git-gui: Efficiently update the UI after committing.
      git-gui: Use catch rather than array names to check file.
      git-gui: Rename difffont/mainfont variables.
      git-gui: Use native tk_messageBox for errors.
      git-gui: Cleaned up error message formatting.
      git-gui: Simplified format of geometry configuration.
      git-gui: Misc. formatting cleanups.
      git-gui: Misc. bug fixes for mouse click crashes.
      git-gui: Added context menus for consoles and commit message buffer.
      git-gui: Fix mouse cursor behavior when in widgets.
      git-gui: Teach sign off to be more intelligent.
      git-gui: Corrected font used for options menu items.
      git-gui: Honor system font and let user configure fonts.
      git-gui: Allow the user to change the diff viewer font size.
      git-gui: Refresh a file if it has an empty diff.
      git-gui: Make use of the Tk font system rather than faking it.
      git-gui: Improve right click context menu binding on all platforms.
      git-gui: Rename quitting global to is_quitting.
      git-gui: Use arrow cursor rather than left_ptr.
      git-gui: Refactor options menu into an options dialog.
      git-gui: Allow the user to manipulate the fonts from the options panel.
      git-gui: Supply progress feedback when running update-index.
      git-gui: Minor options dialog UI cleanups.
      git-gui: Added Options... menu item to end of diff context menu.
      git-gui: Use 'after 1' to post UI rather than tkwait.
      git-gui: Correct bugs in font config handling.
      git-gui: Hide non-commit related commands when invoked as git-citool.
      git-gui: Don't load the global options unless necessary.
      git-gui: Allow the user to disable diff stat summary during pull.
      git-gui: Run the pre-commit hook in the background.
      git-gui: Remove the commit_active global variable.
      git-gui: Added post-commit invocation after the commit is done.
      git-gui: Always use eq/ne for string comparsions.
      git-gui: Reshow diff if we sent the file to update-index.
      git-gui: Cleanup diff construction code to prepare for more options.
      git-gui: Allow the user to control the number of context lines in a diff.
      git-gui: Sort the list of paths being updated in the index.
      git-gui: Use a smaller pipe buffer for update-index.
      git-gui: Allow the user to copy name of the file in the diff viewer.
      git-gui: Correct language for M_/A_ status codes.
      git-gui: Display status on left in diff header.
      git-gui: Minor UI layout improvements for console windows.
      git-gui: Reverted file name text field to a label.
      git-gui: By default don't allow partially included files.
      git-gui: Refactor mouse clicking on file names/icons.
      git-gui: Narrow the no differences information message.
      git-gui: Implemented multiple selection in file lists.
      git-gui: Refactor update_status -> rescan.
      git-gui: Provide an after-rescan script to rescan.
      git-gui: Allow update_index to also run a script when it completes.
      git-gui: Automatically update-index all included files before commit.
      git-gui: Disable diff actions when no diff is active.
      git-gui: Created makefile to install the program.
      git-gui: Correctly handle GIT_DIR environment variable.
      git-gui: Create Windows shortcut icons for git-gui.
      git-gui: Protect ourselves from funny GIT_DIR/working directory setups.
      git-gui: Handle ' within paths when creating Windows shortcuts.
      git-gui: Only populate a fetch or push if we have an action.
      git-gui: Create a .app file on MacOS X if requested.
      git-gui: Display error dialog on Mac OS X when no .git found.
      git-gui: Make initial commits work properly.
      git-gui: Only reshow diff when really necessary.
      git-gui: Refactor file state representations.
      git-gui: Add menu option to include only selected files.
      git-gui: Misc. comment formatting cleanups.
      git-gui: Start UI with the index locked.
      git-gui: Remove completed items from TODO list.
      git-gui: Toggle between new commit and amend commit modes.
      git-gui: Verify the user has GIT_COMMITTER_IDENT before comitting.
      git-gui: Rephrase rescan before commit informational message.
      git-gui: Allow adding untracked files in selection.
      git-gui: Don't create PkgInfo on Mac OS X "desktop icons".
      git-gui: Teach the gui how to uninclude a file.
      git-gui: Make consecutive icon clicks toggle included status of a file.
      git-gui: Correct toggling of deleted file status.
      git-gui: Fix list loading corruption introduced by 1461c5f3.
      git-gui: Describe deleted symlinks in a more friendly way.
      git-gui: Correct toggling of added/untracked status for new files.
      git-gui: Updated TODO list now that a task is complete.
      git-gui: Refactored diff line display formatting logic.
      git-gui: Restore the all important shebang line.
      git-gui: Update in memory states after commit.
      git-gui: Correct some state matchings for include/remove.
      git-gui: Improve handling of merge commits.
      git-gui: Allow users to run fsck-objects from the gui.
      git-gui: Don't save amended commit message buffer.
      git-gui: Reworded verify console title.
      git-gui: Seperate out the database operations in project menu.
      git-gui: Rename Project menu to Repository.
      git-gui: Added about dialog box.
      git-gui: Be more Macintosh like.
      git-gui: Make the copyright notice serve double duty.
      git-gui: Include the Tcl/Tk version in the about dialog.
      git-gui: Abstract out windows platform test to is_Windows proc.
      git-gui: Correct is_MacOSX platform test.
      git-gui: Warn Cygwin users about possible environment issues.
      git-gui: Added configuration editor TODO list.
      git-gui: Refactor M1 binding selection.
      git-gui: Added menu command to visualize all branches.
      git-gui: Don't start 'gitk --all' on Mac OS X.
      git-gui: Improve pull error dialogs.
      git-gui: Added revert changes command.
      git-gui: Display the current branch.
      git-gui: Support file state MD (modified/deleted).
      git-gui: Created Branch menu.
      git-gui: Parse off refs/remotes when showing current branch.
      git-gui: Abort on not implemented branch switching.
      git-gui: Automatically skip tracking branches in branch menu.
      git-gui: Rename all_branches -> all_heads.
      git-gui: Misc. comment and formatting cleanups.
      git-gui: Started implementation of switch_branch.
      git-gui: Set a proper title on our revert confirm dialog box.
      git-gui: Updated todo list.
      git-gui: Enable resolution of merge conflicts.
      git-gui: Auto-update any A? or M? files during rescan.
      git-gui: Reworded 'Include' to 'Add' to match core Git.
      git-gui: Created very crude Tools menu, to support miga.
      git-gui: Show all fetched branches for remote pulls.
      git-gui: Run git-gc rather than git-repack.
      git-gui: Corrected behavior of deleted (but existing in HEAD) files.
      git-gui: Correct wording of the revert confirmation dialog.
      git-gui: Work around odd cygpath bug on Windows.
      git-gui: Change more 'include' language to 'add'.
      git-gui: Hide the ugly bash command line from the windows desktop icon.
      git-gui: Modified makefile to embed version into git-gui script.
      git-gui: Display the git-gui version in the Help->About dialog.
      git-gui: Display the full GPL copyright notice in about dialog.
      git-gui: Ensure version number is always current.
      git-gui: Allow the user to copy the version data to the clipboard.
      git-gui: Don't offer my miga hack if its configuration file isn't present.
      git-gui: Suggest when running 'git gc' may be worthwhile.
      git-gui: Refactor reponame computation.
      git-gui: Cleanup usage of gitdir global variable.
      git-gui: Allow [gitdir ...] to act as [file join [gitdir] ...].
      git-gui: Make the gitk starting message match our usual format.
      git-gui: Display the directory we are entering during startup.
      git-gui: Start file status display refactoring.
      git-gui: Convert UI to use 'staged for commit' interface.
      git-gui: Correct DD file state to be only D_.
      git-gui: Remove invalid DM state.
      git-gui: Cleanup state descriptions.
      git-gui: Refactor add/remove proc names to align with reality.
      git-gui: Add or unstage based on the specific icon used.
      git-gui: Refactor the revert (aka checkout-index) implementation.
      git-gui: Refactor the add to commit state filters.
      git-gui: Simplify printing of index info to update-index.
      git-gui: Only permit selection in one list at a time.
      git-gui: Pad the cancel/save buttons in the options window.
      git-gui: Implemented create branch GUI.
      git-gui: Bind M1-N to create branch.
      git-gui: Implemented local branch deletion.
      git-gui: Allow users to delete branches merged upstream.
      git-gui: Allow creating branches from tracking heads.
      git-gui: Use borders on text fields in branch dialog.
      git-gui: Remove 'Allow Partially Added Files' option.
      git-gui: Move commit_prehook into commit_tree.
      git-gui: Improve the branch delete confirmation dialogs.
      git-gui: Don't delete the test target branch.
      git-gui: Attempt to checkout the new branch after creation.
      git-gui: Refactor current_diff -> current_diff_path.
      git-gui: Remove combined diff showing behavior.
      git-gui: Improve the display of merge conflicts.
      git-gui: Improve diff --cc viewing for unmerged files.
      git-gui: Fix bug in unmerged file display.
      git-gui: Clear diff from viewer if the side changed.
      git-gui: Correct disappearing unstaged files.
      git-gui: Add Refresh to diff viewer context menu.
      git-gui: Correct unmerged file detection at commit time.
      git-gui: Pad new branch name input box.
      git-gui: Use a grid layout for branch dialog.
      git-gui: Improve the merge check interface for branch deletion.
      git-gui: Change rude error popup to info popup.
      git-gui: Correctly ignore '* Unmerged path' during diff.
      git-gui: Make diff viewer colors match gitk's defaults.
      git-gui: Never line wrap in file lists.
      git-gui: Don't offer tracking branches if none exist.
      git-gui: Give a better error message on an empty branch name.
      git-gui: Allow user to specify a branch name pattern.
      git-gui: Improve keyboard traversal in dialogs.
      git-gui: Fully select a field when entering into it.
      git-gui: Automatically toggle the relevant radio buttons.
      git-gui: Correctly categorize tracking branches and heads.
      git-gui: Update todo list with finished and new items.
      git-gui: Slightly tweak new window geometry.
      git-gui: Create missing branch head on initial commit.
      git-gui: Don't format the mode line of a diff.
      git-gui: Force an update-index --refresh on unchanged files.
      git-gui: Don't attempt to tag new file/deleted file headers in diffs.
      git-gui: Fix 'Select All' action on Windows.
      git-gui: Ignore 'No newline at end of file' marker line.
      git-gui: Always start a rescan on an empty diff.
      git-gui: Don't show content of untracked binary files.
      git-gui: Limit display of large untracked files.
      git-gui: When possible show the type of an untracked file.
      git-gui: Don't try to tag the 'Binary files * and * differ' line.
      git-gui: Remove spurious newline in untracked file display.
      git-gui: Honor system encoding for filenames.
      git-gui: Handle commit encoding better.
      git-gui: Display database stats (count-objects -v) on demand.
      git-gui: Implement basic branch switching through read-tree.
      git-gui: Use system default labelframe bordering.
      git-gui: Display the size of the pack directory.
      git-gui: Only allow Refresh in diff context menu when we have a diff.
      git-gui: Allow staging/unstaging individual diff hunks.
      git-gui: Elide CRs appearing in diff output from display.
      git-gui: Cleanup end-of-line whitespace in commit messages.
      git-gui: Unset unnecessary UI setup variable.
      git-gui: Force focus to the diff viewer on mouse click.
      git-gui: Support 'Visualize All Branches' on Mac OS X.
      git-gui: Pad the database statistics dialog window.
      git-gui: Prefer Tk's entry widget over a 1 line text field.
      git-gui: Remove Pull menu and cleanup Branch/Fetch/Push menus.
      git-gui: Don't switch branches if changing to the current branch.
      git-gui: Maintain the same file list for diff during refresh.
      git-gui: Always use lsearch -exact, to prevent globbing.
      git-gui: Added arbitrary branch pushing support.
      git-gui: Remove no longer used pull from remote code.
      git-gui: Always use -v option to push.
      git-gui: Refactor console success/failure handling.
      git-gui: Use builtin version of 'git gc'.
      git-gui: Implement local merge operations.
      git-gui: Let users abort with `reset --hard` type logic.
      git-gui: Update status bar during a merge.
      git-gui: Don't allow users to commit a bad octopus merge.
      git-gui: Don't allow merges in the middle of other things.
      git-gui: Always offer scrollbars for branch lists.
      git-gui: Support merge.summary, merge.verbosity.
      git-gui: Reword meaning of merge.summary.
      git-gui: Offer quick access to the HTML formatted documentation.
      git-gui: Test for Cygwin differently than from Windows.
      git-gui: Implemented file browser and incremental blame.
      git-gui: Improve the icons used in the browser display.
      git-gui: Display the current branch name in browsers.
      git-gui: Allow users to edit user.name, user.email from options.
      git-gui: Use -M and -C when running blame.
      git-gui: Correctly handle spaces in filepaths.
      git-gui: Display original filename and line number in blame.
      git-gui: Install column headers in blame viewer.
      git-gui: Use a grid layout for the blame viewer.
      git-gui: Assign background colors to each blame hunk.
      Correct ^0 asciidoc syntax in fast-import docs.
      Correct some language in fast-import documentation.
      Correct spelling of fast-import in docs.
      tar archive frontend for fast-import.
      git-gui: Update known branches during rescan.
      git-gui: Support keyboard traversal in browser.
      git-gui: Replace \ with \\ when showing paths.
      git-gui: Refactor single_commit to a proc.
      git-gui: Separate transport/branch menus from multicommit.
      git-gui: Optionally save commit buffer on exit.
      git-gui: View blame from the command line.
      git-gui: Select subcommands like git does.
      git-gui: Relabel the Add All action.
      git-gui: Use git-config now over git-repo-config.
      git-gui: Redesign the display of annotated files.
      git-gui: Jump to the first annotation block as soon as its available.
      git-gui: Improve annotated file display.
      git-gui: Focus into blame panels on Mac OS.
      git-gui: Stop deleting gitk preferences.
      fast-import: Hide the pack boundary commits by default.
      fast-import: Add tip about importing renames.
      bash: Hide git-fast-import.
      fast-import: Support reusing 'from' and brown paper bag fix reset.
      git-gui: Allow gitexecdir, INSTALL to be set by the caller.
      git-gui: Rename GIT_VERSION to GITGUI_VERSION.
      git-gui: Generate a version file on demand.
      git-gui: Handle gitgui tags in version gen.
      git-gui: Guess our version accurately as a subproject.
      git-gui: Change base version to 0.6.
      Link git-gui into the master Makefile.

Theodore Ts'o (2):
      Print a sane error message if an alias expands to an invalid git command
      Allow aliases to expand to shell commands


Version v1.5.0-rc4; changes since v1.5.0-rc3:
---------------------------------------------

Alex Riesen (1):
      Avoid ActiveState Perl IO in t800[12]

Andy Parkins (2):
      doc: hooks.txt said post-commit default sends an email, it doesn't
      git-for-each-ref doesn't return "the bit after $GIT_DIR/refs"

Aneesh Kumar K.V (1):
      blameview: Support browsable functionality to blameview.

David Kågedal (1):
      git-blame: an Emacs minor mode to view file with git-blame output.

Eric Wong (2):
      git-svn: do not let Git.pm warn if we prematurely close pipes
      Disallow invalid --pretty= abbreviations

Gerrit Pape (1):
      git-archimport: initial import needs empty directory

Horst H. von Brand (1):
      Call make always with CFLAGS in git.spec

Johannes Schindelin (4):
      Teach the '@{...}' notation to git-log -g
      Update the documentation for the new '@{...}' syntax
      Commands requiring a work tree must not run in GIT_DIR
      fast-import: Fix compile warnings

Junio C Hamano (36):
      create_symref(): do not assume pathname from git_path() persists long enough
      detached HEAD -- finishing touches
      Use "git checkout -q" in git-bisect
      Tutorial: fix asciidoc formatting of "git add" section.
      Tutorial-2: Adjust git-status output to recent reality.
      core-tutorial: http reference link fix
      fix reflog entries for "git-branch"
      honor GIT_REFLOG_ACTION in git-commit
      Why is it bad to rewind a branch that has already been pushed out?
      combine-diff: special case --unified=0
      show-branch -g: default to the current branch.
      git-clone --reference: saner handling of borrowed symrefs.
      Revert "Allow branch.*.merge to talk about remote tracking branches."
      Rename get_ident() to fmt_ident() and make it available to outside
      t9200: Work around HFS+ issues.
      bisect: it needs to be done in a working tree.
      git-blame: no rev means start from the working tree file.
      Add pretend_sha1_file() interface.
      Use pretend_sha1_file() in git-blame and git-merge-recursive.
      blame: document --contents option
      Teach git-remote add to fetch and track
      Fix longstanding mismerge of ALL_CFLAGS vs BASIC_CFLAGS
      gitk: Use show-ref instead of ls-remote
      git-push: allow globbing wildcard refspec.
      gitweb: fix mismatched parenthesis
      annotate: fix for cvsserver.
      S_IFLNK != 0140000
      Remove contrib/colordiff
      Add deprecation notices.
      Remove git-merge-recur
      git-clone --reference: work well with pack-ref'ed reference repository
      for-each-reflog: fix case for empty log directory
      t4200: skip gc-rerere test on systems with non GNU date.
      git-add -i: update removed path correctly.
      Documentation: Add gfi to the main command list.
      GIT v1.5.0-rc4

Linus Torvalds (2):
      pager: Work around window resizing bug in 'less'
      Fix "git log -z" behaviour

Mark Levedahl (2):
      gitk - remove trailing whitespace from a few lines.
      Make gitk work reasonably well on Cygwin.

Michael Coleman (1):
      Fix some documentation typos and grammar

Michele Ballabio (1):
      Documentation: add KMail in SubmittingPatches

Nicolas Pitre (14):
      make reflog filename independent from struct ref_lock
      lock_ref_sha1_basic(): remember the original name of a ref when resolving it
      enable separate reflog for HEAD
      add reflog entries for HEAD when detached
      move create_symref() past log_ref_write()
      add logref support to git-symbolic-ref
      add reflog when moving HEAD to a new branch
      reword the detached head message a little again
      add a quiet option to git-checkout
      prevent HEAD reflog to be interpreted as current branch reflog
      provide a nice @{...} syntax to always mean the current branch reflog
      scan reflogs independently from refs
      Enable HEAD@{...} and make it independent from the current branch
      Let git-checkout always drop any detached head

Pavel Roskin (2):
      git-config --rename-section could rename wrong section
      Assorted typo fixes

Robin Rosenberg (1):
      Why is it bad to rewind a branch that has already been pushed out?

Shawn O. Pearce (113):
      Created fast-import, a tool to quickly generating a pack from blobs.
      Added automatic index generation to fast-import.
      Cleaned up memory allocation for object_entry structs.
      Refactored fast-import's internals for future additions.
      Added basic command handler to fast-import.
      Implemented branch handling and basic tree support in fast-import.
      Added tree and commit writing to fast-import.
      Implement blob ID validation in fast-import.
      Converted fast-import to a text based protocol.
      Changed fast-import's pack header creation to use pack.h
      Allow symlink blobs in trees during fast-import.
      Fixed segfault in fast-import after growing a tree.
      Converted fast-import to accept standard command line parameters.
      Added mark store/find to fast-import.
      Added branch load counter to fast-import.
      Implemented 'tag' command in fast-import.
      Implemented tree reloading in fast-import.
      Round out memory pool allocations in fast-import to pointer sizes.
      Remove branch creation command from fast-import.
      Moved from command to after data to help cvs2svn.
      Account for tree entry memory costs in fast-import.
      Added option to export the marks table when fast-import terminates.
      Added --branch-log to option to fast-import.
      Fixed GPF in fast-import caused by unterminated linked list.
      Fixed compile error in fast-import.
      Map only part of the generated pack file at any point in time.
      Added 'reset' command to clear a branch's tree.
      Don't crash fast-import if no branch log was requested.
      Converted hash memcpy/memcmp to new hashcpy/hashcmp/hashclr.
      Implemented tree delta compression in fast-import.
      Recycle data buffers for tree generation in fast-import.
      Reuse the same buffer for all commits/tags in fast-import.
      Replace ywrite in fast-import with the standard write_or_die.
      Correct tree corruption problems in fast-import.
      Additional fast-import tree delta corruption cleanups.
      Fix repository corruption when using marks for modified blobs.
      Support creation of merge commits in fast-import.
      Allow creating branches without committing in fast-import.
      Improve reuse of sha1_file library within fast-import.
      Misc. type cleanups within fast-import.
      Restructure fast-import to support creating multiple packfiles.
      Remove unnecessary duplicate_count in fast-import.
      Implemented manual packfile switching in fast-import.
      Don't create a final empty packfile in fast-import.
      Optimize index creation on large object sets in fast-import.
      Implemented automatic checkpoints within fast-import.
      Print the packfile names to stdout from fast-import.
      Corrected buffer overflow during automatic checkpoint in fast-import.
      Use uintmax_t for marks in fast-import.
      Replace redundant yread() with read_in_full() in fast-import.
      Reuse sha1 in packed_git in fast-import.
      Use .keep files in fast-import during processing.
      Ensure we close the packfile after creating it in fast-import.
      Remove unnecessary pack_fd global in fast-import.
      Correct max_packsize default in fast-import.
      Correct object_count type and stat output in fast-import.
      Print out the edge commits for each packfile in fast-import.
      Corrected BNF input documentation for fast-import.
      Correct a few types to be unsigned in fast-import.
      Declare no-arg functions as (void) in fast-import.
      Correct packfile edge output in fast-import.
      Always use struct pack_header for pack header in fast-import.
      Use fixed-size integers when writing out the index in fast-import.
      Remove unnecessary options from fast-import.
      Support delimited data regions in fast-import.
      Create test case for fast-import.
      Reduce value duplication in t9300-fast-import.
      Accept 'inline' file data in fast-import commit structure.
      Pull out remote listing functions in git-remote.
      Teach 'git remote' how to cleanup stale tracking branches.
      Cleanup prepare_packed_git_one to reuse install_packed_git.
      Correct comment in prepare_packed_git_one.
      Refactor open_packed_git to return an error code.
      Don't find objects in packs which aren't available anymore.
      Don't leak file descriptors from unavailable pack files.
      Cleanup subcommand documentation for git-remote.
      Keep untracked files not involved in a merge.
      Default GIT_MERGE_VERBOSITY to 5 during tests.
      bash: Remove short option completions for branch/checkout/diff.
      bash: Classify cat-file and reflog as plumbing.
      bash: Complete long options to git-add.
      bash: Add space after unique command name is completed.
      bash: Classify more commends out of completion.
      bash: Support unique completion on git-config.
      bash: Support unique completion when possible.
      bash: Support internal revlist options better.
      Include checkpoint command in the BNF.
      Reduce memory usage of fast-import.
      Show an example of deleting commits with git-rebase.
      bash: Support completion on git-cherry.
      bash: Hide diff-stages from completion.
      bash: Offer --prune completion for git-gc.
      bash: Hide git-resolve, its deprecated.
      bash: Support --add completion to git-config.
      bash: Support git-bisect and its subcommands.
      Don't support shell-quoted refnames in fast-import.
      Initial draft of fast-import documentation.
      bash: Support git-rebase -m continuation completion.
      bash: Complete git-remote subcommands.
      Remove --branch-log from fast-import.
      Correct compiler warnings in fast-import.
      Correct minor style issue in fast-import.
      Correct fast-import timezone documentation.
      Remove unnecessary null pointer checks in fast-import.
      Minor fast-import documentation corrections.
      Support RFC 2822 date parsing in fast-import.
      Don't do non-fastforward updates in fast-import.
      Minor timestamp related documentation corrections for fast-import.
      Teach fast-import how to clear the internal branch content.
      Teach fast-import how to sit quietly in the corner.
      Dump all refs and marks during a checkpoint in fast-import.
      Don't crash fast-import if the marks cannot be exported.
      Add a Tips and Tricks section to fast-import's manual.

Simon 'corecode' Schubert (1):
      Allow forcing of a parent commit, even if the parent is not a direct one.

Stelian Pop (1):
      Add hg-to-git conversion utility.

Uwe Kleine-König (1):
      add replay and log to the usage string of git-bisect

Yasushi SHOJI (1):
      gitweb: Convert project name to UTF-8


Version v1.5.0-rc3; changes since v1.5.0-rc2:
---------------------------------------------

Alex Riesen (5):
      Insert ACTIVESTATE_STRING in Git.pm
      Force Activestate Perl to tie git command pipe handle to a handle class
      Cleanup uninitialized value in chomp
      Allow default core.logallrefupdates to be overridden with template's config
      Fix git-update-index to work with relative pathnames.

Alexandre Julliard (1):
      vc-git.el: Take into account the destination name in vc-checkout.

Andy Parkins (5):
      New files in git weren't being downloaded during CVS update
      If abbrev is set to zero in git-describe, don't add the unique suffix
      Allow the tag signing key to be specified in the config file
      UNIX reference time of 1970-01-01 00:00 is UTC timezone, not local time zone
      Heavily expanded update hook to send more useful emails than the old hook

Aneesh Kumar K.V (2):
      blameview: Use git-cat-file to read the file content.
      Update git-cat-file documentation

Bill Lear (1):
      Document --check option to git diff.

David Kågedal (1):
      Improved error message from git-rebase

Eric Wong (1):
      git-svn: remove leading slash when printing removed directories

J. Bruce Fields (31):
      Documentation: add git user's manual
      Documentation: expand preface and todo's
      Documentation: git-rebase discussion, miscellaneous user-manual updates
      Documentation: more user-manual todo's
      Documentation: reorder development section, todo's
      Documentation: begin discussion of git-remote in user manual
      Documentation: rev-list -> rev-parse, other typos, start examples
      user manual: answer some comments from Junio
      user-manual: replace init-db by init
      user-manual: reindent
      user-manual:  rewrap, fix heading levels
      user-manual: add "quick start" as chapter 1
      user-manual: minor quickstart reorganization
      user-manual: clarify difference between tag and branch
      user-manual: update references discussion
      user-manual: update git-gc discussion
      user-manual: stub discussion of fsck and reflog
      user-manual: reorganize fetch discussion, add internals, etc.
      user-manual: git-fsck, dangling objects
      user-manual: fsck-objects -> fsck
      user-manual: repo-config -> config
      user-manual: add references to git-config man page
      user-manual: typo fix
      user-manual: fix a header level
      user-manual: reflogs, other recovery
      user-manual: rewrap a few long lines
      user-manual: minor "TODO" updates
      user-manual: document git-show-branch example
      user-manual: SHA1 -> object name
      user-manual: point to README for gitweb information
      user-manual: todo's

Jakub Narębski (3):
      Documentation/config.txt: Document config file syntax better
      t/t1300-repo-config.sh: value continued on next line
      Documentation/config.txt: Correct info about subsection name

Jason Riedy (1):
      Use inttypes.h rather than stdint.h.

Jeff King (4):
      format-patch: fix bug with --stdout in a subdirectory
      contrib/vim: update syntax for changed commit template
      diffcore-pickaxe: fix infinite loop on zero-length needle
      Add a sample program 'blameview' to show how to use git-blame --incremental

Johannes Schindelin (2):
      annotate: use pager
      reflog inspection: introduce shortcut "-g"

Johannes Sixt (1):
      Add a missing fork() error check.

Junio C Hamano (43):
      User manual: fix typos in examples
      Documentation/tutorial-2: Fix interesting typo in an example.
      Revert "prune: --grace=time"
      Make sure git_connect() always give two file descriptors.
      is_repository_shallow(): prototype fix.
      shallow repository: disable unsupported operations for now.
      git-gc: do not run git-prune by default.
      cvsimport: activate -a option, really.
      .mailmap: fix screw-ups in Uwe's name
      honor --author even with --amend, -C, and -c.
      reflog gc: a tag that does not point at a commit is not a crime.
      git-checkout -m: fix merge case
      git-daemon documentation on enabling services.
      ls-remote and clone: accept --upload-pack=<path> as well.
      Refactor the pack header reading function out of receive-pack.c
      Allow fetch-pack to decide keeping the fetched pack without exploding
      fetch-pack: remove --keep-auto and make it the default.
      Consolidate {receive,fetch}.unpackLimit
      Allow non-developer to clone, checkout and fetch more easily.
      parse-remote: do not barf on a remote shorthand without any refs to fetch.
      show-branch -g: default to HEAD
      Documentation: pack-refs --all vs default behaviour
      Make sure we do not write bogus reflog entries.
      git-merge: leave sensible reflog message when used as the first level UI.
      create_symref: check error return from open().
      write_in_full: size_t is unsigned.
      Don't force everybody to call setup_ident().
      git-blame --porcelain: quote filename in c-style when needed.
      Update describe documentation.
      Document 'git-blame --incremental'
      git-fsck-objects is now synonym to git-fsck
      Two small typofixes.
      lock_any_ref_for_update(): do not accept malformatted refs.
      git-commit -s: no extra space when sign-offs appear at the end already.
      git-blame: somewhat better commenting.
      git-send-email: remove debugging output.
      Fix git-tag -u
      Documentation: "git-checkout <tree> <path>" takes any tree-ish
      t9200: Re-code non-ascii path test in UTF-8
      t9200: do not test -x bit if the filesystem does not support it.
      git main documentation: point at the user's manual.
      Do not use hardcoded path to xhmtl.xsl to generate user's manual
      GIT v1.5.0-rc3

Linus Torvalds (5):
      fsck-objects: refactor checking for connectivity
      Fix seriously broken "git pack-refs"
      Add dangling objects tips.
      git-blame --incremental
      git-push through git protocol

Mark Wooding (3):
      wt-status: Actually accept `color.status.BLAH' configuration variables.
      Documentation/config.txt: Fix documentation of colour config tweaks.
      Make fsck and fsck-objects be builtins.

Nicolas Pitre (3):
      fix suggested branch creation command when detaching head
      git-log -g --pretty=oneline should display the reflog message
      tone down the detached head warning

Peter Eriksen (2):
      sha1_file.c: Avoid multiple calls to find_pack_entry().
      Documentation: --amend cannot be combined with -c/-C/-F.

René Scharfe (1):
      git-blame --incremental: don't use pager

Sam Vilain (1):
      contrib/emacs/vc-git.el: support vc-version-other-window

Santi Béjar (1):
      git-fetch: Allow fetching the remote HEAD

Shawn O. Pearce (6):
      Remove unnecessary found variable from describe.
      Teach git-describe to display distances from tags.
      Compute accurate distances in git-describe before output.
      Teach for-each-ref about a little language called Tcl.
      Don't coredump on bad refs in update-server-info.
      Escape --upload-pack from expr.

Simon 'corecode' Schubert (1):
      Replace perl code with pure shell code

Tom Prince (1):
      Rename git-repo-config to git-config.

Uwe Kleine-König (2):
      rename --exec to --upload-pack for fetch-pack and peek-remote
      make --upload-pack option to git-fetch configurable


Version v1.5.0-rc2; changes since v1.5.0-rc1:
---------------------------------------------

Bob Proulx (1):
      git-revert: Fix die before git-sh-setup defines it.

Chris Wedgwood (1):
      cache.h; fix a couple of prototypes

David Kågedal (2):
      Shell syntax fix in git-reset
      Document --ignore-if-in-upstream in git-format-patch

Doug Maxey (1):
      gitk: add current directory to main window title

Eric Wong (2):
      git-svn: fix tests to work with older svn
      git-svn: print and flush authentication prompts to STDERR

Jason Riedy (4):
      Start all test scripts with /bin/sh.
      Set _ALL_SOURCE for AIX, but avoid its struct list.
      Replace "echo -n" with printf in shell scripts.
      Solaris 5.8 returns ENOTDIR for inappropriate renames.

Jeff King (1):
      git-pull: disallow implicit merging to detached HEAD

Johannes Schindelin (9):
      Fix spurious compile error
      config_set_multivar(): disallow newlines in keys
      show_date(): fix relative dates
      apply --cached: fix crash in subdirectory
      Do not verify filenames in a bare repository
      Teach the revision walker to walk by reflogs with --walk-reflogs
      --walk-reflogs: disallow uninteresting commits
      --walk-reflogs: actually find the right commit by date.
      --walk-reflogs: do not crash with cyclic reflog ancestry

Junio C Hamano (69):
      reflog-expire: brown paper bag fix.
      merge-recursive: do not report the resulting tree object name
      Explain "Not a git repository: '.git'".
      glossary typofix
      Make git-prune-packed a bit more chatty.
      Define cd_to_toplevel shell function in git-sh-setup
      Use cd_to_toplevel in scripts that implement it by hand.
      Allow whole-tree operations to be started from a subdirectory
      Use log output encoding in --pretty=email headers.
      t3901: test "format-patch | am" pipe with i18n
      git-commit documentation: -a adds and also removes
      Consistent message encoding while reusing log from an existing commit.
      More tests in t3901.
      git log documentation: teach -<n> form.
      Add describe test.
      Documentation: merge-output is not too verbose now.
      Use merge-recursive in git-revert/git-cherry-pick
      git reflog expire: document --stale-fix option.
      Fix git-fetch while on detached HEAD not to give needlessly alarming errors
      git-push documentation: remaining bits
      git-rm documentation: remove broken behaviour from the example.
      tutorial: shorthand for remotes but show distributed nature of git
      git-commit documentation: remove comment on unfixed git-rm
      Use merge-recursive in git-checkout -m (branch switching)
      Document where configuration files are in config.txt
      git-commit: document log message formatting convention
      Documentation/SubmittingPatches: Gnus tips
      Documentation/git-tag: the command can be used to also verify a tag.
      Documentation/git-tools.txt: mention tig and refer to wiki
      Documentation/git-tar-tree.txt: default umask is now 002
      Documentation/git-status.txt: mention color configuration
      Documentation/git-whatchanged.txt: show -<n> instead of --max-count.
      Documentation/git-sh-setup.txt: programmer's docs
      Documentation: detached HEAD
      Make a short-and-sweet "git-add -i" synonym for "git-add --interactive"
      Documentation: describe shallow repository
      Documentation/glossary.txt: unpacked objects are loose.
      Documentation/glossary.txt: describe remotes/ tracking and packed-refs
      Introduce 'git-format-patch --suffix=.patch'
      git-format-patch: do not crash with format.headers without value.
      Documentation/git-resolve: deprecated.
      Documentation: suggest corresponding Porcelain-level in plumbing docs.
      Documentation: m can be relative in "git-blame -Ln,m"
      Documentation/git-parse-remote.txt: we deal with config vars as well
      git-format-patch -3
      Add --summary to git-format-patch by default
      git-format-patch: make --binary on by default
      git-format-patch: the default suffix is now .patch, not .txt
      Use fixed-size integers for .idx file I/O
      Documentation: move command list in git.txt into separate files.
      Documentation: sync git.txt command list and manual page title
      Documentation: Generate command lists.
      for_each_reflog_ent: do not leak FILE *
      refs.c::read_ref_at(): fix bogus munmap() call.
      Documentation: generated cmds-*.txt does not depend on git.txt
      Documentation/git.txt: command re-classification
      dwim_ref(): Separate name-to-ref DWIM code out.
      Extend read_ref_at() to be usable from places other than sha1_name.
      show-branch --reflog: show the reflog message at the top.
      show-branch --reflog: tighten input validation.
      show-branch --reflog: fix show_date() call
      Stop ignoring Documentation/README
      git-tag -d: allow deleting multiple tags at once.
      branch -f: no reason to forbid updating the current branch in a bare repo.
      git-rebase: allow rebasing a detached HEAD.
      log --walk-reflog: documentation
      reflog-walk: build fixes
      Fix --walk-reflog with --pretty=oneline
      GIT v1.5.0-rc2

Linus Torvalds (2):
      Clean up write_in_full() users
      Fix up totally buggered read_or_die()

Matthias Lederhofer (2):
      prune-packed: add -q to usage
      prune: --grace=time

Michael S. Tsirkin (1):
      fix documentation for git-commit --no-verify

Nicolas Pitre (4):
      use 'init' instead of 'init-db' for shipped docs and tools
      simplify the "no changes added to commit" message
      some doc updates
      sanitize content of README file

Peter Baumann (1):
      Make gitk work when launched in a subdirectory

Quy Tonthat (1):
      git-remote: no longer silent on unknown commands.

René Scharfe (1):
      Documentation: a few spelling fixes

Santi Béjar (1):
      tutorial: Use only separate layout

Shawn O. Pearce (18):
      Improve merge performance by avoiding in-index merges.
      Hide output about SVN::Core not being found during tests.
      Remove read_or_die in favor of better error messages.
      Remove unnecessary call_depth parameter in merge-recursive.
      Allow the user to control the verbosity of merge-recursive.
      Enable output buffering in merge-recursive.
      Display a progress meter during merge-recursive.
      Convert output messages in merge-recursive to past tense.
      Always perfer annotated tags in git-describe.
      Hash tags by commit SHA1 in git-describe.
      Use binary searching on large buckets in git-describe.
      Improve git-describe performance by reducing revision listing.
      Correct priority of lightweight tags in git-describe.
      Remove hash in git-describe in favor of util slot.
      Use nice names in conflict markers during cherry-pick/revert.
      Document the master@{n} reflog query syntax.
      Refer users to git-rev-parse for revision specification syntax.
      Document pack .idx file format upgrade strategy.

Simon 'corecode' Schubert (2):
      Use fixed-size integers for the on-disk pack structure.
      Use standard -t option for touch.

Uwe Kleine-König (4):
      document --exec for git-push
      Update documentation of fetch-pack, push and send-pack
      make --exec=... option to git-push configurable
      rename --exec to --receive-pack for push and send-pack


Version v1.5.0-rc1; changes since v1.5.0-rc0:
---------------------------------------------

Alex Riesen (1):
      Speed-up recursive by flushing index only once for all entries

Alexandre Julliard (12):
      Shallow clone: do not ignore shallowness when following tags
      fetch-pack: Properly remove the shallow file when it becomes empty.
      upload-pack: Check for NOT_SHALLOW flag before sending a shallow to the client.
      git-fetch: Reset shallow_depth before auto-following tags.
      get_shallow_commits: Avoid memory leak if a commit has been reached already.
      fetch-pack: Do not fetch tags for shallow clones.
      git-clean: Fix the -q option.
      git.el: Don't use --info-only when resolving a file.
      git.el: Avoid setting font lock keywords before entering log-edit mode.
      git-apply: Remove directories that have become empty after deleting a file.
      git-clone: Make sure the master branch exists before running cat on it.
      git.el: Define the propertize function if needed, for XEmacs compatibility.

Andy Parkins (1):
      hooks/commit-msg: add example to add Signed-off-by line to message

Andy Whitcroft (6):
      send pack check for failure to send revisions list
      ssh-upload: prevent buffer overrun
      short i/o: clean up the naming for the write_{in,or}_xxx family
      short i/o: fix calls to read to use xread or read_in_full
      short i/o: fix calls to write to use xwrite or write_in_full
      short i/o: fix config updates to use write_in_full

Brian Gernhardt (3):
      Add documentation for git-branch's color configuration.
      Ignore git-init and git-remote
      Auto-quote config values in config.c:store_write_pair()

Eric Wong (21):
      git-svn: quiet down tests and fix some unportable shell constructs
      git-svn: dcommit should diff against the current HEAD after committing
      t6024-recursive-merge: quiet down this test
      test-lib: quiet down init-db output for tests
      t9200-git-cvsexportcommit.sh: quiet down commit
      git-svn: remove non-delta fetch code paths
      git-svn: print out the SVN library version in --version, too
      git-svn: verify_ref() should actually --verify
      git-svn: sort multi-init output
      git-svn: remove svnadmin dependency from the tests
      git-svn: t/t9100-git-svn-basic: remove old check for NO_SYMLINK
      git-svn: t/t91??-*: optimize the tests a bit
      instaweb: load Apache mime and dir modules if they are needed
      git-svn: make multi-init less confusing
      git-svn: update documentation for multi-{init|fetch}
      git-svn: make --repack work consistently between fetch and multi-fetch
      Documentation/git-svn: clarify dcommit, rebase vs pull/merge
      git-svn: fix show-ignore
      git-svn: add --prefix= option to multi-init
      git-svn: pass an unambiguous ref to rev-list when grafting-branches
      Avoid errors and warnings when attempting to do I/O on zero bytes

Fredrik Kuivinen (1):
      instaweb: Nicer error message when the http daemon isn't found

J. Bruce Fields (9):
      Docs: update cvs-migration.txt to reflect clone's new default behavior
      Documentation: update git-clone.txt for clone's new default behavior
      Documentation: update glossary entry for "origin"
      Documentation: update tutorial's discussion of origin
      Documentation: update git-pull.txt for new clone behavior
      Documentation: remove master:origin example from pull-fetch-param.txt
      Documentation: tutorial editing
      Documentation: clarify definition of "reachable"
      Documentation: add git-remote man page

Jakub Narębski (14):
      gitweb: Add mod_perl version string to "generator" meta header
      gitweb: Precompile CGI routines for mod_perl
      Add info about new test families (8 and 9) to t/README
      gitweb: Fix error in git_project_index subroutine
      gitweb: Fix bug in git_difftree_body (was '!=' instead of 'ne')
      gitweb: There can be empty patches (in git_patchset_body)
      gitweb: Fix "Use of uninitialized value" warning in git_tags_body
      gitweb: Fix error in git_patchest_body for file creation/deletion patch
      gitweb: Fix error in "rename to"/"copy to" git diff header output
      gitweb: Fix errors in git_patchset_body for empty patches
      Revert "gitweb: There can be empty patches (in git_patchset_body)"
      gitweb: Fix split patches output (e.g. file to symlink)
      gitweb: Remove superfluous "|" in "commit" view
      gitweb: Fix git_patchset_body not closing <div class="patch">

Jeff King (1):
      get_tree_entry: map blank requested entry to tree root

Jim Meyering (1):
      update hook: redirect _both_ diagnostic lines to stderr upon tag failure

Johannes Schindelin (9):
      upload-pack: no longer call rev-list
      support fetching into a shallow repository
      allow cloning a repository "shallowly"
      allow deepening of a shallow repository
      add tests for shallow stuff
      xdl_merge(): fix a segmentation fault when refining conflicts
      Fix yet another subtle xdl_merge() bug
      Sanitize for_each_reflog_ent()
      Fix t1410 for core.filemode==false

Junio C Hamano (106):
      We should make sure that the protocol is still extensible.
      Why does it mean we do not have to register shallow if we have one?
      Why didn't we mark want_obj as ~UNINTERESTING in the old code?
      shallow clone: unparse and reparse an unshallowed commit
      add for_each_reflog_ent() iterator
      Protect commits recorded in reflog from pruning.
      Teach git-repack to preserve objects referred to by reflog entries.
      reflog: fix warning message.
      Move in_merge_bases() to commit.c
      git reflog expire
      reflog expire: prune commits that are not incomplete
      reflog expire: do not punt on tags that point at non commits.
      show-branch --reflog: add documentation.
      Document --numstat in git-apply and git-diff
      Document git-reset <commit> -- <paths>...
      Move encoding conversion routine out of mailinfo to utf8.c
      i18n.logToUTF8: convert commit log message to UTF-8
      Teach log family --encoding
      everyday: update for v1.5.0
      count-objects -v: show number of packs as well.
      rerere gc: honor configuration and document it
      git-reflog: gc.* configuration and documentation.
      everyday: replace a few 'prune' and 'repack' with 'gc'
      Use 'repack -a -d -l' instead of 'repack -a -d' in git-gc
      Set NO_MMAP for Cygwin by default
      UTF-8: introduce i18n.logoutputencoding.
      gcc does not necessarily pass runtime libpath with -R
      Work around http-fetch built with cURL 7.16.0
      Rename t3900 test vector file
      t3900: test conversion to non UTF-8 as well
      GIT_SKIP_TESTS: allow users to omit tests that are known to break
      core.logallrefupdates: log remotes/ tracking branches.
      Allow non-fast-forward of remote tracking branches in default clone
      t5400 send-pack test: try a bit more nontrivial transfer.
      Revert "read_directory: show_both option."
      Fix 'git add' with .gitignore
      pack-objects: fix use of use_pack().
      mmap: set FD_CLOEXEC for file descriptors we keep open for mmap()
      send-pack: fix pipeline.
      Documentation: illustrate send-pack pipeline.
      commit re-encoding: fix confusion between no and default conversion.
      t3900: test log --encoding=none
      Documentation: i18n commit log message notes.
      Documentation: minor rewording for git-log and git-show pages.
      Move commit reencoding parameter parsing to revision.c
      commit-tree: cope with different ways "utf-8" can be spelled.
      i18n: drop "encoding" header in the output after re-coding.
      Documentation/config.txt (and repo-config manpage): mark-up fix.
      Update documentation for update hook.
      send-pack.c: use is_null_sha1()
      send-pack: tell pack-objects to use its internal rev-list.
      Do not merge random set of refs out of wildcarded refs
      i18n: do not leak 'encoding' header even when we cheat the conversion.
      Update send-pack pipeline documentation.
      fail pull/merge early in the middle of conflicted merge
      git-fetch: remove .keep file at the end.
      Strongly discourage --update-head-ok in fetch-options documentation.
      Update clone/fetch documentation with --depth (shallow clone) option
      Remove unused variable (git-commit.sh)
      fetch-pack: do not use lockfile structure on stack.
      Fix infinite loop when deleting multiple packed refs.
      tutorial: misc updates.
      git-verify-tag: make sure we remove temporary file.
      pack-check.c::verify_packfile(): don't run SHA-1 update on huge data
      rerere: Fix removal of already resolved path.
      git-remote
      builtin-prune: memory diet.
      Fix timestamp for test-tick
      builtin-prune: make file-scope static struct to an argument.
      builtin-prune: separate ref walking from reflog walking.
      Move traversal of reachable objects into a separate library.
      reflog expire --fix-stale
      reflog --fix-stale: do not check the same trees and commits repeatedly.
      diff-index --cached --raw: show tree entry on the LHS for unmerged entries.
      git-reset <tree> -- <path> restores absense of <path> in <tree>
      Spell default packedgitlimit slightly differently
      Move initialization of log_all_ref_updates
      Introduce is_bare_repository() and core.bare configuration variable
      git-fetch: allow updating the current branch in a bare repository.
      git-status: show detached HEAD
      Detached HEAD (experimental)
      git-checkout: do not warn detaching HEAD when it is already detached.
      git-checkout: rewording comments regarding detached HEAD.
      git-checkout: safety when coming back from the detached HEAD state.
      git-checkout: fix branch name output from the command
      --utf8 is now default for 'git-am'
      --prune is now default for 'pack-refs'
      rm git-rerere.perl -- it is now a built-in.
      merge-base: do not leak commit list
      Do not ignore a detected patchfile brokenness.
      Fix "Do not ignore a detected patchfile brokenness."
      builtin-archive: do not free a tree held by the object layer.
      git-checkout: safety check for detached HEAD checks existing refs
      git-checkout: handle local changes sanely when detaching HEAD
      git-am: should work when "--no-utf8 --utf8" is given
      -u is now default for 'git-applymbox'
      -u is now default for 'git-mailinfo'.
      Makefile: remove $foo when $foo.exe is built/installed.
      merge-recursive: do not use on-file index when not needed.
      Document git-init
      index-pack: write-or-die instead of unchecked write-in-full.
      config-set: check write-in-full returns in set_multivar
      git-rm: do not fail on already removed file.
      git-status: wording update to deal with deleted files.
      plug a few leaks in revision walking used in describe.
      GIT v1.5.0-rc1

Jürgen Rühle (7):
      Clarify syntax and role of git-add in status output
      Improve "nothing to commit" part of status output
      Support --amend on initial commit in status output
      Improve cached content header of status output
      Remove unnecessary git-rm --cached reference from status output
      send-email: work around double encoding of in-body From field.
      Provide better feedback for the untracked only case in status output

Lars Hjemli (3):
      Skip excessive blank lines before commit body
      Refactor print-functions in builtin-branch
      git-branch: show detached HEAD

Linus Torvalds (3):
      write-cache: do not leak the serialized cache-tree data.
      write_in_full: really write in full or return error on disk full.
      Better error messages for corrupt databases

Luben Tuikov (1):
      Blame "linenr" link jumps to previous state at "orig_lineno"

Martin Langhoff (6):
      cvsimport: skip commits that are too recent
      cvsimport: skip commits that are too recent (option and documentation)
      cvsimport: document -S and -L options
      cvsimport: cleanup temporary cvsps file
      cvsserver: detect early of we are up to date and avoid costly rev-list
      cvsserver: fix revision number during file adds

Michael Loeffler (1):
      git-commit: do not fail to print the diffstat even if there is a file named HEAD

Nicolas Pitre (5):
      add .mailmap for git-shortlog output with the git repository
      Add git-reflog to .gitignore
      move git-blame to its place in .gitignore
      "init-db" can really be just "init"
      Add git-init documentation.

Pavel Roskin (1):
      Fix warnings in sha1_file.c - use C99 printf format if available

Quy Tonthat (1):
      git-send-email: default value for "From:" field.

René Scharfe (3):
      Make check target depend on common-cmds.h
      Remove shadowing variable from traverse_trees()
      Set default "tar" umask to 002 and owner.group to root.root

Robert Fitzsimons (2):
      gitweb: Re-enable rev-list --parents for parse_commit.
      gitweb: Fix shortlog only showing HEAD revision.

Santi Béjar (2):
      Documentation/tutorial: misc updates
      git-tag: add flag to verify a tag

Sasha Khapyorsky (3):
      git-svnimport: support for incremental import
      git-svnimport: clean svn path when accessing SVN repo
      git-svnimport: fix edge revisions double importing

Shawn O. Pearce (49):
      Don't crash during repack of a reflog with pruned commits.
      Create 'git gc' to perform common maintenance operations.
      Use GIT_REFLOG_ACTION environment variable instead.
      Honor GIT_REFLOG_ACTION in git-rebase.
      Use branch names in 'git-rebase -m' conflict hunks.
      Ensure `git-pull` fails if `git-merge` fails.
      Honor pull.{twohead,octopus} in git-merge.
      Allow git-merge to select the default strategy.
      Move better_branch_name above get_ref in merge-recursive.
      Allow merging bare trees in merge-recursive.
      Use merge-recursive in git-am -3.
      Replace unpack_entry_gently with unpack_entry.
      Introduce new config option for mmap limit.
      Refactor packed_git to prepare for sliding mmap windows.
      Use off_t for index and pack file lengths.
      Create read_or_die utility routine.
      Refactor how we open pack files to prepare for multiple windows.
      Replace use_packed_git with window cursors.
      Loop over pack_windows when inflating/accessing data.
      Document why header parsing won't exceed a window.
      Unmap individual windows rather than entire files.
      Fully activate the sliding window pack access.
      Load core configuration in git-verify-pack.
      Ensure core.packedGitWindowSize cannot be less than 2 pages.
      Improve error message when packfile mmap fails.
      Support unmapping windows on 'temporary' packfiles.
      Create pack_report() as a debugging aid.
      Test suite for sliding window mmap implementation.
      Default core.packdGitWindowSize to 1 MiB if NO_MMAP.
      Release pack windows before reporting out of memory.
      Replace mmap with xmmap, better handling MAP_FAILED.
      Cleanup read_cache_from error handling.
      Fix random segfaults in pack-objects.
      Force core.filemode to false on Cygwin.
      Use PATH_MAX constant for --bare.
      Replace "GIT_DIR" with GIT_DIR_ENVIRONMENT.
      Automatically detect a bare git repository.
      Remove unnecessary argc parameter from run_command_v.
      Redirect update hook stdout to stderr.
      Use /dev/null for update hook stdin.
      Teach Git how to parse standard power of 2 suffixes.
      Update packedGit config option documentation.
      Add test case for update hooks in receive-pack.
      Increase packedGit{Limit,WindowSize} on 64 bit systems.
      Don't die in git-http-fetch when fetching packs.
      Don't save the commit buffer in git-describe.
      Make git-describe a builtin.
      Disallow working directory commands in a bare repository.
      Chose better tag names in git-describe after merges.

Stefan-W. Hahn (1):
      Replacing the system call pread() with lseek()/xread()/lseek() sequence.

Steven Grimm (3):
      Describe git-clone's actual behavior in the summary
      Print a more accurate error message when we fail to create a lock file.
      Update git-svn manpage to remove the implication that SVN::* is optional.

Theodore Ts'o (2):
      Fix formatting for urls section of fetch, pull, and push manpages
      Fix formatting for urls section of fetch, pull, and push manpages


Version v1.5.0-rc0; changes since v1.4.4.5:
-------------------------------------------

Alex Riesen (1):
      Make perl/ build procedure ActiveState friendly.

Alexandre Julliard (1):
      vc-git: Ignore errors caused by a non-existent directory in vc-git-registered.

Andreas Ericsson (2):
      ls-files: Give hints when errors happen.
      git-diff: Introduce --index and deprecate --cached.

Andy Parkins (8):
      Improve git-prune -n output
      Add support to git-branch to show local and remote branches
      Use .git/config for storing "origin" shortcut repository
      De-emphasise the symbolic link documentation.
      Explicitly add the default "git pull" behaviour to .git/config on clone
      Colourise git-branch output
      Allow subcommand.color and color.subcommand color configuration
      git-status always says what branch it's on

Aneesh Kumar K.V (1):
      Add config example with respect to branch

Brian Gernhardt (6):
      Add --add option to git-repo-config
      Make git-diff documentation use [--] when it should.
      Add documentation for show-branch --topics
      Remove COLLISION_CHECK from Makefile since it's not used.
      Keep "git --git-dir" from causing a bus error.
      Make git-show-branch options similar to git-branch.

David S. Miller (1):
      Pass -M to diff in request-pull

Eric Wong (29):
      git-svn: handle authentication without relying on cached tokens on disk
      git-svn: correctly access repos when only given partial read permissions
      git-svn: exit with status 1 for test failures
      git-svn: allow SVN:: lib users to track the root of the repository (again)
      git-svn: use ~/.subversion config files when using SVN:: libraries
      git-svn: enable delta transfers during fetches when using SVN:: libs
      git-svn: update tests for recent changes
      git-svn: error out when the SVN connection fails during a fetch
      git-svn: fix output reporting from the delta fetcher
      git-svn: color support for the log command
      git-svn: documentation updates
      git-svn: fix multi-init
      git-svn: avoid network timeouts for long-running fetches
      git-svn: extra error check to ensure we open a file correctly
      git-svn: use do_switch for --follow-parent if the SVN library supports it
      rerere: add clear, diff, and status commands
      rerere: record (or avoid misrecording) resolved, skipped or aborted rebase/am
      git-svn: enable logging of information not supported by git
      git-svn: allow dcommit to take an alternate head
      git-svn: correctly display fatal() error messages
      git-svn: correctly handle packed-refs in refs/remotes/
      git-svn: correctly handle "(no author)" when using an authors file
      git-svn: convert to using Git.pm
      git-svn: remove support for the svn command-line client
      git-svn: rename 'commit' command to 'set-tree'
      git-cvsserver: fix breakage when calling git merge-file
      Remove NO_ACCURATE_DIFF options from build systems
      git-svn: enable common fetch/commit options for dcommit
      Makefile: add quick-install-doc for installing pre-built manpages

Han-Wen Nienhuys (2):
      git-tag: allow empty tag message if -m is given explicitly.
      ident.c: Trim hint printed when gecos is empty.

Iñaki Arenaza (1):
      git-cvsimport: add support for CVS pserver method HTTP/1.x proxying

J. Bruce Fields (5):
      Documentation: clarify tutorial pull/merge discussion
      cvs-migration: improved section titles, better push/commit explanation
      Documentation: reorganize cvs-migration.txt
      Documentation: update git-clone man page with new behavior
      Documentation: simpler shared repository creation

Jakub Narębski (26):
      gitweb: Protect against possible warning in git_commitdiff
      gitweb: Buffer diff header to deal with split patches + git_patchset_body refactoring
      gitweb: Default to $hash_base or HEAD for $hash in "commit" and "commitdiff"
      gitweb: New improved formatting of chunk header in diff
      gitweb: Add an option to href() to return full URL
      gitweb: Refactor feed generation, make output prettier, add Atom feed
      gitweb: Finish restoring "blob" links in git_difftree_body
      gitweb: Replace SPC with &nbsp; also in tag comment
      gitweb: Do not use esc_html in esc_path
      gitweb: Use git-show-ref instead of git-peek-remote
      gitweb: Add author and committer email extraction to parse_commit
      gitweb: Add author and contributor email to Atom feed
      gitweb: Use author_epoch for pubdate in gitweb feeds
      gitweb: Make project description in projects list link to summary view
      gitweb: Fix Atom feed <logo>: it is $logo, not $logo_url
      git-clone: Rename --use-immingled-remote option to --no-separate-remote
      Document git-diff whitespace flags -b and -w
      gitweb: Allow PNG, GIF, JPEG images to be displayed in "blob" view
      gitweb: Don't use Content-Encoding: header in git_snapshot
      gitweb: Show target of symbolic link in "tree" view
      gitweb: Add generic git_object subroutine to display object of any type
      gitweb: Hyperlink target of symbolic link in "tree" view (if possible)
      gitweb: SHA-1 in commit log message links to "object" view
      gitweb: Do not show difftree for merges in "commit" view
      gitweb: Add title attribute to ref marker with full ref name
      gitweb: Add "next" link to commit view

Jeff King (2):
      shortlog: fix segfault on empty authorname
      vim syntax: follow recent changes to commit template

Jim Meyering (1):
      Set permissions of each new file before "cvs add"ing it.

Johannes Schindelin (30):
      Build in shortlog
      shortlog: do not crash on parsing "[PATCH"
      shortlog: read mailmap from ./.mailmap again
      shortlog: handle email addresses case-insensitively
      shortlog: fix "-n"
      shortlog: use pager
      sha1_object_info(): be consistent with read_sha1_file()
      xdiff: add xdl_merge()
      xdl_merge(): fix an off-by-one bug
      xdl_merge(): fix thinko
      diff -b: ignore whitespace at end of line
      xdl_merge(): fix and simplify conflict handling
      cvs-migration document: make the need for "push" more obvious
      Add builtin merge-file, a minimal replacement for RCS merge
      merge-file: support -p and -q; fix compile warnings
      Get rid of the dependency on RCS' merge program
      merge-recursive: add/add really is modify/modify with an empty base
      INSTALL: no need to have GNU diff installed
      git-show: grok blobs, trees and tags, too
      Document git-merge-file
      add a function to rename sections in the config
      git-branch: rename config vars branch.<branch>.*, too
      Introduce GIT_TEMPLATE_DIR
      Use git-merge-file in git-merge-one-file, too
      git-tag: support -F <file> option
      git-reset --hard: tell the user what the HEAD was reset to
      move read_mmfile() into xdiff-interface
      Add a test for git-rerere
      Make git-rerere a builtin
      commit-tree: encourage UTF-8 commit messages.

Josef Weidendorfer (2):
      Add branch.*.merge warning and documentation update
      Move "no merge candidate" warning into git-pull

Junio C Hamano (115):
      upload-pack: stop the other side when they have more roots than we do.
      apply --numstat: mark binary diffstat with - -, not 0 0
      pack-objects: tweak "do not even attempt delta" heuristics
      Store peeled refs in packed-refs file.
      remove merge-recursive-old
      git-merge: make it usable as the first class UI
      merge: allow merging into a yet-to-be-born branch.
      Store peeled refs in packed-refs (take 2).
      git-fetch: reuse ls-remote result.
      git-fetch: fix dumb protocol transport to fetch from pack-pruned ref
      git-fetch: allow glob pattern in refspec
      refs outside refs/{heads,tags} match less strongly.
      Typefix builtin-prune.c::prune_object()
      Allow git push to delete remote ref.
      gitweb: (style) use chomp without parentheses consistently.
      git-clone: stop dumb protocol from copying refs outside heads/ and tags/.
      git-branch -D: make it work even when on a yet-to-be-born branch
      git-shortlog: fix common repository prefix abbreviation.
      git-shortlog: make common repository prefix configurable with .mailmap
      git-commit: show --summary after successful commit.
      git-fetch: exit with non-zero status when fast-forward check fails
      git-fetch: allow forcing glob pattern in refspec
      fetch-pack: do not barf when duplicate re patterns are given
      grep: do not skip unmerged entries when grepping in the working tree.
      git-merge: tighten error checking.
      git-merge: do not leak rev-parse output used for checking internally.
      cvsimport: style fixup.
      git-merge: fix confusion between tag and branch
      xmerge: make return value from xdl_merge() more usable.
      merge-recursive: use xdl_merge().
      read-tree: further loosen "working file will be lost" check.
      Loosen "working file will be lost" check in Porcelain-ish
      read-tree: document --exclude-per-directory
      git-merge: squelch needless error message.
      git-merge: fix "fix confusion between tag and branch" for real
      Fix perl/ build.
      git-rerere: add 'gc' command.
      Documentation/git-commit: rewrite to make it more end-user friendly.
      git-commit: allow --only to lose what was staged earlier.
      shortlog: remove "[PATCH]" prefix from shortlog output
      shortlog: fix segfault on empty authorname
      diff --numstat: show binary with '-' to match "apply --numstat"
      add test case for recursive merge
      git-push: document removal of remote ref with :<dst> pathspec
      Revert "git-diff: Introduce --index and deprecate --cached."
      git merge: reword failure message.
      spurious .sp in manpages
      git-push: accept tag <tag> as advertised.
      send-pack: tighten checks for remote names
      branch --color: change default color selection.
      git-blame: show lines attributed to boundary commits differently.
      config documentation: group color items together.
      git-svn: allow both diff.color and color.diff
      Update git-diff documentation
      git-fetch: make it work from within a subdirectory.
      git-reset: make it work from within a subdirectory.
      git-reset [--mixed] <tree> [--] <paths>...
      merge: give a bit prettier merge message to "merge branch~$n"
      git-clone: use wildcard specification for tracking branches
      git-pull: refuse default merge without branch.*.merge
      git-clone: lose the artificial "first" fetch refspec
      git-clone: lose the traditional 'no-separate-remote' layout
      update-index: make D/F conflict error a bit more verbose.
      git-add: remove conflicting entry when adding.
      Fix check_file_directory_conflict().
      Fix mis-mark-up in git-merge-file.txt documentation
      markup fix in svnimport documentation.
      rev-list --left-right
      Teach all of log family --left-right output.
      Make left-right automatic.
      Teach show-branch how to show ref-log data.
      git-fetch: Avoid reading packed refs over and over again
      avoid accessing _all_ loose refs in git-show-ref --verify
      show-ref: fix --quiet --verify
      show-ref: fix --verify --hash=length
      parse-remote::expand_refs_wildcard()
      show-ref: fix --exclude-existing
      racy-git: documentation updates.
      rerere: fix breakage of resolving.
      fix testsuite: make sure they use templates freshly built from the source
      Teach git-branch to delete tracking branches with -r -d
      blame: -b (blame.blankboundary) and --root (blame.showroot)
      git-add --interactive
      git-add --interactive: hunk splitting
      Revert "fix testsuite: make sure they use templates freshly built from the source"
      Do not create $GIT_DIR/remotes/ directory anymore.
      Use preprocessor constants for environment variable names.
      Revert "Make left-right automatic."
      fix populate-filespec
      config_rename_section: fix FILE* leak
      simplify inclusion of system header files.
      revision: --skip=<n>
      git-add: error out when given no arguments.
      compat/inet_ntop: do not use u_int
      diff documentation: mostly talk about <commit>
      Revert "git-pull: refuse default merge without branch.*.merge"
      parse-remote: mark all refs not for merge only when fetching more than one
      _XOPEN_SOURCE problem also exists on FreeBSD
      commit-tree: do not overflow MAXPARENT
      merge and reset: adjust for "reset --hard" messages
      default pull: forget about "newbie protection" for now.
      Do not support "partial URL shorthand" anymore.
      Really fix headers for __FreeBSD__
      git-tag: lose exit after die
      Allow branch.*.merge to talk about remote tracking branches.
      git-add --interactive: add documentation
      match_pathspec() -- return how well the spec matched
      git-rm: update to saner semantics
      t3600: update the test for updated git rm
      git-rm: Documentation
      read_directory: show_both option.
      git-add: add ignored files when asked explicitly.
      git-add: warn when adding an ignored file with an explicit request.
      git-add -f: allow adding otherwise ignored files.
      GIT v1.5.0 preview

Lars Hjemli (4):
      Add -v and --abbrev options to git-branch
      git-branch: add options and tests for branch renaming
      rename_ref: use lstat(2) when testing for symlink
      git-branch: let caller specify logmsg

Luben Tuikov (1):
      Export PERL_PATH

Michael Loeffler (1):
      git-fetch: ignore dereferenced tags in expand_refs_wildcard

Nicolas Pitre (11):
      builtin git-shortlog is broken
      pack-objects: remove redundent status information
      make 'git add' a first class user friendly interface to the index
      change the unpack limit treshold to a saner value
      repacked packs should be read-only
      make commit message a little more consistent and conforting
      make patch_delta() error cases a bit more verbose
      make git a bit less cryptic on fetch errors
      index-pack usage of mmap() is unacceptably slower on many OSes other than Linux
      clarify some error messages wrt unknown object types
      checkout: make the message about the need for a new branch a bit clearer

Paul Mackerras (1):
      gitk: Fix enabling/disabling of menu items on Mac OS X

Peter Baumann (1):
      config option log.showroot to show the diff of root commits

Petr Baudis (1):
      Make git-clone --use-separate-remote the default

Quy Tonthat (4):
      git-clone documentation
      Documentation: new option -P for git-svnimport
      git-branch -d: do not stop at the first failure.
      Documentation/git-branch: new -r to delete remote-tracking branches.

René Scharfe (1):
      shortlog: remove range check

Robert Fitzsimons (17):
      gitweb: Show '...' links in "summary" view only if there are more items
      gitweb: Add missing show '...' links change.
      gitweb: optimize git_get_last_activity.
      gitweb: optimize git_shortlog_body.
      gitweb: optimize git_summary.
      gitweb: Use rev-list pattern search options.
      gitweb: Require a minimum of two character for the search text.
      gitweb: Allow search to be disabled from the config file.
      gitweb: Paginate commit/author/committer search output
      gitweb: Add parse_commits, used to bulk load commit objects.
      gitweb: We do longer need the --parents flag in rev-list.
      gitweb: Change summary, shortlog actions to use parse_commits.
      gitweb: Change log action to use parse_commits.
      gitweb: Change header search action to use parse_commits.
      gitweb: Change atom, rss actions to use parse_commits.
      gitweb: Change history action to use parse_commits.
      gitweb: Use rev-list --skip option.

Robin Rosenberg (1):
      Make cvsexportcommit work with filenames with spaces and non-ascii characters.

Sean Estabrooks (1):
      Update documentation to remove incorrect GIT_DIFF_OPTS example.

Shawn O. Pearce (30):
      Teach git-completion.bash how to complete git-merge.
      Hide plumbing/transport commands from bash completion.
      Teach bash how to complete options for git-name-rev.
      Add current branch in PS1 support to git-completion.bash.
      Teach bash how to complete git-format-patch.
      Teach bash how to complete git-cherry-pick.
      Teach bash how to complete git-rebase.
      Teach bash about git log/show/whatchanged options.
      Support bash completion of refs/remote.
      Teach bash about git-repo-config.
      Support --strategy=x completion in addition to --strategy x.
      Cache the list of merge strategies and available commands during load.
      Teach bash about git-am/git-apply and their whitespace options.
      Teach bash how to complete long options for git-commit.
      Fix broken bash completion of local refs.
      Remove uncontested renamed files during merge.
      Avoid accessing a slow working copy during diffcore operations.
      Provide more meaningful output from 'git init-db'.
      Enable reflogs by default in any repository with a working directory.
      Teach bash the new features of 'git show'.
      Suggest use of "git add file1 file2" when there is nothing to commit.
      Align section headers of 'git status' to new 'git add'.
      Default GIT_COMMITTER_NAME to login name in recieve-pack.
      Suggest 'add' in am/revert/cherry-pick.
      Rename imap-send's internal info/warn functions.
      Introduce a global level warn() function.
      Use extended SHA1 syntax in merge-recursive conflicts.
      Display 'theirs' branch name when possible in merge.
      Rename gitfakemmap to git_mmap.
      Switch git_mmap to use pread.

Terje Sten Bjerkseth (1):
      Fix system header problems on Mac OS X

Uwe Kleine-König (1):
      Fix documentation copy&paste typo


Version v1.4.4.5; changes since v1.4.4.4:
-----------------------------------------

Nicolas Pitre (5):
      clean up pack index handling a bit
      clean up and optimize nth_packed_object_sha1() usage
      get rid of num_packed_objects()
      pack-objects: learn about pack index version 2
      sha1_file.c: learn about index version 2


Version v1.4.4.4; changes since v1.4.4.3:
-----------------------------------------

Johannes Schindelin (1):
      diff --check: fix off by one error

Junio C Hamano (3):
      spurious .sp in manpages
      Fix infinite loop when deleting multiple packed refs.
      pack-check.c::verify_packfile(): don't run SHA-1 update on huge data


Version v1.4.4.3; changes since v1.4.4.2:
-----------------------------------------

Alex Riesen (1):
      Clarify fetch error for missing objects.

Brian Gernhardt (1):
      Move Fink and Ports check to after config file

Chris Wright (1):
      no need to install manpages as executable

Eric Wong (2):
      git-svn: exit with status 1 for test failures
      git-svn: correctly display fatal() error messages

Jim Meyering (1):
      Don't use memcpy when source and dest. buffers may overlap

Junio C Hamano (1):
      GIT 1.4.4.3

Martin Langhoff (1):
      cvsserver: Avoid miscounting bytes in Perl v5.8.x

Shawn O. Pearce (2):
      Make sure the empty tree exists when needed in merge-recursive.
      Bypass expensive content comparsion during rename detection.


Version v1.4.4.2; changes since v1.4.4.1:
-----------------------------------------

Alex Riesen (1):
      git-blame: fix rev parameter handling.

Andy Parkins (2):
      Increase length of function name buffer
      Document git-repo-config --bool/--int options.

Eric Wong (4):
      git-svn: error out from dcommit on a parent-less commit
      git-svn: correctly handle revision 0 in SVN repositories
      git-svn: preserve uncommitted changes after dcommit
      git-svn: avoid fetching files twice in the same revision

Johannes Schindelin (1):
      git-mv: search more precisely for source directory in index

Junio C Hamano (5):
      git blame -C: fix output format tweaks when crossing file boundary.
      tutorial: talk about user.name early and don't start with commit -a
      receive-pack: do not insist on fast-forward outside refs/heads/
      unpack-trees: make sure "df_conflict_entry.name" is NUL terminated.
      git-reset to remove "$GIT_DIR/MERGE_MSG"

René Scharfe (1):
      archive-zip: don't use sizeof(struct ...)


Version v1.4.4.1; changes since v1.4.4:
---------------------------------------

Alexandre Julliard (1):
      gitweb: Put back shortlog instead of graphiclog in the project list.

Chris Riddoch (1):
      Move --pretty options into Documentation/pretty-formats.txt

Jim Meyering (1):
      Run "git repack -a -d" once more at end, if there's 1MB or more of not-packed data.

Johannes Schindelin (1):
      Seek back to current filepos when mmap()ing with NO_MMAP

Junio C Hamano (7):
      git-checkout: do not allow -f and -m at the same time.
      git-checkout: allow pathspec to recover lost working tree directory
      convert-objects: set _XOPEN_SOURCE to 600
      git-fetch: follow lightweit tags as well.
      do_for_each_ref: perform the same sanity check for leftovers.
      trust-executable-bit: fix breakage for symlinks
      GIT 1.4.4.1

Linus Torvalds (2):
      git-pull: allow pulling into an empty repository
      "git fmt-merge-msg" SIGSEGV

Michal Rokos (1):
      archive: use setvbuf() instead of setlinebuf()

Paolo Ciarrocchi (2):
      Teach SubmittingPatches about git-commit -s
      Doc: Make comment about merging in tutorial.txt more clear

Petr Baudis (4):
      Fix git-for-each-refs broken for tags
      git-apply: Documentation typo fix
      Documentation: Define symref and update HEAD description
      Documentation: Correct alternates documentation, document http-alternates

René Scharfe (4):
      sparse fix: non-ANSI function declaration
      sparse fix: Using plain integer as NULL pointer
      git-apply: slightly clean up bitfield usage
      Document git-runstatus


Version v1.4.4; changes since v1.4.4-rc2:
-----------------------------------------

Johannes Sixt (2):
      test-lib.sh: A command dying due to a signal is an unexpected failure.
      Catch errors when writing an index that contains invalid objects.

Jonas Fonseca (1):
      git-update-index(1): fix use of quoting in section title

Junio C Hamano (1):
      GIT 1.4.4

Robin Rosenberg (1):
      Rework cvsexportcommit to handle binary files for all cases.


Version v1.4.4-rc2; changes since v1.4.4-rc1:
---------------------------------------------

Eric Wong (3):
      git-svn: avoid printing filenames of files we're not tracking
      git-svn: don't die on rebuild when --upgrade is specified
      git-svn: fix dcommit losing changes when out-of-date from svn

Jakub Narębski (3):
      gitweb: Better git-unquoting and gitweb-quoting of pathnames
      gitweb: Use character or octal escape codes (and add span.cntrl) in esc_path
      gitweb: New improved patchset view

Junio C Hamano (14):
      gitweb: fix disabling of "forks"
      gitweb: minimally fix "fork" support.
      gitweb: do not give blame link unconditionally in diff-tree view
      git-status: quote LF in its output
      git-pickaxe: retire pickaxe
      gitweb: protect blob and diff output lines from controls.
      gitweb: protect commit messages from controls.
      gitweb: fix unmatched div in commitdiff
      Documentation: move blame examples
      git-annotate: no need to exec blame; it is built-in now.
      git-annotate: fix -S on graft file with comments.
      path-list: fix path-list-insert return value
      git-cvsserver: read from git with -z to get non-ASCII pathnames.
      GIT 1.4.4-rc2

OGAWA Hirofumi (1):
      gitk: Fix nextfile() and add prevfile()

Petr Baudis (1):
      Nicer error messages in case saving an object to db goes wrong

Robert Shearman (1):
      git-rebase: Use --ignore-if-in-upstream option when executing git-format-patch.


Version v1.4.4-rc1; changes since v1.4.3.5:
-------------------------------------------

Alan Chandler (1):
      Gitweb - provide site headers and footers

Alexandre Julliard (5):
      pack-refs: Store the full name of the ref even when packing only tags.
      git.el: Added functions for moving to the next/prev unmerged file.
      git.el: Added a function to open the current file in another window.
      git.el: Move point after the log message header when entering log-edit mode.
      git.el: Include MERGE_MSG in the log-edit buffer even when not committing a merge.

Andy Parkins (2):
      Make filenames line up in git-status output
      Remove uneccessarily similar printf() from print_ref_list() in builtin-branch

Andy Whitcroft (2):
      cvsimport: move over to using git-for-each-ref to read refs.
      git-for-each-ref: improve the documentation on scripting modes

Aneesh Kumar K.V (1):
      gitweb: Remove extra "/" in path names for git_get_project_list

Christian Couder (12):
      Add [-s|--hash] option to Linus' show-ref.
      Use Linus' show ref in "git-branch.sh".
      Document git-show-ref [-s|--hash] option.
      Fix show-ref usage for --dereference.
      Add pack-refs and show-ref test cases.
      When creating branch c/d check that branch c does not already exists.
      Uncomment test case: git branch c/d should barf if branch c exists.
      Fix a remove_empty_dir_recursive problem.
      Clean up "git-branch.sh" and add remove recursive dir test cases.
      Use git-update-ref to delete a tag instead of rm()ing the ref file.
      Check that a tag exists using show-ref instead of looking for the ref file.
      Do not create tag leading directories since git update-ref does it.

Dennis Stosberg (3):
      lock_ref_sha1_basic does not remove empty directories on BSD
      Remove bashism from t3210-pack-refs.sh
      Bash completion support for aliases

Dmitry V. Levin (1):
      git-clone: define die() and use it.

Edgar Toernig (1):
      Use memmove instead of memcpy for overlapping areas

Eric Wong (3):
      git-send-email: do not pass custom Date: header
      git-svn: avoid printing filenames of files we're not tracking
      git-svn: don't die on rebuild when --upgrade is specified

Jakub Narębski (14):
      gitweb: Improve git_print_page_path
      gitweb: Add '..' (up directory) to tree view if applicable
      gitweb: Get rid of git_print_simplified_log
      gitweb: Filter out commit ID from @difftree in git_commit and git_commitdiff
      gitweb: Print commit message without title in commitdiff only if there is any
      gitweb: Use --no-commit-id in git_commit and git_commitdiff
      Documentation: Update information about <format> in git-for-each-ref
      gitweb: Move git_get_last_activity subroutine earlier
      gitweb: Add "next" link to commitdiff view
      gitweb: Secure against commit-ish/tree-ish with the same name as path
      gitweb: Use 's' regexp modifier to secure against filenames with LF
      gitweb: Use git-for-each-ref to generate list of heads and/or tags
      gitweb: Output also empty patches in "commitdiff" view
      gitweb: Better support for non-CSS aware web browsers

Jeff King (4):
      wt-status: use simplified resolve_ref to find current branch
      gitignore: git-pack-refs is a generated file.
      gitignore: git-show-ref is a generated file.
      git-pickaxe: work properly in a subdirectory.

Jim Meyering (1):
      Don't use $author_name undefined when $from contains no /\s</.

Johannes Schindelin (3):
      Fix git-update-index --again
      show-branch: mark active branch with a '*' again
      Turn on recursive with --summary

Jonas Fonseca (1):
      Add man page for git-show-ref

Junio C Hamano (96):
      Add git-for-each-ref: helper for language bindings
      Fix t1400-update-ref test minimally
      fsck-objects: adjust to resolve_ref() clean-up.
      symbolit-ref: fix resolve_ref conversion.
      Add callback data to for_each_ref() family.
      Tell between packed, unpacked and symbolic refs.
      pack-refs: do not pack symbolic refs.
      git-pack-refs --prune
      pack-refs: fix git_path() usage.
      lock_ref_sha1_basic: remove unused parameter "plen".
      Clean-up lock-ref implementation
      update-ref: -d flag and ref creation safety.
      update a few Porcelain-ish for ref lock safety.
      Teach receive-pack about ref-log
      receive-pack: call setup_ident before git_config
      grep --all-match
      teach revision walker about --all-match.
      git-diff/git-apply: make diff output a bit friendlier to GNU patch (part 1)
      ref locking: allow 'foo' when 'foo/bar' used to exist but not anymore.
      refs: minor restructuring of cached refs data.
      lock_ref_sha1(): do not sometimes error() and sometimes die().
      lock_ref_sha1(): check D/F conflict with packed ref when creating.
      delete_ref(): delete packed ref
      git-branch: remove D/F check done by hand.
      show-ref --hash=len, --abbrev=len, and --abbrev
      git-fetch: adjust to packed-refs.
      Fix refs.c;:repack_without_ref() clean-up path
      gitweb: make leftmost column of blame less cluttered.
      git-fetch: do not look into $GIT_DIR/refs to see if a tag exists.
      pack-refs: use lockfile as everybody else does.
      gitweb: prepare for repositories with packed refs.
      Revert 954a6183756a073723a7c9fd8d2feb13132876b0
      pack-refs: call fflush before fsync.
      blame.c: whitespace and formatting clean-up.
      git-blame: --show-name (and -f)
      git-blame: --show-number (and -n)
      blame.c: move code to output metainfo into a separate function.
      git-send-email: do not drop custom headers the user prepared
      ref-log: allow ref@{count} syntax.
      git-send-email: real name with period need to be dq-quoted on From: line
      git-blame --porcelain
      gitweb: use blame --porcelain
      Make git-send-email detect mbox-style patches more readily
      core.logallrefupdates create new log file only for branch heads.
      git-pack-refs --all
      core.logallrefupdates thinko-fix
      pack-objects: document --delta-base-offset option
      blame: Document and add help text for -f, -n, and -p
      gitweb: spell "blame --porcelain" with -p
      git-repack: repo.usedeltabaseoffset
      diff --numstat
      gitweb: use for-each-ref to show the latest activity across branches
      ref-log: fix D/F conflict coming from deleted refs.
      git-pickaxe: blame rewritten.
      git-pickaxe -M: blame line movements within a file.
      git-pickaxe -C: blame cut-and-pasted lines.
      git-pickaxe: pagenate output by default.
      git-pickaxe: fix nth_line()
      git-pickaxe: improve "best match" heuristics
      git-pickaxe: introduce heuristics to avoid "trivial" chunks
      git-pickaxe: do not keep commit buffer.
      git-pickaxe: do not confuse two origins that are the same.
      git-pickaxe: get rid of wasteful find_origin().
      git-pickaxe: swap comparison loop used for -C
      sha1_name.c: avoid compilation warnings.
      t3200: git-branch testsuite update
      tests: merge-recursive is usable without Python
      merge: loosen overcautious "working file will be lost" check.
      merge-recursive: use abbreviated commit object name.
      merge-recursive: make a few functions static.
      merge-recursive: adjust to loosened "working file clobbered" check
      t6022: ignoring untracked files by merge-recursive when they do not matter
      Documentation: fix git-format-patch mark-up and link it from git.txt
      send-pack --keep: do not explode into loose objects on the receiving end.
      git-pickaxe: WIP to refcount origin structure.
      git-pickaxe: allow -Ln,m as well as -L n,m
      git-pickaxe: refcount origin correctly in find_copy_in_parent()
      git-pickaxe: tighten sanity checks.
      Revert "send-pack --keep: do not explode into loose objects on the receiving end."
      git-pickaxe: split find_origin() into find_rename() and find_origin().
      git-pickaxe: cache one already found path per commit.
      Introduce a new revision set operator <rev>^!
      branch: work in subdirectories.
      for-each-ref: "creator" and "creatordate" fields
      git-pickaxe: rename detection optimization
      git-pickaxe: simplify Octopus merges further
      git-pickaxe: re-scan the blob after making progress with -M
      git-pickaxe: re-scan the blob after making progress with -C
      git-pickaxe: fix origin refcounting
      cherry is built-in, do not ship git-cherry.sh
      git-blame: add internal statistics to count read blobs.
      git-pickaxe: optimize by avoiding repeated read_sha1_file().
      Document git-pack-refs and link it to git(7).
      git-pickaxe: -L /regexp/,/regexp/
      git-pickaxe: allow "-L <something>,+N"
      GIT 1.4.3-rc1

Karl Wiberg (1):
      ignore-errors requires cl

Lars Hjemli (2):
      Make git-branch a builtin
      Fix show-ref usagestring

Linus Torvalds (8):
      Add "git show-ref" builtin command
      Teach "git checkout" to use git-show-ref
      Start handling references internally as a sorted in-memory list
      Add support for negative refs
      Make ref resolution saner
      Enable the packed refs file format
      Allow '-' in config variable names
      git push: add verbose flag and allow overriding of default target repository

Luben Tuikov (5):
      gitweb: blame: print commit-8 on the leading row of a commit-block
      gitweb: blame: Mouse-over commit-8 shows author and date
      gitweb: blame porcelain: lineno and orig lineno swapped
      git-revert with conflicts to behave as git-merge with conflicts
      gitweb: esc_html() author in blame

Martin Waitz (2):
      gitweb: start to generate PATH_INFO URLs.
      gitweb: warn if feature cannot be overridden.

Matthew Wilcox (1):
      Add --dry-run option to git-send-email

Nicolas Pitre (24):
      introduce delta objects with offset to base
      teach git-unpack-objects about deltas with offset to base
      teach git-index-pack about deltas with offset to base
      make git-pack-objects able to create deltas with offset to base
      make pack data reuse compatible with both delta types
      let the GIT native protocol use offsets to delta base when possible
      zap a debug remnant
      allow delta data reuse even if base object is a preferred base
      index-pack: compare only the first 20-bytes of the key.
      add the capability for index-pack to read from a stream
      enable index-pack streaming capability
      make index-pack able to complete thin packs.
      add progress status to index-pack
      mimic unpack-objects when --stdin is used with index-pack
      enhance clone and fetch -k experience
      index-pack: minor fixes to comment and function name
      missing small substitution
      make git-push a bit more verbose
      Allow pack header preprocessing before unpack-objects/index-pack.
      git-fetch can use both --thin and --keep with fetch-pack now
      improve fetch-pack's handling of kept packs
      have index-pack create .keep file more carefully
      remove .keep pack lock files when done with refs update
      git-pack-objects progress flag documentation and cleanup

Petr Baudis (11):
      Fix broken sha1 locking
      Fix buggy ref recording
      gitweb: Document features better
      gitweb: Fix search form when PATH_INFO is enabled
      bisect reset: Leave the tree in usable state if git-checkout failed
      gitweb: Restore object-named links in item lists
      gitweb: Make search type a popup menu
      gitweb: Do not automatically append " git" to custom site name
      gitweb: Show project's README.html if available
      gitweb: Support for 'forks'
      gitweb: Fix up bogus $stylesheet declarations

René Scharfe (4):
      git-archive --format=zip: use default version ID
      git-archive --format=zip: add symlink support
      Built-in cherry
      Make git-cherry handle root trees

Robert Shearman (2):
      git-rebase: Use --ignore-if-in-upstream option when executing git-format-patch.
      git-rebase: Add a -v option to show a diffstat of the changes upstream at the start of a rebase.

Robin Rosenberg (2):
      Mention that pull can work locally in the synopsis
      Swap the porcelain and plumbing commands in the git man page

Ryan Anderson (1):
      Remove git-annotate.perl and create a builtin-alias for git-blame

Santi Béjar (2):
      fetch: Misc output cleanup
      merge and resolve: Output short hashes and .. in "Updating ..."

Sasha Khapyorsky (2):
      git-svnimport.perl: copying directory from original SVN place
      git-svnimport: support for partial imports

Sean Estabrooks (1):
      Add --global option to git-repo-config.

Sergey Vlasov (2):
      git-send-email: Document support for local sendmail instead of SMTP server
      git-send-email: Read the default SMTP server from the GIT config file

Shawn O. Pearce (15):
      Use column indexes in git-cvsserver where necessary.
      Allow short pack names to git-pack-objects --unpacked=.
      Only repack active packs by skipping over kept packs.
      Teach git-index-pack how to keep a pack file.
      Remove unused variable in receive-pack.
      Move deny_non_fast_forwards handling completely into receive-pack.
      Teach receive-pack how to keep pack files based on object count.
      Added completion support for git-branch.exe.
      Added bash completion support for git-reset.
      Added missing completions for show-branch and merge-base.
      Only load .exe suffix'd completions on Cygwin.
      Bash completion support for remotes in .git/config.
      Take --git-dir into consideration during bash completion.
      Support bash completion on symmetric difference operator.
      Remove more sed invocations from within bash completion.


Version v1.4.3.5; changes since v1.4.3.4:
-----------------------------------------

Alex Riesen (1):
      merge-recursive implicitely depends on trust_executable_bit

Eric Wong (3):
      git-svn: avoid printing filenames of files we're not tracking
      git-svn: don't die on rebuild when --upgrade is specified
      git-svn: fix dcommit losing changes when out-of-date from svn

Jakub Narębski (1):
      Documentation: Transplanting branch with git-rebase --onto

Jeff King (1):
      Fix git-runstatus for repositories containing a file named HEAD

Junio C Hamano (3):
      adjust_shared_perm: chmod() only when needed.
      path-list: fix path-list-insert return value
      git-cvsserver: read from git with -z to get non-ASCII pathnames.

Petr Baudis (1):
      Nicer error messages in case saving an object to db goes wrong

Robert Shearman (1):
      git-rebase: Use --ignore-if-in-upstream option when executing git-format-patch.

Tero Roponen (1):
      remove an unneeded test


Version v1.4.3.4; changes since v1.4.3.3:
-----------------------------------------

Andy Parkins (2):
      Minor grammar fixes for git-diff-index.txt
      git-clone documentation didn't mention --origin as equivalent of -o

Christian Couder (3):
      Remove --syslog in git-daemon inetd documentation examples.
      Documentation: add upload-archive service to git-daemon.
      Documentation: add git in /etc/services.

Edgar Toernig (1):
      Use memmove instead of memcpy for overlapping areas

J. Bruce Fields (1):
      Documentation: updates to "Everyday GIT"

Jakub Narębski (3):
      diff-format.txt: Combined diff format documentation supplement
      diff-format.txt: Correct information about pathnames quoting in patch format
      gitweb: Check git base URLs before generating URL from it

Jan Harkes (1):
      Continue traversal when rev-list --unpacked finds a packed commit.

Johannes Schindelin (1):
      link_temp_to_file: call adjust_shared_perm() only when we created the directory

Junio C Hamano (9):
      Documentation: clarify refname disambiguation rules.
      combine-diff: a few more finishing touches.
      combine-diff: fix hunk_comment_line logic.
      combine-diff: honour --no-commit-id
      Surround "#define DEBUG 0" with "#ifndef DEBUG..#endif"
      quote.c: ensure the same quoting across platforms.
      revision traversal: --unpacked does not limit commit list anymore.
      link_temp_to_file: don't leave the path truncated on adjust_shared_perm failure
      apply: handle "traditional" creation/deletion diff correctly.

Nicolas Pitre (1):
      pack-objects doesn't create random pack names

René Scharfe (1):
      git-cherry: document limit and add diagram

Shawn O. Pearce (3):
      Use ULONG_MAX rather than implicit cast of -1.
      Remove SIMPLE_PROGRAMS and make git-daemon a normal program.
      Remove unsupported C99 style struct initializers in git-archive.


Version v1.4.3.3; changes since v1.4.3.2:
-----------------------------------------

Eric Wong (1):
      git-svn: fix symlink-to-file changes when using command-line svn 1.4.0

Gerrit Pape (1):
      Set $HOME for selftests

Junio C Hamano (5):
      Documentation: note about contrib/.
      RPM package re-classification.
      Refer to git-rev-parse:Specifying Revisions from git.txt
      Update cherry documentation.
      Documentation/SubmittingPatches: 3+1 != 6

Petr Baudis (1):
      xdiff: Match GNU diff behaviour when deciding hunk comment worthiness of lines

Tuncer Ayaz (1):
      git-fetch.sh printed protocol fix


Version v1.4.3.2; changes since v1.4.3.1:
-----------------------------------------

Alexandre Julliard (1):
      prune-packed: Fix uninitialized variable.

J. Bruce Fields (1):
      Make prune also run prune-packed

Jakub Narębski (2):
      gitweb: Whitespace cleanup - tabs are for indent, spaces are for align (2)
      gitweb: Do not esc_html $basedir argument to git_print_tree_entry

Jim Meyering (2):
      git-clone: honor --quiet
      xdiff/xemit.c (xdl_find_func): Elide trailing white space in a context header.

Junio C Hamano (2):
      pager: default to LESS=FRSX not LESS=FRS
      daemon: do not die on older clients.

Karl Wiberg (1):
      git-vc: better installation instructions

Lars Hjemli (1):
      Fix usagestring for git-branch

Petr Baudis (1):
      gitweb: Fix setting $/ in parse_commit()

René Scharfe (1):
      git-merge: show usage if run without arguments

Santi Béjar (1):
      Documentation for the [remote] config


Version v1.4.3.1; changes since v1.4.3:
---------------------------------------

Junio C Hamano (1):
      pager: default to LESS=FRS

Lars Hjemli (1):
      Fix typo in show-index.c

Linus Torvalds (1):
      git-apply: prepare for upcoming GNU diff -u format change.

Nguyễn Thái Ngọc Duy (2):
      Reject hexstring longer than 40-bytes in get_short_sha1()
      Add revspec documentation for ':path', ':[0-3]:path' and git-describe

Nicolas Pitre (1):
      reduce delta head inflated size


Version v1.4.3; changes since v1.4.3-rc3:
-----------------------------------------

Andy Whitcroft (1):
      add proper dependancies on the xdiff source

Junio C Hamano (1):
      Revert "move pack creation to version 3"

Linus Torvalds (1):
      Fix hash function in xdiff library

Markus Amsler (1):
      git-imap-send: Strip smtp From_ header from imap message.

Petr Baudis (1):
      svnimport: Fix broken tags being generated

René Scharfe (2):
      Make write_sha1_file_prepare() void
      Replace open-coded version of hash_sha1_file()


Version v1.4.3-rc3; changes since v1.4.3-rc2:
---------------------------------------------

Christian Couder (1):
      Fix tracing when GIT_TRACE is set to an empty string.

Eric Wong (8):
      git-svn: multi-init saves and reuses --tags and --branches arguments
      git-svn: log command fixes
      Documentation/git-svn: document some of the newer features
      git-svn: -h(elp) message formatting fixes
      commit: fix a segfault when displaying a commit with unreachable parents
      git-svn: add a message encouraging use of SVN::* libraries
      git-svn: fix commits over svn+ssh://
      git-svn: reduce memory usage for large commits

Johannes Schindelin (3):
      diff: fix 2 whitespace issues
      cvsserver: Show correct letters for modified, removed and added files
      cvsserver: fix "cvs diff" in a subdirectory

Junio C Hamano (6):
      Add WEBDAV timeout to http-fetch.
      git-fetch --update-head-ok typofix
      git-pull: we say commit X, not X commit.
      git.spec.in: perl subpackage is installed in perl_vendorlib not vendorarch
      apply --numstat -z: line termination fix.
      t4015: work-around here document problem on Cygwin.

Martin Waitz (1):
      paginate git-diff by default

Nicolas Pitre (1):
      atomic write for sideband remote messages

René Scharfe (3):
      Documentation: add missing second colons and remove a typo
      Add hash_sha1_file()
      Make write_sha1_file_prepare() static

Yasushi SHOJI (1):
      clone: the given repository dir should be relative to $PWD


Version v1.4.3-rc2; changes since v1.4.3-rc1:
---------------------------------------------

Alan Chandler (2):
      Update the gitweb/README file to include setting the GITWEB_CONFIG environment
      Fix usage string to match that given in the man page

Alexandre Julliard (2):
      git.el: Fixed inverted "renamed from/to" message.
      vc-git.el: Switch to using git-blame instead of git-annotate.

Dennis Stosberg (2):
      lock_ref_sha1_basic does not remove empty directories on BSD
      Add default values for --window and --depth to the docs

Franck Bui-Huu (1):
      Add git-upload-archive to the main git man page

Jakub Narębski (1):
      gitweb: Cleanup Git logo and Git logo target generation

Junio C Hamano (9):
      Makefile: install and clean merge-recur, still.
      git-mv: invalidate the removed path properly in cache-tree
      git-push: .git/remotes/ file does not require SP after colon
      escape tilde in Documentation/git-rev-parse.txt
      tar-tree deprecation: we eat our own dog food.
      gitweb: Make the Git logo link target to point to the homepage
      git-send-email: avoid uninitialized variable warning.
      cherry-pick: make -r the default
      Fix git-revert

Luben Tuikov (3):
      gitweb: Escape ESCAPE (\e) character
      gitweb: Do not print "log" and "shortlog" redundantly in commit view
      gitweb: blame: Minimize vertical table row padding

Martin Waitz (4):
      gitweb: document webserver configuration for common gitweb/repo URLs.
      git-commit: cleanup unused function.
      git-commit: fix coding style.
      test-lib: separate individual test better in verbose mode.

Nicolas Pitre (1):
      add commit count options to git-shortlog

Petr Baudis (4):
      Show snapshot link in shortlog only if have_snapsho
      gitweb: Separate (new) and (deleted) in commitdiff by a space
      gitweb: Handle commits with empty commit messages more reasonably
      gitweb: [commit view] Do not suppress commitdiff link in root commit

René Scharfe (1):
      git-tar-tree: don't RUN_SETUP

Robin Rosenberg (1):
      Error in test description of t1200-tutorial

Yasushi SHOJI (1):
      gitweb: refactor decode() for utf8 conversion


Version v1.4.3-rc1; changes since v1.4.2.4:
-------------------------------------------

Alex Riesen (3):
      Use const for interpolate arguments
      fix daemon.c compilation for NO_IPV6=1
      do not discard constness in interp_set_entry value argument

Andy Whitcroft (3):
      send-pack: remove remote reference limit
      send-pack: switch to using git-rev-list --stdin
      svnimport: add support for parsing From: lines for author

Aneesh Kumar K.V (4):
      gitweb: Support for snapshot
      gitweb: fix snapshot support
      gitweb: Make blame and snapshot a feature.
      gitweb: Fix git_blame

Art Haas (1):
      Patch for http-fetch.c and older curl releases

Christian Couder (8):
      Trace into open fd and refactor tracing code.
      Trace into a file or an open fd and refactor tracing code.
      Update GIT_TRACE documentation.
      Fix memory leak in prepend_to_path (git.c).
      Move add_to_string to "quote.c" and make it extern.
      Fix a memory leak in "connect.c" and die if command too long.
      Fix space in string " false" problem in "trace.c".
      Remove empty ref directories that prevent creating a ref.

David Rientjes (18):
      blame.c return cleanup
      builtin-grep.c cleanup
      builtin-push.c cleanup
      diff.c cleanup
      http-push.c cleanup
      read-cache.c cleanup
      Make pprint_tag void and cleans up call in cmd_cat_file.
      Make show_entry void
      Make checkout_all void.
      Make fsck_dir void.
      Make pack_objects void.
      Make track_tree_refs void.
      Make upload_pack void and remove conditional return.
      Make sha1flush void and remove conditional return.
      make inline is_null_sha1 global
      use appropriate typedefs
      remove unnecessary initializations
      Do not use memcmp(sha1_1, sha1_2, 20) with hardcoded length.

Dennis Stosberg (10):
      "test" in Solaris' /bin/sh does not support -e
      Makefile fix for Solaris
      Add possibility to pass CFLAGS and LDFLAGS specific to the perl subdir
      Solaris has strlcpy() at least since version 8
      Look for sockaddr_storage in sys/socket.h
      Fix detection of ipv6 on Solaris
      Fix compilation with Sun CC
      gitweb: Use --git-dir parameter instead of setting $ENV{'GIT_DIR'}
      gitweb: Remove forgotten call to git_to_hash
      use do() instead of require() to include configuration

Dmitry V. Levin (3):
      Make count-objects, describe and merge-tree work in subdirectory
      Documentation: Fix broken links
      Handle invalid argc gently

Eric Wong (5):
      pass DESTDIR to the generated perl/Makefile
      git-svn: establish new connections on commit after fork
      git-svn: recommend rebase for syncing against an SVN repo
      git-svn: add the 'dcommit' command
      git-svn: stop repeatedly reusing the first commit message with dcommit

Franck Bui-Huu (10):
      Add a newline before appending "Signed-off-by: " line
      log-tree.c: cleanup a bit append_signoff()
      Add git-archive
      git-archive: wire up TAR format.
      git-archive: wire up ZIP format.
      Add git-upload-archive
      connect.c: finish_connect(): allow null pid parameter
      Test return value of finish_connect()
      upload-archive: monitor child communication even more carefully.
      git-archive: update documentation

Haavard Skinnemoen (1):
      git-send-email: Don't set author_not_sender from Cc: lines

Jakub Narębski (138):
      gitweb: whitespace cleanup
      gitweb: Use list for of open for running git commands, thorougly.
      gitweb: simplify git_get_hash_by_path
      gitweb: More explicit error messages for open "-|"
      gitweb: Cleanup - chomp $line in consistent style
      gitweb: Cleanup - chomp @lines in consistent style
      gitweb: Add git_page_nav for later use
      gitweb: Navbar refactoring - use git_page_nav to generate navigation bar
      gitweb: Replace form-feed character by ^L
      gitweb: Show project descriptions with utf-8 characters in project list correctly
      gitweb: Add "\n" after <br/> in git_page_nav
      gitweb: Pager refactoring - use git_get_paging_nav for pagination
      gitweb: Remove $project from git_get_paging_nav arguments
      gitweb: Headers refactoring - use git_header_div for header divs
      gitweb: Remove characters entities entirely when shortening string
      gitweb: Ref refactoring - use git_get_referencing for marking tagged/head commits
      gitweb: Refactor generation of shortlog, tags and heads body
      gitweb: do not quote path for list version of open "-|"
      gitweb: Remove characters entities entirely when shortening string -- correction
      gitweb: Reordering code and dividing it into categories
      gitweb: Refactoring git_project_list
      autoconf: Add support for setting SHELL_PATH and PERL_PATH
      autoconf: Move site configuration section earlier in configure.ac
      autoconf: Add support for setting PYTHON_PATH or NO_PYTHON
      autoconf: Check for ll hh j z t size specifiers introduced by C99
      autoconf: Typo cleanup, reordering etc.
      Copy description of new build configuration variables to configure.ac
      autoconf: Set NEEDS_LIBICONV unconditionally if there is no iconv in libc
      gitweb: Separate input validation and dispatch, add comment about opml action
      gitweb: die_error first (optional) parameter is HTTP status
      gitweb: Use undef for die_error to use default first (status) parameter value
      gitweb: Don't undefine query parameter related variables before die_error
      gitweb: Cleanup and uniquify error messages
      gitweb: No periods for error messages
      gitweb: No error messages with unescaped/unprotected user input
      gitweb: PATH_INFO=/ means no project
      gitweb: Inline $rss_link
      gitweb: Refactor untabifying - converting tabs to spaces
      gitweb: fix commitdiff for root commits
      gitweb: Skip nonmatching lines in difftree output, consistently
      autoconf: Unset NO_STH and NEED_STH when it is detected not needed
      gitweb: Remove unused variables in git_shortlog_body and git_heads
      autoconf: Add configure target to main Makefile
      autoconf: Error out on --without-shell and --without-perl
      autoconf: Improvements in NO_PYTHON/PYTHON_PATH handling
      autoconf: Move variables which we always set to config.mak.in
      autoconf: It is --without-python, not --no-python
      autoconf: Add support for setting CURLDIR, OPENSSLDIR, EXPATDIR
      gitweb: Whitespace cleanup - tabs are for indent, spaces are for align
      gitweb: Great subroutines renaming
      gitweb: Separate ref parsing in git_get_refs_list into parse_ref
      gitweb: Refactor printing shortened title in git_shortlog_body and git_tags_body
      gitweb: Separate main part of git_history into git_history_body
      gitweb: Separate finding project owner into git_get_project_owner
      gitweb: Change appereance of marker of refs pointing to given object
      gitweb: Skip comments in mime.types like file
      gitweb: True fix: Support for the standard mime.types map in gitweb
      gitweb: Separate printing difftree in git_commit into git_difftree_body
      gitweb: Show project's git URL on summary page
      gitweb: Add support for per project git URLs
      gitweb: Uniquify version info output, add meta generator in page header
      gitweb: Refactor printing commit message
      gitweb: Added parse_difftree_raw_line function for later use
      gitweb: Use parse_difftree_raw_line in git_difftree_body
      gitweb: bugfix: a.list formatting regression
      gitweb: Replace some presentational HTML by CSS
      gitweb: Whitespace cleanup: realign, reindent
      gitweb: Use underscore instead of hyphen to separate words in HTTP headers names
      gitweb: Route rest of action subroutines through %actions
      gitweb: Use here-doc
      gitweb: Drop the href() params which keys are not in %mapping
      gitweb: Sort CGI parameters returned by href()
      gitweb: Use git-diff-tree patch output for commitdiff
      gitweb: Show information about incomplete lines in commitdiff
      gitweb: Remove invalid comment in format_diff_line
      gitweb: Streamify patch output in git_commitdiff
      gitweb: Add git_get_{following,preceding}_references functions
      gitweb: Faster return from git_get_preceding_references if possible
      gitweb: Add git_get_rev_name_tags function
      gitweb: Use git_get_name_rev_tags for commitdiff_plain X-Git-Tag: header
      gitweb: Add support for hash_parent_base parameter for blobdiffs
      gitweb: Allow for pre-parsed difftree info in git_patchset_body
      gitweb: Parse two-line from-file/to-file diff header in git_patchset_body
      gitweb: Add invisible hyperlink to from-file/to-file diff header
      gitweb: Always display link to blobdiff_plain in git_blobdiff
      gitweb: Change here-doc back for style consistency in git_blobdiff
      gitweb: Use git-diff-tree or git-diff patch output for blobdiff
      gitweb: git_blobdiff_plain is git_blobdiff('plain')
      gitweb: Remove git_diff_print subroutine
      gitweb: Remove creating directory for temporary files
      gitweb: git_annotate didn't expect negative numeric timezone
      gitweb: Remove workaround for git-diff bug fixed in f82cd3c
      gitweb: Improve comments about gitweb features configuration
      gitweb: blobs defined by non-textual hash ids can be cached
      gitweb: Fix typo in git_difftree_body
      gitweb: Fix typo in git_patchset_body
      gitweb: Remove unused git_get_{preceding,following}_references
      gitweb: Remove git_to_hash function
      gitweb: Use @diff_opts, default ('M'), as git-diff and git-diff-tree paramete
      gitweb: Make git_print_log generic; git_print_simplified_log uses it
      gitweb: Do not remove signoff lines in git_print_simplified_log
      gitweb: Add author information to commitdiff view
      gitweb: git_print_log: signoff line is non-empty line
      gitweb: Add diff tree, with links to patches, to commitdiff view
      gitweb: Add local time and timezone to git_print_authorship
      gitweb: Move git-ls-tree output parsing to parse_ls_tree_line
      gitweb: Separate printing of git_tree row into git_print_tree_entry
      gitweb: Extend parse_difftree_raw_line to save commit info
      gitweb: Change the name of diff to parent link in "commit" view to "diff
      gitweb: Add GIT favicon, assuming image/png type
      gitweb: Correct typo: '==' instead of 'eq' in git_difftree_body
      gitweb: Divide page path into directories -- path's "breadcrumbs"
      autoconf: Add -liconv to LIBS when NEEDS_LIBICONV
      autoconf: Check for subprocess.py
      autoconf: Quote AC_CACHE_CHECK arguments
      autoconf: Fix copy'n'paste error
      autoconf: Set NO_ICONV if iconv is found neither in libc, nor in libiconv
      autoconf: Add support for setting NO_ICONV and ICONVDIR
      autoconf: Add config.cache to .gitignore
      gitweb: Make pickaxe search a feature
      gitweb: Paginate history output
      gitweb: Use File::Find::find in git_get_projects_list
      gitweb: Do not parse refs by hand, use git-peek-remote instead
      gitweb: Add git_project_index for generating index.aux
      gitweb: Allow for href() to be used for links without project param
      gitweb: Add link to "project_index" view to "project_list" page
      gitweb: Fix mimetype_guess_file for files with multiple extensions
      gitweb: Even more support for PATH_INFO based URLs
      gitweb: Require project for almost all actions
      gitweb: Always use git-peek-remote in git_get_references
      gitweb: Make git_get_refs_list do work of git_get_references
      gitweb: Fix thinko in git_tags and git_heads
      gitweb: Make git_get_hash_by_path check type if provided
      gitweb: Strip trailing slashes from $path in git_get_hash_by_path
      gitweb: Use "return" instead of "return undef" for some subs
      gitweb: Split validate_input into validate_pathname and validate_refname
      gitweb: Add git_url subroutine, and use it to quote full URLs
      gitweb: Quote filename in HTTP Content-Disposition: header

Jeff King (9):
      gitweb: optionally read config from GITWEB_CONFIG
      diff: support custom callbacks for output
      Move color option parsing out of diff.c and into color.[ch]
      git-commit.sh: convert run_status to a C builtin
      git-status: document colorization config options
      contrib/vim: add syntax highlighting file for commits
      wt-status: remove extraneous newline from 'deleted:' output
      rev-list: fix segfault with --{author,committer,grep}
      git-repack: allow git-repack to run in subdirectory

Johannes Schindelin (35):
      Git.xs: older perl do not know const char *
      Status update on merge-recursive in C
      Cumulative update of merge-recursive in C
      merge-recur: Convert variable names to lower_case
      merge-recur: Get rid of debug code
      merge-recur: Remove dead code
      merge-recur: Fix compiler warning with -pedantic
      merge-recur: Cleanup last mixedCase variables...
      merge-recur: Explain why sha_eq() and struct stage_data cannot go
      merge-recur: fix thinko in unique_path()
      read-trees: refactor the unpack_trees() part
      read-tree: move merge functions to the library
      merge-recur: use the unpack_trees() interface instead of exec()ing read-tree
      merge-recur: virtual commits shall never be parsed
      merge-recursive: fix rename handling
      http-push: avoid fork() by calling merge_bases() directly
      merge-recur: do not call git-write-tree
      merge-recur: do not setenv("GIT_INDEX_FILE")
      merge-recur: if there is no common ancestor, fake empty one
      merge-recur: try to merge older merge bases first
      merge-recur: do not die unnecessarily
      discard_cache(): discard index, even if no file was mmap()ed
      Add the --color-words option to the diff options family
      builtin-mv: readability patch
      unpack-objects: remove unused variable "eof"
      Makefile: fix typo
      Remove uneeded #include
      fmt-merge-msg: fix off-by-one bug
      Teach runstatus about --untracked
      add receive.denyNonFastforwards config variable
      receive-pack: plug memory leak in fast-forward checking code.
      Document receive.denyNonFastforwards
      runstatus: do not recurse into subdirectories if not needed
      daemon: default to 256 for HOST_NAME_MAX if it is not defined
      diff --stat: ensure at least one '-' for deletions, and one '+' for additions

Jon Loeliger (3):
      Add virtualization support to git-daemon
      Cleaned up git-daemon virtual hosting support.
      Removed memory leaks from interpolation table uses.

Jonas Fonseca (21):
      git-apply(1): document missing options and improve existing ones
      git-ls-remote(1): document --upload-pack
      git-blame(1): mention options in the synopsis and advertise pickaxe
      gitk(1): expand the manpage to look less like a template
      git(7): put the synopsis in a verse style paragraph
      gitview.txt: improve asciidoc markup
      git-svn(1): improve asciidoc markup
      describe: fix off-by-one error in --abbrev=40 handling
      Use PATH_MAX instead of MAXPATHLEN
      Use xrealloc instead of realloc
      Use fstat instead of fseek
      Use xcalloc instead of calloc
      Add --relative-date option to the revision interface
      git(7): move gitk(1) to the list of porcelain commands
      Use xmalloc instead of malloc
      Include config.mak.autogen in the doc Makefile
      git-rev-list(1): group options; reformat; document more options
      git-apply(1): document --unidiff-zero
      git-repack(1): document --window and --depth
      Fix trivial typos and inconsistencies in hooks documentation
      gitk(1): mention --all

Junio C Hamano (125):
      Perl interface: add build-time configuration to allow building with -fPIC
      Perl interface: make testsuite work again.
      perl: fix make clean
      Git.pm: tentative fix to test the freshly built Git.pm
      Perly Git: arrange include path settings properly.
      Makefile: Set USE_PIC on x86-64
      Perly git: work around buggy make implementations.
      Git.pm: clean generated files.
      Perly Git: make sure we do test the freshly built one.
      INSTALL: a tip for running after building but without installing.
      Work around sed and make interactions on the backslash at the end of line.
      upload-pack: use object pointer not copy of sha1 to keep track of has/needs.
      upload-pack: lift MAX_NEEDS and MAX_HAS limitation
      recur vs recursive: help testing without touching too many stuff.
      sha1_file.c: expose map_sha1_file() interface.
      pack-objects: reuse deflated data from new-style loose objects.
      unpack-objects: read configuration data upon startup.
      Makefile: git-merge-recur depends on xdiff libraries.
      gitweb: There can be more than two levels of subdirectories
      gitweb: an obvious cut and paste error.
      gitweb: fix use of uninitialized value.
      gitweb: when showing history of a tree, show tree link not blob
      gitweb: avoid undefined value warning in print_page_path
      gitweb/README: do not bug Kay with gitweb questions anymore
      Makefile: gitweb/gitweb.cgi is now generated.
      gitweb: do not use @@FOO@@ for replaced tokens
      .gitignore: git-merge-recur is a built file.
      Make git-checkout-index a builtin
      builtins: Makefile clean-up
      git.c: Rename NEEDS_PREFIX to RUN_SETUP
      autoconf: fix NEEDS_SSL_WITH_CRYPTO
      autoconf: NO_IPV6
      Racy git: avoid having to be always too careful
      read-cache: tweak racy-git delay logic
      autoconf: clean temporary file mak.append
      git-grep: show pathnames relative to the current directory
      upload-pack: minor clean-up in multi-ack logic
      Fix type of combine-diff.c::show_patch_diff()
      Remove combine-diff.c::uninteresting()
      t4116 apply --reverse test
      git-apply --reverse: simplify reverse option.
      git-apply --binary: clean up and prepare for --reverse
      avoid nanosleep(2)
      Documentation/technical/racy-git.txt
      Add check program "git-check-racy"
      Remove the "delay writing to avoid runtime penalty of racy-git avoidance"
      builtin-grep: remove unused debugging cruft.
      builtin-apply --reverse: two bugfixes.
      diff.c: make binary patch reversible.
      apply --reverse: tie it all together.
      git-apply --reject
      git-apply --reject: send rejects to .rej files.
      git-apply --verbose
      apply --reject: count hunks starting from 1, not 0
      Convert memset(hash,0,20) to hashclr(hash).
      hashcpy/hashcmp remaining bits.
      builtin-grep.c: remove unused debugging piece.
      update-index -g
      git-apply --reject: finishing touches.
      free(NULL) is perfectly valid.
      daemon: prepare for multiple services.
      daemon: add upload-tar service.
      multi-service daemon: documentation
      t5710: fix two thinkos.
      Constness tightening for move/link_temp_to_file()
      consolidate two copies of new style object header parsing code.
      pack-objects: re-validate data we copy from elsewhere.
      Revert "Convert git-annotate to use Git.pm"
      Revert "Git.pm: Introduce fast get_object() method"
      Revert "Make it possible to set up libgit directly (instead of from the environment)"
      pack-objects: fix thinko in revalidate code
      more lightweight revalidation while reusing deflated stream in packing
      unpack-objects desperately salvages objects from a corrupt pack
      revision.c: allow injecting revision parameters after setup_revisions().
      Teach rev-list an option to read revs from the standard input.
      Revert "daemon: add upload-tar service."
      Make apply --binary a no-op.
      diff --binary generates full index on binary files.
      Separate object listing routines out of rev-list
      pack-objects: run rev-list equivalent internally.
      pack-objects: further work on internal rev-list logic.
      pack-objects --unpacked=<existing pack> option.
      get_sha1_hex() micro-optimization
      archive: allow remote to have more formats than we understand.
      Move sideband client side support into reusable form.
      Move sideband server side support into reusable form.
      archive: force line buffered output to stderr
      Add --verbose to git-archive
      Teach --exec to git-archive --remote
      Prepare larger packet buffer for upload-pack protocol.
      Add sideband status report to git-archive protocol
      upload-archive: monitor child communication more carefully.
      builtin-archive.c: rename remote_request() to extract_remote_arg()
      pack-objects: document --revs, --unpacked and --all.
      http-fetch: fix alternates handling.
      unpack-objects -r: call it "recover".
      Document git-grep -[Hh]
      Define fallback PATH_MAX on systems that do not define one in <limits.h>
      Fix git-am safety checks
      http-fetch.c: consolidate code to detect missing fetch target
      Add ftp:// protocol support for git-http-fetch
      t1400: make test debuggable.
      apply --unidiff-zero: loosen sanity checks for --unidiff=0 patches
      builtin-grep: make pieces of it available as library.
      revision traversal: prepare for commit log match.
      revision traversal: --author, --committer, and --grep.
      repack: use only pack-objects, not rev-list.
      Update grep internal for grepping only in head/body
      git log: Unify header_filter and message_filter into one.
      Make hexval() available to others.
      sha1_name.c: understand "describe" output as a valid object name
      diff.c: second war on whitespace.
      git-apply: second war on whitespace.
      Add t5510 to test per branch configuration affecting git-fetch.
      Remove upload-tar and make git-tar-tree a thin wrapper to git-archive
      Deprecate merge-recursive.py
      diff --stat: allow custom diffstat output width.
      diff --stat: color output.
      An illustration of rev-list --parents --pretty=raw
      grep: free expressions and patterns when done.
      grep: fix --fixed-strings combined with expression.
      Contributed bash completion support for core Git tools.
      git-diff -B output fix.
      Remove -fPIC which was only needed for Git.xs
      GIT 1.4.3-rc1

Linus Torvalds (10):
      Relative timestamps in git log
      git-fsck-objects: lacking default references should not be fatal
      Fix git-fsck-objects SIGSEGV/divide-by-zero
      Add "-h/-H" parsing to "git grep"
      Allow multiple "git_path()" uses
      git-log --author and --committer are not left-anchored by default
      Clean up approxidate() in preparation for fixes
      Fix approxidate() to understand more extended numbers
      diff --stat=width[,name-width]: allow custom diffstat output width.
      Fix approxidate() to understand 12:34 AM/PM are 00:34 and 12:34

Liu Yubao (1):
      Fix duplicate xmalloc in builtin-add

Luben Tuikov (19):
      gitweb: git_tree displays blame based on repository config
      gitweb: bugfix: git_commit and git_commitdiff parents
      gitweb: blame table row no highlight fix
      gitweb: bugfix: commitdiff regression
      gitweb: bugfix: git_print_page_path() needs the hash base
      gitweb: tree view: eliminate redundant "blob"
      gitweb: Remove redundant "tree" link
      gitweb: extend blame to show links to diff and previous
      Revert "gitweb: extend blame to show links to diff and previous"
      gitweb: Remove excessively redundant entries from git_difftree_body
      gitweb: Add history and blame to git_difftree_body()
      gitweb: "alternate" starts with shade (i.e. 1)
      gitweb: Remove redundant "commit" link from shortlog
      gitweb: Factor out gitweb_have_snapshot()
      gitweb: Add snapshot to shortlog
      gitweb: Don't use quotemeta on internally generated strings
      gitweb: Remove redundant "commit" from history
      gitweb: History: blob and tree are first, then commitdiff, etc
      gitweb: tree view: hash_base and hash are now context sensitive

Martin Langhoff (1):
      git-repack: create new packs inside $GIT_DIR, not cwd

Martin Waitz (11):
      gitweb: fill in gitweb configuration by Makefile
      gitweb: use out-of-line GIT logo.
      gitweb: provide function to format the URL for an action link.
      gitweb: consolidate action URL generation.
      gitweb: continue consolidation of URL generation.
      gitweb: support for "fp" parameter.
      gitweb: support for / as home_link.
      gitweb: fix project list if PATH_INFO=="/".
      gitweb: more support for PATH_INFO based URLs
      gitweb: fix uninitialized variable warning.
      gitweb: fix display of trees via PATH_INFO.

Matthias Kestenholz (6):
      Make git-name-rev a builtin
      Make git-pack-objects a builtin
      Make git-unpack-objects a builtin
      Make git-symbolic-ref a builtin
      Add gitweb.cgi to .gitignore
      Check if pack directory exists prior to descending into it

Matthias Lederhofer (12):
      pager: environment variable GIT_PAGER to override PAGER
      gitweb: use a hash to lookup the sub for an action
      gitweb: require $ENV{'GITWEB_CONFIG'}
      gitweb: check if HTTP_ACCEPT is really set
      gitweb: fix commitdiff_plain for root commits
      gitweb: fix $project usage
      gitweb: do not use 'No such directory' error message
      gitweb: export options
      gitweb: fix warnings in PATH_INFO code and add export_ok/strict_export
      gitweb fix validating pg (page) parameter
      format-patch: use cwd as default output directory
      git-format-patch: fix bug using -o in subdirectories

Nicolas Pitre (2):
      move pack creation to version 3
      many cleanups to sha1_file.c

Paul Mackerras (10):
      gitk: Minor cleanups
      gitk: Recompute ancestor/descendent heads/tags when rereading refs
      gitk: Add a row context-menu item for creating a new branch
      gitk: Add a context menu for heads
      gitk: Fix a couple of buglets in the branch head menu items
      gitk: Add a menu item for cherry-picking commits
      gitk: Update preceding/following tag info when creating a tag
      gitk: Improve responsiveness while reading and layout out the graph
      gitk: Fix some bugs in the new cherry-picking code
      diff-index --cc shows a 3-way diff between HEAD, index and working tree.

Pavel Roskin (3):
      Fix probing for already installed Error.pm
      Delete manuals if compiling without docs
      Make perl interface a separate package

Petr Baudis (43):
      Introduce Git.pm (v4)
      Git.pm: Implement Git::exec_path()
      Git.pm: Call external commands using execv_git_cmd()
      Git.pm: Implement Git::version()
      Add Error.pm to the distribution
      Git.pm: Better error handling
      Git.pm: Handle failed commands' output
      Git.pm: Enhance the command_pipe() mechanism
      Git.pm: Implement options for the command interface
      Git.pm: Add support for subdirectories inside of working copies
      Convert git-mv to use Git.pm
      Git.pm: assorted build related fixes.
      Git.pm: Try to support ActiveState output pipe
      Git.pm: Swap hash_object() parameters
      Git.pm: Fix Git->repository("/somewhere/totally/elsewhere")
      Git.pm: Support for perl/ being built by a different compiler
      Git.pm: Remove PerlIO usage from Git.xs
      Git.pm: Avoid ppport.h
      Git.pm: Don't #define around die
      Use $GITPERLLIB instead of $RUNNING_GIT_TESTS and centralize @INC munging
      Git.pm: Add config() method
      Convert git-send-email to use Git.pm
      Git.pm: Introduce ident() and ident_person() methods
      Make it possible to set up libgit directly (instead of from the environment)
      Git.pm: Introduce fast get_object() method
      Convert git-annotate to use Git.pm
      Eliminate Scalar::Util usage from private-Error.pm
      Fix showing of path in tree view
      gitweb: Link (HEAD) tree for each project from projects list
      gitweb: More per-view navigation bar links
      gitweb: Link to tree instead of snapshot in shortlog
      gitweb: Link to latest tree from the head line in heads list
      gitweb: Link to associated tree from a particular log item in full log view
      gitweb: Rename "plain" labels to "raw"
      gitweb: Relabel "head" as "HEAD"
      Make path in tree view look nicer
      gitweb: Fix tree link associated with each commit log entry.
      gitweb: Fix @git_base_url_list usage
      Fix snapshot link in tree view
      Git.pm: Kill Git.xs for now
      Deprecate git-resolve.sh
      gitweb: Consolidate escaping/validation of query string
      gitweb: fix over-eager application of esc_html().

Pierre Habouzit (7):
      Fix a comparison bug in diff-delta.c
      avoid to use error that shadows the function name, use err instead.
      git_dir holds pointers to local strings, hence MUST be const.
      missing 'static' keywords
      remove ugly shadowing of loop indexes in subloops.
      use name[len] in switch directly, instead of creating a shadowed variable.
      n is in fact unused, and is later shadowed.

Randal L. Schwartz (1):
      builtin-upload-archive.c broken on openbsd

René Scharfe (15):
      git-verify-pack: make builtin
      Axe the last ent
      Add write_or_die(), a helper function
      Add git-zip-tree
      git-cherry: remove unused variable
      git-reset: remove unused variable
      Add git-zip-tree to .gitignore
      git-archive: make compression level of ZIP archives configurable
      Use xstrdup instead of strdup in builtin-{tar,zip}-tree.c
      git-archive: inline default_parse_extra()
      git-tar-tree: devolve git-tar-tree into a wrapper for git-archive
      Remove git-zip-tree
      Rename builtin-zip-tree.c to archive-zip.c
      git-tar-tree: Remove duplicate git_config() call
      git-tar-tree: Move code for git-archive --format=tar to archive-tar.c

Robin Rosenberg (2):
      Quote arguments to tr in test-lib
      Make cvsexportcommit remove files.

Santi Béjar (4):
      Fetch: default remote repository from branch properties
      fetch: get the remote branches to merge from the branch properties
      Add test for the default merges in fetch.
      fetch: Reset remote refs list each time fetch_main is called

Sasha Khapyorsky (3):
      Trivial support for cloning and fetching via ftp://.
      git-svnimport: Parse log message for Signed-off-by: lines
      http/ftp: optionally ask curl to not use EPSV command

Sergey Vlasov (2):
      Documentation: Fix howto/revert-branch-rebase.html generation
      git-svn: Fix fetch --no-ignore-externals with GIT_SVN_NO_LIB=1

Shawn O. Pearce (15):
      Verify we know how to read a pack before trying to using it.
      Remove unnecessary forward declaration of unpack_entry.
      Convert memcpy(a,b,20) to hashcpy(a,b).
      Convert memcpy(a,b,20) to hashcpy(a,b).
      Reorganize/rename unpack_non_delta_entry to unpack_compressed_entry.
      Reuse compression code in unpack_compressed_entry.
      Cleanup unpack_entry_gently and friends to use type_name array.
      Cleanup unpack_object_header to use only offsets.
      Convert unpack_entry_gently and friends to use offsets.
      Replace uses of strdup with xstrdup.
      Allow 'svn fetch' on '(no date)' revisions in Subversion.
      Allow '(no author)' in git-svn's authors file.
      Ignore executable bit when adding files if filemode=0.
      Allow git-checkout when on a non-existant branch.
      Corrected copy-and-paste thinko in ignore executable bit test case.

Tilman Sauerbeck (2):
      Indentation fix.
      Added support for dropping privileges to git-daemon.

Timo Hirvonen (2):
      --name-only, --name-status, --check and -s are mutually exclusive
      Remove awkward compatibility warts

Ville Skyttä (1):
      Be nicer if git executable is not installed

Yasushi SHOJI (2):
      gitweb: configurable home link string
      gitweb: Decode long title for link tooltips


Version v1.4.2.4; changes since v1.4.2.3:
-----------------------------------------

Linus Torvalds (1):
      Fix hash function in xdiff library


Version v1.4.2.3; changes since v1.4.2.2:
-----------------------------------------

Junio C Hamano (2):
      git-mv: invalidate the removed path properly in cache-tree
      git-push: .git/remotes/ file does not require SP after colon


Version v1.4.2.2; changes since v1.4.2.1:
-----------------------------------------

Junio C Hamano (2):
      Fix git-am safety checks
      git-diff -B output fix.

Liu Yubao (1):
      Fix duplicate xmalloc in builtin-add


Version v1.4.2.1; changes since v1.4.2:
---------------------------------------

Dennis Stosberg (1):
      Solaris does not support C99 format strings before version 10

Johannes Schindelin (5):
      git-mv: succeed even if source is a prefix of destination
      git-mv: add more path normalization
      git-mv: special case destination "."
      git-mv: fix off-by-one error
      builtin-mv: readability patch

Junio C Hamano (2):
      finish_connect(): thinkofix
      http-fetch: fix alternates handling.

Luben Tuikov (2):
      Fix regex pattern in commit-msg
      sample commit-msg hook: no silent exit on duplicate Signed-off-by lines


Version v1.4.2; changes since v1.4.2-rc4:
-----------------------------------------

Eric Wong (3):
      git-svn: correctly kill keyword expansion without munging EOLs
      git-svn: bugfix: allow SVN:: lib users to track the root of the repository
      git-svn: split the path from the url correctly with limited perms

Junio C Hamano (8):
      git-apply: applying a patch to make a symlink shorter.
      combine-diff: use color
      Fix git-diff A...B
      builtin-apply: remove unused increment
      git-sh-setup: do not use repo-config to test the git directory
      git-am: give better diagnostics when the patch does not apply during --3way
      Better error message when we are unable to lock the index file
      t/t4013: fix futzing with the version string.

Matthias Lederhofer (1):
      upload-pack: fix timeout in create_pack_file

Paul Mackerras (2):
      gitk: Allow the user to set some colors
      gitk: Show the currently checked-out head in bold font

Ramsay Jones (1):
      Fix header breakage with _XOPEN_SOURCE.

René Scharfe (9):
      Add has_extension()
      git-verify-pack: show usage when no pack was specified
      git-verify-pack: more careful path handling
      git-verify-pack: insist on .idx extension
      git-verify-pack: get rid of while loop
      git-verify-pack: free pack after use and a cleanup
      git-verify-pack: buffer overrun paranoia
      git-verify-pack: no need to count errors
      drop length argument of has_extension

Rutger Nijlunsing (2):
      http-push: Make WebDAV work with (broken?) default apache2 WebDAV module
      Add Documentation/howto/setup-git-server-over-http.txt


Version v1.4.2-rc4; changes since v1.4.2-rc3:
---------------------------------------------

Jeff King (1):
      git-push: allow pushing from subdirectories

Johannes Schindelin (1):
      Fix crash when GIT_DIR is invalid

Jonas Fonseca (1):
      Update git-init-db(1) and documentation of core.sharedRepository

Junio C Hamano (13):
      Cygwin needs NO_C99_FORMAT???
      Further clean-up: usage() vs die()
      Makefile: Cygwin does not seem to need NO_STRLCPY
      Fix "grep -w"
      debugging: XMALLOC_POISON
      builtin-mv: fix use of uninitialized memory.
      GIT-VERSION-GEN: adjust for ancient git
      Documentation: git-status takes the same options as git-commit
      Fix tutorial-2.html
      check return value from diff_setup_done()
      find_unique_abbrev() with len=0 should not abbreviate
      make --find-copies-harder imply -C
      allow diff.renamelimit to be set regardless of -M/-C

Michael Krelin (1):
      handle https:// protocol in git-clone

Ramsay Jones (4):
      Fixup command names in some usage strings.
      Replace some calls to die(usage_str) with usage(usage_str).
      Allow config file to specify Signed-off-by identity in format-patch.
      commit walkers: setup_ident() to record correct committer in ref-log.

René Scharfe (1):
      git-tar-tree: fix minor memory leak

Ryan Anderson (2):
      log-tree: show_log() should respect the setting of diffopt->line_termination
      annotate: Fix bug when parsing merges with differing real and logical parents.

Uwe Zeisberger (1):
      Document rev-list's option --merge


Version v1.4.2-rc3; changes since v1.4.2-rc2:
---------------------------------------------

Gerrit Pape (1):
      Build on Debian GNU/kFreeBSD

Jakub Narębski (11):
      Allow INSTALL, bindir, mandir to be set in main Makefile
      Rename man1 and man7 variables to man1dir and man7dir
      autoconf: Use autoconf to write installation directories to config.mak.autogen
      Teach make clean about configure and autoconf
      Copy description of build configuration variables to configure.ac
      autoconf: Preparing the way for autodetection
      autoconf: Checks for typedefs, structures, and compiler characteristics.
      autoconf: Checks for some library functions.
      autoconf: Checks for libraries
      autoconf: Checks for some programs
      configure.ac vertical whitespace usage cleanup

Jeff King (4):
      git-push: allow -f as an alias for --force
      git-push: remove obsolete git-push.sh
      Documentation: convert uses of git-link macro to gitlink
      git-annotate: remove extraneous debugging line

Johannes Schindelin (16):
      Allow an alias to start with "-p"
      git wrapper: add --git-dir=<path> and --bare options
      git-instaweb: some Apache have mod_cgi builtin
      git-instaweb: respect bindir from Makefile
      gitweb: fix two warnings
      t7001: add test for git-mv dir1 dir2/
      git-cvsserver: support multiline commit messages
      Extract helper bits from c-merge-recursive work
      Make git-mv a builtin
      builtin git-mv: support moving directories
      instaweb: Be more clear if httpd or the browser fail
      cvsserver: imitate git-update-ref when committing
      Makefile: ssh-pull.o depends on ssh-fetch.c
      Teach git-apply about '-R'
      Fix http-fetch
      tar-tree: illustrate an obscure feature better

Josef Weidendorfer (1):
      Extend testing git-mv for renaming of subdirectories

Junio C Hamano (18):
      git-diff A...B to (usually) mean "git-diff `git-merge-base A B` B"
      t4112: simplify the test and remove unneeded working tree file.
      lost-found: use fsck-objects --full
      git-reset: detect update-ref error and report it.
      log and diff family: honor config even from subdirectories
      git-apply -R: binary patches are irreversible for now.
      t4103: fix binary patch application test.
      git-checkout: allow "checkout HEAD -- path"
      Builtins: control the use of pager from the command table.
      fetch/clone: mark messages from remote side stand out.
      Fix "git diff blob1 blob2" showing the diff in reverse.
      read-tree: shadowed variable fix.
      Add a couple of subdirectory tests.
      diff.c: do not use pathname comparison to tell renames
      Show both blob names from "git diff blob1 blob2"
      sideband: do not use color, just say "remote:"
      Documentation/git.txt: link git-svn and git-instaweb from the main page.
      GIT 1.4.2-rc3

Linus Torvalds (4):
      Call setup_git_directory() early
      Call setup_git_directory() much earlier
      Fix double "close()" in ce_compare_data
      Fix up some fallout from "setup_git_directory()" cleanups

Luben Tuikov (8):
      gitweb.cgi: Teach git_history() to read hash from $hash_base
      gitweb.cgi: Include direct link to "raw" files from "history"
      gitweb.cgi: git_blame2: an alternative simple working git blame
      gitweb.cgi: git_blame2: Allow back-trekking through commits
      gitweb.cgi: Show "raw" head of project link even when $hash is not defined
      gitweb.cgi: git_blame2: Revision blocks now have alternating colors
      gitweb.cgi: Centralize printing of the page path
      gitweb.cgi: git_blame2: slight optimization reading the blame lines

Matthias Kestenholz (3):
      Make git-prune-packed a builtin
      Make git-repo-config a builtin
      use declarations from builtin.h for builtin commands

Matthias Lederhofer (5):
      daemon: documentation for --reuseaddr, --detach and --pid-file
      setup_git_directory_gently: do not barf when GIT_DIR is given.
      git.c: allow alias expansion without a git directory
      pager: config variable pager.color
      git-grep: document --and, --or, --not, ( and )

Michael S. Tsirkin (1):
      mailinfo: accept >From in message header

Michele Ballabio (1):
      fixed variable declaration in gitk

Pavel Roskin (3):
      Typofix in configure.ac comment.
      Quote all calls to GIT_CONF_APPEND_LINE
      Set datarootdir in config.mak.in

Petr Baudis (5):
      Remove -d from *-fetch usage strings
      Make pull() take some implicit data as explicit arguments
      Make pull() support fetching multiple targets at once
      Teach git-local-fetch the --stdin switch
      Teach git-http-fetch the --stdin switch

Ramsay Jones (7):
      Ensure git-clone exits with error if perl script fails.
      Fix annotate test script; notice when git-annotate fails.
      Fix installation of templates on ancient systems.
      New tests and en-passant modifications to mktag.
      Add NO_C99_FORMAT to support older compilers.
      Fix header breakage due to redefining PATH_MAX.
      Remove cmd_usage() routine and re-organize the help/usage code.

Robert Shearman (2):
      rebase: Fix the detection of fast-forwarding of the current branch to upstream.
      rebase: Make the fast-fowarding message more user-friendly by using branch names instead of SHA1 IDs.

Shawn O. Pearce (1):
      Display an error from update-ref if target ref name is invalid.


Version v1.4.2-rc2; changes since v1.4.2-rc1:
---------------------------------------------

Alex Riesen (1):
      Trivial path optimization test

Alexandre Julliard (5):
      git.el: Run git-rerere on commits if the rr-cache directory exists.
      git.el: Prepend a slash to the file name when adding to .gitignore.
      git.el: Try to reuse an existing buffer when running git-status.
      git.el: Put the git customize group in the 'tools' parent group.
      show-branch: Fix another performance problem.

Daniel Drake (1):
      gitweb: escape tag comments

Eric Wong (2):
      typechange tests for git apply (currently failing)
      git-svn: fix fetching new directories copies when using SVN:: libs

Jeff King (2):
      pack-objects: check pack.window for default window size
      Colorize 'commit' lines in log ui

Johannes Schindelin (4):
      Fix t4114 on cygwin
      Always reset the color _before_ printing out the newline
      cvsserver: suppress warnings
      cvsserver: avoid warning about active db handles

Josh Triplett (3):
      git-format-patch: Make the second and subsequent mails replies to the first
      Add option to enable threading headers
      Add option to set initial In-Reply-To/References

Junio C Hamano (8):
      fetch/clone: check return status from ls-remote
      builtin-log: typefix for recent format-patch changes.
      checkout -f failed to check out a file if an existing directory interfered.
      apply: check D/F conflicts more carefully.
      apply: split out removal and creation into different phases.
      apply: handle type-changing patch correctly.
      git-fetch: fix --keep vs --thin
      unpack-objects: remove stale and confusing comment

Linus Torvalds (1):
      sha1_file: add the ability to parse objects in "pack file format"

Lukas Sandström (1):
      git-am: Don't accept an mbox on stdin of we already have a .dotest directory

Martin Langhoff (1):
      cvsexportcommit - add -a (add author line) flag, cleanup warnings

Matthias Lederhofer (1):
      upload-pack: fix timeout in create_pack_file

Peter Eriksen (1):
      Substitute xmalloc()+memset(0) with xcalloc().

Santi Béjar (1):
      Defaulting fetch to origin when set in the repo-config

Shawn O. Pearce (1):
      Disable linking with Fink or DarwinPorts.

Willy Tarreau (1):
      tar-tree: add the "tar.umask" config option


Version v1.4.2-rc1; changes since v1.4.1.1:
-------------------------------------------

A Large Angry SCM (1):
      Additional merge-base tests (revised)

Alex Riesen (1):
      Do not use perl in git-commit.sh

Alp Toker (9):
      Fix some doubled word typos
      Fix some doubled word typos
      Fix typos involving the word 'commit'
      typofix (git-name-rev documentation)
      git-send-email: Remove redundant Reply-To header
      gitweb: Send XHTML as 'application/xhtml+xml' where possible
      gitweb: Include a site name in page titles
      gitweb: Make command invocations go through the git wrapper
      documentation (urls.txt) typofix

Dennis Stosberg (2):
      gitweb: Declare global variables with "our"
      gitweb: Declare global variables with "our"

Eric Wong (12):
      Add git-instaweb, instantly browse the working repo with gitweb
      instaweb: fix unportable ';' usage in sed
      t8001-annotate: fix a bash-ism in this test
      git-svn: avoid fetching files outside of the URL we're tracking
      git-svn: migrate out of contrib
      builtin-log: respect diff configuration options
      diff.c: respect diff.renames config option
      templates/hooks--update: replace diffstat calls with git diff --stat
      git-svn: fix --file/-F option in commit-diff
      tests: Set EDITOR=: and VISUAL=: globally
      git-fetch: fix a bashism (==)
      git-svn: don't check for migrations/upgrades on commit-diff

Jakub Narębski (3):
      send-email: format 2822 datestring ourselves.
      Wrap long lines in docstrings in contrib/emacs/git.el
      Display help for Git mode after pressing `h' or `?' in *git-status*

Joachim Berdal Haga (2):
      Make zlib compression level configurable, and change default.
      core.compression documentation formatting fix.

Johannes Schindelin (7):
      refactor merge_bases() as preparation to libify merge-base
      move get_merge_bases() to core lib.
      Makefile: replace ugly and unportable sed invocation
      Make git-fmt-merge-msg a builtin
      Makefile: export NO_SVN_TESTS
      Close the index file between writing and committing
      Fix linking for not-so-clever linkers.

Jonas Fonseca (1):
      Documentation/urls.txt: Use substitution to escape square brackets

Junio C Hamano (49):
      Makefile: add framework to verify and bench sha1 implementations.
      test-sha1: test hashing large buffer
      t4013: add tests for diff/log family output options.
      t4013: add more tests around -c and --cc
      Fix some more diff options changes.
      t4013 test updates for new output code.
      combine-diff.c: type sanity.
      format-patch: fix diff format option implementation
      t4013: add format-patch tests.
      t4013: note improvements brought by the new output code.
      gitweb: optimize per-file history generation
      gitweb: optimize per-file history generation
      t4013: add "diff" UI program tests.
      builtin-diff: turn recursive on when defaulting to --patch format.
      commit.c: do not redefine UNINTERESTING bit.
      get_merge_bases: clean up even when there is no common commit.
      revert clear-commit-marks for now.
      boolean: accept yes and no as well
      send-email: do not barf when Term::ReadLine does not like your terminal
      t6200: fmt-merge-msg test.
      git-grep: fix parsing of pathspec separator '--'
      git-grep: fix exit code when we use external grep.
      git-grep: use a bit more specific error messages.
      Re-fix clear_commit_marks().
      git-grep: boolean expression on pattern matching.
      git-reset: complain and exit upon seeing an unknown parameter.
      mailinfo: assume input is latin-1 on the header as we do for the body
      diffcore-rename: try matching up renames without populating filespec first.
      builtin-rev-parse.c: constness tightening
      show-branch: match documentation and usage
      rev-parse documentation: talk about range notation.
      git-svn: migrate out of contrib (follow-up)
      diff.c: --no-color to defeat diff.color configuration.
      Update diff-options and config documentation.
      git log -p --merge [[--] paths...]
      colored diff: diff.color = auto fix
      diff: do not use configuration magic at the core-level
      "git -p cmd" to page anywhere
      merge-base: update the clean-up postprocessing
      fmt-merge-msg fix
      Fix grammatical error in git-revert
      git-repack: avoid redirecting stderr into git-pack-objects
      test-lib: unset GIT_TRACE
      t4013 diff format tests update
      Adjust t4013 tests to corrected format-patch.
      Documentation: Fix ssh://[user@]host.xz URL
      builtin-prune.c: forgot TYPE => OBJ changes.
      Documentation/Makefile: product depends on asciidoc.conf
      show-branch: fix performance problem.

Linus Torvalds (7):
      xdiff: generate "anti-diffs" aka what is common to two files
      Prepare "git-merge-tree" for future work
      Improved three-way blob merging code
      Improve git-peek-remote
      builtin "git prune"
      Make the unpacked object header functions static to sha1_file.c
      Remove TYPE_* constant macros and use object_type enums consistently.

Luben Tuikov (6):
      gitweb: Enable tree (directory) history display
      gitweb: Enable tree (directory) history display
      Add "raw" output option to blobs in "tree" view format
      gitweb.cgi: Create $git_temp if it doesn't exist
      gitweb.cgi: Teach "a=blob" action to know the blob/file mime type
      gitweb.css: Use monospace fonts for commits and tree-diff.

Matthias Lederhofer (10):
      GIT_TRACE: show which built-in/external commands are executed
      change ent to tree in git-diff documentation
      git-rev-list: add documentation for --parents, --no-merges
      daemon: use a custom die routine with syslog
      daemon: if one of the standard fds is missing open it to /dev/null
      upload-pack: ignore write errors to stderr
      daemon: new option --pid-file=<path> to store the pid
      daemon: new option --detach to run git-daemon in background
      Documentation about exclude/ignore files
      argv created by handle_alias should be NULL terminated

Michal Rokos (2):
      sed -e '/RE/r rfile/' needs space in 'r rfile'
      Using 'perl' in *.sh

Pavel Roskin (4):
      Assorted typo fixes
      Typofix in Makefile comment.
      Fix more typos, primarily in the code
      Avoid C99 comments, use old-style C comments instead.

Peter Baumann (1):
      git-cvsexportcommit can't handle merge commits correctly

René Scharfe (5):
      Add get_merge_bases_clean()
      Add '...' operator for revisions
      Make clear_commit_marks() clean harder
      Fold get_merge_bases_clean() into get_merge_bases()
      rev-list: free commit_list in ... handler

Robert Shearman (1):
      format-patch: Generate a newline between the subject header and the message body

Ryan Anderson (3):
      annotate: Support annotation of files on other revisions.
      annotate: Correct most merge following to annotate correctly.
      Disable color detection during format-patch

Santi Béjar (1):
      Teach rev-parse the ... syntax.

Sergey Vlasov (1):
      Fix "git-fetch --tags" exit status when nothing has been changed

Shawn O. Pearce (9):
      Avoid C99 initializers
      Allow user.name and user.email to drive reflog entry.
      Record the type of commit operation in the reflog.
      Log ref changes made by git-fetch and git-pull.
      Log ref changes made by git-merge and git-pull.
      Log ref changes made by quiltimport.
      Log ref changes made by resolve.
      Make lazy mkdir more robust.
      Record rebase changes as 'rebase' in the reflog.

Stephan Feder (5):
      Do not drop data from '\0' until eol in patch output
      Teach --text option to diff
      Teach diff -a as shorthand for --text
      Add -a and --text to common diff options help
      diff-options: Explain --text and -a

Timo Hirvonen (14):
      Merge with_raw, with_stat and summary variables to output_format
      Make --raw option available for all diff commands
      Set default diff output format after parsing command line
      DIFF_FORMAT_RAW is not default anymore
      Add msg_sep to diff_options
      Don't xcalloc() struct diffstat_t
      whatchanged: Default to DIFF_FORMAT_RAW
      Print empty line between raw, stat, summary and patch
      diff-tree: Use ---\n as a message separator
      log --raw: Don't descend into subdirectories by default
      Fix diff-tree -s
      GIT_TRACE: fix a mixed declarations and code warning
      diff: Support both attributes and colors
      diff: Support 256 colors

Ville Skyttä (1):
      Fix print-log and diff compatibility with recent vc versions

Yakov Lerner (1):
      Mention the [user@] part in documentation of ssh:// urls.

anonymous (1):
      A better-scheduled PPC SHA-1 implementation.


Version v1.4.1.1; changes since v1.4.1:
---------------------------------------

Junio C Hamano (1):
      Makefile: tighten git-http-{fetch,push} dependencies

Linus Torvalds (1):
      revision.c: fix "dense" under --remove-empty

Matthias Lederhofer (1):
      upload-pack: fix timeout in create_pack_file

Robin Rosenberg (1):
      Empty author may be presented by svn as an empty string or a null value.


Version v1.4.1; changes since v1.4.1-rc2:
-----------------------------------------

Eric Wong (1):
      git-svn: allow a local target directory to be specified for init

Johannes Schindelin (4):
      add diff_flush_patch_id() to calculate the patch id
      format-patch: introduce "--ignore-if-in-upstream"
      t4014: fix for whitespace from "wc -l"
      format-patch: use clear_commit_marks() instead of some ad-hockery

Junio C Hamano (6):
      git-repack: Be careful when updating the same pack as an existing one.
      t4014: add format-patch --ignore-if-in-upstream test
      t4014: fix test commit labels.
      diff.c: fix get_patch_id()
      Racy GIT (part #3)
      upload-pack.c: <sys/poll.h> includes <ctype.h> on OpenBSD 3.8

Linus Torvalds (4):
      Do not try futile object pairs when repacking.
      Abstract out accesses to object hash array
      revision.c: --full-history fix.
      git object hash cleanups

Nicolas Pitre (2):
      consider previous pack undeltified object state only when reusing delta data
      don't load objects needlessly when repacking

Petr Baudis (1):
      Fix errno usage in connect.c

Robin Rosenberg (1):
      Minor documentation fixup.


Version v1.4.1-rc2; changes since v1.4.1-rc1:
---------------------------------------------

Andreas Ericsson (1):
      git wrapper: fix command name in an error message.

Dennis Stosberg (3):
      Solaris needs inclusion of signal.h for signal()
      Fix pkt-line.h to compile with a non-GCC compiler
      Fix expr usage for FreeBSD

Eric Wong (10):
      rebase: allow --merge option to handle patches merged upstream
      rebase: cleanup rebasing with --merge
      rebase: allow --skip to work with --merge
      git-svn: SVN 1.1.x library compatibility
      git-svn: several graft-branches improvements
      git-svn: add the commit-diff command
      git-svn: add --follow-parent and --no-metadata options to fetch
      git-svn: be verbose by default on fetch/commit, add -q/--quiet option
      rebase: get rid of outdated MRESOLVEMSG
      rebase: check for errors from git-commit

Jeff King (2):
      git-commit: allow -e option anywhere on command line
      quote.c: silence compiler warnings from EMIT macro

Johannes Schindelin (5):
      patch-id: take "commit" prefix as well as "diff-tree" prefix
      Teach diff about -b and -w flags
      cvsimport: always set $ENV{GIT_INDEX_FILE} to $index{$branch}
      apply: replace NO_ACCURATE_DIFF with --inaccurate-eof runtime flag.
      Save errno in handle_alias()

Junio C Hamano (12):
      Makefile: do not recompile main programs when libraries have changed.
      usage: minimum type fix.
      git-pull: abort when fmt-merge-msg fails.
      git-merge --squash
      diff --color: use reset sequence when we mean reset.
      repo-config: fix printing of bool
      diff --color: use $GIT_DIR/config
      combine-diff.c: type sanity
      connect.c: remove unused parameters from tcp_connect and proxy_connect
      connect.c: check the commit buffer boundary while parsing.
      t/README: start testing porcelainish
      checkout -m: fix read-tree invocation

Linus Torvalds (1):
      Tweak diff colors

Martin Langhoff (3):
      git-repack -- respect -q and be quiet
      cvsimport: setup indexes correctly for ancestors and incremental imports
      cvsimport - cleanup of the multi-indexes handling

Matthias Kestenholz (1):
      add GIT-CFLAGS to .gitignore

Matthias Lederhofer (1):
      correct documentation for git grep

Peter Eriksen (1):
      Rename safe_strncpy() to strlcpy().

Petr Baudis (1):
      Customizable error handlers

Timo Hirvonen (3):
      git-merge: Don't use -p when outputting summary
      Clean up diff.c
      Make some strings const

Yann Dirson (1):
      git-commit: filter out log message lines only when editor was run.


Version v1.4.1-rc1; changes since v1.4.0:
-----------------------------------------

Andre Noll (1):
      object-refs: avoid division by zero

David Woodhouse (1):
      Log peer address when git-daemon called from inetd

Dennis Stosberg (3):
      Make t4101-apply-nonl bring along its patches
      Make t8001-annotate and t8002-blame more portable
      Fix t8001-annotate and t8002-blame for ActiveState Perl

Eric W. Biederman (3):
      Don't parse any headers in the real body of an email message.
      Fix git-format-patch -s
      Check and document the options to prevent mistakes.

Eric Wong (29):
      git-svn: t0000: add -f flag to checkout
      git-svn: fix handling of filenames with embedded '@'
      git-svn: eol_cp corner-case fixes
      git-svn: restore original LC_ALL setting (or unset) for commit
      git-svn: don't allow commit if svn tree is not current
      git-svn: support -C<num> passing to git-diff-tree
      git-svn: --branch-all-refs / -B support
      git-svn: optimize --branch and --branch-all-ref
      git-svn: support manually placed initial trees from fetch
      git-svn: Move all git-svn-related paths into $GIT_DIR/svn
      git-svn: minor cleanups, extra error-checking
      git-svn: add --repack and --repack-flags= options
      git-svn: add --shared and --template= options to pass to init-db
      git-svn: add some functionality to better support branches in svn
      git-svn: add UTF-8 message test
      git-svn: add 'log' command, a facsimile of basic `svn log'
      git-svn: add support for Perl SVN::* libraries
      git-svn: make the $GIT_DIR/svn/*/revs directory obsolete
      git-svn: avoid creating some small files
      git-svn: fix several small bugs, enable branch optimization
      git-svn: Eliminate temp file usage in libsvn_get_file()
      git-svn: bugfix and optimize the 'log' command
      git-svn: tests no longer fail if LC_ALL is not a UTF-8 locale
      git-svn: svn (command-line) 1.0.x compatibility
      git-svn: rebuild convenience and bugfixes
      git-svn: fix --rmdir when using SVN:: libraries
      rebase: Allow merge strategies to be used when rebasing
      rebase: error out for NO_PYTHON if they use recursive merge
      git-svn: fix commit --edit flag when using SVN:: libraries

Florian Forster (9):
      gitweb: Adding a `blame' interface.
      gitweb: Make the `blame' interface in gitweb optional.
      Remove ranges from switch statements.
      Initialize FAMs using `FLEX_ARRAY'.
      Don't instantiate structures with FAMs.
      Cast pointers to `void *' when used in a format.
      Don't use empty structure initializers.
      Change types used in bitfields to be `int's.
      Remove all void-pointer arithmetic.

Fredrik Kuivinen (1):
      blame: Add --time to produce raw timestamps

Jakub Narębski (15):
      Update gitweb README: gitweb is now included with git
      Move gitweb style to gitweb.css
      gitweb: safely output binary files for 'blob_plain' action
      gitweb: text files for 'blob_plain' action without charset by default
      Fix gitweb stylesheet
      Make CSS file gitweb/gitweb.css more readable
      gitweb: add type="text/css" to stylesheet link
      Fix: Support for the standard mime.types map in gitweb
      gitweb: A couple of page title tweaking
      gitweb: style done with stylesheet
      gitweb: whitespace cleanup
      Add git version to gitweb output
      Move $gitbin earlier in gitweb.cgi
      gitweb: Make use of $PATH_INFO for project parameter
      gitweb: whitespace cleanup around '='

Johannes Schindelin (6):
      diff options: add --color
      Initialize lock_file struct to all zero.
      Fix setting config variables with an alternative GIT_CONFIG
      Read configuration also from $HOME/.gitconfig
      repo-config: Fix late-night bug
      git_config: access() returns 0 on success, not > 0

Junio C Hamano (31):
      Revert all the rev-list option parsing changes.
      Clean-up Geert's similarity fingerprint code.
      Extract "log [diff options]" parser out.
      whatchanged options parser fix.
      Built-in git-whatchanged
      Geert's similarity
      Try using Geert similarity code in pack-objects.
      Retire rabinpoly fingerprinting code
      Fix mismerged update-index from jc/cache-tree branch.
      read-tree: --prefix=<path>/ option.
      write-tree: --prefix=<path>
      read-tree: reorganize bind_merge code.
      fetch-pack: give up after getting too many "ack continue"
      Fix earlier mismerges.
      shared repository: optionally allow reading to "others".
      gitk: rereadrefs needs listrefs
      fix git alias
      t5100: mailinfo and mailsplit tests.
      mailinfo: ignore blanks after in-body headers.
      fix rfc2047 formatter.
      xdiff: minor changes to match libxdiff-0.21
      Restore SIGCHLD to SIG_DFL where we care about waitpid().
      checkout -f: do not leave untracked working tree files.
      upload-pack: avoid sending an incomplete pack upon failure
      upload-pack: prepare for sideband message support.
      Retire git-clone-pack
      upload-pack/fetch-pack: support side-band communication
      Add renaming-rebase test.
      daemon: send stderr to /dev/null instead of closing.
      rebase --merge: fix for rebasing more than 7 commits.
      Makefile: do not force unneeded recompilation upon GIT_VERSION changes

Linus Torvalds (9):
      Tentative built-in "git show"
      gitweb.cgi history not shown
      Shrink "struct object" a bit
      Move "void *util" from "struct object" into "struct commit"
      Some more memory leak avoidance
      Remove "refs" field from "struct object"
      Add specialized object allocator
      Add "named object array" concept
      Fix grow_refs_hash()

Lukas Sandström (6):
      Make git-write-tree a builtin
      Make git-mailsplit a builtin
      Make git-mailinfo a builtin
      Make git-stripspace a builtin
      Make git-update-index a builtin
      Make git-update-ref a builtin

Martin Langhoff (3):
      cvsimport: ignore CVSPS_NO_BRANCH and impossible branches
      cvsimport: complete the cvsps run before starting the import
      cvsimport: keep one index per branch during import

Paul Eggert (1):
      date.c: improve guess between timezone offset and year.

Paul Mackerras (1):
      Fix PPC SHA1 routine for large input buffers

Peter Eriksen (1):
      Implement safe_strncpy() as strlcpy() and use it more.

Petr Baudis (2):
      Support for extracting configuration from different files
      Support for the standard mime.types map in gitweb

René Scharfe (4):
      git-tar-tree: Simplify write_trailer()
      git-tar-tree: documentation update
      git-tar-tree: no more void pointer arithmetic
      Make release tarballs friendlier to older tar versions

Sean Estabrooks (1):
      Add a "--notags" option for git-p4import.

Sven Verdoolaege (1):
      git-cvsexportcommit.perl: fix typo

Timo Hirvonen (1):
      gitweb: Use $hash_base as $search_hash if possible

Uwe Kleine-König (1):
      Fix possible out-of-bounds array access

Yakov Lerner (2):
      auto-detect changed prefix and/or changed build flags
      Pass -DDEFAULT_GIT_TEMPLATE_DIR only where actually used.


Version v1.4.0; changes since v1.4.0-rc2:
-----------------------------------------

Horst H. von Brand (1):
      Fix formatting of Documentation/git-clone.txt

Junio C Hamano (7):
      allow working in repositories with textual symref HEAD
      git-clone: fix duplicated "master" in $GIT_DIR/remotes/origin
      git-rm: honor -n flag.
      builtin-init-db: spell the in-program configuration variable in lowercase.
      shared repository - add a few missing calls to adjust_shared_perm().
      git-clone: fix --bare over dumb-http
      GIT 1.4.0

Kay Sievers (143):
      first working version
      v000
      v000
      v001
      v002
      v003
      v003
      v004
      v005
      v006
      v014
      v016
      v020
      v021
      v021
      v021
      v021
      v025
      v026
      v027
      v031
      v035
      v041
      v041
      v042
      v043
      v048
      v049
      v053
      v055
      v056
      v057
      v062
      v063
      v064
      v070
      v071
      v073
      v077
      v078
      v080
      v082
      v085
      v088
      v089
      v107
      v118
      v121
      v125
      v133
      v136
      v142
      v143
      v145
      v148
      v149
      v150
      v152
      v154
      v157
      v160
      v163
      v164
      v165
      v203
      v205
      v206
      v220
      v225
      v227
      v229
      v232
      v233
      v234
      v235
      v236
      add README
      Make the tag view look like commit header.
      allow sorting of index page by project path, owner and age
      make index page sorting more visible and increase RSS item count
      fix search parsing, later git does not print a trailing space
      don't chop_str if adding ... is longer than the original
      Show tooltips (like this one :)) containing full titles for truncated commit titles in the summary and shortlog views.
      v241
      v242
      common input validation to allow passing of textual hash id's
      v243
      translate reference into hash while reading a commit
      fix typo in link parameter of git_commit
      v244
      switch to git-rev-list for commit reading
      v245
      start searching at the current $hash value
      v246
      rename "branches" to "heads"
      v247
      provide filename for "save as" in plaintext views
      add Expires: +1d header to commit and commitdiff pages
      v248
      add test files
      update the test files to have a diff
      escape '+' and ' ' in url's
      make ' ' and '+' in filenames some kind of working
      v249
      escape ' ' with '+' in url's
      replace invalid utf8 sequences by UTF-8 REPLACEMENT CHARACTER (efbfbd)
      v250
      add missing esc() rename
      v251
      fix another typo
      v252
      fix utf8 decoding
      add ut8 test file
      add broken latin encoding to test file
      set logo output to raw mode
      v253
      allow utf8 characters in url parameter escape
      v254
      v255
      fix quoted filename lookup
      v256
      fix "rename" output
      v257
      show tags in lists
      v258
      show multiple tags
      v259
      attach tag to the link
      v260
      more tags
      fix leading whitespace in commit text
      v261
      define default colors
      v262
      resolve textual hashes when looking up "refs"
      v263
      fix: Use of uninitialized value
      v264
      handle utf8 characters from /etc/passwd
      v265
      remove Christian's email address
      v266
      v267

Paul T Darga (1):
      check for error return from fork()

René Scharfe (1):
      Built-in git-get-tar-commit-id

Rocco Rutte (1):
      prepend '--' to filelist when calling git-diff-tree

Uwe Kleine-König (1):
      Document git-clone --use-separate-remote

Yasushi SHOJI (1):
      Add <author> and <guid> to RSS feed


Version v1.4.0-rc2; changes since v1.4.0-rc1:
---------------------------------------------

Francis Daly (3):
      Some doc typo fixes
      config.txt grammar, typo, and asciidoc fixes
      git-cvsserver asciidoc formatting tweaks

Horst H. von Brand (1):
      Cleanup git-send-email.perl:extract_valid_email

Johannes Schindelin (1):
      If you have a config containing something like this:

Jon Loeliger (1):
      Refactor git_tcp_connect() functions a little.

Jonas Fonseca (2):
      Misc doc improvements
      Document git-ls-tree --fullname

Junio C Hamano (12):
      git alias: try alias last.
      send-email: be more lenient and just catch obvious mistakes.
      send-email: a bit more careful domain regexp.
      git-format-patch: add --output-directory long option again
      HTTP cleanup
      Make index file locking code reusable to others.
      refs.c: convert it to use lockfile interface.
      ref-log: style fixes.
      Documentation: add missing docs make check-docs found.
      make clean: remove dist-doc targets.
      Documentation: git-ls-tree (typofix)
      Documentation: add another example to git-ls-files

Nick Hengeveld (2):
      HTTP cleanup
      http-fetch: fix possible segfault

Paul Mackerras (12):
      gitk: Make a row of controls for controlling highlighting
      gitk: Highlight entries in the file list as well
      gitk: Highlight paths of interest in tree view as well
      gitk: First cut at a search function in the patch/file display window
      gitk: Improve the text window search function
      gitk: Move "pickaxe" find function to highlight facility
      gitk: Fix bug in highlight stuff when no line is selected
      gitk: Provide ability to highlight based on relationship to selected commit
      gitk: Add a goto next/previous highlighted commit function
      gitk: Show nearby tags
      gitk: Show branch name(s) as well, if "show nearby tags" is enabled
      gitk: Re-read the descendent/ancestor tag & head info on update

Petr Baudis (2):
      Document git aliases support
      Documentation: git aliases

René Scharfe (1):
      Off-by-one error in get_path_prefix(), found by Valgrind

Robert Fitzsimons (1):
      builtin-grep: pass ignore case option to external grep


Version v1.4.0-rc1; changes since v1.3.3:
-----------------------------------------

Alex Riesen (2):
      make update-index --chmod work with multiple files and --stdin
      remove superflous "const"

Aneesh Kumar K.V (3):
      gitview: Add key binding for F5.
      gitview: Move the console error messages to message dialog
      gitview: Add some useful keybindings.

Björn Engelmann (2):
      remove the artificial restriction tagsize < 8kb
      add more informative error messages to git-mktag

Catalin Marinas (1):
      Add a test-case for git-apply trying to add an ending line

Christian Couder (1):
      Builtin git-rev-parse.

Dennis Stosberg (3):
      git-write-tree writes garbage on sparc64
      git-clean fails on files beginning with a dash
      Update documentation for git-format-patch

Dmitry V. Levin (2):
      execv_git_cmd: Fix stack buffer overflow.
      git_exec_path, execv_git_cmd: ignore empty environment variables

Elrond (1):
      git-cvsimport: Handle "Removed" from pserver

Eric W. Biederman (8):
      Implement git-quiltimport
      Implement a --dry-run option to git-quiltimport
      Make read_one_header_line return a flag not a length.
      Move B and Q decoding into check header.
      Refactor commit messge handling.
      In handle_body only read a line if we don't already have one.
      More accurately detect header lines in read_one_header_line
      Allow in body headers beyond the in body header prefix.

Eric Wong (15):
      git-svn: documentation updates
      git-svn 1.0.0
      send-email: address expansion for common mailers
      Install git-send-email by default
      send-email: allow sendmail binary to be used instead of SMTP
      send-email: quiet some warnings, reject invalid addresses
      commit: allow --pretty= args to be abbreviated
      git-svn: starting a 1.1.0-pre development version
      git-svn: ignore expansion of svn:keywords
      t3300-funny-names: shell portability fixes
      tests: Remove heredoc usage inside quotes
      t5500-fetch-pack: remove local (bashism) usage.
      t6000lib: workaround a possible dash bug
      git-svn: t0001: workaround a heredoc bug in old versions of dash
      git-svn: remove assertion that broke with older versions of svn

Florian Forster (1):
      git-svnimport: Improved detection of merges.

Fredrik Kuivinen (2):
      blame: Fix path pruning
      Update the documentation for git-merge-base

Horst H. von Brand (4):
      Fix some documentation typoes
      Documentation: Spelling fixes
      Add example xinetd(8) configuration to Documentation/everyday.txt
      Fix Documentation/everyday.txt: Junio's workflow

J. Bruce Fields (7):
      tutorial: replace "whatchanged" by "log"
      tutorial: expanded discussion of commit history
      tutorial: add discussion of index file, object database
      documentation: mention gitk font adjustment in tutorial
      documentation: add brief mention of cat-file to tutorial part I
      Documentation: retitle the git-core tutorial
      Documentation: fix a tutorial-2 typo

Jeff King (7):
      cvsimport: use git-update-index --index-info
      cvsimport: cleanup commit function
      cvsimport: set up commit environment in perl instead of using env
      cat-file: document -p option
      cvsimport: avoid "use" with :tag
      handle concurrent pruning of packed objects
      sha1_file: avoid re-preparing duplicate packs

Jim Meyering (1):
      Don't write directly to a make target ($@).

Johannes Schindelin (25):
      builtin-push: resurrect parsing of Push: lines
      cache-tree: replace a sscanf() by two strtol() calls
      builtin-push: also ask config for remote information
      fetch, pull: ask config for remote information
      repo-config: fix segfault with no argument.
      repo-config: trim white-space before comment
      repo-config: support --get-regexp
      repo-config: deconvolute logics
      fetch, pull: ask config for remote information
      Add a conversion tool to migrate remote information into the config
      builtin-push: --all and --tags _are_ explicit refspecs
      Teach fmt-patch to write individual files.
      fmt-patch: output file names to stdout
      fmt-patch: implement -o <dir>
      Teach fmt-patch about --numbered
      Teach fmt-patch about --keep-subject
      fmt-patch: understand old <his> notation
      Fix users of prefix_path() to free() only when necessary
      Fix users of prefix_path() to free() only when necessary
      Fix crash when reading the empty tree
      diff family: add --check option
      fmt-patch: Support --attach
      git-format-patch --start-number <n>
      send-email: only 'require' instead of 'use' Net::SMTP
      format-patch: resurrect extra headers from config

Josef Weidendorfer (1):
      gitk: Add a visual tag for remote refs

Junio C Hamano (156):
      Fix up default abbrev in setup_revisions() argument parser.
      Fix up rev-list option parsing.
      Split init_revisions() out of setup_revisions()
      rev-list option parser fix.
      Built-in git-whatchanged.
      Do not fork PAGER=cat
      Simplify common default options setup for built-in log family.
      log/whatchanged/show - log formatting cleanup.
      rev-list --header: output format fix
      git.c: LOGSIZE is unused after log printing cleanup.
      combine-diff: show diffstat with the first parent.
      Fix "git log --stat": make sure to set recursive with --stat.
      Tentative built-in format-patch.
      sha1_name.c: prepare to make get_tree_entry() reusable from others.
      sha1_name.c: no need to include diff.h; tree-walk.h will do.
      get_tree_entry(): make it available from tree-walk
      Minor tweak on subject line in --pretty=email
      diff: move diff.c to diff-lib.c to make room.
      Add git-unresolve <paths>...
      diff --stat: do not drop rename information.
      git-update-index --unresolve
      rename internal format-patch wip
      Makefile: dependency for builtin-help.o
      Add colordiff for git to contrib/colordiff.
      Fix "git show --stat"
      Libify diff-files.
      Libify diff-index.
      git-fmt-patch: thinkofix to show [PATCH] properly.
      Libified diff-index: backward compatibility fix.
      read-cache/write-cache: optionally return cache checksum SHA1.
      Add cache-tree.
      Update write-tree to use cache-tree.
      Invalidate cache-tree entries for touched paths in git-apply.
      Use cache-tree in update-index.
      Add test-dump-cache-tree
      cache-tree: protect against "git prune".
      index: make the index file format extensible.
      Teach fsck-objects about cache-tree.
      cache-tree: sort the subtree entries.
      test-dump-cache-tree: report number of subtrees.
      Makefile: remove and create libgit.a from scratch.
      diff --stat: show complete rewrites consistently.
      git-cvsserver: typofixes
      t0000-basic: Add ls-tree recursive test back.
      Makefile: remove and create xdiff library from scratch.
      commit-tree: allow generic object name for the tree as well.
      revision parsing: make "rev -- paths" checks stronger.
      t0000-basic: more commit-tree tests.
      update-index: when --unresolve, smudge the relevant cache-tree entries.
      read-tree: teach 1 and 2 way merges about cache-tree.
      read-tree: teach 1-way merege and plain read to prime cache-tree.
      diff-index: fix compilation warnings.
      cache_tree_update: give an option to update cache-tree only.
      test-dump-cache-tree: validate the cached data as well.
      pack-objects: update size heuristucs.
      built-in count-objects.
      cache-tree.c: typefix
      built-in diff.
      built-in diff: assorted updates.
      builtin-diff.c: die() formatting type fix.
      Fix builtin-push to honor Push: lines in remotes file.
      Extended SHA1 -- "rev^@" syntax to mean "all parents"
      get_sha1(): :path and :[0-3]:path to extract from index.
      built-in "git grep"
      Use RFC2822 dates from "git fmt-patch".
      builtin-grep: wildcard pathspec fixes
      builtin-grep: support '-l' option.
      builtin-grep: do not use setup_revisions()
      fsck-objects: mark objects reachable from cache-tree
      builtin-count-objects: make it official.
      builtin-diff: call it "git-diff", really.
      builtin-log/whatchanged/show: make them official.
      show-branch: omit uninteresting merges.
      builtin-push: make it official.
      builtin-grep: printf %.*s length is int, not ptrdiff_t.
      Revert "fetch, pull: ask config for remote information"
      builtin-grep: allow -<n> and -[ABC]<n> notation for context lines.
      builtin-grep: allow more than one patterns.
      builtin-grep: support -c (--count).
      builtin-grep: support -w (--word-regexp).
      builtin-grep: tighten path wildcard vs tree traversal.
      core.prefersymlinkrefs: use symlinks for .git/HEAD
      repo-config: readability fixups.
      builtin-count-objects: open packs when running -v
      Fix test-dump-cache-tree in one-tree disappeared case.
      read-tree: invalidate cache-tree entry when a new index entry is added.
      cache-tree: a bit more debugging support.
      builtin-grep: terminate correctly at EOF
      builtin-grep: binary files -a and -I
      fsck-objects: do not segfault on missing tree in cache-tree
      builtin-grep: -L (--files-without-match).
      Makefile: do not link rev-list any specially.
      delta: stricter constness
      pack-object: squelch eye-candy on non-tty
      binary patch.
      binary diff: further updates.
      update-index --unresolve: work from a subdirectory.
      checkout-index: plug memory leak from prefix_path()
      update-index: plug memory leak from prefix_path()
      update-index --again
      update-index --again: take optional pathspecs
      binary diff and apply: testsuite.
      Teach -f <file> option to builtin-grep.
      builtin-grep: documentation
      get_sha1() - fix infinite loop on nonexistent stage.
      Teach git-clean optional <paths>... parameters.
      builtin-grep: tighten argument parsing.
      builtin-grep: typofix
      builtin-grep: -w fix
      builtin-grep: -F (--fixed-strings)
      checkout: use --aggressive when running a 3-way merge (-m).
      diffstat rename squashing fix.
      read-tree -u one-way merge fix to check out locally modified paths.
      apply --numstat: show new name, not old name.
      builtin-grep: unparse more command line options.
      apply --cached: apply a patch without using working tree.
      git-am: use apply --cached
      builtin-diff: fix comparison between two blobs.
      merge-base: Clarify the comments on post processing.
      read-tree -m -u: do not overwrite or remove untracked working tree files.
      builtin-grep: workaround for non GNU grep.
      Revert "builtin-grep: workaround for non GNU grep."
      apply --cached: do not check newly added file in the working tree
      builtin-add: fix unmatched pathspec warnings.
      builtin-diff: do not say files are renamed when blob and file are given
      Fix build procedure for builtin-init-db
      built-in tar-tree and remote tar-tree
      git-format-patch: now built-in.
      checkdiff_consume: strtol parameter fix.
      git-rebase: use canonical A..B syntax to format-patch
      tutorial-2: typofix in examples.
      mailinfo: skip bogus UNIX From line inside body
      CMIT_FMT_EMAIL: Q-encode Subject: and display-name part of From: fields.
      builtin format-patch: squelch content-type for 7-bit ASCII
      diff: minor option combination fix.
      fetch-pack: output refs in the order they were given on the command line.
      Tutorial #2: broken link fix.
      builtin-rm: squelch compiler warnings.
      cvsimport: do not barf on creation of an empty file.
      apply: force matching at the beginning.
      fetch.c: remove an unused variable and dead code.
      ls-remote: fix rsync:// to report HEAD
      mailinfo: More carefully parse header lines in read_one_header_line()
      gitk: start-up bugfix
      built-in format-patch: various fixups.
      format-patch: -n and -k are mutually exclusive.
      Let git-clone to pass --template=dir option to git-init-db.
      git-fetch: avoid using "case ... in (arm)"
      adjust to the rebased series by Linus.
      send-email: do not pass bogus address to local sendmail binary
      format-patch --signoff
      fetch.c: do not pass uninitialized lock to unlock_ref().
      fetch.c: do not call process_tree() from process_tree().
      fetch: do not report "same" unless -verbose.
      read-tree --reset: update working tree file for conflicted paths.
      rev-parse: tighten constness properly.

Linus Torvalds (60):
      Common option parsing for "git log --diff" and friends
      Tentative built-in "git show"
      Fixes for option parsing
      Log message printout cleanups
      Log message printout cleanups (#2)
      Log message printout cleanups (#3): fix --pretty=oneline
      Fix uninteresting tags in new revision parsing
      get_sha1() shorthands for blob/tree objects
      Allow "git repack" users to specify repacking window/depth
      git log: don't do merge diffs by default
      Split up builtin commands into separate files from git.c
      Fix "git help -a" terminal autosizing
      git builtin "push"
      Fix "git-log --parents" breakage post v1.3.0
      sha1_to_hex() usage cleanup
      git diff: support "-U" and "--unified" options properly
      Allow one-way tree merge to remove old files
      Simplify "git reset --hard"
      builtin-grep: use external grep when we can take advantage of it
      read-tree --reset -u fix.
      Fix silly typo in new builtin grep
      Remove old "git-grep.sh" remnants
      libify git-ls-files directory traversal
      Clean up git-ls-file directory walking library interface
      Do "git add" as a builtin
      builtin-add: warn on unmatched pathspecs
      builtin-grep: workaround for non GNU grep.
      Remove old "git-add.sh" remnants
      Prevent bogus paths from being added to the index.
      Make "git rev-list" be a builtin
      Libify the index refresh logic
      Move pathspec matching from builtin-add.c into dir.c
      Add builtin "git rm" command
      cvsimport: repack every kilo-commits.
      apply: treat EOF as proper context.
      Clean up sha1 file writing
      bogus "fatal: Not a git repository"
      t1002: use -U0 instead of --unified=0
      Fix "--abbrev=xyz" for revision listing
      Fix memory leak in "git rev-list --objects"
      Don't use "sscanf()" for tree mode scanning
      Add raw tree buffer info to "struct tree"
      Make "tree_entry" have a SHA1 instead of a union of object pointers
      Switch "read_tree_recursive()" over to tree-walk functionality
      Remove "tree->entries" tree-entry list from tree parser
      Make "struct tree" contain the pointer to the tree buffer
      Make "tree_entry" have a SHA1 instead of a union of object pointers
      Switch "read_tree_recursive()" over to tree-walk functionality
      builtin-read-tree.c: avoid tree_entry_list in prime_cache_tree_rec()
      Remove "tree->entries" tree-entry list from tree parser
      fsck-objects: avoid unnecessary tree_entry_list usage
      Remove unused "zeropad" entry from tree_list_entry
      Convert "mark_tree_uninteresting()" to raw tree walker
      Convert fetch.c: process_tree() to raw tree walker
      Remove last vestiges of generic tree_entry_list
      tree_entry(): new tree-walking helper function
      read-tree: fix eye-candy.
      Fix typo in tutorial-2.txt
      rev-list: fix process_tree() conversion.
      pack-objects: improve path grouping heuristics.

Lukas Sandström (2):
      Make git-check-format-ref a builtin.
      SubmittingPatches: The download location of External Editor has moved

Martin Langhoff (7):
      git-cvsexportcommit: Add -f(orce) and -m(essage prefix) flags, small cleanups.
      cvsserver: use git-rev-list instead of git-log
      cvsserver: use git-rev-list instead of git-log
      cvsimport: minor fixups
      cvsimport: replace anonymous sub ref with a normal sub
      cvsimport: introduce -L<imit> option to workaround memory leaks
      cvsimport: introduce _fetchfile() method and used a 1M buffer to read()

Martin Waitz (6):
      Transitively read alternatives
      test case for transitive info/alternates
      clone: don't clone the info/alternates file
      git help: remove whatchanged from list of common commands
      Documentation/Makefile: remove extra /
      Add instructions to commit template.

Martyn Smith (3):
      Added logged warnings for CVS error returns
      Many fixes for most operations in Eclipse.
      Change to allow subdir updates from Eclipse

Matthias Kestenholz (1):
      add documentation for update-index --unresolve

Matthias Lederhofer (1):
      git status: skip empty directories, and add -u to show all untracked files

Nick Hengeveld (3):
      git-fetch: resolve remote symrefs for HTTP transport
      http: prevent segfault during curl handle reuse
      builtin-push: don't pass --thin to HTTP transport

Nicolas Pitre (10):
      split the diff-delta interface
      use delta index data when finding best delta matches
      replace adler32 with Rabin's polynomial in diff-delta
      tiny optimization to diff-delta
      improve diff-delta with sparse and/or repetitive data
      improve base85 generated assembly code
      fix diff-delta bad memory access
      simple euristic for further free packing improvements
      pack-object: slightly more efficient
      improve depth heuristic for maximum delta size

Paul Mackerras (19):
      gitk: Implement multiple views
      gitk: Make File->Update work properly again
      gitk: Fix various bugs in the view support
      gitk: Don't reread git-rev-list output from scratch on view switch
      gitk: Remember the view in the history list
      gitk: Let git-rev-list do the argument list parsing
      gitk: Use git-rev-parse only to identify file/dir names on cmd line
      gitk: Implement "permanent" views (stored in ~/.gitk)
      gitk: add menu item for editing the current view
      gitk: Use a text widget for the file list
      gitk: Add a tree-browsing mode
      gitk: Basic support for highlighting one view within another
      gitk: Fix file list display when files are renamed
      gitk: Allow view to specify arbitrary arguments to git-rev-list
      gitk: Fix display of "(...)" for parents/children we haven't drawn
      Provide a way to flush git-diff-tree's output
      gitk: Fix bug where page-up/down wouldn't always work properly
      gitk: show_error fix
      Make git-diff-tree indicate when it flushes

Peter Eriksen (9):
      Add git-quiltimport to .gitignore.
      Builtin git-ls-files.
      Builtin git-ls-tree.
      Builtin git-tar-tree.
      Builtin git-read-tree.
      Builtin git-commit-tree.
      Builtin git-apply.
      Builtin git-show-branch.
      Builtin git-diff-files, git-diff-index, git-diff-stages, and git-diff-tree.

Peter Hagervall (1):
      Sparse fix for builtin-diff

Petr Baudis (3):
      git-repo-config --list support
      Deprecate usage of git-var -l for getting config vars list
      Call builtin ls-tree in git-cat-file -p

Ryan Anderson (4):
      git-send-email: Add References: headers to emails, in addition to In-Reply-To:
      Add support for --bcc to git-send-email.
      Fix a bug in email extraction used in git-send-email.
      Add a basic test case for git send-email, and fix some real bugs discovered.

Salikh Zakirov (1):
      Fixed Cygwin CR-munging problem in mailsplit

Santi Béjar (1):
      Document that "git add" only adds non-ignored files.

Sean Estabrooks (19):
      Add --continue and --abort options to git-rebase.
      Several trivial documentation touch ups.
      Fix up docs where "--" isn't displayed correctly.
      Update git-unpack-objects documentation.
      Clarify git-cherry documentation.
      Another config file parsing fix.
      t1300-repo-config: two new config parsing tests.
      Add "--branches", "--tags" and "--remotes" options to git-rev-parse.
      Make git rebase interactive help match documentation.
      Add "--summary" option to git diff.
      Convert some "apply --summary" users to "diff --summary".
      Strip useless "tags/" prefix from git-tag -l output
      Allow pickaxe and diff-filter options to be used by git log.
      Avoid segfault in diff --stat rename output.
      Change GIT-VERSION-GEN to call git commands with "git" not "git-".
      Install git builtins into gitexecdir rather than bindir.
      Remove possible segfault in http-fetch.
      --summary output should print immediately after stats.
      A Perforce importer for git.

Serge E. Hallyn (1):
      socksetup: don't return on set_reuse_addr() error

Sergey Vlasov (1):
      gitk: Display commit messages with word wrap

Shawn O. Pearce (24):
      Remove unnecessary local in get_ref_sha1.
      Improve abstraction of ref lock/write.
      Convert update-ref to use ref_lock API.
      Log ref updates to logs/refs/<ref>
      Support 'master@2 hours ago' syntax
      Fix ref log parsing so it works properly.
      General ref log reading improvements.
      Added logs/ directory to repository layout.
      Force writing ref if it doesn't exist.
      Log ref updates made by fetch.
      Change 'master@noon' syntax to 'master@{noon}'.
      Correct force_write bug in refs.c
      Change order of -m option to update-ref.
      Include ref log detail in commit, reset, etc.
      Create/delete branch ref logs.
      Enable ref log creation in git checkout -b.
      Reference git-check-ref-format in git-branch.
      Elaborate on why ':' is a bad idea in a ref name.
      Built git-upload-tar should be ignored.
      Verify git-commit provides a reflog message.
      Test that git-branch -l works.
      Remove unnecessary output from t3600-rm.
      Improved pack format documentation.
      Allow multiple -m options to git-commit.

Tilman Sauerbeck (1):
      Documentation/Makefile: create tarballs for the man pages and html files

Timo Hirvonen (3):
      Builtin git-init-db
      Builtin git-cat-file
      gitk: Replace "git-" commands with "git "

Yakov Lerner (2):
      NO_INET_NTOP and compat/inet_ntop.c for some systems (e.g. old Cygwin).
      Problem: 'trap...exit' causes error message when /bin/sh is ash.

Yann Dirson (3):
      Do not call 'cmp' with non-existant -q flag.
      Document current cvsexportcommit limitations.
      Make cvsexportcommit create parent directories as needed.


Version v1.3.3; changes since v1.3.2:
-------------------------------------

Ben Clifford (1):
      include header to define uint32_t, necessary on Mac OS X

Dennis Stosberg (2):
      Fix git-pack-objects for 64-bit platforms
      Fix compilation on newer NetBSD systems

Dmitry V. Levin (1):
      Separate object name errors from usage errors

Eric Wong (2):
      apply: fix infinite loop with multiple patches with --index
      Install git-send-email by default

Johannes Schindelin (1):
      repo-config: trim white-space before comment

Junio C Hamano (6):
      core.prefersymlinkrefs: use symlinks for .git/HEAD
      repo-config: document what value_regexp does a bit more clearly.
      Fix repo-config set-multivar error return path.
      Documentation: {caret} fixes (git-rev-list.txt)
      checkout: use --aggressive when running a 3-way merge (-m).
      Fix pack-index issue on 64-bit platforms a bit more portably.

Linus Torvalds (3):
      Fix "git diff --stat" with long filenames
      revert/cherry-pick: use aggressive merge.
      git config syntax updates

Martin Waitz (2):
      clone: keep --reference even with -l -s
      repack: honor -d even when no new pack was created

Matthias Lederhofer (1):
      core-tutorial.txt: escape asterisk

Pavel Roskin (1):
      Release config lock if the regex is invalid

Sean Estabrooks (3):
      Fix for config file section parsing.
      Another config file parsing fix.
      Ensure author & committer before asking for commit message.

Yakov Lerner (1):
      read-cache.c: use xcalloc() not calloc()


Version v1.3.2; changes since v1.3.1:
-------------------------------------

Huw Davies (1):
      git-format-patch: Use rfc2822 compliant date.

Jon Loeliger (3):
      Alphabetize the glossary.
      Added definitions for a few words:
      Add a few more words to the glossary.

Junio C Hamano (4):
      rebase: typofix.
      commit-tree.c: check_valid() microoptimization.
      verify-pack: check integrity in a saner order.
      git-am --resolved: more usable error message.

Linus Torvalds (1):
      Fix filename verification when in a subdirectory

Martin Langhoff (1):
      git-send-email: fix version string to be valid perl

Matthias Kestenholz (3):
      annotate: fix warning about uninitialized scalar
      annotate: display usage information if no filename was given
      fix various typos in documentation

Robert Shearman (1):
      Give the user a hint for how to continue in the case that git-am fails because it requires user intervention

Sean Estabrooks (4):
      Update the git-branch man page to include the "-r" option,
      Fix up remaining man pages that use asciidoc "callouts".
      Properly render asciidoc "callouts" in git man pages.
      Fix trivial typo in git-log man page.


Version v1.3.1; changes since v1.3.0:
-------------------------------------

Jonas Fonseca (1):
      Fix filename scaling for binary files

Junio C Hamano (5):
      git-merge: a bit more readable user guidance.
      pre-commit hook: complain about conflict markers.
      git-commit --amend: two fixes.
      pack-objects: do not stop at object that is "too small"
      mailinfo: decode underscore used in "Q" encoding properly.

Linus Torvalds (1):
      git-log produces no output

Nicolas Pitre (1):
      fix pack-object buffer size

Paul Mackerras (1):
      rev-parse: better error message for ambiguous arguments

Petr Baudis (2):
      Document git-var -l listing also configuration variables
      Document the configuration file

Santi Béjar (1):
      Reintroduce svn pools to solve the memory leak.

Serge E. Hallyn (1):
      socksetup: don't return on set_reuse_addr() error

Shawn O. Pearce (1):
      Document git-clone --reference


Version v1.3.0; changes since v1.3.0-rc4:
-----------------------------------------

A Large Angry SCM (1):
      Makefile fixups.

Herbert Valerio Riedel (1):
      git-svnimport symlink support

Johannes Schindelin (2):
      diff-options: add --patch-with-stat
      pager: do not fork a pager if PAGER is set to empty.

Jonas Fonseca (1):
      Add git-annotate(1) and git-blame(1)

Junio C Hamano (9):
      rev-list --bisect: limit list before bisecting.
      diff-tree: typefix.
      diff --stat: do not do its own three-dashes.
      diff-files --stat: do not dump core with unmerged index.
      reading $GIT_DIR/info/graft - skip comments correctly.
      rev-list --boundary: show boundary commits even when limited otherwise.
      packed_object_info_detail(): check for corrupt packfile.
      diff --stat: make sure to set recursive.
      GIT 1.3.0

Linus Torvalds (1):
      Support "git cmd --help" syntax

Paul Mackerras (1):
      gitk: Fix bug caused by missing commitlisted elements

Serge E. Hallyn (5):
      cleanups: Fix potential bugs in connect.c
      cleanups: Remove unused vars from combine-diff.c
      cleanups: Remove impossible case in quote.c
      cleanups: prevent leak of two strduped strings in config.c
      cleanups: remove unused variable from exec_cmd.c

Yann Dirson (1):
      Allow empty lines in info/grafts


Version v1.3.0-rc4; changes since v1.3.0-rc3:
---------------------------------------------

Davide Libenzi (1):
      xdiff: post-process hunks to make them consistent.

Dennis Stosberg (2):
      Solaris 9 also wants our own unsetenv/setenv.
      Replace index() with strchr().

Eric W. Biederman (1):
      Implement limited context matching in git-apply.

Johannes Schindelin (2):
      diff-options: add --stat (take 2)
      diff-options: add --stat (take 2)

Junio C Hamano (31):
      git-log: match rev-list --abbrev and --abbrev-commit
      diff: fix output of total-rewrite diff.
      diffcore-rename: fix merging back a broken pair.
      log-tree: separate major part of diff-tree.
      git log [diff-tree options]...
      Retire diffcore-pathspec.
      tree-diff: do not assume we use only one pathspec
      git log --full-diff
      Retire git-log.sh
      blame and friends: adjust to multiple pathspec change.
      Retire git-log.sh (take#2)
      diff-* --patch-with-raw
      Retire git-log.sh (take #3)
      combine-diff: do not lose hunks with only deletion at end.
      combine-diff: fix hunks at the end (take #2).
      Retire t5501-old-fetch-and-upload test.
      git-commit: do not muck with commit message when no_edit is set.
      stripspace: make sure not to leave an incomplete line.
      combine-diff: type fix.
      Documentation: add a couple of missing docs.
      Makefile: $(MAKE) check-docs
      git-log: do not output excess blank line between commits
      t3600-rm: skip failed-remove test when we cannot make an unremovable file.
      Fix-up previous expr changes.
      diff --stat: no need to ask funcnames nor context.
      t5500: test fix
      stripspace: incomplete line fix (take #2)
      Retire git-log.sh (take #4)
      git-log <diff-options> <paths> documentation
      "git cmd -h" for shell scripts.
      GIT v1.3.0-rc4

Linus Torvalds (4):
      Make "--parents" logs also be incremental
      When showing a commit message, do not lose an incomplete line.
      Use less memory in "git log"
      Clean up trailing whitespace when pretty-printing commits

Marco Roeland (1):
      xdiff/xdiffi.c: fix warnings about possibly uninitialized variables

Mark Wooding (1):
      Shell utilities: Guard against expr' magic tokens.

Petr Baudis (3):
      Improve the git-diff-tree -c/-cc documentation
      Document --patch-with-raw
      Separate the raw diff and patch with a newline


Version v1.3.0-rc3; changes since v1.3.0-rc2:
---------------------------------------------

Francis Daly (1):
      Tweaks to make asciidoc play nice.

Johannes Schindelin (3):
      cvsimport: use git-update-ref when updating
      On some platforms, certain headers need to be included before regex.h
      Fix compile with expat, but an old curl version

Jon Loeliger (1):
      Added Packing Heursitics IRC writeup.

Junio C Hamano (16):
      git-clone: fix handling of upsteram whose HEAD does not point at master.
      combine-diff: use built-in xdiff.
      parse_date(): fix parsing 03/10/2006
      combine-diff: refactor built-in xdiff interface.
      diff_flush(): leakfix.
      combine-diff: move the code to parse hunk-header into common library.
      blame: use built-in xdiff
      date parsing: be friendlier to our European friends.
      blame.c: fix completely broken ancestry traversal.
      Match ofs/cnt types in diff interface.
      blame -S <ancestry-file>
      Add Documentation/technical/pack-format.txt
      Thin pack generation: optimization.
      rev-list --abbrev-commit
      count-delta: match get_delta_hdr_size() changes.
      GIT 1.3.0-rc3

Karl Wiberg (1):
      git-svnimport: Don't assume that copied files haven't changed

Keith Packard (1):
      Provide configurable UI font for gitk

Marco Roeland (1):
      git-commit: document --amend

Mark Wooding (1):
      gitk: Use git wrapper to run git-ls-remote.

Mike McCormack (3):
      Avoid a divide by zero if there's no messages to send.
      Avoid a crash if realloc returns a different pointer.
      Add documentation for git-imap-send.

Nick Hengeveld (1):
      http-fetch: add optional DAV-based pack list

Nicolas Pitre (1):
      check patch_delta bounds more carefully

Paul Mackerras (3):
      gitk: replace parent and children arrays with lists
      gitk: Add a help menu item to display key bindings
      gitk: Fix incorrect invocation of getmergediffline

Pavel Roskin (2):
      Add git-clean command
      gitk: Fix searching for filenames in gitk

Petr Baudis (1):
      Support for pickaxe matching regular expressions

Rutger Nijlunsing (1):
      gitk: add key bindings for selecting first and last commit

Stephen Rothwell (1):
      gitk: allow goto heads


Version v1.3.0-rc2; changes since v1.3.0-rc1:
---------------------------------------------

Davide Libenzi (1):
      Clean-up trivially redundant diff.

Eric Wong (6):
      contrib/git-svn: force GIT_DIR to an absolute path
      contrib/git-svn: accept configuration via repo-config
      contrib/git-svn: documentation updates
      contrib/git-svn: ensure repo-config returns a value before using it
      contrib/git-svn: make sure our git-svn is up-to-date for test
      contrib/git-svn: handle array values correctly

J. Bruce Fields (1):
      Documentation: revise top of git man page

Jason Riedy (2):
      Add ALL_LDFLAGS to the git target.
      Use sigaction and SA_RESTART in read-tree.c; add option in Makefile.

Jim Radford (1):
      fix repacking with lots of tags

Junio C Hamano (14):
      rev-list --no-merges: argument parsing fix.
      rev-list: memory usage reduction.
      rev-list --boundary
      revision arguments: ..B means HEAD..B, just like A.. means A..HEAD
      revision.c "..B" syntax: constness fix
      assume unchanged git: diff-index fix.
      tree/diff header cleanup.
      rev-list --boundary: fix re-injecting boundary commits.
      Makefile: many programs now depend on xdiff/lib.a having been built.
      revision: --topo-order and --unpacked
      revision: simplify argument parsing.
      revision: --max-age alone does not need limit_list() anymore.
      safe_fgets() - even more anal fgets()
      GIT 1.3.0-rc2

Linus Torvalds (5):
      Move "--parent" parsing into generic revision.c library code
      Make path-limiting be incremental when possible.
      revision: Fix --topo-order and --max-age with reachability limiting.
      Fix Solaris stdio signal handling stupidities
      pack-objects: be incredibly anal about stdio semantics

Mark Wooding (1):
      xdiff: Show function names in hunk headers.

Nick Hengeveld (2):
      git-ls-remote: send no-cache header when fetching info/refs
      Set HTTP user agent to git/GIT_VERSION

Paul Mackerras (5):
      gitk: Use the new --boundary flag to git-rev-list
      gitk: Show diffs for boundary commits
      gitk: Prevent parent link from overwriting commit headline
      gitk: Allow top panes to scroll horizontally with mouse button 2
      gitk: Better workaround for arrows on diagonal line segments

Peter Eriksen (2):
      Use blob_, commit_, tag_, and tree_type throughout.
      Replace xmalloc+memset(0) with xcalloc.

René Scharfe (3):
      Remove useless pointer update
      Fix sparse warnings about usage of 0 instead of NULL
      Fix sparse warnings about non-ANSI function prototypes

Yasushi SHOJI (2):
      Make git-clone to take long double-dashed origin option (--origin)
      git-clone: exit early if repo isn't specified


Version v1.3.0-rc1; changes since v1.2.6:
-----------------------------------------

Alex Riesen (2):
      PATCH: simplify calls to git programs in git-fmt-merge-msg
      workaround fat/ntfs deficiencies for t3600-rm.sh (git-rm)

Alexandre Julliard (12):
      Add an Emacs interface in contrib.
      git-format-patch: Always add a blank line between headers and body.
      contrib/emacs: Add an Emacs VC backend.
      git.el: Portability fixes for XEmacs and Emacs CVS.
      git.el: Set default directory before running the status mode setup hooks.
      git.el: Automatically update .gitignore status.
      git.el: Added support for Signed-off-by.
      git.el: Added customize support for all parameters.
      ls-files: Don't require exclude files to end with a newline.
      git.el: More robust handling of subprocess errors when returning strings.
      git.el: Get the default user name and email from the repository config.
      git.el: Added a function to diff against the other heads in a merge.

Anand Kumria (1):
      git-svnimport: if a limit is specified, respect it

Aneesh Kumar K.V (16):
      Add contrib/gitview from Aneesh.
      Add a README for gitview
      gitview: typofix
      gitview: Read tag and branch information using git ls-remote
      gitview: Use monospace font to draw the branch and tag name
      gitview: Display the lines joining commit nodes clearly.
      gitview: Fix DeprecationWarning
      gitview: Bump the rev
      gitview: Code cleanup
      gitview: Fix the graph display .
      gitview: Fix the encoding related bug
      gitview: Remove trailing white space
      gitview: Some window layout changes.
      gitview: Set the default width of graph cell
      gitview: Use horizontal scroll bar in the tree view
      gitview: pass the missing argument _show_clicked_cb.

Carl Worth (5):
      git-rebase: Clarify usage statement and copy it into the actual documentation.
      New test to verify that when git-clone fails it cleans up the new directory.
      git-ls-files: Fix, document, and add test for --error-unmatch option.
      Add new git-rm command with documentation
      git-rm: Fix to properly handle files with spaces, tabs, newlines, etc.

Dmitry V. Levin (1):
      git/Documentation: fix SYNOPSIS style bugs

Eric Wong (43):
      Introducing contrib/git-svn.
      git-svn: fix revision order when XML::Simple is not loaded
      git-svn: ensure fetch always works chronologically.
      git-svn: remove files from the index before adding/updating
      git-svn: fix a typo in defining the --no-stop-on-copy option
      git-svn: allow --find-copies-harder and -l<num> to be passed on commit
      git-svn: Allow for more argument types for commit (from..to)
      git-svn: remove any need for the XML::Simple dependency
      git-svn: change ; to && in addremove()
      contrib/git-svn.txt: add a note about renamed/copied directory support
      git-svn: fix several corner-case and rare bugs with 'commit'
      contrib/git-svn: add Makefile, test, and associated ignores
      git-svn: 0.9.1: add --version and copyright/license (GPL v2+) information
      contrib/git-svn: add show-ignore command
      contrib/git-svn: optimize sequential commits to svn
      contrib/git-svn: version 0.10.0
      contrib/git-svn: tell the user to not modify git-svn-HEAD directly
      contrib/git-svn: correct commit example in manpage
      contrib/git-svn: use refs/remotes/git-svn instead of git-svn-HEAD
      git-branch: add -r switch to list refs/remotes/*
      contrib/git-svn: add -b/--branch switch for branch detection
      contrib/git-svn: several small bug fixes and changes
      contrib/git-svn: strip 'git-svn-id:' when commiting to SVN
      contrib/git-svn: allow --authors-file to be specified
      contrib/git-svn: cleanup option parsing
      contrib/git-svn: create a more recent master if one does not exist
      contrib/git-svn: avoid re-reading the repository uuid, it never changes
      contrib/git-svn: add --id/-i=$GIT_SVN_ID command-line switch
      contrib/git-svn: better documenting of CLI switches
      send-email: accept --no-signed-off-by-cc as the documentation states
      contrib/git-svn: fix a copied-tree bug in an overzealous assertion
      contrib/git-svn: fix svn compat and fetch args
      contrib/git-svn: remove the --no-stop-on-copy flag
      contrib/git-svn: fix a harmless warning on rebuild (with old repos)
      fetch,parse-remote,fmt-merge-msg: refs/remotes/* support
      ls-tree: add --abbrev[=<n>] option
      ls-files: add --abbrev[=<n>] option
      contrib/git-svn: allow rebuild to work on non-linear remote heads
      send-email: use built-in time() instead of /bin/date '+%s'
      send-email: Change from Mail::Sendmail to Net::SMTP
      send-email: try to order messages in email clients more correctly
      send-email: lazy-load Email::Valid and make it optional
      contrib/git-svn: stabilize memory usage for big fetches

Fernando J. Pereda (1):
      Allow building Git in systems without iconv

Francis Daly (4):
      AsciiDoc fix for tutorial
      Tweak asciidoc output to work with broken docbook-xsl
      Fix multi-paragraph list items in OPTIONS section
      Format tweaks for asciidoc.

Fredrik Kuivinen (13):
      Add git-blame, a tool for assigning blame.
      git-blame, take 2
      git-blame: Make the output human readable
      git-blame: Use the same tests for git-blame as for git-annotate
      Fix some inconsistencies in the docs
      Remove trailing dot after short description
      Nicer output from 'git'
      Make it possible to not clobber object.util in sort_in_topological_order (take 2)
      rev-lib: Make it easy to do rename tracking (take 2)
      blame: Rename detection (take 2)
      blame: Nicer output
      blame: Fix git-blame <directory>
      Makefile: Add TAGS and tags targets

J. Bruce Fields (1):
      Document git-rebase behavior on conflicts.

Jason Riedy (1):
      Fix typo in git-rebase.sh.

Jeff Muizelaar (2):
      cosmetics: change from 'See-Also' to 'See Also'
      documentation: add 'see also' sections to git-rm and git-add

Johannes Schindelin (13):
      Fix cpio call
      Optionally support old diffs
      Support Irix
      Optionally work without python
      Fixes for ancient versions of GNU make
      avoid makefile override warning
      Really honour NO_PYTHON
      Fix "gmake -j"
      Use Ryan's git-annotate instead of jsannotate
      Warn about invalid refs
      Fix test case for some sed
      imap-send: Add missing #include for macosx
      Remove dependency on a file named "-lz"

Jon Loeliger (9):
      Add git-show reference
      Call out the two different uses of git-branch and fix a typo.
      Document the default source of template files.
      Clarify git-rebase example commands.
      Reference git-commit-tree for env vars.
      Fix minor typo.
      Rewrite synopsis to clarify the two primary uses of git-checkout.
      Clarify and expand some hook documentation.
      Removed bogus "<snap>" identifier.

Jonas Fonseca (2):
      manpages: insert two missing [verse] markers for multi-line SYNOPSIS
      repo-config: give value_ a sane default so regexec won't segfault

Josef Weidendorfer (1):
      git-mv: fix moves into a subdir from outside

Junio C Hamano (137):
      "Assume unchanged" git
      "Assume unchanged" git: do not set CE_VALID with --refresh
      ls-files: debugging aid for CE_VALID changes.
      "Assume unchanged" git: --really-refresh fix.
      ls-files: split "show-valid-bit" into a different option.
      "assume unchanged" git: documentation.
      cache_name_compare() compares name and stage, nothing else.
      git-commit: Now --only semantics is the default.
      rebase: allow a hook to refuse rebasing.
      commit: detect misspelled pathspec while making a partial commit.
      rebase: allow rebasing onto different base.
      ls-files --error-unmatch pathspec error reporting fix.
      Detect misspelled pathspec to git-add
      packed objects: minor cleanup
      topo-order: make --date-order optional.
      pack-objects: reuse data from existing packs.
      pack-objects: finishing touches.
      git-repack: allow passing a couple of flags to pack-objects.
      git-tag: -l to list tags (usability).
      Add contrib/README.
      SubmittingPatches: note on whitespaces
      pack-objects: avoid delta chains that are too long.
      Make "empty ident" error message a bit more helpful.
      Delay "empty ident" errors until they really matter.
      Keep Porcelainish from failing by broken ident after making changes.
      fmt-merge-msg: say which branch things were merged into unless 'master'
      Allow git-mv to accept ./ in paths.
      Documentation: fix typo in rev-parse --short option description.
      fmt-merge-msg: do not add excess newline at the end.
      rev-list --objects-edge
      Thin pack - create packfile with missing delta base.
      send-pack --thin: use "thin pack" delta transfer.
      Add git-push --thin.
      Use thin pack transfer in "git fetch".
      fmt-merge-msg: avoid open "-|" list form for Perl 5.6
      rerere: avoid open "-|" list form for Perl 5.6
      send-email: avoid open "-|" list form for Perl 5.6
      svnimport: avoid open "-|" list form for Perl 5.6
      cvsimport: avoid open "-|" list form for Perl 5.6
      Fix fmt-merge-msg counting.
      cherry-pick/revert: error-help message rewording.
      git-mktree: reverse of git-ls-tree.
      rev-list.c: fix non-grammatical comments.
      send-pack: do not give up when remote has insanely large number of refs.
      gitview: ls-remote invocation shellquote safety.
      pack-objects: thin pack micro-optimization.
      pack-objects: use full pathname to help hashing with "thin" pack.
      count-delta: tweak counting of copied source material.
      count-delta: fix counting of copied source.
      Tweak break/merge score to adjust to the new delta generation code.
      pack-objects: allow "thin" packs to exceed depth limits
      rev-list --objects-edge: remove duplicated edge commit output.
      rev-list --objects: use full pathname to help hashing.
      pack-objects: hash basename and direname a bit differently.
      Revert "diff-delta: produce optimal pack data"
      Build and install git-mailinfo.
      rev-list split: minimum fixup.
      apply --whitespace fixes and enhancements.
      apply: squelch excessive errors and --whitespace=error-all
      apply --whitespace: configuration option.
      git-apply --whitespace=nowarn
      Revert "Revert "diff-delta: produce optimal pack data""
      git-apply: war on whitespace -- finishing touches.
      diffcore-break: micro-optimize by avoiding delta between identical files.
      diffcore-rename: split out the delta counting code.
      diffcore-delta: stop using deltifier for packing.
      git-am: --whitespace=x option.
      diff-delta: cull collided hash bucket more aggressively.
      git-log (internal): add approxidate.
      git-log (internal): more options.
      Pretty-print tagger dates.
      war on whitespaces: documentation.
      Documentation: read-tree --aggressive
      Documentation: rev-list --objects-edge
      annotate: resurrect raw timestamps.
      setup_revisions(): handle -n<n> and -<n> internally.
      GIT-VERSION-GEN: squelch unneeded error from "cat version"
      show-branch --topics
      git-commit --amend
      git-commit: make sure we protect against races.
      diffcore-rename: similarity estimator fix.
      show-branch --topics: omit more uninteresting commits.
      count-delta: no need for this anymore.
      diffcore-break: similarity estimator fix.
      diffcore-delta: make change counter to byte oriented again.
      git-commit --amend: allow empty commit.
      Const tightening.
      verify-pack -v: show delta-chain histogram.
      blame: avoid -lm by not using log().
      blame and annotate: show localtime with timezone.
      blame: avoid "diff -u0".
      annotate/blame tests updates.
      annotate-blame test: don't "source", but say "."
      annotate-blame test: add evil merge.
      blame: unbreak "diff -U 0".
      annotate-blame: tests incomplete lines.
      pack-objects: simplify "thin" pack.
      Use #define ARRAY_SIZE(x) (sizeof(x)/sizeof(x[0]))
      refs.c::do_for_each_ref(): Finish error message lines with "\n"
      fsck-objects: Remove --standalone
      Fix t1200 test for breakage caused by removal of full-stop at the end of fast-forward message.
      try_to_simplify_commit(): do not skip inspecting tree change at boundary.
      repack: prune loose objects when -d is given
      git-diff: -p disables rename detection.
      diffcore-rename: somewhat optimized.
      revision traversal: --remove-empty fix.
      revision traversal: --remove-empty fix (take #2).
      diffcore-delta: make the hash a bit denser.
      diffcore-delta: tweak hashbase value.
      cvsimport: honor -i and non -i upon subsequent imports
      fetch: exit non-zero when fast-forward check fails.
      cvsimport: fix reading from rev-parse
      git-pull: run repo-config with dash form.
      unpack_delta_entry(): reduce memory footprint.
      generate-cmdlist: style cleanups.
      revamp git-clone.
      git-merge knows some strategies want to skip trivial merges
      http-fetch: nicer warning for a server with unreliable 404 status
      core.warnambiguousrefs: warns when "name" is used and both "name" branch and tag exists.
      revamp git-clone (take #2).
      get_sha1_basic(): try refs/... and finally refs/remotes/$foo/HEAD
      clone: record the remote primary branch with remotes/$origin/HEAD
      http-push.c: squelch C90 warnings.
      git-apply: do not barf when updating an originally empty file.
      rev-list --timestamp
      git-clone: typofix.
      git-pull: further safety while on tracking branch.
      git-pull: reword "impossible to fast-forward" message.
      sha1_name: warning ambiguous refs.
      sha1_name: make core.warnambiguousrefs the default.
      send-email: Identify author at the top when sending e-mail
      commit-tree: check return value from write_sha1_file()
      built-in diff: minimum tweaks
      true built-in diff: run everything in-core.
      git-push: make --thin pack transfer the default.
      add clean and ignore rules for xdiff/
      GIT 1.3.0 rc1

Karl Wiberg (7):
      git-svnimport: -r adds svn revision number to commit messages
      svnimport: Mention -r in usage summary
      svnimport: Convert executable flag
      svnimport: Convert the svn:ignore property
      svnimport: Read author names and emails from a file
      Let git-svnimport's author file use same syntax as git-cvsimport's
      Save username -> Full Name <email@addr.es> map file

Linus Torvalds (21):
      Handling large files with GIT
      Handling large files with GIT
      git-merge-tree: generalize the "traverse <n> trees in sync" functionality
      Teach the "git" command to handle some commands internally
      First cut at libifying revlist generation
      Make git diff-generation use a simpler spawn-like interface
      The war on trailing whitespace
      Splitting rev-list into revisions lib, end of beginning.
      git-rev-list libification: rev-list walking
      Introduce trivial new pager.c helper infrastructure
      Tie it all together: "git log"
      Rip out merge-order and make "git log <paths>..." work again.
      get_revision(): do not dig deeper when we know we are at the end.
      git-fmt-merge-msg cleanup
      Fix up diffcore-rename scoring
      diffcore-delta: 64-byte-or-EOL ultrafast replacement.
      diffcore-delta: 64-byte-or-EOL ultrafast replacement (hash fix).
      git-apply: safety fixes
      Use a *real* built-in diff generator
      builtin-diff: \No newline at end of file.
      Fix error handling for nonexistent names

Lukas Sandström (1):
      git-fetch: print the new and old ref when fast-forwarding

Marco Costalba (1):
      Add a Documentation/git-tools.txt

Marco Roeland (1):
      imap-send: cleanup execl() call to use NULL sentinel instead of 0

Mark Hollomon (1):
      Let merge set the default strategy.

Mark Wooding (6):
      combine-diff: Honour --full-index.
      combine-diff: Honour -z option correctly.
      Documentation/Makefile: Some `git-*.txt' files aren't manpages.
      gitignore: Ignore some more boring things.
      contrib/emacs/Makefile: Provide tool for byte-compiling files.
      annotate-tests: override VISUAL when running tests.

Martin Langhoff (18):
      Introducing git-cvsserver -- a CVS emulator for git.
      cvsserver: add notes on how to get a checkout under Eclipse
      cvsserver: Eclipse compat fixes - implement Questionable, alias rlog, add a space after the U
      cvsserver: Eclipse compat - browsing 'modules' (heads in our case) works
      cvsserver: add notes on how to get a checkout under Eclipse
      cvsserver: Eclipse compat fixes - implement Questionable, alias rlog, add a space after the U
      cvsserver: Eclipse compat - browsing 'modules' (heads in our case) works
      cvsserver: Checkout correctly on Eclipse
      annotate: fix -S parameter to take a string
      cvsserver: Eclipse compat -- now "compare with latest from HEAD" works
      cvsserver: checkout faster by sending files in a sensible order
      cvsserver: fix checkouts with -d <somedir>
      cvsserver: checkout faster by sending files in a sensible order
      cvsserver: fix checkouts with -d <somedir>
      cvsserver: nested directory creation fixups for Eclipse clients
      cvsserver: better error messages
      cvsserver: anonymous cvs via pserver support
      cvsserver: updated documentation

Martin Mares (1):
      gitk: Make error_popup react to Return

Matthias Urlichs (2):
      cvsimport: Remove master-updating code
      Don't recurse into parents marked uninteresting.

Mike McCormack (5):
      Allow adding arbitary lines in the mail header generated by format-patch.
      Allow format-patch to attach patches
      Document the --attach flag.
      Describe how to add extra mail header lines in mail generated by git-format-patch.
      Add git-imap-send, derived from isync 1.0.1.

Nick Hengeveld (10):
      Update http-push functionality
      http-push: fix revision walk
      HTTP slot reuse fixes
      http-push: refactor remote file/directory processing
      http-push: improve remote lock management
      http-push: support for updating remote info/refs
      http-push: cleanup
      Fix broken slot reuse when fetching alternates
      http-push: add support for deleting remote branches
      http-push: don't assume char is signed

Nicolas Pitre (11):
      relax delta selection filtering in pack-objects
      diff-delta: fold two special tests into one plus cleanups
      diff-delta: produce optimal pack data
      diff-delta: big code simplification
      diff-delta: bound hash list length to avoid O(m*n) behavior
      diff-delta: produce optimal pack data
      diff-delta: bound hash list length to avoid O(m*n) behavior
      diff-delta: allow reusing of the reference buffer index
      test-delta needs zlib to compile
      diff-delta: bound hash list length to avoid O(m*n) behavior
      3% tighter packs for free

Olaf Hering (1):
      allow double click on current HEAD id after git-pull

Paul Jakma (1):
      Makefile tweaks: Solaris 9+ dont need iconv / move up uname variables

Paul Mackerras (13):
      gitk: Make "find" on "Files" work again.
      gitk: New improved gitk
      gitk: Fix clicks on arrows on line ends
      gitk: Fix Update menu item
      gitk: Various speed improvements
      gitk: Further speedups
      gitk: Fix a bug in drawing the selected line as a thick line
      gitk: Fix display of diff lines beginning with --- or +++
      gitk: Make commitdata an array rather than a list
      gitk: Don't change cursor at end of layout if find in progress
      gitk: Make downward-pointing arrows end in vertical line segment
      gitk: Improve appearance of first child links
      gitk: Fix two bugs reported by users

Pavel Roskin (1):
      gitview: Select the text color based on whether the entry in highlighted. Use standard font.

Petr Baudis (2):
      Properly git-bisect reset after bisecting from non-master head
      Optionally do not list empty directories in git-ls-files --others

Randal L. Schwartz (1):
      fix imap-send for OSX

René Scharfe (5):
      tar-tree: Use SHA1 of root tree for the basedir
      tar-tree: Introduce write_entry()
      tar-tree: Use write_entry() to write the archive contents
      tar-tree: Remove obsolete code
      tar-tree: Use the prefix field of a tar header

Ryan Anderson (9):
      send-email: Add some options for controlling how addresses are automatically added to the cc: list.
      send-email: Add --cc
      Add git-annotate, a tool for assigning blame.
      annotate: Handle dirty state and arbitrary revisions.
      annotate: Convert all -| calls to use a helper open_pipe().
      annotate: Use qx{} for pipes on activestate.
      annotate: handle \No newline at end of file.
      annotate: Add a basic set of test cases.
      annotate: Support annotation of files on other revisions.

Sean Estabrooks (1):
      annotate.perl triggers rpm bug

Shawn O. Pearce (7):
      git ls files recursively show ignored files
      Add missing programs to ignore list
      Darwin: Ignore missing /sw/lib
      Teach git-checkout-index to read filenames from stdin.
      Prevent --index-info from ignoring -z.
      Add --temp and --stage=all options to checkout-index.
      Add missing semicolon to sed command.

Timo Hirvonen (1):
      Use setenv(), fix warnings

Tony Luck (4):
      fix warning from pack-objects.c
      Re-fix compilation warnings.
      annotate should number lines starting with 1
      fix field width/precision warnings in blame.c

Yasushi SHOJI (1):
      Be verbose when !initial commit


Version v1.2.6; changes since v1.2.5:
-------------------------------------

Junio C Hamano (3):
      parse_date(): fix parsing 03/10/2006
      diff_flush(): leakfix.
      count-delta: match get_delta_hdr_size() changes.

Nicolas Pitre (1):
      check patch_delta bounds more carefully


Version v1.2.5; changes since v1.2.4:
-------------------------------------

Jason Riedy (1):
      Use sigaction and SA_RESTART in read-tree.c; add option in Makefile.

Junio C Hamano (3):
      read-tree --aggressive: remove deleted entry from the working tree.
      tar-tree: file/dirmode fix.
      safe_fgets() - even more anal fgets()

Linus Torvalds (2):
      Fix Solaris stdio signal handling stupidities
      pack-objects: be incredibly anal about stdio semantics


Version v1.2.4; changes since v1.2.3:
-------------------------------------

Alex Riesen (1):
      fix t5600-clone-fail-cleanup.sh on windows

Josef Weidendorfer (2):
      git-mv: Allow -h without repo & fix error message
      git-mv: fixes for path handling

Junio C Hamano (13):
      checkout - eye candy.
      Give no terminating LF to error() function.
      diffcore-rename: plug memory leak.
      git-am: do not allow empty commits by mistake.
      sample hooks template.
      apply --whitespace fixes and enhancements.
      apply: squelch excessive errors and --whitespace=error-all
      apply --whitespace: configuration option.
      git-apply --whitespace=nowarn
      git-apply: war on whitespace -- finishing touches.
      git-am: --whitespace=x option.
      diffcore-break: micro-optimize by avoiding delta between identical files.
      Allow git-mv to accept ./ in paths.

Linus Torvalds (1):
      The war on trailing whitespace

Mark Wooding (2):
      combine-diff: Honour --full-index.
      combine-diff: Honour -z option correctly.


Version v1.2.3; changes since v1.2.2:
-------------------------------------

Carl Worth (2):
      git-add: Add support for --, documentation, and test.
      git-push: Update documentation to describe the no-refspec behavior.

Junio C Hamano (11):
      format-patch: pretty-print timestamp correctly.
      detect broken alternates.
      pack-objects: reuse data from existing packs.
      pack-objects: finishing touches.
      git-repack: allow passing a couple of flags to pack-objects.
      pack-objects: avoid delta chains that are too long.
      Make "empty ident" error message a bit more helpful.
      Delay "empty ident" errors until they really matter.
      Keep Porcelainish from failing by broken ident after making changes.
      pack-objects eye-candy: finishing touches.
      git-fetch: follow tag only when tracking remote branch.

Nicolas Pitre (2):
      nicer eye candies for pack-objects
      also adds progress when actually writing a pack


Version v1.2.2; changes since v1.2.1:
-------------------------------------

Carl Worth (3):
      Trap exit to clean up created directory if clone fails.
      Abstract test_create_repo out for use in tests.
      Prevent git-upload-pack segfault if object cannot be found

Eric Wong (1):
      archimport: remove files from the index before adding/updating

Jonas Fonseca (2):
      git-rev-parse: Fix --short= option parsing
      Document --short and --git-dir in git-rev-parse(1)

Martin Mares (1):
      Fix retries in git-cvsimport

Shawn O. Pearce (1):
      Make git-reset delete empty directories


Version v1.2.1; changes since v1.2.0:
-------------------------------------

Fernando J. Pereda (1):
      Print an error if cloning a http repo and NO_CURL is set

Fredrik Kuivinen (1):
      s/SHELL/SHELL_PATH/ in Makefile

Josef Weidendorfer (1):
      More useful/hinting error messages in git-checkout

Junio C Hamano (6):
      Documentation: git-commit in 1.2.X series defaults to --include.
      Documentation: git-ls-files asciidocco.
      bisect: remove BISECT_NAMES after done.
      combine-diff: diff-files fix.
      combine-diff: diff-files fix (#2)
      checkout: fix dirty-file display.


Version v1.2.0; changes since v1.1.6:
-------------------------------------

Alecs King (1):
      Add freebsd support in Makefile

Alex Riesen (2):
      fix "test: 2: unexpected operator" on bsd
      avoid echo -e, there are systems where it does not work

Andreas Ericsson (4):
      git-cvsimport: Add -A <author-conv-file> option
      update-hook: Major overhaul (handling tags, mainly).
      format-patch: Remove last vestiges of --mbox option
      .gitignore git-rerere and config.mak

Christian Biesinger (1):
      Use a relative path for SVN importing

Daniel Barkalow (4):
      Only use a single parser for tree objects
      Use struct tree in tar-tree
      Use struct commit in tar-tree
      Make apply accept the -pNUM option like patch does.

Eric W. Biederman (1):
      Fix git-format-patch -s to include a Signed-off-by: line...

Eric Wong (2):
      rev-list: allow -n<n> as shorthand for --max-count=<n>
      rev-list: allow -<n> as shorthand for --max-count=<n>

Florian Weimer (1):
      AsciiDoc fixes for the git-svnimport manpage

Fredrik Kuivinen (2):
      merge-recursive: Make use of provided bases
      merge-recursive: Speed up commit graph construction

J. Bruce Fields (7):
      Minor git-reset and git-commit documentation fixes
      Mention install-doc in INSTALL
      New tutorial
      cvs-migration documentation update
      Docs: split up pull-fetch-param.txt
      Docs: move git url and remotes text to separate sections
      Docs: minor git-push copyediting

Jason Riedy (4):
      Run GIT-VERSION-GEN with $(SHELL), not sh.
      Add compat/unsetenv.c .
      Use sha1_file.c's mkdir-like routine in apply.c.
      stat() for existence in safe_create_leading_directories()

Johannes Schindelin (1):
      Use a hashtable for objects instead of a sorted list

Jon Loeliger (1):
      Add --diff-filter= documentation paragraph

Junio C Hamano (112):
      show-branch: take default arguments from configuration file.
      git-describe: default to HEAD
      Makefile: add 'strip' target
      octopus: allow criss-cross and clarify the message when it rejects
      Fix the installation location.
      checkout: automerge local changes while switching branches.
      checkout: merge local modifications while switching branches.
      git-push: avoid falling back on pushing "matching" refs.
      checkout: show dirty state upon switching branches.
      clone: --naked option.
      format-patch: always --mbox and show sane Date:
      octopus: allow manual resolve on the last round.
      Documentation: show-branch.
      show-branch: make the current branch and merge commits stand out.
      show-branch: --current includes the current branch.
      cvsimport: ease migration from CVSROOT/users format
      git-push: fix --tags and document it.
      Allow building of RPM from interim snapshot.
      Revert "git-push: avoid falling back on pushing "matching" refs."
      Makefile: do not assume lack of IPV6 means no sockaddr_storage.
      fsck-objects: support platforms without d_ino in struct dirent.
      DT_UNKNOWN: do not fully trust existence of DT_UNKNOWN
      t4011: "sleep 1" is not enough on FAT
      Undef DT_* before redefining them.
      git-grep: clarification on parameters.
      Recommend to remove unused `origin` in a shared repository.
      Documentation: finishing touches to the new tutorial.
      sample update-hook: sanely handle a new branch head.
      git-clone: PG13 --naked option to --bare.
      clone: do not create remotes/origin nor origin branch in a bare repository.
      clone: do not accept more than one -o option.
      tests: adjust breakage by stricter rev-parse
      git-fetch --upload-pack: disambiguate.
      merge: seed the commit message with list of conflicted files.
      diff-tree -c: show a merge commit a bit more sensibly.
      diff-tree --cc: denser combined diff output for a merge commit.
      combine-diff: fix appending at the tail of a list.
      combine-diff: minor output changes.
      combine-diff: extend --cc logic to Octopus.
      diff-tree --cc: squelch header generation on empty patch.
      combine-diff: better hunk splitting.
      diff-files: -c and --cc options.
      rev-list --remove-empty: add minimum help and doc entry.
      abbrev cleanup: use symbolic constants
      rev-parse: --abbrev option.
      diff-tree: abbreviate merge parent object names with --abbrev --pretty.
      rev-parse --abbrev: do not try abbrev shorter than minimum.
      Rename rev-parse --abbrev to --short.
      pretty_print_commit(): pass commit object instead of commit->buffer.
      pretty_print_commit: honor grafts.
      diff --abbrev=<n> option fix.
      rev-parse: make "whatchanged -- git-fetch-script" work again.
      diff-files -c/--cc: combine only when both ours and theirs exist.
      Documentation: diff -c/--cc
      documentation: cvs migration - typofix.
      update-index --index-info: allow stage 0 entries.
      rev-list: omit duplicated parents.
      combine-diff: reuse diff from the same blob.
      combine-diff: update --cc "uninteresting hunks" logic.
      combine-diff: add safety check to --cc.
      combine-diff: fix placement of deletion.
      Documentation: git-diff-tree --cc also omits empty commits
      commit.c: "Merge" fix in pretty_print_commit.
      combine-diff: add a bit more comments.
      combine-diff: show parent line numbers as well.
      combine-diff: cleanup.
      combine-diff: finishing touches to git-diff-tree --cc
      whitespace cleanup.
      get_sha1_1: allow octopus^12 to be properly parsed.
      git-merge: Properly quote $merge_msg variable.
      Do not fall back on vi on dumb terminals.
      diff-index: make --cc a synonym for -p for now.
      git-diff: use --cc instead of -p.
      git-show
      daemon: do not forbid user relative paths unconditionally under --base-path
      daemon: extend user-relative path notation.
      combine-diff: remove misguided --show-empty hack.
      git-diff-tree --stdin: show all parents.
      git-diff: do not fall back on --cc when -[123], --ours etc. are given.
      core-tutorial: adjust to recent reality.
      combine-diff: do not send NULL to printf
      combine-diff: show mode changes as well.
      combine-diff: do not punt on removed or added files.
      mailinfo: reset CTE after each multipart
      read-tree --aggressive
      fmt-merge-msg: show summary of what is merged.
      git-rerere: reuse recorded resolve.
      git-commit: revamp the git-commit semantics.
      git-commit: finishing touches.
      Do not allow empty name or email.
      t6000: fix a careless test library add-on.
      ls-files: honour per-directory ignore file from higher directories.
      combined-diff: use diffcore before intersecting paths.
      call git_config() after setup_git_directory()
      combine-diff: move formatting logic to show_combined_diff()
      count-delta.c: Match the delta data semantics change in version 3.
      git-status -v
      find_unique_abbrev() simplification.
      combine-diff: Record diff status a bit more faithfully
      rev-list: default to abbreviate merge parent names under --pretty.
      git-commit -v: have patch at the end.
      Define GIT_(AUTHOR|COMMITTER)_(NAME|EMAIL) to known values.
      fetch-clone progress: finishing touches.
      Only call git-rerere if $GIT_DIR/rr-cache exists.
      t5500: adjust to change in pack-object reporting behaviour.
      diff-tree: do not default to -c
      Avoid using "git-var -l" until it gets fixed.
      hashtable-based objects: minimum fixups.
      Make pack-objects chattier.
      git-commit: show dirtiness including index.
      Fix "test: unexpected operator" on bsd
      GIT 1.2.0

Kent Engstrom (1):
      Add howto about separating topics.

Linus Torvalds (14):
      Make git-rev-list and git-rev-parse argument parsing stricter
      git-whatchanged: exit out early on errors
      rev-list: stop when the file disappears
      Make the "struct tree_desc" operations available to others
      Make git-tar-tree use the tree_desc abstractions
      Fix git-rev-parse over-eager errors
      diff-tree --always flag
      rev-parse lstat() workaround cleanup.
      Fix "git diff a..b" breakage
      diff-tree -c raw output
      Make "git clone" less of a deathly quiet experience
      Make "git clone" pack-fetching download statistics better
      Fix fetch-clone in the presense of signals
      Fix object re-hashing

Mark Wooding (7):
      daemon: Provide missing argument for logerror() call.
      http-fetch: Fix object list corruption in fill_active_slots().
      http-fetch: Fix message reporting rename of object file.
      http: Turn on verbose Curl messages if GIT_CURL_VERBOSE set in environment
      http-fetch: Tidy control flow in process_alternate_response
      daemon: Set SO_REUSEADDR on listening sockets.
      http-fetch: Abort requests for objects which arrived in packs

Martin Langhoff (3):
      cvsimport: Add -S <skipfileregex> support and -v announces files retrieved
      exportcommit: replace backticks with safe_pipe_capture() or system() - initial pass
      cvsexportcommit: add some examples to the documentation

Matt Draisey (1):
      local push/pull env cleanup

Michal Ostrowski (3):
      Exec git programs without using PATH.
      git-fetch: pass --upload-pack to fetch-pack
      git-{fetch,peek-remote} handling of --upload-pack

Nick Hengeveld (2):
      Fix HTTP request result processing after slot reuse
      Use local structs for HTTP slot callback data

Nicolas Pitre (3):
      remove delta-against-self bit
      count-delta.c: comment fixes
      delta micro optimization

Paul Mackerras (2):
      gitk: Add braces around if expressions
      gitk: Use git-diff-tree --cc for showing the diffs for merges

Pavel Roskin (2):
      Disable USE_SYMLINK_HEAD by default
      Don't include ../README in git.txt - make a local copy

Peter Eriksen (1):
      Use adler32() from zlib instead of defining our own.

Petr Baudis (5):
      Document git-ls-files --directory
      Allow diff and index commands to be interrupted
      Document git-diff-tree --always
      Basic documentation for git-show
      Add support for explicit type specifiers when calling git-repo-config

Ryan Anderson (3):
      Provide a more meaningful initial "From " line when using --compose in git-send-email.
      git-send-email: Add --quiet to reduce some of the chatter when sending emails.
      git-send-email: Fully implement --quiet and document it.

Sasha Khapyorsky (1):
      git-svnimport.perl: fix for 'arg list too long...'

Tom Prince (1):
      Add --keep option to keep downloaded packs to git-fetch.

Tony Luck (1):
      update using-topic-branches

Uwe Kleine-König (3):
      Fix generation of "humanish" part of source repo
      Remove unneeded header
      Use symbolic name SHORT_NAME_AMBIGUOUS as error return value

Uwe Zeisberger (1):
      Make GIT-VERSION-GEN tolerate missing git describe command again


Version v1.1.6; changes since v1.1.5:
-------------------------------------

Fredrik Kuivinen (2):
      merge-recursive: Improve the error message printed when merge(1) isn't found.
      git-branch: Documentation fixes

J. Bruce Fields (1):
      git push -f documentation

Junio C Hamano (1):
      pre-commit sample hook: do not barf on the initial import


Version v1.1.5; changes since v1.1.4:
-------------------------------------

Junio C Hamano (1):
      checkout: do not make a temporary copy of symlink target.


Version v1.1.4; changes since v1.1.3:
-------------------------------------

Johannes Schindelin (1):
      git-fetch-pack: really do not ask for funny refs

Junio C Hamano (1):
      Revert "check_packed_git_idx(): check integrity of the idx file itself."


Version v1.1.3; changes since v1.1.2:
-------------------------------------

Junio C Hamano (2):
      diffcore-break/diffcore-rename: integer overflow.
      describe: omit clearing marks on the last one.


Version v1.1.2; changes since v1.1.1:
-------------------------------------

J. Bruce Fields (1):
      Documentation: clarify fetch parameter descriptions.

Junio C Hamano (6):
      update-index: work with c-quoted name
      describe: do not silently ignore indescribable commits
      name-rev: do not omit leading components of ref name.
      show-branch: handle [] globs as well.
      Documentation: git-commit -a
      Documentation: git-reset - interrupted workflow.

Tom Prince (1):
      Add git-describe to .gitignore.


Version v1.1.1; changes since v1.1.0:
-------------------------------------

H. Peter Anvin (1):
      For release tarballs, include the proper version

Johannes Schindelin (1):
      glossary: explain "master" and "origin"

Junio C Hamano (1):
      GIT-VERSION-GEN: detect dirty tree and mark the version accordingly.


Version v1.1.0; changes since v1.0.13:
--------------------------------------

Johannes Schindelin (3):
      git-clone: Support changing the origin branch with -o
      Introduce core.sharedrepository
      git-init-db: initialize shared repositories with --shared

John Ellson (1):
      Make GIT-VERSION-GEN tolerate missing git describe command

Junio C Hamano (23):
      Post 1.0.0 development track.
      Versioning scheme changes.
      merge-recursive: conflicting rename case.
      whatchanged: customize diff-tree output
      rev-parse: --show-cdup
      check_packed_git_idx(): check integrity of the idx file itself.
      checkout: sometimes work from a subdirectory.
      ls-tree: chomp leading directories when run from a subdirectory
      git-clone: do not special case dumb http.
      Tutorial: mention shared repository management.
      git-describe: really prefer tags only.
      git-describe: use find_unique_abbrev()
      git-describe: --tags and --abbrev
      git-describe: still prefer annotated tag under --all and --tags
      git-describe: documentation.
      Makefile: use git-describe to mark the git version.
      send-pack/receive-pack: allow errors to be reported back to pusher.
      git-fetch: auto-following tags.
      ls-files --others --directory: fix a bug with index entry ordering
      ls-files --others --directory: give trailing slash
      git-status: use ls-files --others --directory for untracked list.
      ls-files --others --directory: test
      describe: allow more than one revs to be named.

Linus Torvalds (2):
      Add a "git-describe" command
      ls-files -o: optionally skip showing the contents in "untracked" directories

Lukas Sandström (1):
      git-pack-redundant: speed and memory usage improvements

Petr Baudis (1):
      git-daemon --base-path

YOSHIFUJI Hideaki (1):
      GIT: Support [address] in URLs

Yann Dirson (3):
      Add an optional limit to git-cherry
      Add a minimal test for git-cherry
      Add a test for rebase when a change was picked upstream


Version v1.0.13; changes since v1.0.12:
---------------------------------------

Junio C Hamano (1):
      checkout: do not make a temporary copy of symlink target.


Version v1.0.12; changes since v1.0.11:
---------------------------------------

Johannes Schindelin (1):
      git-fetch-pack: really do not ask for funny refs

Junio C Hamano (1):
      Revert "check_packed_git_idx(): check integrity of the idx file itself."


Version v1.0.11; changes since v1.0.10:
---------------------------------------

Junio C Hamano (1):
      diffcore-break/diffcore-rename: integer overflow.


Version v1.0.10; changes since v1.0.9:
--------------------------------------

J. Bruce Fields (1):
      Documentation: clarify fetch parameter descriptions.

Junio C Hamano (5):
      update-index: work with c-quoted name
      name-rev: do not omit leading components of ref name.
      show-branch: handle [] globs as well.
      Documentation: git-commit -a
      Documentation: git-reset - interrupted workflow.


Version v1.0.9; changes since v1.0.8:
-------------------------------------

Johannes Schindelin (1):
      glossary: explain "master" and "origin"


Version v1.0.8; changes since v1.0.7:
-------------------------------------

Joe English (1):
      Substitute "/" with $opt_s in tag names as well as branch names

Junio C Hamano (7):
      unpack-objects: default to quiet if stderr is not a tty.
      Retire debian/ directory.
      prune: do not show error from pack-redundant when no packs are found.
      Compilation: zero-length array declaration.
      tar-tree: finish honoring extractor's umask in git-tar-tree.
      revert/cherry-pick: handle single quote in author name.
      mailsplit: allow empty input from stdin

Yann Dirson (3):
      Teach cvsexportcommit to add new files
      Fix typo in debug stanza of t2001
      Fix git-format-patch usage string wrt output modes.


Version v1.0.7; changes since v1.0.6:
-------------------------------------

Alex Riesen (12):
      trivial: retval of waitpid is not errno
      trivial: O_EXCL makes O_TRUNC redundant
      fix potential deadlock in create_one_file
      use result of open(2) to check for presence
      trivial: typo in git-commit.sh
      trivial: clarify, what are the config's user.name and user.email about
      trivial: remove the dots at the end of file names from merge-one-file
      trivial: use git-repo-config to detect if the test can be run on the repository
      trivial: use git-repo-config to detect how to run tests in the test repository
      trivial: .gitignore precompiled python modules
      trivial: check, if t/trash directory was successfully created
      use GIT_DIR instead of /var/tmp

Amos Waterland (1):
      AIX compile fix for repo-config.c

Andreas Ericsson (1):
      git: grok 'help' to mean '--help'.

Eric Wong (2):
      svnimport: support repositories requiring SSL authentication
      Documentation/git-svnimport: document -T and -t switches correctly

Gerrit Pape (1):
      Fix skipping merge-order test with NO_OPENSSL=1.

Jon Loeliger (1):
      Fix git-symbolic-ref typo in git.txt.

Jonas Fonseca (2):
      git-init-db(1): Describe --shared and the idempotent nature of init-db
      Wrap synopsis lines and use [verse] to keep formatting

Junio C Hamano (6):
      Documentation: spell.
      code comments: spell
      ?alloc: do not return NULL when asked for zero bytes
      git-fetch --tags: reject malformed tags.
      format-patch/commit: Quote single quote in the author name properly.
      t3300: skip when filesystem does not like TAB in filenames.

Linus Torvalds (1):
      Fix nasty approxidate bug


Version v1.0.6; changes since v1.0.5:
-------------------------------------

Junio C Hamano (3):
      Guard a test against wc that pads its output with whitespace
      Fix bogus tests on rev-list output.
      Do not mark tags fetched via --tags flag as mergeable

Sam Ravnborg (1):
      copy_fd: close ifd on error


Version v1.0.5; changes since v1.0.4:
-------------------------------------

Eric Wong (1):
      short circuit out of a few places where we would allocate zero bytes

Johannes Schindelin (1):
      Handle symlinks graciously

Junio C Hamano (2):
      avoid asking ?alloc() for zero bytes.
      t5300: avoid false failures.


Version v1.0.4; changes since v1.0.3:
-------------------------------------

Junio C Hamano (5):
      check_packed_git_idx(): check integrity of the idx file itself.
      show-branch: usability updates.
      merge --no-commit: tweak message
      ls-files --full-name: usage string and documentation.
      mailinfo: iconv does not like "latin-1" -- should spell it "latin1"


Version v1.0.3; changes since v1.0.2:
-------------------------------------

Alex Riesen (1):
      \n usage in stderr output

Johannes Schindelin (2):
      git-format-patch should show the correct version
      sha1_to_hex: properly terminate the SHA1

Junio C Hamano (1):
      send-pack: reword non-fast-forward error message.

Nick Hengeveld (1):
      Fix for http-fetch from file:// URLs

Pavel Roskin (1):
      sanity check in add_packed_git()


Version v1.0.2; changes since v1.0.1:
-------------------------------------

Junio C Hamano (1):
      server-info: skip empty lines.

Pavel Roskin (1):
      quote.c: Make loop control more readable.


Version v1.0.1; changes since v1.0.0b:
--------------------------------------


Version v1.0.0b; changes since v1.0.0a:
---------------------------------------

Junio C Hamano (1):
      server-info: skip empty lines.

Pavel Roskin (1):
      quote.c: Make loop control more readable.


Version v1.0.0a; changes since v1.0.0:
--------------------------------------

Johannes Schindelin (1):
      Avoid misleading success message on error

Junio C Hamano (3):
      objects/info/packs: work around bug in http-fetch.c::fetch_indices()
      http-fetch.c: fix objects/info/pack parsing.
      GIT 1.0.0a

Pavel Roskin (1):
      An off-by-one bug found by valgrind


Version v1.0.0; changes since v1.0rc6:
--------------------------------------

Eric Wong (1):
      Documentation/git-archimport: document -o, -a, f, -D options

Fredrik Kuivinen (3):
      git-diff: Usage string clean-up
      git-log: Add usage string
      git-whatchanged: Add usage string

Jan Harkes (1):
      Fix git-am --skip

Johannes Schindelin (1):
      We do not like "HEAD" as a new branch name

Junio C Hamano (32):
      clone-pack: make it usable for partial branch cloning.
      Documentation: tutorial
      get_sha1_basic(): corner case ambiguity fix
      applymbox: typofix
      Sort globbed refname in show-branch.
      refs.c: off-by-one fix.
      Examples of resetting.
      Forbid pattern maching characters in refnames.
      Comment fixes.
      Documentation: HTTP needs update-server-info.
      Remove misguided branch disambiguation.
      Revert "refs.c: off-by-one fix."
      Revert "We do not like "HEAD" as a new branch name"
      Revert "get_sha1_basic(): corner case ambiguity fix"
      fetch-pack: -k option to keep downloaded pack.
      clone-pack: remove unused and undocumented --keep flag
      Documentation: typos and small fixes in "everyday".
      howto/using-topic-branches: Recommend public URL git://git.kernel.org/
      rev-list --objects: fix object list without commit.
      Documentation: stdout of update-hook is connected to /dev/null
      Remove generated files */*.py[co]
      Remove unused cmd-rename.sh
      Remove "octopus".
      tests: make scripts executable
      xread/xwrite: do not worry about EINTR at calling sites.
      diff: --abbrev option
      diff --abbrev: document --abbrev=<n> form.
      format-patch: make sure header and body are separated.
      Racy GIT
      Racy GIT (part #2)
      ce_smudge_racily_clean_entry: explain why it works.
      A shared repository should be writable by members.

Linus Torvalds (3):
      Make "git help" react to window size correctly
      Make "git help" sort git commands in columns
      Make "git-send-pack" less verbose by default

Martin Langhoff (1):
      svnimport: exit cleanly when we are up to date

Nicolas Pitre (1):
      small cleanup for diff-delta.c


Version v1.0rc6; changes since v1.0rc5:
---------------------------------------

Amos Waterland (1):
      git rebase loses author name/email if given bad email address

Fredrik Kuivinen (12):
      Usage message clean-up, take #2
      Trivial usage string clean-up
      git-verify-tag: Usage string clean-up, emit usage string at incorrect invocation
      git-revert: Usage string clean-up
      git-am: Usage string clean-up
      git-applypatch: Usage string clean-up, emit usage string at incorrect invocation
      git-cherry: Usage string clean-up, use the 'usage' function
      git-fetch: Usage string clean-up, emit usage string at unrecognized option
      git-lost-found: Usage string clean-up, emit usage string at incorrect invocation
      git-prune: Usage string clean-up, use the 'usage' function
      git-rebase: Usage string clean-up, emit usage string at incorrect invocation
      git-repack: Usage string clean-up, emit usage at incorrect invocation

H. Peter Anvin (1):
      git-am support for naked email messages (take 2)

Junio C Hamano (22):
      diffcore-break.c: check diff_delta() return value.
      Add deltifier test.
      diff-delta.c: allow delta with empty blob.
      Everyday: some examples.
      Revert "diff-delta.c: allow delta with empty blob."
      Revert "Add deltifier test."
      diffcore-break: do not break too small filepair.
      Everyday: a bit more example.
      Documentation: more examples.
      Documentation: fix missing links to git(7)
      Documentation: diff examples.
      Documentation: not learning core git commands.
      git-clone: tell the user a bit more about clone-pack failure.
      allow merging any committish
      checkout-index: fix checking out specific path.
      Everyday: a bit more examples.
      t3200: branch --help does not die anymore.
      applypatch: no need to do non-portable [[ ... ]]
      Documentation: topic branches
      rebase: do not get confused in fast-forward situation.
      Do not let errors pass by unnoticed when running `make check'.
      mailinfo and git-am: allow "John Doe <johndoe>"

Lukas Sandström (1):
      Bugfixes for git-rebase

Martin Atukunda (1):
      define MAXPATHLEN for hosts that don't support it

Petr Baudis (1):
      Make git-send-pack exit with error when some refs couldn't be pushed out


Version v1.0rc5; changes since v1.0rc4:
---------------------------------------

Alex Riesen (1):
      use "git init-db" in tests

Daniel Barkalow (3):
      Warn when send-pack does nothing
      Clean up file descriptors when calling hooks.
      Allow saving an object from a pipe

Eric Wong (9):
      archimport: first, make sure it still compiles
      archimport: remove String::ShellQuote dependency.
      archimport: fix -t tmpdir switch
      archimport: remove git wrapper dependency
      archimport: add -D <depth> and -a switch
      archimport: safer log file parsing
      archimport: Add the accurate changeset applyer
      archimport: Fix a bug I introduced in the new log parser
      archimport: fix a in new changeset applyer addition

Jason Riedy (3):
      Document config.mak in INSTALL.
      Initial AIX portability fixes.
      Use printf rather than echo -n.

Jon Loeliger (1):
      Added documentation for few missing options.

Junio C Hamano (51):
      compat/setenv: do not free what we fed putenv(3).
      git.c: two fixes, gitsetenv type and off-by-one error.
      show-branch: allow glob pattern to name branches to show.
      Documentation: rebase does not use cherry-pick anymore.
      struct tree: remove unused field "parent"
      git.c: remove excess output for debugging when command is too long.
      sha1_file.c: make sure packs in an alternate odb is named properly.
      server-info.c: drop unused D lines.
      server-info: stop sorting packs by latest date.
      server-info: throw away T computation as well.
      Documentation: talk about pathspec in bisect.
      Documentation: git-mv manpage workaround.
      Documentation: git-diff asciidoc table workaround.
      Documentation: push/receive hook references.
      Documentation: shared repository management in tutorial.
      server-info.c: use pack_local like everybody else.
      server-info.c: and two functions are not used anymore.
      config.c: remove unnecessary header in minimum configuration file.
      Clean up compatibility definitions.
      Fix 5501 test
      git-mv to work with Perl 5.6
      hash-object: -- and --help
      init-db: check extra arguments and complain.
      write-tree: check extra arguments and die but be a bit more helpful.
      Documentation: hash-object.
      Documentaiton (read-tree): update description of 3-way
      git-merge-one-file: resurrect leading path creation.
      qsort() ptrdiff_t may be larger than int
      checkout-index: allow checking out from higher stages.
      git-merge-one: new merge world order.
      update-index: allow --index-info to add higher stages.
      Documentation: git.html/git.7
      Documentation(glossary): minor formatting clean-ups.
      Documentation(cvs-migration): minor cleanups.
      Documentation(tutorial): adjust merge example to the new merge world order.
      refs.c: make sure leading directories exist before writing a ref.
      Make sure we use compat/subprocess.py with Python 2.3 while running tests.
      Documentation: recursive is the default strategy these days.
      show-branch: comment typo
      Documentation: git-prune
      qsort(): ptrdiff_t may be larger than int
      git-prune: never lose objects reachable from our refs.
      Use GIT_EXEC_PATH explicitly for initial git-init-db in tests.
      Everyday GIT with 20 commands
      Link Everyday GIT to main documentation tree.
      t3300: funny name test
      t0000: catch trivial pilot errors.
      format-patch: use same number of digits in numbers
      merge-recursive: leave unmerged entries in the index.
      merge-recursive: cleanup setIndexStages
      t/t6022: a new test for renaming merge.

Nikolai Weibull (16):
      Document the --non-empty command-line option to git-pack-objects.
      Fix the description of --utf8 and --keep to git-am.
      Use uniform description for the '--' option.
      Documentation/git-commit.txt: Add long options and -- to documentation.
      Documentation/git-verify-pack.txt: added documentation for --.
      Documentation/git-cvsimport.txt: Fix a slight glitch in description heading.
      Documentation/git-cherry-pick: Add --replay and --no-commit.
      Add documentation for git-revert and git-cherry-pick.
      Add documentation for the --topo-order option to git-show-branch.
      Documentation/git-format-patch.txt: Add --signoff, --check, and long option-names.
      Documentation/git-ls-remote.txt: Add -h and -t.
      Documentation/git-repack.txt: Add -l and -n.
      Documentation/git-http-fetch.txt: Document the commit-id argument.
      Documentation/git-update-server-info.txt: Add -f alias for --force to documentation.
      Documentation/git-tag.txt: Fix the order of sections (DESCRIPTION should come before OPTIONS).
      Documentation/git-read-tree.txt: Add --reset to SYNOPSIS.

Paul Mackerras (3):
      gitk: Factored out some common code into a new start_rev_list procedure
      gitk: Some improvements for the code for updating the display
      gitk: Work around Tcl's non-standard names for encodings

Petr Baudis (2):
      Update the git-ls-tree documentation
      Document the --(no-)edit switch of git-revert and git-cherry-pick

Sven Verdoolaege (1):
      gitk: add Update menu item.


Version v1.0rc4; changes since v1.0rc3:
---------------------------------------

Alecs King (1):
      Documentation/git-log.txt: trivial typo fix.

Alex Riesen (5):
      speedup allocation in pack-redundant.c
      remove unused variable
      arguments cleanup and some formatting
      Add tests for git-mv in subdirectories
      git wrapper: more careful argument stuffing

Alexander Litvinov (1):
      git-mv is not able to handle big directories

Andreas Ericsson (13):
      git-daemon: --inetd implies --syslog
      C implementation of the 'git' program, take two.
      Update git(7) man-page for the C wrapper.
      git --help COMMAND brings up the git-COMMAND man-page.
      daemon.c: fix arg parsing bugs
      Library code for user-relative paths, take three.
      Server-side support for user-relative paths.
      Client side support for user-relative paths.
      Documentation update for user-relative paths.
      git-reset.txt: Small fix + clarifications.
      git-daemon support for user-relative paths.
      Introduce $(ALL_PROGRAMS) for 'all:' and 'install:' to operate on.
      cvsimport: Don't let local settings hinder cvs user-migration.

Eric Wong (3):
      remove shellquote usage for tags
      archimport: don't die on merge-base failure
      Disambiguate the term 'branch' in Arch vs git

Frank Sorenson (1):
      gitk: Specify line hover font

Fredrik Kuivinen (5):
      merge-recursive: Replace 'except:'
      git-merge: Exit with code 2 if no strategy was able to handle the merge.
      test-lib.sh: Add new function, test_expect_code
      New test case: merge with directory/file conflicts
      New test case: Criss-cross merge

H. Peter Anvin (3):
      git-core-foo -> git-foo, except the core package
      rename/copy score parsing updates.
      A few more options for git-cat-file

Jan Andres (1):
      Fix typo in http-push.c

Jason Riedy (1):
      Add compat/setenv.c, use in git.c.

Jeff Hobbs (1):
      gitk: put braces around exprs

Johannes Schindelin (13):
      Add config variable core.symrefsonly
      Fix tests with new git in C
      Give python a chance to find "backported" modules
      Add functions git_config_set() and git_config_set_multivar()
      Add git-config-set, a simple helper for scripts to set config variables
      Add documentation for git-config-set
      Add test case for git-config-set
      git-config-set: add more options
      git-config-set: support selecting values by non-matching regex
      git-config-set: Properly terminate strings with '\0'
      Allow hierarchical section names
      Rename git-config-set to git-repo-config
      Make git-mv work in subdirectories, too

Jon Loeliger (1):
      Fix typos and minor format issues.

Jonas Fonseca (1):
      Fix git(1) link to git-index-pack

Josef Weidendorfer (6):
      Fix git-mv for moving directories with 1 file
      git-mv: shrink usage, no usage on error
      git-mv: keep git index consistent with file system on failed rename
      git-mv: fully detect 'directory moved into itself'
      Small fixes in Documentation/git-mv.txt
      git-mv: follow -k request even on failing renames

Junio C Hamano (108):
      Documentation: do not blindly run 'cat' .git/HEAD, or echo into it.
      diff: make default rename detection limit configurable.
      sha1_file.c::add_packed_git(): fix type mismatch.
      git wrapper: basic fixes.
      git-apply: fail if a patch cannot be applied.
      git-am: --resolved.
      apply: allow-binary-replacement.
      diff: --full-index
      tests: binary diff application.
      Add approxidate test calls.
      Deal with binary diff output from GNU diff 2.8.7
      git-am: --binary; document --resume and --binary.
      git-prune: quote possibly empty $dryrun as parameter to test
      Cygwin *might* be helped with NO_MMAP
      Do not show .exe in git command list.
      git-branch: -f to forcibly reset branch head.
      Rewrite rebase to use git-format-patch piped to git-am.
      readrefs: grab all refs with one call to ls-remote.
      git-count-objects: dc replacement
      git-repack: do not do complex redundancy check.
      Documentation: rebase-from-internal minor updates.
      merge-one-file: remove empty directories
      merge-recursive::removeFile: remove empty directories
      http.c: reorder to avoid compilation failure.
      Do not DWIM in userpath library under strict mode.
      Documentation: add hooks/update example.
      merge-one-file: use rmdir -p
      Fix "do not DWIM" patch to enter_repo"
      Make sure heads/foo and tags/foo do not confuse things.
      Fix hooks/update template.
      format-patch: fix two-argument special case, and make it easier to pick single commits
      rename detection with -M100 means "exact renames only".
      tutorial: setting up a tree for subsystem maintainers
      daemon: further tweaks.
      git-proxy updates.
      Move diff.renamelimit out of default configuration.
      git-var: constness and globalness cleanup.
      pack-redundant: type cleanups.
      git-merge: make recursive the default strategy
      git-revert: make --edit default.
      Teach update-index to read from ls-tree.
      diff-tree: teach single-commit diff-tree to honour grafts
      config.c: avoid shadowing global.
      Prevent "git-commit -a path1 path2..."
      parse-remote and ls-remote clean-up.
      git-sh-setup: die if outside git repository.
      git-var: make it work in subdirectory.
      setup_git_directory: make sure GIT_DIR is a valid repository.
      git-sh-setup: move the repository check to a core program.
      shell.c: complain on insufficient arguments.
      name-rev: fix off-by-one error in --stdin.
      format-patch: output filename reported to stdout verbatim.
      Repository format version check.
      Check repository format version in enter_repo().
      init-db: check template and repository format.
      setup_git_directory(): check repository format version.
      Introduce i18n.commitencoding.
      mailinfo: allow -u to fall back on latin1 to utf8 conversion.
      mailinfo: Use i18n.commitencoding
      mailinfo: Do not use -u=<encoding>; say --encoding=<encoding>
      config.c: constness tightening to avoid compilation warning.
      gitk: Use i18n.commitencoding configuration item.
      git-mv: quote $src in regexp properly.
      rebase: one safety net, one bugfix and one optimization.
      name-rev: fix parent counting.
      Documentation: Describe merge operation a bit better.
      write_name_quoted(): make one of the path a counted string.
      ls-tree: Resurrect funny name quoting lost during rewrite.
      ls-tree: match the test to the new semantics.
      bisect: quote pathnames for eval safety.
      working from subdirectory: preparation
      git-apply: work from subdirectory.
      peek-remote: honor proxy config even from subdirectory.
      fsck-objects: work from subdirectory.
      checkout-index: work from subdirectory.
      hash-object: work within subdirectory.
      ls-tree: work from subdirectory.
      Make networking commands to work from a subdirectory.
      Make the rest of commands work from a subdirectory.
      count-objects: make it operable from a subdirectory.
      ls-remote: define die() now we do not use git-sh-setup
      branch: make it operable from a subdirectory.
      lost-found: make it operable from a subdirectory.
      tag: make it operable from a subdirectory.
      verify-tag: make it operable from a subdirectory.
      define die() for scripts that use it.
      hash-object.c: type-fix to squelch compiler warnings.
      applymbox: typofix to enable -m option.
      applypatch: use "index" lines not "applies-to".
      format-patch: remove applies-to.
      format-patch: do not abuse 3-dash marker line.
      format-patch: run diff in C locale
      git-diff: do not turn off -p/-M with any diff options.
      diff-files: show diffs with stage0 and unmerged stage at the same time.
      merge-recursive: match the unmerged index entry behaviour with merge-resolve
      Tutorial: adjust merge example to recursive strategy.
      Documentation: describe '-f' option to git-fetch.
      Makefile: say the default target upfront.
      ls-tree: resurrect '-d' to mean 'show trees only'
      ls-tree: --name-only
      git-merge-one-file: do not worry about 'rmdir -p' not removing directory.
      merge-recursive: adjust git-ls-tree use for the latest.
      t3100: add ls-tree -t and -d tests.
      merge-one-file: make sure we create the merged file.
      merge-one-file: make sure we do not mismerge symbolic links.
      git-merge documentation: conflicting merge leaves higher stages in index
      documentation: git-bisect (help HTML break man)
      daemon.c and path.enter_repo(): revamp path validation.

Kevin Geiss (4):
      git-cvsexportcommit.perl: Fix usage() output.
      git-cvsexportcommit.perl: use getopts to get binary flags
      git-cvsexportcommit.perl: exit with non-0 status if patch fails.
      git-cvsexportcommit.perl: fix typos in output

Linus Torvalds (14):
      Disallow empty pattern in "git grep"
      git's rev-parse.c function show_datestring presumes gnu date
      Teach "approxidate" about weekday syntax
      Make "git fetch" less verbose by default
      Teach "approxidate" about weekday syntax
      git-repack: Properly abort in corrupt repository
      Allow editing of a revert-message
      ls-tree: major rewrite to do pathspec
      ls-tree: further cleanup to parallel ls-files.
      ls-tree: further tweaks of the rewrite
      bisect: limit the searchspace by pathspecs
      diff-files: -1/-2/-3 to diff against unmerged stage.
      merge-one-file: leave unmerged index entries upon automerge failure.
      git-ls-tree: add "-t" option to always show the tree entries

Luben Tuikov (1):
      max-count in terms of intersection

Lukas Sandström (8):
      Fix llist_sorted_difference_inplace in git-pack-redundant
      Make git-pack-redundant non-horribly slow on large sets of packs
      Fix bug introduced by the latest changes to git-pack-redundant
      Fix a bug in get_all_permutations.
      Remove all old packfiles when doing "git repack -a -d"
      Improve the readability of git-pack-redundant
      Document the "ignore objects" feature of git-pack-redundant
      Make git-pack-redundant take a list of unimportant objs on stdin

Martin Langhoff (1):
      archimport: allow for old style branch and public tag names

Matthias Urlichs (1):
      SVN import: Use one log call

Nick Hengeveld (7):
      Isolate shared HTTP request functionality
      Make http-fetch request types more clear
      Improve pack list response handling
      Improve XML parsing in http-push
      http-push memory/fd cleanup
      Decide whether to build http-push in the Makefile
      http-push cleanup

Nicolas Pitre (1):
      'make clean' forgot about some files

Paul Collins (1):
      proxy-command support for git://

Paul Mackerras (5):
      Add -r flag and some speedups
      gitk: Fix some bugs introduced by speedup changes
      gitk: Disable fastdate stuff for now
      gitk: Fix diff this->selected and selected->this functions
      gitk: Add a preferences dialog with some basic stuff

Paul Serice (2):
      git-daemon not listening when compiled with -DNO_IPV6
      Fixed git:// IPv4 address problem when compiled with -DNO_IPV6.

Pavel Roskin (4):
      symref support for import scripts
      gitk: use git-diff-tree --no-commit-id
      gitk: UTF-8 support
      git-clone --shared should imply --local

Petr Baudis (1):
      Fix bunch of fd leaks in http-fetch

Ralf Baechle (1):
      git-repack: Fix variable name

Ryan Anderson (1):
      Add Python version checks to the Makefile to automatically set WITH_OWN_SUBPROCESS_PY

Sergey Vlasov (2):
      git-fsck-objects: Free tree entries after use
      Rework object refs tracking to reduce memory usage

Stefan-W. Hahn (1):
      gitk: moving all three panes if clicking on an arrow.

Timo Hirvonen (2):
      Fix sparse warnings
      Move couple of ifdefs after "include config.mk"

Tommi Virtanen (1):
      Do not attempt to access literal dirname "GIT_OBJECT_DIRECTORY".

Tony Luck (1):
      Update pull/fetch --tags documentation

YOSHIFUJI Hideaki (2):
      GIT: Fix compilation error in connect.c
      Fix a warning about unused value.

Yann Dirson (1):
      Fix gitk this->selected diffs

anonymous (2):
      documentation: clarify read-tree --reset
      documentation: git-tag


Version v1.0rc3; changes since v1.0rc2:
---------------------------------------

Junio C Hamano (1):
      GIT 0.99.9j aka 1.0rc3


Version v1.0rc2; changes since v1.0rc1:
---------------------------------------

Alex Riesen (1):
      allow git-update-ref create refs with slashes in names

Andreas Ericsson (1):
      git-branch: Mention -d and -D in man-page.

Josef Weidendorfer (2):
      Bugfix: stop if directory already exists
      Remove git-rename. git-mv does the same

Junio C Hamano (5):
      Debian: build-depend on libexpat-dev.
      Rename lost+found to lost-found.
      Separate LDFLAGS and CFLAGS.
      apply: fix binary patch detection.
      Update topo-order test.

Kai Ruemmler (1):
      Fix compilation warnings in pack-redundant.c

Linus Torvalds (1):
      Fix git-rev-list "date order" with --topo-order

Matthias Urlichs (3):
      debian packaging: git-cvs needs cvsps
      Remove trailing slashes
      Depend on asciidoc 7 (at least).

Nick Hengeveld (2):
      Fix for multiple alternates requests in http-fetch
      Fix fd leak in http-fetch

Nikolai Weibull (3):
      Document the -n command-line option to git-unpack-objects
      Document a couple of missing command-line options.
      Documentation nitpicking

Thomas Matysik (2):
      Add expat and expat-devel dependencies (for http-push) to RPM spec.
      Split gitk into seperate RPM package


