The idea would be to propose a minimal darcs client written in a portable language, so that people using exotic platforms would still be able to contribute to projects that use darcs for version control.

Let us call this hypothetic darcs client pydarcs.

Its subcommands should be:

  • get : do a lazy get of a repository (hashed format).
  • makebundle : create a patch whose context is the inventory of the current repository and record it as an external file, as if it was recorded and sent with the -O flag in the usual darcs client.

So the idea is that pydarcs does not modify the local repository, does not pull nor compare remote patches with local patches. It records patches as bundle files.

The aim is to make it easy for someone to send a bugfix to a project. The workflow would be:

  • wget pydarcs from the darcs website
  • pydarcs get project-url
  • write code
  • pydarcs record -m“fix bug #514”
  • send fix_bug__514.dpatch as an attachment to the project mailing list

The idea is to have a small and easily maintainable program. Hence, it has to be reduced to the most vital features, and should not implement commands like: add, move, replace, rm.

Maybe fancy commands like changes (without flags, hence without -v) and whatsnew could be added in a non-initial version.


  1. get a working copy (from a local repository or http)
  2. get a complete clone of a darcs repository (local or http)
  3. get –lazy
  4. changes (without -i nor -v), ie, display the list of patches of the current repo
  5. whatsnew, ie, display changes between working copy and pristine
  6. revert -a, ie, reset working copy to pristine
  7. makebundle, ie, do a record -a and send -O

Bonus points for writing the test scripts alongside with the actual code.