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

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

SYNOPSIS
--------
[synopsis]
git repo info [--format=(lines|nul) | -z] [--all | <key>...]
git repo info --keys [--format=(lines|nul) | -z]
git repo structure [--format=(table|lines|nul) | -z]

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

THIS COMMAND IS EXPERIMENTAL. THE BEHAVIOR MAY CHANGE.

COMMANDS
--------
`info [--format=(lines|nul) | -z] [--all | <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 `--all` flag requests the values for all the available keys.
+
The output format can be chosen through the flag `--format`. Two formats are
supported:
+

`lines`:::
	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 `lines`, 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
	`lines`. Unlike in the `lines` format, the values are never quoted.
+
`-z` is an alias for `--format=nul`.

`info --keys [--format=(lines|nul) | -z]`::
	List all the available keys, one per line. The output format can be chosen
	through the flag `--format`. The following formats are supported:
+
`lines`:::
	Output the keys one per line. This is the default.

`nul`:::
	Similar to `lines`, but using a _NUL_ character after each value.

`structure [--format=(table|lines|nul) | -z]`::
	Retrieve statistics about the current repository structure. The
	following kinds of information are reported:
+
* Reference counts categorized by type
* Reachable object counts categorized by type
* Total inflated size of reachable objects by type
* Total disk size of reachable objects by type
* Largest reachable objects in the repository by type
+
The output format can be chosen through the flag `--format`. Three formats are
supported:
+
`table`:::
	Outputs repository stats in a human-friendly table. This format may
	change and is not intended for machine parsing. This is the default
	format.

`lines`:::
	Each line of output contains a key-value pair for a repository stat.
	The '=' character is used to delimit 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]).

`nul`:::
	Similar to `lines`, but uses a _NUL_ character to delimit between
	key-value pairs instead of a newline. Also uses a newline character as
	the delimiter between the key and value instead of '='. Unlike the
	`lines` format, values containing "unusual" characters are never
	quoted.
+
`-z` is an alias for `--format=nul`.

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

`object.format`::
	The object format (hash algorithm) used in the repository.

`path.commondir.absolute`::
	The canonical absolute path to the Git repository's common
	directory (the shared `.git` directory containing objects,
	refs, and global configuration).

`path.commondir.relative`::
	The path to the Git repository's common directory relative to
	the current working directory.

`path.gitdir.absolute`::
	The canonical absolute path to the Git repository directory (the `.git` directory).

`path.gitdir.relative`::
	The path to the Git repository directory relative to the current working directory.

`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
