March 8, 2013

Playing With Git Fusion

Git at Scale
MERGE User Conference

git fusion logoPerforce's Git Fusion builds in part on Perforce, and in part on Git technologies via some intermediate Python glue (a.k.a. Git Fusion itself,) and this presents some interesting opportunities and difficult challenges from the perspective of performance tuning. We've been analyzing various aspects of this software from CPU and I/O server-side, to the Perforce commands Git Fusion uses against its paired Perforce Server, to parallelism and possibilities for horizontal scaling. Due to the complexity of the interactions of these two server types, detecting specific bottlenecks can be time-consuming. Still, thanks in part to Perforce's replication and broker capabilities, and Git inborn decentralization, there are plenty of specific performance enhancements we can implement using triggers and intelligently distributing the workload where possible.

Full branching support is not available at this time; but individual Perforce branches can be used to help circumvent current branch limitations in Git Fusion, without installing multiple Git Fusion instances.

Meanwhile, even just within the servers themselves (Perforce and Git) and within the operating systems of the client and server there are knobs and dials to tweak and change, and getting all these variables to come together can be tricky. Luckily, that's exactly what we're trying to do for our customers. We're all looking forward to seeing you at Merge 2013 and showing you what we've done!