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.<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.
