Skip to content

Commit

Permalink
Merge branch 'rj/use-adv-if-enabled'
Browse files Browse the repository at this point in the history
Use advice_if_enabled() API to rewrite a simple pattern to
call advise() after checking advice_enabled().

* rj/use-adv-if-enabled:
  add: use advise_if_enabled for ADVICE_ADD_EMBEDDED_REPO
  add: use advise_if_enabled for ADVICE_ADD_EMPTY_PATHSPEC
  add: use advise_if_enabled for ADVICE_ADD_IGNORED_FILE
  • Loading branch information
gitster committed Apr 9, 2024
2 parents eacfd58 + 6412d01 commit 8f31543
Show file tree
Hide file tree
Showing 3 changed files with 53 additions and 15 deletions.
18 changes: 7 additions & 11 deletions builtin/add.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
}

Expand All @@ -328,10 +328,8 @@ static int add_files(struct dir_struct *dir, int flags)
fprintf(stderr, _(ignore_error));
for (i = 0; i < dir->ignored_nr; i++)
fprintf(stderr, "%s\n", dir->ignored[i]->name);
if (advice_enabled(ADVICE_ADD_IGNORED_FILE))
advise(_("Use -f if you really want to add them.\n"
"Turn this message off by running\n"
"\"git config advice.addIgnoredFile false\""));
advise_if_enabled(ADVICE_ADD_IGNORED_FILE,
_("Use -f if you really want to add them."));
exit_status = 1;
}

Expand Down Expand Up @@ -440,10 +438,8 @@ int cmd_add(int argc, const char **argv, const char *prefix)

if (require_pathspec && pathspec.nr == 0) {
fprintf(stderr, _("Nothing specified, nothing added.\n"));
if (advice_enabled(ADVICE_ADD_EMPTY_PATHSPEC))
advise( _("Maybe you wanted to say 'git add .'?\n"
"Turn this message off by running\n"
"\"git config advice.addEmptyPathspec false\""));
advise_if_enabled(ADVICE_ADD_EMPTY_PATHSPEC,
_("Maybe you wanted to say 'git add .'?"));
return 0;
}

Expand Down
47 changes: 45 additions & 2 deletions t/t3700-add.sh
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,16 @@ test_expect_success 'Test of git add' '
touch foo && git add foo
'

test_expect_success 'Test with no pathspecs' '
cat >expect <<-EOF &&
Nothing specified, nothing added.
hint: Maybe you wanted to say ${SQ}git add .${SQ}?
hint: Disable this message with "git config advice.addEmptyPathspec false"
EOF
git add 2>actual &&
test_cmp expect actual
'

test_expect_success 'Post-check that foo is in the index' '
git ls-files foo | grep foo
'
Expand Down Expand Up @@ -339,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 &&
Expand Down Expand Up @@ -370,8 +414,7 @@ cat >expect.err <<\EOF
The following paths are ignored by one of your .gitignore files:
ignored-file
hint: Use -f if you really want to add them.
hint: Turn this message off by running
hint: "git config advice.addIgnoredFile false"
hint: Disable this message with "git config advice.addIgnoredFile false"
EOF
cat >expect.out <<\EOF
add 'track-this'
Expand Down
3 changes: 1 addition & 2 deletions t/t7400-submodule-basic.sh
Original file line number Diff line number Diff line change
Expand Up @@ -212,8 +212,7 @@ test_expect_success 'submodule add to .gitignored path fails' '
The following paths are ignored by one of your .gitignore files:
submod
hint: Use -f if you really want to add them.
hint: Turn this message off by running
hint: "git config advice.addIgnoredFile false"
hint: Disable this message with "git config advice.addIgnoredFile false"
EOF
# Does not use test_commit due to the ignore
echo "*" > .gitignore &&
Expand Down

0 comments on commit 8f31543

Please sign in to comment.