.. _contribute: How to contribute ================= There are a lot of ways people may contribute to vcs. First of all, if you spot a bug please file it at `issue tracker `_. Moreover, if you feel you can fix the problem on your own and want to contribute to vcs, just fork from your preferred scm and send us your pull request. .. note:: Oh, some codes may be very ugly. If you spot ugly code, file a bug/clean it/ make it more readable/send us a note. Repositories ------------ As we do *various version control systems*, we also try to be flexible at where code resides and therefor, could be accessed by wider audience. - Main git repository is at https://github.com/codeinn/vcs/ - Main Mercurial repository is at https://bitbucket.org/marcinkuzminski/vcs/ We are going to create one *official* repository per supported :ref:`backend `. How to write backend -------------------- Don't see you favorite scm at supported :ref:`backends ` but like vcs :ref:`API `? Writing your own backend is in fact very simple process - all the backends should extend from :ref:`base backend `, however, as there are a few classes that needs to be written (repository, changeset, in-memory-changeset, workingdir) one would probably want to review existing backends' codebase. Tests ----- Tests are fundamental to vcs development process. In fact we try to do TDD_ as much as we can, however it doesn't always fit well with open source projects development. Nevertheless, we don't accept patches without tests. So... test, damn it! Whole heavy-lifting is done for you already, anyway (unless you don't intend to write new backend)! .. _TDD: http://en.wikipedia.org/wiki/Test-driven_development