Subject: Re: git locate

From: Bruce Stephens <[email-masked]>
Date: Wed, 02 Jun 2010 11:23:32 +0100

John Tapsell <[email-masked]> writes:

[...]

> Actually could someone help me with this.. the trouble is that this
> returns paths relative to the root.
>
> Can I get it to find all the files, but relative to where I am now?

Something like this is probably part of the answer, which allows an
alias like this to work:

	locate = !cd $GIT_CWD && sh -c 'git ls-files "*$1*"' -

That doesn't give you all the files (just those below where you are).

diff --git a/git.c b/git.c
index 99f0363..81c877b 100644
--- a/git.c
+++ b/git.c
@@ -178,6 +178,10 @@ static int handle_alias(int *argcp, const char ***argv)
                        }
                        trace_printf("trace: alias to shell cmd: %s => %s\n",
                                     alias_command, alias_string + 1);
+                       if (!subdir || !*subdir)
+                         setenv("GIT_CWD", "./", 1);
+                       else
+                         setenv("GIT_CWD", subdir, 1);
                        ret = system(alias_string + 1);
                        if (ret >= 0 && WIFEXITED(ret) &&
                            WEXITSTATUS(ret) != 127)