]> git.ipfire.org Git - thirdparty/git.git/commitdiff
add: use advise_if_enabled for ADVICE_ADD_EMBEDDED_REPO
authorRubén Justo <rjusto@gmail.com>
Sat, 30 Mar 2024 14:09:29 +0000 (15:09 +0100)
committerJunio C Hamano <gitster@pobox.com>
Sun, 31 Mar 2024 00:55:01 +0000 (17:55 -0700)
By following a similar reasoning as in previous commits, there are no
reason why we should not use the advise_if_enabled() API to display the
ADVICE_ADD_EMBEDDED_REPO advice.

This advice was introduced in 532139940c (add: warn when adding an
embedded repository, 2017-06-14).  Some tests were included in the
commit, but none is testing this advice.  Which, note, we only want to
display once per run.

So, use the advise_if_enabled() machinery to show the
ADVICE_ADD_EMBEDDED_REPO advice and include a test to notice any
possible breakage.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
Signed-off-by: Rubén Justo <rjusto@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin/add.c
t/t3700-add.sh

index 0f981f5aa16761798088a0041137bdc9f04359c0..ec3bff1017041ea0e72b8bdf5d02a5368acc6941 100644 (file)
@@ -310,9 +310,9 @@ static void check_embedded_repo(const char *path)
        strbuf_strip_suffix(&name, "/");
 
        warning(_("adding embedded git repository: %s"), name.buf);
-       if (!adviced_on_embedded_repo &&
-           advice_enabled(ADVICE_ADD_EMBEDDED_REPO)) {
-               advise(embedded_advice, name.buf, name.buf);
+       if (!adviced_on_embedded_repo) {
+               advise_if_enabled(ADVICE_ADD_EMBEDDED_REPO,
+                                 embedded_advice, name.buf, name.buf);
                adviced_on_embedded_repo = 1;
        }
 
index 681081e0d5160158d1bccf4c74c2c9a8372f26f3..839c904745a2861487e04363060a951aaeb902c9 100755 (executable)
@@ -349,6 +349,40 @@ test_expect_success '"git add ." in empty repo' '
        )
 '
 
+test_expect_success '"git add" a embedded repository' '
+       rm -fr outer && git init outer &&
+       (
+               cd outer &&
+               for i in 1 2
+               do
+                       name=inner$i &&
+                       git init $name &&
+                       git -C $name commit --allow-empty -m $name ||
+                               return 1
+               done &&
+               git add . 2>actual &&
+               cat >expect <<-EOF &&
+               warning: adding embedded git repository: inner1
+               hint: You${SQ}ve added another git repository inside your current repository.
+               hint: Clones of the outer repository will not contain the contents of
+               hint: the embedded repository and will not know how to obtain it.
+               hint: If you meant to add a submodule, use:
+               hint:
+               hint:   git submodule add <url> inner1
+               hint:
+               hint: If you added this path by mistake, you can remove it from the
+               hint: index with:
+               hint:
+               hint:   git rm --cached inner1
+               hint:
+               hint: See "git help submodule" for more information.
+               hint: Disable this message with "git config advice.addEmbeddedRepo false"
+               warning: adding embedded git repository: inner2
+               EOF
+               test_cmp expect actual
+       )
+'
+
 test_expect_success 'error on a repository with no commits' '
        rm -fr empty &&
        git init empty &&