El sáb., 6 abr. 2019 a las 20:25, Thomas De Schampheleire (< [email protected]>) escribió:
> > > El jue., 4 abr. 2019 a las 0:41, Mads Kiilerich (<[email protected]>) > escribió: > >> On 4/3/19 10:28 PM, Thomas De Schampheleire wrote: >> > # HG changeset patch >> > # User Thomas De Schampheleire <[email protected]> >> > # Date 1554320638 -7200 >> > # Wed Apr 03 21:43:58 2019 +0200 >> > # Branch stable >> > # Node ID 8d7e20c6980cd4e27eeafa15f574d929d836dd76 >> > # Parent 953047e8c88a9c5ccaa4ddc1bb417622de37f01f >> > hooks: add intermediate function _get_python_executable >> > >> > ... to avoid code duplication. >> >> >> (and to give a place where we easily can tweak the heurstics) >> >> >> > diff --git a/kallithea/model/scm.py b/kallithea/model/scm.py >> > --- a/kallithea/model/scm.py >> > +++ b/kallithea/model/scm.py >> > @@ -720,6 +720,10 @@ class ScmModel(object): >> > >> > return choices, hist_l >> > >> > + def _get_python_executable(self): >> > + """Return a Python executable for use in hooks.""" >> >> >> Perhaps clarify "suitable to be written in the posix #! line for Git >> hook scripts so they invoke Kallithea code with the right interpreter >> and in the right environment". >> >> >> > + return sys.executable or 'python2' >> > + >> > def install_git_hooks(self, repo, force_create=False): >> > """ >> > Creates a kallithea hook inside a git repository >> > @@ -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. > > 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. > > >> >> (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'. >
_______________________________________________ kallithea-general mailing list [email protected] https://lists.sfconservancy.org/mailman/listinfo/kallithea-general
