[ANNOUNCE] Subversion/svk mirror of the FreeBSD src tree

Chia-liang Kao clkao at clkao.org
Sat Sep 4 05:19:39 PDT 2004


I'm pleased to announce a Subversion/svk mirror of the freebsd src
tree at:


Web interface at http://svn.clkao.org/svnweb/freebsd/log/cvs/

The mirror is incremental, and will be run twice a day.

Meanwhile svk 0.20, the first beta release, is now available:
http://freshmeat.net/releases/171821/ [1]


svk (devel/svk) is a distributed version control system based on the
versioned filesystem of Subversion.  An introduction can be found at:

The key feature of svk is that you can create a local branch and
commit offline, and then generate patches against the trunk easily, or
merge back directly.  svk also provides smart merging facility, so you
can constantly merge from the trunk for a branch that lives longer.

The purpose of this mirror is not telling anyone to switch version
control systems immediately.  It's more like providing something like
how Perforce is currently used in the project, but more accessible and


* How do I use the mirror?

Since the tree is quite large, you might not want to grab the entire
repository's history.  You can start off with the 100 most recent
revisions like this:

  svk mirror //freebsd/trunk svn://svn.clkao.org/freebsd/cvs/trunk
  svk sync --skipto HEAD-100 //freebsd/trunk

* svk is built on-top of Subversion? I heard Subversion is slow.
  Doesn't that means svk is even slower?

svk only uses the lowest two layers of Subversion, which is
well-maintained and constantly improving.  On large trees that reside
locally, svk checkout is about twice as fast as svn.

* How is the mirror provided?

svk can also mirror non-subversion repositories with the nice and
extensible VCP framework:

svk mirror /freebsd/cvs cvs:/home/ncvs:src/... --branch-only=trunk,RELENG_4,RELENG_5
svk sync /freebsd/cvs

That's it.  You can run the mirror by yourself to pickup the branches
you like.  The memory consumption is about 300M.

* The RELENG_* trees look a bit strange upon its initial creation.

The branch grouping logic in VCP is not optimized yet for calculate
the accurate branching point for all files.  So the branches are
created in some weird way, but they are still correct.  It's currently
not a priority task for me.

* What happens when changes are merged back to cvs?

Unfortunately the meta-data used by svk to record merge history will
not (easily) propagate back to cvs.  But normally they should be just
be merged in the next merge down, while sometimes you might encounter
conflicts if someone alters your change.  A VCP Source driver for svk
that does bidirectional synchronization of meta-data is required to
solve this cleanly, however it's not a priority task for me either.

* What is on the development roadmap of svk?

o A lightweight, mirror-aware svkup protocol to update trees faster
  for non-developer access.

o A centralized version and thin client, pretty much like how Perforce
  works.  So people can choose between mirroring everything to be able
  to work offline, or to work online only.


Thanks to the FreeBSD project providing the excellent operating system
that has been my primary development platform since 8 years ago.

Special thanks to xs4all.nl for providing hardware and bandwidth for
svk development and such mirror service.

[1] Prebuilt binaries is available at http://rafan.infor.org/tmp/svk/.
    you only need devel/subversion (not even -perl) installed to run
    the binary.  However it is a bit slow with this binary, but you
    don't have to install zillions of dependencies, and can preview
    the software easily.

-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 187 bytes
Desc: not available
Url : http://lists.freebsd.org/pipermail/freebsd-hackers/attachments/20040904/df53548f/attachment.bin

More information about the freebsd-hackers mailing list