[ANNOUNCE] Git v2.28.0-rc1
To
git@vger.kernel.org
Cc
Linux Kernel
git-packagers@googlegroups.com
From
Junio C Hamano
Date
2020-07-17 20:24:57 UTC
A release candidate Git v2.28.0-rc1 is now available for testing
at the usual places.  It is comprised of 295 non-merge commits
since v2.27.0, contributed by 43 people, 10 of which are new faces.

The tarballs are found at:

    https://www.kernel.org/pub/software/scm/git/testing/

The following public repositories all have a copy of the
'v2.28.0-rc1' tag and the 'master' branch that the tag points at:

  url = https://kernel.googlesource.com/pub/scm/git/git
  url = git://repo.or.cz/alt-git.git
  url = https://github.com/gitster/git

New contributors whose contributions weren't in v2.27.0 are as follows.
Welcome to the Git development community!

  Andrew Ng, Chris Torek, Don Goodman-Wilson, Jiuyang Xie, Luc
  Van Oostenryck, Marco Trevisan (Treviño), Miroslav Koškár,
  Rafael Aquini, Srinidhi Kaushik, and Trygve Aaberge.

Returning contributors who helped this release are as follows.
Thanks for your continued support.

  Abhishek Kumar, Ben Keene, brian m. carlson, Carlo Marcelo Arenas
  Belón, Christian Couder, Denton Liu, Derrick Stolee, Đoàn
  Trần Công Danh, Elijah Newren, Emily Shaffer, Eric Sunshine,
  Han-Wen Nienhuys, Jacob Keller, Jeff King, Johannes Schindelin,
  John Lin, Jonathan Nieder, Jonathan Tan, Josh Steadmon, Junio C
  Hamano, Laurent Arnoud, Martin Ågren, Matheus Tavares, Paolo
  Bonzini, Patrick Steinhardt, Ramsay Jones, Randall S. Becker,
  René Scharfe, Shourya Shukla, SZEDER Gábor, Taylor Blau,
  Ville Skyttä, and Xin Li.

----------------------------------------------------------------

Git 2.28 Release Notes (draft)
==============================

Updates since v2.27
-------------------

Backward compatibility notes

 * "fetch.writeCommitGraph" is deemed to be still a bit too risky and
   is no longer part of the "feature.experimental" set.


UI, Workflows & Features

 * The commands in the "diff" family learned to honor "diff.relative"
   configuration variable.

 * The check in "git fsck" to ensure that the tree objects are sorted
   still had corner cases it missed unsorted entries.

 * The interface to redact sensitive information in the trace output
   has been simplified.

 * The command line completion (in contrib/) learned to complete
   options that the "git switch" command takes.

 * "git diff" used to take arguments in random and nonsense range
   notation, e.g. "git diff A..B C", "git diff A..B C...D", etc.,
   which has been cleaned up.

 * "git diff-files" has been taught to say paths that are marked as
   intent-to-add are new files, not modified from an empty blob.

 * "git status" learned to report the status of sparse checkout.

 * "git difftool" has trouble dealing with paths added to the index
   with the intent-to-add bit.

 * "git fast-export --anonymize" learned to take customized mapping to
   allow its users to tweak its output more usable for debugging.

 * The command line completion support (in contrib/) used to be
   prepared to work with "set -u" but recent changes got a bit more
   sloppy.  This has been corrected.


Performance, Internal Implementation, Development Support etc.

 * Code optimization for a common case.
   (merge 8777616e4d an/merge-single-strategy-optim later to maint).

 * We've adopted a convention that any on-stack structure can be
   initialized to have zero values in all fields with "= { 0 }",
   even when the first field happens to be a pointer, but sparse
   complained that a null pointer should be spelled NULL for a long
   time.  Start using -Wno-universal-initializer option to squelch
   it (the latest sparse has it on by default).

 * "git log -L..." now takes advantage of the "which paths are touched
   by this commit?" info stored in the commit-graph system.

 * As FreeBSD is not the only platform whose regexp library reports
   a REG_ILLSEQ error when fed invalid UTF-8, add logic to detect that
   automatically and skip the affected tests.

 * "git bugreport" learns to report what shell is in use.

 * Support for GIT_CURL_VERBOSE has been rewritten in terms of
   GIT_TRACE_CURL.

 * Preliminary clean-ups around refs API, plus file format
   specification documentation for the reftable backend.

 * Workaround breakage in MSVC build, where "curl-config --cflags"
   gives settings appropriate for GCC build.

 * Code clean-up of "git clean" resulted in a fix of recent
   performance regression.

 * Code clean-up in the codepath that serves "git fetch" continues.

 * "git merge-base --is-ancestor" is taught to take advantage of the
   commit graph.

 * Rewrite of parts of the scripted "git submodule" Porcelain command
   continues; this time it is "git submodule set-branch" subcommand's
   turn.

 * The "fetch/clone" protocol has been updated to allow the server to
   instruct the clients to grab pre-packaged packfile(s) in addition
   to the packed object data coming over the wire.

 * A misdesigned strbuf_write_fd() function has been retired.

 * SHA-256 migration work continues, including CVS/SVN interface.

 * A few fields in "struct commit" that do not have to always be
   present have been moved to commit slabs.

 * API cleanup for get_worktrees()

 * By renumbering object flag bits, "struct object" managed to lose
   bloated inter-field padding.

 * The name of the primary branch in existing repositories, and the
   default name used for the first branch in newly created
   repositories, is made configurable, so that we can eventually wean
   ourselves off of the hardcoded 'master'.

 * The effort to avoid using test_must_fail on non-git command continues.

 * In 2.28-rc0, we corrected a bug that some repository extensions are
   honored by mistake even in a version 0 repositories (these
   configuration variables in extensions.* namespace were supposed to
   have special meaning in repositories whose version numbers are 1 or
   higher), but this was a bit too big a change.  The behaviour in
   recent versions of Git where certaion extensions.* were honored by
   mistake even in version 0 repositories has been restored.


Fixes since v2.27
-----------------

 * The "--prepare-p4-only" option of "git p4" is supposed to stop
   after replaying one changeset, but kept going (by mistake?)

 * The error message from "git checkout -b foo -t bar baz" was
   confusing.

 * Some repositories in the wild have commits that record nonsense
   committer timezone (e.g. rails.git); "git fast-import" learned an
   option to pass these nonsense timestamps intact to allow recreating
   existing repositories as-is.
   (merge d42a2fb72f en/fast-import-looser-date later to maint).

 * The command line completion script (in contrib/) tried to complete
   "git stash -p" as if it were "git stash push -p", but it was too
   aggressive and also affected "git stash show -p", which has been
   corrected.
   (merge fffd0cf520 vs/complete-stash-show-p-fix later to maint).

 * On-the-wire protocol v2 easily falls into a deadlock between the
   remote-curl helper and the fetch-pack process when the server side
   prematurely throws an error and disconnects.  The communication has
   been updated to make it more robust.

 * "git checkout -p" did not handle a newly added path at all.
   (merge 2c8bd8471a js/checkout-p-new-file later to maint).

 * The code to parse "git bisect start" command line was lax in
   validating the arguments.
   (merge 4d9005ff5d cb/bisect-helper-parser-fix later to maint).

 * Reduce memory usage during "diff --quiet" in a worktree with too
   many stat-unmatched paths.
   (merge d2d7fbe129 jk/diff-memuse-optim-with-stat-unmatch later to maint).

 * The reflog entries for "git clone" and "git fetch" did not
   anonymize the URL they operated on.
   (merge 46da295a77 js/reflog-anonymize-for-clone-and-fetch later to maint).

 * The behaviour of "sparse-checkout" in the state "git clone
   --no-checkout" left was changed accidentally in 2.27, which has
   been corrected.

 * Use of negative pathspec, while collecting paths including
   untracked ones in the working tree, was broken.

 * The same worktree directory must be registered only once, but
   "git worktree move" allowed this invariant to be violated, which
   has been corrected.
   (merge 810382ed37 es/worktree-duplicate-paths later to maint).

 * The effect of sparse checkout settings on submodules is documented.
   (merge e7d7c73249 en/sparse-with-submodule-doc later to maint).

 * Code clean-up around "git branch" with a minor bugfix.
   (merge dc44639904 dl/branch-cleanup later to maint).

 * A branch name used in a test has been clarified to match what is
   going on.
   (merge 08dc26061f pb/t4014-unslave later to maint).

 * An in-code comment in "git diff" has been updated.
   (merge c592fd4c83 dl/diff-usage-comment-update later to maint).

 * The documentation and some tests have been adjusted for the recent
   renaming of "pu" branch to "seen".
   (merge 6dca5dbf93 js/pu-to-seen later to maint).

 * The code to push changes over "dumb" HTTP had a bad interaction
   with the commit reachability code due to incorrect allocation of
   object flag bits, which has been corrected.
   (merge 64472d15e9 bc/http-push-flagsfix later to maint).

 * "git send-email --in-reply-to=<msg>" did not use the In-Reply-To:
   header with the value given from the command line, and let it be
   overridden by the value on In-Reply-To: header in the messages
   being sent out (if exists).
   (merge f9f60d7066 ra/send-email-in-reply-to-from-command-line-wins later to maint).

 * "git log -Lx,y:path --before=date" lost track of where the range
   should be because it didn't take the changes made by the youngest
   commits that are omitted from the output into account.

 * When "fetch.writeCommitGraph" configuration is set in a shallow
   repository and a fetch moves the shallow boundary, we wrote out
   broken commit-graph files that do not match the reality, which has
   been corrected.

 * "git checkout" failed to catch an error from fstat() after updating
   a path in the working tree.
   (merge 35e6e212fd mt/entry-fstat-fallback-fix later to maint).

 * When an aliased command, whose output is piped to a pager by git,
   gets killed by a signal, the pager got into a funny state, which
   has been corrected (again).
   (merge c0d73a59c9 ta/wait-on-aliased-commands-upon-signal later to maint).

 * The code to produce progress output from "git commit-graph --write"
   had a few breakages, which have been fixed.

 * Other code cleanup, docfix, build fix, etc.
   (merge 2c31a7aa44 jx/pkt-line-doc-count-fix later to maint).
   (merge d63ae31962 cb/t5608-cleanup later to maint).
   (merge 788db145c7 dl/t-readme-spell-git-correctly later to maint).
   (merge 45a87a83bb dl/python-2.7-is-the-floor-version later to maint).
   (merge b75a219904 es/advertise-contribution-doc later to maint).
   (merge 0c9a4f638a rs/pull-leakfix later to maint).
   (merge d546fe2874 rs/commit-reach-leakfix later to maint).
   (merge 087bf5409c mk/pb-pretty-email-without-domain-part-fix later to maint).
   (merge 5f4ee57ad9 es/worktree-code-cleanup later to maint).
   (merge 0172f7834a cc/cat-file-usage-update later to maint).
   (merge 81de0c01cf ma/rebase-doc-typofix later to maint).

----------------------------------------------------------------

Changes since v2.27.0 are as follows:

Abhishek Kumar (4):
      object: drop parsed_object_pool->commit_count
      commit-graph: introduce commit_graph_data_slab
      commit: move members graph_pos, generation to a slab
      commit-graph: minimize commit_graph_data_slab access

Andrew Ng (1):
      merge: optimization to skip evaluate_result for single strategy

Ben Keene (1):
      git-p4.py: fix --prepare-p4-only error with multiple commits

Carlo Marcelo Arenas Belón (5):
      t/helper: teach test-regex to report pattern errors (like REG_ILLSEQ)
      t4210: detect REG_ILLSEQ dynamically and skip affected tests
      bisect--helper: avoid segfault with bad syntax in `start --term-*`
      t5608: avoid say() and use "skip_all" instead for consistency
      commit-reach: avoid is_descendant_of() shim

Chris Torek (3):
      t/t3430: avoid undefined git diff behavior
      git diff: improve range handling
      Documentation: usage for diff combined commits

Christian Couder (40):
      upload-pack: remove unused 'wants' from upload_pack_data
      upload-pack: move {want,have}_obj to upload_pack_data
      upload-pack: move 'struct upload_pack_data' around
      upload-pack: use 'struct upload_pack_data' in upload_pack()
      upload-pack: pass upload_pack_data to get_common_commits()
      upload-pack: pass upload_pack_data to receive_needs()
      upload-pack: use upload_pack_data writer in receive_needs()
      upload-pack: move symref to upload_pack_data
      upload-pack: pass upload_pack_data to send_ref()
      upload-pack: pass upload_pack_data to check_non_tip()
      upload-pack: remove static variable 'stateless_rpc'
      upload-pack: pass upload_pack_data to create_pack_file()
      upload-pack: use upload_pack_data fields in receive_needs()
      upload-pack: annotate upload_pack_data fields
      upload-pack: move static vars to upload_pack_data
      upload-pack: move use_sideband to upload_pack_data
      upload-pack: move filter_capability_requested to upload_pack_data
      upload-pack: move multi_ack to upload_pack_data
      upload-pack: change multi_ack to an enum
      upload-pack: pass upload_pack_data to upload_pack_config()
      upload-pack: move keepalive to upload_pack_data
      upload-pack: move allow_filter to upload_pack_data
      upload-pack: move allow_ref_in_want to upload_pack_data
      upload-pack: move allow_sideband_all to upload_pack_data
      upload-pack: move pack_objects_hook to upload_pack_data
      upload-pack: pass upload_pack_data to send_shallow_list()
      upload-pack: pass upload_pack_data to deepen()
      upload-pack: pass upload_pack_data to deepen_by_rev_list()
      upload-pack: pass upload_pack_data to send_unshallow()
      upload-pack: move shallow_nr to upload_pack_data
      upload-pack: move extra_edge_obj to upload_pack_data
      upload-pack: move allow_unadvertised_object_request to upload_pack_data
      upload-pack: change allow_unadvertised_object_request to an enum
      upload-pack: pass upload_pack_data to process_haves()
      upload-pack: pass upload_pack_data to send_acks()
      upload-pack: pass upload_pack_data to ok_to_give_up()
      upload-pack: pass upload_pack_data to got_oid()
      upload-pack: move oldest_have to upload_pack_data
      upload-pack: refactor common code into do_got_oid()
      cat-file: add missing [=<format>] to usage/synopsis

Denton Liu (18):
      lib-submodule-update: add space after function name
      lib-submodule-update: consolidate --recurse-submodules
      remote-curl: fix typo
      remote-curl: remove label indentation
      transport: extract common fetch_pack() call
      pkt-line: extern packet_length()
      remote-curl: error on incomplete packet
      pkt-line: define PACKET_READ_RESPONSE_END
      stateless-connect: send response end packet
      t/README: avoid poor-man's small caps GIT
      CodingGuidelines: specify Python 2.7 is the oldest version
      lib-submodule-update: prepend "git" to $command
      t3200: rename "expected" to "expect"
      t3200: test for specific errors
      branch: don't mix --edit-description
      builtin/diff: update usage comment
      builtin/diff: fix botched update of usage comment
      lib-submodule-update: pass 'test_must_fail' as an argument

Derrick Stolee (3):
      line-log: integrate with changed-path Bloom filters
      commit-reach: create repo_is_descendant_of()
      commit-reach: use fast logic in repo_in_merge_base

Don Goodman-Wilson (1):
      init: allow setting the default for the initial branch name via the config

Elijah Newren (11):
      fast-import: add new --date-format=raw-permissive format
      sparse-checkout: avoid staging deletions of all files
      dir: fix treatment of negated pathspecs
      git-sparse-checkout: clarify interactions with submodules
      dir: fix a few confusing comments
      dir, clean: avoid disallowed behavior
      clean: consolidate handling of ignored parameters
      clean: optimize and document cases where we recurse into subdirectories
      wt-status: show sparse checkout status as well
      git-prompt: document how in-progress operations affect the prompt
      git-prompt: include sparsity state as well

Emily Shaffer (3):
      help: add shell-path to --build-options
      bugreport: include user interactive shell
      docs: mention MyFirstContribution in more places

Eric Sunshine (10):
      worktree: factor out repeated string literal
      worktree: give "should be pruned?" function more meaningful name
      worktree: make high-level pruning re-usable
      worktree: prune duplicate entries referencing same worktree path
      worktree: prune linked worktree referencing main worktree path
      worktree: generalize candidate worktree path validation
      worktree: make "move" refuse to move atop missing registered worktree
      worktree: drop get_worktrees() special-purpose sorting option
      worktree: drop get_worktrees() unused 'flags' argument
      worktree: avoid dead-code in conditional

Han-Wen Nienhuys (5):
      refs.h: clarify reflog iteration order
      t: use update-ref and show-ref to reading/writing refs
      refs: improve documentation for ref iterator
      reftable: clarify how empty tables should be written
      reftable: define version 2 of the spec to accomodate SHA256

Jacob Keller (16):
      completion: add test showing subpar git switch completion
      completion: add tests showing subpar DWIM logic for switch/checkout
      completion: add tests showing subar checkout --detach logic
      completion: add tests showing subpar switch/checkout --track logic
      completion: add tests showing subpar -c/-C startpoint completion
      completion: add tests showing subpar -c/C argument completion
      completion: add tests showing subpar switch/checkout --orphan logic
      completion: replace overloaded track term for __git_complete_refs
      completion: extract function __git_dwim_remote_heads
      completion: perform DWIM logic directly in __git_complete_refs
      completion: improve handling of DWIM mode for switch/checkout
      completion: improve completion for git switch with no options
      completion: improve handling of --detach in checkout
      completion: improve handling of --track in switch/checkout
      completion: improve handling of -c/-C and -b/-B in switch/checkout
      completion: improve handling of --orphan option of switch/checkout

Jeff King (14):
      diff: discard blob data from stat-unmatched pairs
      upload-pack: actually use some upload_pack_data bitfields
      t9351: derive anonymized tree checks from original repo
      fast-export: use xmemdupz() for anonymizing oids
      fast-export: store anonymized oids as hex strings
      fast-export: tighten anonymize_mem() interface to handle only strings
      fast-export: stop storing lengths in anonymized hashmaps
      fast-export: use a flex array to store anonymized entries
      fast-export: move global "idents" anonymize hashmap into function
      fast-export: add a "data" callback parameter to anonymize_str()
      fast-export: allow seeding the anonymized mapping
      fast-export: anonymize "master" refname
      fast-export: use local array to store anonymized oid
      diff: check for merge bases before assigning sym->base

Jiuyang Xie (1):
      doc: fix wrong 4-byte length of pkt-line message

Johannes Schindelin (16):
      checkout -p: handle new files correctly
      clone/fetch: anonymize URLs in the reflog
      msvc: fix "REG_STARTEND" issue
      fmt-merge-msg: stop treating `master` specially
      send-pack/transport-helper: avoid mentioning a particular branch
      submodule: fall back to remote's HEAD for missing remote.<name>.branch
      docs: add missing diamond brackets
      init: allow specifying the initial branch name for the new repository
      clone: use configured default branch name when appropriate
      remote: use the configured default branch name when appropriate
      testsvn: respect `init.defaultBranch`
      docs: adjust for the recent rename of `pu` to `seen`
      docs: adjust the technical overview for the rename `pu` -> `seen`
      tests: reference `seen` wherever `pu` was referenced
      diff-files --raw: show correct post-image of intent-to-add files
      difftool -d: ensure that intent-to-add files are handled correctly

John Lin (1):
      bash-completion: add git-prune into bash completion

Jonathan Nieder (5):
      config: let feature.experimental imply protocol.version=2
      reftable: file format documentation
      experimental: default to fetch.writeCommitGraph=false
      Revert "check_repository_format_gently(): refuse extensions for old repositories"
      repository: allow repository format upgrade with extensions

Jonathan Tan (12):
      t5551: test that GIT_TRACE_CURL redacts password
      http, imap-send: stop using CURLOPT_VERBOSE
      http: redact all cookies, teach GIT_TRACE_REDACT=0
      http: use --stdin when indexing dumb HTTP pack
      http: refactor finish_http_pack_request()
      http-fetch: refactor into function
      http-fetch: support fetching packfiles by URL
      Documentation: order protocol v2 sections
      Documentation: add Packfile URIs design doc
      upload-pack: refactor reading of pack-objects out
      fetch-pack: support more than one pack lockfile
      upload-pack: send part of packfile response as uri

Josh Steadmon (1):
      fuzz-commit-graph: properly free graph struct

Junio C Hamano (10):
      Start the post 2.27 cycle
      The second batch
      The third batch
      The fourth batch
      The fifth batch
      The sixth batch
      The seventh batch
      Git 2.28-rc0
      Hopefully the last batch before -rc1
      Git 2.28-rc1

Laurent Arnoud (1):
      diff: add config option relative

Luc Van Oostenryck (1):
      sparse: allow '{ 0 }' to be used without warnings

Marco Trevisan (Treviño) (1):
      completion: use native ZSH array pattern matching

Martin Ågren (3):
      git-rebase.txt: fix description list separator
      git-diff.txt: don't mark required argument as optional
      git-diff.txt: reorder possible usages

Matheus Tavares (1):
      entry: check for fstat() errors after checkout

Miroslav Koškár (1):
      doc: fix author vs. committer copy/paste error

Paolo Bonzini (1):
      t4014: do not use "slave branch" nomenclature

Patrick Steinhardt (1):
      refs: implement reference transaction hook

Rafael Aquini (1):
      send-email: restore --in-reply-to superseding behavior

Ramsay Jones (1):
      upload-pack: fix a sparse '0 as NULL pointer' warning

Randall S. Becker (2):
      bugreport.c: replace strbuf_write_fd with write_in_full
      strbuf: remove unreferenced strbuf_write_fd method.

René Scharfe (10):
      fsck: fix a typo in a comment
      t1450: increase test coverage of in-tree d/f detection
      t1450: demonstrate undetected in-tree d/f conflict
      fsck: detect more in-tree d/f conflicts
      checkout: add tests for -b and --track
      checkout: improve error messages for -b with extra argument
      commit-reach: plug minor memory leak after using is_descendant_of()
      pull: plug minor memory leak after using is_descendant_of()
      revision: reallocate TOPO_WALK object flags
      revision: disable min_age optimization with line-log

SZEDER Gábor (7):
      line-log: remove unused fields from 'struct line_log_data'
      t4211-line-log: add tests for parent oids
      line-log: more responsive, incremental 'git log -L'
      line-log: try to use generation number-based topo-ordering
      commit-graph: fix progress of reachable commits
      commit-graph: fix "Writing out commit graph" progress counter
      commit-graph: fix "Collecting commits from input" progress line

Shourya Shukla (1):
      submodule: port subcommand 'set-branch' from shell to C

Srinidhi Kaushik (1):
      diff-files: treat "i-t-a" files as "not-in-index"

Taylor Blau (11):
      commit-graph.c: extract 'refs_cb_data'
      commit-graph.c: show progress of finding reachable commits
      commit-graph.c: peel refs in 'add_ref_to_set'
      builtin/commit-graph.c: extract 'read_one_commit()'
      builtin/commit-graph.c: dereference tags in builtin
      commit-graph.c: simplify 'fill_oids_from_commits'
      t5318: reorder test below 'graph_read_expect'
      commit-graph: drop COMMIT_GRAPH_WRITE_CHECK_OIDS flag
      t5318: use 'test_must_be_empty'
      t5318: test that '--stdin-commits' respects '--[no-]progress'
      commit.c: don't persist substituted parents when unshallowing

Trygve Aaberge (2):
      Wait for child on signal death for aliases to builtins
      Wait for child on signal death for aliases to externals

Ville Skyttä (2):
      completion: don't override given stash subcommand with -p
      completion: nounset mode fixes

Xin Li (4):
      repository: add a helper function to perform repository format upgrade
      fetch: allow adding a filter after initial clone
      sparse-checkout: upgrade repository to version 1 when enabling extension
      check_repository_format_gently(): refuse extensions for old repositories

brian m. carlson (61):
      t1050: match object ID paths in a hash-insensitive way
      Documentation: document v1 protocol object-format capability
      builtin/checkout: simplify metadata initialization
      t2060: add a test for switch with --orphan and --discard-changes
      connect: have ref processing code take struct packet_reader
      wrapper: add function to compare strings with different NUL termination
      remote: advertise the object-format capability on the server side
      connect: add function to parse multiple v1 capability values
      connect: add function to fetch value of a v2 server capability
      pkt-line: add a member for hash algorithm
      transport: add a hash algorithm member
      connect: add function to detect supported v1 hash functions
      send-pack: detect when the server doesn't support our hash
      connect: make parse_feature_value extern
      fetch-pack: detect when the server doesn't support our hash
      connect: detect algorithm when fetching refs
      builtin/receive-pack: detect when the server doesn't support our hash
      docs: update remote helper docs for object-format extensions
      transport-helper: implement object-format extensions
      remote-curl: implement object-format extensions
      builtin/clone: initialize hash algorithm properly
      t5562: pass object-format in synthesized test data
      fetch-pack: parse and advertise the object-format capability
      setup: set the_repository's hash algo when checking format
      t3200: mark assertion with SHA1 prerequisite
      packfile: compute and use the index CRC offset
      t5302: modernize test formatting
      builtin/show-index: provide options to determine hash algo
      t1302: expect repo format version 1 for SHA-256
      Documentation/technical: document object-format for protocol v2
      connect: pass full packet reader when parsing v2 refs
      connect: parse v2 refs with correct hash algorithm
      serve: advertise object-format capability for protocol v2
      t5500: make hash independent
      builtin/ls-remote: initialize repository based on fetch
      remote-curl: detect algorithm for dumb HTTP by size
      builtin/index-pack: add option to specify hash algorithm
      t1050: pass algorithm to index-pack when outside repo
      remote-curl: avoid truncating refs with ls-remote
      t/helper: initialize the repository for test-sha1-array
      t5702: offer an object-format capability in the test
      t5703: use object-format serve option
      t5704: send object-format capability with SHA-256
      t5300: pass --object-format to git index-pack
      bundle: detect hash algorithm when reading refs
      remote-testgit: adapt for object-format
      t9109: make test hash independent
      t9168: make test hash independent
      t9108: make test hash independent
      t9100: make test work with SHA-256
      t9104: make hash size independent
      t9101: make hash independent
      t/lib-git-svn: make hash size independent
      perl: create and switch variables for hash constants
      perl: make Git::IndexInfo work with SHA-256
      perl: make SVN code hash independent
      git-svn: set the OID length based on hash algorithm
      git-cvsserver: port to SHA-256
      git-cvsimport: port to SHA-256
      git-cvsexportcommit: port to SHA-256
      http-push: ensure unforced pushes fail when data would be lost

Đoàn Trần Công Danh (1):
      contrib: subtree: adjust test to change in fmt-merge-msg