On Wed, Mar 20, 2013 at 01:15:32PM +0100, Fredrik Gustafsson wrote:

> When entering a git working dir, optionally run a forked process that
> stat all files in the whole workdir and therefore loads stat information
> to RAM which will speedup things like git status and so on.
> The feature is optional and by default it's off.

Kind of gross, but I guess it is useful to some people.

> +__git_recursive_stat ()
> +{
> +     if test ! -e /tmp/gitbash.lock
> +     then
> +             touch /tmp/gitbash.lock

This is a tmp-race security hole. E.g., do:

  ln -s /etc/nologin /tmp/gitbash.lock

as a user; when root runs __git_recursive_stat, it will create
/etc/nologin. It's not quite as bad as some other holes, because we only
"touch" the file, not overwrite its contents, but you can see that it's
possible to do some mischief.

Should this maybe just be ~/.gitbash.lock or something?

> +             cd $(git rev-parse --show-toplevel)
> +             find . | xargs stat 2&> /dev/null

The "stat" utility is not portable. But why not use git to do the
reading? Then you can get the benefit of core.preloadindex, and you will
not recurse into untracked directories that are ignored (i.e.,
ones that git would not go into anyway).

So maybe just run "git status >/dev/null"?

To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to