[PATCH 02/10] Run the pre-commit hook on content staged for commit
Vratislav Podzimek
vpodzime at redhat.com
Wed Sep 25 18:42:48 UTC 2013
On Wed, 2013-09-25 at 14:21 -0400, David Shea wrote:
> Changed the pylint Module output so that it's more clear what file is
> being checked. Added an option to runpylint.sh to manually set the
> filename to display.
> ---
> scripts/githooks/pre-commit | 47 ++++++++++++++++++++++++++++++++-------------
> tests/pylint/runpylint.sh | 16 ++++++++++++++-
> 2 files changed, 49 insertions(+), 14 deletions(-)
>
> diff --git a/scripts/githooks/pre-commit b/scripts/githooks/pre-commit
> index 1528793..a3307b9 100755
> --- a/scripts/githooks/pre-commit
> +++ b/scripts/githooks/pre-commit
> @@ -7,6 +7,7 @@
> """
> import os
> import sys
> +import tempfile
> from subprocess import check_output, CalledProcessError
>
> def is_python(filename):
> @@ -14,11 +15,11 @@ def is_python(filename):
> return True
>
> try:
> - with open(filename) as testfile:
> - if testfile.readline().startswith("#!/usr/bin/python"):
> - return True
> - except IOError:
> - pass
> + s = check_output(["git", "show", (":%s" % filename)]).splitlines()
> + if s and s[0].startswith("#!/usr/bin/python"):
> + return True
> + except CalledProcessError:
> + sys.exit(1)
>
> return False
>
> @@ -37,24 +38,44 @@ except CalledProcessError:
> pylint_files = []
> # Lines look like: :100755 100755 2cf57974e13a2aae778e28f942a4d44bf6567409 6fe1b6caf32d565b2cdb6d1aee250aaddc6d3a04 M tests/pylint/runpylint.sh
> for gf in git_files.splitlines():
> - path = gf.split()[-1]
> - if is_python(path):
> - pylint_files.append(path)
> + fields = gf.split()
> +
> + # If the file is being removed, ignore it
> + if fields[4] == 'D':
> + continue
> + elif is_python(fields[-1]):
> + pylint_files.append(fields[-1])
>
> if not pylint_files:
> sys.exit(0)
> -pylint_files = " ".join(pylint_files)
>
> # Make sure pykickstart and blivet can be found
> # Note that if the checked out versions are too far off pylint may fail
> env = os.environ.copy()
> env["PYTHONPATH"] = OTHER_MODULES_PATH
>
> +# Make a list of tuples of (filename, tempfile) where the tempfile
> +# contains the file as staged for commit.
> +pylint_commits = []
> +for pylint_file in pylint_files:
> + commit = tempfile.NamedTemporaryFile()
Those files are gonna end up under /tmp, right? Won't it cause some
troubles with PYTHONPATH and stuff like that?
--
Vratislav Podzimek
Anaconda Rider | Red Hat, Inc. | Brno - Czech Republic
More information about the anaconda-patches
mailing list