About code quality, automation and git hooks
Imagine you are in the middle of writing some awesome code for a new project of yours. You know, that code on its own isn't all, because it has to be maintainable. And what is better to ensure correct and maintainable code than to have tests and a coding style and some static analysis and whatnot. So in addition to your awesome code you have decided to use a certain coding style. And you are writing tests for your features. And in addition to your tests you also run static analysis to find possible pitfalls even faster.
These days we get more and more in situations where we have to push our code into Git repositories of our customers, either because the customer wants access to the source code or because we are working closely with their in-house team. Maintaining our own local copy of the source code and constantly keeping our copy in sync is a no brainer with Git.
Back at MageTestFest in Florence, I introduced the audience to a tool called Captain Hook for managing Git hooks. In the QA section of my talk, the question was raised why I have not recommended to use GrumPHP. A valid question since all the QA tools I talked about are already supported by GrumPHP out-of-the-box.
Sometimes you run into this situation when a git pull will responds with `Merge conflict in config.php`. How to solve this issue in a proper way? Let's have a look how other people solve similar issues, namely my friend Mr. Rafael Dohms. Quite a while ago he blogged about a similar problem on how to solve conflicts in Composer's lock file. This is what I learned from his blog post:
Long ago I started to globally .gitignore all the things. Recently I ran into a few issues with setting up Sencha projects via SenchaCmd. In my global .gitignore file I have a setting to ignore the vendor folder which perfectly makes sense in a Composer setup. As a side-effect this means that in a Sencha project the folder resources/themes/vendor/ will not be added to the repo. The work-a-round to avoid this is easy and simple. Add the following line to your global .gitignore file:
Recently we were in the need to create (and host) an own npm module. Setting up a private repository with sinopia seemed like a bit too much work for hosting just a single npm package. So I decided to use the built-in functionality of npm to directly refer to a git repository in the package.json file. This worked fine on "my machine" but failed on my co-workers machine. It turned out that we were both using the same version of nodejs and npm but we were running different versions of git. I had a recent version of git running. My co-worker`s git version was pretty old (1.7.x). I advised that we should upgrade git any try again. And guess what, after the upgrade npm install worked perfectly fine.