Kore Nordmann - PHP / Projects / Politics ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :Author: Kore Nordmann :Date: Wed, 28 Jul 2010 16:51:57 +0200 :Revision: 4 :Copyright: CC by-sa ======================= VCS wrapper development ======================= :Description: We started developing a wrapper for different version control systems. A rough description and some context... Since arbit__ 0.1 is nearly done and will be released soonish, we already started with some library development to fullfil our goals for the 0.2 release. The main item on the roadmap__ is the support for code in version control systems (VCS), which includes the possibility to integrate Continuous Integration, API Documentation etc., in arbit. We looked around but could not find a good abstraction layer for different VCS so we started with our own. We only need one for reading the contents of VCS, but be able to support as many VCS as possible. .. image:: vcs_wrapper_class_diagram_small.png :alt: VCS wrapper class diagram :target: vcs_wrapper_class_diagram.png :align: right :width: 198 :height: 316 We are using the abstract concepts of files and directories, implementing various interfaces, which describe what the VCS actually supports. An extract from the class diagram can be found on the right. .. note:: I founded Qafoo together with two other Arbit contributors, and beside consulting and training around high quality PHP software we provide `commercial support for Arbit`__ and other software quality related tools. __ http://qafoo.com/services/support.html Already supported ================= The source runs on PHP 5.2 (and of course 5.3), to enable a wide adoption, and already supports the following VCS: - SVN - Using the SVN command line interface - Using the PHP extension `pecl/svn`__ - CVS, using the CVS command line client, contributed by `Manuel Pichler`__ - GIT, using the GIT command line client - Archive, using the ZipArchive__ PHP class Each wrapper has special requirements, like the installed extensions or CLI tools. The core itself only depends on a default PHP 5.2 installation - it uses the default modules SPL, xmlreader (SVN-Cli), PCRE and optionally SQLite3 for faster caching of the version control metadata cache metadata. The wrapper has been developed test-driven and has a quite high test coverage. But there may still be some special issues inside the VCS, which we were not aware of while developing this first version. A basic overview, the original design document can both be found inside the wiki__ in the `issue tracker`__ for the project. __ http://arbitracker.org/.html __ http://tracker.arbitracker.org/arbit/issue_tracker/roadmap __ http://pecl.php.net/package/svn __ http://manuel-pichler.de/ __ http://docs.php.net/manual/en/book.zip.php __ http://tracker.arbitracker.org/vcs_wrapper/documentation/view/Start __ http://tracker.arbitracker.org/vcs_wrapper Download and test ================= There is no release yet, but you can `check it out from SVN`__. We would like to ask you to test the VCS wrapper and maybe provide implementations for your favourite VCS. The source code is licensed under LGPL 3, so you should be able to integrate it in your tools. __ http://tracker.arbitracker.org/vcs_wrapper/documentation/view/Download Trackbacks ========== Comments ========