version control with darcs

darcs logo

A few months ago Andreas Gohr started using darcs as his version control tool for Dokuwiki. It was the first time i heard about darcs, but in the past three months i came across the name more and more.

darcs is a distributed system for version control, meaning there is no central server like with other systems, by example CVS. This has some very nice advantages, by examples you do not need to have a connection to a server to be able to 'commit' your changes. With darcs every sandbox is also a repository. Darcs has some other nice features:

  • instead of versioning every file it uses patchsets to bundle changes to sets of files. This makes sharing very easy
  • A repository can be made available online using a normal webserver
  • you can have a local repository with your own modifications and still update to the latest code (thus making it easy to make a personal patched version of the app without having to re-apply your changes everytime you update to a new version, darcs does this for you)
  • you can easily make patches and contribute them back to the project.

For Dutch speaking people: you can find a longer explanation on my normal blog (i didn't translate it all to english because google already has a lot of good pages in English about darcs))

Using cvs2darcs i have converted my CVS repository for NP_AttachFile to a darcs-repo and made it available online. Here is how you could use it:

  • Get it with darcs get Now you have the repository on your own computer and you can start editing it.
  • After making some changes you can commit the changes to your local repository: darcs record.
  • Now suppose you want to send me your changes so that i can include them in the official version of the plugin you simply do: darcs send. This will send your patchset by e-mail to me.
  • Or if that doesn't work, you can do: darcs send -o patchfile, which will write your patch to 'patchfile', so that you can manually mail that file to me.
  • When i want to include your changes in my repo i simply do darcs apply pathfile.

Cool :)


Comment Atom Feed