Recovering from Corrupt Revisions in an SVN Repository

Recently, I worked to recover a client’s corrupted SVN repository. While the best protection against repository corruption is good backups, these are not always up-to-date or intact. Unless there are backups, repository corruption will almost certainly result in some data loss. However, by working around corrupt revisions, it may be possible to restore the repository […]

Interacting with Git: Cryptic RPC Errors, HTTPS, and SSH

In my experience, working with a Git repository hosted by Gitlab, Github, or Gitorious has generally been issue free and enjoyable. Recently, however, three members of my team ran across the same cryptic RPC error when trying to push changes to a remote repository on Gitlab: error: RPC failed; result=22, HTTP code = 411error: RPC […]

Sharpen Your Git Saw – Aliases, Selective Staging, & Interactive Rebasing

Git is a powerful tool that we love as developers. It’s also complicated. I consider the bare essentials of Git, the minimum set of features to be familiar with before we can be productive, to be all of this: local interaction: status, add, remove, commit, reset, checkout branch management: checkout, merge remote interaction: clone, fetch, […]

Lessons from an SVN Server Migration

Recently, we rebuilt Atomic’s SVN server. We wanted to upgrade to the latest Ubuntu LTS release and also wanted to manage the server with Chef. Provisioning the server and bootstrapping it with Chef was straightforward. However, actually preparing the server for hosting our SVN repositories and migrating all of the data posed some challenges. I […]

Obliterate Unsavory git Objects with the BFG

Sometimes we accidentally commit things to git that we shouldn’t. Passwords. Keys. Other sensitive data. Photoshop files. Intermediate object files. Other big binary data. There’s a lot of stuff that doesn’t work well in git, and since git (conservatively and justifiably) makes it difficult to destroy data, we end up with these anchors slowing us […]