From d0f203d219f6d69006c4730aafe89761249c06cb Mon Sep 17 00:00:00 2001 From: Sam Perry Date: Tue, 11 Oct 2016 13:33:29 +0100 Subject: [PATCH] Lab 1 initial commit --- .git-hooks/pre-commit/check_untracked.py | 47 ++++++++++++++++++++++++ .gittrack | 2 + .overcommit.yml | 41 +++++++++++++++++++++ soundplayer.m | 5 +++ 4 files changed, 95 insertions(+) create mode 100755 .git-hooks/pre-commit/check_untracked.py create mode 100644 .gittrack create mode 100644 .overcommit.yml create mode 100644 soundplayer.m diff --git a/.git-hooks/pre-commit/check_untracked.py b/.git-hooks/pre-commit/check_untracked.py new file mode 100755 index 0000000..8f06f93 --- /dev/null +++ b/.git-hooks/pre-commit/check_untracked.py @@ -0,0 +1,47 @@ +#!/usr/bin/env python + +import subprocess +import os +import pdb +import fnmatch + +import sys + +def main(): + p = subprocess.Popen(["git", "rev-parse", "--show-toplevel"], stdout=subprocess.PIPE, stderr=subprocess.PIPE) + out, err = p.communicate() + + out = out.strip('\n') + track_filepath = os.path.join(out, ".gittrack") + + p = subprocess.Popen(["git", "ls-files", out, "--exclude-standard", "--others"], stdout=subprocess.PIPE, stderr=subprocess.PIPE) + out, err = p.communicate() + + out = out.splitlines() + + try: + with open(track_filepath) as f: + content = f.read().splitlines() + except IOError: + return 0 + + + untracked = [] + for filepath in out: + for name in content: + if fnmatch.fnmatch(filepath, name): + untracked.append(filepath) + + if untracked: + print "The following files are not tracked: " + for i in untracked: + print i + print "Please either stage these files for the commit or add them to the project's .gitignore to disregard them." + return 1 + else: + return 0 + + + +if __name__ == "__main__": + exit(main()) diff --git a/.gittrack b/.gittrack new file mode 100644 index 0000000..faf61e6 --- /dev/null +++ b/.gittrack @@ -0,0 +1,2 @@ +*.cpp +*.h diff --git a/.overcommit.yml b/.overcommit.yml new file mode 100644 index 0000000..f0b94ee --- /dev/null +++ b/.overcommit.yml @@ -0,0 +1,41 @@ +# Use this file to configure the Overcommit hooks you wish to use. This will +# extend the default configuration defined in: +# https://github.com/brigade/overcommit/blob/master/config/default.yml +# +# At the topmost level of this YAML file is a key representing type of hook +# being run (e.g. pre-commit, commit-msg, etc.). Within each type you can +# customize each hook, such as whether to only run it on certain files (via +# `include`), whether to only display output if it fails (via `quiet`), etc. +# +# For a complete list of hooks, see: +# https://github.com/brigade/overcommit/tree/master/lib/overcommit/hook +# +# For a complete list of options that you can use to customize hooks, see: +# https://github.com/brigade/overcommit#configuration +# +# Uncomment the following lines to make the configuration take effect. + +#PreCommit: +# RuboCop: +# enabled: true +# on_warn: fail # Treat all warnings as failures +# +# TrailingWhitespace: +# enabled: true +# exclude: +# - '**/db/structure.sql' # Ignore trailing whitespace in generated files +# +#PostCheckout: +# ALL: # Special hook name that customizes all hooks of this type +# quiet: true # Change all post-checkout hooks to only display output on failure +# +# IndexTags: +# enabled: true # Generate a tags file with `ctags` each time HEAD changes + + +PreCommit: + CheckUntracked: + enabled: true + quiet: false + description: 'Check for files that should be tracked or ignored.' + required_executable: './.git-hooks/pre-commit/check_untracked.py' diff --git a/soundplayer.m b/soundplayer.m new file mode 100644 index 0000000..105285a --- /dev/null +++ b/soundplayer.m @@ -0,0 +1,5 @@ +test = 1 + +the cat sat on the + +blargh = 2