extensions.objectFormat::
	Specify the hash algorithm to use.  The acceptable values are `sha1` and
	`sha256`.  If not specified, `sha1` is assumed.  It is an error to specify
	this key unless `core.repositoryFormatVersion` is 1.
+
Note that this setting should only be set by linkgit:git-init[1] or
linkgit:git-clone[1].  Trying to change it after initialization will not
work and will produce hard-to-diagnose issues.

extensions.refFormat::
	Specify the reference storage mechanisms used by the repoitory as a
	multi-valued list. The acceptable values are `files` and `packed`.
	If not specified, the list of `files` and `packed` is assumed. It
	is an error to specify this key unless `core.repositoryFormatVersion`
	is 1.
+
As new ref formats are added, Git commands may modify this list before and
after upgrading the on-disk reference storage files. The specific values
indicate the existence of different layers:
+
--
`files`;;
	When present, references may be stored as "loose" reference files
	in the `$GIT_DIR/refs/` directory. The name of the reference
	corresponds to the filename after `$GIT_DIR` and the file contains
	an object ID as a hexadecimal string. If a loose reference file
	exists, then its value takes precedence over all other formats.

`packed`;;
	When present, references may be stored as a group in a
	`packed-refs` file in its version 1 format. When grouped with
	`"files"` or provided on its own, this file is located at
	`$GIT_DIR/packed-refs`. This file contains a list of distinct
	reference names, paired with their object IDs. When combined with
	`files`, the `packed` format will only be used to group multiple
	loose object files upon request via the `git pack-refs` command or
	via the `pack-refs` maintenance task.
--
+
The following combinations are supported by this version of Git:
+
--
`files` and `packed`;;
	This set of values indicates that references are stored both as
	loose reference files and in the `packed-refs` file in its v1
	format. Loose references are preferred, and the `packed-refs` file
	is updated only when deleting a reference that is stored in the
	`packed-refs` file or during a `git pack-refs` command.

`files`;;
	When only this value is present, Git will ignore the `packed-refs`
	file and refuse to write one during `git pack-refs`. All references
	will be read from and written to loose reference files.
--

extensions.worktreeConfig::
	If enabled, then worktrees will load config settings from the
	`$GIT_DIR/config.worktree` file in addition to the
	`$GIT_COMMON_DIR/config` file. Note that `$GIT_COMMON_DIR` and
	`$GIT_DIR` are the same for the main working tree, while other
	working trees have `$GIT_DIR` equal to
	`$GIT_COMMON_DIR/worktrees/<id>/`. The settings in the
	`config.worktree` file will override settings from any other
	config files.
+
When enabling `extensions.worktreeConfig`, you must be careful to move
certain values from the common config file to the main working tree's
`config.worktree` file, if present:
+
--
`core.worktree`;;
	This config value must be moved from `$GIT_COMMON_DIR/config` to
	`$GIT_COMMON_DIR/config.worktree`.

`core.bare`;;
	If true, then this value must be moved from
	`$GIT_COMMON_DIR/config` to `$GIT_COMMON_DIR/config.worktree`.
--
+
It may also be beneficial to adjust the locations of `core.sparseCheckout`
and `core.sparseCheckoutCone` depending on your desire for customizable
sparse-checkout settings for each worktree. By default, the `git
sparse-checkout` builtin enables `extensions.worktreeConfig`, assigns
these config values on a per-worktree basis, and uses the
`$GIT_DIR/info/sparse-checkout` file to specify the sparsity for each
worktree independently. See linkgit:git-sparse-checkout[1] for more
details.
+
For historical reasons, `extensions.worktreeConfig` is respected
regardless of the `core.repositoryFormatVersion` setting.
