NetBSD migration path to Mercurial

This page describes what's involved in migrating NetBSD from CVS to Mercurial.

What Mercurial is

Mercurial is an open-source version control system. It is a distributed version control system based on the commit hashcode model shared with git and other DVCSes. It is fast and powerful and has long emphasized a certain polish of production.

Why Mercurial

Mercurial is a modern VCS; it is maintained; it is capable of handling the NetBSD repositories; and it is cleanly designed, simple, and easy to use. The first three of these properties are necessary requirements for NetBSD to migrate (I don't think any of them are particularly controversial); the last sets it apart from git, which is the other immediately available alternative. (The third option, writing our own, is not currently realistic.)

One could write a lot of gung-ho IT IS REALLY GR8!!!11!! boosterism here too, of course, but I'll leave that for someone else.


There are two categories of issues related to migrating a project the size of NetBSD: first, what the project and the world around the project will look like after the migration is done, and second, what things need to be done to get there. The purpose of this page is to tackle the first: what things in the project will be different and what they'll be like. This includes not just user-facing things like commit procedures but also backend considerations and administration.

There's a second page with a list of work that needs to be done.


Technical concerns (demands on the system's operational model)

Conversion of CVS repository phenomena Implementation concerns (demands on the system as it exists) Community deployment issues Developer deployment issues Many of these issues are already documented in the existing workflows writeup.

Releng deployment issues

Backend/admins deployment issues cvs assumptions / scripted usage in the tree Other questions