include, filter, user
Revert "include, filter, user"

This reverts commit 383612ac4cb05641fce1a9b1051afd238365f69e.
Spell check git commits
Use POSIX compliant test command in git hooks

Ubuntu systems will error out on `[[` in shell scripts with `#!/bin/sh`
as the shebang.
Revert adding /usr/local/bin to path in zshenv

* Adding /usr/local/bin to path in `~/.zshenv` causes it to be in my path twice one right after the other. /usr/local/bin is already added to the path in the correct order on OSX Yosemite by the /etc/paths file. 

* Remove /usr/local/bin from path export in zshenv
Fix typo in zshenv path
Remove mention of Brewfile

It is no longer in our dotfiles.
Add more Git hooks, delegate to .local convention

The `pre-commit` and `prepare-commit-msg` git hooks can be used
for some interesting things such as linting files.

For example, I need to format, vet, and lint Go files:

https://github.com/croaky/dotfiles/blob/master/git_template.local/hooks/pre-commit
https://github.com/croaky/dotfiles/blob/master/git_template.local/hooks/prepare-commit-msg

We've rejected Go-related pull requests to thoughtbot/dotfiles
due to not doing enough "official" Go work at the company.
This change helps me start with `.local` for now,
and then promote to "upstream" (thoughtbot/dotfiles) at some point
in the future if we do more "official" Go work.

I'm a believer in having linting done at VCS "commit time", either
locally in a pre-commit so I have a chance to fix things and not both my
teammates with linting issues, or at post-commit time via Hound comments
(also automated, but opportunity to ignore).

I've tried adding linting libraries to my editor, and found them too
slow, at least for Ruby. I've limited "editor-time" checking to just
syntax checking via Syntastic.

The downsides I see to adding linting to the test suite are:

* Style violations are not functional failures and logically shouldn't
  fail a build.
* Adding code coverage, linting, etc. to a test suite slows down the
  build.
* I only need to lint my diff (the commit), not the whole codebase, when I
  make changes.
* Style violations should not prevent a user-facing, production deploy.
* Adding linting to the test suite can slow that process down
  unnecessarily, particularly in continuous integration setups.

I see the appeal of linting in the test suite, particularly for
greenfield apps where we have total control, but I don't think it's a
practice that we can universally apply to our client projects who have
different deploy setups and existing codebases. So, I prefer the git
hooks + Hound approach as a pragmatic middle ground.
Fix pre-commit, prepare-commit-msg hooks

For users who had not overridden the `pre-commit` or
`prepare-commit-msg` Git hooks,
they would see `git commit` hang,
with nothing happening.

The command would exit without going to their editor.

The bug was introduced in d7f194f94ee1ab535da18e657f0c51479c0233b4
and the fix is to return a 0 exit code when the override is not present.
Update tat script to also work from within tmux

The existing script would fail if run from within tmux as the default
behavior would cause a nested tmux session which is bad. This update
detects if the current context is within tmux and properly handles this
by creating a detached session and switching to it as needed.

The idea with this is for tat to behave correctly regardless of context,
which I believe this update achieves. Existing users and workflows all
work identically, but now this adds support for a workflow that remains
within tmux at all times.

I prefer to remain within tmux all the time, rather than falling back to
the shell, navigating to another directory, and then creating the
session from there. With this update, I split a pane in the current tmux
window, navigate to the directory for the new session, and use `tat` to
open (or attach) to the new-session without ever leaving tmux.

I actually [have a binding that I use for this][], `C-b` (I am
"breaking" out a new session), that is mapped to `bind C-b send-keys
'tat && exit' 'C-m'`, which also cleans up the pane.

The reason for wanting this workflow is I am pretty strict about keeping
a tmux session focused to a single project (~ maps to a git repo). I
regularly want to reference another app and will use this workflow to
quickly open that project in a new session.

A "detached" session is one which has no clients attached. [From the man
page entry][] for `new-session`: `The new session is attached to the
current terminal unless -d is given.` This essentially creates it in the
background, preventing nesting. Then the script can attach the current
client using the `switch-client` command.

[have a binding that I use for this]: https://github.com/christoomey/dotfiles/blob/01cc928672ea857aafbe904968010baabfe6aebb/tmux/tmux.conf#L89
[From the man page entry]: http://www.openbsd.org/cgi-bin/man.cgi/OpenBSD-current/man1/tmux.1?query=tmux&sec=1