Project Management
From RoboWiki
Contents |
Project Management with Mercurial
This page describes how we are using Mercurial to manage the source code for our projects. Using Tortoise Hg describes specific instructions on how to use Mercurial.
The goal of the project management procedures is to allow developers to work independently on separate machines while also maintaining copies of work in progress on a central server without impacting the work of other developers. This is accomplished using several Mercurial repositories chained together.
The Master Repository
The master repository for robot programming resides at \\draftserver\robotics\Students\Programming\LabviewRepo. The repository for DS (scouting) programming is located at \\draftserver\robotics\Students\Programming\DSDepo. All of the code checked into the master repository should be functional. Code checked into the master repository with problems should be fixed quickly as all project developers rely on that code.
The Personal Repository
Each project developer will create a clone of the master repository in a directory on the draftserver. For example Chad would create a clone for his work in \\draftserver\robotics\Students\Chad Eatman\. The personal draftserver repository will be the source of repositories on any other development machines. Each developer will use their personal draftserver repository to save code in transition. The code need not be functional as this is code that each developer is working. Functional code can be pushed from the personal draftserver repository into the master repository.
The purpose of the personal draftserver repository is to give each developer a back up of their work in progress. Periodically, developers should push changes from their work stations back to their draft server repository. Completed functional code is pushed from the personal draftserver repository to the master repository for other team members to use.
Development Project Repositories
Developers clone their individual personal repositories to development workstations. Developers can create as many repositories as they like for the different projects they are working on. Changes can always be saved into the local project repository. Periodically these changes can be pushed to the personal draftserver repository either as a backup or on the way to the master repository.
Overview
The diagram shows the typical repository setup.
This system satisfies several useful goals.
- There is always a single master repository
- Each developer has a separate workspace that is backed up on the server that does not affect other developers
- Each developer can work independently on workstations and backup regularly to the separate server workspace
- Each developer can work independently and transfer change sets to other developers even when the master repository is not available

