mkvob

Creates and registers a versioned object base (VOB)

Applicability

Product

Command type

VersionVault

cleartool subcommand

Platform

UNIX®

Linux®

Windows®

Synopsis

  • VersionVault on UNIX and Linux:
    mkvob –tag vob-tag [ –ucm/project ]
    [ –c/omment comment | –cfi/le comment-file-pname | –cq/uery

    | –cqe/ach | –nc/omment ]

    [ –tco/mment tag-comment ] [ –reg/ion network-region ]

    [ –opt/ions mount-options ] [ –nca/exported ]

    [ –pub/lic ] [ –pas/sword tag-registry-password ] [ –nrem/ote_admin ]

    [ -flevel feature-level ]

    { [ –hos/t hostname –hpa/th host-storage-pname

    –gpa/th global-storage-pname ] vob-storage-pname

    | -stgloc { vob-stgloc-name | –auto } }

  • VersionVault on Windows:
    mkvob –tag vob-tag [ –ucm/project ]
    [ –c/omment comment | –cfi/le comment-file-pname | –cq/uery

    | –cqe/ach | –nc/omment ]

    [ –tco/mment tag-comment ] [ –reg/ion network-region ]

    [ –opt/ions mount-options ] [ –pub/lic ]

    [ –pas/sword tag-registry-password ] [ –nrem/ote_admin ]

    [ –flevel feature-level ]

    { [ –hos/t hostname –hpa/th host-storage-pname

    –gpa/th global-storage-pname ] vob-storage-pname

    | -stgloc { vob-stgloc-name | –auto } }

Description

The mkvob command creates a new versioned object base, or VOB, as follows:

  • Creates a VOB storage directory at a specified path or in a VOB server storage location created with mkstgloc.
  • Creates a VOB tag with which the VOB is accessed by users.
  • Places entries in the network's VOB registries; use the lsvob command to list registered VOBs.
  • Starts a VOB server process on the named host.

A VOB storage directory is the root of a directory tree whose principal contents are a VOB database and a set of storage pools. See the mkstgloc reference page for details.

VOB directory elements

mkvob creates the following directory elements in a VOB:

  • VOB root directory. A mkdir command is implicitly executed to create a directory element (the VOB root directory) in the new VOB. Activating a VOB makes its root directory accessible at the path name specified by the VOB tag.
  • lost+found directory. In VersionVault, mkvob also creates a special directory element, lost+found, as a subdirectory of the VOB root directory. In this directory are placed elements that are no longer entered in any versioned directory.

Default storage pools

Each VOB storage directory is created with default storage pool subdirectories:

sdft

Default source storage pool

cdft

Default cleartext storage pool

ddft

Default derived object storage pool (VersionVault dynamic views)

Access permissions

In considering access permissions, it is important to distinguish these two top-level directories:

  • VOB storage directory. The standard directory created by this command, which is at the top level of a server storage location for VOBs.
  • VOB root directory. The VersionVault directory element accessed at the VOB tag.

VersionVault implements its own access scheme that goes beyond the standard operating system facilities. These settings control access to many operations involving the VOB; they can be changed with the protectvob command.

Important: Do not use operating system permission-setting utilities on a VOB storage directory. This creates inconsistencies and causes confusion.

See also the protect reference page (this command affects access to individual elements and shared derived objects).

UNIX and Linux VOBs

When you create a VOB on a UNIX or Linux system, you become its VOB owner and your groups become its group list. These settings control access to many operations involving the VOB; they can be changed with the protectvob command.

Your operating system-level UID and GID are assigned to the VOB storage and the default storage pools. The mode of the VOB storage directory is set according to your current umask setting. This affects which users, and which views, can access the VOB. The modes of storage pool directories are set to 755, regardless of your current umask setting.

The mode of the VOB root directory, by contrast, is derived from your current umask setting. The mode can changed subsequently with the protect command. Note that the w permission on this directory (as on any directory element) affects only the creation of view-private objects; changes to the VOB itself are controlled by VersionVault permissions, not those at the operating system level.

Windows VOBS

When you create a VOB on a Windows system, you become its VOB owner and your primary group becomes the VOB's assigned group. These settings control access to many operations involving the VOB; they can be changed with the protectvob command.

Your operating system-level user name and the name of the VersionVault administrators group are assigned to the VOB storage and the default storage pools. All users can read and search the storage pools, but only the VOB owner and VersionVault server processes can modify them.

Interop text mode support

By default, VOBs are created with interop text mode support enabled. In this mode, the VOB database keeps track of the number of lines in all versions of each text file. This mode is required to support access to the VOB by interop text mode views (see the mkview reference page). To change the state of a VOB's interop text mode support, use the msdostext_mode utility.

VersionVault: Regional tags

mkvob creates exactly one VOB tag for the newly created VOB. This tag applies to the local host's network region by default. To make additional VOB tags for other regions, use the mktag command. In general, the VOB tags for a given VOB should all be public or all private.

VersionVault dynamic views: Public and private VOBs

Some VOBs are to be shared, and others are to be used primarily by their creators. Accordingly, there are two kinds of VOB tags: public and private.

UNIX and Linux: Public VOB tags

A public VOB tag specifies a location at which any dynamic-view user can mount the VOB. Furthermore, after a public VOB is mounted on a host, any user on that host can access it (subject to the standard access permissions).

Typically, all public VOBs are mounted at startup time with the command cleartool mount –all. (To create a public VOB that is not mounted automatically, specify –options noauto in the mkvob command.)

When creating a public VOB tag with mkvob or mktag, you must supply the network's VOB tag password; if you do not use the –password option, you are prompted to provide one.

You need not create a public VOB's mount-over directory; the cleartool mount command creates it, if necessary.

UNIX and Linux: Private VOB tags

A private VOB tag specifies a mount point at which only the VOB's owner (usually, its creator) can mount the VOB using cleartool. For example:

cleartool mount /vobs/myPrivateVob

root can use the cleartool mount vob-tag command to bypass the "owner only" mount restriction. The command cleartool mount –all does not mount private VOBs.

After a private VOB is mounted, any user can access it (subject to the standard access permissions). You must explicitly create the mount-over directory for a private VOB; the cleartool mount command does not create it automatically.

Windows: Public VOB tags

A public VOB can be activated with the following command:

cmd-context mount –all

Usually, the system administrator automates this command for users in either of two ways:

  • By adding it to the startup script for VersionVault users.
  • By supplying it in a batch file for use in each user's Startup folder.

This technique is particularly useful because, in its role as a network provider, the MVFS deactivates all VOBs and views on the local host at user logon time. That is, each time a user logs on, the dynamic-views drive (by default, drive M) is empty until VOBs and views are reactivated.

For information on persistent VOB mounting, see the mount reference page.

When creating a public VOB tag with mkvob or mktag, you must supply the network's VOB tag password; if you do not use the –password option, you are prompted to type one. For information on how to create or change the VOB registry password, see rgy_passwd.

Windows: Private VOB tags

Any user can mount any VOB, public or private. The private designation means only that a VOB must be mounted separately, by name.

UNIX, Linux, and Windows: Private-to-public VOB conversion

To convert a private VOB to a public VOB, use a command like this:

cmd-context  mktag -vob -tag \vob3.p^
-replace -public \\saturn\users\vbstore\private3.vbs

This replaces the VOB's private VOB tag with a public one. mktag prompts you to enter the VOB tag password.

VersionVault snapshot views: Accessing public and private VOBs

For an explanation of public and private VOBs, see VersionVault dynamic views: Activating the VOB.

  • Snapshot views make no distinction between public and private VOBs: you can access private VOBs from a snapshot view regardless of who owns them.

VersionVault dynamic views: Activating the VOB

A VOB cannot be used for development work in a dynamic view until it is activated with the cleartool mount command. This causes the VOB's storage directory to be mounted on the host at the VOB tag location, as a file system of type MVFS. See the mount reference page for details.

VersionVault on UNIX and Linux: Marking a VOB for export

A VOB to be used by some view for NFS access must be marked for export. Each export VOB is assigned an export ID, which ensures that NFS-exported view/VOB combinations have stable NFS file handles across server reboots or shutdown and restart of VersionVault.

If the VOB is registered in multiple regions, the export marking must appear on all of that VOB's tags in all the regions in which it is registered. To mark a VOB for export, use the –ncaexported option. To mark an existing VOB for export, use mktag –replace –ncaexported.

The VOB export ID is stored in the mount options field in the VOB tag registry. If you use the –ncaexported option and specify additional mount options in the mktag or mkvob command, the mount options field includes an appropriate export ID mount option.

For information about exporting VOBs, see the export_mvfs reference page.

Note: Marking a VOB for export is not required for NFS export to work, but it is required if you want to avoid stale file handle messages after a server restart.

VersionVault: Location of the VOB database directory

The VOB database directory must be located on the VOB server host or on a supported network attached storage device that has been configured for VOB storage.

VersionVault: VOB storage directory on a network attached storage device

You may create a VOB with storage on a supported network attached storage (NAS) device. Use a server storage location for this purpose. See the mkstgloc reference page for information. To use mkvob to create a VOB that resides on a NAS device, you must specify the option set, –host –hpath –gpath. (NAS devices must be specially configured for use with VersionVault.

Restrictions

To use the -nremote_admin option, you must be logged on the VOB server host as a privileged user.

Options and arguments

Specifying the VOB tag

Default
None.
–tag vob-tag
VersionVault on UNIX or Linux. VOB tags are names for VOBs that are entered in the registry. They are of multicomponent (/vob/src) form for VersionVault. The VOB tag is where the VOB appears under the view root.

VersionVault dynamic views on UNIX or Linux. A path name, typically multicomponent, that specifies the mount-over directory at which the VOB is mounted as a file system of type MVFS. The VOB tag is entered in the VOB tag registry. If you are creating a private VOB (no –public option), you must also create the mount-over directory on each host where you will mount the VOB. (The cleartool mount command creates mount-over directories for public VOBs.)

VersionVault. If your network has multiple regions from which the VOB is to be accessed, use mktag to create an additional VOB tag for each region.

VersionVault on Windows. VOB tags are names for VOBs of the form \dirname. The backslash is required. The VOB tag is entered in the registry and is where the VOB appears under the view root.

Specifying the kind of VOB

Default
A standard (that is, nonproject) VOB.
–ucm/project
Creates a UCM project VOB for storing UCM-related objects including activities, baselines, components, folders, projects, and streams. Typically, a single project VOB is shared by multiple source VOBs; for example those that store versioned source code, documents, and so on.

Event records and comments

Default
Creates one or more event records, with commenting controlled by your .versionvault_profile file (default: –cqe). 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.
–tco/mment tag-comment
Adds a comment to the VOB tag's entry in the vob_tag registry file. Use lsvob –long to display the tag comment.

Specifying a network region

Default
Creates the VOB tag in the local host's network region. (Use the hostinfo –long command to display the network region.).
–reg/ion network-region
Creates the VOB tag in the specified network region. An error occurs if the region does not already exist.
Important: The VOB tag created with mkvob must be for the network region to which the VOB host belongs. Thus, use this option only when you are logged on to a remote host that is in another region. Moreover, a VOB tag for the VOB's home region must always exist.

Specifying mount options

Default
Mounts each VOB using the –options field in its vob_tag registry file.
–opt/ions mount-options
UNIX and Linux—Options to be used in mounting the VOB. The following options are valid: ro, rw, soft, hard, intr, nointr, noac, noauto, nodev, nodnlc, nosuid, suid, retrans, timeo, acdirmin, acdirmax, acregmin, acregmax, actimeo. See the appropriate operating system reference page (for example, mount(1M)) for the meanings of these options. If the mount options list contains white space, enclose it in quotes. By default, a VOB is mounted in nointr mode. This means that operations on MVFS files (for example, open(2)) cannot be interrupted by typing the INTR character (typically, CTRL+C). To enable keyboard interrupts of such operations, use the intr mount option.

Windows—Specifies mount options to be invoked when the VOB is activated through this VOB tag. See mount for details. (You must be a member of the VersionVault administrators group to use this option.)

Preventing privileged access by remote users

Default
Specified by the site property deny_remote_privileged_users (see the setsite reference page).
-nrem/ote_admin
Disables privileged access by remote users. When a VOB is created with this option, all privileged operations require the user to be logged on to the VOB server host with a privileged identity. Any request from a privileged user logged on to a remote host is treated as though it had been made by an ordinary user (it fails if a privileged identity is required). Use protectvob -remote_admin to enable privileged access by remote users to a VOB created with the -nremote_admin option.

This option is effective only when you are logged on the VOB server host as a privileged user.

Specifying the feature level

Default
The VOB is created at the feature level that corresponds to the installed version of the product. For information about all feature levels and their correspondences to product versions, refer to technote 73065.
–flevel feature-level
Specifies the feature level at which the VOB is to be created: an integer value of 5 or greater.

Public versus private VOB

Default
A private VOB.
–pub/lic
Creates a public VOB. See VersionVault dynamic views: Activating the VOB.
–pas/sword tag-registry-password
A password is required to create a public tag or to create a private tag when you include suid as an argument to –options.

In these cases, if you do not include the VOB tag password, mkvob prompts for it. An error occurs if there is no match. Note that the VOB is created, but without a VOB tag. Use mktag to supply a public or private VOB tag.

Important: This is a potential security breach, because the password remains visible on the screen.

Specifying the VOB location and network accessibility

Default
None.
–hos/t hostname –hpa/th host-storage-pname –gpa/th global-storage-pname
For information on these options, see the mkstgloc reference page.

To create a VOB that resides on a supported network attached storage (NAS) device, you must specify the option set, –host –hpath –gpath.

vob-storage-pname
The location at which a new VOB storage directory is to be created. (An error occurs if something already exists at this path name.) You can create a VOB at any location where the operating system allows you to create a subdirectory, with these restrictions:
  • You cannot create a VOB under an existing VOB tag (VOB mount point).
  • You cannot create a VOB within the view root directory.
  • vob-storage-pname must not be a subdirectory of an existing VOB storage directory.
  • vob-storage-pname must specify a location on a host where VersionVault has been installed or a location on a supported NAS device. The VOB database (located in subdirectory db of the VOB storage directory) must be located on the VOB server host or on a supported NAS device that has been configured for VOB storage.

UNIX and Linux—vob-storage-pname may be a full path name, relative path name, or simple subdirectory name. For related information, see the description of CCASE_GPATH_HINTS in the env_ccase reference page.

Windows—vob-storage-pname must be a UNC name.

–stg/loc { vob-stgloc-name | –aut/o }
Specifies a server storage location in which the VOB storage directory is to be created. The server storage location must have been created previously with mkstgloc. You can specify the name of the VOB server storage location explicitly as vob-stgloc-name, or specify –auto to direct mkvob to select one.

If you specify –auto, a server storage location for the VOB is selected as follows:

  1. Server storage locations that have no global path (mkstgloc –ngpath) and that reside on remote hosts are disqualified.
  2. Server storage locations on heterogeneous hosts are disqualified.
  3. Local server storage locations are preferred over remote ones.
  4. Globally accessible server storage locations (mkstgloc –gpath) are preferred over those that are not (mkstgloc –ngpath).
  5. The server storage location with the most free space is selected.

Examples 

The UNIX system and Linux examples in this section are written for use in csh. If you use another shell, you may need to use different quoting and escaping conventions.

The Windows examples that include wildcards or quoting are written for use in cleartool interactive mode. If you use cleartool single-command mode, you may need to change the wildcards and quoting to make your command interpreter process the command appropriately.

In cleartool single-command mode, cmd-context represents the UNIX system and Linux shells or Windows command interpreter prompt, followed by the cleartool command. In cleartool interactive mode, cmd-context represents the interactive cleartool prompt.

UNIX and Linux examples

  • Create a private VOB storage directory, project3.vbs, in the /usr/vobstore directory on local host venus, and give it the VOB tag /vobs/project3. Then, mount the VOB on the local host.

    cmd-context mkvob -tag /vobs/project3 -c "main development sources" \
    /usr/vobstore/project3.vbs

    Created versioned object base.
    Host-local path: venus:/usr/vobstore/project3.vbs
    Global path: /net/venus/usr/vobstore/project3.vbs
    VOB ownership:
    owner anne
    group dev
    Additional groups:
    group usr
    group adm

    % mkdir /vobs/project3 (create VOB mount point to match the VOB tag)
    cmd-context  mount /vobs/project3 (mount VOB as file system of type MVFS)

  • Create a public VOB, which will be mounted at startup time (by all hosts in the current host's network region), and mark it for export.

    cmd-context mkvob -tag /vobs/src1 -public -password tagPword \
    -ncaexported /vobstore/src1.vbs

    Created versioned object base.
    Host-local path: saturn:/vobstore/src1.vbs
    Global path: /net/saturn/vobstore/src1.vbs
    .
    .
    .

  • Create a private VOB in a different region, explicitly specifying the registry information.

    cmd-context mkvob –tag /vobs/doctools \
    –c "storage for documentation tools" \
    –region unix_dev –host neon –hpath /vobstg/doctools.vbs \
    –gpath /net/neon/vobstg/doctools.vbs /vobstg/doctools.vbs

    Created versioned object base.
    Host-local path: neon:/vobstg/doctools.vbs
    Global path: /net/neon/vobstg/doctools.vbs
    .
    .
    .

  • Create a VOB at VOB server storage location.

    cmd-context  mkvob -tag /vobbert -stgloc stgloc1
    Comments for "/export/home/bert/stgloc1/vobbert.vbs":
    test vob
    .
    Created versioned object base.
    Host-local path: peroxide:/export/home/bert/stgloc1/vobbert.vbs
    Global path:     <no-gpath>
    cleartool: Warning: This global path value precludes use of this
    VOB by dynamic views from region "test_region".
    .
    .
    .

Windows examples

  • Create a private VOB storage directory, project3.vbs, in the C:\users\vbstore directory on local host venus, and give it the VOB tag \project3. Assume c:\users is shared as \\venus\users. Then, mount the VOB on the local host.

    cmd-context mkvob -tag \project3 -c "main development sources" ^
    \\venus\users\vbstore\project3.vbs

    Created versioned object base.
    Host: venus
    Local path: C:\users\vbstore\project3.vbs
    Global path: \\venus\users\vbstore\project3.vbs
    VOB ownership:
    owner anne
    group dev

    cmd-context  mount \project3 (mount VOB as file system of type MVFS)

  • Create a public VOB, which will be mounted at startup time (by all hosts in the current host's network region).

    cmd-context mkvob -tag \src1 -public ^
    -password tagPword \\saturn\vbstore\src1.vbs

    Created versioned object base.
    Host: saturn
    Local path: C:\vbstore\src1.vbs
    Global path: \\saturn\vbstore\src1.vbs
    .
    .
    .