* [PATCH 0/2] Deprecate git-init-db(1) alias
@ 2026-06-01 7:55 Patrick Steinhardt
2026-06-01 7:55 ` [PATCH 1/2] builtin/init-db: rename to "builtin/init.c" Patrick Steinhardt
2026-06-01 7:56 ` [PATCH 2/2] builtin/init-db: deprecate alias for git-init(1) Patrick Steinhardt
0 siblings, 2 replies; 20+ messages in thread
From: Patrick Steinhardt @ 2026-06-01 7:55 UTC (permalink / raw)
To: git
Hi,
this small patch series deprecates the git-init-db(1) alias in favor of
git-init(1).
Patrick
---
Patrick Steinhardt (2):
builtin/init-db: rename to "builtin/init.c"
builtin/init-db: deprecate alias for git-init(1)
Documentation/BreakingChanges.adoc | 3 +++
Documentation/Makefile | 1 +
Documentation/git-init-db.adoc | 5 +++++
Documentation/meson.build | 2 +-
Makefile | 4 ++--
builtin.h | 2 +-
builtin/{init-db.c => init.c} | 8 ++++----
git.c | 6 ++++--
meson.build | 2 +-
t/t5502-quickfetch.sh | 4 ++--
t/t5503-tagfollow.sh | 2 +-
11 files changed, 25 insertions(+), 14 deletions(-)
---
base-commit: 1666c1265231b0bc5f613fbbf3f0a9896cdef76e
change-id: 20260601-pks-deprecate-git-init-db-c0e8d7f8b94e
^ permalink raw reply [flat|nested] 20+ messages in thread
* [PATCH 1/2] builtin/init-db: rename to "builtin/init.c"
2026-06-01 7:55 [PATCH 0/2] Deprecate git-init-db(1) alias Patrick Steinhardt
@ 2026-06-01 7:55 ` Patrick Steinhardt
2026-06-01 7:56 ` [PATCH 2/2] builtin/init-db: deprecate alias for git-init(1) Patrick Steinhardt
1 sibling, 0 replies; 20+ messages in thread
From: Patrick Steinhardt @ 2026-06-01 7:55 UTC (permalink / raw)
To: git
Rename "builtin/init-db.c" to "builtin/init.c" to match the modern
git-init(1) command name instead of its ancient alias git-init-db(1).
Signed-off-by: Patrick Steinhardt <ps@pks.im>
---
Makefile | 4 ++--
builtin.h | 2 +-
builtin/{init-db.c => init.c} | 8 ++++----
git.c | 4 ++--
meson.build | 2 +-
5 files changed, 10 insertions(+), 10 deletions(-)
diff --git a/Makefile b/Makefile
index b31ecb0756..b03f74ee8c 100644
--- a/Makefile
+++ b/Makefile
@@ -894,7 +894,7 @@ BUILT_INS += git-cherry-pick$X
BUILT_INS += git-format-patch$X
BUILT_INS += git-format-rev$X
BUILT_INS += git-fsck-objects$X
-BUILT_INS += git-init$X
+BUILT_INS += git-init-db$X
BUILT_INS += git-maintenance$X
BUILT_INS += git-merge-subtree$X
BUILT_INS += git-restore$X
@@ -1428,7 +1428,7 @@ BUILTIN_OBJS += builtin/help.o
BUILTIN_OBJS += builtin/history.o
BUILTIN_OBJS += builtin/hook.o
BUILTIN_OBJS += builtin/index-pack.o
-BUILTIN_OBJS += builtin/init-db.o
+BUILTIN_OBJS += builtin/init.o
BUILTIN_OBJS += builtin/interpret-trailers.o
BUILTIN_OBJS += builtin/last-modified.o
BUILTIN_OBJS += builtin/log.o
diff --git a/builtin.h b/builtin.h
index 4e47a4ebd3..bd072aa0e4 100644
--- a/builtin.h
+++ b/builtin.h
@@ -200,7 +200,7 @@ int cmd_help(int argc, const char **argv, const char *prefix, struct repository
int cmd_history(int argc, const char **argv, const char *prefix, struct repository *repo);
int cmd_hook(int argc, const char **argv, const char *prefix, struct repository *repo);
int cmd_index_pack(int argc, const char **argv, const char *prefix, struct repository *repo);
-int cmd_init_db(int argc, const char **argv, const char *prefix, struct repository *repo);
+int cmd_init(int argc, const char **argv, const char *prefix, struct repository *repo);
int cmd_interpret_trailers(int argc, const char **argv, const char *prefix, struct repository *repo);
int cmd_last_modified(int argc, const char **argv, const char *prefix, struct repository *repo);
int cmd_log_reflog(int argc, const char **argv, const char *prefix, struct repository *repo);
diff --git a/builtin/init-db.c b/builtin/init.c
similarity index 98%
rename from builtin/init-db.c
rename to builtin/init.c
index c55517ad94..9184f2fc2c 100644
--- a/builtin/init-db.c
+++ b/builtin/init.c
@@ -69,10 +69,10 @@ static const char *const init_db_usage[] = {
* On the other hand, it might just make lookup slower and messier. You
* be the judge. The default case is to have one DB per managed directory.
*/
-int cmd_init_db(int argc,
- const char **argv,
- const char *prefix,
- struct repository *repo UNUSED)
+int cmd_init(int argc,
+ const char **argv,
+ const char *prefix,
+ struct repository *repo UNUSED)
{
char *git_dir;
const char *real_git_dir = NULL;
diff --git a/git.c b/git.c
index 36f08891ef..a72394b599 100644
--- a/git.c
+++ b/git.c
@@ -590,8 +590,8 @@ static struct cmd_struct commands[] = {
{ "history", cmd_history, RUN_SETUP },
{ "hook", cmd_hook, RUN_SETUP_GENTLY },
{ "index-pack", cmd_index_pack, RUN_SETUP_GENTLY | NO_PARSEOPT },
- { "init", cmd_init_db },
- { "init-db", cmd_init_db },
+ { "init", cmd_init },
+ { "init-db", cmd_init },
{ "interpret-trailers", cmd_interpret_trailers, RUN_SETUP_GENTLY },
{ "last-modified", cmd_last_modified, RUN_SETUP },
{ "log", cmd_log, RUN_SETUP },
diff --git a/meson.build b/meson.build
index 064fe2e2f1..682e46e7eb 100644
--- a/meson.build
+++ b/meson.build
@@ -634,7 +634,7 @@ builtin_sources = [
'builtin/history.c',
'builtin/hook.c',
'builtin/index-pack.c',
- 'builtin/init-db.c',
+ 'builtin/init.c',
'builtin/interpret-trailers.c',
'builtin/last-modified.c',
'builtin/log.c',
--
2.54.0.926.g75ba10bac6.dirty
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH 2/2] builtin/init-db: deprecate alias for git-init(1)
2026-06-01 7:55 [PATCH 0/2] Deprecate git-init-db(1) alias Patrick Steinhardt
2026-06-01 7:55 ` [PATCH 1/2] builtin/init-db: rename to "builtin/init.c" Patrick Steinhardt
@ 2026-06-01 7:56 ` Patrick Steinhardt
2026-06-01 9:31 ` Kristoffer Haugsbakk
1 sibling, 1 reply; 20+ messages in thread
From: Patrick Steinhardt @ 2026-06-01 7:56 UTC (permalink / raw)
To: git
The git-init-db(1) command was initially only initializing the object
database of a Git repository. This has changed over time so that the
command also initializes all the other data structures, which is why we
have eventually introduced git-init(1) as a more aptly named replacement
for it.
This has all happened in 2007 already, and with 5c94f87e6b (use 'init'
instead of 'init-db' for shipped docs and tools, 2007-01-12) we have
also adapted all user-facing documentation to mention the replacement.
It is thus safe to assume that (almost) nobody uses git-init-db(1)
nowadays anymore.
Deprecate the command in favor of git-init(1) and wire up the removal
when compiling Git with breaking changes enabled.
Signed-off-by: Patrick Steinhardt <ps@pks.im>
---
Documentation/BreakingChanges.adoc | 3 +++
Documentation/Makefile | 1 +
Documentation/git-init-db.adoc | 5 +++++
Documentation/meson.build | 2 +-
Makefile | 2 +-
git.c | 2 ++
t/t5502-quickfetch.sh | 4 ++--
t/t5503-tagfollow.sh | 2 +-
8 files changed, 16 insertions(+), 5 deletions(-)
diff --git a/Documentation/BreakingChanges.adoc b/Documentation/BreakingChanges.adoc
index 73bb939359..89b7482f54 100644
--- a/Documentation/BreakingChanges.adoc
+++ b/Documentation/BreakingChanges.adoc
@@ -300,6 +300,9 @@ references.
+
These features will be removed.
+* The git-init-db(1) command is an alias for its modern drop-in replacement
+ git-init(1). The alias will be removed.
+
* Support for "--stdin" option in the "name-rev" command was
deprecated (and hidden from the documentation) in the Git 2.40
timeframe, in preference to its synonym "--annotate-stdin". Git 3.0
diff --git a/Documentation/Makefile b/Documentation/Makefile
index 2699f0b24a..3769856b58 100644
--- a/Documentation/Makefile
+++ b/Documentation/Makefile
@@ -541,6 +541,7 @@ lint-docs-meson:
sort >tmp-meson-diff/meson.adoc && \
ls git*.adoc scalar.adoc | \
grep -v -e git-bisect-lk2009.adoc \
+ -e git-init-db.adoc \
-e git-pack-redundant.adoc \
-e git-tools.adoc \
-e git-whatchanged.adoc \
diff --git a/Documentation/git-init-db.adoc b/Documentation/git-init-db.adoc
index 18bf1a3c8c..9802fc9f3d 100644
--- a/Documentation/git-init-db.adoc
+++ b/Documentation/git-init-db.adoc
@@ -11,6 +11,11 @@ SYNOPSIS
[verse]
'git init-db' [-q | --quiet] [--bare] [--template=<template-directory>] [--separate-git-dir <git-dir>] [--shared[=<permissions>]]
+WARNING
+-------
+
+`git init-db` has been deprecated in favor of `git init`, which is a drop-in
+replacement for `git init-db`.
DESCRIPTION
-----------
diff --git a/Documentation/meson.build b/Documentation/meson.build
index f4854f802d..0f127d752d 100644
--- a/Documentation/meson.build
+++ b/Documentation/meson.build
@@ -72,7 +72,6 @@ manpages = {
'git-http-push.adoc' : 1,
'git-imap-send.adoc' : 1,
'git-index-pack.adoc' : 1,
- 'git-init-db.adoc' : 1,
'git-init.adoc' : 1,
'git-instaweb.adoc' : 1,
'git-interpret-trailers.adoc' : 1,
@@ -212,6 +211,7 @@ manpages = {
}
manpages_breaking_changes = {
+ 'git-init-db.adoc' : 1,
'git-pack-redundant.adoc' : 1,
'git-whatchanged.adoc' : 1,
}
diff --git a/Makefile b/Makefile
index b03f74ee8c..4420231753 100644
--- a/Makefile
+++ b/Makefile
@@ -894,7 +894,6 @@ BUILT_INS += git-cherry-pick$X
BUILT_INS += git-format-patch$X
BUILT_INS += git-format-rev$X
BUILT_INS += git-fsck-objects$X
-BUILT_INS += git-init-db$X
BUILT_INS += git-maintenance$X
BUILT_INS += git-merge-subtree$X
BUILT_INS += git-restore$X
@@ -904,6 +903,7 @@ BUILT_INS += git-status$X
BUILT_INS += git-switch$X
BUILT_INS += git-version$X
ifndef WITH_BREAKING_CHANGES
+BUILT_INS += git-init-db$X
BUILT_INS += git-whatchanged$X
endif
diff --git a/git.c b/git.c
index a72394b599..6bf6a60360 100644
--- a/git.c
+++ b/git.c
@@ -591,7 +591,9 @@ static struct cmd_struct commands[] = {
{ "hook", cmd_hook, RUN_SETUP_GENTLY },
{ "index-pack", cmd_index_pack, RUN_SETUP_GENTLY | NO_PARSEOPT },
{ "init", cmd_init },
+#ifndef WITH_BREAKING_CHANGES
{ "init-db", cmd_init },
+#endif
{ "interpret-trailers", cmd_interpret_trailers, RUN_SETUP_GENTLY },
{ "last-modified", cmd_last_modified, RUN_SETUP },
{ "log", cmd_log, RUN_SETUP },
diff --git a/t/t5502-quickfetch.sh b/t/t5502-quickfetch.sh
index b160f8b7fb..a2b62f551a 100755
--- a/t/t5502-quickfetch.sh
+++ b/t/t5502-quickfetch.sh
@@ -25,7 +25,7 @@ test_expect_success 'clone without alternate' '
(
mkdir cloned &&
cd cloned &&
- git init-db &&
+ git init &&
git remote add -f origin ..
) &&
cnt=$( (
@@ -94,7 +94,7 @@ test_expect_success 'quickfetch should not copy from alternate' '
(
mkdir quickclone &&
cd quickclone &&
- git init-db &&
+ git init &&
(cd ../.git/objects && pwd) >.git/objects/info/alternates &&
git remote add origin .. &&
git fetch -k -k
diff --git a/t/t5503-tagfollow.sh b/t/t5503-tagfollow.sh
index febe441041..31ec352c5c 100755
--- a/t/t5503-tagfollow.sh
+++ b/t/t5503-tagfollow.sh
@@ -32,7 +32,7 @@ test_expect_success setup '
(
mkdir cloned &&
cd cloned &&
- git init-db &&
+ git init &&
git remote add -f origin ..
) &&
--
2.54.0.926.g75ba10bac6.dirty
^ permalink raw reply related [flat|nested] 20+ messages in thread
* Re: [PATCH 2/2] builtin/init-db: deprecate alias for git-init(1)
2026-06-01 7:56 ` [PATCH 2/2] builtin/init-db: deprecate alias for git-init(1) Patrick Steinhardt
@ 2026-06-01 9:31 ` Kristoffer Haugsbakk
2026-06-01 12:10 ` Patrick Steinhardt
0 siblings, 1 reply; 20+ messages in thread
From: Kristoffer Haugsbakk @ 2026-06-01 9:31 UTC (permalink / raw)
To: Patrick Steinhardt, git
On Mon, Jun 1, 2026, at 09:56, Patrick Steinhardt wrote:
> The git-init-db(1) command was initially only initializing the object
> database of a Git repository. This has changed over time so that the
> command also initializes all the other data structures, which is why we
> have eventually introduced git-init(1) as a more aptly named replacement
> for it.
>
> This has all happened in 2007 already, and with 5c94f87e6b (use 'init'
> instead of 'init-db' for shipped docs and tools, 2007-01-12) we have
> also adapted all user-facing documentation to mention the replacement.
> It is thus safe to assume that (almost) nobody uses git-init-db(1)
> nowadays anymore.
>
> Deprecate the command in favor of git-init(1) and wire up the removal
> when compiling Git with breaking changes enabled.
>
> Signed-off-by: Patrick Steinhardt <ps@pks.im>
> ---
>[snip]
> diff --git a/git.c b/git.c
> index a72394b599..6bf6a60360 100644
> --- a/git.c
> +++ b/git.c
> @@ -591,7 +591,9 @@ static struct cmd_struct commands[] = {
> { "hook", cmd_hook, RUN_SETUP_GENTLY },
> { "index-pack", cmd_index_pack, RUN_SETUP_GENTLY | NO_PARSEOPT },
> { "init", cmd_init },
> +#ifndef WITH_BREAKING_CHANGES
> { "init-db", cmd_init },
This can be marked as deprecated.
{ "init-db", cmd_init, DEPRECATED },
> +#endif
> { "interpret-trailers", cmd_interpret_trailers, RUN_SETUP_GENTLY },
> { "last-modified", cmd_last_modified, RUN_SETUP },
> { "log", cmd_log, RUN_SETUP },
>[snip]
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH 2/2] builtin/init-db: deprecate alias for git-init(1)
2026-06-01 9:31 ` Kristoffer Haugsbakk
@ 2026-06-01 12:10 ` Patrick Steinhardt
2026-06-01 13:48 ` Phillip Wood
0 siblings, 1 reply; 20+ messages in thread
From: Patrick Steinhardt @ 2026-06-01 12:10 UTC (permalink / raw)
To: Kristoffer Haugsbakk; +Cc: git
On Mon, Jun 01, 2026 at 11:31:46AM +0200, Kristoffer Haugsbakk wrote:
> On Mon, Jun 1, 2026, at 09:56, Patrick Steinhardt wrote:
> > diff --git a/git.c b/git.c
> > index a72394b599..6bf6a60360 100644
> > --- a/git.c
> > +++ b/git.c
> > @@ -591,7 +591,9 @@ static struct cmd_struct commands[] = {
> > { "hook", cmd_hook, RUN_SETUP_GENTLY },
> > { "index-pack", cmd_index_pack, RUN_SETUP_GENTLY | NO_PARSEOPT },
> > { "init", cmd_init },
> > +#ifndef WITH_BREAKING_CHANGES
> > { "init-db", cmd_init },
>
> This can be marked as deprecated.
>
> { "init-db", cmd_init, DEPRECATED },
Ah, indeed! Added locally now, thanks.
Patrick
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH 2/2] builtin/init-db: deprecate alias for git-init(1)
2026-06-01 12:10 ` Patrick Steinhardt
@ 2026-06-01 13:48 ` Phillip Wood
2026-06-01 14:20 ` Patrick Steinhardt
0 siblings, 1 reply; 20+ messages in thread
From: Phillip Wood @ 2026-06-01 13:48 UTC (permalink / raw)
To: Patrick Steinhardt, Kristoffer Haugsbakk; +Cc: git
On 01/06/2026 13:10, Patrick Steinhardt wrote:
> On Mon, Jun 01, 2026 at 11:31:46AM +0200, Kristoffer Haugsbakk wrote:
>> On Mon, Jun 1, 2026, at 09:56, Patrick Steinhardt wrote:
>>> diff --git a/git.c b/git.c
>>> index a72394b599..6bf6a60360 100644
>>> --- a/git.c
>>> +++ b/git.c
>>> @@ -591,7 +591,9 @@ static struct cmd_struct commands[] = {
>>> { "hook", cmd_hook, RUN_SETUP_GENTLY },
>>> { "index-pack", cmd_index_pack, RUN_SETUP_GENTLY | NO_PARSEOPT },
>>> { "init", cmd_init },
>>> +#ifndef WITH_BREAKING_CHANGES
>>> { "init-db", cmd_init },
>>
>> This can be marked as deprecated.
>>
>> { "init-db", cmd_init, DEPRECATED },
>
> Ah, indeed! Added locally now, thanks.
Deprecating this command seems very sensible to me. As well as marking
it deprecated, do we want to print a warning when it is run? I imagine
anyone who has this command in their muscle memory is unlikely to be
reading the man page on a regular basis so wont see the warning there.
Thanks
Phillip
> Patrick
>
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH 2/2] builtin/init-db: deprecate alias for git-init(1)
2026-06-01 13:48 ` Phillip Wood
@ 2026-06-01 14:20 ` Patrick Steinhardt
2026-06-01 21:23 ` Kristoffer Haugsbakk
` (2 more replies)
0 siblings, 3 replies; 20+ messages in thread
From: Patrick Steinhardt @ 2026-06-01 14:20 UTC (permalink / raw)
To: phillip.wood; +Cc: Kristoffer Haugsbakk, git
On Mon, Jun 01, 2026 at 02:48:05PM +0100, Phillip Wood wrote:
>
>
> On 01/06/2026 13:10, Patrick Steinhardt wrote:
> > On Mon, Jun 01, 2026 at 11:31:46AM +0200, Kristoffer Haugsbakk wrote:
> > > On Mon, Jun 1, 2026, at 09:56, Patrick Steinhardt wrote:
> > > > diff --git a/git.c b/git.c
> > > > index a72394b599..6bf6a60360 100644
> > > > --- a/git.c
> > > > +++ b/git.c
> > > > @@ -591,7 +591,9 @@ static struct cmd_struct commands[] = {
> > > > { "hook", cmd_hook, RUN_SETUP_GENTLY },
> > > > { "index-pack", cmd_index_pack, RUN_SETUP_GENTLY | NO_PARSEOPT },
> > > > { "init", cmd_init },
> > > > +#ifndef WITH_BREAKING_CHANGES
> > > > { "init-db", cmd_init },
> > >
> > > This can be marked as deprecated.
> > >
> > > { "init-db", cmd_init, DEPRECATED },
> >
> > Ah, indeed! Added locally now, thanks.
>
> Deprecating this command seems very sensible to me. As well as marking it
> deprecated, do we want to print a warning when it is run? I imagine anyone
> who has this command in their muscle memory is unlikely to be reading the
> man page on a regular basis so wont see the warning there.
I was wondering whether we want to call `you_still_use_that()` here. I
found it to be a bit heavy-handed as it's so trivial to replace with
git-init(1), but on the other hand it's a trivial thing to do.
Patrick
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH 2/2] builtin/init-db: deprecate alias for git-init(1)
2026-06-01 14:20 ` Patrick Steinhardt
@ 2026-06-01 21:23 ` Kristoffer Haugsbakk
2026-06-01 22:22 ` Junio C Hamano
2026-06-01 22:18 ` Junio C Hamano
2026-06-02 13:09 ` Phillip Wood
2 siblings, 1 reply; 20+ messages in thread
From: Kristoffer Haugsbakk @ 2026-06-01 21:23 UTC (permalink / raw)
To: Patrick Steinhardt, Phillip Wood; +Cc: git
By the way I tried to find user mentions of git-init-db(1) on the
mailing list. (First git then I tried *all* but the results did not seem
dissimilar at all.) All I found was from last year[1] but the command
was used as a bug reproducer, which hints at some finger memory.
🔗 1: https://lore.kernel.org/git/d8c1df4e-a4d7-4c4c-be44-b13de3d9ffea@markus-raab.org/
On Mon, Jun 1, 2026, at 16:20, Patrick Steinhardt wrote:
> On Mon, Jun 01, 2026 at 02:48:05PM +0100, Phillip Wood wrote:
>>[snip
>>
>> Deprecating this command seems very sensible to me. As well as marking it
>> deprecated, do we want to print a warning when it is run? I imagine anyone
>> who has this command in their muscle memory is unlikely to be reading the
>> man page on a regular basis so wont see the warning there.
>
> I was wondering whether we want to call `you_still_use_that()` here.
As-is that will arguably promote the *breaking change* to right now
since it’s a `die(...)` function. That could be changed to be warn/die
modular of course.
But a simple warning message can just tell them to use git-init(1).
> I found it to be a bit heavy-handed as it's so trivial to replace with
> git-init(1), but on the other hand it's a trivial thing to do.
I imagine that most potential git-init-db(1) uses will be buried in some
scripts that haven’t been touched in years. Then the Git init might
fail, you get errors about git-commit(1) or something not being a thing
you can run without a repository, and it ends up being a headscratcher
since the original failure gets lost.
All to say I think a simple warning would be nice. ;)
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH 2/2] builtin/init-db: deprecate alias for git-init(1)
2026-06-01 14:20 ` Patrick Steinhardt
2026-06-01 21:23 ` Kristoffer Haugsbakk
@ 2026-06-01 22:18 ` Junio C Hamano
2026-06-02 13:09 ` Phillip Wood
2 siblings, 0 replies; 20+ messages in thread
From: Junio C Hamano @ 2026-06-01 22:18 UTC (permalink / raw)
To: Patrick Steinhardt; +Cc: phillip.wood, Kristoffer Haugsbakk, git
Patrick Steinhardt <ps@pks.im> writes:
> On Mon, Jun 01, 2026 at 02:48:05PM +0100, Phillip Wood wrote:
>>
>>
>> On 01/06/2026 13:10, Patrick Steinhardt wrote:
>> > On Mon, Jun 01, 2026 at 11:31:46AM +0200, Kristoffer Haugsbakk wrote:
>> > > On Mon, Jun 1, 2026, at 09:56, Patrick Steinhardt wrote:
>> > > > diff --git a/git.c b/git.c
>> > > > index a72394b599..6bf6a60360 100644
>> > > > --- a/git.c
>> > > > +++ b/git.c
>> > > > @@ -591,7 +591,9 @@ static struct cmd_struct commands[] = {
>> > > > { "hook", cmd_hook, RUN_SETUP_GENTLY },
>> > > > { "index-pack", cmd_index_pack, RUN_SETUP_GENTLY | NO_PARSEOPT },
>> > > > { "init", cmd_init },
>> > > > +#ifndef WITH_BREAKING_CHANGES
>> > > > { "init-db", cmd_init },
>> > >
>> > > This can be marked as deprecated.
>> > >
>> > > { "init-db", cmd_init, DEPRECATED },
>> >
>> > Ah, indeed! Added locally now, thanks.
>>
>> Deprecating this command seems very sensible to me. As well as marking it
>> deprecated, do we want to print a warning when it is run? I imagine anyone
>> who has this command in their muscle memory is unlikely to be reading the
>> man page on a regular basis so wont see the warning there.
>
> I was wondering whether we want to call `you_still_use_that()` here. I
> found it to be a bit heavy-handed as it's so trivial to replace with
> git-init(1), but on the other hand it's a trivial thing to do.
I personally think you_still_use_that() was a mistake. Perhaps
log-family of commands were used often enough to warrant it, but not
"init" that takes exactly the same variations of arguments and is
shorter than "init-db". And you_still_use_that() would not help
scripted use all that much.
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH 2/2] builtin/init-db: deprecate alias for git-init(1)
2026-06-01 21:23 ` Kristoffer Haugsbakk
@ 2026-06-01 22:22 ` Junio C Hamano
2026-06-02 6:45 ` Patrick Steinhardt
0 siblings, 1 reply; 20+ messages in thread
From: Junio C Hamano @ 2026-06-01 22:22 UTC (permalink / raw)
To: Kristoffer Haugsbakk; +Cc: Patrick Steinhardt, Phillip Wood, git
"Kristoffer Haugsbakk" <kristofferhaugsbakk@fastmail.com> writes:
>> I found it to be a bit heavy-handed as it's so trivial to replace with
>> git-init(1), but on the other hand it's a trivial thing to do.
>
> I imagine that most potential git-init-db(1) uses will be buried in some
> scripts that haven’t been touched in years. Then the Git init might
> fail, you get errors about git-commit(1) or something not being a thing
> you can run without a repository, and it ends up being a headscratcher
> since the original failure gets lost.
>
> All to say I think a simple warning would be nice. ;)
Or just leave it without deprecation. It does not cost much to keep
"init-db", and because we expanded what "git database" means in
later versions of Git since its invention, the name still makes
sense. Thank Linus for not naming it "init-odb"---that might have
been a valid excuse to rename it because it does not cover the ref
database and config database and others.
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH 2/2] builtin/init-db: deprecate alias for git-init(1)
2026-06-01 22:22 ` Junio C Hamano
@ 2026-06-02 6:45 ` Patrick Steinhardt
2026-06-02 7:54 ` Kristoffer Haugsbakk
2026-06-02 8:27 ` Junio C Hamano
0 siblings, 2 replies; 20+ messages in thread
From: Patrick Steinhardt @ 2026-06-02 6:45 UTC (permalink / raw)
To: Junio C Hamano; +Cc: Kristoffer Haugsbakk, Phillip Wood, git
On Tue, Jun 02, 2026 at 07:22:50AM +0900, Junio C Hamano wrote:
> "Kristoffer Haugsbakk" <kristofferhaugsbakk@fastmail.com> writes:
>
> >> I found it to be a bit heavy-handed as it's so trivial to replace with
> >> git-init(1), but on the other hand it's a trivial thing to do.
> >
> > I imagine that most potential git-init-db(1) uses will be buried in some
> > scripts that haven’t been touched in years. Then the Git init might
> > fail, you get errors about git-commit(1) or something not being a thing
> > you can run without a repository, and it ends up being a headscratcher
> > since the original failure gets lost.
> >
> > All to say I think a simple warning would be nice. ;)
>
> Or just leave it without deprecation. It does not cost much to keep
> "init-db", and because we expanded what "git database" means in
> later versions of Git since its invention, the name still makes
> sense. Thank Linus for not naming it "init-odb"---that might have
> been a valid excuse to rename it because it does not cover the ref
> database and config database and others.
I wouldn't mind that outcome much, either. What triggered this series is
that I'm always annoyed that it's "builtin/init-db.c" instead of
"builtin/init.c", and the same for `cmd_init_db()`. But I intentionally
constructed the series in a way that the first commit can be picked
as-is, so that we can adjust our code to the modern world while not
doing the deprecation dance.
So I'd be equally happy if we just drop the second commit in this
series.
Patrick
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH 2/2] builtin/init-db: deprecate alias for git-init(1)
2026-06-02 6:45 ` Patrick Steinhardt
@ 2026-06-02 7:54 ` Kristoffer Haugsbakk
2026-06-02 12:34 ` Patrick Steinhardt
2026-06-02 8:27 ` Junio C Hamano
1 sibling, 1 reply; 20+ messages in thread
From: Kristoffer Haugsbakk @ 2026-06-02 7:54 UTC (permalink / raw)
To: Patrick Steinhardt, Junio C Hamano; +Cc: Phillip Wood, git
On Tue, Jun 2, 2026, at 08:45, Patrick Steinhardt wrote:
> On Tue, Jun 02, 2026 at 07:22:50AM +0900, Junio C Hamano wrote:
>> "Kristoffer Haugsbakk" <kristofferhaugsbakk@fastmail.com> writes:
>>>[snip]
>> Or just leave it without deprecation. It does not cost much to keep
>> "init-db", and because we expanded what "git database" means in
>> later versions of Git since its invention, the name still makes
>> sense. Thank Linus for not naming it "init-odb"---that might have
>> been a valid excuse to rename it because it does not cover the ref
>> database and config database and others.
>
> I wouldn't mind that outcome much, either. What triggered this series is
> that I'm always annoyed that it's "builtin/init-db.c" instead of
> "builtin/init.c", and the same for `cmd_init_db()`. But I intentionally
> constructed the series in a way that the first commit can be picked
> as-is, so that we can adjust our code to the modern world while not
> doing the deprecation dance.
>
> So I'd be equally happy if we just drop the second commit in this
> series.
Could it be worthwhile to mark it as soft deprecated? In the sense that
it is a legacy alias that is not planned for removal?
What I think was mistake in topic jc/you-still-use-whatchanged was that
git-whatchanged(1) was not explicitly marked as deprecated before that
series, and then it started failing without a new `--i-still-use-this`
flag. The doc before that said:
New users are encouraged to use git-log(1) instead. The
`whatchanged` command is essentially the same as git-log(1) but
defaults to showing the raw format diff output and skipping merges.
The command is primarily kept for historical reasons; fingers of
many people who learned Git long before `git log` was invented by
reading the Linux kernel mailing list are trained to type it.
Reading between the lines, this looks like a soft deprecation. Then
there were emails that said that there was no prior warning. And then
someone replied to that saying that it had really been deprecated for
over a decade because that was the intent.[1] But IMO just saying
something to the effect of soft deprecated would have been better
(before it got hard deprecated).
Trying to simulate amnesia, I think just the word “init-db” looks
slightly legacy, and the fact that the documentation just links to
git-init(1) solidifies that. On the other hand git-stage(1) was
introduced as a better name for “staging” files and that too just links
to git-add(1). So you have two commands which just link to other
commands, but one is definitely more deprecated than the other.
† 1: But “trained fingers” reading the man page every other year on the
off chance that there are new developments? That’s another
question.
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH 2/2] builtin/init-db: deprecate alias for git-init(1)
2026-06-02 6:45 ` Patrick Steinhardt
2026-06-02 7:54 ` Kristoffer Haugsbakk
@ 2026-06-02 8:27 ` Junio C Hamano
2026-06-02 12:34 ` Patrick Steinhardt
1 sibling, 1 reply; 20+ messages in thread
From: Junio C Hamano @ 2026-06-02 8:27 UTC (permalink / raw)
To: Patrick Steinhardt; +Cc: Kristoffer Haugsbakk, Phillip Wood, git
Patrick Steinhardt <ps@pks.im> writes:
> I wouldn't mind that outcome much, either. What triggered this series is
> that I'm always annoyed that it's "builtin/init-db.c" instead of
> "builtin/init.c", and the same for `cmd_init_db()`. But I intentionally
> constructed the series in a way that the first commit can be picked
> as-is, so that we can adjust our code to the modern world while not
> doing the deprecation dance.
>
> So I'd be equally happy if we just drop the second commit in this
> series.
I'd actually find myself annoyed by such a rename when looking for
builtin/init-db.c only to find it gone---much like how a previous
rename made ll-merge difficult to locate.
My point is that while static names may annoy some, renaming them
does not resolve the annoyance; it merely shifts it to someone else.
So, if the primary motivation is just the first patch, I would be
less inclined to support this series.
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH 2/2] builtin/init-db: deprecate alias for git-init(1)
2026-06-02 7:54 ` Kristoffer Haugsbakk
@ 2026-06-02 12:34 ` Patrick Steinhardt
0 siblings, 0 replies; 20+ messages in thread
From: Patrick Steinhardt @ 2026-06-02 12:34 UTC (permalink / raw)
To: Kristoffer Haugsbakk; +Cc: Junio C Hamano, Phillip Wood, git
On Tue, Jun 02, 2026 at 09:54:02AM +0200, Kristoffer Haugsbakk wrote:
> On Tue, Jun 2, 2026, at 08:45, Patrick Steinhardt wrote:
> > On Tue, Jun 02, 2026 at 07:22:50AM +0900, Junio C Hamano wrote:
> >> "Kristoffer Haugsbakk" <kristofferhaugsbakk@fastmail.com> writes:
> >>>[snip]
> >> Or just leave it without deprecation. It does not cost much to keep
> >> "init-db", and because we expanded what "git database" means in
> >> later versions of Git since its invention, the name still makes
> >> sense. Thank Linus for not naming it "init-odb"---that might have
> >> been a valid excuse to rename it because it does not cover the ref
> >> database and config database and others.
> >
> > I wouldn't mind that outcome much, either. What triggered this series is
> > that I'm always annoyed that it's "builtin/init-db.c" instead of
> > "builtin/init.c", and the same for `cmd_init_db()`. But I intentionally
> > constructed the series in a way that the first commit can be picked
> > as-is, so that we can adjust our code to the modern world while not
> > doing the deprecation dance.
> >
> > So I'd be equally happy if we just drop the second commit in this
> > series.
>
> Could it be worthwhile to mark it as soft deprecated? In the sense that
> it is a legacy alias that is not planned for removal?
The question is how such a soft deprecation would look like. Would it be
a warning, only, but other than that it behaves just as before? Should
we mark it as `DEPRECATED` in "git.c"? Both of those?
Patrick
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH 2/2] builtin/init-db: deprecate alias for git-init(1)
2026-06-02 8:27 ` Junio C Hamano
@ 2026-06-02 12:34 ` Patrick Steinhardt
2026-06-02 13:12 ` Phillip Wood
2026-06-02 15:24 ` SZEDER Gábor
0 siblings, 2 replies; 20+ messages in thread
From: Patrick Steinhardt @ 2026-06-02 12:34 UTC (permalink / raw)
To: Junio C Hamano; +Cc: Kristoffer Haugsbakk, Phillip Wood, git
On Tue, Jun 02, 2026 at 05:27:41PM +0900, Junio C Hamano wrote:
> Patrick Steinhardt <ps@pks.im> writes:
>
> > I wouldn't mind that outcome much, either. What triggered this series is
> > that I'm always annoyed that it's "builtin/init-db.c" instead of
> > "builtin/init.c", and the same for `cmd_init_db()`. But I intentionally
> > constructed the series in a way that the first commit can be picked
> > as-is, so that we can adjust our code to the modern world while not
> > doing the deprecation dance.
> >
> > So I'd be equally happy if we just drop the second commit in this
> > series.
>
> I'd actually find myself annoyed by such a rename when looking for
> builtin/init-db.c only to find it gone---much like how a previous
> rename made ll-merge difficult to locate.
>
> My point is that while static names may annoy some, renaming them
> does not resolve the annoyance; it merely shifts it to someone else.
>
> So, if the primary motivation is just the first patch, I would be
> less inclined to support this series.
That's entirely fair. My take on this is a bit different, as I think
it's beneficial to accept a short-term adjustment for core contributors
in favor of making stuff easier to discover/maintain going forward.
A new contributor would probably be quick to learn that every
`cmd_foo()` entry point is named exactly the same as the subcommand
name, but they will then eventually trip over the few exceptions like
`cmd_init_db()` where that assumption doesn't hold.
But I can see that this is not always clear-cut.
Patrick
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH 2/2] builtin/init-db: deprecate alias for git-init(1)
2026-06-01 14:20 ` Patrick Steinhardt
2026-06-01 21:23 ` Kristoffer Haugsbakk
2026-06-01 22:18 ` Junio C Hamano
@ 2026-06-02 13:09 ` Phillip Wood
2026-06-02 13:50 ` Junio C Hamano
2 siblings, 1 reply; 20+ messages in thread
From: Phillip Wood @ 2026-06-02 13:09 UTC (permalink / raw)
To: Patrick Steinhardt, phillip.wood; +Cc: Kristoffer Haugsbakk, git
Hi Patrick
On 01/06/2026 15:20, Patrick Steinhardt wrote:
> On Mon, Jun 01, 2026 at 02:48:05PM +0100, Phillip Wood wrote:
>>
>>
>> On 01/06/2026 13:10, Patrick Steinhardt wrote:
>>> On Mon, Jun 01, 2026 at 11:31:46AM +0200, Kristoffer Haugsbakk wrote:
>>>> On Mon, Jun 1, 2026, at 09:56, Patrick Steinhardt wrote:
>>>>> diff --git a/git.c b/git.c
>>>>> index a72394b599..6bf6a60360 100644
>>>>> --- a/git.c
>>>>> +++ b/git.c
>>>>> @@ -591,7 +591,9 @@ static struct cmd_struct commands[] = {
>>>>> { "hook", cmd_hook, RUN_SETUP_GENTLY },
>>>>> { "index-pack", cmd_index_pack, RUN_SETUP_GENTLY | NO_PARSEOPT },
>>>>> { "init", cmd_init },
>>>>> +#ifndef WITH_BREAKING_CHANGES
>>>>> { "init-db", cmd_init },
>>>>
>>>> This can be marked as deprecated.
>>>>
>>>> { "init-db", cmd_init, DEPRECATED },
>>>
>>> Ah, indeed! Added locally now, thanks.
>>
>> Deprecating this command seems very sensible to me. As well as marking it
>> deprecated, do we want to print a warning when it is run? I imagine anyone
>> who has this command in their muscle memory is unlikely to be reading the
>> man page on a regular basis so wont see the warning there.
>
> I was wondering whether we want to call `you_still_use_that()` here. I
> found it to be a bit heavy-handed as it's so trivial to replace with
> git-init(1), but on the other hand it's a trivial thing to do.
I agree you_still_use_that() is too heavy handed, I was thinking of
something like
warning(_("this command is deprecated, please use \"git init\""
"instead");
but that would mean we need to add a separate cmd_init_db() function
that prints the warning and then calls cmd_init().
Thanks
Phillip
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH 2/2] builtin/init-db: deprecate alias for git-init(1)
2026-06-02 12:34 ` Patrick Steinhardt
@ 2026-06-02 13:12 ` Phillip Wood
2026-06-02 14:58 ` Patrick Steinhardt
2026-06-02 15:24 ` SZEDER Gábor
1 sibling, 1 reply; 20+ messages in thread
From: Phillip Wood @ 2026-06-02 13:12 UTC (permalink / raw)
To: Patrick Steinhardt, Junio C Hamano
Cc: Kristoffer Haugsbakk, Phillip Wood, git
On 02/06/2026 13:34, Patrick Steinhardt wrote:
>
> That's entirely fair. My take on this is a bit different, as I think
> it's beneficial to accept a short-term adjustment for core contributors
> in favor of making stuff easier to discover/maintain going forward.
> > A new contributor would probably be quick to learn that every
> `cmd_foo()` entry point is named exactly the same as the subcommand
> name, but they will then eventually trip over the few exceptions like
> `cmd_init_db()` where that assumption doesn't hold.
Yes, those exceptions to the rule are annoying. Though they mostly exist
for a good reason (code sharing between builtin commands), it would be
nice to minimize them where we can.
Thanks
Phillip
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH 2/2] builtin/init-db: deprecate alias for git-init(1)
2026-06-02 13:09 ` Phillip Wood
@ 2026-06-02 13:50 ` Junio C Hamano
0 siblings, 0 replies; 20+ messages in thread
From: Junio C Hamano @ 2026-06-02 13:50 UTC (permalink / raw)
To: Phillip Wood; +Cc: Patrick Steinhardt, phillip.wood, Kristoffer Haugsbakk, git
Phillip Wood <phillip.wood123@gmail.com> writes:
>> I was wondering whether we want to call `you_still_use_that()` here. I
>> found it to be a bit heavy-handed as it's so trivial to replace with
>> git-init(1), but on the other hand it's a trivial thing to do.
>
> I agree you_still_use_that() is too heavy handed, I was thinking of
> something like
>
> warning(_("this command is deprecated, please use \"git init\""
> "instead");
>
> but that would mean we need to add a separate cmd_init_db() function
> that prints the warning and then calls cmd_init().
If we do plan to remove it in the future, then something like that
may be needed.
But it is not like having "init-db" hidden but accessible in the
command table is hurting anything. Other than that those who want
to create their own
[alias "init-db"] command = foo
that is, and I'd see it a bit crazy.
The "init-db" form is hidden from "git help" listing, and we know
whenever we suggest to run "git init" we do not say "git init-db",
so if we do not have to remove it in the future, I do not think we
even need such a warning().
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH 2/2] builtin/init-db: deprecate alias for git-init(1)
2026-06-02 13:12 ` Phillip Wood
@ 2026-06-02 14:58 ` Patrick Steinhardt
0 siblings, 0 replies; 20+ messages in thread
From: Patrick Steinhardt @ 2026-06-02 14:58 UTC (permalink / raw)
To: phillip.wood; +Cc: Junio C Hamano, Kristoffer Haugsbakk, git
On Tue, Jun 02, 2026 at 02:12:58PM +0100, Phillip Wood wrote:
> On 02/06/2026 13:34, Patrick Steinhardt wrote:
> >
> > That's entirely fair. My take on this is a bit different, as I think
> > it's beneficial to accept a short-term adjustment for core contributors
> > in favor of making stuff easier to discover/maintain going forward.
> > > A new contributor would probably be quick to learn that every
> > `cmd_foo()` entry point is named exactly the same as the subcommand
> > name, but they will then eventually trip over the few exceptions like
> > `cmd_init_db()` where that assumption doesn't hold.
>
> Yes, those exceptions to the rule are annoying. Though they mostly exist for
> a good reason (code sharing between builtin commands), it would be nice to
> minimize them where we can.
Either minimize, or if we don't want to (or can't) the next best thing
is to pick the variant that most folks will know about. Which would be
the case if we just picked the first patch in this series.
Patrick
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH 2/2] builtin/init-db: deprecate alias for git-init(1)
2026-06-02 12:34 ` Patrick Steinhardt
2026-06-02 13:12 ` Phillip Wood
@ 2026-06-02 15:24 ` SZEDER Gábor
1 sibling, 0 replies; 20+ messages in thread
From: SZEDER Gábor @ 2026-06-02 15:24 UTC (permalink / raw)
To: Patrick Steinhardt
Cc: Junio C Hamano, Kristoffer Haugsbakk, Phillip Wood, git
On Tue, Jun 02, 2026 at 02:34:45PM +0200, Patrick Steinhardt wrote:
> On Tue, Jun 02, 2026 at 05:27:41PM +0900, Junio C Hamano wrote:
> > Patrick Steinhardt <ps@pks.im> writes:
> >
> > > I wouldn't mind that outcome much, either. What triggered this series is
> > > that I'm always annoyed that it's "builtin/init-db.c" instead of
> > > "builtin/init.c", and the same for `cmd_init_db()`. But I intentionally
> > > constructed the series in a way that the first commit can be picked
> > > as-is, so that we can adjust our code to the modern world while not
> > > doing the deprecation dance.
> > >
> > > So I'd be equally happy if we just drop the second commit in this
> > > series.
> >
> > I'd actually find myself annoyed by such a rename when looking for
> > builtin/init-db.c only to find it gone---much like how a previous
> > rename made ll-merge difficult to locate.
> >
> > My point is that while static names may annoy some, renaming them
> > does not resolve the annoyance; it merely shifts it to someone else.
> >
> > So, if the primary motivation is just the first patch, I would be
> > less inclined to support this series.
>
> That's entirely fair. My take on this is a bit different, as I think
> it's beneficial to accept a short-term adjustment for core contributors
> in favor of making stuff easier to discover/maintain going forward.
That's not a short-term adjustment, but it will be an ongoing
annoyance, because 'git log builtin/init.c' will cut off at the rename
barrier.
^ permalink raw reply [flat|nested] 20+ messages in thread
end of thread, other threads:[~2026-06-02 15:24 UTC | newest]
Thread overview: 20+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-06-01 7:55 [PATCH 0/2] Deprecate git-init-db(1) alias Patrick Steinhardt
2026-06-01 7:55 ` [PATCH 1/2] builtin/init-db: rename to "builtin/init.c" Patrick Steinhardt
2026-06-01 7:56 ` [PATCH 2/2] builtin/init-db: deprecate alias for git-init(1) Patrick Steinhardt
2026-06-01 9:31 ` Kristoffer Haugsbakk
2026-06-01 12:10 ` Patrick Steinhardt
2026-06-01 13:48 ` Phillip Wood
2026-06-01 14:20 ` Patrick Steinhardt
2026-06-01 21:23 ` Kristoffer Haugsbakk
2026-06-01 22:22 ` Junio C Hamano
2026-06-02 6:45 ` Patrick Steinhardt
2026-06-02 7:54 ` Kristoffer Haugsbakk
2026-06-02 12:34 ` Patrick Steinhardt
2026-06-02 8:27 ` Junio C Hamano
2026-06-02 12:34 ` Patrick Steinhardt
2026-06-02 13:12 ` Phillip Wood
2026-06-02 14:58 ` Patrick Steinhardt
2026-06-02 15:24 ` SZEDER Gábor
2026-06-01 22:18 ` Junio C Hamano
2026-06-02 13:09 ` Phillip Wood
2026-06-02 13:50 ` Junio C Hamano
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox