On 10/01/2012 07:21 PM, Josef Assad wrote: > On 10/01/2012 07:11 PM, Junio C Hamano wrote: >> Josef Assad <josef@xxxxxxxxxxxxxx> writes: >> >>> Signed-off-by: Josef Assad <josef@xxxxxxxxxxxxxx> >>> --- >>> 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? > > I don't think it's actually _stupid_, but I also think your solution > works better if you're trying to avoid one more exec call. > > Mine has one less level of indentation though, and it has clearer > delineation between checking for and handling two distinct error > conditions. :) > >> 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 >> } > > I'm neutral though and not married to my patch in any way, just trying > to be helpful. In my opinon, yours is cleaner, mine is a tiny bit more > readable in a file already closing on 12k lines. > Bah, forgot to Cc list. My bad. -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html