bundle.*::
	The `bundle.*` keys may appear in a bundle list file found via the
	`git clone --bundle-uri` option. These keys currently have no effect
	if placed in a repository config file, though this will change in the
	future. See link:technical/bundle-uri.html[the bundle URI design
	document] for more details.

bundle.version::
	This integer value advertises the version of the bundle list format
	used by the bundle list. Currently, the only accepted value is `1`.

bundle.mode::
	This string value should be either `all` or `any`. This value describes
	whether all of the advertised bundles are required to unbundle a
	complete understanding of the bundled information (`all`) or if any one
	of the listed bundle URIs is sufficient (`any`).

bundle.heuristic::
	If this string-valued key exists, then the bundle list is designed to
	work well with incremental `git fetch` commands. The heuristic signals
	that there are additional keys available for each bundle that help
	determine which subset of bundles the client should download. The
	only value currently understood is `creationToken`.

bundle.<id>.*::
	The `bundle.<id>.*` keys are used to describe a single item in the
	bundle list, grouped under `<id>` for identification purposes.

bundle.<id>.uri::
	This string value defines the URI by which Git can reach the contents
	of this `<id>`. This URI may be a bundle file or another bundle list.
