The project management system in Electric allows multiple users to work together on the design of a circuit. This is accomplished by having a repository in a shared location, and local libraries in each user's disk area. Users work on cells by checking them out of the repository, making changes, and then checking them back in. The project management system ensures that only one user can access a cell at a time. In addition, it also applies its understanding of the circuit hierarchy to inform users of potential inconsistencies that may arise.

The project management system uses the full power of cell naming to accomplish its task. It handles design history by creating a new version of a cell each time it is checked out of the repository. The user's library contains only the most recent version of each cell, taken from the repository. When a user updates their library from the repository, newer versions are brought in and substituted for older versions. Unless the user specifically asks for an older version, it is removed from their library.

Because the project management system uses versions to manage design progress, users are discouraged from managing versions explicitly. Thus, the command New Version of Current Cell (in menu Cell) is not allowed. Also, it is not appropriate for a user to use two different versions of a cell explicitly, because they are considered to be part of a single cell's history.

All commands to the project management system can be found under the Project Management command (in menu File).

Subcommands exist for checking cells in and out, updating local libraries from the repository, and more. Many project management functions are also in context menus in the cell explorer.

The first step needed to use the project management system is to choose a location for the repository. This must be a shared location that each user can access (read and write).

Use the Project Management Preferences, in menu File / Preferences..., "General" section, "Project Management" tab.

Each user must set the same location in their Project Management Preferences so that they can share the repository. Also, be sure that your user name is correct, as this will be used when tagging file changes.

After the repository has been set, libraries can be entered into it. Use the Add Current Library To Repository command to place your library in the repository. Use Add All Libraries To Repository to add all libraries in the system. Note that a library that has been entered into the repository is also tagged with information about the repository location, as well as the state of the cells (checked-in or checked-out). Therefore, you should save your library after entering it into the repository.

Other users can obtain a copy of your library directly from the repository by using the Get Library From Repository... command.

#### Checking Cells In and Out

When a cell is not checked out, you cannot make changes to it. Any change is immediately undone by the project management system. This means that a change which affects unchecked-out cells, higher up the hierarchy, will also be disallowed.

To check-out the current cell, use the Check Out This Cell command. If there are related cells (hierarchically above or below this) that are already checked-out to other users, you will be given warnings about potential conflicts that may arise.

To check the current cell back in, use the Check In This Cell... command. You will be prompted for a documentation message about the change. No further changes will be allowed to the cell. Note that when checking-in a cell, other cells above and below this in the hierarchy will also be checked-in. This is because changes affect other cells in the hierarchy, and so consistent pieces of the hierarchy must be updated at the same time.

The cell explorer shows the state of cells that are under project management control (see Section 4-5-2). Locks are drawn over cells to indicate their state (checked-in, checked-out to you, or checked-out to others). You can also access many of the project management commands by selecting cells in the explorer and using context menu commands. |

To update your library so that it contains the most recent version of every cell, use the Update command. This will retrieve the newest version of every cell in every library that is being managed. You will be given a list of cells that were replaced.

#### Advanced Commands

If, after a cell has been checked-out, you change your mind and do not wish to make changes, use the Rollback and Release Check-Out command (or use the "Rollback and Release Check-Out" context menu when clicking on a cell name in the cell explorer). This will destroy any changes made to the cell since it was checked-out and revert the cell to its state when it was checked-in.

If, in the course of design, a new cell is created, it must be added to the repository so that others can share it. Use the Add This Cell command to include the cell in the repository. Similarly, if a cell is to be deleted, use the Remove This Cell command to delete it from the repository.

To examine the history of changes to a cell, use the Show History of This Cell... command (or use the "Show History of This Cell..." context menu when clicking on a cell name in the cell explorer). Besides showing the history of changes, you can use this dialog to retrieve an earlier version of the cell.

#### Under the Hood

The project management system makes use of version information on all cells to control cell changes. When a cell is checked-out, a new version is made in your local library, and the old version is deleted. All instances of the old version are switched to the new version. The old version remains in the repository. When the cell is checked-in, that new version also goes into the repository. When updates are done, newer versions are obtained from the repository, and appropriate substitutions are performed.