Re: [PATCH] Improve errors from 'git diff --no-index'.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Junio --

On Sun, May 22, 2011 at 9:18 PM, Junio C Hamano <gitster@xxxxxxxxx> wrote:
> No, it was only your 'I tried to use "git diff"' that was confusing to me.

Apologies!

> With pathspecs or any other options, it is understandable that you were
> confused, for example from an output like this:
>
>> $ git diff -b main.c
>> usage: git diff [--no-index] <path> <path>
>
> At that point we are committed to no-index codepath, so probably a good
> thing to do is to update that confusing usage message a bit better.
>
> It already does change the behaviour when --no-index is not given by the
> end user, so perhaps it would be sufficient to change this part:
>
> Â Â Â Âif (argc != i + 2)
> Â Â Â Â Â Â Â Âusagef("git diff %s <path> <path>",
> Â Â Â Â Â Â Â Â Â Â Â Âno_index ? "--no-index" : "[--no-index]");
>
> to something like (caution: I am not typing this in my MUA):
>
> Â Â Â Âif (argc != i + 2) {
> Â Â Â Â Â Â Â Âif (no_index)
> Â Â Â Â Â Â Â Â Â Â Â Âwarning("Assuming '--no-index'; you are in no repository");
> Â Â Â Â Â Â Â Âusagef("git diff %s <path> <path>",
> Â Â Â Â Â Â Â Â Â Â Â Âno_index ? "--no-index" : "[--no-index]");
> Â Â Â Â}
>
> without changing anything else.
>
> That would be just a patch with 1 line removed, 4 lines added, no?

The "no_index" variable purely indicates whether or not "--no-index"
was given on the command line; for this particular warning, you want
"nongit" instead.

Alternately, you could simply do this above the "if (argc..." condition:

if (!no_index)
        warning("Assuming '--no-index'");

It wouldn't explain *why*, but would at least provide some sort of a
hint to the user that they're maybe not doing what they thought they
were doing.

If that's more to your taste, then I'd rather see this than nothing.  :)

You might also want to account for the fact that, even within a git
repo, if "git diff" is invoked on two paths that are both outside the
repo, then --no-index is forced. E.g.:

$ cd linux-2.6-stable/
$ git log -1 --pretty=short
commit 831d52bc153971b70e64eccfbed2b232394f22f8
Author: Suresh Siddha <suresh.b.siddha@xxxxxxxxx>

    x86, mm: avoid possible bogus tlb entries by clearing prev
mm_cpumask after switching mm

$ ls -al /tmp/{foo,bar}
-rw-rw-r--. 1 tony tony 0 May 22 10:09 /tmp/bar
-rw-rw-r--. 1 tony tony 0 May 22 10:00 /tmp/foo

$ # current git tip:
$ git diff /tmp/{foo,bar}

$ # with my patch:
$ ../git/git-diff /tmp/{foo,bar}
warning: neither '/tmp/foo' nor '/tmp/bar' are tracked, forcing --no-index

Although I apparently did break something...

$ touch bar
$ git diff bar /tmp/foo
$ ../git/git-diff bar /tmp/foo
fatal: '/tmp/foo' is outside repository

Given that I broke things, and that a +100/-25 patch is a bit
excessive, consider it retracted.

Thanks once again!

Best regards,
Tony
--
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


[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]