From: Matt Hunter <m@lfurio.us>
To: git@vger.kernel.org
Cc: Patrick Steinhardt <ps@pks.im>,
Harald Nordgren <haraldnordgren@gmail.com>,
Junio C Hamano <gitster@pobox.com>
Subject: [PATCH v2] init: show absolute path of (re)initialized repository
Date: Thu, 22 Oct 2026 08:06:32 -0400 [thread overview]
Message-ID: <20261022120749.3567828-1-m@lfurio.us> (raw)
In-Reply-To: <20261020053932.1274210-1-m@lfurio.us>
Since 20e38cba3926 (setup: split up concerns of `init_db()`,
2026-09-10), git-init produces the message:
Initialized empty Git repository in .git/
instead of the previous
Initialized empty Git repository in /full/path/to/repo/.git/
Prior to 20e38cba3926, the code producing this message was in function
init_db (renamed at the time to create_repository). In that context,
the git_dir variable was updated by 'git_dir = repo_get_git_dir(repo);'
earlier in the function, to set the value used in printf.
None of the discussion [1] around the original patch indicates that this
change was intentional, so address the regression by similarly using
repo_get_git_dir in this code's new location.
1: https://lore.kernel.org/git/20260825-pks-odb-write-alternates-at-creation-time-v1-0-911513ba95c3@pks.im/
Signed-off-by: Matt Hunter <m@lfurio.us>
---
Changes in v2:
- len type is updated to size_t
- added a regression test (changed my mind on this)
- some text is stripped from the patch message
- Link to v1: https://patch.msgid.link/20261020053932.1274210-1-m@lfurio.us
builtin/init-db.c | 7 ++++---
t/t0001-init.sh | 6 ++++++
2 files changed, 10 insertions(+), 3 deletions(-)
diff --git a/builtin/init-db.c b/builtin/init-db.c
index 374ed3a74706..9612d2b8bfca 100644
--- a/builtin/init-db.c
+++ b/builtin/init-db.c
@@ -248,18 +248,19 @@ int cmd_init_db(int argc,
create_object_database(the_repository, NULL);
if (!quiet) {
- int len = strlen(git_dir);
+ const char *full_git_dir = repo_get_git_dir(the_repository);
+ size_t len = strlen(full_git_dir);
if (reinit)
printf(repo_settings_get_shared_repository(the_repository)
? _("Reinitialized existing shared Git repository in %s%s\n")
: _("Reinitialized existing Git repository in %s%s\n"),
- git_dir, len && git_dir[len-1] != '/' ? "/" : "");
+ full_git_dir, len && full_git_dir[len-1] != '/' ? "/" : "");
else
printf(repo_settings_get_shared_repository(the_repository)
? _("Initialized empty shared Git repository in %s%s\n")
: _("Initialized empty Git repository in %s%s\n"),
- git_dir, len && git_dir[len-1] != '/' ? "/" : "");
+ full_git_dir, len && full_git_dir[len-1] != '/' ? "/" : "");
}
free(template_dir_to_free);
diff --git a/t/t0001-init.sh b/t/t0001-init.sh
index f1d227f27167..fbf8a0e41dad 100755
--- a/t/t0001-init.sh
+++ b/t/t0001-init.sh
@@ -1000,4 +1000,10 @@ test_expect_success 'init honors GIT_OBJECT_DIRECTORY' '
test_path_is_dir custom-odb/info
'
+test_expect_success 'init shows absolute path to gitdir' '
+ expect="$(pwd)/init-path" &&
+ git init init-path >actual &&
+ test_grep "$expect" actual
+'
+
test_done
Range-diff against v1:
1: c0869122d3fb ! 1: 49d220d97aa8 init: show absolute path of (re)initialized repository
@@ Commit message
change was intentional, so address the regression by similarly using
repo_get_git_dir in this code's new location.
- In this case, git_dir is referencing owned memory that is later freed,
- so declare a new variable to hold the used string.
-
1: https://lore.kernel.org/git/20260825-pks-odb-write-alternates-at-creation-time-v1-0-911513ba95c3@pks.im/
Signed-off-by: Matt Hunter <m@lfurio.us>
@@ builtin/init-db.c: int cmd_init_db(int argc,
if (!quiet) {
- int len = strlen(git_dir);
+ const char *full_git_dir = repo_get_git_dir(the_repository);
-+ int len = strlen(full_git_dir);
++ size_t len = strlen(full_git_dir);
if (reinit)
printf(repo_settings_get_shared_repository(the_repository)
@@ builtin/init-db.c: int cmd_init_db(int argc,
}
free(template_dir_to_free);
+
+ ## t/t0001-init.sh ##
+@@ t/t0001-init.sh: test_expect_success 'init honors GIT_OBJECT_DIRECTORY' '
+ test_path_is_dir custom-odb/info
+ '
+
++test_expect_success 'init shows absolute path to gitdir' '
++ expect="$(pwd)/init-path" &&
++ git init init-path >actual &&
++ test_grep "$expect" actual
++'
++
+ test_done
base-commit: 47fdf2208c5b94c8cc01c106b8f7c85efb91c926
--
2.56.0.257.gf7497c7d27
prev parent reply other threads:[~2026-10-22 12:08 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-10-20 5:38 [PATCH] init: show absolute path of (re)initialized repository Matt Hunter
2026-10-20 6:55 ` Patrick Steinhardt
2026-10-20 9:13 ` Matt Hunter
2026-10-20 12:14 ` Patrick Steinhardt
2026-10-20 12:37 ` Harald Nordgren
2026-10-20 14:37 ` Patrick Steinhardt
2026-10-20 15:32 ` Harald Nordgren
2026-10-20 16:29 ` Junio C Hamano
2026-10-22 12:06 ` Matt Hunter [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20261022120749.3567828-1-m@lfurio.us \
--to=m@lfurio.us \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=haraldnordgren@gmail.com \
--cc=ps@pks.im \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox