Read the title.  Believe it.

Cygwin can do the backflips to get sshd running properly and enable you to treat a Windoze shitbox as an actual ssh-able shell.  Just do it and don’t look back.

Why would [git push] fail to push annotated tags as well?  That just results in another disruptive layer of potential synchronization issues.  They finally added sane behavior, but you have to turn it on with:

git config --global push.followTags true

Or, use rad-scripts!  Which has [git-sync], and, as of today, always uses –follow-tags.  I’m loving my Node.js lifestyle.  😛

Why do people use Github?  Oh, because they are lazy.

Rant is on the wiki about typical problems.

I played around enough with different git repository structures to know what works best for my uses (a central repo that I can pull and work on anywhere, that may or may not need to actually be updated live on the central server).  The “git central shared repository” pattern on the wiki has the details.

There are a million ways to do CI.  My goal is to keep it as simple as possible.  Concepts:

  • My target projects include multi-platform C++ applications, Firefox addons, cross-platform desktop apps, mobile apps, and web apps with lots of JavaScript and JavaScript libraries.
  • I want to use a simple-to-use very-capable cross-platform scripting language.  I’ve concluded that I will use JavaScript via Node.js.  It is async and portable from the day it was born.  Installing a node.js module for scripts means they are available from any path on any platform’s command line.
  • For CI tasks, I will avoid dependencies on anything else.  The core Node.js API is very capable.  Modules are available if needed (eg the amazing aws-sdk) but will be avoided whenever possible.
  • I need intelligent placement of CI windows (eg a popup shell for build-on-save).  My Ubuntu i3 window manager is capable of this, as is Autohotkeys under Windows.  These auto-placed windows will always run cross-platform node scripts.
  • If you want to use Powershell, for the love of all that’s holy, make sure you fix its terrible default of hiding debug output with:
       $global:DebugPreference = "Continue"
  • Goals:
    • on code save: automatically build
    • on code commit: automatically build, do any custom build steps, run any unit tests, run any end-to-end tests, and report results dynamically
    • on app production release: compile artifacts, assist in automatic versioning

See the wiki for details.