The Source Control component of Rational Team Concert is a component-based version control system built on the Jazz platform. It focuses on supporting geographically distributed teams and has strong support for parallel and agile development. It is built from the ground up to support a highly integrated collaborative development environment, integration with defect tracking, integration with builds, and process-centric automation. With these other software engineering aspects in mind, the Source Control component is flexible to accommodate different programming practices such as component-driven development or feature-driven development.
The storage model is entirely based on change set, which provide atomic changes to sets of files. Change sets are the base currency and can be shared (via work items), suspended, discarded, and reverted.
Teams or projects own a set of streams that provide a simple mechanism for sharing change sets between team members. Streams can be created easily for ad hoc collaborations, and streams can be created from builds to reproduce shipped products. In addition, streams provide an efficient scaling mechanism where teams of teams can be isolated and flow their changes into stream hierarchies as integration is needed.
Instead of combining all your change sets in the same namespace, components provide an addition composition mechanism to organize work in the same repository. Files are grouped into change sets which belong to a specific component, and components are grouped into streams.
Because everything is based on change sets, it is easy to switch between tasks by suspending and resuming change sets. You don't have to think about branching or tagging; just put aside your changes and get back to them later.
Teams can choose to replicate changes to separate RTC Servers to allow for source code to be mastered in multiple locations for availability purposes. By replicating change sets between servers, administrators have some additional flexibility as to how teams can work with source code as their products and requirements change over time.
Move and rename tracking
There is full support for tracking file renames and moves, in addition to support for merging structural conflicts.
Full administrative control to delete contents from source control
An administrator can delete the content associated to the version of a file, for example, to reclaim space or remove improper content.
You never have to remember to tag or label files in order to patch or start a maintenance line. Several levels of built-in parallel development exist to make it easy to isolate your work, or your team's work, as needed.
- Repository workspaces – Provide constant isolation. You don't have to make your changes visible to the team just to backup or use the repository features.
- Suspend and resume – Provide task level isolation for personal work.
- Work item or change request links – Provide lightweight task level isolation for personal or team work. Work on a feature, attach to a work item, and discard from your workspace. You or someone else continues the work by accepting the change sets back into their repository workspace.
- Streams – Provide team isolation.
- Locking – Provides selective isolation. By locking files in the stream, users can avoid merging, thus maintaining isolation from the team at a fine granularity.
- File and folder read permissions – Full control over read access based on teams and roles
- Timelines – Provide process isolation.
- Repositories – Operate in a separate server.
Change set searching
If you want to find the changes that your intern made last week, or find that README.TXT file that you deleted last month, you can use the powerful change set search features.
Quickly implement continuous integration and other agile processes. Support customization based on the process being used by your team.
A dashboard viewlet can be configured to show the amount of source control activity that is happening over time. Monitoring this can help identify trends, such as the pace of changes slowing down as a stream stablizes for release.
Deliveries fire an event notification so that team members can be aware of work being done in relevant streams. The event is presented as a toast popup when it is discovered, and past changes can be reviewed in the Event Log.