diff --git a/Documentation/git-repo.adoc b/Documentation/git-repo.adoc index 42262c198347e5..d17d911ec66378 100644 --- a/Documentation/git-repo.adoc +++ b/Documentation/git-repo.adoc @@ -95,6 +95,11 @@ 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: +`paths.git_dir`:: + The path to the Git directory for the repository (equivalent to + `git rev-parse --git-dir`). + + `layout.bare`:: `true` if this is a bare repository, otherwise `false`. diff --git a/builtin/repo.c b/builtin/repo.c index 55f9b9095c1f92..3067107cad3f43 100644 --- a/builtin/repo.c +++ b/builtin/repo.c @@ -66,11 +66,18 @@ static int get_references_format(struct repository *repo, struct strbuf *buf) return 0; } +static int get_paths_git_dir(struct repository *repo, struct strbuf *buf) +{ + strbuf_addstr(buf, repo_get_git_dir(repo)); + return 0; +} + /* repo_info_field keys must be in lexicographical order */ static const struct repo_info_field repo_info_field[] = { { "layout.bare", get_layout_bare }, { "layout.shallow", get_layout_shallow }, { "object.format", get_object_format }, + { "paths.git_dir", get_paths_git_dir }, { "references.format", get_references_format }, }; diff --git a/t/t1900-repo-info.sh b/t/t1900-repo-info.sh index a9eb07abe8aaea..63be0849c4290f 100755 --- a/t/t1900-repo-info.sh +++ b/t/t1900-repo-info.sh @@ -149,4 +149,14 @@ test_expect_success 'git repo info --keys uses lines as its default output forma test_cmp expect actual ' +test_expect_success 'paths.git_dir matches rev-parse --git-dir' ' + git init repo && + ( + cd repo && + git repo info paths.git_dir >actual && + echo "paths.git_dir=$(git rev-parse --git-dir)" >expect && + test_cmp expect actual + ) +' + test_done