Your browser may have trouble rendering this page. See supported browsers for more information.

|<<>>|185 of 273 Show listMobile Mode

Encodo Git Handbook 1.2 is available

Published by marco on

Updated by marco on

tl;dr: Encodo Systems AG has moved from Perforce to Git and has written a manual for getting started for other users or companies looking to make the leap. It’s available for free at Encodo Git Handbook.


In the beginning, there was Microsoft Visual SourceSafe. And it was not good.

In 1994, I started working for a small software company. Source control was a structured network share until I started moving projects into Microsoft Visual SourceSafe, which was slow and balky and feature-poor, but it was better than manual merging.

Until it corrupted its own database, losing our entire history. Luckily, we were able to piece together the repository from local workspaces. But the search was on to find a replacement.

In 1997, we moved to Perforce and were very happy for many years. I even used the two-user free license to run a personal Perforce server on earthli for a while.

Then I moved to Switzerland to work for Opus Software AG, a very tech-savvy company, which was, of course, using source-control software. You haven’t heard of it, though, because it was an internal tool. It worked fine and even supported branches, but some operations didn’t scale as well as they should and it was a bit difficult to understand, in general.

So, I started a campaign to move to something else. We evaluated various alternatives, including Subversion and Perforce. Perforce won—mostly because Subversion’s merging support in pre-1.5 versions was laughable—and I was back on the source-control system I’d been using for almost ten years at that point.

For my personal projects, I switched to Mercurial because I was working with other users and the two-user limit for the free Perforce license was no longer adequate, but neither was I willing to cough up $800 per user in order to continue using Perforce. I chose Mercurial because I wanted a DVCS and a good friend/coworker of mine is a lead developer on the project, so he was around to help me when I had questions.

When I left that company to found Encodo Systems AG, Perforce was the logical choice for source control. We used it exclusively for our own projects for several years, using Subversion only to access repositories hosted by two different customers. What finally broke Perforce’s lock on Encodo was offline and remote work. We finally got a customer who wanted to work with Git instead of Perforce or Subversion and the customer is king, so we started to learn Git.

It wasn’t easy at first, especially if you don’t read any documentation or background information on Git concepts. But we got the hang of it and quickly became accustomed to the freedom offered by Git versus a central-server solution like Perforce.

So off we went to do an internal evaluation on source-control systems, this time including Mercurial/Kiln, Git, PlasticSCM, Perforce and TFS. We quickly decided against TFS for several reasons, primarily that it was too tightly-coupled to other Microsoft systems that we weren’t using or prepared to use yet. Perforce was, at the time (February 2011), a wholly centralized solution and had not yet made moves in a DVCS direction. PlasticSCM was good, but didn’t overwhelm us and finally Mercurial was also good, but even my aforementioned colleague—the developer on the Mercurial project—told us that there was no advantage relative to Git if we were already familiar and (relatively) comfortable with Git.

So Encodo moved all of its source code to several Git repositories hosted on an internal Gitorious server. Since Git is more a version-control toolkit/framework than a complete end-user solution, I/we use several tools on top of Git to make it more comfortable and to reduce points-of-failure.

  • Encodo Git Shell: A shell based on Cygwin with a lot of default configuration to make it easier to work with Git on the command-line in Windows (discussed in the handbook)
  • SmartGit: SmartGit is a $50 Windows client for working with Git repositories. Most of use it for the graphical view of the repository log as well as file histories and for diffing and merging changes. It also has a handy Index Editor for staging/unstaging changes instead of entire files.
  • BeyondCompare: I use this excellent differ instead of P4merge or the standard differ in SmartGit because it offers very convenient in-place editing as well as an excellent matching algorithm that even allows user hints (the F7 key for those that use the feature).
  • P4merge: I still use this free Perforce tool for merging files because it’s really the best thing out there for three-way-merges (at least until I become more accustomed to the BeyondCompare three-way-merge window).
  • Enigma: A tool that we’ve started developing internally to provide a GUI overview to see the status of and apply operations to multiple repositories. We just did the 0.1 release internally last week so it’s not a huge part of my workflow yet, but it probably will be soon. (discussed in the handbook)

So, after nearly 15 years of using Perforce almost exclusively, I am now almost exclusively a Git user (I still use Subversion and Mercurial very rarely for some personal and customer projects). An Encodo developer, Stephan Hauser, wrote a handbook in June to help everyone get up-to-speed on using Git. I recently updated it to account for the last several months of working with Git and we published it just last week. You can download it for free at Encodo Git Handbook.