Organizing the depot

You can think of a depot as a top-level directory. Consider the following factors as you decide how to organize your depot:

  • Type of content: create depots or mainline streams according to the nature of your projects and their relationships (for example, applications with multiple components developed on separate schedules).
  • Release requirements: within a project, create streams for each release and merge changes between branches to control the introduction of features and bug fixes.
  • Build management: use labels and changelists to control the file revisions that are built; use client specifications and views to ensure clean build areas.

A basic and logical way to organize the depot is to create one subdirectory (stream) for each project. For example, if your company is working on Jam, you might devote one stream to the release presently in development, another to already-released software, and perhaps one to your corporate web site. Your developers can modify their workspace views to map the files in their project, excluding other projects that are not of interest. For example, if Earl maintains the web site, his workspace view might look like this:

//JamCode/www/dev/...     //earl-web-catalpa/www/development/...
//JamCode/www/review/...  //earl-web-catalpa/www/review/...
//JamCode/www/live/...    //earl-web-catalpa/www/live/...

And Gale, who’s working on Jam, sets up her workspace view as:

//Jamcode/dev/jam/... //gale-jam-oak/jam/...

You can organize according to projects or according to the purpose of a stream. For example, to organize the depot according to projects, you can use a structure like the following:

//Acme/project1/main/
//Acme/project1/release 1.0/
//Acme/project1/release 1.1/

Or, to organize the depot according to the purpose of each stream, you can use a structure like the following:

//Acme/main/project1/
//Acme/main/project2/
//Acme/release1.0/project1/
//Acme/release1.0/project2/
//Acme/release2.0/project1/
//Acme/release2.0/project2/

Another approach is to create one depot for each project. Choose a structure that makes branching and merging as simple as possible, so that the history of your activities makes sense to you.