From: Thomas Rast <trast@student.ethz.ch>
To: Eugene Sajine <euguess@gmail.com>
Cc: <git@vger.kernel.org>
Subject: [PATCH] describe: when failing, tell the user about options that work
Date: Thu, 22 Oct 2009 17:44:39 +0200 [thread overview]
Message-ID: <f1e86b9095d63c6541d0a8df6a1cf8eadfe247bb.1256226187.git.trast@student.ethz.ch> (raw)
In-Reply-To: <76c5b8580910220810n389d065di349339ab38909ef7@mail.gmail.com>
Users seem to call git-describe without reading the manpage, and then
wonder why it doesn't work with unannotated tags by default.
Make a minimal effort towards seeing if there would have been
unannotated tags, and tell the user. Specifically, we say that --tags
could work if we found any unannotated tags. If not, we say that
--always would have given results.
Signed-off-by: Thomas Rast <trast@student.ethz.ch>
---
Eugene Sajine wrote:
> [git-describe fails if you don't have annotated tags]
>
> Thanks! It is working ok.
> Although it is probably not the best error handling.
> I believe git should fail with some meaningful message in this case...
We already had most of the information available, so hey, why not.
builtin-describe.c | 16 ++++++++++++----
1 files changed, 12 insertions(+), 4 deletions(-)
diff --git a/builtin-describe.c b/builtin-describe.c
index 2dcfd3d..1ffa0d8 100644
--- a/builtin-describe.c
+++ b/builtin-describe.c
@@ -96,8 +96,6 @@ static int get_name(const char *path, const unsigned char *sha1, int flag, void
if (!all) {
if (!prio)
return 0;
- if (!tags && prio < 2)
- return 0;
}
add_to_known_names(all ? path + 5 : path + 10, commit, prio, sha1);
return 0;
@@ -184,6 +182,7 @@ static void describe(const char *arg, int last_one)
struct possible_tag all_matches[MAX_TAGS];
unsigned int match_cnt = 0, annotated_cnt = 0, cur_match;
unsigned long seen_commits = 0;
+ unsigned int unannotated_cnt = 0;
if (get_sha1(arg, sha1))
die("Not a valid object name %s", arg);
@@ -217,7 +216,9 @@ static void describe(const char *arg, int last_one)
seen_commits++;
n = c->util;
if (n) {
- if (match_cnt < max_candidates) {
+ if (!tags && !all && n->prio < 2) {
+ unannotated_cnt++;
+ } else if (match_cnt < max_candidates) {
struct possible_tag *t = &all_matches[match_cnt++];
t->name = n;
t->depth = seen_commits - 1;
@@ -259,7 +260,14 @@ static void describe(const char *arg, int last_one)
printf("%s\n", find_unique_abbrev(sha1, abbrev));
return;
}
- die("cannot describe '%s'", sha1_to_hex(sha1));
+ if (unannotated_cnt)
+ die("cannot describe '%s'"
+ " with only\nannotated tags. Try --tags.",
+ sha1_to_hex(sha1));
+ else
+ die("cannot describe '%s'"
+ " with tags\nTry --always, or create some tags.",
+ sha1_to_hex(sha1));
}
qsort(all_matches, match_cnt, sizeof(all_matches[0]), compare_pt);
--
1.6.5.1.70.g1383ae
next prev parent reply other threads:[~2009-10-22 15:45 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-10-22 14:47 git describe is failing Eugene Sajine
2009-10-22 14:59 ` Mikael Magnusson
2009-10-22 15:02 ` Thomas Rast
2009-10-22 15:10 ` Eugene Sajine
2009-10-22 15:44 ` Thomas Rast [this message]
2009-10-22 16:40 ` [PATCH] describe: when failing, tell the user about options that work Alex Riesen
2009-10-22 22:26 ` Junio C Hamano
2009-10-23 0:13 ` Nicolas Pitre
2009-10-23 0:28 ` Junio C Hamano
2009-10-23 0:25 ` Junio C Hamano
2009-10-23 8:34 ` Thomas Rast
2009-10-23 18:57 ` Junio C Hamano
2009-10-28 22:10 ` [PATCH v2] " Thomas Rast
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=f1e86b9095d63c6541d0a8df6a1cf8eadfe247bb.1256226187.git.trast@student.ethz.ch \
--to=trast@student.ethz.ch \
--cc=euguess@gmail.com \
--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).