git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
From: Junio C Hamano <gitster@pobox.com>
To: Josef Assad <josef@josefassad.com>
Cc: git@vger.kernel.org
Subject: Re: [PATCH] more meaningful error message in gitk when git binary is not available
Date: Mon, 01 Oct 2012 10:11:05 -0700	[thread overview]
Message-ID: <7va9w6dsnq.fsf@alter.siamese.dyndns.org> (raw)
In-Reply-To: <50694380.4090108@josefassad.com> (Josef Assad's message of "Mon, 01 Oct 2012 09:17:20 +0200")

Josef Assad <josef@josefassad.com> writes:

> Signed-off-by: Josef Assad <josef@josefassad.com>
> ---
>  gitk-git/gitk |    6 ++++++
>  1 files changed, 6 insertions(+), 0 deletions(-)

Thanks.

> diff --git a/gitk-git/gitk b/gitk-git/gitk
> index d93bd99..7e2e0a7 100755
> --- a/gitk-git/gitk
> +++ b/gitk-git/gitk
> @@ -11680,6 +11680,12 @@ setui $uicolor
>
>  setoptions
>
> +# check that the git executables are available for use
> +if [catch {set gitexists [exec which git]}] {
> +    show_error {} . [mc "Cannot find a suitable git executable."]
> +    exit 1
> +}
> +
>  # check that we can find a .git directory somewhere...
>  if {[catch {set gitdir [exec git rev-parse --git-dir]}]} {
>      show_error {} . [mc "Cannot find a git repository here."]

It is somewhat a stupid solution to add an extra fork that will only
waste cycles in the normal non-error case, especially when we
already have an error codepath that acts on lack of the "git"
command anyway, isn't it?

The "rev-parse" you see in the post-context will fail when we are
not in a git repository, but it will also fail when we do not have
git.

You can add the new check to if {[catch {... git rev-parse }]} block;
before unconditionally saying "cannot find a git repo", you check if
"git" even exists, and give an appropriate error message.  That way,
you do not punish normal use case with an extra useless fork.

Something like this, I presume.


 gitk | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/gitk b/gitk
index d93bd99..60794a7 100755
--- a/gitk
+++ b/gitk
@@ -11682,7 +11682,12 @@ setoptions
 
 # check that we can find a .git directory somewhere...
 if {[catch {set gitdir [exec git rev-parse --git-dir]}]} {
-    show_error {} . [mc "Cannot find a git repository here."]
+    # we could have failed because there is no git to begin with
+    if {[catch {exec git version}]} {
+        show_error {} . [mc "You do not seem to have 'git' command."]
+    } else {
+        show_error {} . [mc "Cannot find a git repository here."]
+    }
     exit 1
 }
 

  parent reply	other threads:[~2012-10-01 17:13 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-10-01  7:17 [PATCH] more meaningful error message in gitk when git binary is not available Josef Assad
2012-10-01 13:39 ` Joachim Schmitz
2012-10-01 17:11 ` Junio C Hamano [this message]
     [not found]   ` <5069D0FE.4000609@josefassad.com>
2012-10-01 17:24     ` Josef Assad

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

  List information: http://vger.kernel.org/majordomo-info.html

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=7va9w6dsnq.fsf@alter.siamese.dyndns.org \
    --to=gitster@pobox.com \
    --cc=git@vger.kernel.org \
    --cc=josef@josefassad.com \
    /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.
Code repositories for project(s) associated with this public inbox

	https://80x24.org/mirrors/git.git

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 read-only IMAP folder(s) and NNTP newsgroup(s).