Bash: change absolute to relative paths in ~/.bash_profile
Git: ksdiff-fixed uses absolute paths, lowers sleep timeout

the ksdiff-fixed script is a wrapper around ksdiff (Kaleidoscope.app's
command-line launcher) which fixes a bug where it would cause git/bash
crashes if its launch environment wasn't just so.

This commit updates the script to use the absolute path to the main
`ksdiff` command. In this way, it will successfully launch ksdiff no
matter the current $PATH (useful specifically when launched from GUI
apps, which use a different $PATH than Terminal apps.)

This commit also opens Kaleidoscope by bundle ID, rather than app name,
which should be a little more robust. It also doesn't open Kaleidoscope
in the background, making it seem more responsive.

This commit also has a lower `sleep` value after launching Kaleidoscope,
which makes it even more responsive without seemingly causing any
problems.

Finally, it updates the comments to be clearer.
Git: fix Kaleidoscope crashes from SourceTree

The same crashing bug we were seeing before when launching
Kaleidoscope.app from the terminal via 'git' also affects SourceTree. We
can use the same ksdiff-fixed wrapper script to fix this.

This commit updates the config in ~/.gitconfig to change SourceTree's
diff and merge tool to be ksdiff-fixed, rather than plain ksdiff.
Git: change "conflictstyle" to 'diff3'

No idea what this does, but people say we should do this, so OK?
Vim: remove 'w', add 'a', to formatoptions

'w' added trailing whitespace to wrapped lines to indicate they
continued on the next line, but this goes against the 'no trailing
whitespace' code/commit message formatting rules.

'a' automatically updates the formatting of paragraphs as we insert or
delete text.

We also change the `set` command to use "+=" and "-=" instead of a
straight "=". Vim's help recommends this to support additional format
options that are added in the future.
Homesick: add placeholder (noop) .homesickrc

This file can be run by homesick after symlinking a castle. It is a ruby
file, with the "this" variable set to the homesick object.

Right now, it just contains comments telling us future TODOs. Later we
can expand it to actually do these TODOs.
Git: change email to plain "github@" one
Merge commit '1b5318dfd5549f4d8068d591b3843b5915495e47'
Bash: backport relevant Linux branch ~/.bash_profile changes

This commit manually adds the changes we've made in the "Linux" branch
of this repo, which would also work on Mac, to the "master" branch.

Specifically, we check that ~/bin exists before adding it to the path;
set the LANG to "C"; enable the "checkwinsize" shopt; and trim some
trailing whitespace in a comment.
Git: move global gitignore to ~/.gitsupport/gitignore
Git: move filters to ~/.gitsupport/filters

The main "email" filters aren't in the repo because they contain
sensitive information (my real email address -- the filters filter it
out of any commits and replace it with public, sanitized versions.)

This commit changes the directory pointed to in ~/.gitconfig for the
filters. I then manually moved the filters into this directory.
Hg: add WebKitBuild to .hgignore_global
Git: remove unused/commented lines from .gitconfig
Git: Change commit cleanup mode to "strip"

This mode deletes trailing whitespace, successive blank lines, and
commented out lines.

Test: there should only be one line above, and no space here ->
Vim: properly set formatoptions

It looks like the "-=" expression only succeeds if every value on its
rhs is in the variable in the rhs. Thus, our line "-=tw2" would fail
because one or more of 't', 'w' or '2' was not in formatoptions.

This change manually removes each of those values from formatoptions
with individual "-=" statements. This should properly remove all from
formatoptions.

I don't *think* the same sort of bug applies to our "+=" expression.
Git: Create custom template dir from git default

This is the first step toward creating our own custom template dir (the
directory git copies into a new repo's ".git" dir, in addition to
"objects", "refs", "HEAD" and "config".)

At this point, it's just a copy of git 1.9.0's template dir, with no
changes.
Git: add in commit-msg hook to wrap long lines

This commit adds a hook to our custom template dir. This hook, a
commit-msg hook, does two things. First, it rejects commits with first
lines longer than 50 chars. Second, it wraps lines longer than 72 chars
(on the word boundary.)
Git: add sane default 'exclude' to user template

This commit adds a ./info/exclude file to our user-defined git template
directory. This file contains some sane starting exclude file.
Git: (template) set SourceTree to unwrap lines

In our user-defined template directory, we add a "sourcetreeconfig"
file, which is the file SourceTree uses to set per-repo config settings.

This config file has the effect of unwrapping word-wrapped line (for
example, those generated by our commit-msg hook.) It does this by
replacing non-double newlines with spaces -- i.e., if a paragraph is
separated from the previous one by a blank line, it leaves it be; if
not, it replaces the newline with a space.

Ideally, we'd set this option globally in SourceTree, but I don't see
an option for it.

This config allows us to have our cake and eat it too. In the Terminal
and on GitHub, commit messages are hard word-wrapped at 72 characters.
In SourceTree, they're soft-wrapped at the dialog boundary.

This may also affect messages of commits we make in ST (that is, the
messages with be modified when we write the commit.) However, this
should be an idempotent action, for properly formatted commit messages.
Git: tell git to use our user-defined template dir

We previously created our own user-defined template dir, but did not
tell git to use it (since it was still being developed.) We now change
~/.gitconfig to tell git to use this template dir.