checkout

Creates a modifiable copy of a version

APPLICABILITY


Product

Command Type

ClearCase


cleartool subcommand


ClearCase LT


cleartool subcommand


Attache


command


Platform

UNIX


Windows

SYNOPSIS

checkout | co [ -res·erved | -unr·eserved [ -nma·ster ] ]

[ -out dest-pname | -nda·ta ] [ -pti·me ]
[ -bra·nch branch-pname | -ver·sion ] [ -nwa·rn ]
[ -c·omment comment | -cfi·le comment-file-pname |-cq·uery | -cqe·ach | -nc·omment ]
[-q·uery | -nq·uery]
pname ...

DESCRIPTION

For one or more elements, the checkout command checks out a branch (typically, the most recent version on a branch). In most cases, this creates a writable copy of that version in the current view (the checked-out version), but see the CHECKING OUT A DO VERSION section. An appropriate message is displayed. For example:

Checked out "msg.c" from version "/main/bugfix/25"

If you are checking out in a UCM view, the view must be set to a UCM activity (see setactivity). Checked-out elements are added to the change set of the UCM activity you set.

In Attache, files checked-out successfully are downloaded to the workspace after the checkout command is executed remotely. If a local file exists, and is both writable and different from the checked-out version, the user is queried before the local file is overwritten, but the file is always checked out in the view. Checked-out directories are created locally if they do not already exist in the workspace. All downloaded files are made writable.

A checkout record is created; it can be listed with the lscheckout command:

cmd-context lsco msg.c
05-Aug.20:50 akp checkout version "msg.c" from \main\bugfix\25 (reserved)

If a view-private object already exists with the same name as an element being checked out, checkout responds as follows:

Before using a command that changes the contents of a directory (mkelem, mkdir, rmname, ln, or mv), you must first check out the directory. Each of these commands appends an appropriate line to the directory's checkout comment. For example, using mkelem to create a new element within a directory adds a line like this one:

Added file element "wel.c".

RESERVED AND UNRESERVED CHECKOUTS

A version can have at most one reserved checkout and any number of unreserved checkouts. Performing a reserved checkout (without using the -version option) guarantees you the right to create a successor to the version you checked out. If several users perform unreserved checkouts, any one of them (and only one) can create a successor version.

The predecessor version of your checked-out file may not be the latest on the branch from which you checked out your version; this situation can occur if the -version option or unreserved checkouts are used. In this case, you must merge from the latest version on the branch to your checked-out version before you can check in your version.

You can change the reserved state of a checked-out version with the reserve and unreserve commands.

MultiSite: Checking Out a Branch Mastered at Another Site

If the VOB containing the element is replicated, the checkout command fails if you try to check out a branch mastered by a different replica:

cleartool checkout -nc file1.txt
cleartool: Error: Unable to perform operation "checkout" in replica "lexington" of VOB "/vobs/dev".
cleartool: Error: Master replica of branch "/main" is "london".
cleartool: Error: Unable to check out "file1.txt".

If you need to do work on a branch mastered by another replica, you have two choices:

To request mastership, ask the administrator at the master replica to transfer mastership, or use the reqmaster command. Consult your ClearCase administrator to make sure mastership requests with reqmaster are enabled and that the replicas are at the correct feature level.

NONSTANDARD CHECKOUTS

By default, the checkout command checks out these versions:

To modify a different version, you can either use the -version option or create a subbranch at that version. (See the mkbranch reference page). Furthermore, from a single view, you can have only one checkout per element at a time.

NOTE: When working in a snapshot view, the only version of a directory element that can be checked out is the version currently loaded in the view. Therefore, the -version and -branch options will not work in this case.

When you use the -version option, you can specify the version either by setting your config spec to use that version, or by specifying a version-extended pathname as the pname argument. After you make your changes, you must merge from the latest version of the element before you can perform a checkin.

You can check out a version that your config spec does not currently specify, either by using the -branch option or by specifying a pname argument that is a branch pathname (for example, msg.c@@/main/rel4_bugfix). In such cases, a warning message appears:

cleartool: Warning: Version checked out is different from version previously selected by view.

CHECKING OUT A DO VERSION

(Dynamic view) If the version being checked out is a derived object (DO version), checkout attempts to winkin the DO to your view. If it cannot perform the winkin, it copies the DO's data instead. A winkin cannot be performed if you use the -out option to specify a destination in another VOB, or in a non-VOB location, such as /tmp.

See Building Software for additional information on the behavior of checked-out DO versions.

AUTO-MAKE-BRANCH

If the config spec specifies a version using a rule with a -mkbranch branch-type clause (see also config_spec), checkout works as follows:

  1. Creates a branch of type branch-type.

  2. Checks out (version 0 on) the new branch.

Except for some extra messages, the behavior is no different from an ordinary checkout. The checked-out version has the expected contents, because version 0 on the new branch has the same contents as the version at the branch point.

NOTE: (MultiSite sites) If the VOB is replicated, the current replica must master all the branch types specified in your config spec. Otherwise, auto-make-branch fails.

Multiple-Level Auto-Make-Branch

A config spec can include a cascade of auto-make-branch rules, causing checkout to create multiple branching levels at once. checkout keeps performing auto-make-branch until version 0 on the newly created branch is not selected by a rule with a -mkbranch clause. For example:

1

element * CHECKEDOUT

2

element * .../br2/LATEST

3

element * .../br1/LATEST -mkbranch br2

4

element * MYLABEL -mkbranch br1

5

element * /main/LATEST

If you check out an element in a view that currently selects the version labeled MYLABEL:

  1. A branch of type br1 is created at the MYLABEL version (Rule 4).

  2. Rule 3 now selects the newly-created version .../br1/0, so a branch of type br2 is created at that version.

  3. Version .../br1/br2/0 is checked out. The checked-out version has the same contents as the MYLABEL version, and is selected by Rule 1. When you edit and check in a new version, .../br1/br2/1, the view selects it with Rule 2.

CHECKED-OUT FILES

Any checked-out file can be read, edited, and deleted like any ordinary file.

Dynamic Views

You have write permission on a checked-out file only if you have write permission on the set view's view storage directory. If you have write permission on the view storage directory for the view you are using, you have write permission on a checked-out file in that view.

Snapshot Views

The initial permissions on the checked-out file are determined by this algorithm:

You can change the permissions of the checked-out file with the standard UNIX chmod(1) command or by changing the Windows file properties, but you must use the protect command to change the permissions of the element itself.

Attache

A checked-out file is a workspace-local object.

CHECKEDOUT BUT REMOVED FILES

There may be no object in the view located at the pathname of the checked-out version. This can happen if any of these conditions are true:

An OS-level listing command does not show the missing file, but the cleartool ls and Attache ls commands display the pathname of the checked-out version with the notation " checked out but removed."

RESTRICTIONS

Identities: You must have one of the following identities:

Additional restrictions on UNIX:

Locks: An error occurs if one or more of these objects are locked: VOB, element type, branch type, element, branch.

Mastership: (Replicated VOBs) Your current replica must master the branch you are checking out unless you use -unreserved -nmaster.

OPTIONS AND ARGUMENTS

RESERVED AND UNRESERVED CHECKOUTS.  Default: checkout reserves the branch unless a different default has been specified in profile_ccase.

-res·erved

Reserves the branch: no user in another view can perform a reserved checkout of the same branch (but any number of unreserved checkouts can be performed); no new versions can be created on the branch until your checkout is changed to unreserved with unreserve or resolved with checkin or uncheckout.
-unr·eserved [ -nma·ster ]

Leaves the branch unreserved: other users, in other views, can check out the same version (but at most one of the checkouts can be reserved).
With -nmaster, checks out the branch even if the current replica does not master the branch. Do not use this option if you cannot merge versions of the element.
See the checkin reference page for a discussion of how new versions are created from reserved and unreserved checkouts.

CREATION OF CHECKED-OUT VERSION IN VIEW.  Default: (file elements) Creates in the view:

Attache downloads a copy of that file to the workspace.

EXCEPTION: (Dynamic views) If the version being checked out is a derived object, it is winked in to the view.

-out dest-pname

(Does not apply to directories or DO versions) Creates a writable file under an alternate filename (perhaps in a different directory); in Attache, the file is downloaded to the workspace. No view-private file named pname is created. The cleartool ls and Attache ls commands list the element as checkedout but removed.
-nda·ta

(Does not apply to directories) Creates a checkout record for the version, but does not create an editable file containing its data; in Attache, no file is downloaded to the workspace. The ls command lists the file as checked out but removed. This option is useful for checking out files that will be completely overwritten (for example, staged binaries or other files that are copied into place).

PRESERVING MODIFICATION TIME. Default: In a dynamic view, checkout resets the file's modification time to the checkout time. In a snapshot view, checkout preserves the file's modification time.

-pti·me

Preserves the modification time of the file being checked out. This option is silently ignored when you use it in a snapshot view.

NON-STANDARD CHECKOUTS.  Default: If pname specifies a particular branch, check out that branch, that is, the latest version on the branch. Otherwise, do the following:

checkout creates a copy of each checked-out version and names it pname.

-bra·nch branch-pname

Specifies the branch whose most recent version is to be checked out. For example, to check out the latest version on branch ports, specify -branch \main\ports.
-ver·sion

Allows the checkout of a version that is not the latest on its branch.

SUPPRESSING WARNING MESSAGES Default: Warning messages are displayed.

-nwa·rn

Suppresses warning messages.

EVENT RECORDS AND COMMENTS. Default: Creates one or more event records, with commenting controlled by your .clearcase_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.

QUERYING FOR THE RESOLUTION OF CHECKOUT PROBLEMS. Default: No querying.

-q·uery

Query for the resolution of a checkout problem.
-nq·uery

Do not query for the resolution of a checkout problem.

ELEMENT ARGUMENT.  Default: None.

pname ...

Pathnames of one or more elements to be checked out.

EXAMPLES

The UNIX 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 shell or Windows command interpreter prompt, followed by the cleartool command. In cleartool interactive mode, cmd-context represents the interactive cleartool prompt. In Attache, cmd-context represents the workspace prompt.

SEE ALSO

checkin, config_spec, lscheckout, merge, profile_ccase, reserve, uncheckout, unreserve