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 the 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 Linux® and the UNIX® system 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

Identities: 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)
  • Object owner (except for replicas)
  • VOB owner
  • root (Linux® and the UNIX® system)
  • Member of the VersionVault administrators group (Windows®)
Locks: Restrictions depend on the kind of object:
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: 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.

Exceptions to restrictions on the transfer of branch type mastership

If all of the following conditions are true,
  • The replica feature level is 9 or greater
  • Request for mastership is enabled
  • Instances of the branch type are explicitly mastered
then the transfer of branch type mastership succeeds if any of the following conditions is true:
  • An instance of the branch type is locked
  • An instance has a checkout
  • All instances are blocked.

Options and arguments

Event records and comments

Default
Creates one or more event records, with commenting controlled by the standard VersionVault user profile (default: –nc). See Event records and comments in the multitool reference page. To edit a comment, use cleartool chevent.
–c/omment comment | –cfi/le comment-file-pname | –cq/uery | –cqe/ach | –nc/omment
Overrides the default with the specified comment option.

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]
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:

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:
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 about transferring mastership of a stream, 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 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 c:\Program Files\HCL\CCM\VersionVault\var\shipping\ms_ship\outgoing
    \sync_bangalore_19-Aug-02.09.33.02_3447_1
    ...

    At the replica that masters the branch type:



    multitool syncreplica –import –receive



    Applied sync. packet
    /var/adm/hcl/versionvault/shipping/ms_ship/incoming/
    sync_bangalore_19-Aug-02.09.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"