git-repo(1)
===========

NAME
----
git-repo - Retrieve information about the repository

SYNOPSIS
--------
[synopsis]
git repo info [--format=(keyvalue|nul)] [<key>...]

DESCRIPTION
-----------
Retrieve information about the repository.

THIS COMMAND IS EXPERIMENTAL. THE BEHAVIOR MAY CHANGE.

COMMANDS
--------
`info [--format=(keyvalue|nul)] [<key>...]`::
	Retrieve metadata-related information about the current repository. Only
	the requested data will be returned based on their keys (see "INFO KEYS"
	section below).
+
The values are returned in the same order in which their respective keys were
requested.
+
The output format can be chosen through the flag `--format`. Two formats are
supported:
+
`keyvalue`:::
	output key-value pairs one per line using the `=` character as
	the delimiter between the key and the value. Values containing "unusual"
	characters are quoted as explained for the configuration variable
	`core.quotePath` (see linkgit:git-config[1]). This is the default.

`nul`:::
	similar to `keyvalue`, but using a newline character as the delimiter
	between the key and the value and using a NUL character after each value.
	This format is better suited for being parsed by another applications than
	`keyvalue`. Unlike in the `keyvalue` format, the values are never quoted.

INFO KEYS
---------
In order to obtain a set of values from `git repo info`, you should provide
the keys that identify them. Here's a list of the available keys and the
values that they return:

`layout.bare`::
	`true` if this is a bare repository, otherwise `false`.

`layout.shallow`::
	`true` if this is a shallow repository, otherwise `false`.

`references.format`::
	The reference storage format. The valid values are:
+
include::ref-storage-format.adoc[]

EXAMPLES
--------

* Retrieves the reference format of the current repository:
+
------------
git repo info references.format
------------
+

* Retrieves whether the current repository is bare and whether it is shallow
using the `nul` format:
+
------------
git repo info --format=nul layout.bare layout.shallow
------------

SEE ALSO
--------
linkgit:git-rev-parse[1]

GIT
---
Part of the linkgit:git[1] suite
