The Change Package Object

A change package is a StarTeam object that is persisted in the repository’s database. A change package object is used to store information defined in a View Compare/Merge session when it is saved. In this state, a saved View Compare/Merge session is presented to users as owned by the target view. When the View Compare/Merge session is committed, it is still presented as belonging to the target view, but it is presented as a committed change package that can be queried and reused in additional ways.

A View Compare/Merge session can be created at the client and committed without ever being saved, consequently it is possible to create a change package object in the same transaction that applies its updates. When this occurs, the View Compare/Merge session is never shown as a saved change package. This is desirable for quick change sessions, for example, a View Compare/Merge promote of a few items.

The following are features of a change package object:

In addition to the StarTeam Server’s persistence and versioning service, change packages also use the server’s locking service. This means that a change package can be locked exclusively or with a shared lock. An exclusive lock is automatically applied to a saved change package when it is opened for editing. A change package can also be opened in read-only mode, though a non-exclusive lock is not applied for this use. Change packages cannot be “flagged” (bookmarked). Internally, change package objects also use attachments to store options and session state.

Change Package Security

Change packages have similar access rights as other view-level objects such as labels and promotion states. The ability to perform specific updates while committing a change session are derived from the permissions of the target view. For example, the ability to check-in a new revision of a file is derived from that permission in the target view.

An administrator can grant or deny the following view-level rights to any user or group:

Create change package
Users who do not have this right for a given view can start a change session for that view (in the client application), but they can only save it to an external file format; they cannot save it persistently in the database.
Modify properties
Users who do not have this right for a given view cannot create a new revision of a change package for that view, for example, by re-saving or committing an already-saved change package.
Delete from view
Users who do not have this right for a given view cannot delete a saved change package in that view.
See change package and its properties
Users who do not have this right for a given view cannot access change package objects for that view.
Change access rights
Users who do not have this right can not modify change package access rights.
See history
Users who do not have this right cannot see historic revisions of a change package.
Set exclusive locks
Users who do not have this right cannot acquire and exclusive lock on a change package. this means that they cannot edit a saved change package.
Break exclusive locks
Users who do not have this right cannot break an exclusive lock currently held by another user.
Label rights
These rights control the ability to change what labels a change package is attached to. They include: Attach/Adjust view labels, Detach view labels, Attach/Adjust revision labels, and Detach from revision labels.
Note: Change package access rights are enforced with the same group/user/container resolution hierarchy as for other security ACLs.

Change Package Replay

You can select a committed change package and apply the same changes to another view. This capability is termed replay. A change package selected for replay is termed the source change package, and the view that it originally updated (originally the target view) is termed the source view. The new view to which the updates are to be replayed is termed the replay target view. The replay is identical in function to a View Compare/Merge merge in which the items updated by the source change package are selected as the source scope and merged to the replay target view.

When a change package is replayed to another view, a new change package is created for the new target view. The new session acts as the staging area for the replayed changes so they can be reviewed, adjusted, and so forth before being committed to the new target.

  • If the replay target view is a parent of the source view, the replay is performed as a View Compare/Merge promote.
  • If the replay target view is a child of the source view, the replay is performed as a View Compare/Merge rebase.
  • If the replay target view is not an immediate child or parent of the source view, the replay is performed as a View Compare/Merge replicate.