Introducing git-recover
June 15, 2017
I'm old enough to remember the old Norton UNERASE command: it was part of the old Norton Utilities for MS-DOS. It made clever use of the FAT filesystem to find files that were recently deleted, show them to you and let you undelete them. git-recover brings that idea to your Git repositories.
Read more
Git Conditional Includes
June 6, 2017
One of the features that slipped quietly into Git 2.13 is the notion of "conditional includes" for configuration files, and it's one of my favorite new features. Although it's really simple, it's also extremely important for people who work both on Enterprise software and open source projects.
Read more
Managing Dotfiles with Git
March 28, 2017
Years of working with large networks of Unix machines has taught me to version control my dotfiles so that I can get up and running on any new machine quickly. I keep my dotfiles checked in to a git repository, except for the truly important ones - the ones that I need to keep secure, like my SSH keys - which I keep with me.
Read more
The Git Contributor Summit
February 5, 2017
The annual Git Merge conference just wrapped up, and it was another exciting year. As always, the speakers were excellent, the training was informative, and the after-party was a blast. But my favorite part was a part of Git Merge that most people don't see: the Git Contributor Summit.
Read more
Goodbye, Microsoft
December 3, 2015
Six years ago, Microsoft bought the tiny company that I worked for and moved five of us out of a cornfield in Central Illinois and into the largest software company in the world. In that time, I've done some unlikely things like hack on obscure Unix systems, write a bunch of GPL-licensed code and helped bring distributed version control into Microsoft. But after six years, I've decided that it's time for a change. Yesterday was my last day at Microsoft, and I'll be starting a new position at GitHub in the new year.
Read more
Authenticating Git clients to TFS using Kerberos
November 14, 2015
You can authenticate to correctly configured instances of Visual Studio Team Foundation Server by using Kerberos over the Negotiate (SPNEGO) protocol. By using authentication with a Kerberos ticket, you can more securely authenticate from supported clients to your server without providing your password. After you obtain a Kerberos ticket, you can configure your git client to use Kerberos.
Read more
Setting Files Executable in Git on Windows
June 9, 2015
Sometimes you need to check an executable into your Git repository and - even though Windows doesn't really have a concept of an "executable bit" - you might need to set it executable for the other platforms. For example, a handful of my native code projects use the very clever clar project for unit testing. Clar uses a Python script to introspect your unit tests for the actual test functions and generate the harness. It's handy if this generator is executable on Unix boxes and - thankfully - Git will let you set it executable even on a Windows box. Once you've staged your file, you can set it executable with the git-update-index --chmod=+x command. For example: And now you can ensure that the file is executable by inspecting the index: If you're familiar with Unix permissions, then you'll note that first column looks like a Unix permission. Indeed, coming from a nice Unix heritage, Git uses the mode 100644 to represent a non-executable file and 100755 to represent an executable file. Now when you commit this change and check it out on a Unix system, generate.py will be set executable!
Read more
Checking Out Visual Studio Online Pull Requests Locally
March 30, 2015
Pull Requests in Visual Studio Online are great way to perform code reviews. But if you like reviewing code in your favorite editor, instead of on the web, they can be frustrating. Fortunately, you can set up git to fetch pull requests from Visual Studio Online. Visual Studio Online creates branches for pull requests in the refs/pull/\* namespace, which is not fetched in a default configuration. To set up your git client to fetch them, simply run: Now on your next git fetch, you will download the pull requests, and you can simply check out the one you're interested in:
Read more
Another libgit2 Security Update
January 20, 2015
On the heels of CVE 2014-9390, we are announcing another round of security updates to libgit2. Similar to the prior vulnerability, an attacker can construct a git commit that, when checked out, may cause files to be written to your .git directory which may lead to arbitrary code execution.
Read more
92 Days to Fix a Bug?
January 12, 2015
Microsoft (disclaimer: my employer) is apparently complaining about Google publishing the details of a security vulnerability in keeping with Google's stated policies on the matter, but two days before Microsoft would have been able to issue a general fix on Patch Tuesday. In some of the discussion on Hacker News, somebody suggested that Microsoft had not been diligent about fixing this bug in a timely manner...
Read more