From: Jeff King <peff@peff.net>
To: git@vger.kernel.org
Cc: Matthieu Moy <Matthieu.Moy@grenoble-inp.fr>
Subject: [PATCH/RFC] improve no-op push output
Date: Wed, 30 May 2012 08:08:04 -0400 [thread overview]
Message-ID: <20120530120804.GA3501@sigill.intra.peff.net> (raw)
I noticed the mention of the "Everything up-to-date" message in a nearby
thread. This patch doesn't help with the case there, but it made me
think about how vague that message is.
-- >8 --
When a push is a no-op because all refs are up-to-date, we print
"Everything up-to-date". That is reasonable when push.default is
"matching" (or when a wildcard refspec is given), because "Everything"
pretty obviously means "everything you asked git to push".
But when one of the single-ref push.default modes is used, the
"Everything" is slightly misleading; we only tried to push one thing,
and we should not give the user the impression that the remote is
completely in sync with what is in their local repo.
Instead, let's detect the case that we attempted to push a single ref,
and if so, just show the verbose status table (which includes the
up-to-date ref). We don't want to show it if we tried to push many refs,
because it could be quite long (e.g., in the case of "matching").
---
So before, running:
git init -q --bare parent &&
git clone -q parent child 2>/dev/null &&
cd child &&
echo one >one && git add one && git commit -q -m one &&
git branch other &&
git -c push.default=simple push
would just print:
Everything up-to-date
and now you get:
To /tmp/push-message/parent
= [up to date] master -> master
which is much more informative. And this could naturally extend to
printing the whole table when n < 5, or something similar. I don't think
it would help the case that David reported, though, since it sounds like
his problem was being on a detached HEAD without realizing it (and even
if we did print a status table, he would be similarly confused).
diff --git a/transport.c b/transport.c
index 1811b50..4dc09da 100644
--- a/transport.c
+++ b/transport.c
@@ -1033,6 +1033,15 @@ static void die_with_unpushed_submodules(struct string_list *needs_pushing)
die("Aborting.");
}
+static int num_uptodate(struct ref *ref)
+{
+ int n = 0;
+ for (; ref; ref = ref->next)
+ if (ref->status == REF_STATUS_UPTODATE)
+ n++;
+ return n;
+}
+
int transport_push(struct transport *transport,
int refspec_nr, const char **refspec, int flags,
int *nonfastforward)
@@ -1116,8 +1125,15 @@ int transport_push(struct transport *transport,
if (porcelain && !push_ret)
puts("Done");
- else if (!quiet && !ret && !transport_refs_pushed(remote_refs))
- fprintf(stderr, "Everything up-to-date\n");
+ else if (!quiet && !ret && !transport_refs_pushed(remote_refs)) {
+ if (verbose)
+ ; /* already showed the up-to-date entries */
+ else if (num_uptodate(remote_refs) == 1)
+ transport_print_push_status(transport->url,
+ remote_refs, 1, 0, nonfastforward);
+ else
+ fprintf(stderr, "Everything up-to-date\n");
+ }
return ret;
}
next reply other threads:[~2012-05-30 12:08 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-05-30 12:08 Jeff King [this message]
2012-05-30 17:52 ` [PATCH/RFC] improve no-op push output Junio C Hamano
2012-05-31 6:10 ` Matthieu Moy
2012-06-04 12:51 ` Jeff King
2012-06-04 16:35 ` Junio C Hamano
2012-06-05 10:10 ` Jeff King
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20120530120804.GA3501@sigill.intra.peff.net \
--to=peff@peff.net \
--cc=Matthieu.Moy@grenoble-inp.fr \
--cc=git@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).