Wiki Tools

  • Find Page
  • Recent Changes
  • Page History
  • Attachments

FreeBSD repo

This page is intended to gather/store some links I have regarding the VCS used for the FreeBSD project.

Summary of project VCS usage

CVS has historically been used since the early 90's. At the present time, the src/ tree (containing the base OS source) has been moved to SVN. Other modules (ports/, www/, doc/, and the like) are still in CVS.

General blockers for bzr

  • Performance and size and whatnot. The various trees are on the order of hundreds of thousands of revisions of hundreds of thousands of files, in tens of thousands of directories. No compelling case has been presented for subtreeing, or breaking things up farther than the CVS modules already do other than "We can't handle it if it's not broken up", and there is strong desire to keep things together. Performance needs to be decent, especially network-wise for cloning and such, and repo size needs to be compact. Current CVS is ~3.1 gig for src+ports. And a conversion has to actually _finish_; this may or may not be easier from SVN.
  • KeywordExpansion is a requirement.

  • Partial checkouts are a requirement.
  • Efficient handling of the NuclearWaste and NuclearLaunchCodes issues are a requirement.

  • Export to CVS in one fashion or another.
  • Efficient cloning and mirroring of multiple branches.
  • Probably others...

  • FreeBSD wiki page on VersionControl has a table and a set of discussions. Hasn't been updated since the beginnings of the SVN switch, but gives a rundown of needed features.

  • The mailing list thread Curious about SCM choice is one of many pre- and post-SVN conversion about the topic. It's notable for the excellent post from Robert Watson about some of the reasons why the distributed systems were passed by. This is by no means the only such thread, but it's at the top of my head.


Well, on the one hand, I use both FreeBSD and bzr. I like them both, so I'd like to have them together.

On the other hand, bzr has certain advantages over other distributed systems that I think would allow it to fit much better for FreeBSD than the others. Some of the big ones are:

  • Explicit and built-in support for lockstep workflows via checkouts.
  • Use of monotonically-increasing revision numbers for easy offline comparison, and use in $Id$ keywords.

There are a number of blockers; some shared with the other distributed systems, in either theory or implementation (like the nuclear issues), and some much more bzr-specific (like performance). Because of these, if I were asked right now "Should FreeBSD use bzr?", the answer would have to be "No". I want to see that change to "Yes".