[PATCH 1 of 3 v2] hooks: add intermediate function _get_python_executable
Mads Kiilerich
mads at kiilerich.com
Sat Apr 6 22:25:33 UTC 2019
On 4/6/19 8:25 PM, Thomas De Schampheleire wrote:
>
> El jue., 4 abr. 2019 a las 0:41, Mads Kiilerich (<mads at kiilerich.com
> <mailto:mads at kiilerich.com>>) escribió:
>
> > @@ -734,11 +738,11 @@ class ScmModel(object):
> > if not os.path.isdir(loc):
> > os.makedirs(loc)
> >
> > - tmpl_post = "#!/usr/bin/env %s\n" % sys.executable or
> 'python2'
> > + tmpl_post = "#!/usr/bin/env %s\n" %
> self._get_python_executable()
>
>
> Also, can you remind me (and perhaps clarify in code): #! paths
> are only
> used on posix. How does this work on Windows? Or is that covered by
> tribal "Don't use Git on Windows" knowledge? Especially: With git
> having
> one hardcoded executable name for each hook, how does it generally
> work
> finding the right hook script interpreter when Windows doesn't use
> #! paths?
>
>
> After some searching, it seems that git hooks on windows magically
> work with #!/bin/bash, and that to get python hooks working you should
> create a shell wrapper script.
> See
> https://stackoverflow.com/questions/9308119/git-cannot-execute-python-script-as-hook
> So if this is correct (I was too lazy to test it now) then git hooks
> don't work yet on windows anyway. We could treat it as a future
> feature to implement, but as there is no-one that requested it yet, I
> guess it's not a very high priority.
Does that mean we have to differentiate different kinds of Git - msysgit
and others?
Or should we for now realize that we don't really support/recommend
virtualenv if hosting Git on Windows? Or perhaps ignore Git hosting on
Windows for now? If we make that clear, some things might be simpler.
> Hm, I now realize that it's actually dulwich and not git that is
> invoked, but as far as I can see it is just invoking the hook via
> subprocess, so I think the conclusion remains.
The odd pygrack also plays an odd role in this.
> (Also, AFAIK, /usr/bin/env is really mainly for searching in PATH
> so we
> don't have to specify full path. If we specify full paths, it thus
> seems
> a bit wrong to use env? That is an old thing that we don't have to
> care
> about now, but perhaps keep it in mind if it pops up now.)
>
>
> Yes, but if we fallback to 'python2' then we actually need 'env'. So,
> maybe we should do something like self.get_python_executable() or
> sys.executable or '/usr/bin/env python2'.
Yes, perhaps ideally something like that. But perhaps not necessarily now.
/Mads
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.sfconservancy.org/pipermail/kallithea-general/attachments/20190407/6ccd00d1/attachment-0001.html>
More information about the kallithea-general
mailing list