Tuleap Directory Structure

In this paragraph, we will focus on the source code directory structure. For a more general presentation of Tuleap File Structure, see the Tuleap Administration Guide.

Here is a description of the main directories (path is given as relative to ‘/usr/share/tuleap’):

  • tools contains several tools and utilities used in Tuleap administration: DB backup script, installation scripts, etc.

  • documentation contains the user guide, installation guide, administration guide, and hopefully this guide. Some of those guides are available as HTML only, while others are written in DocBook XML format and rendered in HTML and PDF. The transformation from XML to PDF and HTML requires a java interpreter and an XSLT engine: this setup is currently described in Chapter 9

  • plugins contains the plugins installed into Tuleap. One directory to rule them all. The mirror in /etc/codendi/ is for customization.

  • site-content is the repository for site specific text: introductory messages, local instructions, license, policies, etc. Files located in the site-content directory are simple text files but may contain HTML tags, as well as PHP instructions. They are usually included in the page by one of the higher level PHP scripts.

  • src this is the main source directory, containing all PHP scripts, and more.

    • src/common contains PHP classes (in Object-Oriented sense) that are inherited by other higher level objects. These classes are pure PHP and contain only logic, and no HTML rendering at all.

    • src/db contains database related scripts:

      • src/db/upgrades is the repository for upgrade scripts written in either Perl or SQL
      • src/db/mysql has two files, database_initvalues.sql and database_structure.sql, that define the original database available when a a new Tuleap server is installed. These files must be updated when database patches are added to the src/db/upgrades directory.
    • src/etc is the directory where configuration file templates are stored: local.inc, and Apache configuration (httpd.conf, mailman.conf and cvsweb.conf).

    • src/utils contains various utilities like cron jobs or initialization scripts. Most files in this directory are written in Perl.

      • src/utils/cvs1 has all cvs-related scripts, e.g. log_accum that generates post-commit messages and emails them.
      • src/utils/underworld-dummy contains cron jobs that concern the dummy user (mostly, DB dumps) .
      • SF/utils/underworld-root contains cron jobs dealing with statistics.
    • src/www contains all the PHP scripts (except those in SF/common). Services are organized in different directories (e.g. tracker, forum, docman, cvs etc.). Most services are quite independent from each other, so you can modify one without interfering with others. There are some special directories though; here are a few examples:

      • src/www/include contains PHP scripts that are included by all other scripts, e.g. pre.php.
      • Site level services like src/www/admin (user management, project creation scripts, etc.), src/www/my for user home pages.
      • src/www/scripts contains javascript files
      • src/www/themes contains UI theme data: stylesheets and images