I shared my pre-commit git hook years ago (2012) https://wiki.koha-community.org/wiki/Tips_and_tricks It does -wc and much more...
On Fri, 20 Jul 2018 at 05:53 David Cook <dc...@prosentient.com.au> wrote: > Hi all, > > > > How many of you are using client-side git hooks? That is, git hooks that > are in your working directory. > > > > A while ago, I added a “pre-commit” git hook in my Koha git working > directory, which runs a little Python script every time I make a commit. > It’s nothing fancy. Basically it gets a list of all the files I’m changing > in Git and for a “.pl” or a “.pm” file, it runs “perl -c", which compiles > the Perl code without running it (with a caveat about BEGIN{} blocks which > do get run at compile time so could be a problem if you’re running > untrusted code especially as a privileged user…). The Python script gets > the exit code of that operation, and if there’s an error, it uses an exit > code of 1 itself and prevents the commit from happening. I’ve attached some > sample code to the bottom of this email under “__PYTHON_SCRIPT__”. > > > > I find that it’s a nice way of catching errors. Maybe you write some code > and you don’t think you need to test it, or you tested it but you made a > last minute change and that last minute change has a typo… this catches > that kind of things – at least if it’s an error which prevents successful > compilation. > > > > Anyway, I was just porting a patch between different versions of Koha, and > everything looked good at a glance and the code merge was successful, but > the commit failed because one variable name in one line of the many lines > changed was slightly different. > > > > The error messages told me exactly where to go and then it was obvious > what the problem was and what to do. > > > > Anyway, I just thought I’d share that. Maybe everyone is already using > client-side git hooks, but I thought I’d share just in case someone else > finds it useful. Especially as it saved my bacon just now. > > > > David Cook > > Systems Librarian > > Prosentient Systems > > 72/330 Wattle St > > Ultimo, NSW 2007 > > Australia > > > > Office: 02 9212 0899 <02%2092%2012%2008%2099> > > Direct: 02 8005 0595 <02%2080%2005%2005%2095> > > > > __PYTHON_SCRIPT__ > > #!/usr/bin/env python > > > > import subprocess, os > > > > errors = 0 > > > > output = > subprocess.check_output(["git","diff","--cached","--name-only","--diff-filter=ACMR"]) > > lines = output.split('\n') > > for line in lines: > > if line: > > filename, file_extension = os.path.splitext(line) > > print(filename) > > print(file_extension) > > if file_extension == ".pl" or file_extension == ".pm": > > rv = subprocess.call(["perl","-c",line]) > > if rv: > > errors += 1 > > > > if errors > 0: > > exit(1) > _______________________________________________ > Koha-devel mailing list > Koha-devel@lists.koha-community.org > http://lists.koha-community.org/cgi-bin/mailman/listinfo/koha-devel > website : http://www.koha-community.org/ > git : http://git.koha-community.org/ > bugs : http://bugs.koha-community.org/
_______________________________________________ Koha-devel mailing list Koha-devel@lists.koha-community.org http://lists.koha-community.org/cgi-bin/mailman/listinfo/koha-devel website : http://www.koha-community.org/ git : http://git.koha-community.org/ bugs : http://bugs.koha-community.org/