It’s no surprise that the pace of technological innovation in the startup and web development world greatly eclipses the pace of technology adoption at most enterprise organizations. Enterprises are generally slow, risk averse, and demand long-term support for products in which they invest. Startups, web development shops, and open source enthusiasts move at a significantly faster pace. While some enterprises are just now moving from the venerable CVS version control system to something like Subversion, the bulk of today’s generation of developers are using git (and GitHub).
Enterprises looking to attract new talent would do well to figure out how to use git, since most new hires will come in with mastery of it and will find it annoying to use crufty older version control systems. Unfortunately, enterprises often have well-established release processes built around their existing tools, making it extremely hard to replace them with something new like git.
Perforce, the company behind the Perforce version control system, is today announcing Perforce Git Fusion in an effort to bring the best of both worlds to enterprises and their developers. Perforce’s commercial version control system has typically been targeted at traditional enterprises, who benefit from its access control mechanisms and compliance auditing. The Perforce Git Fusion product purports to allow developers to use git just like they normally would but actually store everything in the Perforce central system.
According to Randy DeFauw, Technical Marketing Manager at Perforce, Perforce Git Fusion solves a couple of problems faced by organizations considering git. First, as projects grow so too does the size of the git repository. A natural decision is to break up the git repository into multiple sub-modules. This, according to DeFauw, is not always an efficient long-term solution as it results in lots of clones of lots of sub-modules. The flip side — using a single gigantic repository — means that it can be hard to develop and support a single product with multiple release schedules.
Aside from the pain of migrating to a new version control system, git also presents a few scary options to some enterprise customers. “Regulated industries are terrified of `git rebase`,” DeFauw told me.
“Git rebase” can alter the history of a repository, which would cause concern for auditing and compliance reasons. And while it’s fine to rebase locally in a private repository before the work is shared, you should never rebase history that is already shared. A Git administrator needs to take care to prevent rebasing of existing history, and even then a mistake might lead to unexpected results in the repository. In Perforce history can never be rewritten.
The product basically ingests the entirety of existing git repositories, and allows administrators to re-expose those as one or more new git repository. The contents are also available to developers using the traditional Perforce clients, too. This should allow multiple development teams to more easily consume a repository of shared resources while still working on and tracking the unique bits for their team.
Perforce Git Fusion sounds like a great idea, at least for existing Perforce customers. Developers get all the new hotness that is git, and release managers and auditors get all the tried-and-true enterprise development expertise of Perforce. Perforce Git Fusion will be included with the price of all Perforce purchases. If you’re not currently a Perforce customer, it’s not as clear to me whether Perforce Git Fusion is the right choice. Perforce does offer a free license for up to 20 users if you’d like to take it for a spin.