relocate
Moves elements and directory trees from one VOB to another
Applicability
Product |
Command type |
---|---|
VersionVault |
cleartool subcommand |
Platform |
---|
UNIX |
Linux |
Windows |
Synopsis
- relocate [ –f/orce ] [ –qal/l ] [ –log log-pname ] [ –upd/ate ]
- pname [ pname ... ] target-dir-pname
Description
The relocate command moves elements, including directory trees, from one VOB to another. All related VOB database entries and data containers are moved to the target VOB. relocate preserves the "move from" VOB's namespace by substituting VOB symbolic links for moved elements.
The more common use of relocate involves splitting a piece from one VOB and moving it to a newly created VOB. However, you can move an arbitrary collection of elements from one VOB to a location in any other VOB. You cannot use relocate to move an element to a new location in the same VOB. Use cleartool mv for this purpose.
For a dynamic view, view-private files and nonversioned DOs are not relocated. If a relocated directory contains view-private files, they are stranded; DOs are removed.
Restrictions
Identities
You must have one of the following identities:
- VOB owner (for both VOBs)
- root (UNIX and Linux)
- Member of the VersionVault administrators group (VersionVault on Windows)
Locks
An error occurs if one or more of these objects are locked in the source VOB: VOB, element. An error occurs if one or more of these objects are locked in the target VOB: VOB, element, branch type, element type, label type, hyperlink type, attribute type.
Mastership
(Replicated VOBs only) Your current replica must master any element to be relocated.
Guidelines for using update mode
Because relocate normally locks the elements on which it operates, users cannot access them while they are being relocated. If the elements must remain in use during the relocation, you can use relocate's update mode (relocate –update). You can also use update mode to update the target VOB incrementally with changes that have occurred since relocate was last run. However, we recommend that you use update mode sparingly.
You cannot switch from using update mode to not using it. We recommend you not use update mode if you plan to leave some elements in the original VOB. (If you do use it in this situation, you must clean up the original elements and create symbolic links manually.)
- Does not create symbolic links in the source VOB to replace existing catalogs; it leaves the catalogs in place
- Allows you to relocate the VOB root and lost+found directories
- Does not stop relocation when it encounters a nonlocally mastered element; it relocates the element
- Does not remove the elements from the source VOB
- Does not check out or modify the source directory
- Does not lock the elements in the relocate set
When you use update mode incrementally, relocate rescans all elements and updates the ones that have changed. In regular mode, relocate determines where it left off and continues, assuming that elements it has already relocated do not need further processing. In update mode, relocate does not make this assumption: because update mode is used incrementally and no locks are put on the original elements, the elements could have changed since relocate –update was last run.
There are certain changes (usually deletions of objects) that cause relocate to fail when updating existing elements. If you perform rmver, rmbranch, or rmelem operations on the original elements, these changes are not reflected in the target VOB.
In addition, a deletion combined with a replacement creation can cause an error. For example, if a branch named foo is removed in the original VOB and a new branch named foo is created to replace it, relocate fails when it tries to update the target element. Because relocate did not remove the old branch, it cannot create the new one. To work around this problem, remove the target element; on the next run of relocate, the element is re-created.
Other
The following restrictions apply:
- relocate cannot be used when pname or target-dir-pname is part of UCM component.
- relocate cannot move checked-out elements. It fails during the selection phase if it finds any checked-out files among the ones it is going to move.
- relocate may fail if there are restrictive triggers on checkout, checkin, and rmelem commands. Because relocate runs these commands, triggers on these operations are also executed. If these triggers cause relocate to fail, you must disable the triggers or remove them from those operations and run relocate again.
Options and arguments
Suppressing the confirmation query
- Default
- After displaying the relocate set, relocate asks you to confirm that these are the elements you want to relocate.
- –f/orce
- Suppresses the confirmation step.
Controlling special case handling
- Default
- Uses built-in rules to determine how to handle borderline elements (elements that are cataloged in both a directory being relocated and a directory not being relocated). For more information, see the Help .
- –qal/l
- Prompts user to affirm or reject relocate's
handling of each borderline element. The default answer in an individual
case depends on the element's visibility in the current view: yes if
the view selects some version of the element; no otherwise.
If you reject these defaults, the result is nonfunctional links that you must repair. If a version of an element is visible in the current view and you indicate it is not to be relocated, the result is a bad link in the target VOB. If a version of an element is not visible in the view and you indicate that it is to be relocated, the result is a bad link in the source VOB.
Writing a log file
- Default
- relocate creates a log file in the current directory with the name relocate.log.date-time.
- –log log-pname
- Creates a relocate log file at location log-pname.
Relocating in update mode
- Default
- relocate removes the source elements after the target elements have been created.
- –upd/ate
- relocate leaves the source and target elements
in place.Note: Update mode is intended to support sites that need to test element relocation while leaving the source elements accessible for modification. When using update mode, do not modify or access the target elements. When update mode testing is complete, run relocate without the –update option to remove the source elements. For more information, see Guidelines for using update mode.
Specifying which files to relocate
- Default
- None.
- pname ...
- Specifies the elements to be relocated. A pname can be a file element, directory element, or VOB symbolic link.
Specifying a target VOB and directory
- Default
- None. You must supply a target directory in a second VOB.
- target-dir-pname
- Specifies the directory in the target VOB that will store the relocated elements.
relocate checks out and modifies the version of
this directory that is selected by your current view. The target
directory must be in the same view as the source pathname (that is, you
cannot specify a view-extended pathname for
target-dir-pname).
On Windows, this pathname must be drive-relative:
Valid
Not valid
\foo\bar
m:\foo\bar
foo
f:foo
..\foo
g:..\foo
Examples
The UNIX system and Linux examples in this section are written for use in csh. If you use another shell, you might 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 might 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.
- Move subdirectory glib (and
its one file, file.c) from /vobs/lib to
the newly created VOB /vobs/gui. Query on borderline
elements. To illustrate how relocate replaces element
names with symbolic links in the source VOB, the example uses a relative
pathname to specify the target VOB.
After relocating glib, examine the RelocationVOB hyperlink added to /vobs/gui.
% cd /vobs/lib
cmd-context setcs –default
cmd-context relocate -qall ./glib ../gui
Logfile is "relocate.log.2007-04-09T14:11:37".
Selected "glib".
Selected "glib/file.c".
Do you want to relocate these objects? [no] yes
Checked out "." from version "/main/3".
Checked out "/vobs/gui" from version "/main/0".
Locking selected objects
Locked "glib"
Locked "glib/file.c"
Recreating selected objects
Created "glib"
updated branch "/main"
updated version "/main/0"
created version "/main/1"
Created "glib/file.c"
updated branch "/main"
updated version "/main/0"
created version "/main/1"
Cataloging new objects
cataloged symbolic link "/vobs/lib/glib/.@@/main/2/glib" ->
"../gui/glib"
cataloged symbolic link "/vobs/lib/glib/.@@/main/3/glib" ->
"../gui/glib"
cataloged "/vobs/lib/.@@/main/CHECKEDOUT.32/glib"
cataloged symbolic link "/vobs/lib/glib/.@@/main/1/file.c" ->
"../gui/glib/file.c"
cataloged symbolic link "/vobs/lib/glib/.@@/main/2/file.c" ->
"../gui/glib/file.c"
cataloged "/vobs/gui/glib@@/main/1/file.c"
Removing original objects
removed "glib/file.c"
removed "glib"
Checked in "/vobs/lib/." version "/main/4".
Checked in "/vobs/gui/." version "/main/1".
cmd-context describe vob:/vobs/gui
versioned object base "/vobs/gui"
created 2007-04-09T13:50:16 by CCase Admin (clearadm.sys@propane)
"relocate target for former directory /vobs/lib/gui"
VOB storage host:pathname "propane:/usr1/vobstore/gui.vbs"
VOB storage global pathname "/net/propane/usr1/vobstore/gui.vbs"
VOB ownership:
owner clearadm
group sys
Hyperlinks:
RelocationVOB@33@/vobs/gui vob:/vobs/gui -> vob:/vobs/lib/
Files
relocate.log.date-time