{"thread":{"id":"55921","subject":"[PATCH 0/2] extra: new concept of extra components","startedAt":"2021-06-14T04:35:02Z","lastAt":"2021-06-16T20:49:02Z","messageCount":9,"participants":["Felipe Contreras","Ævar Arnfjörð Bjarmason","Junio C Hamano"],"isPatch":true,"patchVersion":1,"patchTotal":2},"messages":[{"id":"427265","messageId":"20210614043450.1047571-1-felipe.contreras@gmail.com","threadId":"55921","inReplyTo":null,"subject":"[PATCH 0/2] extra: new concept of extra components","fromName":"Felipe Contreras","fromEmail":"felipe.contreras@gmail.com","sentAt":"2021-06-14T04:34:48Z","receivedAt":"2021-06-14T04:35:02Z","isPatch":true,"sender":{"key":"felipe.contreras@gmail.com","avatar":"https://avatars.githubusercontent.com/u/8358?v=4"},"body":"This patch series introduces the concept of extra components. These are\ncomponents which are not yet part of the core but are good enough for\ndistributions to ship, and in fact, they already do.\n\nThe measuring stick I'm using to gauge if a component in contrib belongs\nin extra is simple: are we already running tests for them with\n'make test'?\n\nWe might want to move more components from contrib to extra once their\ntests are being run reliably.\n\nAnd we might move some components from the core which aren't realy part\nof the core to extra, like gitk, git-gui, git-p4, and git-svn.\n\nFor now only contrib/completion and contrib/workdir are graduated to the\nnew area.\n\nFelipe Contreras (2):\n  completion: graduate out of contrib\n  git-new-workdir: graduate out of contrib\n\n Makefile                                      |  3 +++\n extra/Makefile                                | 20 +++++++++++++++++++\n .../completion/git-completion.bash            |  0\n .../completion/git-completion.zsh             |  0\n {contrib => extra}/completion/git-prompt.sh   |  0\n {contrib => extra}/workdir/.gitattributes     |  0\n {contrib => extra}/workdir/git-new-workdir    |  0\n t/t1021-rerere-in-workdir.sh                  |  6 +++---\n t/t3000-ls-files-others.sh                    |  2 +-\n t/t9902-completion.sh                         |  8 ++++----\n t/t9903-bash-prompt.sh                        |  2 +-\n 11 files changed, 32 insertions(+), 9 deletions(-)\n create mode 100644 extra/Makefile\n rename {contrib => extra}/completion/git-completion.bash (100%)\n rename {contrib => extra}/completion/git-completion.zsh (100%)\n rename {contrib => extra}/completion/git-prompt.sh (100%)\n rename {contrib => extra}/workdir/.gitattributes (100%)\n rename {contrib => extra}/workdir/git-new-workdir (100%)\n\n-- \n2.32.0\n\n"},{"id":"427266","messageId":"20210614043450.1047571-2-felipe.contreras@gmail.com","threadId":"55921","inReplyTo":"20210614043450.1047571-1-felipe.contreras@gmail.com","subject":"[PATCH 1/2] completion: graduate out of contrib","fromName":"Felipe Contreras","fromEmail":"felipe.contreras@gmail.com","sentAt":"2021-06-14T04:34:49Z","receivedAt":"2021-06-14T04:35:10Z","isPatch":true,"sender":{"key":"felipe.contreras@gmail.com","avatar":"https://avatars.githubusercontent.com/u/8358?v=4"},"body":"These have been stable and widely used for quite a long time, they even\nhave tests outside of the contrib area, and most distributions ship\nthem, so they can be considered part of the core already.\n\nWe should be consistent and either we move the tests to contrib, or we\nmove the completions out of contrib.\n\nLet's move them out of contrib and provide an installation target\ninstall-extra.\n\nBy default bash-completion installs the completions to\n$(pkgdatadir)/completions, which is\n$(prefix)/share/bash-completion/completions. And since most distributions do\nnot change this, it is obviously the right default that distributions\ncan override with bashcompdir.\n\nBy default zsh looks for completions in\n$(prefix)/share/zsh/site-functions.\n\nSigned-off-by: Felipe Contreras <felipe.contreras@gmail.com>\n---\n Makefile                                        |  3 +++\n extra/Makefile                                  | 17 +++++++++++++++++\n .../completion/git-completion.bash              |  0\n .../completion/git-completion.zsh               |  0\n {contrib => extra}/completion/git-prompt.sh     |  0\n t/t9902-completion.sh                           |  8 ++++----\n t/t9903-bash-prompt.sh                          |  2 +-\n 7 files changed, 25 insertions(+), 5 deletions(-)\n create mode 100644 extra/Makefile\n rename {contrib => extra}/completion/git-completion.bash (100%)\n rename {contrib => extra}/completion/git-completion.zsh (100%)\n rename {contrib => extra}/completion/git-prompt.sh (100%)\n\ndiff --git a/Makefile b/Makefile\nindex c3565fc0f8..5bb03808b3 100644\n--- a/Makefile\n+++ b/Makefile\n@@ -3105,6 +3105,9 @@ quick-install-man:\n quick-install-html:\n \t$(MAKE) -C Documentation quick-install-html\n \n+install-extra:\n+\t$(MAKE) -C extra install\n+\n \n \n ### Maintainer's dist rules\ndiff --git a/extra/Makefile b/extra/Makefile\nnew file mode 100644\nindex 0000000000..26d8be55b0\n--- /dev/null\n+++ b/extra/Makefile\n@@ -0,0 +1,17 @@\n+bashcompdir = $(sharedir)/bash-completion/completions\n+\n+DESTDIR_SQ = $(subst ','\\'',$(DESTDIR))\n+sharedir_SQ = $(subst ','\\'',$(sharedir))\n+bashcompdir_SQ = $(subst ','\\'',$(bashcompdir))\n+gitexec_instdir_SQ = $(subst ','\\'',$(gitexec_instdir))\n+\n+INSTALL ?= install\n+\n+all:\n+\n+install: install-completion\n+\n+install-completion:\n+\t$(INSTALL) -D -m 644 completion/git-completion.bash '$(DESTDIR_SQ)$(bashcompdir_SQ)'/git\n+\t$(INSTALL) -D -m 644 completion/git-prompt.sh '$(DESTDIR_SQ)$(sharedir_SQ)'/git-core/git-prompt.sh\n+\t$(INSTALL) -D -m 644 completion/git-completion.zsh '$(DESTDIR_SQ)$(sharedir_SQ)'/zsh/site-functions/_git\ndiff --git a/contrib/completion/git-completion.bash b/extra/completion/git-completion.bash\nsimilarity index 100%\nrename from contrib/completion/git-completion.bash\nrename to extra/completion/git-completion.bash\ndiff --git a/contrib/completion/git-completion.zsh b/extra/completion/git-completion.zsh\nsimilarity index 100%\nrename from contrib/completion/git-completion.zsh\nrename to extra/completion/git-completion.zsh\ndiff --git a/contrib/completion/git-prompt.sh b/extra/completion/git-prompt.sh\nsimilarity index 100%\nrename from contrib/completion/git-prompt.sh\nrename to extra/completion/git-prompt.sh\ndiff --git a/t/t9902-completion.sh b/t/t9902-completion.sh\nindex cb057ef161..32601b755d 100755\n--- a/t/t9902-completion.sh\n+++ b/t/t9902-completion.sh\n@@ -36,7 +36,7 @@ complete ()\n GIT_TESTING_ALL_COMMAND_LIST='add checkout check-attr rebase ls-files'\n GIT_TESTING_PORCELAIN_COMMAND_LIST='add checkout rebase'\n \n-. \"$GIT_BUILD_DIR/contrib/completion/git-completion.bash\"\n+. \"$GIT_BUILD_DIR/extra/completion/git-completion.bash\"\n \n # We don't need this function to actually join words or do anything special.\n # Also, it's cleaner to avoid touching bash's internal completion variables.\n@@ -2383,14 +2383,14 @@ test_expect_success 'git clone --config= - value' '\n test_expect_success 'sourcing the completion script clears cached commands' '\n \t__git_compute_all_commands &&\n \tverbose test -n \"$__git_all_commands\" &&\n-\t. \"$GIT_BUILD_DIR/contrib/completion/git-completion.bash\" &&\n+\t. \"$GIT_BUILD_DIR/extra/completion/git-completion.bash\" &&\n \tverbose test -z \"$__git_all_commands\"\n '\n \n test_expect_success 'sourcing the completion script clears cached merge strategies' '\n \t__git_compute_merge_strategies &&\n \tverbose test -n \"$__git_merge_strategies\" &&\n-\t. \"$GIT_BUILD_DIR/contrib/completion/git-completion.bash\" &&\n+\t. \"$GIT_BUILD_DIR/extra/completion/git-completion.bash\" &&\n \tverbose test -z \"$__git_merge_strategies\"\n '\n \n@@ -2399,7 +2399,7 @@ test_expect_success 'sourcing the completion script clears cached --options' '\n \tverbose test -n \"$__gitcomp_builtin_checkout\" &&\n \t__gitcomp_builtin notes_edit &&\n \tverbose test -n \"$__gitcomp_builtin_notes_edit\" &&\n-\t. \"$GIT_BUILD_DIR/contrib/completion/git-completion.bash\" &&\n+\t. \"$GIT_BUILD_DIR/extra/completion/git-completion.bash\" &&\n \tverbose test -z \"$__gitcomp_builtin_checkout\" &&\n \tverbose test -z \"$__gitcomp_builtin_notes_edit\"\n '\ndiff --git a/t/t9903-bash-prompt.sh b/t/t9903-bash-prompt.sh\nindex bbd513bab0..784e523fd4 100755\n--- a/t/t9903-bash-prompt.sh\n+++ b/t/t9903-bash-prompt.sh\n@@ -10,7 +10,7 @@ export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME\n \n . ./lib-bash.sh\n \n-. \"$GIT_BUILD_DIR/contrib/completion/git-prompt.sh\"\n+. \"$GIT_BUILD_DIR/extra/completion/git-prompt.sh\"\n \n actual=\"$TRASH_DIRECTORY/actual\"\n c_red='\\\\[\\\\e[31m\\\\]'\n-- \n2.32.0\n\n"},{"id":"427267","messageId":"20210614043450.1047571-3-felipe.contreras@gmail.com","threadId":"55921","inReplyTo":"20210614043450.1047571-1-felipe.contreras@gmail.com","subject":"[PATCH 2/2] git-new-workdir: graduate out of contrib","fromName":"Felipe Contreras","fromEmail":"felipe.contreras@gmail.com","sentAt":"2021-06-14T04:34:50Z","receivedAt":"2021-06-14T04:36:13Z","isPatch":true,"sender":{"key":"felipe.contreras@gmail.com","avatar":"https://avatars.githubusercontent.com/u/8358?v=4"},"body":"Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>\n---\n extra/Makefile                             | 5 ++++-\n {contrib => extra}/workdir/.gitattributes  | 0\n {contrib => extra}/workdir/git-new-workdir | 0\n t/t1021-rerere-in-workdir.sh               | 6 +++---\n t/t3000-ls-files-others.sh                 | 2 +-\n 5 files changed, 8 insertions(+), 5 deletions(-)\n rename {contrib => extra}/workdir/.gitattributes (100%)\n rename {contrib => extra}/workdir/git-new-workdir (100%)\n\ndiff --git a/extra/Makefile b/extra/Makefile\nindex 26d8be55b0..66a1cdcdf4 100644\n--- a/extra/Makefile\n+++ b/extra/Makefile\n@@ -9,9 +9,12 @@ INSTALL ?= install\n \n all:\n \n-install: install-completion\n+install: install-completion install-workdir\n \n install-completion:\n \t$(INSTALL) -D -m 644 completion/git-completion.bash '$(DESTDIR_SQ)$(bashcompdir_SQ)'/git\n \t$(INSTALL) -D -m 644 completion/git-prompt.sh '$(DESTDIR_SQ)$(sharedir_SQ)'/git-core/git-prompt.sh\n \t$(INSTALL) -D -m 644 completion/git-completion.zsh '$(DESTDIR_SQ)$(sharedir_SQ)'/zsh/site-functions/_git\n+\n+install-workdir:\n+\t$(INSTALL) -D workdir/git-new-workdir '$(DESTDIR_SQ)$(gitexec_instdir_SQ)'/git-new-workdir\ndiff --git a/contrib/workdir/.gitattributes b/extra/workdir/.gitattributes\nsimilarity index 100%\nrename from contrib/workdir/.gitattributes\nrename to extra/workdir/.gitattributes\ndiff --git a/contrib/workdir/git-new-workdir b/extra/workdir/git-new-workdir\nsimilarity index 100%\nrename from contrib/workdir/git-new-workdir\nrename to extra/workdir/git-new-workdir\ndiff --git a/t/t1021-rerere-in-workdir.sh b/t/t1021-rerere-in-workdir.sh\nindex 0b892894eb..035a92c0e7 100755\n--- a/t/t1021-rerere-in-workdir.sh\n+++ b/t/t1021-rerere-in-workdir.sh\n@@ -27,7 +27,7 @@ test_expect_success SYMLINKS setup '\n \n test_expect_success SYMLINKS 'rerere in workdir' '\n \trm -rf .git/rr-cache &&\n-\t\"$SHELL_PATH\" \"$TEST_DIRECTORY/../contrib/workdir/git-new-workdir\" . work &&\n+\t\"$SHELL_PATH\" \"$TEST_DIRECTORY/../extra/workdir/git-new-workdir\" . work &&\n \t(\n \t\tcd work &&\n \t\ttest_must_fail git merge side &&\n@@ -38,12 +38,12 @@ test_expect_success SYMLINKS 'rerere in workdir' '\n '\n \n # This fails because we don't resolve relative symlink in mkdir_in_gitdir()\n-# For the purpose of helping contrib/workdir/git-new-workdir users, we do not\n+# For the purpose of helping extra/workdir/git-new-workdir users, we do not\n # have to support relative symlinks, but it might be nicer to make this work\n # with a relative symbolic link someday.\n test_expect_failure SYMLINKS 'rerere in workdir (relative)' '\n \trm -rf .git/rr-cache &&\n-\t\"$SHELL_PATH\" \"$TEST_DIRECTORY/../contrib/workdir/git-new-workdir\" . krow &&\n+\t\"$SHELL_PATH\" \"$TEST_DIRECTORY/../extra/workdir/git-new-workdir\" . krow &&\n \t(\n \t\tcd krow &&\n \t\trm -f .git/rr-cache &&\ndiff --git a/t/t3000-ls-files-others.sh b/t/t3000-ls-files-others.sh\nindex 740ce56eab..86240a1b98 100755\n--- a/t/t3000-ls-files-others.sh\n+++ b/t/t3000-ls-files-others.sh\n@@ -84,7 +84,7 @@ test_expect_success SYMLINKS 'ls-files --others with symlinked submodule' '\n \t) &&\n \t(\n \t\tcd super &&\n-\t\t\"$SHELL_PATH\" \"$TEST_DIRECTORY/../contrib/workdir/git-new-workdir\" ../sub sub &&\n+\t\t\"$SHELL_PATH\" \"$TEST_DIRECTORY/../extra/workdir/git-new-workdir\" ../sub sub &&\n \t\tgit ls-files --others --exclude-standard >../actual\n \t) &&\n \techo sub/ >expect &&\n-- \n2.32.0\n\n"},{"id":"427350","messageId":"87wnqwzg51.fsf@evledraar.gmail.com","threadId":"55921","inReplyTo":"20210614043450.1047571-2-felipe.contreras@gmail.com","subject":"Re: [PATCH 1/2] completion: graduate out of contrib","fromName":"Ævar Arnfjörð Bjarmason","fromEmail":"avarab@gmail.com","sentAt":"2021-06-14T14:12:53Z","receivedAt":"2021-06-14T14:16:50Z","isPatch":true,"sender":{"key":"avarab@gmail.com","avatar":"https://avatars.githubusercontent.com/u/45301?v=4"},"body":"\nOn Sun, Jun 13 2021, Felipe Contreras wrote:\n\n> These have been stable and widely used for quite a long time, they even\n> have tests outside of the contrib area, and most distributions ship\n> them, so they can be considered part of the core already.\n>\n> We should be consistent and either we move the tests to contrib, or we\n> move the completions out of contrib.\n>\n> Let's move them out of contrib and provide an installation target\n> install-extra.\n>\n> By default bash-completion installs the completions to\n> $(pkgdatadir)/completions, which is\n> $(prefix)/share/bash-completion/completions. And since most distributions do\n> not change this, it is obviously the right default that distributions\n> can override with bashcompdir.\n>\n> By default zsh looks for completions in\n> $(prefix)/share/zsh/site-functions.\n>\n> Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>\n> ---\n>  Makefile                                        |  3 +++\n>  extra/Makefile                                  | 17 +++++++++++++++++\n\nPlease let's not continue following the IMO anti-pattern of having these\nsub-Makefiles. Let's just add the target to the top-level Makefile.\n\nSee e.g. the recent discussion starting at\nhttps://lore.kernel.org/git/87pmz4ig4o.fsf@evledraar.gmail.com/ I also\nhave some WIP work to un-split most of this to e.g. make \"install\"\nfollow the normal quiet rules, if we're invoking those in a sub-Makefile\nthat becomes much more difficult....\n\n>  .../completion/git-completion.bash              |  0\n>  .../completion/git-completion.zsh               |  0\n>  {contrib => extra}/completion/git-prompt.sh     |  0\n>  t/t9902-completion.sh                           |  8 ++++----\n>  t/t9903-bash-prompt.sh                          |  2 +-\n>  7 files changed, 25 insertions(+), 5 deletions(-)\n>  create mode 100644 extra/Makefile\n>  rename {contrib => extra}/completion/git-completion.bash (100%)\n>  rename {contrib => extra}/completion/git-completion.zsh (100%)\n>  rename {contrib => extra}/completion/git-prompt.sh (100%)\n>\n> diff --git a/Makefile b/Makefile\n> index c3565fc0f8..5bb03808b3 100644\n> --- a/Makefile\n> +++ b/Makefile\n> @@ -3105,6 +3105,9 @@ quick-install-man:\n>  quick-install-html:\n>  \t$(MAKE) -C Documentation quick-install-html\n>  \n> +install-extra:\n> +\t$(MAKE) -C extra install\n> +\n>  \n>  \n>  ### Maintainer's dist rules\n> diff --git a/extra/Makefile b/extra/Makefile\n> new file mode 100644\n> index 0000000000..26d8be55b0\n> --- /dev/null\n> +++ b/extra/Makefile\n> @@ -0,0 +1,17 @@\n> +bashcompdir = $(sharedir)/bash-completion/completions\n> +\n> +DESTDIR_SQ = $(subst ','\\'',$(DESTDIR))\n> +sharedir_SQ = $(subst ','\\'',$(sharedir))\n> +bashcompdir_SQ = $(subst ','\\'',$(bashcompdir))\n> +gitexec_instdir_SQ = $(subst ','\\'',$(gitexec_instdir))\n> +\n> +INSTALL ?= install\n\n...and a large part of the Makefile is just things like this that we'd\nmostly/entirely get for free.\n\n> +\n> +all:\n> +\n> +install: install-completion\n> +\n> +install-completion:\n> +\t$(INSTALL) -D -m 644 completion/git-completion.bash '$(DESTDIR_SQ)$(bashcompdir_SQ)'/git\n> +\t$(INSTALL) -D -m 644 completion/git-prompt.sh '$(DESTDIR_SQ)$(sharedir_SQ)'/git-core/git-prompt.sh\n> +\t$(INSTALL) -D -m 644 completion/git-completion.zsh '$(DESTDIR_SQ)$(sharedir_SQ)'/zsh/site-functions/_git\n> diff --git a/contrib/completion/git-completion.bash b/extra/completion/git-completion.bash\n> similarity index 100%\n> rename from contrib/completion/git-completion.bash\n> rename to extra/completion/git-completion.bash\n> diff --git a/contrib/completion/git-completion.zsh b/extra/completion/git-completion.zsh\n> similarity index 100%\n> rename from contrib/completion/git-completion.zsh\n> rename to extra/completion/git-completion.zsh\n> diff --git a/contrib/completion/git-prompt.sh b/extra/completion/git-prompt.sh\n> similarity index 100%\n> rename from contrib/completion/git-prompt.sh\n> rename to extra/completion/git-prompt.sh\n> diff --git a/t/t9902-completion.sh b/t/t9902-completion.sh\n> index cb057ef161..32601b755d 100755\n> --- a/t/t9902-completion.sh\n> +++ b/t/t9902-completion.sh\n> @@ -36,7 +36,7 @@ complete ()\n>  GIT_TESTING_ALL_COMMAND_LIST='add checkout check-attr rebase ls-files'\n>  GIT_TESTING_PORCELAIN_COMMAND_LIST='add checkout rebase'\n>  \n> -. \"$GIT_BUILD_DIR/contrib/completion/git-completion.bash\"\n> +. \"$GIT_BUILD_DIR/extra/completion/git-completion.bash\"\n>  \n>  # We don't need this function to actually join words or do anything special.\n>  # Also, it's cleaner to avoid touching bash's internal completion variables.\n> @@ -2383,14 +2383,14 @@ test_expect_success 'git clone --config= - value' '\n>  test_expect_success 'sourcing the completion script clears cached commands' '\n>  \t__git_compute_all_commands &&\n>  \tverbose test -n \"$__git_all_commands\" &&\n> -\t. \"$GIT_BUILD_DIR/contrib/completion/git-completion.bash\" &&\n> +\t. \"$GIT_BUILD_DIR/extra/completion/git-completion.bash\" &&\n>  \tverbose test -z \"$__git_all_commands\"\n>  '\n>  \n>  test_expect_success 'sourcing the completion script clears cached merge strategies' '\n>  \t__git_compute_merge_strategies &&\n>  \tverbose test -n \"$__git_merge_strategies\" &&\n> -\t. \"$GIT_BUILD_DIR/contrib/completion/git-completion.bash\" &&\n> +\t. \"$GIT_BUILD_DIR/extra/completion/git-completion.bash\" &&\n>  \tverbose test -z \"$__git_merge_strategies\"\n>  '\n>  \n> @@ -2399,7 +2399,7 @@ test_expect_success 'sourcing the completion script clears cached --options' '\n>  \tverbose test -n \"$__gitcomp_builtin_checkout\" &&\n>  \t__gitcomp_builtin notes_edit &&\n>  \tverbose test -n \"$__gitcomp_builtin_notes_edit\" &&\n> -\t. \"$GIT_BUILD_DIR/contrib/completion/git-completion.bash\" &&\n> +\t. \"$GIT_BUILD_DIR/extra/completion/git-completion.bash\" &&\n>  \tverbose test -z \"$__gitcomp_builtin_checkout\" &&\n>  \tverbose test -z \"$__gitcomp_builtin_notes_edit\"\n>  '\n> diff --git a/t/t9903-bash-prompt.sh b/t/t9903-bash-prompt.sh\n> index bbd513bab0..784e523fd4 100755\n> --- a/t/t9903-bash-prompt.sh\n> +++ b/t/t9903-bash-prompt.sh\n> @@ -10,7 +10,7 @@ export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME\n>  \n>  . ./lib-bash.sh\n>  \n> -. \"$GIT_BUILD_DIR/contrib/completion/git-prompt.sh\"\n> +. \"$GIT_BUILD_DIR/extra/completion/git-prompt.sh\"\n>  \n>  actual=\"$TRASH_DIRECTORY/actual\"\n>  c_red='\\\\[\\\\e[31m\\\\]'\n\n"},{"id":"427351","messageId":"87tum0zfub.fsf@evledraar.gmail.com","threadId":"55921","inReplyTo":"20210614043450.1047571-1-felipe.contreras@gmail.com","subject":"Re: [PATCH 0/2] extra: new concept of extra components","fromName":"Ævar Arnfjörð Bjarmason","fromEmail":"avarab@gmail.com","sentAt":"2021-06-14T14:18:30Z","receivedAt":"2021-06-14T14:24:04Z","isPatch":true,"sender":{"key":"avarab@gmail.com","avatar":"https://avatars.githubusercontent.com/u/45301?v=4"},"body":"\nOn Sun, Jun 13 2021, Felipe Contreras wrote:\n\n> This patch series introduces the concept of extra components. These are\n> components which are not yet part of the core but are good enough for\n> distributions to ship, and in fact, they already do.\n\nI like this direction.\n\n> The measuring stick I'm using to gauge if a component in contrib belongs\n> in extra is simple: are we already running tests for them with\n> 'make test'?\n\nI have a CI failure in one series of mine that seems to be a lack of\nupdating to CMake in contrib/buildsystems, perhaps we should be adding\nthat to extra/ too, i.e. extending this to the \"make test\" run by CI?\n\nNot something that should hinder or necessarily be included in this\nseries, just a note about a related component.\n\n> And we might move some components from the core which aren't realy part\n> of the core to extra, like gitk, git-gui, git-p4, and git-svn.\n\nI'd also like to see us run the tests for the likes of mw-to-git,\ndiff-highlight and subtree by default, at least under CI or some\n\"extended tests\" mode, even though we may not install them by default.\n"},{"id":"427546","messageId":"xmqqim2evdyx.fsf@gitster.g","threadId":"55921","inReplyTo":"87tum0zfub.fsf@evledraar.gmail.com","subject":"Re: [PATCH 0/2] extra: new concept of extra components","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2021-06-16T00:40:38Z","receivedAt":"2021-06-16T00:40:42Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Ævar Arnfjörð Bjarmason <avarab@gmail.com> writes:\n\n> On Sun, Jun 13 2021, Felipe Contreras wrote:\n>\n>> This patch series introduces the concept of extra components. These are\n>> components which are not yet part of the core but are good enough for\n>> distributions to ship, and in fact, they already do.\n>\n> I like this direction.\n\nI do not mind change, but it is fuzzy to me what direction you are\nin favor of.  Is the gist of the idea to split what is in contrib/\ninto two bins, ones that are closer to \"official\" and others?  If\nso, I see sort-of merit in such a distinction, but whom is this\ntrying to help?\n\nDistros would rather see what they use unmoved, and would not care\nwhere those that they do not use move to, I would imagine.  So I\nsuspect that it would help them more if we kept the ones that are\ncloser to \"official\" in contrib/ and moved the rest to a new\nhierarchy?\n\n> I have a CI failure in one series of mine that seems to be a lack of\n> updating to CMake in contrib/buildsystems, perhaps we should be adding\n> that to extra/ too, i.e. extending this to the \"make test\" run by CI?\n>\n> Not something that should hinder or necessarily be included in this\n> series, just a note about a related component.\n\nI think that is more or less independent.  contrib/buildsystems (or\nanything else that currently do not have test coverage) can be\ntaught to CI before or after sifting what is contrib/ into two\nclasses.  If the usable and testable ones stay in contrib/ instead\nof getting moved, such a task can go in parallel.  We declare the\nsplit, interested parties work on adding the part they are interested\nin to the test framework, and the parts that are not updated to be\ntested will be dropped to a \"less than contrib\" status.\n\nSo, in short, I like the general idea of sifting the contrib/\nmaterial into two bins, but I may not agree with (1) the execution\nof these patches, or (2) the higher level goal of what such a split\nwants to achieve (i.e. \"whom are we helping?\" question).\n\nThanks.\n\n"},{"id":"427630","messageId":"60ca5a62b2193_602720899@natae.notmuch","threadId":"55921","inReplyTo":"87wnqwzg51.fsf@evledraar.gmail.com","subject":"Re: [PATCH 1/2] completion: graduate out of contrib","fromName":"Felipe Contreras","fromEmail":"felipe.contreras@gmail.com","sentAt":"2021-06-16T20:09:06Z","receivedAt":"2021-06-16T20:09:17Z","isPatch":true,"sender":{"key":"felipe.contreras@gmail.com","avatar":"https://avatars.githubusercontent.com/u/8358?v=4"},"body":"Ævar Arnfjörð Bjarmason wrote:\n> \n> On Sun, Jun 13 2021, Felipe Contreras wrote:\n> \n> > These have been stable and widely used for quite a long time, they even\n> > have tests outside of the contrib area, and most distributions ship\n> > them, so they can be considered part of the core already.\n> >\n> > We should be consistent and either we move the tests to contrib, or we\n> > move the completions out of contrib.\n> >\n> > Let's move them out of contrib and provide an installation target\n> > install-extra.\n> >\n> > By default bash-completion installs the completions to\n> > $(pkgdatadir)/completions, which is\n> > $(prefix)/share/bash-completion/completions. And since most distributions do\n> > not change this, it is obviously the right default that distributions\n> > can override with bashcompdir.\n> >\n> > By default zsh looks for completions in\n> > $(prefix)/share/zsh/site-functions.\n> >\n> > Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>\n> > ---\n> >  Makefile                                        |  3 +++\n> >  extra/Makefile                                  | 17 +++++++++++++++++\n> \n> Please let's not continue following the IMO anti-pattern of having these\n> sub-Makefiles. Let's just add the target to the top-level Makefile.\n\nAll right. Fine by me.\n\n-- \nFelipe Contreras"},{"id":"427631","messageId":"60ca5ef868f40_60272086d@natae.notmuch","threadId":"55921","inReplyTo":"87tum0zfub.fsf@evledraar.gmail.com","subject":"Re: [PATCH 0/2] extra: new concept of extra components","fromName":"Felipe Contreras","fromEmail":"felipe.contreras@gmail.com","sentAt":"2021-06-16T20:28:40Z","receivedAt":"2021-06-16T20:28:44Z","isPatch":true,"sender":{"key":"felipe.contreras@gmail.com","avatar":"https://avatars.githubusercontent.com/u/8358?v=4"},"body":"Ævar Arnfjörð Bjarmason wrote:\n> \n> On Sun, Jun 13 2021, Felipe Contreras wrote:\n> \n> > This patch series introduces the concept of extra components. These are\n> > components which are not yet part of the core but are good enough for\n> > distributions to ship, and in fact, they already do.\n> \n> I like this direction.\n> \n> > The measuring stick I'm using to gauge if a component in contrib belongs\n> > in extra is simple: are we already running tests for them with\n> > 'make test'?\n> \n> I have a CI failure in one series of mine that seems to be a lack of\n> updating to CMake in contrib/buildsystems, perhaps we should be adding\n> that to extra/ too, i.e. extending this to the \"make test\" run by CI?\n> \n> Not something that should hinder or necessarily be included in this\n> series, just a note about a related component.\n\nYeah, but then it would be less clear which components belong in extra.\n\nI suppose if `make test` also runs the test-extra target, then the\nmy initial definition of extra is still maintained.\n\n> > And we might move some components from the core which aren't realy part\n> > of the core to extra, like gitk, git-gui, git-p4, and git-svn.\n> \n> I'd also like to see us run the tests for the likes of mw-to-git,\n> diff-highlight and subtree by default, at least under CI or some\n> \"extended tests\" mode, even though we may not install them by default.\n\nextra components are not installed by default, you would have to do\ninstall-extra.\n\nDo you think mw-to-git and similar should be installed with\ninstall-extra?\n\n-- \nFelipe Contreras"},{"id":"427632","messageId":"60ca63ba201b6_602720884@natae.notmuch","threadId":"55921","inReplyTo":"xmqqim2evdyx.fsf@gitster.g","subject":"Re: [PATCH 0/2] extra: new concept of extra components","fromName":"Felipe Contreras","fromEmail":"felipe.contreras@gmail.com","sentAt":"2021-06-16T20:48:58Z","receivedAt":"2021-06-16T20:49:02Z","isPatch":true,"sender":{"key":"felipe.contreras@gmail.com","avatar":"https://avatars.githubusercontent.com/u/8358?v=4"},"body":"Junio C Hamano wrote:\n> Ævar Arnfjörð Bjarmason <avarab@gmail.com> writes:\n> \n> > On Sun, Jun 13 2021, Felipe Contreras wrote:\n> >\n> >> This patch series introduces the concept of extra components. These are\n> >> components which are not yet part of the core but are good enough for\n> >> distributions to ship, and in fact, they already do.\n> >\n> > I like this direction.\n> \n> I do not mind change, but it is fuzzy to me what direction you are\n> in favor of.  Is the gist of the idea to split what is in contrib/\n> into two bins, ones that are closer to \"official\" and others?  If\n> so, I see sort-of merit in such a distinction, but whom is this\n> trying to help?\n\nEveryone.\n\n  1. People who download the source code and want to install git in a\n     similar way to how distributions do it\n  2. Developers who have no idea what's good in contrib/\n  3. Distribution packagers who want to know what's good enough to be\n     distributed, and don't want to manually copy files (i.e. all\n     distribution packagers)\n\n> Distros would rather see what they use unmoved, and would not care\n> where those that they do not use move to, I would imagine.\n\nThat is not true.\n\nDistributions do not want to decide where to place\n`contrib/completion/git-prompt.sh`, they want the git project to decide.\n\nObviously it has to be under '/usr/share/', preferably\n'/usr/share/$project' (i.e. not /usr/share/git-core), but other than\nthat they do not care.\n\n> So I suspect that it would help them more if we kept the ones that are\n> closer to \"official\" in contrib/ and moved the rest to a new\n> hierarchy?\n\nSure, that would help, but they still would want an install-contrib target.\n\n\nA distribution packager that is maintaining 20 packages (or more)\ndoesn't want to keep track where every single file of her every\nsingle package goes. She just wants to do `make install` and be done\nwith it. Any package that requires to manually copy some files to the\ndestination is simply a hassle to maintain.\n\n-- \nFelipe Contreras"}]}