chmaster

Transfers mastership of an object

Applicability

Product

Command type

VersionVault

cleartool subcommand

MultiSite

multitool subcommand

Platform

UNIX

Linux

Windows

Synopsis

chmaster [ –c/omment comment | –cfi/le comment-file-pname | –cq/uery
| –cqe/ach | –nc/omment ]

{ master-replica-selector object-selector ...

| [ –pname ] master-replica-selector branch-or-element-pname ...

| –str/eam [ –ove/rride ] master-replica-selector stream-selector ...

| –def/ault [ –pname ] branch-pname ... | –def/ault brtype-selector ...

| –all [ –obsolete_replica old-replica-selector ]

[ –l/ong ] [ –vie/w view-tag ] master-replica-selector

}

Description

This command transfers the mastership of one or more objects from one replica to another. Only the current replica is affected immediately; other replicas are notified of the mastership transfers through the normal exchange of update packets.

To limit use of this command to a certain set of users, you can create triggers. For more information, see Help.

Specifying a view context

The chmaster command requires a view context. If you are not in a set view or working directory view on UNIX or Linux or in a view drive on Windows, you can specify a view on the command line, as shown in the following table. If you specify a dynamic view, it must be active on your host.

Note:

A view you specify in the chmaster command takes precedence over your current set view, working directory view, or view drive.

Argument

How to specify a view

object-selector brtype-selector

Use a view-extended pathname as the vob-selector portion of the argument. For example:

lbtype:LABEL1@/view/jtg/vobs/dev

brtype:v1.0_bugfix@/view/jtg/vobs/dev

lbtype:LABEL1@s:\dev

brtype:v1.0_bugfix@s:\dev

branch-pname element-pname

Specify branch-pname or element-pname as a view-extended pathname. For example:

/view/jtg/vobs/dev/cmd.c@@

/view/jtg/vobs/dev/cmd.c@@/main

s:\dev\cmd.c@@

s:\dev\cmd.c@@\main

master-replica-selector (for the chmaster –all variant)

Use the –view option or use a view-extended pathname as the vob-selector portion of the argument. For example:

–view jtg replica:boston_hub@\dev

replica:boston_hub@/view/jtg/vobs/dev

replica:boston_hub@s:\dev

Restrictions

ACL authorization

If ACLs are enabled, the principal must have the following permissions:
  • read-info on VOB object
  • read-info on object
  • chmaster on object

Non-ACL authorization

For all UCM objects except baselines, no special identity is required. For baselines and all non-UCM objects, you must have one of the following identities:

  • Object creator (except for replicas; this only matters for branch instances)
  • Object owner (except for replicas)
  • VOB owner
  • root (UNIX and Linux)
  • Member of the VersionVault administrators group (Windows)

Locks

Object whose mastership is changing

Locks on these objects cause the chmaster command to fail

Element

Element, element type, VOB

Branch

Branch, branch type, VOB

Type object

Type object, VOB

Hyperlink

Hyperlink type, VOB

Baseline

Baseline, VOB, replica, components associated with the baseline

Stream

Stream, activity

Component

Component, VOB, replica

Policy Policy, VOB
Rolemap Rolemap, VOB

Mastership

Your current replica must master the object. Using both –all and –obsolete_replica overrides this restriction, but you must not use the –obsolete_replica option except in special circumstances. (See the description of the –all option.)

Other restrictions

You cannot transfer mastership of a branch if either of these conditions exist:

  • There are reserved checkouts on that branch.
  • There are unreserved checkouts on that branch made without the –nmaster option.

Options and arguments

Event records and comments

Default
Creates one or more event records, with commenting controlled by your .versionvault_profile file (default: –nc). See the comments reference page. Comments can be edited with chevent.
–c/omment comment | –cfi/le comment-file-pname |–cq/uery | –cqe/ach | –nc/omment
Overrides the default with the option you specify. See the comments reference page.

Specifying the objects

Default
  None.
master-replica-selector object-selector ...
Transfers mastership of objects specified with object-selector to the replica specified with master-replica-selector. Specify master-replica-selector in the form [replica:]replica-name[@vob-selector].

Table for master-replica-selector object-selector

replica-name

Name of the replica (displayed with lsreplica)

vob-selector

VOB family of the replica; can be omitted if the current working directory is within the VOB.

Specify vob-selector in the form [vob:]pname-in-vob

pname-in-vob

Pathname of the VOB tag (whether or not the VOB is mounted) or of any file system object within the VOB (if the VOB is mounted)

Specify object-selector in one of the following forms:

Table for object-selector

vob-selector

vob:pname-in-vob

where

pname-in-vob

Pathname of the VOB tag (whether or not the VOB is mounted) or of any file system object within the VOB (if the VOB is mounted)

attribute-type-selector

[attype:]type-name[@vob-selector]

branch-type-selector

[brtype:]type-name[@vob-selector]

element-type-selector

[eltype:]type-name[@vob-selector]

hyperlink-type-selector

[hltype:]type-name[@vob-selector]

label-type-selector

[lbtype:]type-name[@vob-selector]

hlink-selector

[hlink:]hlink-id[@vob-selector]

oid-obj-selector

oid:object-oid[@vob-selector]

replica-selector

[replica:]replica-name[@vob-selector]

baseline-selector

[baseline:]baseline-name[@vob-selector]

component-selector

[component:]component-name[@vob-selector]

[ –pname ] master-replica-selector branch-or-element-pname ...
Transfers mastership of the specified branches or elements to the replica specified with master-replica-selector. A branch pathname takes the form element-name@@/branch..., for example, cmdsyn.c@@/main/bugfix, and an element pathname takes the form element-name@@, for example, cmdsyn.c@@. If branch-or-element-pname has the form of an object selector, you must include the –pname option to indicate that pname is a pathname.
–str/eam [ –ove/rride ] master-replica-selector stream-selector ...
Transfers mastership of the specified streams and their associated objects to the replica specified with master-replica-selector. Specify stream-selector in the following form:

Table

stream-selector

[stream:]stream-name[@vob-selector]

Use the –override option only if the chmaster –stream command fails. With –override, chmaster attempts to transfer mastership of objects whose mastership was not transferred during the original invocation of the command. For more information, see the Help.

–a/ll [ –obsolete_replica old-replica-selector ] [ –l/ong ] [ –vie/w view-tag ] master-replica-selector
Important:

Incorrect use of the –obsolete_replica form of the command can lead to divergence among the replicas in a family.

Transfers to master-replica-selector mastership of all objects that are located in and mastered by the current replica. (The chmaster command determines the current replica by using the vob-selector that you specify as part of master-replica-selector. If you do not include a vob-selector, chmaster uses the replica containing the current working directory.)

If errors occur, the command continues, but after finishing, it reports that not all mastership changes succeeded.

With –long, chmaster lists the objects whose mastership is changing.

With –view, chmaster uses the specified view as the view context.

With –obsolete_replica, chmaster transfers mastership of all objects in the replica specified with old-replica-selector. Also, chmaster associates nonmastered checkouts with the new replica. Use this form of chmaster only when replica old-replica-selector is no longer available (for example, was deleted accidentally). Before entering this command, you must make sure that old-replica-selector masters itself or is mastered by the replica that it last updated. Then, enter the chmaster command at the last-updated replica. You must also send update packets from the last-updated replica to all other remaining replicas in the family. For more information, see the rmreplica reference page.

Returning mastership of branches to default state

Default
None.
–def/ault [ –pname ] branch-pname ...
Transfers mastership of branch-pname to the replica that masters the branch type. If branch-pname has the form of an object selector, you must include the –pname option to indicate that branch-pname is a pathname.
–def/ault brtype-selector ...
Removes explicit mastership of branches that are mastered explicitly by the current replica and are instances of the type specified by brtype-selector.
Note:

You can use this command only at the replica that masters the branch type.

Examples

  • At replica boston_hub, transfer mastership of label type V1.0_BUGFIX to the sanfran_hub replica.

    multitool chmaster sanfran_hub lbtype:V1.0_BUGFIX
    Changed mastership of "V1.0_BUGFIX" to "sanfran_hub"

  • At replica sanfran_hub, transfer mastership of element list.c to the sydney replica.

    multitool chmaster sydney list.c@@
    Changed mastership of "list.c" to "sydney"

  • At replica sanfran_hub, transfer mastership of the stream v2.1.bl5 and its associated objects to the boston_hub replica.

    multitool chmaster –stream boston_hub@/vobs_dev stream:v2.1.bl5@/vobs_dev

  • At the replica that is the master of replica sanfran_hub, make sanfran_hub self-mastering.

    multitool chmaster sanfran_hub replica:sanfran_hub
    Changed mastership of "sanfran_hub" to "sanfran_hub"

  • At replica buenosaires, transfer mastership of branch cache.c@@/main/v3_dev to boston_hub.
    multitool chmaster boston_hub cache.c@@/main/v3_dev 
    Changed mastership of branch "/vobs/dev/cache.c@@/main/v3_dev" to "boston_hub"
  • For all objects mastered by the current replica, transfer mastership to sanfran_hub.

    multitool chmaster –all sanfran_hub
    Changed mastership of all objects

  • Same as the preceding example, but have chmaster list each object whose mastership is changing, and specify a view context.

    multitool chmaster –all –long sanfran_hub@/view/jtg/vobs_dev
    Changed mastership of branch type sydney_main
    Changed mastership of label type SYDNEY_V2.0
    Changed mastership of replica sydney
    Changed mastership of all objects

  • Return mastership of a branch to the replica that masters the branch type and then remove its explicit mastership.

    At the replica that masters the branch:

    multitool describe –fmt "%[master]p\n" brtype:v3_bugfix
    boston_hub@\dev
    multitool chmaster boston_hub@\dev \dev\acc.c@@\main\v3_bugfix
    Changed mastership of branch "\dev\acc.c@@\main\v3_bugfix"
            to "boston_hub@\dev"

    multitool syncreplica –export –fship boston_hub@\dev
    Generating synchronization packet versionvault-home-dir\var
    \shipping\ms_ship\outgoing\sync_bangalore_2006-08-19T09.33.02_3447_1
    ...

    At the replica that masters the branch type:

    multitool syncreplica –import –receive 
    Applied sync. packet versionvault-home-dir/var/shipping/ms_ship/incoming
    /sync_bangalore_2006-08-19T09.33.02_3447_1
    to VOB /net/minuteman/vobstg/dev.vbs
    multitool chmaster –default brtype:v3_bugfix 
    Changed mastership of branch type "v3_bugfix" to "default"