]> git.ipfire.org Git - thirdparty/git.git/commitdiff
wt-status: don't show divergence advice when committing
authorAlex Henrie <alexhenrie24@gmail.com>
Thu, 13 Jul 2023 04:41:13 +0000 (22:41 -0600)
committerJunio C Hamano <gitster@pobox.com>
Thu, 13 Jul 2023 16:14:58 +0000 (09:14 -0700)
When the user is in the middle of making a commit, they are not yet at
the point where they are ready to think about integrating their local
branch with the corresponding remote branch or force-pushing over the
remote branch. Don't include advice on how to deal with divergent
branches in the commit template, to avoid giving the impression that the
divergence needs to be dealt with immediately. Similar advice will be
printed when it is most relevant, that is, if the user does try to push
without first reconciling the two branches.

Signed-off-by: Alex Henrie <alexhenrie24@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin/checkout.c
remote.c
remote.h
t/t7508-status.sh
wt-status.c

index fd6ee8c2723b05be9d4a390a08f6c6bed84a5291..c278c2169d152c3d4c2f895b164704f584a84865 100644 (file)
@@ -916,7 +916,7 @@ static void report_tracking(struct branch_info *new_branch_info)
        struct strbuf sb = STRBUF_INIT;
        struct branch *branch = branch_get(new_branch_info->name);
 
-       if (!format_tracking_info(branch, &sb, AHEAD_BEHIND_FULL))
+       if (!format_tracking_info(branch, &sb, AHEAD_BEHIND_FULL, 1))
                return;
        fputs(sb.buf, stdout);
        strbuf_release(&sb);
index a81f2e2f17343ee006abe85e0344dac0ee2b1948..d79aae0d769d6130915a7590abd02e11476fa136 100644 (file)
--- a/remote.c
+++ b/remote.c
@@ -2258,7 +2258,8 @@ int stat_tracking_info(struct branch *branch, int *num_ours, int *num_theirs,
  * Return true when there is anything to report, otherwise false.
  */
 int format_tracking_info(struct branch *branch, struct strbuf *sb,
-                        enum ahead_behind_flags abf)
+                        enum ahead_behind_flags abf,
+                        int show_divergence_advice)
 {
        int ours, theirs, sti;
        const char *full_base;
@@ -2321,7 +2322,8 @@ int format_tracking_info(struct branch *branch, struct strbuf *sb,
                               "respectively.\n",
                           ours + theirs),
                        base, ours, theirs);
-               if (advice_enabled(ADVICE_STATUS_HINTS))
+               if (show_divergence_advice &&
+                   advice_enabled(ADVICE_STATUS_HINTS))
                        strbuf_addstr(sb,
                                _("  (use \"git pull\" to merge the remote branch into yours)\n"));
        }
index 929c7c676d35fdf553b89ff4f43c713585e16dcc..cdc8b1db42c4a836804009a036628aaa94d94b5a 100644 (file)
--- a/remote.h
+++ b/remote.h
@@ -380,7 +380,8 @@ int stat_tracking_info(struct branch *branch, int *num_ours, int *num_theirs,
                       const char **upstream_name, int for_push,
                       enum ahead_behind_flags abf);
 int format_tracking_info(struct branch *branch, struct strbuf *sb,
-                        enum ahead_behind_flags abf);
+                        enum ahead_behind_flags abf,
+                        int show_divergence_advice);
 
 struct ref *get_local_heads(void);
 /*
index 36567708f5fdd14af2b28a678bdaa0df7ea19033..845af287d7c6a72d5f2999d51142aa1800dc16e3 100755 (executable)
@@ -847,7 +847,6 @@ test_expect_success 'dry-run of partial commit excluding new file in index' '
 On branch main
 Your branch and '\''upstream'\'' have diverged,
 and have 1 and 2 different commits each, respectively.
-  (use "git pull" to merge the remote branch into yours)
 
 Changes to be committed:
   (use "git restore --staged <file>..." to unstage)
@@ -1013,7 +1012,7 @@ test_expect_success 'status -s submodule summary' '
 '
 
 test_expect_success 'status submodule summary (clean submodule): commit' '
-       cat >expect <<EOF &&
+       cat >expect-status <<EOF &&
 On branch main
 Your branch and '\''upstream'\'' have diverged,
 and have 2 and 2 different commits each, respectively.
@@ -1033,12 +1032,13 @@ Untracked files:
 
 no changes added to commit (use "git add" and/or "git commit -a")
 EOF
+       sed "/git pull/d" expect-status > expect-commit &&
        git commit -m "commit submodule" &&
        git config status.submodulesummary 10 &&
        test_must_fail git commit --dry-run >output &&
-       test_cmp expect output &&
+       test_cmp expect-commit output &&
        git status >output &&
-       test_cmp expect output
+       test_cmp expect-status output
 '
 
 cat >expect <<EOF
@@ -1065,7 +1065,6 @@ test_expect_success 'commit --dry-run submodule summary (--amend)' '
 On branch main
 Your branch and '\''upstream'\'' have diverged,
 and have 2 and 2 different commits each, respectively.
-  (use "git pull" to merge the remote branch into yours)
 
 Changes to be committed:
   (use "git restore --source=HEAD^1 --staged <file>..." to unstage)
@@ -1558,7 +1557,6 @@ test_expect_success 'git commit --dry-run will show a staged but ignored submodu
 On branch main
 Your branch and '\''upstream'\'' have diverged,
 and have 2 and 2 different commits each, respectively.
-  (use "git pull" to merge the remote branch into yours)
 
 Changes to be committed:
   (use "git restore --staged <file>..." to unstage)
index bcd0ef8044172ab30ea09eef66a710256529f37c..e3e3732ea265403c28933e2bab3fedc34d189f3a 100644 (file)
@@ -1186,7 +1186,8 @@ static void wt_longstatus_print_tracking(struct wt_status *s)
 
        t_begin = getnanotime();
 
-       if (!format_tracking_info(branch, &sb, s->ahead_behind_flags))
+       if (!format_tracking_info(branch, &sb, s->ahead_behind_flags,
+                                 !s->commit_template))
                return;
 
        if (advice_enabled(ADVICE_STATUS_AHEAD_BEHIND_WARNING) &&