02.05.2013 Views

Description - Mks.com

Description - Mks.com

Description - Mks.com

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

ÁÁÁ<br />

Á<br />

ÁÁ


MKS Source Integrity® Enterprise 2005<br />

CLI Reference Guide<br />

Copyright © 2001–2005 MKS Software Inc.; in Canada copyright owned by MKS Inc. All rights reserved.<br />

MKS makes no warranty of any kind with regard to this material, including, but not limited to the implied warranties of merchant ability,<br />

performance, or fitness for a particular purpose. MKS shall not be liable for errors contained herein, or for any direct, indirect, incidental,<br />

or consequential damages resulting from the use of this material.<br />

No part of this publication may be reproduced, transmitted, transcribed, stored in a retrieval system, or translated into any language in<br />

any form by any means, without written permission from MKS.<br />

MKS Source Integrity, MKS Integrity Manager, Implementer, NewVersion, MKS Toolkit, Sandbox, NuTCRACKER, MKS Integrity<br />

Solution, MKS Integrity Suite, AlertCentre, and MKS Federated Server are trademarks or registered trademarks of MKS Inc. All other<br />

trademarks or registered trademarks are the property of their respective holders.<br />

Contains Java software developed by Sun Microsystems, Inc. © Copyright Sun Microsystems, Inc. All Rights Reserved. Java and Javabased<br />

marks are trademarks or registered trademarks of Sun Microsystems, Inc. in the United States and other countries.<br />

Contains embedded database © Copyright PointBase Inc. All rights reserved.<br />

Portions of this product are based upon copyrighted materials of BEA Systems Inc. All rights reserved.<br />

Portions of this product are based upon copyrighted materials of Sitraka Inc. (formerly KL Group) or its suppliers. All rights reserved.<br />

IBM Bean Scripting Framework (BSF) is incorporated in this product and is provided by International Business Machines or one of its<br />

subsidiaries (IBM) and is copyrighted and licensed. MKS does not make or imply any representations or warranties on behalf of IBM.<br />

Contains NSPR (Netscape Portable Runtime) library for C API. The Source Code version of the Covered Code is available under the terms<br />

of the Mozilla Public License Version 1.1.<br />

Licensed under the Apache License, Version 2.0 (the “License”); you may not use this file except in <strong>com</strong>pliance with the License. You may<br />

obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.<br />

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an “AS IS” BASIS,<br />

WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language<br />

governing permissions and limitations under the License.<br />

Contains XML parsing library for C. Copyright © 1998–2003 Daniel Veillard. All Rights Reserved. Permission is hereby granted, free of<br />

charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software<br />

without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies<br />

of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above<br />

copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS<br />

PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE<br />

WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT<br />

SHALL THE DANIEL VEILLARD BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF<br />

CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR<br />

OTHER DEALINGS IN THE SOFTWARE.<br />

This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit (http://www.openssl.org).<br />

Copyright © 1998–2003 The OpenSSL Project. All rights reserved.<br />

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions<br />

are met:<br />

1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.<br />

2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the<br />

documentation and/or other materials provided with the distribution.<br />

3. All advertising materials mentioning features or use of this software must display the following acknowledgment:<br />

“This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit (http://www.openssl.org/)”<br />

4. The names “OpenSSL Toolkit” and “OpenSSL Project” must not be used to endorse or promote products derived from this software<br />

without prior written permission. For written permission, please contact openssl-core@openssl.org.<br />

5. Products derived from this software may not be called “OpenSSL” nor may “OpenSSL” appear in their names without prior written<br />

permission of the OpenSSL Project.<br />

6. Redistributions of any form whatsoever must retain the following acknowledgment:<br />

“This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit (http://www.openssl.org/)”<br />

THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT “AS IS” AND ANY EXPRESSED OR IMPLIED WARRANTIES,<br />

INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR<br />

PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR ITS CONTRIBUTORS BE LIABLE FOR ANY<br />

DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED<br />

TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)<br />

HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT<br />

(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED<br />

OF THE POSSIBILITY OF SUCH DAMAGE.


This product includes cryptographic software written by Eric Young (eay@cryptsoft.<strong>com</strong>).<br />

Copyright © 1995–1998 Eric Young (eay@cryptsoft.<strong>com</strong>). All rights reserved.<br />

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions<br />

are met:<br />

1. Redistributions of source code must retain the copyright notice, this list of conditions and the following disclaimer.<br />

2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the<br />

documentation and/or other materials provided with the distribution.<br />

3. All advertising materials mentioning features or use of this software must display the following acknowledgement:<br />

“This product includes cryptographic software written by Eric Young (eay@cryptsoft.<strong>com</strong>)”<br />

The word ‘cryptographic’ can be left out if the routines from the library being used are not cryptographic related.<br />

4. If you include any Windows specific code (or a derivative thereof) from the apps directory (application code) you must include an<br />

acknowledgement: “This product includes software written by Tim Hudson (tjh@cryptsoft.<strong>com</strong>)”<br />

THIS SOFTWARE IS PROVIDED BY ERIC YOUNG “AS IS” AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT<br />

LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE<br />

DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,<br />

SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF<br />

SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND<br />

ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR<br />

OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH<br />

DAMAGE.


Corporate Headquarters Worldwide Offices:<br />

410 Albert Street<br />

Waterloo, ON N2L 3V3<br />

Canada<br />

tel: 519 884 2251<br />

fax: 519 884 8861<br />

sales (toll free): 800 265 2797<br />

www.mks.<strong>com</strong><br />

This document is uncontrolled when printed or copied.<br />

1815 South Meyers Rd.<br />

Suite 220<br />

Oakbrook Terrace, IL USA<br />

60181<br />

tel: 630 827 4900<br />

fax: 630 629 9167<br />

sales (toll free): 800 633 1235<br />

12450 Fair Lakes Circle<br />

Suite 400<br />

Fairfax, VA USA<br />

22033<br />

tel: 519 884 2251<br />

fax: 703 803 3344<br />

sales (toll free): 800 637 8034<br />

Martinstraße 42-44<br />

73728 Esslingen<br />

Germany<br />

tel: +49 711 351775 0<br />

fax: +49 711 351775 7555<br />

Third Floor, Duke’s Court<br />

Duke Street, Woking<br />

Surrey<br />

GU21 5BH<br />

United Kingdom<br />

tel: +44 (0)1483 733900<br />

fax: +44 (0)1483 733901<br />

sales: +44 (0)1483 733919


MKS Source Integrity Enterprise (also referred to as simply Source Integrity) provides a <strong>com</strong>plete<br />

<strong>com</strong>mand line interface (CLI) to manage Source Integrity projects and archives. The CLI and<br />

graphical user interfaces (GUI) provide the exact same functionality. In fact, in most cases, these<br />

two interfaces are interchangeable -- you can easily alternate between these interfaces and they<br />

are quickly synchronized to facilitate your user experience.<br />

Source Integrity <strong>com</strong>mands follow the si prefix. For example, si about displays the product<br />

information for Source Integrity, while si co -l samplefile.c checks out a locked copy of a<br />

sandbox member file.<br />

Each <strong>com</strong>mand allows a limited set of options. Single letter options must always be preceded by a<br />

single dash ( - ), while longer option strings must be preceded by a double dash ( -- ). The long<br />

strings are not case sensitive, but are shown in mixed case to facilitate readability.<br />

To see a list of the available Source Integrity <strong>com</strong>mands and brief descriptions of each, type si.<br />

To see a list of options available to a particular <strong>com</strong>mand, simply append -? or --usage to the<br />

<strong>com</strong>mand, for example,<br />

si add --usage<br />

In options, square brackets indicate optional strings, for example, the no is an optional prefix in --<br />

[no]batch. The two ways to use this option would be --nobatch or --batch.<br />

For information on Authorization Administrator <strong>com</strong>mands and permissions, see the MKS Integrity<br />

Server Administration CLI Reference Guide.<br />

Introduction<br />

● intro<br />

● man<br />

Source Integrity Commands<br />

● si about<br />

● si acceptcp<br />

1 of 457


● si add<br />

● si addlabel<br />

● si addmemberattr<br />

● si addmemberfromarchive<br />

● si addproject<br />

● si addprojectattr<br />

● si addprojectlabel<br />

● si addsandboxattr<br />

● si addsubproject<br />

● si annotate<br />

● si appendrevdesc<br />

● si applycp<br />

● si archiveinfo<br />

● si checkpoint<br />

● si ci<br />

● si closecp<br />

● si co<br />

● si configuresandbox<br />

● si configuresubproject<br />

● si connect<br />

● si cpissues<br />

● si createcp<br />

● si createdevpath<br />

● si createproject<br />

● si createsandbox<br />

● si createsubproject<br />

● si deletelabel<br />

● si deleteprojectlabel<br />

● si deleterevision<br />

● si demote<br />

● si demoteproject<br />

● si diff<br />

● si difffiles<br />

● si discardcp<br />

● si disconnect<br />

● si drop<br />

● si dropdevpath<br />

● si dropmemberattr<br />

● si dropproject<br />

● si dropprojectattr<br />

2 of 457


● si dropsandbox<br />

● si dropsandboxattr<br />

● si edit<br />

● si editcp<br />

● si exit<br />

● si freeze<br />

● si gui<br />

● si import<br />

● si importproject<br />

● si importsandbox<br />

● si integrations<br />

● si loadrc<br />

● si locate<br />

● si lock<br />

● si locks<br />

● si makewritable<br />

● si memberinfo<br />

● si merge<br />

● si mergebranch<br />

● si mods<br />

● si move<br />

● si movesubproject<br />

● si opencp<br />

● si print<br />

● si projectinfo<br />

● si projects<br />

● si promote<br />

● si promoteproject<br />

● si rejectcp<br />

● si rename<br />

● si report<br />

● si restoreproject<br />

● si resync<br />

● si resynccp<br />

● si revert<br />

● si revisioninfo<br />

● si rlog<br />

● si sandboxes<br />

● si sandboxinfo<br />

● si servers<br />

3 of 457


● si setmemberrule<br />

● si setprefs<br />

● si setprojectdescription<br />

● si sharesubproject<br />

● si snapshot<br />

● si submit<br />

● si submitcp<br />

● si thaw<br />

● si unlock<br />

● si unlockarchive<br />

● si updatearchive<br />

● si updateclient<br />

● si updaterevision<br />

● si viewcp<br />

● si viewcps<br />

● si viewhistory<br />

● si viewlabels<br />

● si viewlocks<br />

● si viewnonmembers<br />

● si viewprefs<br />

● si viewproject<br />

● si viewprojecthistory<br />

● si viewrevision<br />

● si viewsandbox<br />

Miscellaneous Information<br />

● ACL<br />

● cc<br />

● diagnostics<br />

● envvar<br />

● makefile<br />

● options<br />

● preferences<br />

● rcsedit<br />

MKS Toolkit Utilities<br />

Source Integrity provides the following MKS Toolkit <strong>com</strong>mand line utilities on the client:<br />

4 of 457


● ar<br />

● cc<br />

● cmp<br />

● cp<br />

● cxx<br />

● date<br />

● diff<br />

● diffb<br />

● diffh<br />

● echo<br />

● ident<br />

● less<br />

● ln<br />

● make<br />

● manstrip<br />

● more<br />

● mv<br />

● nm<br />

● rm<br />

● touch<br />

● vdiff32<br />

● whereis<br />

● which<br />

5 of 457


si intro<br />

introduction to reference pages<br />

DESCRIPTION<br />

A description of an individual topic (for example, a <strong>com</strong>mand) is loosely called the reference page<br />

for that topic, even if it is actually several pages long.<br />

There are three alternatives for accessing the reference pages to each MKS Source Integrity<br />

<strong>com</strong>mand through the CLI man <strong>com</strong>mand.<br />

First, you may simply type the si prefix and the <strong>com</strong>mand together as one word. Second, you may<br />

type the si prefix and the <strong>com</strong>mand with an underscore between them. Third, you may quote the<br />

si prefix and the <strong>com</strong>mand, with a space in the middle. For example:<br />

man siabout<br />

man si_about<br />

man "si about" (Windows client only)<br />

See the reference page for the man <strong>com</strong>mand itself, by typing man man, to find out more details.<br />

One new feature involves using the -h option which allows you to view the reference pages in<br />

HTML Help format (Windows client only).<br />

Note:<br />

To view Source Integrity online reference pages (CLI <strong>com</strong>mands) in HTML Help, you must<br />

have Microsoft Internet Explorer 4.0 or higher installed. MKS re<strong>com</strong>mends Microsoft Internet<br />

Explorer 5.0 to avoid any problems with HHCTRL.OCX.<br />

This reference page describes the parts of a reference page with examples taken from real MKS<br />

Source Integrity reference pages.<br />

The following sections discuss the various elements of a reference page.<br />

Name<br />

The NAME section provides the name of the <strong>com</strong>mand and a brief functional description.<br />

Synopsis<br />

In the reference page for a <strong>com</strong>mand, the SYNOPSIS section provides a quick summary of the<br />

6 of 457


<strong>com</strong>mand's format. For example, here is the synopsis of the si add <strong>com</strong>mand.<br />

si add [--archive=filename] [--author=name] [(--binaryFormat|--textFormat)]<br />

[(--cpid ID|--changePackageId=ID)] [--[no]defer] [--[no|confirm]closeCP]<br />

[--issueId=ID] [--description=desc] [--descriptionFile=file] [--issueId=ID]<br />

[(-l|--lock)] [--onExistingArchive=[confirm|sharearchive|newarchive|cancel]]<br />

[--[no]createSubprojects] [--[no]retainWorkingFile] [--[no]saveTimestamp]<br />

[--[no]unexpand] [(-r rev|--revision=rev)] [(-R |--[no|confirm]recurse)]<br />

[(-S sandbox|--sandbox=sandbox)] [--hostname=server] [--port=number]<br />

[--password=password] [--user=name] [--cwd=directory] [(-F file|--selectionFile=file)]<br />

[--forceConfirm=[yes|no]] [(-g|--gui)] [(-N|--no)] [--[no]batch] [--quiet]<br />

[--settingsUI=[gui|default]] [--status=[none|gui|default]] [(-?|--usage)] [(-Y|--yes)]<br />

nonmember...<br />

The synopsis takes the form of a <strong>com</strong>mand line as you might type it into the system; it shows what<br />

you can type in and the order in which you should do it. The parts that are enclosed in square<br />

brackets are optional; you may omit them if you choose. Parts that are not enclosed in square<br />

brackets must be present for the <strong>com</strong>mand to be correct.<br />

The synopsis begins with the name of the <strong>com</strong>mand itself. The Source Integrity <strong>com</strong>mands all<br />

include the si prefix. In Source Integrity documentation, <strong>com</strong>mand names are always written in<br />

bold Courier font.<br />

After the <strong>com</strong>mand name <strong>com</strong>es a list of options. A typical Source Integrity <strong>com</strong>mand option<br />

consists of either a single dash (-) followed by a single character, usually an uppercase or<br />

lowercase letter, or it may consist of a double dash (--) followed by a multi-character option name.<br />

Often there are single-character and multi-character options that do the same thing. The multicharacter<br />

strings are not case sensitive, but are shown in mixed case to facilitate readability. For<br />

example, you might have -L or --label.<br />

The synopsis line shows options in bold Courier font. Note that the case of single-character<br />

options is important; for example, in the synopsis of si add, -r and -R are different options, with<br />

different effects.<br />

Furthermore, in the synopsis all options are shown in one long string. Other <strong>com</strong>mon option forms<br />

are:<br />

-r rev<br />

--revision=rev<br />

where rev or, in some cases, value provides extra information for using that option. For example,<br />

the si lock <strong>com</strong>mand locks sandbox members; here's the <strong>com</strong>mand's synopsis:<br />

7 of 457


si lock [--[no|confirm]branch] [(--cpid ID|--changePackageId=ID)] [--issueId=ID]<br />

[(-r rev|--revision=rev)] [(-R|--[no|confirm]recurse)] [--filter=filteroptions]<br />

[(-P project|--project=project)] [(-S sandbox|--sandbox=sandbox)] [--devpath=path]<br />

[--hostname=server] [--port=number] [--password=password] [--user=name]<br />

[(-?|--usage)] [(-F file|--selectionFile=file)] [(-N|--no)] [(-Y|--yes)] [--[no]batch]<br />

[--cwd=directory] [--forceConfirm=[yes|no]] [(-g|--gui)] [--quiet]<br />

[--settingsUI=[gui|default]] [--status=[none|gui|default]] member...<br />

In this example, there is the option<br />

-r rev<br />

This option tells the si lock <strong>com</strong>mand which revision to lock. In a <strong>com</strong>mand synopsis, anything<br />

appearing in italics is a placeholder for information that you are expected to supply. Sometime<br />

after the synopsis, the reference page explains what kind of information is expected in place of the<br />

placeholder.<br />

The end of the si lock synopsis is<br />

member...<br />

Since there are no square brackets around the list, in this example, it is mandatory.<br />

This means one or more member names; the ellipsis (...) stands for repetitions of whatever<br />

immediately precedes it. Most Source Integrity <strong>com</strong>mands allow you to specify lists of multiple<br />

items using spaces between them.<br />

See the options reference page for more details on selecting members, sandboxes and projects.<br />

The order of items on the <strong>com</strong>mand line is important. When you type in a <strong>com</strong>mand line, you<br />

should specify the parts of the <strong>com</strong>mand line in the order they appear in the <strong>com</strong>mand synopsis.<br />

The exceptions to this are options marked with a - or a --; they do not have to be given in the<br />

exact order shown in the synopsis. However, all the - or -- options must appear in the correct<br />

area of the <strong>com</strong>mand line. For example, you can specify<br />

si lock -r 1.2 --gui member1<br />

si lock --gui -r 1.2 member1<br />

but you won't get correct results if you specify<br />

si lock member1 -r 1.2 --gui<br />

8 of 457


and so on.<br />

si lock -r 1.2 member1 --gui<br />

<strong>Description</strong><br />

The DESCRIPTION section simply describes what the <strong>com</strong>mand does and how each option works.<br />

Inside the DESCRIPTION section, the names of files and directories are written in normal<br />

Courier font. The names of environment variables are written in italic Courier font.<br />

Diagnostics<br />

The DIAGNOSTICS division contains information about the exit status returned by the <strong>com</strong>mand.<br />

You can test this status to determine the result of the operation the <strong>com</strong>mand was asked to<br />

perform.<br />

See Also<br />

The SEE ALSO section refers to other reference pages that may contain information relevant to<br />

the reference page you have just read.<br />

9 of 457


NAME<br />

man — display online reference pages<br />

SYNOPSIS<br />

man [-wx] [-M path] [type] entry ...<br />

man [-wx] [-T txt_indexes] [type] entry ...<br />

man -h [-wx] [-C chm_indexes] [type] entry ...<br />

man -k [-M path] keyword ...<br />

DESCRIPTION<br />

man<br />

The man <strong>com</strong>mand either displays online reference pages or searches for reference pages that<br />

have specified keywords associated with them.<br />

Normally, man displays the reference page for each specified entry. To display only a reference<br />

page of a given type, specify type on the <strong>com</strong>mand line. type is a number representing which type<br />

of reference pages to search. Reference pages <strong>com</strong>e in the following types:<br />

1 Commands and Utilities<br />

3 Functions<br />

4 File Formats<br />

5 Miscellaneous<br />

To indicate an operating system specific version of the entry (if one exists) or to indicate an<br />

<strong>com</strong>mand specific to a given set of <strong>com</strong>mands and/or functions, append one of the following letters<br />

to the specified type:<br />

n for Windows NT/2000/XP/2003<br />

w for Windows Me<br />

t for Tcl<br />

When output is sent to the terminal, man invokes a pager <strong>com</strong>mand to filter and display the<br />

reference pages. If MANPAGER is defined, it is used. If not, and if PAGER is defined, it is used. If<br />

neither is defined, man defaults to using the <strong>com</strong>mand more -A -s.<br />

Options<br />

10 of 457


-C filelist<br />

specifies a list of .idx files (corresponding to .chm files) to search before searching the<br />

files listed in MAN_CHM_INDEX.<br />

-h<br />

-k<br />

launches the HTML Help viewer and displays the HTML Help version of the reference page.<br />

The reference page is found by searching each .idx listed in the MAN_CHM_INDEX file<br />

(or indicated by the -C option) for an entry matching entry and type that indicates which<br />

page in the corresponding .chm file to display.<br />

searches a pre<strong>com</strong>puted database of synopsis lines for information on keywords.<br />

-M path<br />

searches the directories indicated by path for reference pages. If -M is not specified, man<br />

uses the path specified in the MANPATH environment variable if it is set; otherwise man<br />

searches ROOTDIR/etc. All reference pages are found by searching similarly structured<br />

file trees rooted at one or more places. See the FILES section for a description of the files<br />

and directories man should find in each directory that it searches.<br />

-T filelist<br />

specifies a list of .idx files to search before searching the files listed in MAN_TXT_INDEX<br />

when looking for a text version of a reference page.<br />

-w<br />

-x<br />

displays only the file name of the file containing the specified entry.<br />

displays the files that man is searching as it tries to find the entry.<br />

Search Rules<br />

To find a given entry, man follows a set of search rules. When you specify a type, man searches for<br />

the appropriate page amongst pages of that type; otherwise, man looks for the first page named<br />

entry regardless of the type.<br />

When the -h option is specified, man searches the .idx files listed in the MAN_CHM_INDEX<br />

environment variable for an entry matching the specified entry which indicates the HTML Help<br />

page in corresponding .chm to display. The HTML Help viewer is launched, displaying the page.<br />

Once you exit, the view, the man <strong>com</strong>mand exits.<br />

When -h is not specified, man takes the following steps to find the entry. Once a step results in<br />

11 of 457


finding the entry, man displays the reference page and exits.<br />

● man searches the .idx files listed in the MAN_TXT_INDEX environment variable for an<br />

entry matching the request entry which indicates the text (.txt) reference page to display.<br />

● man checks each directory in MANPATH for a file named man.dbz. If it exists, man looks for<br />

the requested entry in its index (see man.dbz File Format).<br />

● For each possible type (that is, type if you specified it, or all types in order from 1 through 9,<br />

then 0 if you did not):<br />

● man checks each directory in MANPATH for a file named catn/entry.n[l] where n<br />

is the type number, and l is the optional letter code. If it exists, man checks to see if it<br />

was <strong>com</strong>pressed with pack, <strong>com</strong>press or mkszip, and un<strong>com</strong>presses it (calling<br />

pcat if the file was packed).<br />

● man checks each directory in MANPATH for a file named mann/entry.n[l].<br />

man.dbz File Format<br />

Sometimes, the reference pages are kept in a single large file, called man.dbz. The file starts with<br />

a magic text string:<br />

!\n<br />

and continues with the index:<br />

14 bytes formatted reference page name<br />

9 bytes seek pointer<br />

9 bytes length<br />

The name is simply the page name, followed by a dot and the type number. For example, this<br />

reference page would be named man.1. When man finds a matching entry, it seeks to the point in<br />

the file specified by the given seek pointer, and un<strong>com</strong>presses for length bytes. Each reference<br />

page is <strong>com</strong>pressed separately.<br />

EXAMPLES<br />

To find the utilities that do <strong>com</strong>parisons, type:<br />

man -k <strong>com</strong>par<br />

12 of 457


ENVIRONMENT VARIABLES<br />

MAN_CHM_INDEX<br />

contains a semicolon separated list of .idx files to search for entry when the -h is<br />

specified.<br />

MAN_TXT_INDEX<br />

contains a semicolon separated list of .idx files to search for entry when the -h is not<br />

specified.<br />

MANPATH<br />

contains a semicolon separated list of paths to search for reference pages.<br />

MANPAGER, PAGER<br />

contains an output filtering <strong>com</strong>mand for use when displaying reference pages on a<br />

terminal.<br />

TMPDIR<br />

identifies the directory where temporary files reside.<br />

FILES<br />

ROOTDIR/etc<br />

is the default directory for the online reference pages. The rest of the files listed here reside<br />

in this directory.<br />

cat[0-9]/*.[0-9]<br />

pre-formatted reference pages in normal, <strong>com</strong>pressed, or packed form.<br />

man[0-9]/*.[0-9]<br />

unformatted reference pages.<br />

whatis<br />

is a database used by -k option.<br />

*.chm<br />

HTML Help files containing collections of reference pages <strong>com</strong>plete with index, table of<br />

contents, and full text search.<br />

*.idx<br />

index files that man how to find HTML Help and text versions of individual reference files.<br />

13 of 457


The .idx files to search are indicated by the MAN_CHM_INDEX and MAN_TXT_INDEX<br />

environment variables.<br />

man.dbz<br />

is a master file containing all reference pages.<br />

The etc directory is found using the ROOTDIR environment variable.<br />

DIAGNOSTICS<br />

Possible exit status values are:<br />

0<br />

1<br />

Successful <strong>com</strong>pletion.<br />

Failure due to any of the following:<br />

PORTABILITY<br />

— unknown <strong>com</strong>mand line option<br />

— missing path after an -M option<br />

— no information available on the desired subject<br />

— unable to create a child process to format reference page<br />

— child process returned with non-zero exit status<br />

POSIX.2. x/OPEN Portability Guide 4.0. All UNIX systems. Windows Me. Windows NT 4.0.<br />

Windows 2000. Windows XP. Windows Server 2003.<br />

The -C, -h, -M, -T, -w, and -x options, the MANPAGER, MAN_CHM_INDEX, and<br />

MAN_TXT_INDEX environment variables, the default pager, the ability to specify type on the<br />

<strong>com</strong>mand line, and the ability to display reference pages in HTML Help format are all extensions to<br />

the POSIX and XPG standards.<br />

AVAILABILITY<br />

MKS Toolkit for Power Users<br />

MKS Toolkit for System Administrators<br />

MKS Toolkit for Developers<br />

MKS Toolkit for Interoperability<br />

MKS Toolkit for Professional Developers<br />

14 of 457


MKS Toolkit for Enterprise Developers<br />

MKS Toolkit for Enterprise Developers 64-Bit Edition<br />

MKS AlertCentre<br />

MKS Source Integrity Standard<br />

MKS Source Integrity Enterprise<br />

SEE ALSO<br />

Commands:<br />

help, manstrip, more<br />

15 of 457


si about<br />

displays product information<br />

SYNOPSIS<br />

si about [--[no]batch] [--cwd=directory] [(-g|--gui)] [--quiet]<br />

[--settingsUI=[gui|default]] [--status=[none|gui|default]] [(-?|--usage)]<br />

DESCRIPTION<br />

si about displays information about this copy of MKS Source Integrity.<br />

Options<br />

si about takes a subset of the universal options available to si <strong>com</strong>mands. For example,<br />

si about --gui<br />

displays the product information in a GUI window. See the options reference page for<br />

descriptions.<br />

PREFERENCES<br />

Using si setprefs or si viewprefs, you are able to set or view the preference keys for this<br />

<strong>com</strong>mand.<br />

SEE ALSO<br />

Miscellaneous:<br />

diagnostics, options, preferences<br />

16 of 457


si acceptcp<br />

accepts change package<br />

SYNOPSIS<br />

si acceptcp [--<strong>com</strong>ments=value] [--<strong>com</strong>mentsFile=value]<br />

[--reviewer=[user|group:|super|all]] [--hostname=server] [--port=number]<br />

[--password=password] [--user=name] [(-?|--usage)] [(-Ffile|--selectionFile=file)]<br />

[(-N|--no)] [(-Y|--yes)] [--[no]batch] [--cwd=directory] [--forceConfirm=[yes|no]]<br />

[(-g|--gui)] [--quiet] [--settingsUI=[gui|default]] [--status=[none|gui|default]]<br />

issue|issue:change package id...<br />

DESCRIPTION<br />

si acceptcp casts an accept vote on a change package under review and in the submitted<br />

state.<br />

After a change package is submitted, each individual reviewer and one member of each reviewer<br />

group (if specified) in the reviewer list must accept the change package before it can be <strong>com</strong>mitted<br />

to the repository and then closed.<br />

If there are reviewers in addition to yourself, an e-mail is sent to notify those reviewers that you<br />

have cast an accept vote for the change package.<br />

When all of the individual reviewers and at least one reviewer from each reviewer group have<br />

accepted the change package, an e-mail is sent to notify the reviewers and the creator that the<br />

change package is accepted.<br />

Once the final required accept vote is cast, the change package is accepted and then <strong>com</strong>mitted to<br />

the repository. If the change package is successfully <strong>com</strong>mitted to the repository, it then moves to<br />

a state of Closed. If the change package fails to <strong>com</strong>mit to the repository, the change package<br />

moves to a state of CommitFailed. Correct the error, then submit the change package again.<br />

If the change package under review is closed, an e-mail notification of the Closed state is sent to<br />

the change package watchers. All e-mail notifications contain Change Package and Review<br />

information.<br />

Options<br />

This <strong>com</strong>mand takes the universal options available to all si <strong>com</strong>mands, as well as some general<br />

options. See the options reference page for descriptions.<br />

17 of 457


--<strong>com</strong>ments=value<br />

specifies <strong>com</strong>ments recorded in the review log with the vote.<br />

--<strong>com</strong>mentsFile=value<br />

specifies a text file that contains the <strong>com</strong>ments to be recorded in the review log with the<br />

vote.<br />

--reviewer=[user|group:|super|all]<br />

specifies the capacity in which you are casting an accept vote.<br />

user<br />

casts a vote as an individual reviewer in the reviewer list.<br />

group:<br />

casts a vote on behalf of the entire group (only one user from a group is necessary to<br />

vote on behalf of the entire group).<br />

super<br />

an overriding accept vote that is sufficient for accepting the change package even if<br />

there are additional reviewers. A super reviewer does is not required to be a listed<br />

reviewer for the change package.<br />

all<br />

casts a vote as a specific user and any group to which the reviewer belongs.<br />

issue...<br />

issue:change package id...<br />

issue identifies a specific issue that contains all submitted change packages that you want<br />

to cast accept votes for; use spaces to specify more than one issue.<br />

issue:change package id identifies a specific change package to cast an accept vote for;<br />

use spaces to specify more than one change package.<br />

DIAGNOSTICS<br />

See the diagnostics reference page for possible exit status values.<br />

PREFERENCES<br />

Using si setprefs or si viewprefs, you are able to set or view the preference keys for this<br />

<strong>com</strong>mand.<br />

SEE ALSO<br />

Commands:<br />

si add, si ci, si co, si cpissues , si createcp, si drop, si lock, si<br />

viewcps, si rejectcp, si opencp, si discardcp,<br />

18 of 457


Miscellaneous:<br />

ACL, diagnostics, options, preferences<br />

19 of 457


si add<br />

adds a new member to a project<br />

SYNOPSIS<br />

si add [--archive=filename] [--author=name] [(--binaryFormat|--textFormat)]<br />

[(--cpid ID|--changePackageId=ID)] [--[no]defer] [--[no|confirm]closeCP] [--issueId=ID] [(ddesc|--description=desc)]<br />

[--descriptionFile=file] [--issueId=ID] [(-l|--lock)]<br />

[--onExistingArchive=[confirm|sharearchive|newarchive|cancel]]<br />

[--[no]createSubprojects] [--[no]retainWorkingFile] [--[no]saveTimestamp]<br />

[--[no]unexpand] [(-r rev|--revision=rev)] [(-R|--[no|confirm]recurse)]<br />

[(-S sandbox|--sandbox=sandbox)] [--hostname=server] [--port=number] [--password=password]<br />

[--user=name] [--cwd=directory] [(-F file|--selectionFile=file)] [--forceConfirm=[yes|no]]<br />

[(-g|--gui)] [(-N|--no)] [--[no]batch] [--quiet] [--settingsUI=[gui|default]]<br />

[--status=[none|gui|default]] [(-?|--usage)] [(-Y|--yes)] [-R|--[no|confirm]recurse]<br />

[--[no|confirm]includeFormers] [--exclude=file:pattern,dir:pattern...]<br />

[--include=file:pattern,dir:pattern...] nonmember...<br />

DESCRIPTION<br />

si add adds one or more nonmember files located in a sandbox directory to a project.<br />

For example, you can add a member from the c:\apps\prototype\ directory by specifying:<br />

si add --description="Prototype application header"<br />

-S prototype.pj header.c<br />

adds the header.c file to the project as a new member with the description "Prototype application header".<br />

Since the member is added to the project on the Source Integrity Server, all other users who have sandboxes<br />

pointing to the project can see the same new member. Source Integrity creates a history on the server for each<br />

newly added member that does not already have a history.<br />

If you intend to add files that already have a history, such as files you used in another project but wish to reuse<br />

in a new project, or a member that previously has been dropped (see si drop), then use the si<br />

addmemberfromarchive <strong>com</strong>mand. By default, if histories exist for members you add and you choose to<br />

attach the new members to them, Source Integrity creates a branch of the head revision.<br />

Adding a member that previously has been dropped (see si drop) results in the history of the dropped<br />

member be<strong>com</strong>ing the history of the newly added member.<br />

Tip: To add existing members to a new project more quickly, place the files on the server and use the si<br />

import <strong>com</strong>mand. MKS re<strong>com</strong>mends using the si import <strong>com</strong>mand for batch imports of a directory tree,<br />

or of history files from older versions of Source Integrity.<br />

Options<br />

20 of 457


This <strong>com</strong>mand takes the universal options available to all si <strong>com</strong>mands, as well as some general options. See<br />

the options reference page for descriptions.<br />

--archive=filename<br />

sets the archive file name, filename, containing the server-side path and name by which the newly<br />

added member will be archived. This must be an existing archive file - this option does not create a new<br />

archive. This is an advanced option that effectively specifies an archive path to override the default<br />

mapping, allowing a basic form of archive sharing between projects; its use is not re<strong>com</strong>mended except<br />

by advanced Source Integrity administrators.<br />

-r=value<br />

--revision=value<br />

Specifies the revision at which the member is to be added. By default, the member is added at the latest<br />

revision on the main branch. Values of 0.0 and 0.1 are acceptable revision numbers. The revision<br />

specified precludes specifying earlier revisions at a later date, for example after specifying 1.3, you<br />

cannot specify 1.2 as a valid revision.<br />

--author=name<br />

specifies an author name.<br />

--binaryFormat<br />

--textFormat<br />

forces the storage of the member file to occur in binary format or text format. This option overrides the<br />

preferences settings that control default behavior in the application for storage format. See the si<br />

setprefs and si viewprefs <strong>com</strong>mands for more details on preferences.<br />

--cpid=ID<br />

--changePackageId=ID<br />

identifies a change package that is notified of this action, for example, 1452:1. Note the following about<br />

using this option:<br />

❍ This option can only be specified if change packages are enabled.<br />

❍ You must specify this option if you have requested to obtain a lock and TrackLocks is enabled,<br />

and/or it is mandatory to specify a change package.<br />

❍ If the integration is enabled, but it is not mandatory to specify a change package, or if no change<br />

package is applicable, you must specify --changePackageId=:none.<br />

--[no]defer<br />

controls whether to delay the add operation in the project until the deferred operation is submitted. The<br />

operation in the sandbox still takes place immediately.<br />

If the change package reviews are mandatory, specify the --deferred option to create a pending entry<br />

for this operation at the time of change package submission. If the --deferred option is not enabled,<br />

Source Integrity creates the pending entry at the <strong>com</strong>pletion of this procedure. When a deferred add<br />

member operation is submitted as part of a review, a pending member is created For more information,<br />

see the Source Integrity Enterprise User Guide.<br />

--[no|confirm]closeCP<br />

controls whether to close the associated change package.<br />

--nocloseCP means do not close the change package.<br />

--confirmcloseCP means ask before closing the change package.<br />

21 of 457


--closeCP always closes the change package.<br />

--issueId=ID<br />

identifies an MKS Integrity Manager issue that is notified of this action. This option is another way of<br />

adding members to a change package. If you have an issue assigned to you that contains one open<br />

change package, you can specify the issue ID instead of the change package ID. See the Integrity<br />

Server Administration Guide or your administrator for details on using the Integrity Manager integration.<br />

-l<br />

--lock<br />

controls whether to lock the newly created revision.<br />

--onExistingArchive=[confirm|sharearchive|newarchive|cancel]<br />

controls whether to allow sharing of this member's history between projects, or to create a new archive if<br />

there is already an existing archive for the member.<br />

--onExistingArchive=confirm means always ask whether to share the archive, create a new<br />

archive, or cancel the operation.<br />

--onExistingArchive=sharearchive means share the archive.<br />

--onExistingArchive=newarchive means create a new archive.<br />

--onExistingArchive=confirmsharearchive means always ask before sharing an archive.<br />

--onExistingArchive=confirmnewarchive means always ask before creating a new archive.<br />

--onExistingArchive=cancel means cancel the operation.<br />

--description=desc<br />

specifies a description for the new archive; this setting and the --descriptionFile option are<br />

mutually exclusive. If specifying a nonmember that has an existing history, this description does not<br />

overwrite an existing description and is ignored.<br />

Note: <strong>Description</strong>s that include spaces must be enclosed by quotes.<br />

-d desc<br />

--descriptionFile=file<br />

specifies a file for obtaining a description to apply to the new archive; this setting and the<br />

--description option are mutually exclusive. If specifying a nonmember that has an existing history,<br />

this description does not overwrite an existing description and is ignored.<br />

--[no]createSubprojects<br />

controls whether to create subprojects for each subdirectory encountered when adding members. This<br />

option is <strong>com</strong>monly used where you anticipate working with a large directory structure, because multiple<br />

subprojects are easier to manage than many subdirectories within one project. For example, specifying:<br />

si add --createSubprojects --description="Button Application"<br />

\buttons\activebutton.c<br />

creates a subproject for the \buttons directory and adds the file activebutton.c. Without the -createSubprojects<br />

option, the file and its path simply would be added to the project in the current<br />

directory.<br />

22 of 457


--[no]retainWorkingFile<br />

controls whether to retain a working file in the sandbox after adding the new member.<br />

--[no]saveTimestamp<br />

controls whether to set the revision timestamp to the modification date and time of the working file rather<br />

than the current date and time.<br />

--[no|confirm]includeFormers<br />

controls whether to include former members. Former members are members that have been dropped<br />

but whose working files still reside in the sandbox directory.<br />

--[no]unexpand<br />

controls whether to unexpand keywords in the member file before checking it into the history. Keyword<br />

expansion is only available in text archives, not binary archives. For descriptions of the Source Integrity<br />

keywords, see the Source Integrity User Guide. Possible keywords are:<br />

$Author$<br />

$CompanyInfo$<br />

$Date$<br />

$Header$<br />

$Id$<br />

$Locker$<br />

$Log$<br />

$Name$<br />

$ProjectName$<br />

$ProjectSetting attribute$<br />

$ProjectRevision$<br />

$RCSfile$<br />

$Revision$<br />

$SandboxSetting attribute$<br />

$Setting attribute$<br />

$Source$<br />

$State$<br />

-R<br />

--[no|confirm]recurse<br />

controls whether to select non-members recursively. Non-members are files that exist in the sandbox<br />

directory but have not previously been added to the server repository.<br />

--exclude=file:pattern,dir:pattern...<br />

specifies a file that contains a glob pattern for excluding members.<br />

--include=file:pattern,dir:pattern...<br />

specifies a file that contains a glob pattern for including members.<br />

nonmember...<br />

identifies a specific file to add to your sandbox; use spaces to specify more than one.<br />

Note: All files must be added "in tree", that is, the nonmember must exist in the sandbox directory or a<br />

subdirectory. Shared "out of tree" histories are supported by using the --archive option to point to the<br />

"out of tree" history that you want to associate with the member.<br />

DIAGNOSTICS<br />

23 of 457


See the diagnostics reference page for possible exit status values.<br />

PREFERENCES<br />

Using si setprefs or si viewprefs, you are able to set or view the preference keys for this <strong>com</strong>mand.<br />

SEE ALSO<br />

Commands:<br />

si addmemberfromarchive, si import, si ci, si closecp, si co, si cpissues, si<br />

createcp, si drop, si projects, si sandboxes, si viewcps<br />

Miscellaneous:<br />

ACL, diagnostics, options, preferences<br />

24 of 457


si addlabel<br />

assigns a label to project members<br />

SYNOPSIS<br />

si addlabel [--[no|confirm]moveLabel] [(-r rev|--revision=rev)] [(-L label|--label=label)]<br />

[(-R|--[no|confirm]recurse)] [--filter=filteroptions] [(-P project|--project=project)]<br />

[(-S sandbox|--sandbox=sandbox)] [--devpath=path] [--projectRevision=rev] [--hostname=server]<br />

[--port=number] [--password=password] [--user=name] [(-?|--usage)]<br />

[(-F file|--selectionFile=file)] [(-N|--no)] [(-Y|--yes)] [--[no]batch] [--cwd=directory]<br />

[--forceConfirm=[yes|no]] [(-g|--gui)] [--quiet] [--settingsUI=[gui|default]]<br />

[--status=[none|gui|default]] member...<br />

DESCRIPTION<br />

si addlabel assigns a label to a revision of one or more members of an MKS Source Integrity project. If you<br />

do not specify any members, the si addlabel <strong>com</strong>mand applies to all project members.<br />

Options<br />

This <strong>com</strong>mand takes the universal options available to all si <strong>com</strong>mands, as well as some general options. See<br />

the options reference page for descriptions.<br />

--[no|confirm]moveLabel<br />

controls whether the application should move a label from one revision to another.<br />

--nomoveLabel disables the moving of a label.<br />

--confirmmoveLabel displays a confirmation message.<br />

--moveLabel moves the label.<br />

-L label<br />

--label=label<br />

identifies a label. To add the label "October 15th Prototype" to a member file activebutton.c, you<br />

would enter<br />

Note the following about using labels:<br />

si addlabel -L "October 15th Prototype" activebutton.c<br />

❍ Labels cannot contain colons(:), square brackets ([ ]), or leading spaces.<br />

❍ Labels cannot have the same format as a valid revision number.<br />

❍ Labels that include spaces must be enclosed by quotes.<br />

❍ MKS re<strong>com</strong>mends not using hyphens (-) in labels. Using hyphens may cause some si <strong>com</strong>mands to fail.<br />

❍ Labels cannot contain numbers without any spaces, for example, 14325. Numbers that contain spaces<br />

25 of 457


are acceptable, for example, 2432 1234.<br />

member...<br />

identifies a specific member; use spaces to specify more than one member.<br />

DIAGNOSTICS<br />

See the diagnostics reference page for possible exit status values.<br />

PREFERENCES<br />

Using si setprefs or si viewprefs, you are able to set or view the preference keys for this <strong>com</strong>mand.<br />

SEE ALSO<br />

Commands:<br />

si addprojectlabel, si ci, si deletelabel, si deleteprojectlabel , si rlog, si<br />

viewlabels<br />

Miscellaneous:<br />

ACL, diagnostics, options, preferences<br />

26 of 457


si addmemberattr<br />

adds attributes to a member<br />

SYNOPSIS<br />

si addmemberattr [(--attr=key[=value]|--attribute=key[=value])]<br />

[(-R|--[no|confirm]recurse)] [--filter=filteroptions] [(-P project|--project=project)]<br />

[(-S sandbox|--sandbox=sandbox)] [--devpath=path] [--hostname=server]<br />

[--port=number] [--password=password] [--user=name] [(-?|--usage)]<br />

[(-F file|--selectionFile=file)] [(-N|--no)] [(-Y|--yes)] [--[no]batch] [--cwd=directory]<br />

[--forceConfirm=[yes|no]] [(-g|--gui)] [--quiet] [--settingsUI=[gui|default]]<br />

[--status=[none|gui|default]] member...<br />

DESCRIPTION<br />

si addmemberattr adds attributes to a member, replacing any previous attribute of that same<br />

name specified with the member. If no members are specified, the <strong>com</strong>mand applies to all<br />

members of the project.<br />

Attributes are key-value pairs of strings that are associated with a member. They are used for<br />

automated operations. For example, you could have an attribute indicating the target operating<br />

system type:<br />

si addmemberattr --attr OS=WIN32 activebutton.c<br />

and then you could perform other operations, such as si resync, on just those files through the<br />

--filter universal option:<br />

si resync --filter=attribute:OS=WIN32<br />

Note: Attribute keys cannot contain a hyphen (-) as the first character. The first character must<br />

either be a underscore (_) or an alpha character.<br />

Options<br />

This <strong>com</strong>mand takes the universal options available to all si <strong>com</strong>mands, as well as some general<br />

options. See the options reference page for descriptions.<br />

--attr=key[=value]<br />

--attribute=key[=value]<br />

sets the attribute key and, optionally, the value. Note: you cannot have <strong>com</strong>mas (,) in the<br />

key or value, nor an underscore (_) at the beginning of an attribute.<br />

27 of 457


member...<br />

identifies a specific member; use spaces to specify more than one member.<br />

DIAGNOSTICS<br />

See the diagnostics reference page for possible exit status values.<br />

PREFERENCES<br />

Using si setprefs or si viewprefs, you are able to set or view the preference keys for this<br />

<strong>com</strong>mand.<br />

SEE ALSO<br />

Commands:<br />

si addprojectattr, si dropmemberattr, si dropprojectattr<br />

Miscellaneous:<br />

ACL, diagnostics, options, preferences<br />

28 of 457


si addmemberfromarchive<br />

adds a member from a server archive<br />

SYNOPSIS<br />

si addmemberfromarchive [--archive=value] [--[no]createSubprojects] [--[no]defer]<br />

[--[no|confirm]includeFormers] [--include=file:pattern,dir:pattern...] [--exclude=file:pattern,dir:pattern...]<br />

[--cpid|--changePackageId=value] [--[no|confirm]closeCP] [--issueId=value] [--devpath=value]<br />

[-P|--project=value] [-r|--revision=value] [-S|--sandbox=value] [--hostname=server]<br />

[--port=number] [--password=password] [--user=name] [(-?|--usage)] [(-Ffile|--selectionFile=file)]<br />

[(-N|--no)] [(-Y|--yes)] [--[no]batch] [--cwd=directory] [--forceConfirm=[yes|no]] [(-g|--gui)] [--quiet]<br />

[--settingsUI=[gui|default]] [--status=[none|gui|default]] nonmember...<br />

DESCRIPTION<br />

si addmemberfromarchive adds members from server archives.<br />

The si addmemberfromarchive <strong>com</strong>mand can be used for the following:<br />

● Add previously dropped members without requiring a sandbox working file, while preserving the member<br />

history.<br />

From the sandbox directory, for example, and assuming the three specified members have just been<br />

mistakenly dropped, the following <strong>com</strong>mand will re-add them:<br />

si addmemberfromarchive label.c button.c panel.c<br />

● Add a member that shares the history of another existing member, where the source member can be located<br />

in another project from the added member.<br />

From the sandbox directory, for example, the following <strong>com</strong>mand will add a member named largeLabel.c that<br />

shares the history with all members already linked to the specified archive location.<br />

si addmemberfromarchive --archive=/anotherproject/rcs/label.c largeLabel.c<br />

Note the following about the <strong>com</strong>mand:<br />

● can be deferred when performed from a sandbox<br />

● may be part of change package review (displayed as pending members in the project)<br />

● supports multiple selection of archives using the wizard<br />

Options<br />

This <strong>com</strong>mand takes the universal options available to all si <strong>com</strong>mands, as well as some general options. See the<br />

options reference page for descriptions.<br />

--archive=value<br />

a non-default archive location (the specified archive must exist on the server). To add several members with<br />

29 of 457


non-default archive locations in one operation, use the GUI wizard (si addmemberfromarchive -g ).<br />

-r=value<br />

--revision=value<br />

specifies the revision at which the member is to be added. This must be an existing revision in the archive. By<br />

default, the member is added at the latest revision on the main branch.<br />

--[no]createSubprojects<br />

controls whether to create subprojects for each subdirectory encountered when adding members. This option<br />

is <strong>com</strong>monly used where you anticipate working with a large directory structure, because multiple subprojects<br />

are easier to manage than many subdirectories within one project. For example, specifying:<br />

Application"<br />

si addmemberfromarchive --createSubprojects --description="Button<br />

\buttons\activebutton.c<br />

creates a subproject for the \buttons directory and adds the file activebutton.c. Without the -createSubprojects<br />

option, the file and its path simply would be added to the project in the current directory.<br />

--[no]defer<br />

controls whether to delay the add member from archive operation in the project until the deferred operation is<br />

submitted. The operation in the sandbox still takes place immediately.<br />

If the change package reviews are mandatory, specify the --defer option to create a pending entry for this<br />

operation at the time of change package submission. If the --defer option is not specified, Source Integrity<br />

creates the pending entry at the <strong>com</strong>pletion of this operation. When a deferred import member operation is<br />

submitted as part of a review, a pending member is created For more information, see the Source Integrity<br />

Enterprise User Guide.<br />

--[no|confirm]includeFormers<br />

controls whether to include former members. Former members are members that have been dropped but<br />

whose working files still reside in the sandbox directory.<br />

--exclude=file:pattern,dir:pattern...<br />

specifies a file that contains a glob pattern for excluding members.<br />

--include=file:pattern,dir:pattern...<br />

specifies a file that contains a glob pattern for including members.<br />

--cpid=value<br />

--changePackageId=ID<br />

identifies a change package that is notified of this action, for example, 1452. Note the following about using<br />

this option:<br />

❍ This option can only be specified if change packages are enabled.<br />

❍ You must specify this option if you have requested to obtain a lock and TrackLocks is enabled, and/or it<br />

is mandatory to specify a change package.<br />

❍ If the integration is enabled, but it is not mandatory to specify a change package, or if no change<br />

package is applicable, you must specify --changePackageId=:none.<br />

❍ The next time you are prompted for a change package ID, the last used change package ID is<br />

displayed by default, if :none was specified or at least one change package was successfully updated<br />

from the last operation.<br />

--[no|confirm]closeCP<br />

closes the change package after <strong>com</strong>mand <strong>com</strong>pletion.<br />

--issueID=value<br />

specifies the issue ID that corresponds to the change package that records the changes.<br />

30 of 457


nonmember...<br />

identifies non-members to add; use spaces to specify more than one non-member.<br />

DIAGNOSTICS<br />

See the diagnostics reference page for possible exit status values.<br />

PREFERENCES<br />

Using si setprefs or si viewprefs, you are able to set or view the preference keys for this <strong>com</strong>mand.<br />

SEE ALSO<br />

Commands:<br />

si add, si ci, si co, si cpissues , si createcp, si drop, si lock, si viewcps<br />

Miscellaneous:<br />

ACL, diagnostics, options, preferences<br />

31 of 457


si addproject<br />

adds an existing project to the list of top-level projects<br />

SYNOPSIS<br />

si addproject [--[no]openView] [--hostname=server] [--port=number]<br />

[--password=password] [--user=name] [(-?|--usage)] [(-F file|--selectionFile=file)]<br />

[(-N|--no)] [(-Y|--yes)] [--[no]batch] [--cwd=directory] [--forceConfirm=[yes|no]]<br />

[(-g|--gui)] [--quiet] [--settingsUI=[gui|default]] [--status=[none|gui|default]]<br />

[--[no]add] project location...<br />

DESCRIPTION<br />

si addproject adds an existing project to the list of top-level projects.<br />

The si addproject <strong>com</strong>mand can be used for the following:<br />

● Expose an existing subproject as a top-level project.<br />

● Expose a project imported with the --noadd flag.<br />

● Re-expose a dropped top-level project.<br />

Note: This <strong>com</strong>mand actually has to perform a processing very similar to the ImportProject<br />

<strong>com</strong>mand. This is why those two <strong>com</strong>mands share the ImportProject ACL.<br />

MKS suggests you use si Addproject when the project is already in the Source Integrity<br />

repository and si ImportProject when importing projects from older versions of Source<br />

Integrity.<br />

Options<br />

This <strong>com</strong>mand takes the universal options available to all si <strong>com</strong>mands, as well as some general<br />

options. See the options reference page for descriptions.<br />

--[no]openView<br />

controls whether to open the project view after this project is added. If --noopenView is<br />

used, the project view does not open.<br />

project location...<br />

identifies a location on the Integrity Server for the existing project to be added. Regardless<br />

of your operating system, all paths are specified here using forward slashes (/) and should<br />

include the name of the project file (typically project.pj). Use spaces to specify more<br />

than one project location.<br />

32 of 457


DIAGNOSTICS<br />

See the diagnostics reference page for possible exit status values.<br />

PREFERENCES<br />

Using si setprefs or si viewprefs, you are able to set or view the preference keys for this<br />

<strong>com</strong>mand.<br />

SEE ALSO<br />

Commands:<br />

si checkpoint, si createproject, si createsandbox, si createsubproject,<br />

si dropproject, si addsandbox, si projects, si importproject, si<br />

viewproject<br />

Miscellaneous:<br />

ACL, diagnostics, options, preferences<br />

33 of 457


si addprojectattr<br />

adds attributes to a project<br />

SYNOPSIS<br />

si addprojectattr [(--attr=key[=value]|--attribute=key[=value])]<br />

[(-P project|--project=project)] [(-S sandbox|--sandbox=sandbox)] [--devpath=path]<br />

[--hostname=server] [--port=number] [--password=password] [--user=name]<br />

[(-?|--usage)] [(-F file|--selectionFile=file)] [(-N|--no)] [(-Y|--yes)] [--[no]batch]<br />

[--cwd=directory] [--forceConfirm=[yes|no]] [(-g|--gui)] [--quiet]<br />

[--settingsUI=[gui|default]] [--status=[none|gui|default]]<br />

DESCRIPTION<br />

si addprojectattr adds attributes to a project, replacing any previous attribute of the same<br />

name specified with the project.<br />

Attributes are key-value pairs of strings that are associated with the project. They are used for<br />

automated operations. For example, you could have an attribute indicating the target operating<br />

system type:<br />

si addprojectattr --attr OS=WIN32<br />

Note: Attribute keys cannot contain a hyphen (-) as the first character. The first character must<br />

either be a underscore (_) or an alpha character.<br />

Options<br />

This <strong>com</strong>mand takes the universal options available to all si <strong>com</strong>mands, as well as some general<br />

options. See the options reference page for descriptions.<br />

--attr=key[=value]<br />

--attribute=key[=value]<br />

sets the attribute key and, optionally, the value. Note: you cannot have <strong>com</strong>mas (,) in the<br />

key or value, nor an underscore (_) at the beginning of an attribute.<br />

DIAGNOSTICS<br />

See the diagnostics reference page for possible exit status values.<br />

34 of 457


PREFERENCES<br />

Using si setprefs or si viewprefs, you are able to set or view the preference keys for this<br />

<strong>com</strong>mand.<br />

SEE ALSO<br />

Commands:<br />

si addmemberattr, si dropmemberattr, si dropprojectattr, si<br />

dropsandboxattr, si addsandboxattr<br />

Miscellaneous:<br />

ACL, diagnostics, options, preferences<br />

35 of 457


si addprojectlabel<br />

assigns a label to a project<br />

SYNOPSIS<br />

si addprojectlabel [--[no|confirm]moveLabel] [(-L label|--label=label)]<br />

[(-P project|--project=project)] [(-S sandbox|--sandbox=sandbox)] [--devpath=path]<br />

[--projectRevision=rev] [--hostname=server] [--port=number] [--password=password]<br />

[--user=name] [(-?|--usage)] [(-Ffile|--selectionFile=file)] [(-N|--no)] [(-Y|--yes)]<br />

[--[no]batch] [--cwd=directory] [--forceConfirm=[yes|no]] [(-g|--gui)] [--quiet]<br />

[--settingsUI=[gui|default]] [--status=[none|gui|default]]<br />

DESCRIPTION<br />

si addprojectlabel assigns a label to a checkpointed revision of a project.<br />

Options<br />

This <strong>com</strong>mand takes the universal options available to all si <strong>com</strong>mands, as well as some general<br />

options. See the options reference page for descriptions.<br />

--[no|confirm]moveLabel<br />

controls whether the application should move a label from one revision to another.<br />

--nomoveLabel disables the moving of a label.<br />

--confirmmoveLabel displays a confirmation message.<br />

--moveLabel moves the label.<br />

-L label<br />

--label=label<br />

identifies a label. Note the following about using labels:<br />

❍ Labels cannot contain colons(:), square brackets ([ ]), or leading spaces.<br />

❍ Labels cannot have the same format as a valid revision number.<br />

❍ Labels that include spaces must be enclosed by quotes.<br />

❍ MKS re<strong>com</strong>mends not using hyphens (-) in labels. Using hyphens may cause some<br />

si <strong>com</strong>mands to fail.<br />

❍ Labels cannot contain numbers without any spaces, for example, 14325. Numbers<br />

that contain spaces are acceptable, for example, 2432 1234.<br />

36 of 457


DIAGNOSTICS<br />

See the diagnostics reference page for possible exit status values.<br />

PREFERENCES<br />

Using si setprefs or si viewprefs, you are able to set or view the preference keys for this<br />

<strong>com</strong>mand.<br />

SEE ALSO<br />

Commands:<br />

si addlabel, si ci, si deletelabel, si deleteprojectlabel , si rlog, si<br />

viewlabels<br />

Miscellaneous:<br />

diagnostics, options, preferences<br />

37 of 457


si addsandboxattr<br />

adds sandbox attributes<br />

SYNOPSIS<br />

si addsandboxattr [--attr|attribute=key=value] [-S|--sandbox=value]<br />

[--hostname=server] [--port=number] [--password=password] [--user=name]<br />

[(-?|--usage)] [(-Ffile|--selectionFile=file)] [(-N|--no)] [(-Y|--yes)] [--[no]batch]<br />

[--cwd=directory] [--forceConfirm=[yes|no]] [(-g|--gui)] [--quiet]<br />

[--settingsUI=[gui|default]] [--status=[none|gui|default]]<br />

DESCRIPTION<br />

si addsandboxattr adds sandbox attributes.<br />

Note: Attribute keys cannot contain a hyphen (-) as the first character. The first character must<br />

either be a underscore (_) or an alpha character.<br />

Options<br />

This <strong>com</strong>mand takes the universal options available to all si <strong>com</strong>mands, as well as some general<br />

options. See the options reference page for descriptions.<br />

--attr=key=value<br />

--attribute=key=value<br />

specifies the attibute to set.<br />

DIAGNOSTICS<br />

See the diagnostics reference page for possible exit status values.<br />

PREFERENCES<br />

Using si setprefs or si viewprefs, you are able to set or view the preference keys for this<br />

<strong>com</strong>mand.<br />

SEE ALSO<br />

Commands:<br />

38 of 457


si dropsandboxattr, siconfiguresandbox, add projectattr,<br />

dropprojectattr<br />

Miscellaneous:<br />

ACL, diagnostics, options, preferences<br />

39 of 457


si addsubproject<br />

adds an existing subproject to a project<br />

SYNOPSIS<br />

si addsubproject [-r subproject revision|--subprojectRevision=subproject revision]<br />

[--subprojectDevelopmentPath=subproject development path name|--variant=subproject development path<br />

name] [--type=[normal|variant|build|default]] [(-Pproject|--project=project)]<br />

[(-S sandbox|--sandbox=sandbox)] [--devpath=path] [--hostname=server] [--port=number]<br />

[--password=password] [--user=name] [(-?|--usage)] [(-F file|--selectionFile=file)] [(-N|--no)]<br />

[(-Y|--yes)] [--[no]batch] [--cwd=directory] [--forceConfirm=[yes|no]] [(-g|--gui)] [--quiet]<br />

[--settingsUI=[gui|default]] [--status=[none|gui|default]] subproject location...<br />

DESCRIPTION<br />

si addsubproject allows you to re-add a dropped subproject to recreate an earlier version of the project.<br />

Note: If you want to add a normal subproject to a variant project, the normal subproject does not require a<br />

development path.<br />

Options<br />

This <strong>com</strong>mand takes the universal options available to all si <strong>com</strong>mands, as well as some general options. See the<br />

options reference page for descriptions.<br />

-r=subproject revision<br />

--subprojectRevision=subproject revision<br />

specifies the revision number (for build subprojects). For example, 1.5. This option is used with -type=build.<br />

--subprojectDevelopmentPath=subproject development path name<br />

--variant=subproject development path name<br />

specifies the development path name (for variant subprojects). For example, Service_Pack3. This option is<br />

used with --type=variant<br />

--type=[normal|variant|build|default]<br />

specifies the new configuration type for the subproject.<br />

--type=normal configures the subproject based upon the current state of the subproject.<br />

--type=variant configures the subproject based upon a specific development path. The option is used<br />

with --variant=subproject development path name or --subprojectDevelopmentPath=subproject<br />

development path name.<br />

--type=build configures the subproject as a static subproject based upon a specific revision of the master<br />

project that is used for building or testing the project, but not for further development. This option is used with -<br />

r subproject revision or --subprojectRevision=subproject revision.<br />

--type=default configures the subproject based on the type that is consistent with the parent project that<br />

you are adding the subproject to. For example, if you add a subproject to a normal project, the subproject is<br />

added as a normal type. For information on what the default type is, see your administrator.<br />

-P project name<br />

40 of 457


--project=project name<br />

specifies the path and name of the project to add the subproject to, for example,<br />

c:/Aurora_Program/bin/project.pj.<br />

subproject location...<br />

specifies the path and name of the subproject you want to add, for example,<br />

c:/Aurora_Program/bin/Libra/project.pj<br />

DIAGNOSTICS<br />

See the diagnostics reference page for possible exit status values.<br />

PREFERENCES<br />

Using si setprefs or si viewprefs, you are able to set or view the preference keys for this <strong>com</strong>mand.<br />

SEE ALSO<br />

Commands:<br />

si checkpoint, si configuresubproject , si createproject , si createsandbox , si drop,<br />

si dropproject, si importproject, si projectinfo, si projects, si sharesubproject, si<br />

viewproject<br />

Miscellaneous:<br />

ACL, diagnostics, options, preferences<br />

41 of 457


si annotate<br />

displays an annotated revision.<br />

SYNOPSIS<br />

si annotate [--[no]defaultFormat] [--[no|un]expand]<br />

[--fields=field1[:width1],field2[:width2]...] [-height=value] [-width= value] [-x=value]<br />

[-y=value] [-r|--revision=value] [--devpath=value] [-P|--project=value]<br />

[-S|--sandbox=value] [--projectRevision=value] [--hostname=server] [--port=number]<br />

[--password=password] [--user=name] [(-?|--usage)] [(-N|--no)] [(-Y|--yes)]<br />

[--[no]batch] [--cwd=directory] [--forceConfirm=[yes|no]] [(-g|--gui)] [--quiet]<br />

[--settingsUI=[gui|default]] [--status=[none|gui|default]] member<br />

DESCRIPTION<br />

si annotate displays an annotated revision. Use the <strong>com</strong>mand when you want to know the<br />

reason and circumstances a line was introduced or changed. Rather than viewing the content of<br />

each revision in the history one revision at a time, you can see the line by line history that includes<br />

information on a per revision basis.<br />

Options<br />

This <strong>com</strong>mand takes the universal options available to all si <strong>com</strong>mands, as well as some general<br />

options. See the options reference page for descriptions.<br />

--[no]defaultFormat<br />

specifies if the default format is used to display the output.<br />

--[no|un]expand<br />

specifies if the keywords are expanded in the output.<br />

--fields=field1[:width1],field2[:width2]...<br />

The fields available for printing can be one or more of the following:<br />

author<br />

displays the author of the revision.<br />

cpid<br />

displays the line's associated change package ID.<br />

date<br />

displays the date each line in the history was created.<br />

labels<br />

displays revision labels.<br />

linenum<br />

42 of 457


displays the line number for each line of text in the revision..<br />

revision<br />

displays the line's revision number.<br />

text<br />

displays the text contained in the line.<br />

--height=value<br />

specifies the height in pixels of the window.<br />

--width=value<br />

specifies the width in pixels of the window.<br />

--x=value<br />

specifies the x location in pixels of the window.<br />

--y=value<br />

specifies the y location in pixels of the window.<br />

-r|--revision=value<br />

specifies the revision number to view.<br />

--devpath=value<br />

selects the revision of the member on a specified development path. Can also be used to<br />

specify the development path the revision is on, which is used to refer to variant projects.<br />

-P|--project=value<br />

specifies the name of the target project.<br />

-S|--sandbox=value<br />

specifies the name of the sandbox and can be used as project redirector.<br />

--projectRevision=value<br />

specifies the project revision number and can be used to refer to build projects.<br />

member<br />

specifies the name of the member to view.<br />

DIAGNOSTICS<br />

See the diagnostics reference page for possible exit status values.<br />

PREFERENCES<br />

Using si setprefs or si viewprefs, you are able to set or view the preference keys for this<br />

<strong>com</strong>mand.<br />

SEE ALSO<br />

Commands:<br />

si archiveinfo, si memberinfo, si mods, si print, si revisioninfo, si<br />

rlog, si sandboxinfo, si viewhistory, si viewlabels, si<br />

43 of 457


viewprojecthistory, si viewsandbox<br />

Miscellaneous:<br />

ACL, diagnostics, options, preferences<br />

44 of 457


si appendrevdesc<br />

appends additional text to a revision description<br />

SYNOPSIS<br />

si appendrevdesc [(-d desc|--description=desc)] [--descriptionFile=file]<br />

[(-r rev|--revision=rev)] [(-R|--[no|confirm]recurse)] [--filter=filteroptions]<br />

[(-P project|--project=project)] [(-S sandbox|--sandbox=sandbox)] [--devpath=path]<br />

[--projectRevision=rev] [--hostname=server] [--port=number] [--password=password]<br />

[--user=name] [(-?|--usage)] [(-F file|--selectionFile=file)] [(-N|--no)] [(-Y|--yes)]<br />

[--[no]batch] [--cwd=directory] [--forceConfirm=[yes|no]] [(-g|--gui)] [--quiet]<br />

[--settingsUI=[gui|default]] [--status=[none|gui|default]] member...<br />

DESCRIPTION<br />

si appendrevdesc appends additional text to a revision description. A revision description is<br />

created when you check in a new revision. When you review the description for a specific revision,<br />

through the si viewhistory <strong>com</strong>mand, you see the appended information in a manner similar<br />

to the following:<br />

Options<br />

--- Added <strong>com</strong>ments --- sholmes [2002/07/20 20:23:55Z]<br />

Appended <strong>Description</strong><br />

This <strong>com</strong>mand takes the universal options available to all si <strong>com</strong>mands, as well as some general<br />

options. See the options reference page for descriptions.<br />

-d desc<br />

--description=desc<br />

specifies the new description text to be appended to the existing revision description. These<br />

options and the --descriptionFile option are mutually exclusive.<br />

Note:<br />

<strong>Description</strong>s that include spaces must be enclosed by quotes.<br />

--descriptionFile=file<br />

specifies a file name, file, containing the new description text to be appended to the existing<br />

revision description. This option and the -d or --description options are mutually<br />

exclusive.<br />

member...<br />

identifies a specific member; use spaces to specify more than one member.<br />

45 of 457


DIAGNOSTICS<br />

See the diagnostics reference page for possible exit status values.<br />

PREFERENCES<br />

Using si setprefs or si viewprefs, you are able to set or view the preference keys for this<br />

<strong>com</strong>mand.<br />

SEE ALSO<br />

Commands:<br />

si addlabel, si archiveinfo, si ci<br />

Miscellaneous:<br />

ACL, diagnostics, options, preferences<br />

46 of 457


si applycp<br />

applies one or more change packages to a Source Integrity project<br />

SYNOPSIS<br />

si applycp [--[no]alreadyInProjectIsError]<br />

[--backFill=[cp|revision|error|skip|ask]] [--[no|confirm]closeCP]<br />

[--[no]confirm] [--[no|confirm]createVariants] [--[no]ignoreBranches]<br />

[--[no]ignoreServer] [--[no]otherProjectIsError ] [--[no]spanProjects]<br />

[--[no]verbose] [(-P project|--project=project)] [(-S sandbox|--sandbox=sandbox)]<br />

[--devpath=path] [--hostname =server] [--port=number] [--password=password]<br />

[--user=name] [(-?|--usage)] [(-F file|--selectionFile=file)] [(-N |--no)] [(-Y|--yes)]<br />

[--[no]batch] [--cwd =directory] [--forceConfirm=[yes|no]] [(-g|--gui)] [--quiet]<br />

[--settingsUI=[gui|default]] [--status=[none|gui|default]]<br />

[--cpid|--changePackageID=value] [--[no]ignoreUpdateRevision] [--issueID=value]<br />

issue|issue:change package id...<br />

DESCRIPTION<br />

si applycp applies one or more change packages to a Source Integrity project, incorporating<br />

only the changes you want.<br />

Feature Overview<br />

A change package specifies groups of members that are affected by an issue. An issue tracks<br />

changes that occur during the development process. An example of a change package would be a<br />

group of files that need to be changed to address a problem in program code.<br />

Both Apply CP and Resync CP rely on the use of change packages to track individual changes that<br />

modify project content or create new content. If a development team has been using change<br />

packages consistently, Source Integrity can isolate all changes related to a specific issue because<br />

this information is recorded as part of the change package. Once the dependencies are calculated,<br />

the operation <strong>com</strong>pletes and the change packages are applied in the project.<br />

If a development team does not use the change package methodology, isolating specific content<br />

be<strong>com</strong>es a <strong>com</strong>plex, manual task. In a large code project, this could mean searching hundreds of<br />

files to determine which ones are related to a specific issue. To build the project, it would then be<br />

necessary to add, drop, rename, and move files, update file revisions, merge around unwanted<br />

revisions, merge in required changes, and merge out any unwanted changes.<br />

Using the functionality of Apply CP and Resync CP, this <strong>com</strong>plicated process be<strong>com</strong>es largely<br />

automated. In Source Integrity, the Apply CP operation adds, drops, renames, and moves files,<br />

47 of 457


and updates file revisions as required to create the desired change. If merging is required, you can<br />

use the Resync CP <strong>com</strong>mand. Resync CP allows you to either merge in desired changes or merge<br />

around unwanted changes.<br />

Apply CP and Resync CP are most useful for code and other text files where differencing can be<br />

performed.<br />

The Change Package Methodology<br />

When used across a development project, Apply CP and Resync CP are powerful tools for<br />

managing changes and new content. However, the effectiveness of the functionality ultimately<br />

relies on the following factors:<br />

● accurate and consistent logging of issues into the Integrity Manager database<br />

● associating related changes into a single change package that ultimately addresses the<br />

issue in question<br />

Because issues, and their associated change packages, follow a workflow progression, it is critical<br />

that each member of the development team record and track all changes as they are made, from<br />

the initial phase to the <strong>com</strong>pletion phase in which the associated problem is addressed. All<br />

changes relating to a given issue must then be associated with the correct change package. Once<br />

the problem is addressed, or the feature added, that change package can be closed.<br />

It is equally important that issues are clearly delineated so that each change package addresses<br />

only one problem area or feature. Certainly, one problem area or feature may require many files to<br />

address it, but if you create a change package that is too wide in scope, it be<strong>com</strong>es difficult to<br />

extract specific changes later on.<br />

With accurate and consistent logging, Source Integrity can clearly identify the specific member<br />

revisions (or files) that address the identified problem or <strong>com</strong>plete the required feature. Without this<br />

type of tracking, applying a change package may not have the desired results and manual reviews<br />

may be<strong>com</strong>e necessary.<br />

The Commands<br />

Consider the following scenario at abcBusiness--a major customer purchased version 2.0 of<br />

abcBusiness' Aurora software. The customer now wants a new feature--data <strong>com</strong>pression--that<br />

they can use with Aurora 2.0 The development team at abcBusiness has already <strong>com</strong>pleted work<br />

on a data <strong>com</strong>pression feature, bu the feature has been engineered only as part of the up<strong>com</strong>ing<br />

Aurora 3.0 release.<br />

To address the customer's needs, abcBusiness would normally have to assign a separate<br />

development team to create the new feature for Aurora 2.0 But how can abcBusiness take<br />

advantage of the work already <strong>com</strong>pleted on the data <strong>com</strong>pression feature and provide it to the<br />

48 of 457


customer?<br />

If the development team has been using change packages, they can isolate the files that relate to<br />

the new data <strong>com</strong>pression feature. However, without the functionality of Apply CP and Resync CP,<br />

the buildmaster at abcBusiness would have to manually search the required change package(s)<br />

and individually review all of the associated files to isolate the changes related to the feature. The<br />

buildmaster would then have to manually add, drop, rename, and move files, update file revisions,<br />

merge around unwanted revisions, merge in required changes, and merge out any unwanted<br />

changes.<br />

Using the functionality of Apply CP and Resync CP, this <strong>com</strong>plicated process be<strong>com</strong>es largely<br />

automated. In Source Integrity, the Apply CP operation works directly in the project to add and<br />

drop files, and update file revisions as required to create the desired change. Source Integrity<br />

presents you with a list--the backfill list--of all change packages required to capture the issue. In<br />

the Apply CP operation, you must either accept or decline this list--you cannot make selections. If<br />

you accept the list, the Apply CP <strong>com</strong>mand <strong>com</strong>pletes. If you decline the list, the Apply CP<br />

<strong>com</strong>mand cannot <strong>com</strong>plete.<br />

If the Apply CP <strong>com</strong>mand fails because merging is required, you can then run the Resync CP<br />

<strong>com</strong>mand. Resync CP works in a sandbox and allows you to make selections from the backfill list.<br />

Source Integrity then merges around unwanted changes and uses differencing to merge files.<br />

Consider once again, the abcBusiness development team. Because the team has been tracking all<br />

of their changes through the use of change packages, they can target the main trunk of<br />

development and use Apply CP and Resync CP functionality to extract only those files that relate<br />

to the new data <strong>com</strong>pression feature. Those specific change packages can then be applied to a<br />

variant project of Aurora 2.0 and testing carried out within a new project designed specifically for<br />

the customer.<br />

The functionality allows you to maximize existing development work, while being more responsive<br />

to both internal and external stakeholders. Apply CP and Resync CP are especially effective in any<br />

environment where there are large numbers of files to deal with--whether these are code files for a<br />

software project or Web pages for a <strong>com</strong>plex Web site.<br />

Apply CP Example<br />

This section provides an example to show how Apply CP can be used in your environment. In this<br />

example, the buildmaster brings a new feature from the main trunk of project development and<br />

applies it to an earlier release.<br />

The abcBusiness software <strong>com</strong>pany has released their Aurora software, version 3.0. When the<br />

release was <strong>com</strong>pleted, the project was checkpointed and all project members were labelled. The<br />

development team is now working on a new set of features for the next release, 4.0. A new feature<br />

for this release is a timestamp function. All the changes associated with the timestamp function<br />

49 of 457


have been recorded in a change package, or set of issues, that isolates the feature from other<br />

features.<br />

Now abcBusiness receives a request from a customer who has Release 3.0 but also needs the<br />

new timestamp feature for its global operations. The code in development for Aurora 4.0 is not<br />

stable enough for release and too many resources would be required to accelerate the release<br />

schedule. How can abcBusiness provide the timestamp feature without affecting the current<br />

release? Because the code for this feature is isolated within a change package, the Apply CP<br />

<strong>com</strong>mand can be used to transfer the feature to the earlier, stable release.<br />

The buildmaster at abcBusiness would:<br />

● create a variant project off of the checkpoint for version 3.0. This variant project is isolated<br />

from the rest of the development team so that unwanted changes are not added to the main<br />

trunk of the development path.<br />

● use Apply CP to apply the change package to the variant project. The change package<br />

contains all the files that were changed or added to produce the timestamp feature. Apply<br />

CP is essentially adding the feature to the variant of Aurora 3.0.<br />

● create an executable of the software.<br />

That executable can then be tested by Quality Assurance and shipped to the customer.<br />

Using Apply CP<br />

Apply CP relies on the use of change packages to track individual changes that modify project<br />

content or create new content. The Apply CP operation presents you with a backfill list that<br />

includes all of the change packages required for the identified issue. If you accept the backfill list,<br />

the operation then adds, drops, renames, and moves files, and updates file revisions as required to<br />

create the feature, content, or bug fix you are looking for.<br />

How Does Apply CP Work?<br />

The Apply CP operation applies change packages through a revision process. By applying a<br />

change package, you can incorporate only those changes that you want to include in the project.<br />

The Apply CP operation reads the entries in a change package and updates the project to the<br />

revisions listed in that change package. This function of the <strong>com</strong>mand is an automated process of<br />

the Update Revision <strong>com</strong>mand (si updaterevision). The Apply CP operation may also require<br />

that files be added, dropped, renamed, or moved. This function of the <strong>com</strong>mand is an automated<br />

process of the Add Member <strong>com</strong>mand (si add), the Drop Member <strong>com</strong>mand (si drop), the<br />

Rename Member <strong>com</strong>mand (si rename), and the Move Member <strong>com</strong>mand (si move).<br />

Note: If reviews are mandatory, the changes made by an Apply CP operation must be recorded as<br />

pending entries in a change package. The change package must be then submitted, which starts<br />

50 of 457


the review process. For more information on the review process, see the Source Integrity<br />

Enterprise User Guide.<br />

When Should I Use the Apply CP Command?<br />

You should use the Apply CP <strong>com</strong>mand when you need to update a project to include changes<br />

listed in a change package. The updating process updates member revisions, and may also<br />

involve adding, dropping, renaming, and moving files. The Apply CP <strong>com</strong>mand is most useful for<br />

building software.<br />

Are There Any Limitations When Using Apply CP?<br />

The Apply CP operation adds, drops, renames, and moves files, and updates file revisions. Apply<br />

CP does not automatically manage subprojects, for example, it does not delete or remove<br />

subprojects and cannot detect the user’s intentions with respects to handling them. Apply CP only<br />

operates on closed change packages and cannot perform merging. The operation is carried out in<br />

relation to the project. If you run the Apply CP <strong>com</strong>mand from a sandbox, the sandbox acts as a<br />

redirector to the project.<br />

For more detailed information and examples on si applycp, see the Source Integrity Enterprise<br />

User Guide.<br />

Options<br />

This <strong>com</strong>mand takes the universal options available to all si <strong>com</strong>mands, as well as some general<br />

options. See the options reference page for descriptions.<br />

--[no]alreadyInProjectIsError<br />

Causes Source Integrity to terminate the operation if the member being resynchronized is<br />

the same one listed in the change package and is already in the project. If this setting is<br />

negated --noalreadyInProjectIsError, then the information is displayed as a<br />

warning.<br />

--backFill=[cp|revision|error|skip|ask]<br />

Specifies the way Source Integrity treats historic revisions required by the specified change<br />

package.<br />

--backFill=cp<br />

recursively chooses all historic revisions required by the specified change packages<br />

and applies them by updating member revisions, adding files, or dropping files.<br />

--backFill=revision<br />

processes only the specified change package(s) and chooses only directly associated<br />

revisions. It does not process any change packages that are associated with<br />

intermediate revisions.<br />

--backFill=error<br />

terminates the operation if other change packages are required but are not specified.<br />

51 of 457


--backFill=skip<br />

causes Source Integrity to merge around backfill revisions.<br />

--backFill=ask<br />

allows you to specify the change packages you want to include.<br />

--[no]confirm<br />

specifies whether to confirm the actions before starting them.<br />

--[no|confirm]createVariants<br />

specifies whether to create variant projects within the target project as required to apply the<br />

change package members.<br />

--[no]ignoreBranches<br />

specifies whether to use the most recent revision when Source Integrity encounters two<br />

revisions of the same member on different branches in the change package being applied.<br />

--[no]ignoreServer<br />

specifies whether to perform the Apply CP operation even if the change package members<br />

reside on different servers.<br />

Note: If you specify --ignoreServer, you must also specify --otherProjectIsError.<br />

This additional setting is required because projects are defined by their server and path.<br />

--[no]ignoreUpdateRevision<br />

ignores update revision change package entries. Use this option when the change package<br />

contains backward revision updates, for example, from 1.4 to 1.2. The default is to include<br />

update revision entries.<br />

--[no]otherProjectIsError<br />

specifies whether to terminate the <strong>com</strong>mand if any member in a change package is in<br />

another project. Change package entries referring to other projects are therefore treated as<br />

an error.<br />

--[no]spanProjects<br />

specifies whether to apply the <strong>com</strong>mand to any member specified in the change package,<br />

even if this involves multiple projects. If you are applying a change package that contains<br />

move member entries, the --[no]spanProjects option must be used.<br />

Warning: This is the only operation that has the potential to affect other projects.<br />

--[no]verbose<br />

specifies whether to include additional information to track the current state of the <strong>com</strong>mand.<br />

--cpid=value<br />

--changePackageId=ID<br />

identifies a change package that is notified of this action, for example, 1452. This option is<br />

mandatory if change package reviews are mandatory.<br />

Note the following about using this option:<br />

❍ This option can only be specified if change packages are enabled.<br />

❍ You must specify this option if you have requested to obtain a lock and TrackLocks is<br />

enabled, and/or it is mandatory to specify a change package.<br />

52 of 457


❍ If the integration is enabled, but it is not mandatory to specify a change package, or if<br />

no change package is applicable, you must specify --changePackageId=:none.<br />

❍ The next time you are prompted for a change package ID, the last used change<br />

package ID is displayed by default, if :none was specified or at least one change<br />

package was successfully updated from the last operation.<br />

--[no|confirm]closeCP<br />

closes the change package after <strong>com</strong>mand <strong>com</strong>pletion.<br />

--issueID=value<br />

specifies the issue ID that corresponds to the change package that records the changes.<br />

issue...<br />

issue:change package id...<br />

issue identifies a specific issue that contains all change packages that you want to include;<br />

use spaces to specify more than one issue.<br />

issue:change package id identifies a specific change package to include; use spaces to<br />

specify more than one change package.<br />

DIAGNOSTICS<br />

See the diagnostics reference page for possible exit status values.<br />

PREFERENCES<br />

Using si setprefs or si viewprefs, you are able to set or view the preference keys for this<br />

<strong>com</strong>mand.<br />

SEE ALSO<br />

Commands:<br />

si resync, si resynccp<br />

Miscellaneous:<br />

ACL, diagnostics, options, preferences<br />

53 of 457


si archiveinfo<br />

displays information about an archive<br />

SYNOPSIS<br />

si archiveinfo [--[no]labels] [--[no]locks] [(-P project|--project=project)]<br />

[(-S sandbox|--sandbox=sandbox)] [--devpath=path] [--projectRevision=rev]<br />

[--hostname=server] [--port=number] [--password=password] [--user=name]<br />

[(-?|--usage)] [(-N|--no)] [(-Y|--yes)] [--[no]batch] [--cwd=directory]<br />

[--forceConfirm=[yes|no]] [(-g|--gui)] [--quiet] [--settingsUI=[gui|default]]<br />

[--status=[none|gui|default]] member...<br />

DESCRIPTION<br />

si archiveinfo displays global information about an archive. It does not contain any perrevision<br />

information. For example:<br />

Member Name: c:\Documentation\Man_Pages\xml_man\si_add.1.xml<br />

Sandbox Name: c:\Documentation\Man_Pages\project.pj<br />

Archive Name: \rd\doc\Man_Pages\xml_man\rcs\si_add.1.xml<br />

Archive Type: Text<br />

Shared<br />

Strict Locking<br />

Archive <strong>Description</strong>:<br />

Labels:<br />

TechReview1 1.7<br />

PeerReview_1 1.6<br />

Note: Shared displays only if other members share the archive and you are using the database<br />

repository.<br />

Options<br />

This <strong>com</strong>mand takes the universal options available to all si <strong>com</strong>mands, as well as some general<br />

options. See the options reference page for descriptions.<br />

--[no]labels<br />

controls whether to show labels and associated revision IDs.<br />

--[no]locks<br />

controls whether to show locks and associated revision IDs.<br />

member...<br />

identifies a specific member; use spaces to specify more than one member.<br />

54 of 457


DIAGNOSTICS<br />

See the diagnostics reference page for possible exit status values.<br />

PREFERENCES<br />

Using si setprefs or si viewprefs, you are able to set or view the preference keys for this<br />

<strong>com</strong>mand.<br />

SEE ALSO<br />

Commands:<br />

si memberinfo, si mods, si revisioninfo, si rlog, si viewhistory, si<br />

viewlabels<br />

Miscellaneous:<br />

ACL, diagnostics, options, preferences<br />

55 of 457


si checkpoint<br />

checkpoint archives in a project<br />

SYNOPSIS<br />

si checkpoint [--author=name] [(-d desc|--description=desc)]<br />

[--descriptionFile=file] [--[no]labelMembers] [--[no]notify]<br />

[(-L label| --label=label)] [(-s state|--state =state)] [--[no]stateMembers]<br />

[(-P project|--project=project)] [(-S sandbox|--sandbox=sandbox)] [--devpath=path]<br />

[--hostname=server] [--port=number] [--password=password] [--user=name]<br />

[(-?|--usage)] [(-N|--no)] [(-Y|--yes)] [--[no]batch] [--cwd=directory]<br />

[--forceConfirm=[yes|no]] [(-g|--gui)] [--quiet] [--settingsUI=[gui|default]]<br />

[--status=[none|gui|default]]<br />

DESCRIPTION<br />

Just as you check in a source file to preserve the changes made to it from one revision to another,<br />

you can also track the evolution of an entire project. In Source Integrity, this process is called<br />

checkpointing.<br />

Checkpointing a project creates a new revision of the project and adds it to the project history.<br />

When you checkpoint a project, you save all the information needed to recreate the project<br />

<strong>com</strong>pletely at any time in the future. The saved information includes the project structure and the<br />

list of members with their revision numbers.<br />

If you are using the database repository, all checkpoints are transactional. This means that a<br />

checkpoint records the structure and contents of the project at the time the checkpoint starts. It<br />

does not include anything added to the project or its subprojects after the checkpoint starts, such<br />

as check ins or submitted change packages. To ensure that only <strong>com</strong>plete change packages are<br />

included in your project checkpoints, your administrator must enable change package reviews. For<br />

more information on change package reviews, see the Source Integrity Enterprise User Guide.<br />

Note:<br />

Options<br />

Checkpointing a project recursively checkpoints all subprojects, creating new subproject<br />

revisions. If you do not want to create new subproject revisions during the checkpoint,<br />

configure them as build subprojects first. See the si configuresubproject <strong>com</strong>mand<br />

for more details.<br />

This <strong>com</strong>mand takes the universal options available to all si <strong>com</strong>mands, as well as some general<br />

options. See the options reference page for descriptions.<br />

56 of 457


--author=name<br />

specifies an author name to identify the author of the new revision.<br />

-d desc<br />

--description=desc<br />

specifies a description for the checkpointed revisions. These options and the<br />

--descriptionFile option are mutually exclusive.<br />

Note:<br />

<strong>Description</strong>s that include spaces must be enclosed by quotes.<br />

--descriptionFile=file<br />

specifies a file name, file, containing the description text for the checkpointed revisions. This<br />

option and the -d or --description options are mutually exclusive.<br />

--[no]labelMembers<br />

controls whether to label the members in addition to the project. If labelMembers is<br />

specified, labels are always moved to the revision, even if they already exist on another<br />

revision. Each member is labeled at the member revision.<br />

Note:<br />

While using this option is not necessary in order to reconstruct the state of a project<br />

at a later date, some sites find this option useful for such an action.<br />

--[no]notify<br />

controls whether to notify when the checkpoint is <strong>com</strong>plete.<br />

-L label<br />

--label=label<br />

identifies a label. The label is applied to the checkpointed revision of the project, and to all<br />

members if --labelMembers is specified. Note the following about using labels:<br />

❍ Labels cannot contain colons(:), square brackets ([ ]), or leading spaces.<br />

❍ Labels cannot have the same format as a valid revision number.<br />

❍ Labels that include spaces must be enclosed by quotes.<br />

❍ MKS re<strong>com</strong>mends not using hyphens (-) in labels. Using hyphens may cause some<br />

si <strong>com</strong>mands to fail.<br />

-s state<br />

--state=state<br />

specifies a state, state, for the checkpointed revisions. The state is applied to the<br />

checkpointed revision of the project, and to all members if --stateMembers is specified.<br />

--[no]stateMembers<br />

controls whether to set the state for members at member revision, in addition to the project.<br />

DIAGNOSTICS<br />

See the diagnostics reference page for possible exit status values.<br />

57 of 457


PREFERENCES<br />

Using si setprefs or si viewprefs, you are able to set or view the preference keys for this<br />

<strong>com</strong>mand.<br />

SEE ALSO<br />

Commands:<br />

si addprojectattr, si addprojectlabel, si ci, si createdevpath, si<br />

createproject, si createsubproject, si importproject, si memberinfo, si<br />

projectinfo, si projects, si promoteproject, si setprojectdescription,<br />

si viewproject, si viewprojecthistory<br />

Miscellaneous:<br />

ACL, diagnostics, options, preferences<br />

58 of 457


si ci<br />

checks in members of a sandbox<br />

SYNOPSIS<br />

si ci [--[no|confirm]ignoreUnresolvedMerge] [(-L label|--label=label)]<br />

[--author=name] [--[no]branch] [--[no|confirm]branchUpdate]<br />

[(--cpid ID|--changePackageId=ID)] [--issueId=ID]<br />

[--[no|confirm]checkinUnchanged] [--[no|confirm]closeCP]<br />

[(-d desc|--description=desc)] [--[no]defer] [--descriptionFile=file]<br />

[--issueId=ID] [(-l|--[no]lock)] [--[no|confirm]moveLabel]<br />

[(-r rev|--revision=rev)] [--[no]retainWorkingFile] [--revision=value]<br />

[--[no]saveTimestamp] [(-u|--unlock)] [--[no]unexpand] [--[no]update]<br />

[(-R|--[no|confirm]recurse)] [--filter=filteroptions] [(-S sandbox|--sandbox=sandbox)]<br />

[--hostname=server] [--port=number] [--password=password] [--user=name]<br />

[(-?|--usage)] [-F value] [(-N|--no)] [(-Y|--yes)] [--[no]batch] [--cwd=value]<br />

[--forceConfirm=[yes|no]] [--selectionFile=value] [(-g|--gui)] [--quiet]<br />

[--settingsUI=[gui|default]] [--status=[none|gui|default]] sandbox member...<br />

DESCRIPTION<br />

si ci checks in and saves changes to sandbox members. If you do not specify any members, si<br />

ci applies to all members of an associated sandbox.<br />

Check in is an operation that adds a new revision of a file to an archive. When a file is checked in<br />

to a revision other than the head revision or a branch tip revision, a new branch is created.<br />

Assigning Revision Numbers<br />

By default, when you check in a member, Source Integrity automatically assigns a unique revision<br />

number to the new revision. It does this by incrementing the current revision number by one. For<br />

example, if the previous revision is 1.3, the new revision is assigned number 1.4.<br />

You can choose the revision number of the changes you are checking in, so long as your revision<br />

number:<br />

● is greater than the last revision number (you cannot use previously "skipped" revision<br />

numbers)<br />

● has no leading zeros (zeros as <strong>com</strong>plete revision numbers are acceptable)<br />

● starts a new branch based on an existing revision<br />

59 of 457


If you check in a revision using an already existing revision number, Source Integrity attempts to<br />

add one to the revision number and check it in as that revision. If that revision already exists,<br />

Source Integrity then chooses the next available branch number and creates a new branch.<br />

For example, if you are checking in a new revision to an archive where the head revision is 1.7, the<br />

following numbers are valid:<br />

● 1.8 (greater than head revision)--if you check in a revision as 1.7, which already exists,<br />

Source Integrity assigns it 1.8<br />

● 1.10 (greater than head revision)<br />

● 1.72 (none of the numbers between 7 and 72 may be used afterwards)<br />

● 2.0<br />

● 1.7.1.1 (if it starts a new branch)<br />

● 1.7.0.1 (leading zero as the branch number)<br />

The following numbers are invalid:<br />

● 1.3 even if there was no revision 1.3 previously<br />

● 1.08 (leading 0 in last portion)<br />

● 02.1 is considered the same as 2.1 (leading zero in branch number)<br />

Options<br />

This <strong>com</strong>mand takes the universal options available to all si <strong>com</strong>mands, as well as some general<br />

options. See the options reference page for descriptions.<br />

--[no|confirm]ignoreUnresolvedMerge<br />

controls whether to ignore a previously unresolved merge. For more information on merging<br />

revisions, see si merge and si mergebranch.<br />

-L label<br />

--label=label<br />

identifies a label that is applied to the new revision. Note the following about using labels:<br />

❍ Labels cannot contain colons(:), square brackets ([ ]), or leading spaces.<br />

❍ Labels cannot have the same format as a valid revision number.<br />

❍ Labels that include spaces must be enclosed by quotes.<br />

❍ MKS re<strong>com</strong>mends not using hyphens (-) in labels. Using hyphens may cause some<br />

si <strong>com</strong>mands to fail.<br />

--author=name<br />

specifies an author name.<br />

--[no]branch<br />

controls whether to force the creation of a branch revision.<br />

60 of 457


A branch is a revision path that diverges from the main line of development (also known as<br />

the trunk) in a member or project history. A branch is typically created by checking in a file<br />

to a revision other than the head revision. The most recent revision of a branch is called the<br />

tip revision.<br />

MKS Source Integrity usually places new revisions at the top of the trunk, assigning them<br />

two-part revision numbers, such as 1.15. There are times, however, when you do not want<br />

your work to be checked into the trunk. You may be pursuing a line of development that will<br />

not be included in the finished product, for instance, or you may be doing post-release<br />

maintenance while development for the next release continues on the trunk.<br />

Divergent lines of development in the same archive are managed through the use of<br />

branches. A branch is an independent revision line that uses an existing revision as its<br />

starting point. Members of a branch revision are identified by their revision numbers.<br />

Whereas revisions on the trunk are characterized by two-part revision numbers (for<br />

example, 1.2 or 3.5), branch revision numbers are prefixed with the number of the revision<br />

they start from. For example, if a branch revision is started from revision number 1.2, the<br />

members of that branch are numbered<br />

1.2.1.1<br />

1.2.1.2<br />

1.2.1.3<br />

and so on. The first two digits of the number identify the revision where the branch diverges from<br />

the trunk, and the last two represent a position on the branch.<br />

--[no|confirm]branchUpdate<br />

controls whether to update the member revision, even if it is on a branch. This option stops<br />

the member revision from accidentally moving onto a branch if a branch was created during<br />

check out. This option only applies if --update is specified, --revision was not<br />

specified, and the member revision is on a different branch from the working revision.<br />

--nobranchUpdate means do not update the member revision.<br />

--confirmbranchUpdate means ask before updating the member revision.<br />

--branchUpdate always updates the member revision.<br />

--cpid=ID<br />

--changePackageId=ID<br />

identifies a change package that is notified of this action, for example, 1452. Note the<br />

following about using this option:<br />

61 of 457


❍ This option can only be specified if change packages are enabled.<br />

❍ You must specify this option if you have requested to obtain a lock and TrackLocks is<br />

enabled, and/or it is mandatory to specify a change package.<br />

❍ If you have TrackLocks enabled, Source Integrity prompts you with the change<br />

package you used when you checked out the specified member, not the default<br />

change package. From the graphical user interface, you must manually select the<br />

change package.<br />

❍ If it is not mandatory to specify a change package, or if no change package is<br />

applicable, you must specify --changePackageId=:none.<br />

❍ The next time you are prompted for a change package ID, the last used change<br />

package ID is displayed by default, if :none was specified or at least one change<br />

package was successfully updated from the last operation.<br />

--issueId=ID<br />

identifies an MKS Integrity Manager issue that is notified of this action. This option is<br />

another way of adding members to a change package. If you have an issue assigned to you<br />

that contains one open change package, you can specify the issue ID instead of the change<br />

package ID. See the Integrity Server Administration Guide or your administrator for details<br />

on using the Integrity Manager integration.<br />

--[no|confirm]checkinUnchanged<br />

controls whether to force the checkin so that the new revision is checked in even if it is not<br />

different from the preceding one.<br />

--nocheckinUnchanged means do not force the checkin.<br />

--confirmcheckinUnchanged means ask before forcing the checkin.<br />

--checkinUnchanged always forces the checkin.<br />

--[no|confirm]closeCP<br />

controls whether to close the associated change package.<br />

--nocloseCP means do not close the change package.<br />

--confirmcloseCP means ask before closing the change package.<br />

--closeCP always closes the change package.<br />

-d desc<br />

--description=desc<br />

specifies a description for the new revision. This option and the --descriptionFile<br />

option are mutually exclusive.<br />

Note:<br />

<strong>Description</strong>s that include spaces must be enclosed by quotes.<br />

--[no]defer<br />

62 of 457


controls whether to delay the checkin operation in the project until the deferred operation is<br />

submitted. The operation in the sandbox still takes place immediately.<br />

If reviews are mandatory, specify this option to submit the changes for review as a change<br />

package. If this option is not specified, a pending revision is created for the operation, that<br />

corresponds to a pending entry in the change package.<br />

--descriptionFile=file<br />

specifies a file name, file, containing the description text for the new revision. This option<br />

and the -d or --description options are mutually exclusive.<br />

-l<br />

--[no]lock<br />

controls whether to keep locks on members.<br />

--[no|confirm]moveLabel<br />

controls whether the application should move a label from one revision to another.<br />

--nomoveLabel disables the moving of a label.<br />

--confirmmoveLabel displays a confirmation message.<br />

--moveLabel moves the label.<br />

--[no]retainWorkingFile<br />

controls whether to keep the working file in the sandbox after checkin. By default, a sparse<br />

sandbox does not retain the working file after checkin.<br />

--[no]saveTimestamp<br />

controls whether to set the revision timestamp to the modification date and time of the<br />

working file rather than the current date and time.<br />

-u<br />

--unlock<br />

unlocks the newly checked-in revision. This is equivalent to specifying --nolock.<br />

--[no]unexpand<br />

controls whether to expand, unexpand, or ignore keywords in the member file. Keyword<br />

expansion is only available in text archives, not binary archives. For descriptions of the MKS<br />

Source Integrity keywords, see the Source Integrity Enterprise User Guide. Possible<br />

keywords are:<br />

$Author$<br />

$CompanyInfo$<br />

$Date$<br />

$Header$<br />

$Id$<br />

$Locker$<br />

$Log$<br />

$Name$<br />

63 of 457


$ProjectName$<br />

$ProjectSetting attribute$<br />

$ProjectRevision$<br />

$RCSfile$<br />

$Revision$<br />

$SandboxSetting attribute$<br />

$Setting attribute$<br />

$Source$<br />

$State$<br />

--[no]update<br />

controls whether to set the checked in revision as the project's member revision.<br />

sandbox member...<br />

identifies a specific member; use spaces to specify more than one member.<br />

DIAGNOSTICS<br />

See the diagnostics reference page for possible exit status values.<br />

PREFERENCES<br />

Using si setprefs or si viewprefs, you are able to set or view the preference keys for this<br />

<strong>com</strong>mand.<br />

SEE ALSO<br />

Commands:<br />

si closecp, si co, si cpissues, si createcp, si diff, si edit, si lock, si<br />

mergebranch , si rlog, si unlock, si viewcps<br />

Miscellaneous:<br />

ACL, diagnostics, options, preferences<br />

64 of 457


si closecp<br />

closes a change package.<br />

SYNOPSIS<br />

si closecp [--[no|confirm]allowOrphanedDeferred] [--[no]confirm]<br />

[--[no|confirm]releaseLocks] [--hostname=server] [--port=number]<br />

[--password=password] [--user=name] [(-?|--usage)] [(-Ffile|--selectionFile=file)]<br />

[(-N|--no)] [(-Y|--yes)] [--[no]batch] [--cwd=directory] [--forceConfirm=[yes|no]]<br />

[(-g|--gui)] [--quiet] [--settingsUI=[gui|default]] [--status=[none|gui|default]]<br />

issue|issue:change package id...<br />

DESCRIPTION<br />

si closecp closes a change package.<br />

Note: If reviews are mandatory, you cannot close the change package using this <strong>com</strong>mand. The<br />

change package can only be closed by Source Integrity once it has successfully <strong>com</strong>pleted the<br />

review process. For more information, see the Source Integrity Enterprise User Guide.<br />

Options<br />

This <strong>com</strong>mand takes the universal options available to all si <strong>com</strong>mands, as well as some general<br />

options. See the options reference page for descriptions.<br />

--[no|confirm]allowOrphanedDeferred<br />

controls if orphaned deferred operations are permitted when the change package is closed.<br />

--[no]confirm<br />

controls whether to confirm closing individual change packages.<br />

--[no|confirm]releaseLocks<br />

controls whether or not outstanding locks are released when the change package is closed.<br />

issue...<br />

issue:change package id...<br />

issue identifies a specific issue that contains all open change packages that you want to<br />

close; use spaces to specify more than one issue.<br />

issue:change package id identifies a specific change package to close; use spaces to<br />

specify more than one change package.<br />

DIAGNOSTICS<br />

65 of 457


See the diagnostics reference page for possible exit status values.<br />

PREFERENCES<br />

Using si setprefs or si viewprefs, you are able to set or view the preference keys for this<br />

<strong>com</strong>mand.<br />

SEE ALSO<br />

Commands:<br />

si add, si ci, si co, si cpissues , si createcp, si drop, si lock, si<br />

viewcps<br />

Miscellaneous:<br />

ACL, diagnostics, options, preferences<br />

66 of 457


si co<br />

checks out members into working files in a sandbox<br />

SYNOPSIS<br />

si co [--mergeType=[confirm|cancel|automatic|manual]]<br />

[--onMergeConflict=[confirm|cancel|mark|launchtool|highlight|error]] [--[no]branch]<br />

[--[no|confirm]branchVariant] [(--cpid ID|--changePackageId=ID)] [ --issueId=ID]<br />

[(-l|--[no]lock)] [--[no|confirm]lockOnFreeze] [--[no|confirm]merge]<br />

[--onLock=[confirm|branch|makewritable|branchconfirm|makewritableconfirm|cancel] ]<br />

[(-r rev|--revision=rev)] [(-u|--unlock)] [--[no]update] [--[no|un]expand] [-f]<br />

[--[no|confirm]overwriteChanged] [--[no|confirm]overwriteDeferred]<br />

[--[no]restoreTimestamp] [(-R|--[no|confirm]recurse)] [--filter=filteroptions]<br />

[(-S sandbox|--sandbox=sandbox)] [--hostname=server] [--port=number] [--password=password]<br />

[--user=name] [(-?|--usage)] [(-F file|--selectionFile=file)] [(-N|--no)] [(-Y|--yes)]<br />

[--[no]batch] [--cwd=directory] [--forceConfirm=[yes|no]] [(-g|--gui)] [--quiet]<br />

[--settingsUI=[gui|default]] [--status=[none|gui|default]] sandbox member...<br />

DESCRIPTION<br />

si co checks out members, typically for modification. If no members are specified, si co applies to all<br />

sandbox members.<br />

Check out is an operation that extracts the contents of a revision in an archive and copies it to a working file.<br />

You can check out any revision by specifying either its revision number or label. By default, the member<br />

revision is used. If an existing revision other than the head revision is specified, a branch from that revision is<br />

created.<br />

Use the si resync <strong>com</strong>mand to just get a read-only copy of a member.<br />

Options<br />

This <strong>com</strong>mand takes the universal options available to all si <strong>com</strong>mands, as well as some general options.<br />

See the options reference page for descriptions.<br />

--mergeType=[confirm|cancel|automatic|manual]<br />

specifies how you want merge changes from the working file in your sandbox into the working file that<br />

will be created upon check out.<br />

--mergeType=confirm prompts you to confirm a merge type.<br />

--mergeType=cancel cancels the selected merge.<br />

--mergeType=automatic <strong>com</strong>pletes the merge process without launching the MKS Visual Merge tool.<br />

Warning: While Source Integrity and MKS Visual Merge are capable of performing automatic merging,<br />

67 of 457


MKS cannot guarantee that the merged results are “correct”. MKS re<strong>com</strong>mends that you examine and<br />

test the merged results before checking them into the repository.<br />

--mergeType=manual <strong>com</strong>pletes the merge operation through the MKS Visual Merge tool. The MKS<br />

Visual Merge tool launches, displaying the revisions you want to merge. For more information on the<br />

MKS Visual Merge tool, refer to the Source Integrity Enterprise User Guide.<br />

--onMergeConflict =[confirm|cancel|mark|launchtool|highlight|error]<br />

specifies what to do when conflicts occur during a merge.<br />

--onMergeConflict=confirm prompts you to confirm a merge conflict option.<br />

--onMergeConflict=cancel cancels the merge.<br />

--onMergeConflict=mark marks the revisions indicating that merging is required without<br />

<strong>com</strong>pleting all of the merge related tasks. This provides time you may need to investigate conflicts or<br />

consult on editing or difference blocks before finishing the merge.<br />

--onMergeConflict=launchtool launches the MKS Visual Merge tool to resolve the conflicts, all nonconflicting<br />

blocks will already have been applied.<br />

--onMergeConflict=highlight indicates conflicts in the file with the following characters: "".<br />

--onMergeConflict=error indicates merge conflicts with an error message prompt.<br />

Note: --onMergeConflict=launchtool does not require the -g or --gui options.<br />

--[no]branch<br />

controls whether to force the creation of a branch revision. Specifying --branch always creates a<br />

branch.<br />

For details on branch revisions, see the si ci reference page.<br />

--[no|confirm]branchVariant<br />

controls whether Source Integrity should create a branch off of the revision you are checking out, if you<br />

are working in a variant sandbox. This reduces the possibility of locking conflicts with the member while<br />

work is being done in the variant and regular sandboxes. Specifying --confirmbranchVariant<br />

causes a prompt to be displayed so you can confirm the branching.<br />

This option overrides the branchIfVariant preference that you can set with the si setprefs<br />

<strong>com</strong>mand.<br />

This option is useful because development paths can conflict when developers working on different<br />

paths need to work on the same revision of a file. There is also the potential to conflict when<br />

development paths access the same member histories. For example, suppose the current version of a<br />

project includes utility.dll, version 1.4 and the variant sandbox contains utility.dll, version<br />

1.3. Both versions are stored in the same member history, and therefore a conflict is possible. Using<br />

the --branchVariant option helps handle such conflicts.<br />

68 of 457


For details on development paths and variant sandboxes, see the si createsandbox reference<br />

page.<br />

--cpid=ID<br />

--changePackageId=ID<br />

identifies a change package that is notified of this action, for example, 1452. Note the following about<br />

using this option:<br />

❍ This option can only be specified if change packages are enabled.<br />

❍ You must specify this option if you have requested to obtain a lock and TrackLocks is enabled,<br />

and/or it is mandatory to specify a change package.<br />

❍ If it is not mandatory to specify a change package, or if no change package is applicable, you<br />

must specify --changePackageId=:none.<br />

❍ The next time you are prompted for a change package ID, the last used change package ID is<br />

displayed by default, if :none was specified or at least one change package was successfully<br />

updated from the last operation.<br />

--issueId=ID<br />

identifies an MKS Integrity Manager issue that is notified of this action. This option is another way of<br />

adding members to a change package. If you have an issue assigned to you that contains one open<br />

change package, you can specify the issue ID instead of the change package ID. See the Integrity<br />

Server Administration Guide or your administrator for details on using the Integrity Manager integration.<br />

-l<br />

--[no]lock<br />

controls whether to create locks on members.<br />

--[no|confirm]lockOnFreeze<br />

controls whether to lock the specified member even if it is frozen.<br />

--lockOnFreeze means always do it.<br />

--nolockOnFreeze means never do it.<br />

--confirmlockOnFreeze means always ask before doing it.<br />

--[no|confirm]merge<br />

controls whether to merge changes from the working file in your sandbox into the working file that will<br />

be created upon check out.<br />

--merge means always do it.<br />

--nomerge means never do it.<br />

--confirmmerge means always ask before doing it.<br />

Note: By default, Source Integrity prompts you for the type of merge (manual or automatic) to perform<br />

and what action to take if a conflict is encountered.<br />

--onLock=[confirm|branch|makewritable|branchconfirm|makewritableconfirm|cancel]<br />

controls whether to make the working file writable, create a branch, or cancel the operation.<br />

--onLock=confirm means always ask whether to make the working file writable, create a branch, or<br />

cancel the operation.<br />

69 of 457


--onLock=branch means create a branch.<br />

--onLock=makewritable means make the working file writable.<br />

--onLock=branchconfirm means always ask before creating a branch.<br />

--onLock=makewritableconfirm means always ask before making the working file writable.<br />

--onLock=cancel means cancel the operation.<br />

-u<br />

--unlock<br />

keeps the member unlocked, and is equivalent to --nolock.<br />

--[no]update<br />

controls whether to update the project's member revision to the checked out revision.<br />

Note: In a variant sandbox, specifying si co --noupdate --branchVariant member updates<br />

the member revision.<br />

--[no|un]expand<br />

controls whether to expand, unexpand, or ignore keywords in the member file. Keyword expansion is<br />

only available in text archives, not binary archives. For descriptions of the MKS Source Integrity<br />

keywords, see the Source Integrity Enterprise User Guide. Possible keywords are:<br />

$Author$<br />

$CompanyInfo$<br />

$Date$<br />

$Header$<br />

$Id$<br />

$Locker$<br />

$Log$<br />

$Name$<br />

$ProjectName$<br />

$ProjectSetting attribute$<br />

$ProjectRevision$<br />

$RCSfile$<br />

$Revision$<br />

$SandboxSetting attribute$<br />

$Setting attribute$<br />

$Source$<br />

$State$<br />

-f<br />

overwrites the working file if it has changed since it was last checked in. This is equivalent to specifying<br />

--overwriteChanged.<br />

--[no|confirm]overwriteChanged<br />

controls whether to overwrite the working file if it has changed since it was last checked in.<br />

--overwriteChanged means always do it<br />

70 of 457


--nooverwriteChanged means never do it<br />

--confirmoverwriteChanged means always ask before doing it. Specifying the --yes or --no<br />

options would have the same effect as the first two, but would further answer "yes" or "no" to all<br />

questions asked, not just this one.<br />

--[no|confirm]overwriteDeferred<br />

controls whether to overwrite the working file if there is a deferred operation on the member.<br />

--[no]restoreTimestamp<br />

controls whether to restore the timestamp of the working file to the timestamp of the revision in the<br />

member history. If this is not specified, the timestamp is set to the current date and time.<br />

sandbox member...<br />

identifies a specific member; use spaces to specify more than one member.<br />

DIAGNOSTICS<br />

See the diagnostics reference page for possible exit status values.<br />

PREFERENCES<br />

Using si setprefs or si viewprefs, you are able to set or view the preference keys for this <strong>com</strong>mand.<br />

SEE ALSO<br />

Commands:<br />

si ci, si closecp, si cpissues, si createcp, si diff, si edit, si lock, si resync,<br />

si rlog, si unlock, si viewcps<br />

Miscellaneous:<br />

ACL, diagnostics, options, preferences<br />

71 of 457


si configuresandbox<br />

configures sandbox properties<br />

SYNOPSIS<br />

si configuresandbox [--lineTerminator=[lf|crlf|native]] [--[no]shared]<br />

[--[no]sparse] [--hostname=server] [--port=number] [--password=password]<br />

[--user=name] [(-?|--usage)] [(-F file|--selectionFile=file)] [(-N|--no)] [(-Y|--yes)]<br />

[--[no]batch] [--cwd=directory] [--forceConfirm=[yes|no]] [(-g|--gui)] [--quiet]<br />

[--settingsUI=[gui|default]] [--status=[none|gui|default]] sandbox location...<br />

DESCRIPTION<br />

Source Integrity provides a way to configure the following sandbox properties: sandbox sharing,<br />

line terminator and sparse settings.<br />

Options<br />

This <strong>com</strong>mand takes the universal options available to all si <strong>com</strong>mands, as well as some general<br />

options. See the options reference page for descriptions.<br />

---lineTerminator=[lf|crlf|native]<br />

explicitly identifies the characters to use as the line terminator for this sandbox. lf is a line<br />

feed character, crlf is the <strong>com</strong>bination of the carriage return and line feed characters, and<br />

native uses the default line terminator in the client operating system: crlf in Windows and lf<br />

in UNIX.<br />

Note:<br />

When you create a sandbox Source Integrity remembers the setting of the line<br />

terminator, and all checkouts (using si co) and resyncs (using si resync) in that<br />

sandbox use the same line terminator setting. If you want to override the line<br />

terminator on an individual member, you must use some utility such as the MKS<br />

Toolkit flip <strong>com</strong>mand.<br />

--[no]shared<br />

controls whether or not to make the sandbox shared.<br />

Configuring the sandbox to be shared makes it possible for other users to share its working<br />

files. Other users must first import the sandbox to register it with their Source Integrity clients<br />

(see si importsandbox). When a top-level sandbox is configured to be shared, all<br />

subsandboxes are shared as well. Subsandboxes cannot be individually configured to be<br />

shared or not shared.<br />

72 of 457


When sandbox sharing is removed, users sharing the sandbox each receive an error<br />

message stating the change in sharing configuration the next time they attempt to access<br />

the sandbox or perform an operation on its contents.<br />

--[no]sparse<br />

controls whether or not to make the sandbox sparse.<br />

Making the sandbox sparse with --sparse affects the way the sandbox behaves with the<br />

si ci check in <strong>com</strong>mand and the si co check out <strong>com</strong>mand, as well as si resync .<br />

The intent of a sparse sandbox is that it contains only those working files that are actively<br />

being worked on by you at the time. Using si ci to check in a member to a sparse<br />

sandbox removes the working file from the sandbox (unless you did a check in locked, using<br />

the -l option). Similarly, using si resync on the sandbox will by default remove the<br />

working files for those members which are not locked by you, although you can override this<br />

with si resync --populate in a sparse sandbox, which in effect causes the resync to<br />

behave like it does in a "normal", non-sparse sandbox.<br />

sandbox location...<br />

specifies the path of the sandbox directory including the project file. For example,<br />

C:\sourcecode\framework\scripts\project.pj.<br />

DIAGNOSTICS<br />

See the diagnostics reference page for possible exit status values.<br />

PREFERENCES<br />

Using si setprefs or si viewprefs, you are able to set or view the preference keys for this<br />

<strong>com</strong>mand.<br />

SEE ALSO<br />

Commands:<br />

si createsandbox, si importsandbox<br />

Miscellaneous:<br />

ACL, diagnostics, options, preferences<br />

73 of 457


si configuresubproject<br />

configures a subproject's type<br />

SYNOPSIS<br />

si configuresubproject [-r subproject revision|--subprojectRevision=subproject revision]<br />

[--subprojectDevelopmentPath=subproject development path name|--variant=subproject development path<br />

name] [--type=[normal|variant|build|reset]] [(-P project|--project=project)]<br />

[(-S sandbox|--sandbox=sandbox)] [--devpath=path] [--hostname=server] [--port=number]<br />

[--password=password] [--user=name] [(-?|--usage)] [(-F file|--selectionFile=file)] [(-N|--no)]<br />

[(-Y|--yes)] [--[no]batch] [--cwd=directory] [--forceConfirm=[yes|no]] [(-g|--gui)] [--quiet]<br />

[--settingsUI=[gui|default]] [--status=[none|gui|default]] subproject or subsandbox<br />

DESCRIPTION<br />

Once you have created or added a subproject, you can modify the type to suit your needs. For example, you can<br />

change a normal subproject to a build subproject to suspend development, or you can change a variant subproject to<br />

a normal subproject to continue development on the main trunk.<br />

Important: Any changes you make when reconfiguring a subproject affects the project as a whole and any shared<br />

subprojects. More specifically, changing the type, revision, or development path of a subproject can radically change<br />

the list of members of that subproject. After configuring a subproject, existing sandboxes whose contents were in<br />

sync with the subproject before it was configured will display deltas when you use si viewproject and si<br />

viewsandbox, reflecting the following possible differences:<br />

● Members that exist in both the old and new version of the subproject display a delta if the working revision in<br />

the sandbox is different from the new member revision.<br />

● Members that are in the new version of the subproject but were not in the old version of the subproject display<br />

a "no working file" delta, indicating that the sandbox does not have a copy of the new member yet.<br />

● Members that were in the old version of the subproject but are not in the new version display as former<br />

members.<br />

● Subprojects that were in the old version of the subproject but are not in the new version will display as former<br />

subprojects.<br />

Options<br />

This <strong>com</strong>mand takes the universal options available to all si <strong>com</strong>mands, as well as some general options. See the<br />

options reference page for descriptions.<br />

-r=subproject revision<br />

--subprojectRevision=subproject revision<br />

specifies the revision number (for build subprojects). For example, 1.5. This option is used with -type=build.<br />

--subprojectDevelopmentPath=subproject development path name<br />

--variant=subproject development path name<br />

specifies the development path name (for variant subprojects). For example, Service_Pack3. This option is<br />

used with --type=variant<br />

--type=[normal|variant|build|reset]<br />

specifies the new configuration type for the subproject.<br />

74 of 457


--type=normal configures the subproject to the master (non-variant) version of the subproject.<br />

--type=variant configures the subproject based upon a specific development path. The option is used<br />

with --variant=subproject development path name or --subprojectDevelopmentPath=subproject<br />

development path name.<br />

--type=build configures the subproject as a static subproject based upon a specific revision of the master<br />

project that is used for building or testing the project, but not for further development. This option is used with -<br />

r subproject revision or --subprojectRevision=subproject revision.<br />

--type=default configures the subproject based on the type that is consistent with the parent project that<br />

you are adding the subproject to. For example, if you add a subproject to a normal project, the subproject is<br />

added as a normal type. For information on what the default type is, see your administrator.<br />

-P project name<br />

--project=project name<br />

specifies the path and name of the project where the subproject exists, for example,<br />

c:/Aurora_Program/bin/project.pj.<br />

subproject<br />

subsandbox<br />

specifies the subproject or subsandbox name to which the new configuration applies, for example, tools.pj<br />

PREFERENCES<br />

Using si setprefs or si viewprefs, you are able to set or view the preference keys for this <strong>com</strong>mand.<br />

SEE ALSO<br />

Commands:<br />

si addsubproject, si checkpoint, si createproject, si createsandbox, si<br />

createsubproject, si drop, si dropproject, si importproject, si projectinfo, si<br />

projects, si sharesubproject, si viewproject<br />

Miscellaneous:<br />

ACL, diagnostics, options, preferences<br />

75 of 457


si connect<br />

establishes a connection to an Integrity Server<br />

SYNOPSIS<br />

si connect [--hostname=server] [--port=number] [--password=password] [--user=name]<br />

[(-?|--usage)] [(-F file|--selectionFile=file)] [(-N|--no)] [(-Y|--yes)] [--[no]batch]<br />

[--cwd=directory] [--forceConfirm=[yes|no]] [(-g|--gui)] [--quiet]<br />

[--settingsUI=[gui|default]] [--status=[none|gui|default]]<br />

DESCRIPTION<br />

si connect establishes a connection to an Integrity Server host. Most <strong>com</strong>mands implicitly<br />

connect to the host, this does so explicitly. In fact, all the other <strong>com</strong>mands call si connect to<br />

establish the connection. The client supports multiple connections to multiple servers. You can use<br />

si disconnect to disconnect from an Integrity Server host.<br />

Options<br />

This <strong>com</strong>mand takes the universal options available to all si <strong>com</strong>mands, as well as some general<br />

options. See the options reference page for descriptions.<br />

--hostname=server<br />

identifies the name of the host server where the Integrity Server is located.<br />

--password=password<br />

identifies the password to use for connecting to the Integrity Server.<br />

--port=number<br />

identifies the port on the host server where the Integrity Server is located.<br />

--user=name<br />

identifies the user to use for connecting to the Integrity Server. This typically defaults to the<br />

name you have used to log into your client machine.<br />

DIAGNOSTICS<br />

See the diagnostics reference page for possible exit status values.<br />

PREFERENCES<br />

Using si setprefs or si viewprefs, you are able to set or view the preference keys for this<br />

<strong>com</strong>mand.<br />

76 of 457


SEE ALSO<br />

Commands:<br />

si disconnect, si exit, si servers<br />

Miscellaneous:<br />

diagnostics, options, preferences<br />

77 of 457


si cpissues<br />

displays all Integrity Manager issues that are in a valid state to accept new change<br />

packages<br />

SYNOPSIS<br />

si cpissues [--fields=field1[:width1],field2[:width2]...] [--hostname=server]<br />

[--port=number] [--password=password] [--user=name] [(-?|--usage)]<br />

[(-F file|--selectionFile=file)] [(-N|--no)] [(-Y|--yes)] [--[no]batch] [--cwd=directory]<br />

[--forceConfirm=[yes|no]] [--[no]persist] [--quiet]<br />

DESCRIPTION<br />

si cpissues displays all Integrity Manager issues that are in a valid state to accept new change<br />

packages. Only issues assigned to the user are displayed.<br />

Options<br />

This <strong>com</strong>mand takes the universal options available to all si <strong>com</strong>mands, as well as some general<br />

options. See the options reference page for descriptions.<br />

--fields=field1[:width1],field2[:width2]...<br />

allows you to select fields to be printed, specified in the format<br />

field1[:width1],field2[:width2].... Specifying the column [:width] (in pixels) for each field is<br />

optional - widths are only available with the -g or --gui options. Under the CLI the fields<br />

are separated with a space.<br />

The fields available for printing can be one or more of the following:<br />

id<br />

displays issue IDs.<br />

summary<br />

displays issue summaries.<br />

--[no]persist<br />

controls the persistence of CLI views.<br />

DIAGNOSTICS<br />

See the diagnostics reference page for possible exit status values.<br />

78 of 457


PREFERENCES<br />

Using si setprefs or si viewprefs, you are able to set or view the preference keys for this<br />

<strong>com</strong>mand.<br />

SEE ALSO<br />

Commands:<br />

si add, si ci, si co, si createcp , si createcp, si drop, si lock, si<br />

viewcps<br />

Miscellaneous:<br />

ACL, diagnostics, options, preferences<br />

79 of 457


si createcp<br />

creates a new change package<br />

SYNOPSIS<br />

si createcp [--description=value] [--issueId=value] [--summary=value]<br />

[--hostname=server] [--port=number] [--password=password] [--user=name]<br />

[(-?|--usage)] [(-F file|--selectionFile=file)] [(-N|--no)] [(-Y|--yes)] [--[no]batch]<br />

[--cwd=directory] [--forceConfirm=[yes|no]] [(-g|--gui)] [--quiet]<br />

[--settingsUI=[gui|default]] [--status=[none|gui|default]]<br />

DESCRIPTION<br />

si createcp creates a new change package.<br />

Options<br />

This <strong>com</strong>mand takes the universal options available to all si <strong>com</strong>mands, as well as some general<br />

options. See the options reference page for descriptions.<br />

--description=value<br />

specifies a description of the change package being created.<br />

--issueId=value<br />

specifies the ID of the issue you are creating a change package for. This option can only be<br />

specified if the integration between Source Integrity and Integrity Manager is enabled.<br />

Important: Your ability to create a change package is based on the change package<br />

creation policy for the type that you want to create a change package for.<br />

--summary=value<br />

specifies a brief summary of the change package being created.<br />

Note: A change package summary is mandatory.<br />

DIAGNOSTICS<br />

See the diagnostics reference page for possible exit status values.<br />

PREFERENCES<br />

80 of 457


Using si setprefs or si viewprefs, you are able to set or view the preference keys for this<br />

<strong>com</strong>mand.<br />

SEE ALSO<br />

Commands:<br />

si add, si ci, si co, si cpissues, si drop, si lock, si viewcps<br />

Miscellaneous:<br />

ACL, diagnostics, options, preferences<br />

81 of 457


si createdevpath<br />

creates a development path<br />

SYNOPSIS<br />

si createdevpath [--projectRevision=rev] [--devpath=path]<br />

[(-P project|--project=project)] [(-S sandbox|--sandbox=sandbox)] [--hostname=server]<br />

[--port=number] [--password=password] [--user=name] [(-?|--usage)]<br />

[(-F file|--selectionFile=file)] [(-N|--no)] [(-Y|--yes)] [--[no]batch] [--cwd=directory]<br />

[--forceConfirm=[yes|no]] [(-g|--gui)] [--quiet] [--settingsUI=[gui|default]]<br />

[--status=[none|gui|default]]<br />

DESCRIPTION<br />

si createdevpath creates a development path for specific project revisions, effectively creating a<br />

variant project.<br />

Regular sandboxes are based upon the current state of the project. You can also create a sandbox<br />

that is based upon a previously checkpointed revision of the project. This type of sandbox is called<br />

a variant. When you create a variant sandbox, using the si createsandbox <strong>com</strong>mand, you<br />

choose a checkpoint (snapshot) of your project and use it as a starting point for new development.<br />

MKS Source Integrity allows you to do this by defining a new development path.<br />

A development path is an identifier given to a new direction of software development. Changes<br />

made through the development path are kept separate from the main development trunk unless<br />

you choose to merge them into it later.<br />

Source Integrity allows multiple developers to point to the same development path, each using<br />

their own variant sandbox. In the variant sandbox, you can see the current state of the project<br />

along the development path and the changes made by other developers using it.<br />

When a variant project is created, it is also created for all subprojects, reserving the assigned<br />

name as a unique identifier and ensuring no two paths can share the same name.<br />

Development paths are useful for performing post-release maintenance. Variant sandboxes<br />

pointing to a post-release development path allow you to make changes to a previous revision of a<br />

project. Any fixes, patches, or changes you check in go onto a branch and do not affect the main<br />

project, unless you choose to merge them.<br />

Note:<br />

You may instead create branch revisions in the main project, rather than creating a variant<br />

82 of 457


Options<br />

sandbox through a new development path, by specifying --branch when checking files out<br />

or in. You still may have to merge changes, but the development path remains the same.<br />

For details on simply branching revisions, see the si ci reference page.<br />

This <strong>com</strong>mand takes the universal options available to all si <strong>com</strong>mands, as well as some general<br />

options. See the options reference page for descriptions.<br />

--devpath=path<br />

identifies the name of the new development path.<br />

Note: The following characters may not be used in a development path: \n, \r, \t, :, [', '], #.<br />

--projectRevision=rev<br />

identifies the checkpointed revision number to create the variant against.<br />

DIAGNOSTICS<br />

See the diagnostics reference page for possible exit status values.<br />

PREFERENCES<br />

Using si setprefs or si viewprefs, you are able to set or view the preference keys for this<br />

<strong>com</strong>mand.<br />

SEE ALSO<br />

Commands:<br />

si archiveinfo, si createsandbox, si dropdevpath, si memberinfo, si<br />

projectinfo, si revisioninfo, si rlog<br />

Miscellaneous:<br />

ACL, diagnostics, options, preferences<br />

83 of 457


si createproject<br />

creates a new empty project<br />

SYNOPSIS<br />

si createproject [--[no]openView] [--hostname=server] [--port=number]<br />

[--password=password] [--user=name] [(-?|--usage)] [(-F file|--selectionFile=file)]<br />

[(-N|--no)] [(-Y|--yes)] [--[no]batch] [--cwd=directory] [--forceConfirm=[yes|no]]<br />

[(-g|--gui)] [--quiet] [--settingsUI=[gui|default]] [--status=[none|gui|default]]<br />

project location<br />

DESCRIPTION<br />

si createproject creates a new, empty project on the Integrity Server in a specified directory.<br />

Options<br />

This <strong>com</strong>mand takes the universal options available to all si <strong>com</strong>mands, as well as some general<br />

options. See the options reference page for descriptions.<br />

--[no]openView<br />

controls whether to open the project view after this new project is registered on the server. If<br />

--noopenView is used, the project view does not open.<br />

project location<br />

identifies a location on the Integrity Server for the new project. Regardless of your operating<br />

system, all paths are specified here using forward slashes (/), and are server absolute<br />

paths. You must also specify the name of the project file as part of the location; typically this<br />

is project.pj.<br />

Note:<br />

By convention, you should name your new project file with a suffix of .pj.<br />

Intermediate directories on the Integrity Server are created for you. Remember, however,<br />

that server-side restrictions may exist controlling where you are permitted to locate any<br />

projects. Contact your system administrator for permitted locations.<br />

DIAGNOSTICS<br />

See the diagnostics reference page for possible exit status values.<br />

84 of 457


PREFERENCES<br />

Using si setprefs or si viewprefs, you are able to set or view the preference keys for this<br />

<strong>com</strong>mand.<br />

SEE ALSO<br />

Commands:<br />

si checkpoint, si createsandbox, si createsubproject, si dropproject, si<br />

importproject, si projects, si viewproject<br />

Miscellaneous:<br />

ACL, diagnostics, options, preferences<br />

85 of 457


si createsandbox<br />

creates a new sandbox on your local machine<br />

SYNOPSIS<br />

si createsandbox [(-R|--[no|confirm]recurse)] [--lineTerminator=[lf|crlf|native]]<br />

[--[no]populate] [--[no]sparse] [--[no]openView] [--[no]shared]<br />

[(-Pproject|--project=project)] [--devpath=path] [--projectRevision=rev]<br />

[--hostname=server] [--port=number] [--password=password] [--user=name]<br />

[(-?|--usage)] [(-F file|--selectionFile=file)] [(-N|--no)] [(-Y|--yes)] [--[no]batch]<br />

[--cwd=directory] [--forceConfirm=[yes|no]] [(-g|--gui)] [--quiet]<br />

[--settingsUI=[gui|default]] [--status=[none|gui|default]] [--xmlapi] directory<br />

DESCRIPTION<br />

si createsandbox creates a new sandbox on the client machine in a specified directory. When<br />

creating a sandbox you are able to determine the type of sandbox you want it to be:<br />

● The default regular type creates a sandbox based upon the current state of the project.<br />

● Choosing to create a variant creates a sandbox based upon a specific revision of the<br />

master project and is used for branching off the main development path. You first have to<br />

specify a development path other than the default one; to create a development path, see<br />

the si createdevpath <strong>com</strong>mand.<br />

● You may also choose to create a build sandbox. A build sandbox creates a static sandbox<br />

based upon a specific revision of the master project that is used for building or testing the<br />

project, but not for further development.<br />

Variant Sandboxes and Development Paths<br />

By default, si createsandbox creates regular sandboxes that are based upon the current state<br />

of the project. You can also create a variant sandbox, a sandbox that is based upon a previously<br />

checkpointed revision of the project. When you create a variant sandbox, you choose a checkpoint<br />

(snapshot) of your project and use it as a starting point for new development. MKS Source Integrity<br />

allows you to do this by defining a new development path and then specifying that path with the<br />

--devpath option. For example:<br />

si createsandbox --devpath=MyVariant<br />

A development path is an identifier given to a new direction of software development. Changes<br />

made through the development path are kept separate from the main development trunk unless<br />

you choose to merge them (see si merge) into it later. Source Integrity allows multiple<br />

developers to point to the same development path, each using their own variant sandbox. In the<br />

86 of 457


variant sandbox, you can see the current state of the project along the development path and the<br />

changes made by other developers using it.<br />

When a variant sandbox is created for the first time, it is also created for all subprojects, reserving<br />

the assigned name as a unique identifier and ensuring no two paths can share the same name.<br />

Development paths are useful for performing post-release maintenance. Variant sandboxes<br />

pointing to a post-release development path allow you to make changes to a previous revision of a<br />

project. Any fixes, patches, or changes you check in go onto a branch and do not affect the main<br />

project, unless you choose to merge them.<br />

Build Sandboxes<br />

After major milestones, such as product releases, you might want to recreate a static version of an<br />

entire project as it existed at some point in the past. You create a build sandbox, to build or test the<br />

project, not to begin further work along a new development path.<br />

A build sandbox is associated with a particular project revision, and has no development path<br />

(since it is static and not meant for further development). For example:<br />

si createsandbox --projectRevision=1.34<br />

creates a build sandbox based on the project revision 1.34, and it cannot be modified.<br />

With a build sandbox, you cannot:<br />

● check out, lock, or check in members<br />

● remove or add members<br />

● freeze or thaw members<br />

● checkpoint the master project<br />

● modify project or member attributes<br />

● revert members<br />

● set the member revision<br />

However, with a build sandbox, you can:<br />

● change labels and states (see si addlabel)<br />

● resynchronize your sandbox (see si resync)<br />

● <strong>com</strong>pare a member revision in the build sandbox to another revision (see si diff)<br />

● merge a member revision (si merge) in the build sandbox with another revision (of course,<br />

you cannot check that merged file back into the build sandbox)<br />

● check for differences between project revisions, such as changes to a project since it was<br />

last checkpointed (see si mods)<br />

87 of 457


Options<br />

This <strong>com</strong>mand takes the universal options available to all si <strong>com</strong>mands, as well as some general<br />

options. See the options reference page for descriptions.<br />

--lineTerminator=[lf|crlf|native]<br />

explicitly identifies the characters to use as the line terminator for this sandbox. lf is a line<br />

feed character, crlf is the <strong>com</strong>bination of the carriage return and line feed characters, and<br />

native uses the default line terminator in the client operating system: crlf in Windows and lf<br />

in UNIX.<br />

Note:<br />

When you create a sandbox Source Integrity remembers the setting of the line<br />

terminator, and all checkouts (using si co) and resyncs (using si resync) in that<br />

sandbox use the same line terminator setting. If you want to override the line<br />

terminator on an individual member, you must use some utility such as the MKS<br />

Toolkit flip <strong>com</strong>mand.<br />

--[no]populate<br />

controls whether to populate the sandbox with read-only working files for all members.<br />

--[no]sparse<br />

controls whether to create a sparse sandbox.<br />

Creating a sparse sandbox with --sparse affects the way the sandbox behaves with the<br />

si ci check in <strong>com</strong>mand and the si co check out <strong>com</strong>mand, as well as si resync. This<br />

option creates a sandbox with no working files and defers the creation of sandbox<br />

directories and subsandboxes until you need to work with them. A sparse sandbox does not<br />

retain working files when a member is checked in and continues to function this way<br />

throughout its use; however, once created, sandbox directories and subsandboxes remain<br />

in the sandbox. Using si ci to check in a member to a sparse sandbox removes the<br />

working file from the sandbox (unless you did a check in locked, using the -l option).<br />

Similarly, using si resync on the sandbox by default removes the working files for those<br />

members that are not locked by you, although you can override this with<br />

si resync --populate in a sparse sandbox, which in effect causes the resync to behave<br />

like it does in a normal, non-sparse sandbox.<br />

--[no]openView<br />

controls whether to open the sandbox view after this new sandbox is registered on the<br />

client. If --noopenView is used, the sandbox view does not open.<br />

--[no]shared<br />

controls whether or not to make the sandbox shared. The default is not shared.<br />

Configuring the sandbox to be shared makes it possible for other users to share its working<br />

files. Other users must first import the sandbox to register it with their Source Integrity clients<br />

(see si importsandbox). When a top-level sandbox is configured to be shared, all<br />

88 of 457


subsandboxes are shared as well. Subsandboxes cannot be individually configured to be<br />

shared or not shared.<br />

directory<br />

identifies a location on the MKS Source Integrity client system for the new sandbox. Use<br />

spaces to identify more than one directory.<br />

Note:<br />

DIAGNOSTICS<br />

Do NOT append the name of the project file (typically project.pj) to the directory.<br />

The name will be calculated automatically.<br />

See the diagnostics reference page for possible exit status values.<br />

PREFERENCES<br />

Using si setprefs or si viewprefs, you are able to set or view the preference keys for this<br />

<strong>com</strong>mand.<br />

SEE ALSO<br />

Commands:<br />

si add, si checkpoint, si co, si createdevpath, si createproject, si<br />

dropsandbox, si importsandbox, si merge, si resync, si sandboxes, si<br />

viewsandbox<br />

Miscellaneous:<br />

ACL, diagnostics, options, preferences<br />

89 of 457


si createsubproject<br />

creates a subproject or adds an existing project as a subproject<br />

SYNOPSIS<br />

si createsubproject [ --[no|confirm]reuseDroppedSubproject]<br />

[ --[no]createSubprojects] [(-P project| --project=project)]<br />

[(-S sandbox| --sandbox=sandbox)] [--devpath=path] [--hostname=server]<br />

[--port =number] [--password=password] [ --user=name] [(-?|--usage)]<br />

[(-F file|--selectionFile=file)] [(-N|--no)] [(-Y|--yes )] [--[no]batch] [ --cwd=directory]<br />

[--forceConfirm=[yes|no]] [(-g|--gui)] [ --quiet] [--settingsUI=[gui|default]]<br />

[ --status=[none|gui|default]] subproject location...<br />

DESCRIPTION<br />

si createsubproject creates a subproject on the server in a specified directory, which must<br />

be under an existing project specified by the -P project or --project=project options. This<br />

<strong>com</strong>mand works with Regular and Variant sandboxes, but not with Build sandboxes.<br />

Options<br />

This <strong>com</strong>mand takes the universal options available to all si <strong>com</strong>mands, as well as some general<br />

options. See the options reference page for descriptions.<br />

--[no|confirm]reuseDroppedSubproject<br />

controls whether to add an existing subproject to the named project. This can be useful if the<br />

existing subproject had been dropped from a project.<br />

Note: While si addsubproject is the re<strong>com</strong>mended <strong>com</strong>mand for adding an existing<br />

subproject to a project, this option is available for backwards <strong>com</strong>patibility and any scripts<br />

you may use.<br />

--[no]createSubprojects<br />

controls whether to create one subproject for each directory encountered when creating<br />

subprojects.<br />

subproject location...<br />

identifies a location on the Integrity Server for the new subproject. Regardless of your<br />

operating system, all paths are specified here using forward slashes (/), and may be server<br />

relative or absolute paths. You must also specify the name of the project file as part of the<br />

location; typically this is project.pj.<br />

Note:<br />

Subprojects must be added "in tree", that is, in the project directory or a subdirectory.<br />

90 of 457


As with the si createproject <strong>com</strong>mand, remember that server-side restrictions may<br />

exist controlling where you are permitted to locate any subprojects on the Integrity Server.<br />

Contact your system administrator for permitted locations.<br />

DIAGNOSTICS<br />

See the diagnostics reference page for possible exit status values.<br />

PREFERENCES<br />

Using si setprefs or si viewprefs, you are able to set or view the preference keys for this<br />

<strong>com</strong>mand.<br />

SEE ALSO<br />

Commands:<br />

si checkpoint, si createproject, si createsandbox, si drop, si<br />

dropproject, si importproject, si projectinfo, si projects, si<br />

viewproject<br />

Miscellaneous:<br />

ACL, diagnostics, options, preferences<br />

91 of 457


si deletelabel<br />

removes a label from a member<br />

SYNOPSIS<br />

si deletelabel [(-L label|--label=label)] [--filter=filteroptions]<br />

[(-P project|--project=project)] [(-S sandbox|--sandbox=sandbox)] [--devpath=path]<br />

[--projectRevision=rev] [--hostname=server] [--port=number] [--password=password]<br />

[--user=name] [(-?|--usage)] [(-F file|--selectionFile=file)]<br />

[-R|--[no|confirm]recurse] [(-N|--no)] [(-Y|--yes)] [--[no]batch] [--cwd=directory]<br />

[--forceConfirm=[yes|no]] [(-g|--gui)] [--quiet] [--settingsUI=[gui|default]]<br />

[--status=[none|gui|default]] member...<br />

DESCRIPTION<br />

si deletelabel removes a label from one or more members. If you do not specify any<br />

members, the si deletelabel <strong>com</strong>mand applies to all project members with associated<br />

archives, deleting the label from whatever revision the label happens to exist on in the archive.<br />

Please note the --projectRevision option is not used for identifying the revision to delete<br />

labels from.<br />

Options<br />

This <strong>com</strong>mand takes the universal options available to all si <strong>com</strong>mands, as well as some general<br />

options. See the options reference page for descriptions.<br />

-L label<br />

--label=label<br />

identifies a label. Labels cannot contain colons(:), square brackets ([ ]), or leading spaces.<br />

Additionally, they cannot have the same format as a valid revision number.<br />

Note:<br />

Labels that include spaces must be enclosed by quotes.<br />

member...<br />

identifies a specific member; use spaces to specify more than one member.<br />

DIAGNOSTICS<br />

See the diagnostics reference page for possible exit status values.<br />

92 of 457


PREFERENCES<br />

Using si setprefs or si viewprefs, you are able to set or view the preference keys for this<br />

<strong>com</strong>mand.<br />

SEE ALSO<br />

Commands:<br />

si addlabel, si addprojectlabel, si deleteprojectlabel , si viewlabels<br />

Miscellaneous:<br />

ACL, diagnostics, options, preferences<br />

93 of 457


si deleteprojectlabel<br />

removes a label from a project<br />

SYNOPSIS<br />

si deleteprojectlabel [(-L label|--label=label)] [(-P project|--project=project)]<br />

[(-S sandbox|--sandbox=sandbox)] [--devpath=path] [--projectRevision=rev]<br />

[--hostname=server] [--port=number] [--password=password] [--user=name]<br />

[(-?|--usage)] [(-F file|--selectionFile=file)] [(-N|--no)] [(-Y|--yes)] [--[no]batch]<br />

[--cwd=directory] [--forceConfirm=[yes|no]] [(-g|--gui)] [--quiet]<br />

[--settingsUI=[gui|default]] [--status=[none|gui|default]]<br />

DESCRIPTION<br />

si deleteprojectlabel removes a label from an MKS Source Integrity project, deleting the<br />

label from whatever project revision the label happens to exist on. Note that the<br />

--projectRevision option is not used for identifying the project revision to delete labels from; it<br />

is the generic option available on all project-based <strong>com</strong>mands that allows you to specify the<br />

revision of the build project you want to work with.<br />

Options<br />

This <strong>com</strong>mand takes the universal options available to all si <strong>com</strong>mands, as well as some general<br />

options. See the options reference page for descriptions.<br />

-L label<br />

--label=label<br />

identifies a label. Labels cannot contain colons(:), square brackets ([ ]), or leading spaces.<br />

Additionally, they cannot have the same format as a valid revision number.<br />

Note:<br />

Labels that include spaces must be enclosed by quotes.<br />

DIAGNOSTICS<br />

See the diagnostics reference page for possible exit status values.<br />

PREFERENCES<br />

Using si setprefs or si viewprefs, you are able to set or view the preference keys for this<br />

<strong>com</strong>mand.<br />

94 of 457


SEE ALSO<br />

Commands:<br />

si addlabel, si addprojectlabel, si deletelabel, si viewlabels<br />

Miscellaneous:<br />

ACL, diagnostics, options, preferences<br />

95 of 457


si deleterevision<br />

permanently deletes a revision from a member<br />

SYNOPSIS<br />

si deleterevision [--[no]confirm] [--[no]confirminuse] [-f] [--range=value]<br />

[(-R|--[no|confirm]recurse)] [--filter=filteroptions] [(-P project|--project=project)]<br />

[(-S sandbox|--sandbox=sandbox)] [--devpath=path] [--projectRevision=rev]<br />

[--hostname=server] [--port=number] [--password=password] [--user=name]<br />

[(-?|--usage)] [(-F file|--selectionFile=file)] [(-N|--no)] [(-Y|--yes)] [--[no]batch]<br />

[--cwd=directory] [--forceConfirm=[yes|no]] [(-g|--gui)] [--quiet]<br />

[--settingsUI=[gui|default]] [--status=[none|gui|default]] member...<br />

DESCRIPTION<br />

si deleterevision deletes an archived revision of a project member.<br />

Note:<br />

Options<br />

It is re<strong>com</strong>mended that you never delete a revision. Since historical versions of projects may<br />

still point at the deleted revision, it may be<strong>com</strong>e impossible to recreate old projects.<br />

This <strong>com</strong>mand takes the universal options available to all si <strong>com</strong>mands, as well as some general<br />

options. See the options reference page for descriptions.<br />

--[no]confirm<br />

controls the display of confirmation messages.<br />

--[no]confirminuse<br />

controls whether Source Integrity warns you about deleting the revision if it is used in other<br />

projects. If the revision is used in other projects, Source Integrity warns you that deleting the<br />

selected revision will break the listed items. This option is valid only with the database<br />

repository.<br />

-f<br />

forces the revision to be deleted, without any confirmation message.<br />

--range=value<br />

specifies a range of revision numbers. The format of value for a single revision is simply the<br />

revision number itself. Separate multiple non sequential revisions with a <strong>com</strong>ma, and use a<br />

dash to indicate a sequential range, for example, 1.2-1.5.<br />

You may also prefix or append a dash to a single revision number, meaning you want to<br />

96 of 457


delete from 1.1 to the specified revision, or from the specified revision to the tip. For<br />

example, you would specify -1.6 to delete revisions 1.1 to 1.6. Or you could specify 1.2-<br />

to delete revisions 1.2 to the tip revision, whatever it may be.<br />

The revisions are deleted in order from the highest revision to the lowest.<br />

member...<br />

identifies a specific member; use spaces to specify more than one member.<br />

DIAGNOSTICS<br />

See the diagnostics reference page for possible exit status values.<br />

PREFERENCES<br />

Using si setprefs or si viewprefs, you are able to set or view the preference keys for this<br />

<strong>com</strong>mand.<br />

SEE ALSO<br />

Commands:<br />

si diff, si merge, si revisioninfo, si rlog<br />

Miscellaneous:<br />

ACL, diagnostics, options, preferences<br />

97 of 457


si demote<br />

demotes the state of a member<br />

SYNOPSIS<br />

si demote [(-r rev|--revision=rev)] [(-s state|--state=state)]<br />

[(-R|--[no|confirm]recurse)] [--devpath=path] [--filter=filteroptions]<br />

[(-P project|--project=project)] [--projectRevision=rev]<br />

[(-S sandbox|--sandbox=sandbox)] [--hostname=server] [--port=number]<br />

[--password=password] [--user=name] [--cwd=directory] [(-F file|--selectionFile=file)]<br />

[--forceConfirm=[yes|no]] [(-g|--gui)] [(-N|--no)] [--[no]batch] [--quiet]<br />

[--settingsUI=[gui|default]] [--status=[none|gui|default]] [(-?|--usage)] [(-Y|--yes)]<br />

member...<br />

DESCRIPTION<br />

si demote demotes a project member to a lower state of development. A state is a textual<br />

description defined by the administrator to classify the condition of a revision in a history. If no state<br />

is assigned to a revision at check-in, a default value of Exp (for Experimental) is used. See the<br />

Integrity Server Administration Guide for details on setting up states.<br />

Project members can also be demoted to a predefined lower state of development using this<br />

<strong>com</strong>mand.<br />

Note: Demoting members is for historical purposes only. To more effectively control project<br />

workflow, MKS re<strong>com</strong>mends using the Integrity Manager integration.<br />

Options<br />

This <strong>com</strong>mand takes the universal options available to all si <strong>com</strong>mands, as well as some general<br />

options. See the options reference page for descriptions.<br />

-s state<br />

--state=state<br />

specifies the target state to be set for the demoted member. If a state is not specified, the<br />

member is demoted to the next state.<br />

member...<br />

identifies a specific member; use spaces to specify more than one member.<br />

DIAGNOSTICS<br />

98 of 457


See the diagnostics reference page for possible exit status values.<br />

PREFERENCES<br />

Using si setprefs or si viewprefs, you are able to set or view the preference keys for this<br />

<strong>com</strong>mand.<br />

SEE ALSO<br />

Commands:<br />

si demoteproject, si promote, si promoteproject<br />

Miscellaneous:<br />

ACL, diagnostics, options, preferences<br />

99 of 457


si demoteproject<br />

demotes the state of a project<br />

SYNOPSIS<br />

si demoteproject [(-s state|--state=state)] [(-P project|--project=project)]<br />

[(-S sandbox|--sandbox=sandbox)] [--devpath=path] [--projectRevision=rev]<br />

[--hostname=server] [--port=number] [--password=password] [--user=name]<br />

[(-?|--usage)] [(-F file|--selectionFile=file)] [(-N|--no)] [(-Y|--yes)] [--[no]batch]<br />

[--cwd=directory] [--forceConfirm=[yes|no]] [(-g|--gui)] [--quiet]<br />

[--settingsUI=[gui|default]] [--status=[none|gui|default]]<br />

DESCRIPTION<br />

si demoteproject demotes a project to a lower state of development. A state is a textual<br />

description, defined by the administrator, used to classify the condition of a revision in a history. If<br />

no state is assigned to a revision at checkpoint, a default value of Exp (for Experimental) is used.<br />

See the Integrity Server Administration Guide for details on setting up states.<br />

Just as you can with a project member, you can demote the project itself (change its state, in other<br />

words). Only the project is demoted, not the members of the project.<br />

Note: Demoting projects is for historical purposes only. To more effectively control project<br />

workflow, MKS re<strong>com</strong>mends using the Integrity Manager integration.<br />

Options<br />

This <strong>com</strong>mand takes the universal options available to all si <strong>com</strong>mands, as well as some general<br />

options. See the options reference page for descriptions.<br />

-s state<br />

--state=state<br />

specifies the target state to be set for the demoted project. If no state is specified, the<br />

project is demoted to the next state.<br />

DIAGNOSTICS<br />

See the diagnostics reference page for possible exit status values.<br />

PREFERENCES<br />

100 of 457


Using si setprefs or si viewprefs, you are able to set or view the preference keys for this<br />

<strong>com</strong>mand.<br />

SEE ALSO<br />

Commands:<br />

si demote, si promote, si promoteproject<br />

Miscellaneous:<br />

ACL, diagnostics, options, preferences<br />

101 of 457


si diff<br />

displays differences between two revisions of a member<br />

SYNOPSIS<br />

si diff [--context=value] [--[no]ignoreBlanks] [--[no]ignoreCase]<br />

[--[no]ignoreWhitespace] [-r rev1[-r rev2]] [(-R|--[no|confirm]recurse)]<br />

[--filter=filteroptions] [(-P project|--project=project)] [(-S sandbox|--sandbox=sandbox)]<br />

[--devpath=path] [--projectRevision=rev] [--hostname=server] [--port=number]<br />

[--password=password] [--user=name] [(-?|--usage)] [(-F file|--selectionFile=file)]<br />

[(-N|--no)] [(-Y|--yes)] [--[no]batch] [--cwd=directory] [--forceConfirm=[yes|no]]<br />

[(-g|--gui)] [--quiet] [--settingsUI=[gui|default]] [--status=[none|gui|default]] member...<br />

DESCRIPTION<br />

si diff displays the differences between two revisions of the specified member, or one revision<br />

and the member's working file. If no members are specified, si diff operates on all project<br />

members.<br />

By default, in a sandbox, this <strong>com</strong>pares the member revision against the working file.<br />

In graphical mode where the -g or --gui option is used, this invokes the visual difference utility.<br />

Otherwise, the diff or diffb utilities are used depending on whether it is evaluating differences<br />

in a text or binary file.<br />

If used with -g or --gui, only one member can be differenced at a time, and the --context<br />

option is ignored.<br />

Options<br />

This <strong>com</strong>mand takes the universal options available to all si <strong>com</strong>mands, as well as some general<br />

options. See the options reference page for descriptions.<br />

--context=value<br />

shows value number of lines of context, before and after each difference between two files.<br />

si diff marks lines removed from the "old" revision with -, marks lines added to the<br />

"new" revision with +, and marks lines changed in both files with !.<br />

--[no]ignoreBlanks<br />

controls whether to ignore blanks when <strong>com</strong>paring textual revisions. When<br />

--ignoreBlanks is used, all differences involving blanks are ignored except blanks at the<br />

start of a line. These are treated differently than blanks between other characters. The<br />

following pair would be considered different, for example, because of the leading blank:<br />

102 of 457


a b c def<br />

a b c def<br />

--[no]ignoreCase<br />

controls whether to ignore case when <strong>com</strong>paring revisions.<br />

--[no]ignoreWhitespace<br />

controls whether to ignore white space at the end of each line (except the newline) and treat<br />

all consecutive strings of white space elsewhere in a line as equivalent (effectively, reducing<br />

all strings of white space to a single space for the purpose of <strong>com</strong>paring lines).<br />

-r rev1[-r rev2]<br />

uses a specified revision. Specify this option twice to identify the two revisions to be<br />

<strong>com</strong>pared; the first instance is the "old" revision, the second is the "new". If the second<br />

revision is not specified, the working file is assumed. Both revisions must be specified if<br />

operating against a project. rev can be a valid revision number or a label. If neither is<br />

specified, it defaults to member revision.<br />

member...<br />

identifies a specific project or sandbox member, depending on whether the -S sandbox<br />

option or the -P project option is specified. To specify more than one member, use spaces<br />

between them.<br />

DIAGNOSTICS<br />

See the diagnostics reference page for possible exit status values.<br />

PREFERENCES<br />

Using si setprefs or si viewprefs, you are able to set or view the preference keys for this<br />

<strong>com</strong>mand.<br />

SEE ALSO<br />

Commands:<br />

diff, diffb, si ci, si merge, si mods, si revisioninfo, si rlog, si<br />

updaterevision, si viewrevision, vdiff32<br />

Miscellaneous:<br />

ACL, diagnostics, options, preferences<br />

103 of 457


si difffiles<br />

<strong>com</strong>pares the differences between two text files<br />

SYNOPSIS<br />

si difffiles [--context=value] [--[no]ignoreBlanks] [--[no]ignoreCase]<br />

[--[no]ignoreWhitespace] [(-?|--usage)] [(-F file|--selectionFile=file)] [(-N|--no)]<br />

[(-Y|--yes)] [--[no]batch] [--cwd=directory] [--forceConfirm=[yes|no]] [(-g|--gui)]<br />

[--quiet] [--settingsUI=[gui|default]] [--status=[none|gui|default]] file1 file2<br />

DESCRIPTION<br />

si difffiles <strong>com</strong>pares the differences between two text files. This is useful when you want to<br />

<strong>com</strong>pare the differences between two arbitrary text files (not members or revisions).<br />

In graphical mode where the -g or --gui option is used, this invokes a dialog box that allows you<br />

to browse for each file. The results appear in MKS Visual Difference.<br />

Note: The dialog box keeps track of the last 10 files in both fields.<br />

Options<br />

This <strong>com</strong>mand takes the universal options available to all si <strong>com</strong>mands, as well as some general<br />

options. See the options reference page for descriptions.<br />

--context=value<br />

shows value number of lines of context, before and after each difference between two files.<br />

si difffiles marks lines removed from the first specified file with -, marks lines added<br />

to the second specified file with +, and marks lines changed in both files with !.<br />

--[no]ignoreBlanks<br />

controls whether to ignore blanks when <strong>com</strong>paring text files. When --ignoreBlanks is<br />

used, all differences involving blanks are ignored except blanks at the start of a line. These<br />

are treated differently than blanks between other characters. The following pair would be<br />

considered different, for example, because of the leading blank:<br />

a b c def<br />

a b c def<br />

--[no]ignoreCase<br />

controls whether to ignore case when <strong>com</strong>paring files.<br />

--[no]ignoreWhitespace<br />

104 of 457


controls whether to ignore white space at the end of each line (except the newline) and treat<br />

all consecutive strings of white space elsewhere in a line as equivalent (effectively, reducing<br />

all strings of white space to a single space for the purpose of <strong>com</strong>paring lines).<br />

file1 file2<br />

identifies the two files you want to <strong>com</strong>pare.<br />

DIAGNOSTICS<br />

See the diagnostics reference page for possible exit status values.<br />

PREFERENCES<br />

Using si setprefs or si viewprefs, you are able to set or view the preference keys for this<br />

<strong>com</strong>mand.<br />

SEE ALSO<br />

Commands:<br />

diff, diffb, si diff, si ci, si merge, si mods, si revisioninfo, si rlog, si<br />

updaterevision, si viewrevision,<br />

Miscellaneous:<br />

ACL, diagnostics, options, preferences<br />

105 of 457


si discardcp<br />

discards a change package<br />

SYNOPSIS<br />

si discardcp [--[no]confirm] [--hostname=server] [--port=number]<br />

[--password=password] [--user=name] [(-?|--usage)] [(-Ffile|--selectionFile=file)]<br />

[(-N|--no)] [(-Y|--yes)] [--[no]batch] [--cwd=directory] [--forceConfirm=[yes|no]]<br />

[(-g|--gui)] [--quiet] [--settingsUI=[gui|default]] [--status=[none|gui|default]]<br />

issue|issue:change package id...<br />

DESCRIPTION<br />

si discardcp discards a change package.<br />

Source Integrity provides a way to remove change packages from active use when they are not<br />

needed by discarding them.<br />

Change packages can only be discarded if they are in the Open or Rejected states. In order to<br />

discard a change package, that change package must be both created by you and not contain any<br />

<strong>com</strong>mitted entries. However, a change package administrator may discard a change package<br />

created by another user.<br />

When a change package is discarded, the following happens where applicable:<br />

● all un<strong>com</strong>mitted entries are removed from the change package<br />

● all deferred operations corresponding to deferred entries are reverted<br />

● all locks on members corresponding to lock entries are released<br />

● all pending operations corresponding to pending entries are reverted, and appear as<br />

discarded entries in the review log (to preserve the review history)<br />

● all pending revisions that correspond to pending entries are deleted<br />

● any archives created for pending members associated with pending entries in the change<br />

package are deleted from the server (pre-existing archives that were shared to create a<br />

pending member are not deleted)<br />

Note the following about discarded change packages:<br />

● The change package ID for the discarded change package can never be used for any future<br />

change packages that are created.<br />

● Discarded change packages have a state of Discarded, and can still be viewed using the<br />

Change Package filter.<br />

● If the change package has undergone a review, the review log persists.<br />

106 of 457


● Discarded change packages can be opened and used again.<br />

Options<br />

This <strong>com</strong>mand takes the universal options available to all si <strong>com</strong>mands, as well as some general<br />

options. See the options reference page for descriptions.<br />

--[no]confirm<br />

specifies if to confirm discarding the change package.<br />

issue...<br />

issue:change package id...<br />

issue identifies a specific issue that contains all change packages that you want to discard;<br />

use spaces to specify more than one issue.<br />

issue:change package id identifies a specific change package to discard; use spaces to specify<br />

more than one change package.<br />

DIAGNOSTICS<br />

See the diagnostics reference page for possible exit status values.<br />

PREFERENCES<br />

Using si setprefs or si viewprefs, you are able to set or view the preference keys for this<br />

<strong>com</strong>mand.<br />

SEE ALSO<br />

Commands:<br />

si add, si ci, si co, si cpissues , si createcp, si drop, si lock, si<br />

viewcps si acceptcp, si rejectcp, si opencp<br />

Miscellaneous:<br />

ACL, diagnostics, options, preferences<br />

107 of 457


si disconnect<br />

disconnects from the Integrity Server<br />

SYNOPSIS<br />

si disconnect [--hostname=server] [--port=number] [--password=password]<br />

[--user=name] [(-?|--usage)] [(-F file|--selectionFile=file)] [(-N|--no)] [(-Y|--yes)]<br />

[--[no]batch] [--[no]confirm] [--cwd=directory] [--forceConfirm=[yes|no]] [(-g|--gui)]<br />

[--quiet] [--settingsUI=[gui|default]] [--status=[none|gui|default]]<br />

DESCRIPTION<br />

si disconnect disconnects the client connection to the host Integrity Server.<br />

Note: When disconnecting a connection that is the current connection, all open client views close.<br />

All new views use the connection specified in the Source Integrity preferences, or an existing<br />

connection, as the new current connection.<br />

Options<br />

This <strong>com</strong>mand takes the universal options available to all si <strong>com</strong>mands, as well as some general<br />

options. See the options reference page for descriptions.<br />

--[no]confirm<br />

controls whether to implement the Integrity Server disconnection confirmation policy.<br />

DIAGNOSTICS<br />

See the diagnostics reference page for possible exit status values.<br />

PREFERENCES<br />

Using si setprefs or si viewprefs, you are able to set or view the preference keys for this<br />

<strong>com</strong>mand.<br />

SEE ALSO<br />

Commands:<br />

si connect, si servers<br />

108 of 457


Miscellaneous:<br />

diagnostics, options, preferences<br />

109 of 457


si drop<br />

drops a member or subproject from a project<br />

SYNOPSIS<br />

si drop [(--cpid ID|--changePackageId=ID)] [--[no|confirm]closeCP]<br />

[--issueId=ID] [(-f|--[no]confirm)] [--[no]defer] [--[no]delete]<br />

[--filter=filteroptions] [(-P project|--project=project)] [(-S sandbox|--sandbox=sandbox)]<br />

[--devpath=path] [--hostname=server] [--port=number] [--password=password]<br />

[--user=name] [(-?|--usage)] [(-F file|--selectionFile=file)] [(-N|--no)] [(-Y|--yes)]<br />

[--[no]batch] [--cwd=directory] [--forceConfirm=[yes|no]] [(-g|--gui)] [--quiet]<br />

[--settingsUI=[gui|default]] [--status=[none|gui|default]] member... or subproject...<br />

DESCRIPTION<br />

si drop drops specified members and subprojects from a project. Files dropped in a sandbox are<br />

not actually dropped from the sandbox until you use the si resync <strong>com</strong>mand, or if you specify<br />

--delete with this <strong>com</strong>mand. This allows sandbox users to be protected from a file deletion until<br />

an appropriate point, and therefore be in control.<br />

Note:<br />

This <strong>com</strong>mand does not operate in a Build sandbox.<br />

If a member has outlived its usefulness or just does not belong in a project any more, you can<br />

remove it at any time. After you remove a member from a project, the member is no longer listed<br />

as part of the sandbox or master project, but the member history remains, in case you need to<br />

recreate an earlier version of the project. The build project and variants may still have the file as a<br />

member.<br />

Adding a member (see si add) which has previously been dropped will result in the history of the<br />

dropped member be<strong>com</strong>ing the history of the newly added member.<br />

Options<br />

This <strong>com</strong>mand takes the universal options available to all si <strong>com</strong>mands, as well as some general<br />

options. See the options reference page for descriptions.<br />

--cpid=ID<br />

--changePackageId=ID<br />

identifies a change package that is notified of this action, for example, 1452. Note the<br />

following about using this option:<br />

110 of 457


❍ This option can only be specified if change packages are enabled.<br />

❍ You must specify this option if you have requested to obtain a lock and TrackLocks is<br />

enabled, and/or it is mandatory to specify a change package.<br />

❍ If the integration is enabled, but it is not mandatory to specify a change package, or if<br />

no change package is applicable, you must specify --changePackageId=:none.<br />

❍ The next time you are prompted for a change package ID, the last used change<br />

package ID is displayed by default, if :none was specified or at least one change<br />

package was successfully updated from the last operation.<br />

--[no|confirm]closeCP<br />

controls whether to close the associated change package.<br />

--nocloseCP means do not close the change package.<br />

--confirmcloseCP means ask before closing the change package.<br />

--closeCP always closes the change package.<br />

--issueId=ID<br />

identifies an MKS Integrity Manager issue that is notified of this action. This option is<br />

another way of adding members to a change package. If you have an issue assigned to you<br />

that contains one open change package, you can specify the issue ID instead of the change<br />

package ID. See the Integrity Server Administration Guide or your administrator for details<br />

on using the Integrity Manager integration.<br />

-f<br />

--[no]confirm<br />

controls the display of confirmation messages. -f forces an action without any prompt.<br />

--[no]defer<br />

controls whether to delay the drop operation in the project until the deferred operation is<br />

submitted. The operation in the sandbox still takes place immediately.<br />

--[no]delete<br />

control whether the working file should be deleted immediately from your sandbox, when<br />

using -S or<br />

--sandbox.<br />

member... or subproject...<br />

identifies a specific member or subproject; use spaces to specify more than one.<br />

DIAGNOSTICS<br />

See the diagnostics reference page for possible exit status values.<br />

PREFERENCES<br />

Using si setprefs or si viewprefs, you are able to set or view the preference keys for this<br />

111 of 457


<strong>com</strong>mand.<br />

SEE ALSO<br />

Commands:<br />

si add, si closecp, si cpissues, si createcp, si viewcps<br />

Miscellaneous:<br />

ACL, diagnostics, options, preferences<br />

112 of 457


si dropdevpath<br />

drops a variant project from the master project<br />

SYNOPSIS<br />

si dropdevpath [--devpath=path] [(-P project|--project=project)]<br />

[(-S sandbox|--sandbox=sandbox)] [--hostname=server] [--port=number]<br />

[--password=password] [--user=name] [(-?|--usage)] [(-F file|--selectionFile=file)]<br />

[(-N|--no)] [(-Y|--yes)] [--[no]batch] [--cwd=directory] [--forceConfirm=[yes|no]]<br />

[(-g|--gui)] [--quiet] [--settingsUI=[gui|default]] [--status=[none|gui|default]]<br />

DESCRIPTION<br />

si dropdevpath drops a variant project.<br />

Options<br />

This <strong>com</strong>mand takes the universal options available to all si <strong>com</strong>mands, as well as some general<br />

options. See the options reference page for descriptions.<br />

--devpath=path<br />

identifies the development path of a project to be dropped.<br />

Note: The following characters may not be used in a development path: \n, \r, \t, :, [', '], #.<br />

DIAGNOSTICS<br />

See the diagnostics reference page for possible exit status values.<br />

PREFERENCES<br />

Using si setprefs or si viewprefs, you are able to set or view the preference keys for this<br />

<strong>com</strong>mand.<br />

SEE ALSO<br />

Commands:<br />

si createdevpath, si createproject, si dropproject, si projectinfo, si<br />

projects, si viewproject<br />

113 of 457


Miscellaneous:<br />

ACL, diagnostics, options, preferences<br />

114 of 457


si dropmemberattr<br />

drops an attribute from a member<br />

SYNOPSIS<br />

si dropmemberattr [(--attr=key[=value]|--attribute=key[=value])]<br />

[(-R|--[no|confirm]recurse)] [--filter=filteroptions] [(-P project|--project=project)]<br />

[(-S sandbox|--sandbox=sandbox)] [--devpath=path] [--hostname=server]<br />

[--port=number] [--password=password] [--user=name] [(-?|--usage)]<br />

[(-F file|--selectionFile=file)] [(-N|--no)] [(-Y|--yes)] [--[no]batch] [--cwd=directory]<br />

[--forceConfirm=[yes|no]] [(-g|--gui)] [--quiet] [--settingsUI=[gui|default]]<br />

[--status=[none|gui|default]] member...<br />

DESCRIPTION<br />

si dropmemberattr drops an attribute from a member. If no members are specified, the<br />

<strong>com</strong>mand applies to all members of the project.<br />

Options<br />

This <strong>com</strong>mand takes the universal options available to all si <strong>com</strong>mands, as well as some general<br />

options. See the options reference page for descriptions.<br />

--attr=key=value<br />

--attribute=key=value<br />

identifies the attribute key and, optionally, the value to be dropped. If only the key is given,<br />

this <strong>com</strong>mand deletes any attribute with that key. If a value is given for the key, then only a<br />

key with that value is dropped.<br />

member...<br />

identifies a specific member; use spaces to specify more than one member.<br />

DIAGNOSTICS<br />

See the diagnostics reference page for possible exit status values.<br />

PREFERENCES<br />

Using si setprefs or si viewprefs, you are able to set or view the preference keys for this<br />

<strong>com</strong>mand.<br />

115 of 457


SEE ALSO<br />

Commands:<br />

si addmemberattr, si addprojectattr, si dropprojectattr<br />

Miscellaneous:<br />

ACL, diagnostics, options, preferences<br />

116 of 457


si dropproject<br />

drops (unregisters) a project from an Integrity Server<br />

SYNOPSIS<br />

si dropproject [--hostname=server] [--port=number] [--password=password]<br />

[--user=name] [(-?|--usage)] [(-F file|--selectionFile=file)] [(-N|--no)] [(-Y|--yes)]<br />

[--[no]batch] [--cwd=directory] [--forceConfirm=[yes|no]] [(-g|--gui)] [--quiet]<br />

[--settingsUI=[gui|default]] [--status=[none|gui|default]] project...<br />

DESCRIPTION<br />

si dropproject unregisters a project from the Integrity Server. Once a project is dropped,<br />

project <strong>com</strong>mands do not operate on the project, and any sandboxes pointing to that project do not<br />

operate.<br />

Note:<br />

This works only on "top level" projects; to drop a subproject from its master project, use si<br />

drop .<br />

Options<br />

This <strong>com</strong>mand takes the universal options available to all si <strong>com</strong>mands, as well as some general<br />

options. See the options reference page for descriptions.<br />

project...<br />

identifies a specific project location with a fully qualified server-relative path; use spaces to<br />

specify more than one.<br />

DIAGNOSTICS<br />

See the diagnostics reference page for possible exit status values.<br />

PREFERENCES<br />

Using si setprefs or si viewprefs, you are able to set or view the preference keys for this<br />

<strong>com</strong>mand.<br />

SEE ALSO<br />

117 of 457


Commands:<br />

si createproject, si createsubproject, si drop, si importproject, si<br />

projects, si viewproject<br />

Miscellaneous:<br />

ACL, diagnostics, options, preferences<br />

118 of 457


si dropprojectattr<br />

drops an attribute from a project<br />

SYNOPSIS<br />

si dropprojectattr [(--attr=key[=value]|--attribute =key[=value])] [(-P project|--project=project)]<br />

[(-S sandbox|--sandbox=sandbox)] [--devpath=path] [--hostname=server] [--port=number] [-password=password]<br />

[--user=name] [(-?|--usage)] [(-F file|--selectionFile=file)] [(-N|--no)] [(-Y|--yes)] [--<br />

[no]batch] [--cwd=directory] [--forceConfirm=[yes|no]] [(-g|--gui)] [--quiet] [--settingsUI=[gui|default]] [-status=[none|gui|default]]<br />

DESCRIPTION<br />

si dropprojectattr drops an attribute from a project.<br />

Options<br />

This <strong>com</strong>mand takes the universal options available to all si <strong>com</strong>mands, as well as some general options. See the options<br />

reference page for descriptions.<br />

--attr=key=value<br />

--attribute=key=value<br />

identifies the attribute key and, optionally, the value to be dropped. If only the key is given, this <strong>com</strong>mand deletes any<br />

attribute with that key. If a value is given for the key, then only a key with that value is dropped.<br />

DIAGNOSTICS<br />

See the diagnostics reference page for possible exit status values.<br />

PREFERENCES<br />

Using si setprefs or si viewprefs, you are able to set or view the preference keys for this <strong>com</strong>mand.<br />

SEE ALSO<br />

Commands:<br />

si addmemberattr, si addprojectattr, si dropmemberattr, si dropsandboxattr, si addsandboxattr<br />

Miscellaneous:<br />

ACL, diagnostics, options, preferences<br />

119 of 457


si dropsandbox<br />

drops a sandbox<br />

SYNOPSIS<br />

si dropsandbox [--[no]confirm] [--delete=[none|members|all]] [-f] [(-?|--usage)]<br />

[(-F file|--selectionFile=file)] [(-N|--no)] [(-Y|--yes)] [--[no]batch] [--cwd=directory]<br />

[--forceConfirm=[yes|no]] [(-g|--gui)] [--quiet] [--settingsUI=[gui|default]]<br />

[--status=[none|gui|default]] sandbox location...<br />

DESCRIPTION<br />

si dropsandbox unregisters a sandbox from the Integrity Client. Once a sandbox is dropped,<br />

sandbox <strong>com</strong>mands do not operate on the sandbox.<br />

Options<br />

This <strong>com</strong>mand takes the universal options available to all si <strong>com</strong>mands, as well as some general<br />

options. See the options reference page for descriptions.<br />

-f<br />

--[no]confirm<br />

controls the display of confirmation messages. -f forces an action without any prompt.<br />

--delete=[none|members|all]<br />

deletes files from the client sandbox directory according to the value specified. If none is<br />

specified, then no deletion occurs after the sandbox is dropped. If members is specified,<br />

then the specified sandbox, subsandboxes, and members are deleted. If all is specified,<br />

then everything in the current directory and subdirectories is deleted. For example:<br />

--delete=none sandbox.pj<br />

causes sandbox.pj to be removed from the registry, but not deleted from the client directory.<br />

--delete=members sandbox.pj<br />

causes sandbox.pj to be removed from the registry and deleted from the client directory<br />

along with all its subsandboxes and members.<br />

120 of 457


Note:<br />

--delete=all sandbox.pj<br />

causes sandbox.pj to be removed from the registry and all files in the client directory and<br />

subdirectories to be deleted.<br />

Since --delete=all is a destructive operation, it always requires confirmation. This is a<br />

preventative security measure. For example, if you create a sandbox in the root of a file<br />

system, this operation would delete your entire drive.<br />

sandbox location...<br />

identifies the location of a specific sandbox; use spaces to specify more than one sandbox.<br />

DIAGNOSTICS<br />

See the diagnostics reference page for possible exit status values.<br />

PREFERENCES<br />

Using si setprefs or si viewprefs, you are able to set or view the preference keys for this<br />

<strong>com</strong>mand.<br />

SEE ALSO<br />

Commands:<br />

si createsandbox, si importsandbox, si sandboxes, si viewsandbox<br />

Miscellaneous:<br />

diagnostics, options, preferences<br />

121 of 457


si dropsandboxattr<br />

drops sandbox attributes<br />

SYNOPSIS<br />

si dropsandboxattr [--attr|attribute=key=value] [-S|--sandbox=value]<br />

[--hostname=server] [--port=number] [--password=password] [--user=name]<br />

[(-?|--usage)] [(-Ffile|--selectionFile=file)] [(-N|--no)] [(-Y|--yes)] [--[no]batch]<br />

[--cwd=directory] [--forceConfirm=[yes|no]] [(-g|--gui)] [--quiet]<br />

[--settingsUI=[gui|default]] [--status=[none|gui|default]]<br />

DESCRIPTION<br />

si dropsandboxattr drops sandbox attributes.<br />

Options<br />

This <strong>com</strong>mand takes the universal options available to all si <strong>com</strong>mands, as well as some general<br />

options. See the options reference page for descriptions.<br />

--attr=key=value<br />

--attribute=key=value<br />

specifies the attribute to drop.<br />

DIAGNOSTICS<br />

See the diagnostics reference page for possible exit status values.<br />

PREFERENCES<br />

Using si setprefs or si viewprefs, you are able to set or view the preference keys for this<br />

<strong>com</strong>mand.<br />

SEE ALSO<br />

Commands:<br />

si addsandboxattr, si configuresandbox, add projectattr,<br />

dropprojectattr<br />

122 of 457


Miscellaneous:<br />

ACL, diagnostics, options, preferences<br />

123 of 457


si edit<br />

opens a revision or working file for editing<br />

SYNOPSIS<br />

si edit [--editor=value] [(-r rev|--revision=rev)] [--[no]systemEditor] [--filter=filteroptions] [(-P<br />

project|--project=project)] [(-S sandbox|--sandbox=sandbox)] [--devpath=path] [--projectRevision=rev] [-hostname=server]<br />

[--port=number] [--password=password] [--user=name] [(-?|--usage)] [(-F file|-selectionFile=file)]<br />

[(-N|--no)] [(-Y|--yes)] [--[no]batch] [--cwd=directory] [--forceConfirm=[yes|no]] [(-g|-<br />

-gui)] [--quiet] [--settingsUI=[gui|default]] [--status=[none|gui|default]] member...<br />

DESCRIPTION<br />

si edit opens a current, former, or deferred member revision for editing. In a sandbox, by default specifying no -r<br />

option edits the working file.<br />

If this <strong>com</strong>mand is invoked in the CLI mode (that is, no -g or --gui option is used), then the EDITOR environment<br />

variable is used and runs with the name of the temporary file containing the requested revision. If the EDITOR variable is<br />

not set, or if the -g or --gui option is used, a system-specific method is used. In particular, on WIN32-based systems,<br />

the operating system is instructed to open the file and does so based on the extension association. Under UNIX, the -g<br />

or --gui option uses the EDITOR environment variable; if it is not set, then Vi is used.<br />

Options<br />

This <strong>com</strong>mand takes the universal options available to all si <strong>com</strong>mands, as well as some general options. See the<br />

options reference page for descriptions.<br />

--editor=value<br />

identifies the editor to be used, overriding any EDITOR environment variables or system setting.<br />

--[no]systemEditor<br />

controls whether to use the system editor, set through si setprefs. If set, this overrides any editor setting if -g or -gui<br />

is given. This is used to temporarily override the pereference system.<br />

member...<br />

identifies a specific member; use spaces to specify more than one member.<br />

DIAGNOSTICS<br />

See the diagnostics reference page for possible exit status values.<br />

PREFERENCES<br />

Using si setprefs or si viewprefs, you are able to set or view the preference keys for this <strong>com</strong>mand.<br />

SEE ALSO<br />

Commands:<br />

si ci, si co, si lock, si unlock , si viewrevision<br />

Miscellaneous:<br />

ACL, diagnostics, options, preferences<br />

124 of 457


si editcp<br />

edits an existing change package<br />

SYNOPSIS<br />

si editcp [--description=value] [--descriptionFile=value]<br />

[--state=[open|closed|submitted|accepted|rejected|discarded|<strong>com</strong>mitfailed]]<br />

[--summary=value] [--summary=value] [--hostname=server] [--port=number]<br />

[--password=password] [--user=name] [(-?|--usage)] [(-F file|--selectionFile=file)]<br />

[(-N|--no)] [(-Y|--yes)] [--[no]batch] [--cwd=directory] [--forceConfirm=[yes|no]]<br />

[--quiet] [(-g|--gui)] [--settingsUI=[gui|default]] issue|issue:change package id...<br />

DESCRIPTION<br />

si editcp edits an existing change package.<br />

Options<br />

This <strong>com</strong>mand takes the universal options available to all si <strong>com</strong>mands, as well as some general<br />

options. See the options reference page for descriptions.<br />

--description=value<br />

specifies a description of the change package being edited.<br />

--descriptionFile=value<br />

specifies the file that contains the description for the change package.<br />

--state=[open|closed|submitted|accepted|rejected|discarded|<strong>com</strong>mitfailed]<br />

specifies the state of the change package. The change package progresses through states<br />

as part of the change package review workflow. If reviews are not mandatory, some states<br />

are not applicable. For more information, see the Source Integrity Enterprise User Guide<br />

--state=[open] specifies that the change package is open.<br />

--state=[closed] specifies that the change package is closed.<br />

--state=[submitted] specifies that the change package has been submitted for review.<br />

--state=[accepted] specifies that the change package has been accepted by all<br />

reviewers.<br />

--state=[rejected] specifies that the change package has been rejected by at least<br />

one reviewer.<br />

125 of 457


--state=[discarded] specifies that the change package has been discarded.<br />

--state=[<strong>com</strong>mitfailed] specifies that the change package has failed to <strong>com</strong>mit to the<br />

repository.<br />

-summary=value<br />

specifies a brief summary of the change package being edited.<br />

issue...<br />

issue:change package id...<br />

issue identifies a specific issue that contains all change packages that you want to edit; use<br />

spaces to specify more than one issue.<br />

issue:change package id identifies a specific change package to edit; use spaces to specify<br />

more than one change package.<br />

DIAGNOSTICS<br />

See the diagnosticsreference page for possible exit status values.<br />

PREFERENCES<br />

Using si setprefs or si viewprefs, you are able to set or view the preference keys for this<br />

<strong>com</strong>mand.<br />

SEE ALSO<br />

Commands:<br />

si discardcp, si opencp, si closecp, si createcp, si add, si ci, si co, si<br />

cpissues, si createcp, si drop, si lock, si viewcps<br />

Miscellaneous:<br />

ACL, diagnostics, options, preferences<br />

126 of 457


si exit<br />

exits the current MKS Source Integrity client session<br />

SYNOPSIS<br />

si exit [--[no]abort] [--[no|confirm]shutdown] [(-?|--usage)]<br />

[(-F file|--selectionFile=file)] [(-N|--no)] [(-Y|--yes)] [--[no]batch] [--cwd=directory]<br />

[--forceConfirm=[yes|no]] [(-g|--gui)] [--quiet] [--settingsUI=[gui|default]]<br />

[--status=[none|gui|default]]<br />

DESCRIPTION<br />

si exit exits the current Source Integrity client session. When you run any Source Integrity<br />

<strong>com</strong>mand from the CLI, or when you open the Integrity Client GUI, you start a client session. Only<br />

one client session is running at a time, regardless of how many GUI windows you have open or<br />

how many CLIs you are using. To close the GUI you use the appropriate menu <strong>com</strong>mands, and to<br />

close the CLI you use the si exit <strong>com</strong>mand. In both cases you may have the further option of<br />

shutting down the Source Integrity client altogether, based on your preferences (see si<br />

setprefs); if you do not, the client is still running and available for additional interaction. If you do<br />

shut down the client <strong>com</strong>pletely, then running any Source Integrity <strong>com</strong>mand from the CLI or<br />

opening the Integrity Client GUI starts a new client session.<br />

Options<br />

This <strong>com</strong>mand takes the universal options available to all si <strong>com</strong>mands, as well as some general<br />

options. See the options reference page for descriptions.<br />

--[no]abort<br />

controls whether to shut down any other Source Integrity <strong>com</strong>mands that may be running.<br />

Some <strong>com</strong>mands allow you to specify a --persist option which keeps those <strong>com</strong>mands<br />

active during a client session. Using --abort with si exit is re<strong>com</strong>mended for stopping<br />

all persistent views that have been specified with another <strong>com</strong>mand's --persist option.<br />

--[no|confirm]shutdown<br />

controls the shutting down of the Source Integrity client without getting a prompt.<br />

Note:<br />

DIAGNOSTICS<br />

Specifying --noshutdown with si exit is essentially a non-operation: it does<br />

nothing.<br />

127 of 457


See the diagnostics reference page for possible exit status values.<br />

PREFERENCES<br />

Using si setprefs or si viewprefs, you are able to set or view the preference keys for this<br />

<strong>com</strong>mand.<br />

SEE ALSO<br />

Commands:<br />

si about, si gui, si setprefs<br />

Miscellaneous:<br />

diagnostics, options, preferences<br />

128 of 457


si freeze<br />

freezes a project member<br />

SYNOPSIS<br />

si freeze [(-R|--[no|confirm]recurse)] [--filter=filteroptions]<br />

[(-P project|--project=project)] [(-S sandbox|--sandbox=sandbox)] [--devpath=path]<br />

[--hostname=server] [--port=number] [--password=password] [--user=name]<br />

[(-?|--usage)] [(-F file|--selectionFile=file)] [(-N|--no)] [(-Y|--yes)] [--[no]batch]<br />

[--cwd=directory] [--forceConfirm=[yes|no]] [(-g|--gui)] [--quiet]<br />

[--settingsUI=[gui|default]] [--status=[none|gui|default]] member...<br />

DESCRIPTION<br />

si freeze freezes one or more project members. If no members are specified, si freeze<br />

assumes all members of the project. Members can be unfrozen with the si thaw <strong>com</strong>mand.<br />

When a member is frozen, all MKS Source Integrity operations are run on the frozen member<br />

revision. The member revision and attributes of the frozen member cannot be changed until it is<br />

thawed. This ensures that a particular revision is always picked up, even if development on it<br />

continues.<br />

Options<br />

This <strong>com</strong>mand takes the universal options available to all si <strong>com</strong>mands, as well as some general<br />

options. See the options reference page for descriptions.<br />

member...<br />

identifies a specific member; use spaces to specify more than one member.<br />

DIAGNOSTICS<br />

See the diagnostics reference page for possible exit status values.<br />

PREFERENCES<br />

Using si setprefs or si viewprefs, you are able to set or view the preference keys for this<br />

<strong>com</strong>mand.<br />

SEE ALSO<br />

129 of 457


Commands:<br />

si checkpoint, si thaw<br />

Miscellaneous:<br />

ACL, diagnostics, options, preferences<br />

130 of 457


si gui<br />

starts the Integrity Client graphical user interface<br />

SYNOPSIS<br />

si gui [--height=value] [--width=value] [-x value] [-y value] [(-?|--usage)]<br />

[(-F file|--selectionFile=file)] [(-N|--no)] [(-Y|--yes)] [--[no]batch] [--cwd=directory]<br />

[--forceConfirm=[yes|no]] [(-g|--gui)] [--quiet] [--settingsUI=[gui|default]]<br />

[--status=[none|gui|default]]<br />

DESCRIPTION<br />

si gui starts the Integrity Client graphical user interface.<br />

Options<br />

This <strong>com</strong>mand takes the universal options available to all si <strong>com</strong>mands, as well as some general<br />

options. See the options reference page for descriptions.<br />

--height=value<br />

specifies the height of the GUI window, in pixels; value must be a whole number.<br />

--width=value<br />

specifies the width of the GUI window, in pixels; value must be a whole number.<br />

-x value<br />

used with the -g or --gui options, specifies the x location in pixels of the window.<br />

-y value<br />

used with the -g or --gui options, specifies the y location in pixels of the window.<br />

DIAGNOSTICS<br />

See the diagnostics reference page for possible exit status values.<br />

PREFERENCES<br />

Using si setprefs or si viewprefs, you are able to set or view the preference keys for this<br />

<strong>com</strong>mand.<br />

SEE ALSO<br />

131 of 457


Miscellaneous:<br />

diagnostics, options, preferences<br />

132 of 457


si import<br />

imports a member from a server file or from an old Source Integrity archive into an existing MKS Source<br />

Integrity project<br />

SYNOPSIS<br />

si import [--archive=filename] [--author=name] [(--binaryFormat|--textFormat)]<br />

[(-d desc|--description=desc)] [--descriptionFile=file] [--devpath=path] [--[no]createSubprojects]<br />

[--[no]unexpand] [(-r rev|--revision=rev)] [(-P project|--project=project)]<br />

[( -S sandbox|--sandbox=sandbox)]<br />

[--hostname=server] [--port=number] [--password=password] [--user=name] [--cwd=directory] [(-F file|-selectionFile=file)]<br />

[--forceConfirm=[yes|no]] [(-g|--gui)] [(-N|--no)] [--[no]batch] [--quiet]<br />

[--settingsUI=[gui|default]] [--status=[none|gui|default]] [(-?|--usage)] [(-Y|--yes)] [--cpid|-changepackageID=value]<br />

[--[no|confirm]closeCP] [--[no]defer] [--issueID=value]<br />

[-R|--[no|confirm]recurse] [--[no|confirm]includeFormers] [--exclude=file:pattern,dir:pattern...]<br />

[--include=file:pattern,dir:pattern...] nonmember...<br />

DESCRIPTION<br />

si import imports an external file or archive into the Source Integrity repository and adds it as a member of a<br />

Source Integrity project.<br />

The si import <strong>com</strong>mand can be used for the following:<br />

● Import archives from older versions of Source Integrity into an existing project on the Integrity Server.<br />

Note: Once a member has been imported, you may not use an older version of Source Integrity to manipulate<br />

its archives.<br />

● To add several files as new members more quickly. Use the si import <strong>com</strong>mand for batch imports of a<br />

directory tree.<br />

Place the files on the server in the project directory before si import is run. The files can safely be removed<br />

after the <strong>com</strong>mand <strong>com</strong>pletion.<br />

Note: To retrieve a dropped member history, use the si addmemberfromarchive <strong>com</strong>mand.<br />

Options<br />

This <strong>com</strong>mand takes the universal options available to all si <strong>com</strong>mands, as well as some general options. See the<br />

options reference page for descriptions.<br />

--archive=filename<br />

sets the archive file name, filename, containing the server-side path and name by which the newly added<br />

member will be archived. This must be an existing archive file - this option does not create a new archive. This<br />

is an advanced option that effectively specifies an archive path to override the default mapping, allowing a<br />

basic form of archive sharing between projects; its use is not re<strong>com</strong>mended except by advanced Source<br />

Integrity administrators.<br />

-r=value<br />

--revision=value<br />

specifies the revision at which the member is to be added. This must be an existing revision in the archive. By<br />

133 of 457


default, the member is added at the latest revision on the main branch.<br />

--author=name<br />

specifies an author name.<br />

--binaryFormat<br />

--textFormat<br />

forces the storage of the member file to occur in binary format or text format. This option overrides the<br />

preferences settings that control default behavior in the application for storage format. See the si setprefs<br />

and si viewprefs <strong>com</strong>mands for more details on preferences.<br />

--devpath=path<br />

identifies the name of the development path.<br />

-d desc<br />

--description=desc<br />

specifies a description for the new member history; this setting and the --descriptionFile option are<br />

mutually exclusive. If specifying a nonmember that has an existing history, this description does not overwrite<br />

an existing description and is ignored.<br />

--descriptionFile=file<br />

specifies a file for obtaining a description to apply to the new member history; this setting and the<br />

--description option are mutually exclusive. If specifying a nonmember that has an existing history, this<br />

description does not overwrite an existing description and is ignored.<br />

--[no]createSubprojects<br />

controls whether to create subprojects for each subdirectory encountered when adding members. This option is<br />

<strong>com</strong>monly used where you anticipate working with a large directory structure, because multiple subprojects are<br />

easier to manage than many subdirectories within one project. For example, specifying:<br />

si import --createSubprojects --description="Button Application"<br />

\buttons\activebutton.c<br />

creates a subproject for the \buttons directory and adds the file activebutton.c. Without the -createSubprojects<br />

option, the file and its path simply would be added to the project in the project directory.<br />

--[no]unexpand<br />

controls whether to unexpand keywords in the member file before checking it into the history. Keyword<br />

expansion is only available in text archives, not binary archives. For descriptions of the Source Integrity<br />

keywords, see the Source Integrity Enterprise User Guide User Guide. Possible keywords are:<br />

$Author$<br />

$CompanyInfo$<br />

$Date$<br />

$Header$<br />

$Id$<br />

$Locker$<br />

$Log$<br />

$Name$<br />

$ProjectName$<br />

$ProjectSetting attribute$<br />

$ProjectRevision$<br />

$RCSfile$<br />

$Revision$<br />

$SandboxSetting attribute$<br />

$Setting attribute$<br />

$Source$<br />

$State$<br />

134 of 457


--cpid=value<br />

--changePackageId=ID<br />

identifies a change package that is notified of this action, for example, 1452:1. Note the following about using<br />

this option:<br />

❍ This option can only be specified if change packages are enabled.<br />

❍ You must specify this option if you have requested to obtain a lock and TrackLocks is enabled, and/or it<br />

is mandatory to specify a change package.<br />

❍ If you have TrackLocks enabled, Source Integrity prompts you with the change package you used when<br />

you checked out the specified member, not the default change package. From the graphical user<br />

interface, you must manually select the change package.<br />

❍ If the integration is enabled, but it is not mandatory to specify a change package, or if no change<br />

package is applicable, you must specify --changePackageId=:none.<br />

❍ The next time you are prompted for a change package ID, the last used change package ID is displayed<br />

by default, if :none was specified or at least one change package was successfully updated from the last<br />

operation.<br />

--[no|confirm]closeCP<br />

closes the change package after <strong>com</strong>mand <strong>com</strong>pletion.<br />

--issueID=value<br />

specifies the issue ID that corresponds to the change package that records the changes.<br />

--[no]defer<br />

controls whether to delay the operation in the project until the deferred operation is submitted. The operation in<br />

the sandbox still takes place immediately.<br />

--[no|confirm]includeFormers<br />

controls whether to include former members when importing.<br />

-R<br />

--[no|confirm]recurse<br />

controls whether to select non-members recursively. Non-members are files that exist in the sandbox directory<br />

but have not previously been added to the server repository.<br />

--exclude=file:pattern,dir:pattern...<br />

specifies a file that contains a glob pattern for excluding members.<br />

--include=file:pattern,dir:pattern...<br />

specifies a file that contains a glob pattern for including members.<br />

monmember...<br />

identifies a specific file to add to your sandbox; use spaces to specify more than one. The file pathnames are<br />

server-side, relative to the project.<br />

Note: All files must be added "in tree", that is, the nonmember must exist in the sandbox directory or a<br />

subdirectory. Shared "out of tree" histories are supported by using the --archive option to point to the "out of<br />

tree" history that you want to associate with the member.<br />

DIAGNOSTICS<br />

See the diagnostics reference page for possible exit status values.<br />

PREFERENCES<br />

Using si setprefs or si viewprefs, you are able to set or view the preference keys for this <strong>com</strong>mand.<br />

135 of 457


SEE ALSO<br />

Commands:<br />

si add, si addmemberfromarchive<br />

Miscellaneous:<br />

ACL, diagnostics, options, preferences<br />

136 of 457


si importproject<br />

imports an external project and registers it on an Integrity Server<br />

SYNOPSIS<br />

si importproject [--[no]openView] [--hostname=server] [--port=number]<br />

[--password=password] [--user=name] [(-?|--usage)] [(-F file|--selectionFile=file)]<br />

[(-N|--no)] [(-Y|--yes)] [--[no]batch] [--cwd=directory] [--forceConfirm=[yes|no]]<br />

[(-g|--gui)] [--quiet] [--settingsUI=[gui|default]] [--status=[none|gui|default]]<br />

[--[no]add] project location...<br />

DESCRIPTION<br />

si importproject imports an external project into the Integrity Server and adds it as a top-level<br />

project. All existing legacy projects must first be imported before further <strong>com</strong>mands can operate on<br />

the project and its members. If you only want to expose a project already in the Source Integrity<br />

repository, such as exposing a subproject as a top-level project, use the si addproject<br />

<strong>com</strong>mand.<br />

This <strong>com</strong>mand would normally be run only by the Source Integrity administrator.<br />

An existing project may have been created by a prior version of Source Integrity, or dropped, or<br />

copied from another server. However, this operation is strictly performed on the Integrity Server --<br />

all archives and projects must have been copied to the appropriate location on the server. They are<br />

NOT copied up from a client.<br />

The processing of this <strong>com</strong>mand may take some time, since it traverses all subprojects in the<br />

imported project, and may perform various operations on them, such as checkpointing.<br />

The Source Integrity administrator may restrict the path names of projects being imported on the<br />

server. This is done through the si.serverRoot property in the si.properties file on the Integrity<br />

Server. If this is set, then any project location given must be under that directory. For details, see<br />

the Integrity Server Administration Guide.<br />

Note:<br />

Options<br />

Once a project has been imported, you may not use an older version of Source Integrity to<br />

manipulate it nor its archives. If for some reason you need to use an older version of Source<br />

Integrity on a project, first use si dropproject before doing so. The project must be reimported<br />

before it can be used again with this version of Source Integrity.<br />

137 of 457


This <strong>com</strong>mand takes the universal options available to all si <strong>com</strong>mands, as well as some general<br />

options. See the options reference page for descriptions.<br />

--[no]openView<br />

controls whether to open the project view after this project is imported and registered on the<br />

server. If --noopenView is used, the project view does not open.<br />

--[no]add<br />

specifies if to add the project to the list of registered projects.<br />

project location...<br />

identifies a location on the Integrity Server for the existing project to be imported.<br />

Regardless of your operating system, all paths are specified here using forward slashes (/)<br />

and should include the name of the project file (typically project.pj). Use spaces to<br />

specify more than one project location.<br />

DIAGNOSTICS<br />

See the diagnostics reference page for possible exit status values.<br />

PREFERENCES<br />

Using si setprefs or si viewprefs, you are able to set or view the preference keys for this<br />

<strong>com</strong>mand.<br />

SEE ALSO<br />

Commands:<br />

si addproject, si checkpoint, si createproject, si createsandbox, si<br />

createsubproject, si dropproject, si importsandbox, si projects, si<br />

viewproject<br />

Miscellaneous:<br />

ACL, diagnostics, options, preferences<br />

138 of 457


si importsandbox<br />

imports an existing sandbox<br />

SYNOPSIS<br />

si importsandbox [--[no]openView] [(-S sandbox|--sandbox=sandbox)]<br />

[--hostname=server] [--port=number] [--password=password] [--user=name]<br />

[(-?|--usage)] [(-F file|--selectionFile=file)] [(-N|--no)] [(-Y|--yes)] [--[no]batch]<br />

[--cwd=directory] [--forceConfirm=[yes|no]] [(-g|--gui)] [--quiet]<br />

[--settingsUI=[gui|default]] [--status=[none|gui|default]] file...<br />

DESCRIPTION<br />

si importsandbox imports an existing sandbox and registers it as a new sandbox on the<br />

Integrity Client. You must correlate this sandbox with a project that already exists on the Integrity<br />

Server, and it is assumed that the project you identify is the project the sandbox was first created<br />

from. A sandbox must first be registered before further <strong>com</strong>mands can operate on the sandbox and<br />

its members.<br />

Options<br />

This <strong>com</strong>mand takes the universal options available to all si <strong>com</strong>mands, as well as some general<br />

options. See the options reference page for descriptions.<br />

--[no]openView<br />

controls whether to open the sandbox view after this sandbox is imported and registered on<br />

the client. If --noopenView is used, the sandbox view does not open.<br />

file...<br />

identifies an existing sandbox file (project.pj) on the MKS Source Integrity client system<br />

to be imported; use spaces to specify more than one.<br />

Note:<br />

Unlike the si createsandbox <strong>com</strong>mand, for si importsandbox you must<br />

include the name of the sandbox file, which is typically project.pj.<br />

DIAGNOSTICS<br />

See the diagnostics reference page for possible exit status values.<br />

PREFERENCES<br />

139 of 457


Using si setprefs or si viewprefs, you are able to set or view the preference keys for this<br />

<strong>com</strong>mand.<br />

SEE ALSO<br />

Commands:<br />

si add, si createproject, si dropsandbox, si importproject, si<br />

sandboxes, si viewsandbox<br />

Miscellaneous:<br />

ACL, diagnostics, options, preferences<br />

140 of 457


si integrations<br />

manages integrations.<br />

SYNOPSIS<br />

si integrations [--action=[list|enable|enableAll|disable|disableAll]] [(-?|--usage)]<br />

[(-F file|--selectionFile=file)] [(-N|--no)] [(-Y|--yes)] [--[no]batch] [--cwd=directory]<br />

[--forceConfirm=[yes|no]] [(-g|--gui)] [--quiet] [--settingsUI=[gui|default]]<br />

[--status=[none|gui|default]] string...<br />

DESCRIPTION<br />

si integrations enables or disables Source Integrity Integrations. You can select from a list of<br />

available IDE integrations and enable or disable them as required to work with your preferred IDE.<br />

There is no requirement to re-install the Integrity Client, but if prompted, you may need to reboot<br />

your <strong>com</strong>puter or restart the IDE for the integration to take effect.<br />

An Integrated Development Environment, or IDE, is a supported development application, such as<br />

Sybase PowerBuilder, that allows you to access Source Integrity functionality by installing the<br />

appropriate extension.<br />

For <strong>com</strong>plete information on using third party integrations with Source Integrity, see the<br />

Integrations User Guide.<br />

Options<br />

This <strong>com</strong>mand takes the universal options available to all si <strong>com</strong>mands, as well as some general<br />

options. See the options reference page for descriptions.<br />

--action=[list|enable|enableAll|disable|disableAll]<br />

specifies the action to perform on the integration. An action must be specified. There is no<br />

default specification for this option, so to list all of the available integrations, use the list flag.<br />

Note: Source Integrity asks you to restart your <strong>com</strong>puter to <strong>com</strong>plete the integration<br />

changes. If you are disabling[enabling] a number of integrations, you do not need to restart<br />

between each si integrations <strong>com</strong>mand. When you have disabled[enabled] all the<br />

required integrations, you can restart your machine.<br />

string...<br />

specifies the integration to perform an action upon.<br />

DIAGNOSTICS<br />

141 of 457


See the diagnostics reference page for possible exit status values.<br />

PREFERENCES<br />

Using si setprefs or si viewprefs, you are able to set or view the preference keys for this<br />

<strong>com</strong>mand.<br />

SEE ALSO<br />

Miscellaneous:<br />

ACL, diagnostics, options, preferences<br />

142 of 457


si loadrc<br />

loads the Integrity Client preferences file<br />

SYNOPSIS<br />

si loadrc [--[no]merge] [--rc=value] [(-?|--usage)] [(-N|--no)] [(-Y|--yes)]<br />

[--[no]batch] [--cwd=directory] [--forceConfirm=[yes|no]] [-F|--selectionFile=value]<br />

DESCRIPTION<br />

si loadrc loads the user's IntegrityClient.rc file, which contains your personal<br />

preferences for configuring the Integrity Client. The IntegrityClient.rc file is loaded when<br />

you start the client; however, this <strong>com</strong>mand reloads the file without restarting the client. If for some<br />

reason your personal IntegrityClient.rc file has changed, this <strong>com</strong>mand will reload your<br />

preferences. Your preferences file shouldn't change, unless you happen to copy someone else's<br />

file or if you happen to restore a backup that you made.<br />

Your administrator can lock certain preferences from the Integrity Server, preventing you from<br />

configuring them using the si setprefs <strong>com</strong>mand. Preferences that are locked -- viewable with<br />

si viewprefs -- display (locked) at the end of the output line. The following preferences can<br />

be locked from the server by editing Source Integrity policies in the Administration Client:<br />

Tip: For information on editing Source Integrity policies, see "Configuring the Integrity Server" in<br />

the Integrity Server Administration Guide.<br />

Preference Affected Commands<br />

branchIfVariant si co , si lock<br />

breakLock si unlock<br />

changePackageID si co, si lock<br />

createBranch si lock<br />

onLock si co<br />

restoreTimestamp<br />

si resync,<br />

si resynccp, si<br />

revert<br />

retainWorkingFile si add, si ci<br />

saveTimestamp si add, si ci<br />

sparse si importsandbox<br />

143 of 457


updateMemberRev si ci<br />

Warning: Do not edit the IntegrityClient.rc file manually, because preferences that appear<br />

more than once in the IntegrityClient.rc file can cause the Integrity Client to behave<br />

unpredictably.<br />

Options<br />

This <strong>com</strong>mand takes the universal options available to all si <strong>com</strong>mands, as well as some general<br />

options. See the options reference page for descriptions.<br />

--[no]merge<br />

controls whether settings from the loaded file should be merged into existing preferences.<br />

--rc=value<br />

identifies the file containing settings for running the Integrity Client. The default is the<br />

IntegrityClient.rc file in your home directory.<br />

DIAGNOSTICS<br />

See the diagnostics reference page for possible exit status values.<br />

PREFERENCES<br />

Using si setprefs or si viewprefs, you are able to set or view the preference keys for this<br />

<strong>com</strong>mand.<br />

SEE ALSO<br />

Commands:<br />

si setprefs, si viewprefs<br />

Miscellaneous:<br />

diagnostics, options, preferences<br />

144 of 457


si locate<br />

displays where a project, subproject, member, or revision is used<br />

SYNOPSIS<br />

si locate [--depth=[current|build|all]] [--devpathscope=[this|others|all]]<br />

[--distinct=[project|devpath|registeredproject]]<br />

[--[no]limittoactiveprojects] [--listfields=field1[:width1],field2[:width2]...]<br />

[--mode=[distinct|list]] [--projectscope=[this|others|all]]<br />

[(-r value|--revision=value)] [--height=value] [--width=value] [-x=value] [-y=value]<br />

[(-P project|--project=project)] [(-S sandbox|--sandbox=sandbox)] [--devpath=path]<br />

[--projectRevision=rev] [--hostname=server] [--port=number] [--password=password]<br />

[--user=name] [(-?|--usage)] [(-N|--no)] [(-Y|--yes)] [--[no]batch] [--cwd=directory]<br />

[--forceConfirm=[yes|no]] [(-g|--gui)] [--quiet] [--settingsUI=[gui|default]]<br />

[--status=[none|gui|default]] member/subproject<br />

DESCRIPTION<br />

As projects grow in <strong>com</strong>plexity, it can be difficult to determine the relationships that Source Integrity<br />

objects--projects, subprojects, and members--have with one another. When working with multiple<br />

development paths and shared subprojects or shared member archives, it be<strong>com</strong>es very important<br />

to understand what areas of a project might be affected by parallel development. Using the si<br />

locate <strong>com</strong>mand, you can locate where a specific Source Integrity object is used in your source<br />

code repository and refine and sort the search results.<br />

For example, you might need to:<br />

● Determine what “active” projects (a project currently under development) a member,<br />

subproject, or registered top-level project is shared into.<br />

● Determine what development paths a selected member or subproject is a part of.<br />

● Determine if a selected member revision is part of a checkpoint.<br />

● Confirm all existing checkpoints for a selected revision before you delete it.<br />

● Display the development path that a corresponding member revision belongs to.<br />

● Display which master projects a selected subproject belongs to.<br />

Source Integrity displays the search results in one of the following modes:<br />

● Distinct Mode provides a high-level view of the information.<br />

● List Mode provides a detailed view of the information.<br />

Key Considerations:<br />

145 of 457


● The si locate <strong>com</strong>mand can only be used in the database repository. Using the<br />

<strong>com</strong>mand in the RCS based repository returns an error message.<br />

● You require the OpenProject permission for the project you are running the si locate<br />

<strong>com</strong>mand from. When the Locate view displays, Source Integrity informs you if there are<br />

additional projects that you do not have permission to view.<br />

● Archive locations are not displayed in the search results.<br />

Options<br />

This <strong>com</strong>mand takes the universal options available to all si <strong>com</strong>mands, as well as some general<br />

options. See the options reference page for descriptions.<br />

--depth=[current|build|all]<br />

specifies the depth of the search. --depth=current searches current project<br />

configurations (normal and variant).--depth=build searches current project<br />

configurations and checkpoints.--depth=all searches current project configurations,<br />

checkpoints, and in between checkpoints.<br />

--devpathscope=[this|others|all]<br />

specifies which development paths to include in the search. --devpathscope=this<br />

searches the current development path. --devpathscope=others searches all<br />

development paths, except the current development path. --devpathscope=all<br />

searches all development paths.<br />

--distinct=[project|devpath|registeredproject]<br />

specifies the information you want displayed in Distinct Mode. This option must be used with<br />

--mode=distinct. --distinct=project lists only distinct project names.-distinct=devpath<br />

lists only development path names.-distinct=registeredproject<br />

lists only registered top-level project names.<br />

--[no]limittoactiveprojects<br />

specifies whether to search projects referenced by current registered top level projects on<br />

the server.<br />

--listfields=field1[:width1],field2[:width2]...<br />

allows you to select fields to be displayed when you use the --mode=list option, specified<br />

in the format field1[:width1],field2[:width2].... Specifying the column [: width] (in pixels) for<br />

each field is optional - widths are only available in the GUI. In the CLI, fields are separated<br />

with a space. This option must be used with --mode=list.<br />

You can display one or more of the following fields:<br />

checkpoints<br />

displays the checkpoints that the object belongs to.<br />

dates<br />

displays the date ranges in which the object exists.<br />

devpath<br />

displays the development paths that the object belongs to.<br />

146 of 457


name<br />

displays the object's path and name.<br />

project<br />

displays the projects that the object belongs to.<br />

revisions<br />

displays the member's revisions.<br />

registeredproject<br />

displays the top-level project that the object belongs to.<br />

--mode=[distinct|list]<br />

specifies the level of detail to display in the search results. --mode=distinct displays<br />

only the projects and/or development paths that contain the object you are searching. This<br />

option must be used with --distinct=[project|devpath|registeredproject]. -mode=list<br />

displays all occurrences of the object in the projects and/or development paths<br />

that contain the object. If you do not specify a mode, --mode=distinct and -distinct=devpath<br />

are used.<br />

--projectscope=[this|others|all]<br />

specifies which projects to search. --projectscope=this searches the current project<br />

and its subprojects.--projectscope=others searches all projects and subprojects,<br />

except the current project.--projectscope=all searches all projects and subprojects.<br />

-r<br />

--revision<br />

specifies the member revision to search.<br />

--height=value<br />

used with the -g or --gui options, specifies the height of the GUI window, in pixels; value<br />

must be a whole number.<br />

--width=value<br />

used with the -g or --gui options, specifies the width of the GUI window, in pixels; value<br />

must be a whole number.<br />

-x value<br />

used with the -g or --gui options, specifies the x location in pixels of the window.<br />

-y value<br />

used with the -g or --gui options, specifies the y location in pixels of the window.<br />

member/subproject<br />

locates where the specified member or subproject is used. If you do not specify a member<br />

or subproject, Source Integrity uses the project specified in -P project|--project=project<br />

or -S sandbox|--sandbox=sandbox.<br />

DIAGNOSTICS<br />

See the diagnostics reference page for possible exit status values.<br />

PREFERENCES<br />

147 of 457


Using si setprefs or si viewprefs, you are able to set or view the preference keys for this<br />

<strong>com</strong>mand.<br />

SEE ALSO<br />

Commands:<br />

si deleterevision, si viewproject, si viewprojecthistory, si<br />

viewhistory<br />

Miscellaneous:<br />

ACL, diagnostics, options, preferences<br />

148 of 457


si lock<br />

locks project members<br />

SYNOPSIS<br />

si lock [--[no|confirm]branch] [--[no|confirm]branchVariant]<br />

[(--cpid ID|--changePackageId=ID)] [--issueId =ID] [(-r rev|--revision=rev)]<br />

[(-R|--[no|confirm]recurse)] [--filter=filteroptions] [(-P project|--project=project)]<br />

[(-S sandbox|--sandbox=sandbox)] [--devpath=path] [--hostname=server]<br />

[--port=number] [--password=password] [--user=name] [(-?|--usage)]<br />

[(-F file|--selectionFile=file)] [(-N|--no)] [(-Y|--yes)] [--[no]batch] [--cwd=directory]<br />

[--forceConfirm=[yes|no]] [(-g|--gui)] [--quiet] [--settingsUI=[gui|default]]<br />

[--status=[none|gui|default]] member...<br />

DESCRIPTION<br />

si lock locks one or more project members. If no members are specified, si lock applies to all<br />

project members. By default, the member revision is locked and not necessarily the working<br />

revision, if in a sandbox.<br />

This is purely a project operation -- if performed in a sandbox, no memory of what revision was<br />

locked is maintained in the sandbox.<br />

Depending on the locking policy configured by your administrator, you may hold a lock on only one<br />

revision of a particular member at a time. It is not an "error" to relock an already locked member.<br />

If the target revision is already locked by a user other than yourself, then specifying the --branch<br />

option creates a branch revision and locks it. Otherwise, you cannot lock the revision at all.<br />

Options<br />

This <strong>com</strong>mand takes the universal options available to all si <strong>com</strong>mands, as well as some general<br />

options. See the options reference page for descriptions.<br />

--[no|confirm]branch<br />

controls whether to create a branch revision if the target revision is already locked by a user<br />

other than yourself.<br />

For details on branch revisions, see the si ci reference page.<br />

--[no|confirm]branchVariant<br />

controls whether to create a branch off of the revision you are locking, if you are working in a<br />

variant sandbox. This is useful for keeping changes in the variant separate from changes<br />

149 of 457


made in the mainline project.<br />

--cpid=ID<br />

--changePackageId=ID<br />

identifies a change package that is notified of this action, for example, 145:2. Note the<br />

following about using this option:<br />

❍ This option can only be specified if change packages are enabled.<br />

❍ You must specify this option if you have requested to obtain a lock and TrackLocks is<br />

enabled, and/or it is mandatory to specify a change package.<br />

❍ If the integration is enabled, but it is not mandatory to specify a change package, or if<br />

no change package is applicable, you must specify --changePackageId=:none.<br />

❍ The next time you are prompted for a change package ID, the last used change<br />

package ID is displayed by default, if :none was specified or at least one change<br />

package was successfully updated from the last operation.<br />

--issueId=ID<br />

identifies an MKS Integrity Manager issue that is notified of this action. This option is<br />

another way of adding members to a change package. If you have an issue assigned to you<br />

that contains one open change package, you can specify the issue ID instead of the change<br />

package ID. This option can only be specified if the Integrity Manager integration is enabled.<br />

See the Integrity Server Administration Guide or your administrator for details on using the<br />

Integrity Manager integration.<br />

member...<br />

identifies a specific member; use spaces to specify more than one member.<br />

DIAGNOSTICS<br />

See the diagnostics reference page for possible exit status values.<br />

PREFERENCES<br />

Using si setprefs or si viewprefs, you are able to set or view the preference keys for this<br />

<strong>com</strong>mand.<br />

SEE ALSO<br />

Commands:<br />

si ci, si co, si edit, si rlog, si unlock<br />

Miscellaneous:<br />

ACL, diagnostics, options, preferences<br />

150 of 457


si locks<br />

displays a user's locks.<br />

SYNOPSIS<br />

si locks [--locker=value] [--fields=field1[:width1],field2[:width2]...] [--height=value]<br />

[--width=value] [-x=value] [-y=value] [--hostname=server] [--port=number]<br />

[--password=password] [--user=name] [(-?|--usage)] [(-F file|--selectionFile=file)]<br />

[(-N|--no)] [(-Y|--yes)] [--[no]batch] [--cwd=directory] [--forceConfirm=[yes|no]]<br />

[(-g|--gui)] [--quiet] [--settingsUI=[gui|default]] [--[no]persist]<br />

[--status=[none|gui|default]]<br />

DESCRIPTION<br />

si locks displays all of a user's locks on the target server.<br />

Options<br />

This <strong>com</strong>mand takes the universal options available to all si <strong>com</strong>mands, as well as some general<br />

options. See the options reference page for descriptions.<br />

--locker=value<br />

specifies the user whose locks are retrieved.<br />

--fields=field1[:width1],field2[:width2]...<br />

The fields available for printing can be one or more of the following:<br />

archive<br />

displays the name of the locked archive.<br />

cpid<br />

displays the change package ID number if it is a lock entry in a change package.<br />

devpath<br />

displays the name of the development path where the lock on the revision was made<br />

from. This information is relevant when the locking policy is set to devpath, allowing a<br />

single user to have a single lock on an archive per development path.<br />

host<br />

displays the hostname of the <strong>com</strong>puter which the lock was performed on.<br />

member<br />

displays the name of the locked member.<br />

project<br />

displays the name and path of the project where the member revision was locked<br />

from. If the member revision was locked from a shared subproject, it is the subproject<br />

151 of 457


name and path that are displayed.<br />

revision<br />

displays the locked revision number.<br />

sandbox<br />

displays the name of the sandbox where the lock on the revision was made, and is<br />

relevant when viewing the information from the machine that locked it.<br />

timestamp<br />

displays the time the archive was locked.<br />

user<br />

displays the user holding the lock.<br />

--height=value<br />

specifies the height of the GUI window in pixels.<br />

--width=value<br />

specifies the width of the GUI window in pixels.<br />

-x=value<br />

specifies the x location of the GUI window in pixels.<br />

-y=value<br />

specifies the y location of the GUI window in pixels.<br />

--[no]persist<br />

controls the persistence of CLI views.<br />

DIAGNOSTICS<br />

See the diagnostics reference page for possible exit status values.<br />

PREFERENCES<br />

Using si setprefs or si viewprefs, you are able to set or view the preference keys for this<br />

<strong>com</strong>mand.<br />

SEE ALSO<br />

Commands:<br />

si archiveinfo, si memberinfo, si mods, si print, si revisioninfo, si<br />

rlog, si sandboxinfo, si viewhistory, si viewlabels, si<br />

viewprojecthistory, si viewsandbox<br />

Miscellaneous:<br />

ACL, diagnostics, options, preferences<br />

152 of 457


si makewritable<br />

makes sandbox members writable<br />

SYNOPSIS<br />

si makewritable [(-R|--[no|confirm]recurse)] [--filter=filteroptions]<br />

[(-S sandbox|--sandbox=sandbox)] [--hostname=server] [--port=number]<br />

[--password=password] [--user=name] [(-?|--usage)] [(-F file|--selectionFile=file)]<br />

[(-N|--no)] [(-Y|--yes)] [--[no]batch] [--cwd=directory] [--forceConfirm=[yes|no]]<br />

[(-g|--gui)] [--quiet] [--settingsUI=[gui|default]] [--status=[none|gui|default]]<br />

sandbox member...<br />

DESCRIPTION<br />

si makewritable makes sandbox members writable. If no members are specified, si<br />

makewritable applies to all sandbox members.<br />

The si makewritable <strong>com</strong>mand makes a working file writable. This option is useful when you<br />

want to work with a particular revision and someone else has the revision checked out, but you do<br />

not want to create a new branch. When the other user has <strong>com</strong>pleted their changes and checked<br />

them in, you can check out the revision, merge your changes with the new revision, and check in<br />

your changes. This option is equivalent to the si co --onLock=makewritable <strong>com</strong>mand.<br />

Options<br />

This <strong>com</strong>mand takes the universal options available to all si <strong>com</strong>mands, as well as some general<br />

options. See the options reference page for descriptions.<br />

sandbox member...<br />

identifies a specific member; use spaces to specify more than one member.<br />

DIAGNOSTICS<br />

See the diagnostics reference page for possible exit status values.<br />

PREFERENCES<br />

Using si setprefs or si viewprefs, you are able to set or view the preference keys for this<br />

<strong>com</strong>mand.<br />

153 of 457


SEE ALSO<br />

Commands:<br />

si ci, si co, si diff, si edit, si lock, si resync, si rlog, si unlock<br />

Miscellaneous:<br />

ACL, diagnostics, options, preferences<br />

154 of 457


si memberinfo<br />

lists member information<br />

SYNOPSIS<br />

si memberinfo [--[no]acl] [--[no]attributes] [--[no]changePackage]<br />

[--[no]labels] [--[no]rule] [(-P project|--project=project)]<br />

[(-S sandbox|--sandbox=sandbox)] [--devpath=path] [--projectRevision=rev]<br />

[--hostname=server] [--port=number] [--password=password] [--user=name]<br />

[(-?|--usage)] [(-N|--no)] [(-Y|--yes)] [--[no]batch] [--cwd=directory]<br />

[--forceConfirm=[yes|no]] [(-g|--gui)] [--quiet] [--settingsUI=[gui|default]]<br />

[--status=[none|gui|default]] member<br />

DESCRIPTION<br />

si memberinfo lists current information about a project member. This includes general<br />

information about the member, and specific information on the member revision. For example:<br />

Member Name: c:\Documentation\Man_Pages\xml_man\si_add.1.xml<br />

Sandbox Name: c:\Documentation\Man_Pages\project.pj<br />

The member archive is shared<br />

Member Revision: 1.7<br />

Created By: sueq on July 11, 2005 - 11:36 AM<br />

State: state_a<br />

Revision <strong>Description</strong>:<br />

Updated for Technical Review<br />

Labels:<br />

TechReview1<br />

Change Package:<br />

ID: 1:1<br />

Summary: Search Engine Fix<br />

Attributes: none<br />

This member does not have a revision rule.<br />

Note: The member archive is shared displays only if the member shares another member's<br />

archive and you are using the database repository.<br />

Options<br />

This <strong>com</strong>mand takes the universal options available to all si <strong>com</strong>mands, as well as some general<br />

options. See the options reference page for descriptions.<br />

155 of 457


--[no]acl<br />

shows ACL information for the member.<br />

--[no]attributes<br />

controls whether to display member attributes. If no attributes exist, Attributes:none is<br />

displayed.<br />

--[no]changePackage<br />

controls whether to display change package information (applies only change packages are<br />

enabled).<br />

--[no]labels<br />

controls whether to display member labels.<br />

--[no]rule<br />

controls whether to display the member revision rule.<br />

member<br />

identifies one specific member.<br />

DIAGNOSTICS<br />

See the diagnostics reference page for possible exit status values.<br />

PREFERENCES<br />

Using si setprefs or si viewprefs, you are able to set or view the preference keys for this<br />

<strong>com</strong>mand.<br />

SEE ALSO<br />

Commands:<br />

si archiveinfo, si mods, si revisioninfo, si rlog, si setmemberrule, si<br />

updatemember<br />

Miscellaneous:<br />

ACL, diagnostics, options, preferences<br />

156 of 457


si merge<br />

merges data from two revisions of a project member into a working file<br />

SYNOPSIS<br />

si merge [--mergeType=[confirm|cancel|automatic|manual]]<br />

[--onMergeConflict=[confirm|cancel|mark|launchtool|highlight|error]] [--outputFile=value]<br />

[-r rev] [--resolve] [(-R|--[no|confirm]recurse)] [--filter=filteroptions]<br />

[(-S sandbox|--sandbox=sandbox)] [--hostname=server] [--port=number]<br />

[--password=password] [--user=name] [(-?|--usage)] [(-F file|--selectionFile=file)]<br />

[(-N|--no)] [(-Y|--yes)] [--[no]batch] [--cwd=directory] [--forceConfirm=[yes|no]]<br />

[(-g|--gui)] [--quiet] [--settingsUI=[gui|default]] [--status=[none|gui|default]]<br />

sandbox member...<br />

DESCRIPTION<br />

si merge merges data from two revisions of a project member against a root revision. By default,<br />

the result overwrites the working file. This operates in a sandbox. You cannot perform a merge on<br />

a project-only basis, since the result is left in your sandbox.<br />

The second -r rev specified is merged with the revision in the current working file. The first<br />

-r rev specified is the root revision. Both the working file revision and the other revision should<br />

have been derived from this root revision. For example, suppose development has branched from<br />

revision 1.3, with maintenance occurring on the 1.3.1 branch. Further suppose the tip of that<br />

branch is revision 1.3.1.3, the headrev member revision is 1.5, and that the revision in the sandbox<br />

is 1.5.<br />

1.5 (headrev)<br />

1.4<br />

1.3.1.3 (maintenance branch tip)<br />

1.3.1.2<br />

1.3.1.1<br />

1.3 (root)<br />

The <strong>com</strong>mand si merge -r 1.3 -r 1.3.1.3 merges the changes in 1.3.1.3 that have occurred<br />

since 1.3, into revision 1.5 in the working file in the sandbox.<br />

si merge is useful for <strong>com</strong>bining separate changes into a checked out revision. Suppose root is<br />

the original, and both headrev and branch tip are modifications of root. Then, si merge <strong>com</strong>bines<br />

both changes.<br />

An overlap occurs if both branches of development (headrev and branch tip) have changes in a<br />

157 of 457


<strong>com</strong>mon segment of lines. Depending on the value used in --onMergeConflict, si merge<br />

displays how many overlaps occurred, and includes both alternatives in the result, delimiting them<br />

as follows:<br />

> file2<br />

If there are overlaps, by default Source Integrity asks you how you want to resolve the conflict. If<br />

you specify --mergeType=automatic and --onMergeConflict=highlight, it is up to you<br />

to determine how to resolve the conflict by editing the result.<br />

Options<br />

This <strong>com</strong>mand takes the universal options available to all si <strong>com</strong>mands, as well as some general<br />

options. See the options reference page for descriptions.<br />

--mergeType=[confirm|cancel|automatic|manual]<br />

specifies how you want to <strong>com</strong>plete the merge.<br />

--mergeType=confirm prompts you to confirm a merge type.<br />

--mergeType=cancel cancels the selected merge.<br />

--mergeType=automatic <strong>com</strong>pletes the merge process without launching the MKS Visual<br />

Merge tool.<br />

Warning: While Source Integrity and MKS Visual Merge are capable of performing<br />

automatic merging, MKS cannot guarantee that the merged results are “correct”. MKS<br />

re<strong>com</strong>mends that you examine and test the merged results before checking them into the<br />

repository.<br />

--mergeType=manual <strong>com</strong>pletes the merge operation through the MKS Visual Merge tool.<br />

The MKS Visual Merge tool launches, displaying the revisions you want to merge. For more<br />

information on the MKS Visual Merge tool, refer to the Source Integrity Enterprise User<br />

Guide.<br />

--onMergeConflict =[confirm|cancel|mark|launchtool|highlight|error]<br />

specifies what to do when conflicts occur during the merge.<br />

--onMergeConflict=confirm prompts you to confirm a merge conflict option.<br />

158 of 457


--onMergeConflict=cancel cancels the merge.<br />

--onMergeConflict=mark marks the working file in your sandbox indicating that merging<br />

is required without <strong>com</strong>pleting all of the merge related tasks. This provides the time to<br />

investigate conflicts, edit, or difference blocks before finishing the merge.<br />

Tip: To display the affected member revisions, use the<br />

si print --filter=unresolvedmerges <strong>com</strong>mand. After you resolve the merge<br />

conflicts, merge the revisions using the si merge --resolve <strong>com</strong>mand.<br />

--onMergeConflict=launchtool launches the MKS Visual Merge tool to resolve the<br />

conflicts, all non-conflicting blocks will already have been applied.<br />

--onMergeConflict=highlight indicates conflicts in the working file with the following<br />

characters: "". You are responsible for manually resolving conflicts in<br />

the working file.<br />

Note: --onMergeConflict=launchtool does not require the -g or --gui options.<br />

--onMergeConflict=error displays an error when a merge conflict is encountered.<br />

--outputFile=value<br />

identifies the location and name of a file that is to contain the result of merging data from two<br />

member revisions. If you do not specify a file, the working file is used.<br />

-r rev<br />

uses a specified revision. value can be a valid revision number or a label.<br />

Specify this option twice to identify the two revisions to be merged; the first instance is the<br />

"old" revision, the second is the "new". The changes needed to make the "old" into the "new"<br />

are then incorporated into the working file or into the --outputFile. If you specify the<br />

-r rev option only once, si merge uses the latest revision on the default branch as the<br />

other revision.<br />

--resolve<br />

merges a previously unresolved merge.<br />

sandbox member...<br />

identifies a specific member; use spaces to specify more than one member.<br />

DIAGNOSTICS<br />

See the diagnostics reference page for possible exit status values.<br />

159 of 457


PREFERENCES<br />

Using si setprefs or si viewprefs, you are able to set or view the preference keys for this<br />

<strong>com</strong>mand.<br />

SEE ALSO<br />

Commands:<br />

si ci, si co, si diff, si mergebranch, si revisioninfo<br />

Miscellaneous:<br />

diagnostics, options, preferences<br />

160 of 457


si mergebranch<br />

merges a branch revision into a single revision<br />

SYNOPSIS<br />

si mergebranch [--[no|confirm]branch] [--[no|confirm]branchVariant]<br />

[--mergeType=[confirm|cancel|automatic|manual]]<br />

[--onMergeConflict=[confirm|cancel|mark|launchtool|highlight|error]]<br />

[--branchRevision=value] [(--cpid ID|--changePackageId=ID)] [--issueId=ID]<br />

[(--[no]lock)] [--targetRevision=value] [(-R|--[no|confirm]recurse)]<br />

[--filter=filteroptions] [(-S sandbox|--sandbox=sandbox)] [--hostname=server]<br />

[--port=number] [--password=password] [--user=name] [(-?|--usage)]<br />

[(-F file|--selectionFile=file)] [(-N|--no)] [(-Y|--yes)] [--[no]batch] [--cwd=directory]<br />

[--forceConfirm=[yes|no]] [(-g|--gui)] [--quiet] [--settingsUI=[gui|default]]<br />

[--status=[none|gui|default]] sandbox member...<br />

DESCRIPTION<br />

si mergebranch allows you to <strong>com</strong>bine the development occurring on different branches by<br />

merging the branched revisions into a single revision.<br />

Source Integrity recognizes cases where a previous merge has occurred, (whether by merging the<br />

branch, automatic merging, or using the MKS Visual Merge and MKS Visual Difference tools), and<br />

merges only changes since the last merge operation. Thus, the first merge branch operation<br />

occurring on a given branch merges all changes throughout the branch. Any subsequent merge<br />

branch operations will merge only changes since the previous merge operation.<br />

Options<br />

This <strong>com</strong>mand takes the universal options available to all si <strong>com</strong>mands, as well as some general<br />

options. See the options reference page for descriptions.<br />

--[no|confirm]branch<br />

specifies whether to create a branch off of the target revision (the member revision that the<br />

working revision is merged into), if it is locked by another user.<br />

--[no|confirm]branchVariant<br />

specifies whether to create a new branch for the merged revision, if the specified variant<br />

does not already have a branch.<br />

--mergeType=[confirm|cancel|automatic|manual]<br />

specifies how you want to <strong>com</strong>plete the merge.<br />

--mergeType=confirm prompts you to confirm a merge type.<br />

161 of 457


--mergeType=cancel cancels the selected merge.<br />

--mergeType=automatic <strong>com</strong>pletes the merge process without launching the MKS Visual<br />

Merge tool.<br />

Warning: While Source Integrity and MKS Visual Merge are capable of performing<br />

automatic merging, MKS cannot guarantee that the merged results are “correct”. MKS<br />

re<strong>com</strong>mends that you examine and test the merged results before checking them into the<br />

repository.<br />

--mergeType=manual <strong>com</strong>pletes the merge operation through the MKS Visual Merge tool.<br />

The MKS Visual Merge tool launches, displaying the revisions you want to merge. For more<br />

information on the MKS Visual Merge tool, refer to the Source Integrity Enterprise User<br />

Guide.<br />

--onMergeConflict=[confirm|cancel|mark|launchtool|highlight|error]<br />

specifies what to do when conflicts occur during the merge.<br />

--onMergeConflict=confirm prompts you to confirm a merge conflict option.<br />

--onMergeConflict=cancel cancels the merge.<br />

--onMergeConflict=mark marks the working file indicating that merging is required<br />

without <strong>com</strong>pleting all of the merge related tasks. This provides the time you may need to<br />

investigate conflicts, edit, or difference blocks before finishing the merge.<br />

--onMergeConflict=launchtool launches the MKS Visual Merge tool to resolve the<br />

conflicts, all non-conflicting blocks will already have been applied.<br />

--onMergeConflict=highlight indicates conflicts in the file with the following characters:<br />

"". You are responsible for manually resolving conflicts in the working<br />

file.<br />

Note: --onMergeConflict=launchtool does not require the -g or --gui options.<br />

--onMergeConflict=error displays an error when a merge conflict is encountered.<br />

--branchRevision=revision<br />

specifies the branch revision that you want to merge into the head revision. If no revision is<br />

specified, the working revision is used.<br />

--cpid=ID<br />

--changePackageId=ID<br />

162 of 457


identifies a change package that is notified of this action, for example, 145:2. Note the<br />

following about using this option:<br />

❍ This option can only be specified if change packages are enabled.<br />

❍ You must specify this option if you have requested to obtain a lock and TrackLocks is<br />

enabled, and/or it is mandatory to specify a change package.<br />

❍ If the Integrity Manager integration is enabled, but it is not mandatory to specify a<br />

change package, or if no change package is applicable, you must specify<br />

--changePackageId=:none.<br />

❍ The next time you are prompted for a change package ID, the last used change<br />

package ID is displayed by default, if :none was specified or at least one change<br />

package was successfully updated from the last operation.<br />

--issueId=ID<br />

identifies an MKS Integrity Manager issue that is notified of this action. This option is<br />

another way of redirecting to a change package. If you have an issue assigned to you that<br />

contains one open change package, you can specify the issue ID instead of the change<br />

package ID. This option can only be specified if the Integrity Manager integration is enabled.<br />

See the Integrity Server Administration Guide or your administrator for details on using the<br />

Integrity Manager integration.<br />

--[no]lock<br />

controls whether to lock the target revision, so that the results of the merge can be checked<br />

in.<br />

--targetRevision=revision|:symbolic<br />

specifies the symbolic name (i.e. member, working, branch, etc.), revision number, or label<br />

of the revision that you want to merge the branch revision into; typically the head revision. If<br />

no revision is specified, the member revision is used.<br />

sandbox member...<br />

identifies a specific member; use spaces to specify more than one member.<br />

DIAGNOSTICS<br />

See the diagnostics reference page for possible exit status values.<br />

PREFERENCES<br />

Using si setprefs or si viewprefs, you are able to set or view the preference keys for this<br />

<strong>com</strong>mand.<br />

SEE ALSO<br />

Commands:<br />

163 of 457


si ci, si diff, si edit, si lock, si merge, si resync, si rlog, si unlock<br />

Miscellaneous:<br />

ACL, diagnostics, options, preferences<br />

164 of 457


si mods<br />

lists changes made to a project since a checkpoint<br />

SYNOPSIS<br />

si mods [--fields=field1[:width1],field2[:width2]...] [(-r rev)] [--[no]showAppliedCPList]<br />

[--[no]showAttrChanges] [--[no]showChangePackages] [--[no]showMemberChanges]<br />

[--[no]showRev<strong>Description</strong>] [--devpath=value] [--projectRevision=value]<br />

[(-R|--[no|confirm]recurse)] [(-P project|--project=project)]<br />

[(-S sandbox|--sandbox=sandbox)] [--hostname=server] [--port=number]<br />

[--password=password] [--user=name] [--height=value] [--width=value] [-x=value]<br />

[-y=value] [(-?|--usage)] [(-F file|--selectionFile=file)] [(-N|--no)] [(-Y|--yes)]<br />

[--[no]batch] [--cwd=directory] [--forceConfirm=[yes|no]] [(-g|--gui)] [--quiet]<br />

[--settingsUI=[gui|default]] [--status=[none|gui|default]]<br />

DESCRIPTION<br />

si mods displays modifications to a project between checkpoints or between a checkpoint and the<br />

working project.<br />

Options<br />

This <strong>com</strong>mand takes the universal options available to all si <strong>com</strong>mands, as well as some general<br />

options. See the options reference page for descriptions.<br />

--fields=field1[:width1],field2[:width2]...<br />

allows you to select fields to be printed, specified in the format<br />

field1[:width1],field2[:width2].... Specifying the column [:width] (in pixels) for each field is<br />

optional - widths are only available with the -g or --gui options. Under the CLI the fields<br />

are separated with a space.<br />

The fields available can be one or more of the following:<br />

change<br />

displays details of changes made to project members.<br />

name<br />

displays the member name.<br />

-r rev<br />

uses a specified revision of the project. rev can be a valid revision number or label. The -r<br />

option may occur twice; if the second is not specified, the <strong>com</strong>parison is against the working<br />

project. If both revisions are not specified, the first revision is the tip of the trunk in a normal<br />

project, or the project revision when working in a variant sandbox. For example, simply<br />

165 of 457


using si mods shows all the changes in the current project since the last checkpoint.<br />

--[no]showAppliedCPList<br />

controls whether to show change packages applied to a project via si applycp or si<br />

resynccp.<br />

For more information on applying change packages, see si applycp.<br />

--[no]showAttrChanges<br />

controls whether to show the member attribute changes.<br />

--[no]showMemberChanges<br />

controls whether to show member changes.<br />

--[no]showRev<strong>Description</strong><br />

controls whether to show the revision description of new revisions that have been added.<br />

--[no]showChangePackages<br />

controls whether to show the change packages that correspond to member operations.<br />

Change package information displayed is drawn from the modifications calculated from the<br />

checkpoint <strong>com</strong>parison.<br />

The By Change Package panel displays the following information:<br />

❍ ID displays the change package ID for change packages that contain entries with<br />

member changes between project revisions<br />

❍ Summary displays the change package summary for change packages that contain<br />

entries with member changes between project revisions.<br />

Modifications that are not associated with a change package (unresolved) are displayed in<br />

the bottom frame of the By Change Package panel. Where possible, the member or project<br />

name is displayed with full path information. The following are reasons why modifications<br />

can appear in the bottom frame:<br />

❍ The change package entry is missing; either because one was not recorded for the<br />

member operation, or the entry was discarded.<br />

❍ The operation that made the modification cannot use a change package, for example,<br />

adding a subproject.<br />

❍ The project state captures <strong>com</strong>pared are from different development paths.<br />

Pending change package entries do not appear in the By Change Package panel (GUI).<br />

-R<br />

--[no|confirm]recurse<br />

controls whether to recurse into subprojects that are determined to be in <strong>com</strong>mon between<br />

the two projects.<br />

--height=value<br />

specifies the height of the GUI window, in pixels; value must be a whole number.<br />

--width=value<br />

166 of 457


specifies the width of the GUI window, in pixels; value must be a whole number.<br />

-x=value<br />

specifies the x location of the GUI window in pixels.<br />

-y=value<br />

specifies the y location of the GUI window in pixels.<br />

DIAGNOSTICS<br />

See the diagnostics reference page for possible exit status values.<br />

PREFERENCES<br />

Using si setprefs or si viewprefs, you are able to set or view the preference keys for this<br />

<strong>com</strong>mand.<br />

SEE ALSO<br />

Commands:<br />

si appendrevdesc, si archiveinfo, si checkpoint, si ci, si co, si diff, si<br />

memberinfo, si merge, si projectinfo, si revisioninfo, si rlog, si<br />

sandboxinfo, si updatearchive, si updaterevision, si viewhistory<br />

Miscellaneous:<br />

ACL, diagnostics, options, preferences<br />

167 of 457


si move<br />

moves one or more project members between projects, or between directories in a single<br />

project<br />

SYNOPSIS<br />

si move [(--cpid ID|--changePackageId=ID)]<br />

[--[no|confirm]closeCP] [--[no]confirm] [--[no]defer] [-f] [--issueId=ID]<br />

[--[no]moveWorkingFile] [--[no|confirm]overwrite] [--[no]createSubprojects]<br />

[--targetDevpath=value] [--targetDir=value] [--targetProject=value]<br />

[--targetSandbox=value] [--filter=filteroptions] [(-P project|--project=project)]<br />

[(-S sandbox|--sandbox=sandbox)] [--devpath=path] [--hostname=server]<br />

[--port=number] [--password=password] [--user=name] [(-?|--usage)]<br />

[(-F file|--selectionFile=file)] [(-N|--no)] [(-Y|--yes)] [--[no]batch] [--cwd=directory]<br />

[--forceConfirm=[yes|no]] [(-g|--gui)] [--quiet] [--settingsUI=[gui|default]]<br />

[--status=[none|gui|default]] member...<br />

DESCRIPTION<br />

As software designs and project structures change, it may be<strong>com</strong>e necessary to move one or more<br />

members between projects, variants of the same project, or directories in a project.<br />

Moving a member performs a drop in the source location and an add in the target location, creating<br />

a new revision in the existing archive. The member’s archive remains in its original location in the<br />

repository so that change packages, member histories, and project histories continue to work. If<br />

the move is performed with a change package, the member is added as a single Move entry in the<br />

change package. If you are moving multiple members, any <strong>com</strong>mon directory prefix shared by the<br />

members is automatically removed during the move.<br />

Key Considerations<br />

● Moving members between projects on different servers is not supported.<br />

● You can perform deferred member moves only if both the source and target locations are<br />

sandboxes.<br />

● si move does not work recursively on subprojects. To move one or more subprojects, use<br />

the si movesubproject <strong>com</strong>mand.<br />

● Source Integrity detects whether any ACLs exist in the tree defined by the source project,<br />

the target project, and the <strong>com</strong>mon root between them (or the global ACL, if there is no<br />

<strong>com</strong>mon root). If any ACLs are found, Source Integrity warns you so you can manually<br />

make any required adjustments to the ACLs after the move is <strong>com</strong>plete.<br />

168 of 457


Options<br />

This <strong>com</strong>mand takes the universal options available to all si <strong>com</strong>mands, as well as some general<br />

options. See the options reference page for descriptions.<br />

--cpid=ID<br />

--changePackageId=ID<br />

identifies a change package that is notified of this action, for example, 145:2. Note the<br />

following about using this option:<br />

❍ This option can only be specified if change packages are enabled.<br />

❍ You must specify this option if you have requested to obtain a lock and TrackLocks is<br />

enabled, and/or it is mandatory to specify a change package.<br />

❍ If the Integrity Manager integration is enabled, but it is not mandatory to specify a<br />

change package, or if no change package is applicable, you must specify<br />

--changePackageId=:none.<br />

❍ The next time you are prompted for a change package ID, the last used change<br />

package ID is displayed by default, if :none was specified or at least one change<br />

package was successfully updated from the last operation.<br />

--[no|confirm]closeCP<br />

controls whether to close the associated change package.<br />

--nocloseCP means do not close the change package.<br />

--confirmcloseCP means ask before closing the change package.<br />

--closeCP always closes the change package.<br />

--[no]confirm<br />

controls whether to confirm the move before proceeding.<br />

--[no]defer<br />

controls whether to delay the move operation in the project until the deferred operation is<br />

submitted. The move operation in the sandbox still takes place immediately. This option is<br />

available only if the source and target are sandboxes.<br />

-f<br />

forces the move without confirmation.<br />

--issueId=ID<br />

identifies an MKS Integrity Manager issue that is notified of this action. This option is<br />

another way of redirecting to a change package. If you have an issue assigned to you that<br />

contains one open change package, you can specify the issue ID instead of the change<br />

package ID. This option can only be specified if the Integrity Manager Integration is enabled.<br />

See the Integrity Server Administration Guide or your administrator for details on using the<br />

Integrity Manager integration.<br />

--[no|confirm]overwrite<br />

controls whether to overwrite the working file if it exists. This option is valid only if you are<br />

169 of 457


moving one or more members from a source sandbox to a target sandbox.<br />

--[no]moveWorkingFile<br />

controls whether to move the working file into the sandbox immediately. This option is valid<br />

only if you are moving one or more members from a source sandbox to a target sandbox.<br />

--[no]createSubprojects<br />

controls whether to create subprojects in existing directories that do not contain subprojects.<br />

--targetDevpath=value<br />

specifies the target development path (for variant projects).<br />

--targetDir=value<br />

specifies the subdirectory in the destination project or sandbox’s directory that you want to<br />

move the member(s) to.<br />

--targetSandbox=value<br />

specifies the name of the target sandbox (can be used as a project redirector).<br />

--targetProject=value<br />

specifies the name of the target project.<br />

member...<br />

identifies a member to move; use spaces to specify more than one member.<br />

DIAGNOSTICS<br />

See the diagnostics reference page for possible exit status values.<br />

PREFERENCES<br />

Using si setprefs or si viewprefs, you are able to set or view the preference keys for this<br />

<strong>com</strong>mand.<br />

SEE ALSO<br />

Commands:<br />

si co, si rename, si movesubproject<br />

Miscellaneous:<br />

ACL, diagnostics, options, preferences<br />

170 of 457


si movesubproject<br />

moves a subproject between projects or between directories of a single project<br />

SYNOPSIS<br />

si movesubproject [--[no]confirm] [--[no]createSubprojects] [-f]<br />

[--moveWorkingFiles=[none|members|all]] [--[no|confirm]overwrite]<br />

[--targetDevpath=value] [--targetDir=value] [--targetProject=value]<br />

[--targetSandbox=value] [(-P project|--project=project)]<br />

[(-S sandbox|--sandbox=sandbox)] [--devpath=path] [--hostname=server]<br />

[--port=number] [--password=password] [--user=name] [(-?|--usage)]<br />

[(-F file|--selectionFile=file)] [(-N|--no)] [(-Y|--yes)] [--[no]batch] [--cwd=directory]<br />

[--forceConfirm=[yes|no]] [(-g|--gui)] [--quiet] [--settingsUI=[gui|default]]<br />

[--status=[none|gui|default]] subproject or subsandbox<br />

DESCRIPTION<br />

To meet the needs of changing project configurations, you can move one or more subprojects, and<br />

all of its members and sub-subprojects, between projects, and/or directories in a single project, or<br />

variants of the same project on the same Integrity Server.<br />

When a subproject is moved, it behaves like a shared subproject. The subproject in the new<br />

location continues to be backed by the underlying subproject in the old location and the path and<br />

name of the subproject file in the repository remains the same. Any external references (ACL<br />

names, event triggers, policy statements) to the moved subproject continue to work because they<br />

are based on the subproject’s original name; however, a subproject that is moved into a new<br />

project hierarchy continues to inherit ACLs from its original hierarchy and not from the new parent<br />

project. The moved subproject also retains its configuration type (normal, variant, build). If you are<br />

moving multiple subprojects, any <strong>com</strong>mon directory prefix shared by the subprojects is<br />

automatically removed during the move.<br />

Before using si movesubproject, note the following:<br />

❍ Moving subprojects between projects on different servers is not supported.<br />

❍ The moved subproject inherits the project or directory ACLs from its original location. You<br />

cannot apply the ACLs from the new location to the subproject.<br />

❍ The path and name of the subproject file in the repository is permanently reserved. If you<br />

attempt to create a new subproject using the moved subproject’s path and name in the<br />

repository, you are prompted to add the existing subproject. If you answer no, the create<br />

subproject operation exits without providing you with the option of creating a subproject with<br />

a different path and name.<br />

❍ Deferred and pending subproject moves are not supported.<br />

171 of 457


❍ You can move one or more subprojects across directories within a single project.<br />

❍ Moved subprojects are not displayed as shared in a Sandbox or Project view unless the<br />

subproject was shared before the move.<br />

❍ When you move one or more subprojects, you cannot co-locate subprojects in the same<br />

directory. If you want to co-locate an existing subproject with another subproject, use the si<br />

sharesubproject <strong>com</strong>mand on the subproject you want to move, followed by si<br />

dropsubproject in the original location.<br />

Options<br />

This <strong>com</strong>mand takes the universal options available to all si <strong>com</strong>mands, as well as some general<br />

options. See the options reference page for descriptions.<br />

--[no]confirm<br />

controls whether to confirm the move before proceeding.<br />

--[no]createSubprojects<br />

controls whether to create subprojects in existing directories that do not contain subprojects.<br />

-f<br />

force the move without confirmation.<br />

--moveWorkingFiles=[none|members|all]<br />

controls whether to move existing working files in the subproject. This option is valid only if<br />

you are moving one or more subprojects from a source sandbox to a target sandbox.<br />

--[no|confirm]overwrite<br />

controls whether to confirm before overwriting any existing working files that exist in the new<br />

location. This option is valid only if you are moving one or more subprojects from a source<br />

sandbox to a target sandbox.<br />

--targetDevpath=value<br />

specifies the target development path (for variant projects).<br />

--targetDir=value<br />

specifies the subdirectory in the destination project or sandbox’s directory that you want to<br />

move the subproject(s) to.<br />

--targetProject=value<br />

specifies the name of the target project.<br />

--targetSandbox=value<br />

specifies the name of the target sandbox (can be used as a project redirector).<br />

subproject or subsandbox<br />

identifies a subproject or subsandbox to move; use spaces to specify more than one<br />

subproject<br />

DIAGNOSTICS<br />

See the diagnostics reference page for possible exit status values.<br />

172 of 457


PREFERENCES<br />

Using si setprefs or si viewprefs, you are able to set or view the preference keys for this<br />

<strong>com</strong>mand.<br />

SEE ALSO<br />

Commands:<br />

si move, si sharesubproject, si dropsubproject<br />

Miscellaneous:<br />

ACL, diagnostics, options, preferences<br />

173 of 457


si opencp<br />

reopens a change package<br />

SYNOPSIS<br />

si opencp [--hostname=server] [--port=number] [--password=password] [--user=name]<br />

[(-?|--usage)] [(-Ffile|--selectionFile=file)] [(-N|--no)] [(-Y|--yes)] [--[no]batch]<br />

[--cwd=directory] [--forceConfirm=[yes|no]] [(-g|--gui)] [--quiet]<br />

[--settingsUI=[gui|default]] [--status=[none|gui|default]] issue|issue:change package id...<br />

DESCRIPTION<br />

si opencp reopens a change package. A change package is in the Open state when it is first<br />

created. This <strong>com</strong>mand is useful for reopening a change package after it has been submitted.<br />

The open state is the only state where you can add new entries to a change package. As part of<br />

the review workflow, change packages in the following states can be reopened: CommitFailed,<br />

Rejected, and Discarded.<br />

Caution: Only a Change Package Administrator can reopen a change package in the Closed<br />

state. Modifying closed change package contents can <strong>com</strong>promise the integrity of the repository.<br />

Options<br />

This <strong>com</strong>mand takes the universal options available to all si <strong>com</strong>mands, as well as some general<br />

options. See the options reference page for descriptions.<br />

issue...<br />

issue:change package id...<br />

issue identifies a specific issue that contains all change packages that you want to open;<br />

use spaces to specify more than one issue.<br />

issue:change package id identifies a specific change package to open; use spaces to<br />

specify more than one change package.<br />

DIAGNOSTICS<br />

See the diagnostics reference page for possible exit status values.<br />

PREFERENCES<br />

174 of 457


Using si setprefs or si viewprefs, you are able to set or view the preference keys for this<br />

<strong>com</strong>mand.<br />

SEE ALSO<br />

Commands:<br />

si cpissues , si createcp, si viewcps, si acceptcp, si rejectcp, si<br />

discardcp<br />

Miscellaneous:<br />

ACL, diagnostics, options, preferences<br />

175 of 457


si print<br />

displays member information<br />

SYNOPSIS<br />

si print [--format=value] [--headerFormat=value] [--noFormat] [--noHeaderFormat]<br />

[--noTrailerFormat] [(-r rev|--revision=rev)] [--range=value]<br />

[--trailerFormat=value] [--fields=field1[:width1],field2[:width2]...] [--height=value]<br />

[--width=value] [-x value] [-y value] [(-R|--[no|confirm]recurse)]<br />

[--filter=filteroptions] [(-P project|--project=project)] [(-S sandbox|--sandbox=sandbox)]<br />

[--devpath=path] [--projectRevision=rev] [--hostname=server] [--port=number]<br />

[--password=password] [--user=name] [(-?|--usage)] [(-F file|--selectionFile=file)]<br />

[(-N|--no)] [(-Y|--yes)] [--[no]batch] [--cwd=directory] [--forceConfirm=[yes|no]]<br />

[--[no]persist] [--quiet] member...<br />

DESCRIPTION<br />

si print displays member information on the standard output. If you do not specify any<br />

members, si print displays all project members. This <strong>com</strong>mand is the same as si rlog;<br />

however, it has a different set of default options. In particular, --noFormat and<br />

--noTrailerFormat are specified, and --headerFormat=value produces one line per<br />

member.<br />

Options<br />

See the si rlog reference page for descriptions of all options applicable to si print. This<br />

<strong>com</strong>mand takes the universal options available to all si <strong>com</strong>mands, as well as some general<br />

options - these are described on the options reference page.<br />

Note: The --headerFormat=value and --trailerFormat=value options only accept global<br />

fields. See si rlog for the list of global fields. Revision specific fields, such as State, cannot be<br />

used with these options.<br />

DIAGNOSTICS<br />

See the diagnostics reference page for possible exit status values.<br />

PREFERENCES<br />

Using si setprefs or si viewprefs, you are able to set or view the preference keys for this<br />

176 of 457


<strong>com</strong>mand.<br />

SEE ALSO<br />

Commands:<br />

si archiveinfo, si diff, si memberinfo, si mods, si projectinfo, si<br />

report, si revisioninfo, si rlog, si sandboxinfo, si viewhistory<br />

Miscellaneous:<br />

ACL, diagnostics, options, preferences<br />

177 of 457


si projectinfo<br />

lists project information<br />

SYNOPSIS<br />

si projectinfo [--[no]acl] [--[no]attributes] [--[no]devpaths]<br />

[(-P project|--project=project)] [(-S sandbox|--sandbox=sandbox)] [--devpath=path]<br />

[--projectRevision=rev] [--hostname=server] [--port=number] [--password=password]<br />

[--user=name] [(-?|--usage)] [(-F file|--selectionFile=file)] [(-N|--no)] [(-Y|--yes)]<br />

[--[no]batch] [--cwd=directory] [--forceConfirm=[yes|no]] [(-g|--gui)] [--quiet]<br />

[--settingsUI=[gui|default]] [--status=[none|gui|default]]<br />

DESCRIPTION<br />

si projectinfo displays current project information, for example:<br />

Options<br />

Project Name: /rd/doc/MKS_Source_Integrity/Man_Pages/project.pj<br />

Server: server.mks.<strong>com</strong>:7001<br />

Revision: 1.1<br />

Last Checkpointed: Jul 18, 2002 - 4:14 PM<br />

Members: 83<br />

Subprojects: 0<br />

<strong>Description</strong>: Documentation Set<br />

Attributes:<br />

rd=/rd<br />

Development Paths:<br />

Variant Project for Docs Man Pages (1.1)<br />

This <strong>com</strong>mand takes the universal options available to all si <strong>com</strong>mands, as well as some general<br />

options. See the options reference page for descriptions.<br />

--[no]acl<br />

shows ACL information for the project.<br />

--[no]attributes<br />

controls whether to display project attributes.<br />

--[no]devpaths<br />

controls whether to display project development paths.<br />

--projectRevision=rev<br />

displays project information ouput for a single revision of the project history.<br />

Note:<br />

178 of 457


DIAGNOSTICS<br />

The development paths (variants) may only be displayed through the master project,<br />

since you cannot have variants of variants.<br />

See the diagnostics reference page for possible exit status values.<br />

PREFERENCES<br />

Using si setprefs or si viewprefs, you are able to set or view the preference keys for this<br />

<strong>com</strong>mand.<br />

SEE ALSO<br />

Commands:<br />

si viewproject, si viewprojecthistory<br />

Miscellaneous:<br />

ACL, diagnostics, options, preferences<br />

179 of 457


si projects<br />

lists projects on the Integrity Server<br />

SYNOPSIS<br />

si projects [--[no]displaySubs] [--height=value] [--manage] [--width=value]<br />

[-x value] [-y value] [--hostname=server] [--port=number] [--password=password]<br />

[--user=name] [(-?|--usage)] [(-F file|--selectionFile=file)] [(-N|--no)] [(-Y|--yes)]<br />

[--[no]batch] [--cwd=directory] [--forceConfirm=[yes|no]] [(-g|--gui)] [--[no]persist]<br />

[--quiet] [--settingsUI=[gui|default]] [--status=[none|gui|default]]<br />

DESCRIPTION<br />

si projects displays a list of projects registered to the currently connected Integrity Server. A<br />

registered project is currently visible on the Integrity Server. A project dropped with the si<br />

dropproject <strong>com</strong>mand still exists on the Integrity Server, but does not display in the list of<br />

registered projects.<br />

Options<br />

This <strong>com</strong>mand takes the universal options available to all si <strong>com</strong>mands, as well as some general<br />

options. See the options reference page for descriptions.<br />

--[no]displaySubs<br />

controls whether to display subprojects. By default, only top level registered projects are<br />

displayed.<br />

--height=value<br />

used with the -g or --gui options, specifies the height of the projects view window, in<br />

pixels; value must be a whole number.<br />

--manage<br />

enables the project manager view for those using the -g or --gui options.<br />

--width=value<br />

used with the -g or --gui> options, specifies the width of the projects view window, in<br />

pixels; value must be a whole number.<br />

-x value<br />

used with the -g or --gui options, specifies the x location in pixels of the window.<br />

-y value<br />

used with the -g or --gui options, specifies the y location in pixels of the window.<br />

--[no]persist<br />

controls whether this presentation of information should continue to be updated as new<br />

information be<strong>com</strong>es available. --nopersist forces a static "snapshot" of information,<br />

while --persist gives real-time updates.<br />

180 of 457


DIAGNOSTICS<br />

See the diagnostics reference page for possible exit status values.<br />

PREFERENCES<br />

Using si setprefs or si viewprefs, you are able to set or view the preference keys for this<br />

<strong>com</strong>mand.<br />

SEE ALSO<br />

Commands:<br />

si createproject, si dropproject, si importproject, si projectinfo, si<br />

viewproject, si viewprojecthistory<br />

Miscellaneous:<br />

ACL, diagnostics, options, preferences<br />

181 of 457


si promote<br />

promotes the state of a member<br />

SYNOPSIS<br />

si promote [(-r rev|--revision=rev)] [(-s state|--state=state)]<br />

[(-R|--[no|confirm]recurse)] [--filter=filteroptions] [(-P project|--project=project)]<br />

[(-S sandbox|--sandbox=sandbox)] [--devpath=path] [--projectRevision=rev]<br />

[--hostname=server] [--port=number] [--password=password] [--user=name]<br />

[(-?|--usage)] [(-F file|--selectionFile=file)] [(-N|--no)] [(-Y|--yes)] [--[no]batch]<br />

[--cwd=directory] [--forceConfirm=[yes|no]] [(-g|--gui)] [--quiet]<br />

[--settingsUI=[gui|default]] [--status=[none|gui|default]] member...<br />

DESCRIPTION<br />

si promote promotes a project member to a higher state of development. A state is a textual<br />

description, defined by the administrator, used to classify the condition of a revision in a history. If<br />

no state is assigned to a revision at check-in, a default value of Exp (for Experimental) is used.<br />

See the Integrity Server Administration Guide for details on setting up states.<br />

At particular milestones, project members are ready to move to the next state of their development<br />

cycle (for example, from Development to Testing). This is done through states and their promotion.<br />

Note: Promoting members is for historical purposes only. To more effectively control project<br />

workflow, MKS re<strong>com</strong>mends using the Integrity Manager integration.<br />

Options<br />

This <strong>com</strong>mand takes the universal options available to all si <strong>com</strong>mands, as well as some general<br />

options. See the options reference page for descriptions.<br />

-s state<br />

--state=state<br />

specifies the target state to be set for the promoted member. If no state is specified, the<br />

member is promoted to the next state.<br />

member...<br />

identifies a specific member; use spaces to specify more than one member.<br />

DIAGNOSTICS<br />

See the diagnostics reference page for possible exit status values.<br />

182 of 457


PREFERENCES<br />

Using si setprefs or si viewprefs, you are able to set or view the preference keys for this<br />

<strong>com</strong>mand.<br />

SEE ALSO<br />

Commands:<br />

si demote, si demoteproject, si promoteproject<br />

Miscellaneous:<br />

ACL, diagnostics, options, preferences<br />

183 of 457


si promoteproject<br />

promotes the state of a project<br />

SYNOPSIS<br />

si promoteproject [--[no|confirm]force] [(-s state|--state=state)]<br />

[(-P project|--project=project)] [(-S sandbox|--sandbox=sandbox)] [--devpath=path]<br />

[--projectRevision=rev] [--hostname=server] [--port=number] [--password=password]<br />

[--user=name] [(-?|--usage)] [(-N|--no)] [(-Y|--yes)] [--[no]batch] [--cwd=directory]<br />

[--forceConfirm=[yes|no]] [(-g|--gui)] [--quiet] [--settingsUI=[gui|default]]<br />

[--status=[none|gui|default]]<br />

DESCRIPTION<br />

si promoteproject promotes a project to a higher state of development. A state is a textual<br />

description, defined by the administrator, used to classify the condition of a revision in a history. If<br />

no state is assigned to a revision at check-in, a default value of Exp (for Experimental) is used.<br />

See the Integrity Server Administration Guide for details on setting up states.<br />

Just as you can with a project member, you can promote the project itself (change its state, in<br />

other words). This can assist in management of an entire project through a development cycle,<br />

especially if the promotion functions are restricted to key project personnel. Normally, you promote<br />

a project (set its state) when you si checkpoint it, but you can do so at any time. Only the<br />

project is promoted, not the members of the project.<br />

Note: Promoting projects is for historical purposes only. To more effectively control project<br />

workflow, MKS re<strong>com</strong>mends using the Integrity Manager integration.<br />

Options<br />

This <strong>com</strong>mand takes the universal options available to all si <strong>com</strong>mands, as well as some general<br />

options. See the options reference page for descriptions.<br />

--[no|confirm]force<br />

controls whether to force promotion of a project even if members have been changed.<br />

-s state<br />

--state=state<br />

specifies the target state to be set for the promoted project. If no state is specified, the<br />

project is promoted to the next state.<br />

DIAGNOSTICS<br />

184 of 457


See the diagnostics reference page for possible exit status values.<br />

PREFERENCES<br />

Using si setprefs or si viewprefs, you are able to set or view the preference keys for this<br />

<strong>com</strong>mand.<br />

SEE ALSO<br />

Commands:<br />

si demote, si demoteproject, si promote<br />

Miscellaneous:<br />

ACL, diagnostics, options, preferences<br />

185 of 457


si rejectcp<br />

rejects a change package<br />

SYNOPSIS<br />

si rejectcp [--<strong>com</strong>ments=value] [--<strong>com</strong>mentsFile=value]<br />

[--reviewer=[user|group:|super]] [--hostname=server] [--port=number]<br />

[--password=password] [--user=name] [(-?|--usage)] [(-Ffile|--selectionFile=file)]<br />

[(-N|--no)] [(-Y|--yes)] [--[no]batch] [--cwd=directory] [--forceConfirm=[yes|no]]<br />

[(-g|--gui)] [--quiet] [--settingsUI=[gui|default]] [--status=[none|gui|default]]<br />

issue|issue:change package id...<br />

DESCRIPTION<br />

si rejectcp rejects a change package under review.<br />

If a reviewer of a change package determines that additional development must be <strong>com</strong>pleted to<br />

resolve an issue, the reviewer can reject the change package. A single reviewer rejection is<br />

enough to reject a change package, even if there are multiple reviewers. The creator of the change<br />

package can reject it without being listed as a reviewer.<br />

An e-mail notification of the change package’s rejection is sent to the reviewers and creator. From<br />

the Rejected state, the change package can be discarded, or reopened.<br />

Options<br />

This <strong>com</strong>mand takes the universal options available to all si <strong>com</strong>mands, as well as some general<br />

options. See the options reference page for descriptions.<br />

--<strong>com</strong>ments=value<br />

specifies <strong>com</strong>ments recorded in the review log with the vote.<br />

--<strong>com</strong>mentsFile=value<br />

specifies a text file that contains the <strong>com</strong>ments to be recorded in the review log with the<br />

vote.<br />

--reviewer=[user|group:|super|all]<br />

specifies the capacity in which you are rejecting the change package.<br />

user<br />

casts a vote as an individual reviewer in the reviewer list.<br />

group:<br />

casts a vote on behalf of the entire group (only one user from a group is necessary to<br />

vote on behalf of the entire group).<br />

186 of 457


super<br />

an overriding reject vote. A super reviewer is not required to be a listed reviewer for<br />

the change package. You must have the SuperReviewer permission to use this<br />

option.<br />

issue...<br />

issue:change package id...<br />

issue identifies a specific issue that contains all submitted change packages that you want<br />

to reject; use spaces to specify more than one issue.<br />

issue:change package id identifies a specific change package to reject; use spaces to<br />

specify more than one change package.<br />

DIAGNOSTICS<br />

See the diagnostics reference page for possible exit status values.<br />

PREFERENCES<br />

Using si setprefs or si viewprefs, you are able to set or view the preference keys for this<br />

<strong>com</strong>mand.<br />

SEE ALSO<br />

Commands:<br />

si co, si cpissues , si createcp, si viewcps si acceptcp, si opencp, si<br />

discardcp<br />

Miscellaneous:<br />

ACL, diagnostics, options, preferences<br />

187 of 457


si rename<br />

renames an existing project member<br />

SYNOPSIS<br />

si rename [(--cpid ID|--changePackageId=ID)]<br />

[--[no|confirm]closeCP] [--[no]confirm] [--[no]defer] [-f] [--issueId=ID]<br />

[(--newName=value)] [--[no|confirm]overwrite] [--[no]renameWorkingFile]<br />

[--filter=filteroptions] [(-P project|--project=project)] [(-S sandbox|--sandbox=sandbox)]<br />

[--devpath=path] [--projectRevision=rev] [--hostname=server] [--port=number]<br />

[--password=password] [--user=name] [(-?|--usage)] [(-F file|--selectionFile=file)]<br />

[(-N|--no)] [(-Y|--yes)] [--[no]batch] [--cwd=directory] [--forceConfirm=[yes|no]]<br />

[(-g|--gui)] [--quiet] [--settingsUI=[gui|default]] [--status=[none|gui|default]] member...<br />

DESCRIPTION<br />

si rename renames an existing project member. This <strong>com</strong>mand only changes the basename of<br />

the member and cannot be used to move the member into a different directory or project. To move<br />

members, use the si move <strong>com</strong>mand.<br />

Options<br />

This <strong>com</strong>mand takes the universal options available to all si <strong>com</strong>mands, as well as some general<br />

options. See the options reference page for descriptions.<br />

Before using si rename, note the following:<br />

❍ You can only rename members within a directory. You cannot rename a member and move<br />

it to a different directory or project.<br />

❍ Renaming a locked revision in a variant project moves the lock to the duplicate revision,<br />

even if the lock exists in the master project.<br />

--cpid=ID<br />

--changePackageId=ID<br />

identifies a change package that is notified of this action, for example, 145:2. Note the<br />

following about using this option:<br />

❍ This option can only be specified if change packages are enabled.<br />

❍ You must specify this option if TrackLocks is enabled, and/or it is mandatory to<br />

specify a change package.<br />

❍ If the Integrity Manager integration is enabled, but it is not mandatory to specify a<br />

change package, or if no change package is applicable, you must specify<br />

188 of 457


--changePackageId=:none.<br />

❍ The next time you are prompted for a change package ID, the last used change<br />

package ID is displayed by default, if :none was specified or at least one change<br />

package was successfully updated from the last operation.<br />

--[no|confirm]closeCP<br />

controls whether to close the associated change package.<br />

--nocloseCP means do not close the change package.<br />

--confirmcloseCP means ask before closing the change package.<br />

--closeCP always closes the change package.<br />

--[no]confirm<br />

controls whether to confirm the rename before proceeding.<br />

--[no]defer<br />

controls whether to delay the rename operation in the project until the deferred operation is<br />

submitted. The rename operation in the sandbox still takes place immediately. This option is<br />

valid only if you are performing the <strong>com</strong>mand from a sandbox.<br />

-f<br />

force the rename without confirmation.<br />

--issueId=ID<br />

identifies an MKS Integrity Manager issue that is notified of this action. This option is<br />

another way of redirecting to a change package. If you have an issue assigned to you that<br />

contains one open change package, you can specify the issue ID instead of the change<br />

package ID. This option can only be specified if the Integrity Manager Integration is enabled.<br />

See the Integrity Server Administration Guide or your administrator for details on using the<br />

Integrity Manager integration.<br />

--newName=value<br />

specifies the new name of the renamed member.<br />

--[no|confirm]overwrite<br />

controls whether to overwrite the target (new name) working file if it exists. Specifying<br />

--overwrite means always do it, --nooverwrite means never do it, and<br />

--confirmoverwrite means always ask before doing it. This option is valid only if you<br />

are performing the <strong>com</strong>mand from a sandbox.<br />

--[no]renameWorkingFile<br />

controls whether to rename the working file in the sandbox immediately.<br />

member...<br />

identifies a specific member. You can only specify one member at a time.<br />

DIAGNOSTICS<br />

See the diagnostics reference page for possible exit status values.<br />

189 of 457


PREFERENCES<br />

Using si setprefs or si viewprefs, you are able to set or view the preference keys for this<br />

<strong>com</strong>mand.<br />

SEE ALSO<br />

Commands:<br />

si add, si closecp, si co, si cpissues, si createcp, si diff, si drop si<br />

edit, si lock, si move si mergebranch, si rlog, si unlock, si viewcps<br />

Miscellaneous:<br />

ACL, diagnostics, options, preferences<br />

190 of 457


si report<br />

generates a project report<br />

SYNOPSIS<br />

si report [--basename=value] [(-P project|--project=project)]<br />

[(-S sandbox|--sandbox=sandbox)] [ --devpath=path] [--projectRevision =rev]<br />

[--hostname=server] [--port=number] [--password=password] [--user=name]<br />

[(-?|--usage)] [(-N|--no)] [(-Y|--yes)] [--[no]batch] [--cwd=directory]<br />

[--forceConfirm=[yes|no]] [(-g|--gui)] [--quiet] [--settingsUI=[gui|default]]<br />

[-F|--selectionFile=value] [--status=[none|gui|default]]<br />

DESCRIPTION<br />

si report generates a report for a project. Use of this <strong>com</strong>mand requires your MKS Source<br />

Integrity client to be running Microsoft Access (TM) on the Windows operating system.<br />

Reporter calculates a summary of the changes to a project and all its archives, then displays or<br />

prints the summary as text or, for some reports, as a graph. Customized reports, created using<br />

Microsoft Access, can also be produced.<br />

Reporter's data files (containing the results of its project or archive analysis) can be saved as text<br />

files that can be read by most database applications. Reporter generates:<br />

● changes introduced by individual authors<br />

● changes between the member revision and a revision with a particular label<br />

● changes between the member revision and any other revision<br />

● a list of locked members and the names of users who locked them<br />

● a list of revisions with a particular label or state<br />

● project member history (including revision descriptions) by file<br />

For more details on report types, see the Source Integrity Enterprise Edition User Guide.<br />

Options<br />

This <strong>com</strong>mand takes the universal options available to all si <strong>com</strong>mands, as well as some general<br />

options. See the options reference page for descriptions.<br />

--basename=value<br />

Specifies the name of generated tables. If you do not specify --basename=value, si<br />

report launches MKS Source Integrity Reporter (if installed).<br />

191 of 457


Data Fields<br />

si report uses the following suffixes to indicate the contents of the table:<br />

.txp project information<br />

.txm member information<br />

.txa archive information<br />

.txr revision information<br />

.txs symbols<br />

.txx access information<br />

In the generated data files, the first line of each data file contains field names.<br />

The fields for the project information file (.txp) are:<br />

ProjId<br />

(integer) A unique identifier of a project (Primary Key)<br />

ProjName<br />

(string) The project path/name<br />

The fields for the member information file (.txm) are:<br />

ProjId<br />

(integer) A unique identifier for the project, can be used as a key. Taken from project info<br />

(Foreign Key - 1:M).<br />

MemberName<br />

(string) Member file path/name.<br />

MemberType<br />

(string) Valid values are:<br />

a archive<br />

other (only valid for projects imported from<br />

f<br />

older versions of Source Integrity Standard<br />

i sub-project<br />

Revision<br />

(string) Revision number of member (can be NULL).<br />

ArchId<br />

(integer) A unique identifier of the member file, may be an archive id or another project id<br />

192 of 457


(can be NULL). Can be used as a primary key.<br />

The fields for the project information file (.txa) are:<br />

ArchId<br />

(integer) A unique identifier of the member file, may be an archive id or another project id<br />

(can be NULL). Can be used as a primary key.<br />

ArchiveName<br />

(string) File path/name, only for archives.<br />

Head<br />

(string) Revision number of the head revision.<br />

Branch<br />

(string) Branch number of a default branch if one has been set by si archiveinfo –b.<br />

(can be NULL).<br />

NumLocks<br />

(integer) The number of locked revisions.<br />

Format<br />

(string) One of text, binary or auto-detect.<br />

Encrypted<br />

(integer) Set to 1 if the archive is encrypted. This option is not supported in Source Integrity<br />

Enterprise.<br />

Compressed<br />

(integer) Set to 1 if the archive is <strong>com</strong>pressed.<br />

TotalRevs<br />

(integer) Total number of revisions in the archive.<br />

Branches<br />

(integer) Total number of branches in the archive.<br />

BranchRevs<br />

(integer) Total number of revisions on branches.<br />

Comment<br />

(string) Comment delimiter if set (can be NULL). This field is historical.<br />

<strong>Description</strong><br />

(string) Text describing an archive. This text is entered when the archive is first created.<br />

The fields for the revision information file (.txr) are:<br />

ArchId<br />

(integer) A unique identifier of the member file, may be an archive id or another project id<br />

(can be NULL). Can be used as a primary key.<br />

RevNum<br />

(string) The revision number of this revision (unique per ArchId).<br />

Date<br />

(string) The date this revision was entered, in the format yyyy/mm/dd hh:mm:ss.<br />

Author<br />

193 of 457


(string) The author’s name (usually the author’s user ID).<br />

State<br />

(string) The state assigned to this revision; this is taken from state list items).<br />

LinesAdded<br />

(integer) The number of lines added by this revision; derived from delta information.<br />

LinesDeleted<br />

(integer) The number of lines deleted by this revision.<br />

Locker<br />

(string) The name of the user holding a lock on this revision (usually the user’s user ID) and<br />

the time when the revision was locked.<br />

LogMsg<br />

(string) Text description of the changes made by this revision as entered at check in.<br />

The fields for the symbol information file (.txs) are:<br />

ArchId<br />

(integer) A unique identifier of the member file, may be an archive id or another project id<br />

(can be NULL). Can be used as a primary key.<br />

RevNum<br />

(string) The revision number of a revision that has an associated symbolic label. The<br />

revision number may not be unique in a list.<br />

Symbol<br />

(string) The symbolic label.<br />

The fields for the access information file (.txx) are:<br />

ArchId<br />

(integer) A unique identifier of the member file, may be an archive id or another project id<br />

(can be NULL). Can be used as a primary key.<br />

UserId<br />

(string) Name (user ID) of user who is included in an access list (Source Integrity Standard<br />

only) for an archive. The archive and project ID numbers (ArchId and ProjId) are unique for<br />

any set of reports (though they may change from one use of report to another). They may be<br />

used as keys.<br />

DIAGNOSTICS<br />

See the diagnostics reference page for possible exit status values.<br />

PREFERENCES<br />

Using si setprefs or si viewprefs, you are able to set or view the preference keys for this<br />

194 of 457


<strong>com</strong>mand.<br />

SEE ALSO<br />

Commands:<br />

si projectinfo , si projects, si viewproject, si viewprojecthistory<br />

Miscellaneous:<br />

ACL, diagnostics, options, preferences<br />

195 of 457


si restoreproject<br />

restores a project to a particular revision<br />

SYNOPSIS<br />

si restoreproject [(-r rev|--revision=rev)] [(--reason=reason|--reasonFile=file)]<br />

[--devpath=path] [(-P project|--project=project)] [(-S sandbox|--sandbox=sandbox)]<br />

[--hostname=server] [--port=number] [--password=password] [--user=name]<br />

[(-?|--usage)] [(-N|--no)] [(-Y|--yes)] [--[no]batch] [--cwd=directory]<br />

[--forceConfirm=[yes|no]] [(-g|--gui)] [--quiet] [--settingsUI=[gui|default]]<br />

[-F|--selectionFile=value] [--status=[none|gui|default]]<br />

DESCRIPTION<br />

si restoreproject restores a project to a particular checkpoint. When you apply the si<br />

restoreproject <strong>com</strong>mand, Source Integrity recursively checkpoints the selected project, then<br />

modifies it to reflect the member list of the target checkpoint. Any further development then<br />

proceeds from the restored checkpoint.<br />

Restoring a project is useful when development must revert back to an earlier version and there<br />

are no plans to proceed from the current version of the project. Restoring a project is not an option<br />

when the goal is to test a particular version. The project is always checkpointed before and after<br />

the restore.<br />

Note the following:<br />

● The si restoreproject <strong>com</strong>mand can potentially restore and checkpoint dropped<br />

subprojects that existed at the target revision, even if they are not currently a member of the<br />

project.<br />

● Do not use the si restoreproject <strong>com</strong>mand to create a new development branch from<br />

a previously checkpointed project revision. For new development paths, you should instead<br />

create a new development path.<br />

● To restore a variant project to a specific project revision, the development path must exist in<br />

all subprojects referenced by the project revision.<br />

Options<br />

This <strong>com</strong>mand takes the universal options available to all si <strong>com</strong>mands, as well as some general<br />

options. See the options reference page for descriptions.<br />

--reason=reason<br />

--reasonFile=file<br />

196 of 457


specifies the reason text to be associated with restoring the project, or specifies a file where<br />

text can be retrieved.<br />

Note:<br />

Reasons that include spaces must be enclosed by quotes.<br />

DIAGNOSTICS<br />

See the diagnostics reference page for possible exit status values.<br />

PREFERENCES<br />

Using si setprefs or si viewprefs, you are able to set or view the preference keys for this<br />

<strong>com</strong>mand.<br />

SEE ALSO<br />

Commands:<br />

si checkpoint<br />

Miscellaneous:<br />

ACL, diagnostics, options, preferences<br />

197 of 457


si resync<br />

updates a sandbox with the member revision<br />

SYNOPSIS<br />

si resync [--mergeType=[confirm|cancel|automatic|manual]]<br />

[--onMergeConflict=[confirm|cancel|mark|launchtool|highlight|error]] [--[no]byCP]<br />

[--[no]confirm] [--[no]confirmPopulateSparse] [--[no]includeDropped]<br />

[--[no|confirm]merge] [--[no|un]expand] [-f] [--[no|confirm]overwriteChanged]<br />

[--[no|confirm]overwriteIfPending] [--[no|confirm]overwriteDeferred]<br />

[--[no]overwriteUnchanged] [--[no]populate] [--[no]restoreTimestamp]<br />

[(-R|--[no|confirm]recurse)] [--filter=filteroptions] [(-S sandbox|--sandbox=sandbox)]<br />

[--hostname=server] [--port=number] [--password=password] [--user=name]<br />

[(-?|--usage)] [(-F file|--selectionFile=file)] [(-N|--no)] [(-Y|--yes)] [--[no]batch]<br />

[--cwd=directory] [--forceConfirm=[yes|no]] [(-g|--gui)] [--quiet]<br />

[--settingsUI=[gui|default]] [--status=[none|gui|default]]<br />

current or dropped member/subproject...<br />

DESCRIPTION<br />

si resync <strong>com</strong>pares the contents of project members with their corresponding working files in<br />

the sandbox and replaces the working file with an exact copy of the member revision, if differences<br />

are detected or if no working file exists. If the working file is writable, you are optionally prompted<br />

for confirmation before it is replaced. This <strong>com</strong>mand has no effect on working files that are identical<br />

to the member revision.<br />

Note:<br />

This <strong>com</strong>mand overwrites files, even ones that you have locked and that have changed<br />

since you last checked them out. Be certain of your response to any prompts indicating that<br />

the files will be overwritten - once replaced, you cannot get back your changes.<br />

The Resync By Change Package Option<br />

The Resync by CP (--[no]byCP) option is primarily a tool for developers. When you want to<br />

resynchronize files in your sandbox, you usually do so by choosing individual files and then using<br />

si resync <strong>com</strong>mand. However, if the files you are resynchronizing have changes that are linked<br />

to other files, the standard resync operation would not include those related files. To resynchronize<br />

all related files, you would have to manually search for all the changes associated with the change<br />

package on the member you are resynchronizing.<br />

The Resync by CP option automates this process by searching the change package specified on<br />

the member revision you are resynchronizing and then bringing the changes from the project to<br />

198 of 457


your sandbox.<br />

While the Resync CP option searches all files related to a selected change package, and all the<br />

change packages that may be associated with the related files, the Resync By CP option only<br />

processes the change packages associated with the member you are resynchronizing.<br />

How Does the Resync By CP Option Work?<br />

The functioning of Resync by CP is affected by the options you choose for si resynccp. For<br />

more information, see si resynccp.<br />

When Should I Use the Resync By CP Option?<br />

Developers should use Resync By CP when they want to ensure that they have all dependent<br />

changes associated with a member revision, even if these changes are contained in other files. For<br />

example, a developer needs to check out (locked) a file and modify it. The developer finds that<br />

other revisions have been checked in since the member was resynchronized in the sandbox.<br />

Because the sandbox is quite large and contains many unrelated changes, the developer does not<br />

want to perform a standard resynchronization. The Resync By CP option can be used in this<br />

situation.<br />

Options<br />

This <strong>com</strong>mand takes the universal options available to all si <strong>com</strong>mands, as well as some general<br />

options. See the options reference page for descriptions.<br />

Note:<br />

If the working file of the member you are resyncing has been modified, Source Integrity asks<br />

you to confirm that you want to merge your modifications into the working file.<br />

--mergeType=[confirm|cancel|automatic|manual]<br />

specifies how you want to merge changes from the working file in your sandbox into the<br />

member revision.<br />

--mergeType=confirm prompts you to confirm a merge type.<br />

--mergeType=cancel cancels the selected merge type.<br />

--mergeType=automatic <strong>com</strong>pletes the merge process without launching the MKS Visual<br />

Merge tool.<br />

Caution: While Source Integrity and MKS Visual Merge are capable of performing<br />

automatic merging, MKS cannot guarantee that the merged results are “correct”. MKS<br />

re<strong>com</strong>mends that you examine and test the merged results before checking them into the<br />

199 of 457


epository.<br />

--mergeType=manual <strong>com</strong>pletes the merge operation through the MKS Visual Merge tool.<br />

The MKS Visual Merge tool launches, displaying the revisions you want to merge. For more<br />

information on the MKS Visual Merge tool, refer to the Source Integrity Enterprise User<br />

Guide.<br />

--onMergeConflict=[confirm|cancel|mark|launchtool|highlight|error]<br />

specifies what to do when conflicts occur during a merge.<br />

--onMergeConflict=confirm prompts you to confirm a merge conflict option.<br />

--onMergeConflict=cancel cancels the merge.<br />

--onMergeConflict=mark marks the working file indicating that merging is required<br />

without <strong>com</strong>pleting all of the merge related tasks. This provides the time you may need to<br />

investigate conflicts or edit difference blocks before finishing the merge.<br />

--onMergeConflict=launchtool launches the MKS Visual Merge tool to resolve the<br />

conflicts; all non-conflicting blocks will already have been applied.<br />

--onMergeConflict=highlight indicates conflicts in the file with the following characters:<br />

"". You are responsible for resolving merge conflicts before checking<br />

in the changes.<br />

Note: --onMergeConflict=launchtool does not require the -g or --gui options.<br />

--onMergeConflict=error indicates merge conflicts with an error message prompt.<br />

--[no]byCP<br />

controls whether to cause Source Integrity to operate in change package mode. Source<br />

Integrity automatically searches the change package associated with the member and<br />

resynchronizes all member files contained in that change package.<br />

Note:<br />

If there are no revisions in the change package to resynchronize, a normal resync is<br />

performed.<br />

--[no]confirm<br />

controls whether to proceed without confirmation messages when working with a change<br />

package (applies only when change packages are enabled).<br />

--[no]confirmPopulateSparse<br />

controls whether to proceed without confirmation messages when populating a sparse<br />

sandbox.<br />

--[no]includeDropped<br />

200 of 457


controls whether to delete dropped members from your sandbox.<br />

--[no|confirm]merge<br />

controls whether to merge changes from the working file in your sandbox into the member<br />

revision.<br />

--merge means always do it.<br />

--nomerge means never do it.<br />

--confirmmerge means always ask before doing it.<br />

Note: By default, Source Integrity prompts you for the type of merge (manual or automatic)<br />

to perform and what action to take if a conflict is encountered.<br />

--[no|un]expand<br />

controls whether to expand, unexpand, or ignore keywords in the member file. Keyword<br />

expansion is only available in text archives, not binary archives. For descriptions of the MKS<br />

Source Integrity keywords, see the Source Integrity Enterprise User Guide. Possible<br />

keywords are:<br />

$Author$<br />

$CompanyInfo$<br />

$Date$<br />

$Header$<br />

$Id$<br />

$Locker$<br />

$Log$<br />

$Name$<br />

$ProjectName$<br />

$ProjectSetting attribute$<br />

$ProjectRevision$<br />

$RCSfile$<br />

$Revision$<br />

$SandboxSetting attribute$<br />

$Setting attribute$<br />

$Source$<br />

$State$<br />

-f<br />

overwrites the working file if it has changed since it was last checked in. This is equivalent to<br />

specifying --overwriteChanged.<br />

--[no|confirm]overwriteChanged<br />

controls whether to overwrite the working file if it has changed since it was last checked in.<br />

201 of 457


--overwriteChanged means always do it.<br />

--nooverwriteChanged means never do it.<br />

--confirmoverwriteChanged means always ask before doing it. Specifying the --yes<br />

or --no options would have the same effect as the first two, but would further answer "yes"<br />

or "no" to all questions asked, not just this one.<br />

--[no|confirm]overwriteIfPending<br />

controls whether to overwrite the working file if there is a pending operation on the revision<br />

corresponding to the working file.<br />

--[no|confirm]overwriteDeferred<br />

controls whether to overwrite the working file if there is a deferred operation on the revision<br />

corresponding to the working file.<br />

--[no]overwriteUnchanged<br />

controls whether to overwrite files that have not been modified in the sandbox. This may be<br />

useful for forcing files to pick up new keyword expansions or timestamps even if their<br />

content has not changed.<br />

--[no]populate<br />

controls whether to populate the sandbox with a working file for the specified member. If you<br />

are working with a sparse sandbox (see si createsandbox), specifying --populate<br />

with this <strong>com</strong>mand overrides the default sparse sandbox behavior of removing working files.<br />

--[no]restoreTimestamp<br />

controls whether to restore the timestamp of the working file to the timestamp of the revision<br />

in the member history.<br />

current or dropped member/subproject...<br />

identifies a specific member or subproject that currently exists in the project, or one that has<br />

been dropped from the project but still exists in the sandbox. Use spaces to specify more<br />

than one. If you specify a dropped member or subproject, and if you specify<br />

--includeDropped, this <strong>com</strong>mand deletes the corresponding working file.<br />

DIAGNOSTICS<br />

See the diagnosticsreference page for possible exit status values.<br />

PREFERENCES<br />

Using si setprefs or si viewprefs, you are able to set or view the preference keys for this<br />

<strong>com</strong>mand.<br />

SEE ALSO<br />

202 of 457


Commands:<br />

si applycp, si ci, si co, si resynccp, si revert<br />

Miscellaneous:<br />

ACL, diagnostics, options, preferences<br />

203 of 457


si resynccp<br />

merges change package members to a Source Integrity sandbox<br />

SYNOPSIS<br />

si resynccp [--allowOpenCP] [--[no]alreadyInProjectIsError]<br />

[--backFill=[cp|revision|error|skip|ask]]<br />

[--mergeType=[confirm|cancel|automatic|manual]]<br />

[--onMergeConflict=[confirm|cancel|mark|launchtool|highlight|error]]<br />

[--[no]confirm] [--[no|un]expand] [-f|--[no|confirm]overwriteChanged]<br />

[--[no]ignoreBranches] [--[no]ignoreServer] [--[no|confirm]merge]<br />

[--[no|confirm]mergeOnBranch] [--[no|confirm]createVariants]<br />

[--[no]otherProjectIsError] [(--propagationCP=value)] [(--resolutionCP=value)]<br />

[--[no]restoreTimestamp] [--[no]spanProjects] [--[no]useMaster]<br />

[--[no]verbose] [(-S sandbox|--sandbox=sandbox)] [--hostname=server]<br />

[--port=number] [--password=password] [--user=name] [(-?|--usage)]<br />

[(-F file|--selectionFile=file)] [(-N|--no)] [(-Y|--yes)] [--[no]batch] [--cwd=directory]<br />

[--forceConfirm=[yes|no]] [(-g|--gui)] [--quiet] [--settingsUI=[gui|default]]<br />

[--status=[none|gui|default]] [--[no]ignoreUpdateRevision]<br />

issue|issue:change package id...<br />

DESCRIPTION<br />

si resynccp merges change package members to a Source Integrity sandbox.<br />

Feature Overview<br />

A change package specifies groups of members that are affected by an issue. An issue tracks<br />

changes that occur during the development process. An example of a change package would be a<br />

group of files that need to be changed to address a problem in program code.<br />

Both Apply CP and Resync CP rely on the use of change packages to track individual changes that<br />

modify project content or create new content. If a development team has been using change<br />

packages consistently, Source Integrity can isolate all changes related to a specific issue because<br />

this information is recorded as part of the change package. Once the dependencies are calculated,<br />

the operation <strong>com</strong>pletes and the change packages are applied in the project.<br />

If a development team does not use the change package methodology, isolating specific content<br />

be<strong>com</strong>es a <strong>com</strong>plex, manual task. In a large code project, this could mean searching hundreds of<br />

files to determine which ones are related to a specific issue. To build the project, it would then be<br />

necessary to add, drop, rename, and move files, update file revisions, merge around unwanted<br />

revisions, merge in required changes, and merge out any unwanted changes.<br />

204 of 457


Using the functionality of Apply CP and Resync CP, this <strong>com</strong>plicated process be<strong>com</strong>es largely<br />

automated. In Source Integrity, the Apply CP operation adds, drops, renames, and moves files,<br />

and updates file revisions as required to create the desired change. If merging is required or other<br />

changes are needed to propogate the desired changes into the target project, you can use the<br />

Resync CP <strong>com</strong>mand. Resync CP allows you to either merge in desired changes or merge around<br />

unwanted changes.<br />

Apply CP and Resync CP are most useful for code and other text files where differencing can be<br />

performed. The operations are not re<strong>com</strong>mended for binary files because of the difficulties<br />

encountered in differencing and merging binaries.<br />

The Change Package Methodology<br />

When used across a development project, Apply CP and Resync CP are powerful tools for<br />

managing changes and new content. However, the effectiveness of the functionality ultimately<br />

relies on the following factors:<br />

● accurate and consistent logging of issues into the Integrity Manager database<br />

● associating related changes into a single change package that ultimately addresses the<br />

issue in question<br />

Because issues, and their associated change packages, follow a workflow progression, it is critical<br />

that each member of the development team record and track all changes as they are made, from<br />

the initial phase to the <strong>com</strong>pletion phase in which the associated problem is addressed. All<br />

changes relating to a given issue must then be associated with the correct change package. Once<br />

the problem is addressed, or the feature added, that change package can be closed.<br />

It is equally important that issues are clearly delineated so that each change package addresses<br />

only one problem area or feature. Certainly, one problem area or feature may require many files to<br />

address it, but if you create a change package that is too wide in scope, it be<strong>com</strong>es difficult to<br />

extract specific changes later on.<br />

With accurate and consistent logging, Source Integrity can clearly identify the specific member<br />

revisions (or files) that address the identified problem or <strong>com</strong>plete the required feature. Without this<br />

type of tracking, applying a change package may not have the desired results and manual reviews<br />

may be<strong>com</strong>e necessary.<br />

The Commands<br />

Consider the following scenario at abcBusiness--a major customer purchased version 2.0 of<br />

abcBusiness' Aurora software. The customer now wants a new feature--data <strong>com</strong>pression--that<br />

they can use with Aurora 2.0 The development team at abcBusiness has already <strong>com</strong>pleted work<br />

on a data <strong>com</strong>pression feature, bu the feature has been engineered only as part of the up<strong>com</strong>ing<br />

Aurora 3.0 release.<br />

205 of 457


To address the customer's needs, abcBusiness would normally have to assign a separate<br />

development team to create the new feature for Aurora 2.0 But how can abcBusiness take<br />

advantage of the work already <strong>com</strong>pleted on the data <strong>com</strong>pression feature and provide it to the<br />

customer?<br />

If the development team has been using change packages, they can isolate the files that relate to<br />

the new data <strong>com</strong>pression feature. However, without the functionality of Apply CP and Resync CP,<br />

the buildmaster at abcBusiness would have to manually search the required change package(s)<br />

and individually review all of the associated files to isolate the changes related to the feature. The<br />

buildmaster would then have to manually add, drop, rename, and move files, update file revisions,<br />

merge around unwanted revisions, merge in required changes, and merge out any unwanted<br />

changes.<br />

Using the functionality of Apply CP and Resync CP, this <strong>com</strong>plicated process be<strong>com</strong>es largely<br />

automated. In Source Integrity, the Apply CP operation works directly in the project to add, drop,<br />

rename, and move files, and update file revisions as required to create the desired change. Source<br />

Integrity presents you with a list--the backfill list--of all change packages required to capture the<br />

issue. In the Apply CP operation, you must either accept or decline this list--you cannot make<br />

selections. If you accept the list, the Apply CP <strong>com</strong>mand <strong>com</strong>pletes. If you decline the list, the<br />

Apply CP <strong>com</strong>mand cannot <strong>com</strong>plete.<br />

If the Apply CP <strong>com</strong>mand fails because merging is required, you can then run the Resync CP<br />

<strong>com</strong>mand. Resync CP works in a sandbox and allows you to make selections from the backfill list.<br />

Source Integrity then merges around unwanted changes and uses differencing to merge files.<br />

Consider once again, the abcBusiness development team. Because the team has been tracking all<br />

of their changes through the use of change packages, they can target the main trunk of<br />

development and use Apply CP and Resync CP functionality to extract only those files that relate<br />

to the new data <strong>com</strong>pression feature. Those specific change packages can then be applied to a<br />

variant project of Aurora 2.0 and testing carried out within a new project designed specifically for<br />

the customer.<br />

The functionality allows you to maximize existing development work, while being more responsive<br />

to both internal and external stakeholders. Apply CP and Resync CP are especially effective in any<br />

environment where there are large numbers of files to deal with--whether these are code files for a<br />

software project or Web pages for a <strong>com</strong>plex Web site.<br />

Using Resync CP and Resync By CP<br />

This section provides an example to show how Resync CP can be used in your environment. The<br />

example also illustrates how Resync By CP can be used in a developer's sandbox.<br />

The development team at abcBusiness is working on the next release, which contains hundreds of<br />

206 of 457


files that span many Source Integrity projects. Whenever a fix is made, or a feature added, it may<br />

require the manipulation of a single file, or many different files across multiple projects. A fix or new<br />

feature may also include new dependencies within the source code.<br />

If developers resynchronize only a single file into their sandboxes, their builds may break because<br />

of new dependencies in the code. Such broken builds cause delays and prevent the team from<br />

<strong>com</strong>pleting their work on time. However, it is possible to avoid this lost time by using the Resync<br />

CP and Resync By CP <strong>com</strong>mands.<br />

Resync CP and Resync By CP allow developers to specify a change package and have all<br />

changes associated with that change package resynchronized into their sandboxes. The<br />

<strong>com</strong>mands save development time because they:<br />

● automatically search for the required files<br />

● determine what other change packages the selection is dependant on (this is known as the<br />

backfill list) and also resynchronize those change packages into the sandbox<br />

If the developer is working on a file conflict, Resync CP and Resync By CP also merge new<br />

information into a file. The merge operation ensures that the sandbox is up-to-date and that no<br />

changes are lost.<br />

The Resync CP and Resync By CP <strong>com</strong>mands also allow a developer to remove a bug fix or<br />

feature that is in<strong>com</strong>plete or not working.<br />

Resync Change Package Command<br />

While Apply CP works to either add, drop, rename, or move members, or update member<br />

revisions, you must accept the entire list of backfill entries or the <strong>com</strong>mand fails. In the Resync CP<br />

operation, you are able to select the individual files you want to exclude from the backfill operation<br />

and then Source Integrity performs the required merges. Therefore, if you need to merge files to<br />

create your solution or make other changes to incorporate the desired change packages into the<br />

target project, you must use the Resync CP <strong>com</strong>mand.<br />

The Resync CP operation allows you resynchronize revisions and carry out merges entirely within<br />

a sandbox. When you are prompted to backfill historical revisions (the Resync CP backfill list), you<br />

can select the files you want to include. Resync CP automatically performs merging and notifies<br />

you of unresolved conflicts that must be addressed manually after the <strong>com</strong>mand <strong>com</strong>pletes.<br />

How Does Resync CP Work?<br />

Unlike the Apply CP <strong>com</strong>mand, you can undo the effect of a Resync CP operation by<br />

resynchronizing the sandbox again and then unlocking all locks. Because the master project has<br />

not been changed, the sandbox is restored to the state it was in prior to the Resync CP operation.<br />

207 of 457


Once the dependencies are calculated, and you have performed the required merges, the<br />

operation <strong>com</strong>pletes and Source Integrity presents all the files required for the new feature or<br />

content in your sandbox.<br />

When Should I Use Resync CP?<br />

You should use the Resync CP <strong>com</strong>mand when the Apply CP operation has failed because there<br />

were conflicts to be resolved through merging or if there are additional changes that need to be<br />

made in order to incorporate the change packages into the target project. Resync CP is most<br />

useful for developing software features and for applying bug fixes during the software development<br />

process.<br />

Note:<br />

When working in your sandbox, you can also use the Resynchronize By CP <strong>com</strong>mand.<br />

When you select a member and use Resynchronize By CP, Source Integrity automatically<br />

searches the change package associated with the member and resynchronizes the selected<br />

member and all other member files contained in that change package. For more information,<br />

see si resync.<br />

If the issues you are looking at have numerous associated change packages, you can also use a<br />

single change package--a resolution change package--that contains all the associated change<br />

packages, to resolve it. The Resync CP <strong>com</strong>mand includes a process for creating resolution<br />

change packages that can be used for this purpose.<br />

Note:<br />

If you attempt to perform a Resync CP <strong>com</strong>mand on a member that was previously dropped<br />

from a project, Source Integrity instructs you to manually re-add the member.<br />

Resolution Change Packages<br />

There are instances when the Apply CP <strong>com</strong>mand does not work on a set of change packages<br />

because merging is required. When this happens, the Resync CP <strong>com</strong>mand must be used to<br />

automate the required merging. Once the Resync CP operation is <strong>com</strong>pleted, the modified files<br />

that result from those merges are transferred to your sandbox. To apply the changes, you must<br />

then check in those modified files.<br />

For a development team using the change package methodology, the check in of the modified files<br />

requires an associated issue and change package. Once the issue has been created, the files can<br />

then be checked into the associated change package and the development path updated with the<br />

merged files.<br />

If other developers want to apply the same set of change packages, how can they be certain that<br />

the changes made relate only to the target feature and that no other changes have been checked<br />

in? To be absolutely certain, they would have to repeat the original Resync CP operation--a<br />

208 of 457


significant duplication of effort. Otherwise, they would have to resynchronize using the original set<br />

of change packages and possibly accept additional, unwanted changes that were selected during<br />

the first Resync CP operation.<br />

To avoid this uncertainty and duplication of effort, there is a mechanism for recording all change<br />

packages that have been applied, including the merge conflicts that have been resolved. The<br />

resolution change package is the mechanism for recording these changes. The resolution change<br />

package records all applied change packages, resolved conflicts, checked in modified files, and<br />

conflicts resolved by merging.<br />

In addition, you can only apply one resolution change package during each Apply CP operation,<br />

and if you select a resolution change package, you cannot apply any other change packages<br />

during that operation. Therefore, the applied changes are strictly limited and defined. Anyone<br />

wanting a specific set of changes can then select the associated resolution change package, run<br />

the Apply CP <strong>com</strong>mand, and obtain the same results.<br />

What Is a Resolution Change Package?<br />

A resolution change package is similar to a normal change package except that it contains<br />

additional information on:<br />

● change packages that have been applied<br />

● modified files that have been checked in<br />

● conflicts that have been addressed by merging<br />

When Should I Use a Resolution Change Package?<br />

You need to use a resolution change package if an Apply CP operation has failed because<br />

merging is required and you want to record the all merge operations required to address the issue.<br />

To accurately record all the results of the required merge operations, you should use a resolution<br />

change package.<br />

Resolution change packages are particularly useful for assisting buildmasters to <strong>com</strong>plete their<br />

work. When an Apply CP operation has failed, developers can identify the dependencies and<br />

required merges, and include all the necessary changes in a single resolution change package.<br />

The buildmaster can then redo the Apply CP operation using that resolution change package. This<br />

reduces the amount of decision-making required of the buildmaster and allows developers to<br />

resolve the conflicts in their own files.<br />

How Is a Resolution Change Package Created?<br />

A resolution change package is created only through the Resync CP operation. Using the graphical<br />

user interface, you can select an existing change package--or create a new one--and then ask<br />

Source Integrity to use this as a resolution change package. The only requirement is that the<br />

change package must be in the Open state.<br />

209 of 457


The change package you ask Source Integrity to use may or may not contain entries (that is, files),<br />

but for the greatest level of control in isolating a feature or issue, it is preferable to start with an<br />

empty change package.<br />

The process for creating a resolution change package is as follows:<br />

1. You create a normal change package and, during a Resync CP operation, you ask Source<br />

Integrity to use it as a resolution change package for recording all conflicts.<br />

2. Source Integrity takes the specified change package and adds a resolution list, thereby<br />

making it into a resolution change package.<br />

3. Once all the merge conflicts are addressed, you can check in the changes to the newly<br />

created resolution change package.<br />

4. After all the changes are checked in, you can then close the resolution change package, just<br />

as you would do for a normal change package.<br />

5. Apply the change package.<br />

Note: If reviews are mandatory, you must submit the resolution change package (you cannot close<br />

it manually). Submitting the resolution change package causes Source Integrity to apply the<br />

change package using the si applyCP <strong>com</strong>mand. If reviews are mandatory, the apply CP<br />

<strong>com</strong>mand records the applied changes in another change package that then follows the review<br />

process<br />

Are There Any Limitations When Using a Resolution CP?<br />

To avoid the problem of overlaps and conflicts during the Apply CP operation, you can only apply<br />

one resolution change package per operation.<br />

For more detailed information and examples on si resynccp and resolution change packages,<br />

see Applying Change Packages in the Source Integrity Enterprise User Guide.<br />

Propagation Change Packages<br />

During an Apply CP operation, your review of the changes you want to apply to a project may<br />

reveal potential merge conflicts or conflicts from files that have been added, dropped, renamed, or<br />

moved. For example, if a member has been removed from the source project, the Apply CP<br />

process re-adds the member to the project you are updating, creating an undesirable structural<br />

conflict.<br />

Resolving structural conflicts call for a propagation change package. Similar to a resolution change<br />

package, a propagation change package is initially constructed and populated using the Resync<br />

CP operation with deferred operations for members that need to be updated. Once the propagation<br />

change package is created, any conflicting entries can be discarded or corrected as needed prior<br />

to submission. As an alternative to a resolution change package, a propagation change package<br />

210 of 457


can also be used to resolve merge conflicts.<br />

Because a propagation change package records all the changes that need to be propagated<br />

between development paths, it is useful when incremental and repeated use of the Resync CP<br />

<strong>com</strong>mand is used to collect project changes.<br />

What is a Propagation Change Package?<br />

Technically, a propagation change package is a normal change package used to propagate<br />

specific changes from one development path to another. Conceptually, a propagation change<br />

package is a change package used to record and resolve changes that need to be applied<br />

between development paths. Similar to a resolution change package, a propagation change<br />

package records the changes that need to be made to resolve a merge. Unlike a resolution change<br />

package, a propagation change package records member changes and can be used across other<br />

development paths like a normal change package after it has been submitted.<br />

When Should I Use a Propagation Change Package?<br />

You need to use a propagation change package if an Apply CP operation includes undesirable<br />

member changes. You can use the Resync CP <strong>com</strong>mand to populate the propagation change<br />

package with the undesirable member changes in the form of deferred member operations. The<br />

undesirable member changes can then be discarded from the propagation change package prior to<br />

submission.<br />

Rather than perform one large Apply CP or Resync CP operation that can take a long time, a<br />

propagation change package allows you to incrementally propagate changes between<br />

development paths. Once the propagation change package is submitted, it records the changes<br />

made to the project.<br />

Options<br />

This <strong>com</strong>mand takes the universal options available to all si <strong>com</strong>mands, as well as some general<br />

options. See the options reference page for descriptions.<br />

--allowOpenCP<br />

allows Source Integrity to apply open change packages.<br />

--[no]alreadyInProjectIsError<br />

Causes Source Integrity to terminate the operation if the member being resynchronized is<br />

the same one listed in the change package and is already in the project. If this setting is<br />

negated --noalreadyInProjectIsError, then the information is displayed as a<br />

warning.<br />

--backFill=[cp|revision|error|skip|ask]<br />

Specifies the way Source Integrity treats historic revisions required by the specified change<br />

package. For example, --backfill=ask means Source Integrity asks you to specify the<br />

change packages you want to exclude from the operation.<br />

211 of 457


The available values for the --backFill option include:<br />

--backFill=cp<br />

recursively chooses all historic revisions required by the specified change packages<br />

and applies them by updating member revisions, adding files, or dropping files.<br />

--backFill=revision<br />

processes only the specified change package(s) and chooses only directly associated<br />

revisions. It does not process any change packages that are associated with<br />

intermediate revisions.<br />

--backFill=error<br />

terminates the operation if other change packages are required but are not specified.<br />

--backFill=skip<br />

causes Source Integrity to merge around specified backfill revisions. Because the<br />

Apply CP <strong>com</strong>mand does not perform merging, this is treated as an error in Apply<br />

CP, allowed in Resync CP.<br />

--backFill=ask<br />

allows you to specify the change packages you want to include.<br />

--[no]ignoreUpdateRevision<br />

ignores update revision change package entries when performing the <strong>com</strong>mand. The default<br />

is to include update revision entries.<br />

--mergeType=[confirm|cancel|automatic|manual]<br />

specifies how you want to merge changes from the working file in your sandbox into the<br />

member revision.<br />

--mergeType=confirm prompts you to confirm a merge type.<br />

--mergeType=cancel cancels the merge.<br />

--mergeType=automatic <strong>com</strong>pletes the merge process without launching the MKS Visual<br />

Merge tool.<br />

Caution: While Source Integrity and MKS Visual Merge are capable of performing<br />

automatic merging, MKS cannot guarantee that the merged results are “correct”. MKS<br />

re<strong>com</strong>mends that you examine and test the merged results before checking them into the<br />

repository.<br />

--mergeType=manual <strong>com</strong>pletes the merge operation through the MKS Visual Merge tool.<br />

The MKS Visual Merge tool launches, displaying the revisions you want to merge. For more<br />

information on the MKS Visual Merge tool, refer to the Source Integrity Enterprise User<br />

Guide.<br />

--onMergeConflict=[confirm|cancel|mark|launchtool|highlight|error]<br />

212 of 457


specifies what to do when conflicts occur during a merge.<br />

--onMergeConflict=confirm prompts you to confirm a merge conflict option.<br />

--onMergeConflict=cancel cancels the merge.<br />

--onMergeConflict=mark marks the working file indicating that merging is required<br />

without <strong>com</strong>pleting all of the merge related tasks. This provides the time you may need to<br />

investigate conflicts or edit difference blocks before finishing the merge.<br />

--onMergeConflict=launchtool launches the MKS Visual Merge tool to resolve the<br />

conflicts, all non-conflicting blocks will already have been applied.<br />

--onMergeConflict=highlight indicates conflicts in the file with the following characters:<br />

"". You are responsible for resolving conflicts in the working file.<br />

Note: --onMergeConflict=launchtool does not require the -g or --gui options.<br />

--onMergeConflict=error indicates merge conflicts with an error message prompt.<br />

--[no]confirm<br />

Confirm the actions before starting them.<br />

--[no|un]expand<br />

specifies whether Source Integrity should expand, unexpand, or ignore keywords when<br />

checking out working files.<br />

-f<br />

--[no|confirm]overwriteChanged<br />

forces overwrite of changed working files.<br />

--[no|confirm]createVariants<br />

controls whether to confirm the creation of variant projects as needed.<br />

--[no]ignoreBranches<br />

Causes Source Integrity to use the most recent revision when it encounters two revisions of<br />

the same member on two development paths in the change package being applied.<br />

--[no]ignoreServer<br />

Causes Source Integrity to perform the Apply CP operation even if the change package<br />

members reside on different servers.<br />

--[no|confirm]merge<br />

controls whether to confirm all merge operations before <strong>com</strong>pleting them.<br />

--[no|confirm]mergeOnBranch<br />

controls whether to cause Source Integrity to perform a merge if the target revision is on a<br />

branch. Source Integrity differences the two file revisions and merges any changes into the<br />

213 of 457


working file without modifying its revision number. You must then check in the working file to<br />

advance the revision to the next available revision number.<br />

--[no]otherProjectIsError<br />

Causes Source Integrity to terminate the <strong>com</strong>mand if the member is in another project, for<br />

example, if the change package contains multiple entries in different top level projects.<br />

Change package entries referring to other projects are therefore treated as an error.<br />

--resolutionCP=value<br />

causes Source Integrity to lock merged working files under this change package (where<br />

value is the change package ID number). For example, specifying<br />

--resolutionCP=1285:2 would cause Source Integrity to lock all working files merged<br />

under change package 1285:2.<br />

--propagationCP=value<br />

specifies whether to create a propagation change package that is detached from the set of<br />

change packages it resolves (where value is the change package ID number). All the<br />

required operations are automatically represented as deferred entries. You can then discard<br />

entries that you do not want represented in the final application of changes to the project.<br />

Similar to resolution change packages, you can also add or change entries in the<br />

propagation change package as required.<br />

--[no]restoreTimestamp<br />

controls whether to restore the timestamp of the working file to the timestamp of the revision<br />

in the member history. If this is not specified, the timestamp is set to the current date and<br />

time.<br />

--[no]spanProjects<br />

Causes Source Integrity to apply the <strong>com</strong>mand to any member specified in the change<br />

package, even if this involves multiple projects. This option also applies across all<br />

sandboxes and results in a search of local sandboxes for all entries in the change package.<br />

--[no]useMaster<br />

causes Source Integrity to operate on the top-level sandbox.<br />

--[no]verbose<br />

Means Source Integrity includes additional information to track the current state of the<br />

<strong>com</strong>mand.<br />

issue...<br />

issue:change package id...<br />

specifies the identification numbers for the change package you want to apply. For example,<br />

11804:2.<br />

DIAGNOSTICS<br />

See the diagnostics reference page for possible exit status values.<br />

PREFERENCES<br />

Using si setprefs or si viewprefs, you are able to set or view the preference keys for this<br />

214 of 457


<strong>com</strong>mand.<br />

SEE ALSO<br />

Commands:<br />

si applycp, si resync<br />

Miscellaneous:<br />

ACL, diagnostics, options, preferences<br />

215 of 457


si revert<br />

overwrites a sandbox file with a fresh copy of the working file, discarding changes<br />

SYNOPSIS<br />

si revert<br />

[--[no|un]expand] [-f] [--[no|confirm]overwriteChanged] [--[no|confirm]overwriteDeferred] [--<br />

[no]overwriteUnchanged] [--[no]restoreTimestamp] [(-R|--[no|confirm]recurse)] [-filter=filteroptions]<br />

[(-S sandbox|--sandbox=sandbox)] [--hostname=server] [--port=number] [-password=password]<br />

[--user=name] [(-?|--usage)] [(-F file|--selectionFile=file)] [(-N|--no)] [(-Y|--yes)] [--<br />

[no]batch] [--cwd=directory] [--forceConfirm=[yes|no]] [(-g|--gui)] [--quiet] [--settingsUI=[gui|default]] [-status=[none|gui|default]]<br />

sandbox member...<br />

DESCRIPTION<br />

si revert restores a working file to a state before changes were made, by overwriting the sandbox file with a fresh<br />

copy of the working file at the same revision you currently have in your sandbox, not the member revision. If you had the<br />

member locked, it is unlocked.<br />

Options<br />

This <strong>com</strong>mand takes the universal options available to all si <strong>com</strong>mands, as well as some general options. See the<br />

options reference page for descriptions.<br />

--[no|un]expand<br />

controls whether to expand, unexpand, or ignore keywords in the member file. Keyword expansion is only<br />

available in text archives, not binary archives. For descriptions of the MKS Source Integrity keywords, see the<br />

Source Integrity Enterprise User Guide. Possible keywords are:<br />

$Author$<br />

$CompanyInfo$<br />

$Date$<br />

$Header$<br />

$Id$<br />

$Locker$<br />

$Log$<br />

$Name$<br />

$ProjectName$<br />

$ProjectSetting attribute$<br />

$ProjectRevision$<br />

$RCSfile$<br />

$Revision$<br />

$SandboxSetting attribute$<br />

$Setting attribute$<br />

$Source$<br />

$State$<br />

-f<br />

overwrites the working file if it has changed since it was last checked in. This is equivalent to specifying<br />

--overwriteChanged.<br />

--[no|confirm]overwriteChanged<br />

controls whether to overwrite the working file if it has changed since it was last checked in.<br />

216 of 457


--overwriteChanged means always do it<br />

--nooverwriteChanged means never do it<br />

--confirmoverwriteChanged means always ask before doing it. Specifying the --yes or --no options would<br />

have the same effect as the first two, but would further answer "yes" or "no" to all questions asked, not just this<br />

one.<br />

--[no|confirm]overwriteDeferred<br />

controls whether to overwrite the working file if there is a deferred operation on the member.<br />

--[no]overwriteUnchanged<br />

controls whether to overwrite files that have not been modified in the sandbox. This may be useful for forcing files<br />

to pick up new keyword expansions or timestamps even if their content has not changed.<br />

--[no]restoreTimestamp<br />

controls whether to restore the timestamp of the working file to the timestamp of the revision in the member<br />

history.<br />

sandbox member...<br />

identifies a specific member; use spaces to specify more than one member.<br />

DIAGNOSTICS<br />

See the diagnostics reference page for possible exit status values.<br />

PREFERENCES<br />

Using si setprefs or si viewprefs, you are able to set or view the preference keys for this <strong>com</strong>mand.<br />

SEE ALSO<br />

Commands:<br />

si ci, si co, si resync<br />

Miscellaneous:<br />

ACL, diagnostics, options, preferences<br />

217 of 457


si revisioninfo<br />

displays revision information<br />

SYNOPSIS<br />

si revisioninfo [--[no]changePackage] [--[no]labels] [(-r rev|--revision=rev)]<br />

[(-P project|--project=project)] [(-S sandbox|--sandbox=sandbox)] [--devpath=path]<br />

[--projectRevision=rev] [--hostname=server] [--port=number] [--password=password]<br />

[--user=name] [(-?|--usage)] [(-N|--no)] [(-Y|--yes)] [--[no]batch] [--cwd=directory]<br />

[--forceConfirm=[yes|no]] [(-g|--gui)] [--quiet] [--settingsUI=[gui|default]]<br />

[--status=[none|gui|default]] member...<br />

DESCRIPTION<br />

si revisioninfo displays revision information for a member, for example:<br />

Options<br />

Member Name: c:\Documentation\Man_Pages\xml_man\si_add.1.xml<br />

Sandbox Name: c:\Documentation\Man_Pages\project.pj<br />

Revision: 1.7<br />

Created By: pmolinas on Jul 11, 2004 - 11:36 AM<br />

State: state_a<br />

Revision <strong>Description</strong>:<br />

Updated for Technical Review<br />

Labels:<br />

TechReview1<br />

This <strong>com</strong>mand takes the universal options available to all si <strong>com</strong>mands, as well as some general<br />

options. See the options reference page for descriptions.<br />

--[no]changePackage<br />

controls whether to display change package information (applies only when change<br />

packages are enabled).<br />

--[no]labels<br />

controls whether to display member labels.<br />

member...<br />

identifies a specific member; use spaces to specify more than one member.<br />

DIAGNOSTICS<br />

See the diagnostics reference page for possible exit status values.<br />

218 of 457


PREFERENCES<br />

Using si setprefs or si viewprefs, you are able to set or view the preference keys for this<br />

<strong>com</strong>mand.<br />

SEE ALSO<br />

Commands:<br />

si archiveinfo, si memberinfo, si mods, si rlog<br />

Miscellaneous:<br />

ACL, diagnostics, options, preferences<br />

219 of 457


si rlog<br />

displays the revision log<br />

SYNOPSIS<br />

si rlog [--format=value] [--headerFormat=value] [--noFormat] [--noHeaderFormat]<br />

[--noTrailerFormat] [(-r rev|--revision=rev)] [--range=value]<br />

[--trailerFormat=value] [--fields=field1[:width1],field2[:width2]...] [--height=value]<br />

[--width=value] [-x value] [-y value] [(-R |--[no|confirm]recurse)]<br />

[--filter=filteroptions] [(-P project|--project=project)] [(-S sandbox|--sandbox=sandbox)]<br />

[--devpath=path] [--projectRevision=rev] [--hostname=server] [--port=number]<br />

[--password=password] [--user=name] [--[no]persist] [--cwd=directory]<br />

[(-F file|--selectionFile=file)] [--forceConfirm=[yes|no]] [(-N|--no)] [--[no]batch]<br />

[--quiet] [(-?|--usage )] [(-Y|--yes)] member...<br />

DESCRIPTION<br />

si rlog displays the revision log and general archive information for every revision in a member<br />

history. The formatting is, by default, suitable for user viewing but it is also programmable, suitable<br />

for use in scripts. See the --format=value option description below.<br />

Options<br />

This <strong>com</strong>mand takes the universal options available to all si <strong>com</strong>mands, as well as some general<br />

options. See the options reference page for descriptions.<br />

For a member, first the --headerFormat is processed. Then each revision is processed and<br />

formatted using the --fields or --format option. Finally, the --trailerFormat is processed.<br />

All three sections have available the global archive information. For each revision, the fields<br />

designated as per-revision are shown.<br />

--format=value<br />

defines an output format for user-formatted text. The default formatting is suitable for<br />

interpretation by most users; the various formatting options are provided for programmatic<br />

control.<br />

This option and the --fields option are mutually exclusive.<br />

--format options use the same values as --fields, but similar to a JAVA<br />

MessageFormat string (that is, it requires { } to surround each field). The --fields option<br />

automatically adds a newline on the end, but you must supply the newline for formats with a<br />

\n, for example:<br />

220 of 457


si rlog --format="{membername},{revision}\n"<br />

--headerFormat=value<br />

defines the header to be used.<br />

--noFormat<br />

disables formatting for user-formatted text. If --noFormat is specified, the per-revision<br />

iteration is not performed.<br />

--noHeaderFormat<br />

disables the header formatting.<br />

--noTrailerFormat<br />

disables the trailer formatting.<br />

--range=value<br />

specifies a range of revision numbers. The format of value for a single revision is simply the<br />

revision number itself. Separate multiple non sequential revisions with a <strong>com</strong>ma, and use a<br />

dash to indicate a sequential range, for example, 1.2-1.5.<br />

You may also prefix or append a dash to a single revision number, meaning you want to<br />

show from 1.1 to the specified revision, or from the specified revision to the tip. For example,<br />

you would specify -1.6 to show revisions 1.1 to 1.6. Or you could specify 1.2- to show<br />

revisions 1.2 to the tip revision, whatever it may be.<br />

Another alternative is to use ?locker[:user] to match revisions that are locked, or locked by a<br />

certain user. For example,<br />

si rlog --noHeaderFormat --noTrailerFormat --range=?locker -format="{membername},{locker},{revision}\n"<br />

displays one line per locked revision, containing the membername, locker, and the revision<br />

locked.<br />

The revisions are printed in order from the highest revision to the lowest.<br />

--trailerFormat=value<br />

defines the trailer to be used.<br />

--fields=field1[:width1],field2[:width2]...<br />

allows you to select fields to be printed, specified in the format<br />

field1[:width1],field2[:width2].... Specifying the column [:width] (in pixels) for each field is<br />

optional - widths are only available with the -g or --gui options. Under the CLI the fields<br />

are separated with a space.<br />

This option and the --format option are mutually exclusive.<br />

The fields available for printing can be one or more of the following:<br />

221 of 457


added<br />

per revision: the number of lines/bytes added for the current revision.<br />

alllabels<br />

global: all labels on any revision of the member, in the format<br />

label:revision[,label:revision]...<br />

alllockers<br />

global: user identifiers of all those who have locked revisions, in the format<br />

user:revision[,user:revision]...<br />

archivedescription<br />

global: the archive description.<br />

archivename<br />

global: the name of the archive to which the member refers.<br />

archiveshared<br />

global: indicators for members that share another member's archive; 1 if shared, 0 if<br />

not shared.<br />

attributes<br />

global: member attributes in the form attr=value[,attr=value].<br />

author<br />

per revision: author of the revision.<br />

branchcount<br />

global: number of branches.<br />

branchid<br />

global: default branch.<br />

branchtiprev<br />

global: tip of the branch on which the member revision is located.<br />

<strong>com</strong>pressed<br />

global: 1 if archive is stored <strong>com</strong>pressed, otherwise 0.<br />

cpid<br />

per revision: the associated change package identifier (applies only when change<br />

packages are enabled).<br />

cpsummary<br />

per revision: the associated change package summary (applies only when change<br />

packages are enabled).<br />

date<br />

per revision: date on the revision.<br />

deleted<br />

per revision: the number of lines/bytes deleted on the current revision.<br />

description<br />

per revision: the revision description.<br />

format<br />

global: the storage format; 1 if stored as text, 0 if stored in binary format.<br />

formattedlabels<br />

global: all labels formatted into 80 column lines.<br />

frozen<br />

global: indicators for frozen members; 1 if frozen, or 0 if not frozen.<br />

222 of 457


haslabels<br />

global: 1 if alllabels is non-null, 0 if null.<br />

per revision: 1 if labels is non-null, 0 if null.<br />

haslocker<br />

per revision: 1 if locker is non-null, 0 if null.<br />

hasnewrevdelta<br />

global: displays 1 if the member revision is not on a tip.<br />

haspackage<br />

per revision: displays 1 if cpid is set, indicating the presence of a change package.<br />

headrev<br />

global: displays the head revision number.<br />

issandbox<br />

global: displays 1 if it is a sandbox, 0 if a project.<br />

labels<br />

per revision: a <strong>com</strong>ma separated list of labels on this revision.<br />

lockdevpath<br />

per revision: displays the name of the development path where the lock on the<br />

revision was made from. This information is relevant when the locking policy is set to<br />

devpath, allowing a single user to have a single lock on an archive per development<br />

path. Contact your administrator for more information.<br />

locker<br />

per revision: the user ID of the user with this revision locked, or null.<br />

lockhost<br />

per revision: displays the host name of the <strong>com</strong>puter that locked the member.<br />

lockproject<br />

per revision: displays the name and path of the project where the member revision<br />

was locked from. If the member revision was locked from a shared subproject, it is<br />

the original project's name and path that are displayed.<br />

locksandbox<br />

per revision: displays the name of the sandbox where the lock on the revision was<br />

made, and is relevant when viewing the information from the Locker Host.<br />

locktimestamp<br />

per revision: when locked, displays the time stamp for when the member was locked,<br />

otherwise null.<br />

memberdevbranch<br />

global: displays the member's development branch.<br />

membername<br />

global: displays the name of the member.<br />

memberrev<br />

global: displays the member revision number.<br />

223 of 457


memberrule<br />

global: displays the member rule on one line (in the header, if it exists).<br />

projectname<br />

global: from a project, displays the name of the project or subproject that the member<br />

belongs to. From a sandbox, displays the name of the sandbox or subsandbox that<br />

the member belongs to.<br />

projecttype<br />

global: displays 1 if the project is a regular project, 2 if the project is a build project, 3<br />

if the project is a variant project.<br />

rawmemberrule<br />

global: displays the member rule using the CLI syntax (in the header section, if it<br />

exists).<br />

relativemembername<br />

global: displays the member name relative to the top level project.<br />

revision<br />

per revision: revision number.<br />

revisioncount<br />

global: displays the count of the revisions.<br />

revisionsonbranchcount<br />

global: the number of revisions on branches.<br />

state<br />

per revision: displays the state.<br />

storageformat<br />

global: displays 1 if stored by reference, 0 if stored by delta.<br />

strictlocked<br />

global: displays an indicator for strictlocked members; 1 if strictlocked, otherwise 0.<br />

trunktip<br />

global: displays the trunk tip revision number.<br />

type<br />

global: always 0 to indicate a normal file member.<br />

workingarchive<br />

global: displays the name of the archive from which the working file is derived .<br />

NOTE: In the case where the working file was derived from an archive that was<br />

based on a server-side system setup (i.e. based on some default RCSPath or<br />

WorkToArch setting, as opposed to an explicit archive= reference), the<br />

workingarchive field displays the value "(default:)". The<br />

actual name of the archive from which the working file was derived can then be<br />

determined from the value for the archivename field.<br />

workingfile<br />

global: displays the working file name; null in a project.<br />

workingfileexists<br />

global: displays 1 if a sandbox and working file exists, 0 if operating on a project.<br />

workingfilerevunknown<br />

global: displays 1 in a sandbox if the working revision is unknown, or 0 if known.<br />

224 of 457


Always displays 0 in a project.<br />

workingrevdelta<br />

global: displays 1 in a sandbox if the working revision is the same as the member<br />

revision, or displays 0 in a project.<br />

workingfilewritable<br />

global: displays 1 if a sandbox and working file are writable.<br />

workingrev<br />

global: displays the working revision.<br />

--height=value<br />

used with the -g or --gui options, specifies the height of the print view window, in pixels;<br />

value must be a whole number.<br />

--width=value<br />

used with the -g or --gui options, specifies the width of the print view window, in pixels;<br />

value must be a whole number.<br />

-x value<br />

used with the -g or --gui options, specifies the x location in pixels of the window.<br />

-y value<br />

used with the -g or --gui options, specifies the y location in pixels of the window.<br />

--[no]persist<br />

controls whether this presentation of information should continue to be updated as new<br />

information be<strong>com</strong>es available. --nopersist forces a static "snapshot" of information,<br />

while --persist gives real-time updates.<br />

member...<br />

identifies a specific member; use spaces to specify more than one member.<br />

DIAGNOSTICS<br />

See the diagnostics reference page for possible exit status values.<br />

PREFERENCES<br />

Using si setprefs or si viewprefs, you are able to set or view the preference keys for this<br />

<strong>com</strong>mand.<br />

SEE ALSO<br />

Commands:<br />

si archiveinfo, si diff, si memberinfo, si mods, si print, si projectinfo,<br />

si report, si revisioninfo, si sandboxinfo, si viewhistory<br />

Miscellaneous:<br />

225 of 457


ACL, diagnostics, options, preferences<br />

226 of 457


si sandboxes<br />

lists sandboxes on the client<br />

SYNOPSIS<br />

si sandboxes [--[no]displaySubs] [--height=value] [--manage] [--width=value]<br />

[-x value] [-y value] [(-?|--usage)] [(-N|--no)] [(-Y|--yes)] [--[no]batch] [--cwd=directory]<br />

[--forceConfirm=[yes|no]] [(-g|--gui)] [--[no]persist] [--quiet]<br />

[--settingsUI=[gui|default]] [-F|--selectionFile=value] [--status=[none|gui|default]]<br />

DESCRIPTION<br />

si sandboxes displays sandboxes currently registered on the MKS Source Integrity client and<br />

the corresponding project, server name, and port number, for example:<br />

Options<br />

c:\demoapp\project.pj -> /projects/demoapp/project.pj<br />

(server.mks.<strong>com</strong>:7001)<br />

This <strong>com</strong>mand takes the universal options available to all si <strong>com</strong>mands, as well as some general<br />

options. See the options reference page for descriptions.<br />

--[no]displaySubs<br />

controls whether to display subsandboxes.<br />

--height=value<br />

used with the -g or --gui options, specifies the height of the sandbox view window, in<br />

pixels; value must be a whole number.<br />

--manage<br />

enables the sandbox manager view for those using the -g or --gui options.<br />

--width=value<br />

used with the -g or --gui options, specifies the width of the sandbox view window, in<br />

pixels; value must be a whole number.<br />

-x value<br />

used with the -g or --gui options, specifies the x location in pixels of the window.<br />

-y value<br />

used with the -g or --gui options, specifies the y location in pixels of the window.<br />

--[no]persist<br />

controls whether this presentation of information should continue to be updated as new<br />

information be<strong>com</strong>es available. --nopersist forces a static "snapshot" of information,<br />

while --persist gives real-time updates.<br />

227 of 457


DIAGNOSTICS<br />

See the diagnostics reference page for possible exit status values.<br />

PREFERENCES<br />

Using si setprefs or si viewprefs, you are able to set or view the preference keys for this<br />

<strong>com</strong>mand.<br />

SEE ALSO<br />

Commands:<br />

si createsandbox, si dropsandbox, si importsandbox, si sandboxinfo, si<br />

viewsandbox<br />

Miscellaneous:<br />

ACL, diagnostics, options, preferences<br />

228 of 457


si sandboxinfo<br />

lists information about a sandbox<br />

SYNOPSIS<br />

si sandboxinfo [--[no]attributes] [(-S sandbox|--sandbox=sandbox)]<br />

[--hostname=server] [--port=number] [--password=password] [--user=name]<br />

[(-?|--usage)] [(-N|--no)] [(-Y|--yes)] [--[no]batch] [--cwd=directory]<br />

[--forceConfirm=[yes|no]] [(-g|--gui)] [--quiet] [--settingsUI=[gui|default]]<br />

[-F|--selectionFile=value] [--status=[none|gui|default]]<br />

DESCRIPTION<br />

si sandboxinfo displays current information about a sandbox, for example:<br />

Options<br />

Sandbox Name: c:\SourceCode\project.pj<br />

Project Name: c:/master_projects/SourceCode/project.pj<br />

Server: intra-wif:7001<br />

Revision: 1.4<br />

Last Checkpoint: Feb 15, 2003 - 3:28 PM<br />

Members: 0<br />

Subsandboxes: 3<br />

Line Terminator: native<br />

Project <strong>Description</strong>:<br />

Project Attributes: none<br />

Sandbox Attributes: none<br />

This <strong>com</strong>mand takes the universal options available to all si <strong>com</strong>mands, as well as some general<br />

options. See the options reference page for descriptions.<br />

--[no]attributes<br />

controls whether to display project and sandbox attributes.<br />

DIAGNOSTICS<br />

See the diagnostics reference page for possible exit status values.<br />

PREFERENCES<br />

229 of 457


Using si setprefs or si viewprefs, you are able to set or view the preference keys for this<br />

<strong>com</strong>mand.<br />

SEE ALSO<br />

Commands:<br />

si archiveinfo, si ci, si memberinfo, si mods, si projectinfo, si rlog, si<br />

sandboxes, si viewsandbox<br />

Miscellaneous:<br />

ACL, diagnostics, options, preferences<br />

230 of 457


si servers<br />

displays the current connections to an Integrity Server<br />

SYNOPSIS<br />

si servers [--[no]showVersion] [--height=value] [--width=value] [-x value] [-y value] [(-?|--usage)]<br />

[(-N|--no)] [(-Y|--yes)] [--[no]batch] [--cwd=directory] [--forceConfirm=[yes|no]] [(-g|--gui)]<br />

[--[no]persist]] [--quiet] [-F|--selectionFile=value] [--settingsUI=[gui|default]]<br />

[--status=[none|gui|default]]<br />

DESCRIPTION<br />

si servers displays active server connections in the format user@host_name:port.<br />

The default server connection is indicated by user@host_name:port(default).<br />

Options<br />

This <strong>com</strong>mand takes the universal options available to all si <strong>com</strong>mands, as well as some general options. See the<br />

options reference page for descriptions.<br />

--[no]showVersion<br />

controls whether to show build version information for the connected server. The presentation of this<br />

information is in the format [Build: 2015].<br />

--height=value<br />

used with the<br />

-g or --gui options, specifies the height of the servers view window, in pixels; value must be a whole number.<br />

--width=value<br />

used with the<br />

-g or --gui options, specifies the width of the servers view window, in pixels; value must be a whole number.<br />

-x value<br />

used with the -g or --gui options, specifies the x location in pixels of the window.<br />

-y value<br />

used with the -g or --gui options, specifies the y location in pixels of the window.<br />

--[no]persist<br />

controls whether this presentation of information should continue to be updated as new information be<strong>com</strong>es<br />

available. --nopersist forces a static "snapshot" of information, while --persist gives real-time updates.<br />

DIAGNOSTICS<br />

See the diagnostics reference page for possible exit status values.<br />

PREFERENCES<br />

Using si setprefs or si viewprefs, you are able to set or view the preference keys for this <strong>com</strong>mand.<br />

SEE ALSO<br />

231 of 457


Commands:<br />

si connect, si disconnect<br />

Miscellaneous:<br />

diagnostics, options, preferences<br />

232 of 457


si setmemberrule<br />

sets the member rule for one or more members<br />

SYNOPSIS<br />

si setmemberrule [--clear] [--[no]confirm] [--[no]expand] [-f]<br />

[--[no|confirm]overrideRule] [(-r rev|--revision=rev)]<br />

[(-R|--[no|confirm]recurse)] [--filter=filteroptions] [(-P project|--project=project)]<br />

[(-S sandbox|--sandbox=sandbox)] [--devpath=path] [--hostname=server]<br />

[--port=number] [--password=password] [--user=name] [(-?|--usage)]<br />

[(-F file|--selectionFile=file)] [(-N|--no)] [(-Y|--yes)] [--[no]batch] [--cwd=directory]<br />

[--forceConfirm=[yes|no]] [(-g|--gui)] [--quiet] [--settingsUI=[gui|default]]<br />

[--status=[none|gui|default]] member...<br />

DESCRIPTION<br />

A member rule is a revision--typically a symbolic revision--attached to a member that you can use<br />

regularly to update the member’s revision or use it with any <strong>com</strong>mand that allows you to specify the<br />

member rule as a pre-defined revision. In the graphical user interface, only the Check Out and<br />

Update Member Revision <strong>com</strong>mands allow you to specify a member rule. In the <strong>com</strong>mand line<br />

interface, any <strong>com</strong>mand that accepts the -r|--revision option allows you to specify a member<br />

rule. For example, you can check out a revision corresponding to the member rule in the graphical<br />

user interface or add a label to a revision corresponding to the member rule in the <strong>com</strong>mand line<br />

interface. After you create a rule for a member, you can also view the rule using the si<br />

memberinfo <strong>com</strong>mand.<br />

Important: By design, applying a rule as a member revision to a member does not dynamically<br />

update the member revision of the corresponding member in an external project configuration<br />

(normal, variant, build). For example, if member 1’s member revision is updated in project A, the<br />

corresponding member in a variant of project A with the rule configured to link to project A is not<br />

updated with the same member revision. To update the corresponding member in the variant<br />

according to the member rule, you must use the si updaterevision <strong>com</strong>mand with the<br />

member rule, or your administrator can configure the ClientLink.js sample event trigger script<br />

that enables dynamic updating of linked member revisions under certain conditions. For more<br />

information, contact your administrator.<br />

Example:<br />

1. A project administrator defines a rule based on a label and implements it:<br />

si setmemberrule -rReadyForUse demoapp.c demoapp.h<br />

233 of 457


si updaterevision -r:rule demoapp.c demoapp.h<br />

si freeze demoapp.c demoapp.h<br />

2. Developers work as usual, using :member.<br />

Note: In this scenario, it is not expected that members with the rule are modified locally.<br />

3. From time to time, the project administrator re-applies the rule, based on new revisions<br />

marked ReadyForUse:<br />

Options<br />

si thaw demoapp.c demoapp.h<br />

si updaterevision -r:rule demoapp.c demoapp.h<br />

si freeze demoapp.c demoapp.h<br />

Several rule filters are available so you can easily work with members that contain rules. For<br />

more information, see the --filter option in the options reference page.<br />

This <strong>com</strong>mand takes the universal options available to all si <strong>com</strong>mands, as well as some general<br />

options. See the options reference page for descriptions.<br />

-r<br />

--revision<br />

revision to update the member revision to. For revision options, see options.<br />

--clear<br />

clears the member rule and removes it from the specified members.<br />

--[no]confirm<br />

causes Source Integrity to confirm that the rule will be cleared.<br />

--[no]expand<br />

controls whether to expand the revision before setting the rule.<br />

-f<br />

forces removal of the rule without confirmation.<br />

--[no|confirm]overrideRule<br />

controls whether to override the existing member rule.<br />

member...<br />

identifies a specific member; use spaces to specify more than one member.<br />

DIAGNOSTICS<br />

See the diagnostics reference page for possible exit status values.<br />

234 of 457


PREFERENCES<br />

Using si setprefs or si viewprefs, you are able to set or view the preference keys for this<br />

<strong>com</strong>mand.<br />

SEE ALSO<br />

Commands:<br />

si ci, si co, si edit, si resync, si revert, si updatearchive, si<br />

updaterevision<br />

Miscellaneous:<br />

ACL, diagnostics, options, preferences<br />

235 of 457


si setprefs<br />

sets preferences<br />

SYNOPSIS<br />

si setprefs [--<strong>com</strong>mand=value] [--[no]resetToDefault] [--[no]save] [--[no]ask]<br />

[--ui=[unspecified|gui|cli|api]] [(-?|--usage)] [(-F file|--selectionFile=file)] [(-N|--no)]<br />

[(-Y|--yes)] [--[no]batch] [--cwd=directory] [--forceConfirm=[yes|no]] pref[=value]...<br />

DESCRIPTION<br />

si setprefs sets preferences and configuration options. These settings are used to determine default<br />

behaviors for other <strong>com</strong>mands - each option on each <strong>com</strong>mand has a preference key associated with it.<br />

The si viewprefs <strong>com</strong>mand lists the <strong>com</strong>mands and preference keys. Changes to your preferences<br />

are either for the current client session (until si exit is used) or may be permanently saved in your<br />

system's home directory, into a file named IntegrityClient.rc, using the --save option.<br />

To permanently enable keyword expansion when checking in members, for example, you would specify:<br />

si setprefs --<strong>com</strong>mand=ci --save keywordExpand=expand<br />

Your administrator can also lock certain preferences from the Integrity Server, preventing you from<br />

configuring them using the si setprefs <strong>com</strong>mand. Preferences that are locked -- viewable with si<br />

viewprefs -- display (locked) at the end of the output line. The following preferences can be locked<br />

from the server by editing Source Integrity policies in the Administration Client:<br />

Tip: For information on editing Source Integrity policies, see "Configuring the Integrity Server" in the<br />

Integrity Server Administration Guide.<br />

Preference Affected Commands<br />

branchIfVariant si co , si lock<br />

breakLock si unlock<br />

changePackageID si co, si lock<br />

createBranch si lock<br />

onLock si co<br />

restoreTimestamp<br />

si resync,<br />

si resynccp, si revert<br />

retainWorkingFile si add, si ci<br />

saveTimestamp si add, si ci<br />

sparse si importsandbox<br />

updateMemberRev si ci<br />

236 of 457


Warning: Do not edit the IntegrityClient.rc file manually, because preferences that appear more<br />

than once in the IntegrityClient.rc file can cause Source Integrity to behave unpredictably.<br />

Options<br />

This <strong>com</strong>mand takes the universal options available to all si <strong>com</strong>mands, as well as some general options.<br />

See the options reference page for descriptions.<br />

--<strong>com</strong>mand=value<br />

identifies the <strong>com</strong>mand to be set. For an easy way to see a list of <strong>com</strong>mands and values that may<br />

be set, simply type the si viewprefs <strong>com</strong>mand, either piped through |more or redirected to a<br />

file, for example:<br />

si viewprefs --global --showValidValues >prefs.txt<br />

The <strong>com</strong>mands and preference keys are also listed on the preferences reference page.<br />

--[no]resetToDefault<br />

controls whether to revert specified settings to the default values as shipped with MKS Source<br />

Integrity Client. If specifying --resetToDefault, you must not specify =value for each preference.<br />

--[no]save<br />

controls whether changes should be permanently saved.<br />

--[no]ask<br />

controls prompts to the user for specific preferences. Each preference option may be set to either -ask<br />

or --noask. When the <strong>com</strong>mand itself is run, any option set to --ask and that is not explicitly<br />

set with <strong>com</strong>mand line options will be queried. If this --ask option is set, then you do not specify a<br />

value for the preference at the same time, but instead the pref=value must supply one of the<br />

following four valid ask values:<br />

once<br />

never<br />

asks the user the first time only, and then uses the provided value every time after for the<br />

duration of that <strong>com</strong>mand.<br />

never asks the user for a response, but uses the current setting (which may be specified by a<br />

preference).<br />

element-last<br />

asks the user for each element of the selection, providing the most recently used value as the<br />

default.<br />

element-pref<br />

asks the user for each element of the selection, resetting the default to the value specified by<br />

the preference.<br />

For example, to set the server host for si connect to a specific host name, you specify something<br />

like:<br />

237 of 457


si setprefs --<strong>com</strong>mand=connect<br />

server.hostname=specific.hostname.<strong>com</strong><br />

but to set the preference to ask for a host name when using si connect, you specify something like:<br />

si setprefs --<strong>com</strong>mand=connect --ask<br />

server.hostname=element-last<br />

--ui=[unspecified|gui|cli|api]<br />

controls whether to apply the preference to the graphical user interface, the <strong>com</strong>mand line interface,<br />

or when the interface is unspecified. By default, --ui=cli is implied when issuing the si<br />

setprefs. To set preferences for GUI behavior, however, you should specify --ui=gui. For<br />

example, to set the manage preference to be true in the GUI for the si sandboxes <strong>com</strong>mand, you<br />

would type:<br />

si setprefs --<strong>com</strong>mand=sandboxes --ui=gui manage=true<br />

These correlate to settings in the IntegrityClient.rc file, which can be seen as having the gui.si. or<br />

cli.si. prefix, or simply the si. prefix when it is unspecified.<br />

pref[=value]...<br />

identifies the preference string. If you specified the --resetToDefault option, then you only need<br />

to specify the preference name; otherwise specify a value for the preference. Use spaces to specify<br />

multiple preferences.<br />

DIAGNOSTICS<br />

See the diagnostics reference page for possible exit status values.<br />

PREFERENCES<br />

Using si setprefs or si viewprefs, you are able to set or view the preference keys for this<br />

<strong>com</strong>mand.<br />

SEE ALSO<br />

Commands:<br />

si loadrc, si viewprefs<br />

Miscellaneous:<br />

diagnostics, options, preferences<br />

238 of 457


si setprojectdescription<br />

sets the project description<br />

SYNOPSIS<br />

si setprojectdescription [--description=desc] [(-P project|--project=project)]<br />

[(-S sandbox|--sandbox=sandbox)] [--devpath=path] [--hostname=server]<br />

[--port=number] [--password=password] [--user=name] [(-?|--usage)] [(-N|--no)]<br />

[(-Y|--yes)] [--[no]batch] [--cwd=directory] [--forceConfirm=[yes|no]] [(-g|--gui)]<br />

[--quiet] [--settingsUI=[gui|default]] [-F|--selectionFile=value]<br />

[--status=[none|gui|default]]<br />

DESCRIPTION<br />

si setprojectdescription sets the one line description of a project.<br />

Options<br />

This <strong>com</strong>mand takes the universal options available to all si <strong>com</strong>mands, as well as some general<br />

options. See the options reference page for descriptions.<br />

--description=desc<br />

specifies the new description text to be set as the project description.<br />

Note:<br />

<strong>Description</strong>s that include spaces must be enclosed by quotes.<br />

DIAGNOSTICS<br />

See the diagnostics reference page for possible exit status values.<br />

PREFERENCES<br />

Using si setprefs or si viewprefs, you are able to set or view the preference keys for this<br />

<strong>com</strong>mand.<br />

SEE ALSO<br />

Commands:<br />

239 of 457


si addprojectlabel, si appendrevdesc, si checkpoint, si projectinfo, si<br />

viewproject, si viewprojecthistory<br />

Miscellaneous:<br />

ACL, diagnostics, options, preferences<br />

240 of 457


si sharesubproject<br />

shares an existing subproject between multiple projects<br />

SYNOPSIS<br />

si sharesubproject [--sharedProject=project location]<br />

[-r subproject revision|--subprojectRevision=subproject revision]<br />

[--subprojectDevelopmentPath=subproject development path name|--variant=subproject development path<br />

name] [--type=[normal|variant|build|default]] [(-P project|--project=project)]<br />

[(-S sandbox|--sandbox=sandbox)] [--devpath=development path name] [--hostname=server]<br />

[--port=number] [--password =password] [--user=name] [(-?|--usage)] [(-F file|--selectionFile=file)]<br />

[(-N|--no)] [(-Y|--yes)] [--[no]batch] [--cwd=directory] [--forceConfirm=[yes|no]] [(-g|--gui)] [--quiet]<br />

[--settingsUI=[gui|default]] [--status=[none|gui|default]] subproject location<br />

DESCRIPTION<br />

A shared subproject is a subproject that is a member of more than one project. Source Integrity allows you to share a<br />

subproject between two or more projects by referencing the original subproject. A shared subproject allows you to<br />

access <strong>com</strong>mon members across many projects. Shared subprojects are not required to be located within the same<br />

directory structure or project hierarchy.<br />

A shared subproject functions the same as an unshared subproject and is accessible by the same <strong>com</strong>mands.<br />

Shared subprojects that were created in a previous version of Source Integrity (Standard Edition) are detected as<br />

they are accessed by Source Integrity Enterprise without disrupting the operation. The format of these subprojects is<br />

retained until you change or update it to the new format by re-configuring it.<br />

Options<br />

This <strong>com</strong>mand takes the universal options available to all si <strong>com</strong>mands, as well as some general options. See the<br />

options reference page for descriptions.<br />

--sharedProject=project location<br />

specifies the path and name of the subproject you want to share, for example,<br />

c:/Libra_Program/project.pj.<br />

-r subproject revision<br />

--subprojectRevision=subproject revision<br />

specifies the revision number (for build subprojects). For example, 1.5. This option is used with -type=build.<br />

--subprojectDevelopmentPath=subproject development path name<br />

--variant=subproject development path name<br />

specifies the development path name (for variant subprojects). For example, Service_Pack3. This option is<br />

used with --type=variant<br />

--type=[normal|variant|build|default]<br />

specifies the new configuration type for the subproject.<br />

--type=normal configures the subproject to the master (non-variant) version of the subproject.<br />

--type=variant configures the subproject based upon a specific development path. The option is used<br />

with --variant=subproject development path name or --subprojectDevelopmentPath=subproject<br />

241 of 457


development path name.<br />

--type=build configures the subproject as a static subproject based upon a specific revision of the master<br />

project that is used for building or testing the project, but not for further development. This option is used with -<br />

r subproject revision or --subprojectRevision=subproject revision.<br />

--type=default configures the subproject based on the type that is consistent with the parent project that<br />

you are adding the subproject to. For example, if you add a subproject to a normal project, the subproject is<br />

added as a normal type. For information on what the default type is, see your administrator.<br />

-P project name<br />

--project=project name<br />

specifies the path and name of the project you want to add the shared subproject to, for example,<br />

c:/Aurora_Program/bin/project.pj.<br />

subproject location<br />

specifies where in the project you want the shared subproject to appear, for example,<br />

c:/Aurora_Program/bin/Libra/.<br />

DIAGNOSTICS<br />

See the diagnostics reference page for possible exit status values.<br />

PREFERENCES<br />

Using si setprefs or si viewprefs, you are able to set or view the preference keys for this <strong>com</strong>mand.<br />

SEE ALSO<br />

Commands:<br />

si addsubproject, si checkpoint, si configuresubproject, si createproject, si<br />

createsandbox, si createsubproject, si drop, si dropproject, si importproject, si<br />

projectinfo, si projects, si viewproject<br />

Miscellaneous:<br />

ACL, diagnostics, options, preferences<br />

242 of 457


si snapshot<br />

records the state of a sandbox.<br />

SYNOPSIS<br />

si snapshot [--targetDevpath=value] [--author=value] [-d|--description=value]<br />

[--descriptionFile=snapshot] [-L|--label=value] [--[no]labelMembers]<br />

[--[no]notify] [-s|--state=value] [--[no]stateMembers] [-S|--sandbox=value]<br />

[--hostname=server] [--port=number] [--password=password] [--user=name]<br />

[(-?|--usage)] [(-N|--no)] [(-Y|--yes)] [--[no]batch] [--cwd=directory]<br />

[--forceConfirm=[yes|no]] [(-g|--gui)] [--quiet] [--settingsUI=[gui|default]]<br />

[--status=[none|gui|default]]<br />

DESCRIPTION<br />

si snapshot records a capture of the current state of a sandbox, where each element in the<br />

sandbox can be identified with a pre-existing entity in the repository on the Integrity Server. The<br />

sandbox snapshot creates a standard project revision from which a build sandbox can be created<br />

and a development path assigned. The project revision number takes the form of a branched<br />

revision in the project history. For example, if the head revision of the project is 1.1, then the<br />

project revision created by the snapshot will be 1.1.1.1.<br />

Note: si snapshot records the state of a sandbox, while si checkpoint records the state of a<br />

project. Checkpointing is re<strong>com</strong>mended for recording milestones during the development of a<br />

project; however, there may be situations where you may need to take a snapshot of a sandbox to<br />

record the state for later use.<br />

The state of a sandbox is defined by its set of elements, which include the following:<br />

● sandbox members identified with an archive and working revision from which the working<br />

file was created<br />

● former members that were dropped, but are still present in your sandbox<br />

● subsandboxes, identified by project name and type<br />

● former subsandboxes that were dropped but are still present in your sandbox<br />

Note the following about how si snapshot handles the set of sandbox elements:<br />

● To be included in the snapshot, all working files must be checked in. There must be no<br />

working file changes in the sandbox.<br />

● If the working file revision differs from the member revision, it is the working file revision that<br />

is included in the snapshot.<br />

● Members with no working files are not included in the snapshot.<br />

243 of 457


● Former members that still have working files in the sandbox directory appear as members in<br />

the snapshot.<br />

● Former subprojects that are still in the sandbox directory appear as restored subprojects in<br />

the snapshot.<br />

For more information on sandbox snapshots, see the Source Integrity Enterprise User Guide.<br />

Options<br />

This <strong>com</strong>mand takes the universal options available to all si <strong>com</strong>mands, as well as some general<br />

options. See the options reference page for descriptions.<br />

--targetDevpath=value<br />

specifies the development path to create the snapshot from. With this option you can only<br />

specify an existing development path.<br />

--author=value<br />

specifies the author of the snapshot revision.<br />

-d<br />

--description value<br />

specifies the description for the snapshot revision.<br />

--descriptionFile=value<br />

specifies a file containing the description for the snapshot revision.<br />

-L<br />

--label=value<br />

specifies a label for the snapshot revision. Note the following about using labels:<br />

❍ Labels cannot contain colons(:), square brackets ([ ]), or leading spaces.<br />

❍ Labels cannot have the same format as a valid revision number.<br />

❍ Labels that include spaces must be enclosed by quotes.<br />

❍ MKS re<strong>com</strong>mends not using hyphens (-) in labels. Using hyphens may cause some<br />

si <strong>com</strong>mands to fail.<br />

--[no]labelMembers<br />

assigns the specified label to the working revisions.<br />

--[no]notify<br />

provides a notification when the snapshot has been created.<br />

-s<br />

--state=value<br />

specifies the state for the project revision created by the snapshot.<br />

--[no]stateMembers<br />

specifies whether to apply the state to all members or only the project.<br />

-S<br />

--sandbox=value<br />

specifies the name of the sandbox to snapshot.<br />

244 of 457


DIAGNOSTICS<br />

See the diagnostics reference page for possible exit status values.<br />

PREFERENCES<br />

Using si setprefs or si viewprefs, you are able to set or view the preference keys for this<br />

<strong>com</strong>mand.<br />

SEE ALSO<br />

Commands:<br />

si archiveinfo, si memberinfo, si mods, si print, si revisioninfo, si<br />

rlog, si sandboxinfo, si viewhistory, si viewlabels, si viewproject, si<br />

viewprojecthistory<br />

Miscellaneous:<br />

ACL, diagnostics, options, preferences<br />

245 of 457


si submit<br />

submits a deferred operation<br />

SYNOPSIS<br />

si submit [(--cpid ID|--changePackageId=ID)] [--issueId=ID]<br />

[--[no|confirm]closeCP] [-f] [--[no]overrideCPID] [(-R|--[no|confirm]recurse)]<br />

[--filter=filteroptions] [--[no|confirm]recurse] [(-S sandbox|--sandbox=sandbox)]<br />

[--hostname=server] [--port=number] [--password=password] [--user=name]<br />

[(-?|--usage)] [-F value] [(-N|--no)] [(-Y|--yes)] [--[no]batch] [--cwd=value]<br />

[--forceConfirm=[yes|no]] [(-g|--gui)] [--quiet] [--settingsUI=[gui|default]]<br />

[--status=[none|gui|default]] [-F|--selectionFile=value] sandbox member...<br />

DESCRIPTION<br />

si submit submits a deferred operation in your sandbox. Submitting the operation <strong>com</strong>pletes the<br />

<strong>com</strong>mand and makes it visible in the associated project. If reviews are mandatory, submitting a<br />

deferred operation creates a pending entry in the associated change package.<br />

Options<br />

This <strong>com</strong>mand takes the universal options available to all si <strong>com</strong>mands, as well as some general<br />

options. See the options reference page for descriptions.<br />

--cpid=ID<br />

--changePackageId=ID<br />

identifies a change package that is notified of this action, for example, 145:2. Note the<br />

following about using this option:<br />

❍ This option can only be specified if change packages are enabled.<br />

❍ If the Integrity Manager integration is enabled, but it is not mandatory to specify a<br />

change package, or if no change package is applicable, you must specify<br />

--changePackageId=:none.<br />

❍ The next time you are prompted for a change package ID, the last used change<br />

package ID is displayed by default, if :none was specified or at least one change<br />

package was successfully updated from the last operation.<br />

--[no|confirm]closeCP<br />

controls whether to close the associated change package.<br />

--nocloseCP means do not close the change package.<br />

--confirmcloseCP means ask before closing the change package.<br />

246 of 457


--closeCP always closes the change package.<br />

-f<br />

force all elements to be submitted with the specified change package ID override.<br />

--issueId=ID<br />

identifies an MKS Integrity Manager issue that is notified of this action. This option is<br />

another way of redirecting to a change package. If you have an issue assigned to you that<br />

contains one open change package, you can specify the issue ID instead of the change<br />

package ID. This option can only be specified if the Integrity Manager integration is enabled.<br />

See the Integrity Server Administration Guide or your administrator for details on using the<br />

Integrity Manager integration.<br />

--[no]overrideCPID<br />

force all elements to be submitted with the specified change package ID override.<br />

sandbox member...<br />

identifies a specific member; use spaces to specify more than one member.<br />

DIAGNOSTICS<br />

See the diagnostics reference page for possible exit status values.<br />

PREFERENCES<br />

Using si setprefs or si viewprefs, you are able to set or view the preference keys for this<br />

<strong>com</strong>mand.<br />

SEE ALSO<br />

Commands:<br />

si add, si ci, si drop, si move, si rename<br />

Miscellaneous:<br />

ACL, diagnostics, options, preferences<br />

247 of 457


si submitcp<br />

submits a change package.<br />

SYNOPSIS<br />

si submitcp [--[no|confirm]closeCP] [--hostname=server] [--port=number]<br />

[--password=password] [--user=name] [(-?|--usage)] [(-F file|--selectionFile=file)]<br />

[(-N|--no)] [(-Y|--yes)] [--[no]batch] [--cwd=directory] [--forceConfirm=[yes|no]]<br />

[(-g|--gui)] [--quiet] [--settingsUI=[gui|default]] [--status=[none|gui|default]]<br />

[--[no|confirm]<strong>com</strong>mit] [--[no|confirm]deferredIsError]<br />

[--[no|confirm]ignoreNoDeferred] issue|issue:change package id...<br />

DESCRIPTION<br />

si submitcp submits the un<strong>com</strong>mitted operations in a change package. Although you can<br />

submit operations individually via si submit, you can ensure that no operations are missed by<br />

submitting a change package that contains deferred operations. Deferred operations are visible<br />

only from the Source Integrity Client, and are not <strong>com</strong>mitted to the project or repository until they<br />

are submitted. If reviews are mandatory, submitting the change package begins the review process<br />

(pending entries are created).<br />

When a change package is submitted, all of the deferred operations are submitted. Any locked<br />

members are converted to deferred check in operations and then checked in.<br />

When reviews are mandatory, submitting a change package begins the review process. Deferred<br />

entries be<strong>com</strong>e pending entries, and are <strong>com</strong>mitted to the server repository by Source Integrity<br />

once the change package has been accepted. For more information, see the Source Integrity<br />

Enterprise User Guide<br />

If the change package is a resolution change package, by default you are prompted with the option<br />

to apply the change package after it is submitted.<br />

Options<br />

This <strong>com</strong>mand takes the universal options available to all si <strong>com</strong>mands, as well as some general<br />

options. See the options reference page for descriptions.<br />

--[no|confirm]closeCP<br />

specifies whether to close the change package after it has been submitted.<br />

--[no|confirm]<strong>com</strong>mit<br />

specifies whether to <strong>com</strong>mit deferred or pending changes to the server repository, or submit<br />

them for review. The default is to <strong>com</strong>mit without confirmation.<br />

248 of 457


--[no|confirm]deferredIsError<br />

specifies whether to proceed with the submit operation if there are deferred change package<br />

entries.<br />

--[no|confirm]ignoreNoDeferred<br />

specifies whether to proceed with the submit operation if there are no deferred or lock<br />

change package entries.<br />

issue...<br />

issue:change package id...<br />

issue identifies a specific issue that contains all open change packages that you want to<br />

close; use spaces to specify more than one issue.<br />

issue:change package id identifies a specific change package to close; use spaces to<br />

specify more than one change package.<br />

DIAGNOSTICS<br />

See the diagnostics reference page for possible exit status values.<br />

PREFERENCES<br />

Using si setprefs or si viewprefs, you are able to set or view the preference keys for this<br />

<strong>com</strong>mand.<br />

SEE ALSO<br />

Commands:<br />

si acceptcp, si rejectcp, si closecp, si add, si ci, si co, si cpissues, si<br />

createcp, si drop, si viewcps, si viewcp.<br />

Miscellaneous:<br />

ACL, diagnostics, options, preferences<br />

249 of 457


si thaw<br />

thaws a project member<br />

SYNOPSIS<br />

si thaw [(-R|--[no|confirm]recurse)] [--filter=filteroptions]<br />

[(-P project|--project=project)] [(-S sandbox|--sandbox=sandbox)] [--devpath=path]<br />

[--hostname=server] [--port=number] [--password=password] [--user=name]<br />

[(-?|--usage)] [(-F file|--selectionFile=file)] [(-N|--no)] [(-Y|--yes)] [--[no]batch]<br />

[--cwd=directory] [--forceConfirm=[yes|no]] [(-g|--gui)] [--quiet]<br />

[--settingsUI=[gui|default]] [--status=[none|gui|default]] member...<br />

DESCRIPTION<br />

si thaw thaws project members previously frozen with the si freeze <strong>com</strong>mand. Once thawed,<br />

all operations normally associated with a member can be performed again.<br />

Options<br />

This <strong>com</strong>mand takes the universal options available to all si <strong>com</strong>mands, as well as some general<br />

options. See the options reference page for descriptions.<br />

member...<br />

identifies a specific member; use spaces to specify more than one member.<br />

DIAGNOSTICS<br />

See the diagnostics reference page for possible exit status values.<br />

PREFERENCES<br />

Using si setprefs or si viewprefs, you are able to set or view the preference keys for this<br />

<strong>com</strong>mand.<br />

SEE ALSO<br />

Commands:<br />

si checkpoint, si freeze<br />

250 of 457


Miscellaneous:<br />

ACL, diagnostics, options, preferences<br />

251 of 457


si unlock<br />

unlocks a member<br />

SYNOPSIS<br />

si unlock [--[no|confirm]breakLock] [(-r rev|--revision=rev)]<br />

[(-R|--[no|confirm]recurse)] [--filter=filteroptions] [(-P project|--project=project)]<br />

[(-S sandbox|--sandbox=sandbox)] [--devpath=path] [--projectRevision=rev]<br />

[--hostname=server] [--port=number] [--password=password] [--user=name]<br />

[(-?|--usage)] [(-F file|--selectionFile=file)] [(-N|--no)] [(-Y|--yes)] [--[no]batch]<br />

[--cwd=directory] [--forceConfirm=[yes|no]] [(-g|--gui)] [--quiet]<br />

[--settingsUI=[gui|default]] [--status=[none|gui|default]] member...<br />

DESCRIPTION<br />

si unlock unlocks a member. If you do not specify any members, si unlock applies to all<br />

members. By default, si unlock unlocks the member revision of each archived member.<br />

Options<br />

This <strong>com</strong>mand takes the universal options available to all si <strong>com</strong>mands, as well as some general<br />

options. See the options reference page for descriptions.<br />

--[no|confirm]breakLock<br />

controls whether to break someone else's lock. If someone else has the member locked and<br />

you have the BreakLock permission (see ACL), you will normally be prompted to confirm<br />

whether you want to break their locks.<br />

member...<br />

identifies a specific member; use spaces to specify more than one member.<br />

DIAGNOSTICS<br />

See the diagnostics reference page for possible exit status values.<br />

PREFERENCES<br />

Using si setprefs or si viewprefs, you are able to set or view the preference keys for this<br />

<strong>com</strong>mand.<br />

252 of 457


SEE ALSO<br />

Commands:<br />

si ci, si co, si edit, si lock, si rlog<br />

Miscellaneous:<br />

ACL, diagnostics, options, preferences<br />

253 of 457


si unlockarchive<br />

unlocks a revision in an archive.<br />

SYNOPSIS<br />

si unlockarchive [--archive=value] [-r|--revision=value] [--hostname=server]<br />

[--port=number] [--password=password] [--user=name] [(-?|--usage)] [(-N|--no)]<br />

[(-Y|--yes)] [--[no]batch] [--cwd=directory] [--forceConfirm=[yes|no]] [(-g|--gui)]<br />

[--quiet] [--settingsUI=[gui|default]] [-F|--selectionFile=value]<br />

[--status=[none|gui|default]]<br />

DESCRIPTION<br />

si unlockarchive unlocks a revision in an archive. You can use this <strong>com</strong>mand to unlock<br />

members that have been dropped from a project, and members locked in a project for which you<br />

longer have permission to view.<br />

Options<br />

This <strong>com</strong>mand takes the universal options available to all si <strong>com</strong>mands, as well as some general<br />

options. See the options reference page for descriptions.<br />

--archive=value<br />

specifies the server side archive name.<br />

-r<br />

--revision=value<br />

specifies the locked revision number.<br />

DIAGNOSTICS<br />

See the diagnostics reference page for possible exit status values.<br />

PREFERENCES<br />

Using si setprefs or si viewprefs, you are able to set or view the preference keys for this<br />

<strong>com</strong>mand.<br />

SEE ALSO<br />

254 of 457


Commands:<br />

si archiveinfo, si memberinfo, si mods, si print, si revisioninfo, si<br />

rlog, si sandboxinfo, si viewhistory, si viewlabels, si<br />

viewprojecthistory, si viewsandbox<br />

Miscellaneous:<br />

ACL, diagnostics, options, preferences<br />

255 of 457


si updatearchive<br />

manipulates various member archive attributes<br />

SYNOPSIS<br />

si updatearchive [--archive<strong>Description</strong>=description] [--[no]<strong>com</strong>press]<br />

[--defaultBranch=value] [--storageFormat=[delta|reference]] [--[no]strictLock]<br />

[(-R|--[no|confirm]recurse)] [--filter=filteroptions] [(-P project|--project=project)]<br />

[(-S sandbox|--sandbox=sandbox)] [--devpath=path] [--projectRevision=rev]<br />

[--hostname=server] [--port=number] [--password=password] [--user=name]<br />

[(-?|--usage)] [(-F file|--selectionFile=file)] [(-N|--no)] [(-Y|--yes)] [--[no]batch]<br />

[--cwd=directory] [--forceConfirm=[yes|no]] [(-g|--gui)] [--quiet]<br />

[--settingsUI=[gui|default]] [--status=[none|gui|default]] member...<br />

DESCRIPTION<br />

si updatearchive manipulates various member archive attributes.<br />

Note:<br />

Options<br />

This <strong>com</strong>mand affects the base archive, and, therefore, all projects and development paths<br />

referring to the archive.<br />

This <strong>com</strong>mand takes the universal options available to all si <strong>com</strong>mands, as well as some general<br />

options. See the options reference page for descriptions.<br />

--archive<strong>Description</strong>=description<br />

sets the archive description for a member. description is stored in the member's meta data<br />

as an archive description. If description has spaces then it must be enclosed by quotes.<br />

--[no]<strong>com</strong>press<br />

controls whether to <strong>com</strong>press the member's archive. This is re<strong>com</strong>mended for use by the<br />

system administrator only. On WIN32/NT systems, use the NTFS built-in <strong>com</strong>pression<br />

instead.<br />

--defaultBranch=value<br />

sets the default branch MKS Source Integrity uses to check in files. If unspecified, files are<br />

checked in to the trunk.<br />

--storageFormat=[delta|reference]<br />

identifies what type of format to use in the archive. This is re<strong>com</strong>mended for use by the<br />

system ADMIN only. delta is the traditional Source Integrity reverse delta format, while<br />

reference means to store member history by reference -- each revision is stored as a<br />

separate file. Particularly for binary files, storing by reference can enhance performance.<br />

256 of 457


--[no]strictLock<br />

controls whether to set strict locking for the member. Without a strict locking policy, Source<br />

Integrity respects locks but does not require them. When --strictLock is specified,<br />

Source Integrity uses the file system's read-only attribute to assist in the locking process. If<br />

you do not lock a revision when you check it out, the working file based on that revision is<br />

read-only.<br />

member...<br />

identifies a specific member; use spaces to specify more than one member.<br />

DIAGNOSTICS<br />

See the diagnostics reference page for possible exit status values.<br />

PREFERENCES<br />

Using si setprefs or si viewprefs, you are able to set or view the preference keys for this<br />

<strong>com</strong>mand.<br />

SEE ALSO<br />

Commands:<br />

si ci, si co, si createdevpath, si edit, si resync, si revert, si<br />

updaterevision<br />

Miscellaneous:<br />

ACL, diagnostics, options, preferences<br />

257 of 457


si updateclient<br />

updates the Integrity Client with a Service Pack<br />

SYNOPSIS<br />

si updateclient [--[no|confirm]download] [--[no|confirm]shutdown]<br />

[--hostname=server] [--port=number] [--password=password] [--user=name]<br />

[(-?|--usage)] [(-F file|--selectionFile=file)] [(-N|--no)] [(-Y|--yes)] [--[no]batch]<br />

[--cwd=directory] [--forceConfirm=[yes|no]]<br />

DESCRIPTION<br />

si updateclient updates the Integrity Client with a Service Pack from the server if one is<br />

available. A Service Pack may be designated as required to address a known issue, or may<br />

provide enhancements. Client side Service Pack numbers are designated with a "C", for example,<br />

C04030003.<br />

Options<br />

This <strong>com</strong>mand takes the universal options available to some si <strong>com</strong>mands, as well as some<br />

general options. See the options reference page for descriptions.<br />

--[no|confirm]download<br />

automatically downloads a Service Pack if one is available.<br />

--[no|confirm]shutdown<br />

automatically shutdowns the client if a Service Pack is downloaded.<br />

DIAGNOSTICS<br />

See the diagnostics reference page for possible exit status values.<br />

PREFERENCES<br />

Using si setprefs or si viewprefs, you are able to set or view the preference keys for this<br />

<strong>com</strong>mand.<br />

SEE ALSO<br />

Commands:<br />

258 of 457


si connect, si disconnect<br />

Miscellaneous:<br />

ACL, diagnostics, options, preferences<br />

259 of 457


si updaterevision<br />

updates a project member revision to a specific revision<br />

SYNOPSIS<br />

si updaterevision [--cpid|--changepackageID=value] [--[no|confirm]closeCP]<br />

[--[no]defer] [--issueID=value] [(-r rev|--revision=rev)]<br />

[(-R|--[no|confirm]recurse)] [--filter=filteroptions] [(-P project|--project=project)]<br />

[(-S sandbox|--sandbox=sandbox)] [--devpath=path] [--hostname=server]<br />

[--port=number] [--password=password] [--user=name] [(-?|--usage)]<br />

[(-F file|--selectionFile=file)] [(-N|--no)] [(-Y|--yes)] [--[no]batch] [--cwd=directory]<br />

[--forceConfirm=[yes|no]] [(-g|--gui)] [--quiet] [--settingsUI=[gui|default]]<br />

[--status=[none|gui|default]] [--[no]save] member...<br />

DESCRIPTION<br />

si updaterevision updates a member revision to a specific pre-existing revision. This is useful<br />

when you want the member revisions in a project to reflect revisions based on a symbolic location<br />

in the development path (working file, head revision, trunk tip, member branch tip), property (state,<br />

label, timestamp), current project configuration, or external project configuration.<br />

Note: You cannot update a frozen member’s revision. You must first thaw the member (si thaw)<br />

and then update it.<br />

Options<br />

This <strong>com</strong>mand takes the universal options available to all si <strong>com</strong>mands, as well as some general<br />

options. See the options reference page for descriptions.<br />

-r<br />

--revision<br />

revision to update the member revision to. For revision options, see options.<br />

--[no]save<br />

Used to save any revision specified by -r (see options). Although existing saved revisions<br />

can be referenced using the :rule symbolic revision, this option has been deprecated in<br />

favor of the member rule. MKS re<strong>com</strong>mends using the member rule instead of the --<br />

[no]save option. For more information about the member rule, see si setmemberrule).<br />

--cpid=value<br />

--changePackageId=ID<br />

identifies a change package that is notified of this action, for example, 1452. Note the<br />

following about using this option:<br />

260 of 457


❍ This option can only be specified if change packages are enabled.<br />

❍ You must specify this option if you have requested to obtain a lock and TrackLocks is<br />

enabled, and/or it is mandatory to specify a change package.<br />

❍ If you have TrackLocks enabled, Source Integrity prompts you with the change<br />

package you used when you checked out the specified member, not the default<br />

change package. From the graphical user interface, you must manually select the<br />

change package.<br />

❍ If the integration is enabled, but it is not mandatory to specify a change package, or if<br />

no change package is applicable, you must specify --changePackageId=:none.<br />

❍ The next time you are prompted for a change package ID, the last used change<br />

package ID is displayed by default, if :none was specified or at least one change<br />

package was successfully updated from the last operation.<br />

--[no|confirm]closeCP<br />

closes the change package after <strong>com</strong>mand <strong>com</strong>pletion.<br />

--[no]defer<br />

controls whether to delay the operation in the project until the deferred operation is<br />

submitted. The operation in the sandbox still takes place immediately.<br />

--issueID=value<br />

specifies the issue ID that corresponds to the change package that records the changes.<br />

member...<br />

identifies a specific member; use spaces to specify more than one member.<br />

DIAGNOSTICS<br />

See the diagnostics reference page for possible exit status values.<br />

PREFERENCES<br />

Using si setprefs or si viewprefs, you are able to set or view the preference keys for this<br />

<strong>com</strong>mand.<br />

SEE ALSO<br />

Commands:<br />

si ci, si co, si edit, si resync, si revert, si updatearchive, si<br />

setmemberrule<br />

Miscellaneous:<br />

ACL, diagnostics, options, preferences<br />

261 of 457


si viewcp<br />

displays a change package's details<br />

SYNOPSIS<br />

si viewcp [--fields=field1[:width1],field2[:width2]...] [--[no]showCommitted]<br />

[--[no]showUn<strong>com</strong>mitted] [--[no]showPending] [--[no]showReviewLog]<br />

[--format=value] [--height=value] [--width=value] [-x value] [-y value]<br />

[--headerFormat=value] [--noFormat=value] [--noHeaderFormat=value]<br />

[--noTrailerFormat=value] [--trailerFormat=value] [--width=value]<br />

[--hostname=server] [--port=number] [--password=password] [--user=name]<br />

[(-?|--usage)] [(-F file|--selectionFile=file)] [(-N|--no)] [(-Y|--yes)] [--[no]batch]<br />

[--cwd=directory] [--forceConfirm=[yes|no]] [--quiet] [(-g|--gui)]<br />

[--settingsUI=[gui|default]] [--status=[none|gui|default]] issue|issue:change package id...<br />

DESCRIPTION<br />

si viewcp allows you to view details on any change package you select. You can select the<br />

change package using an issue ID or change package ID, and the change package does not have<br />

to be assigned to you.<br />

Options<br />

This <strong>com</strong>mand takes the universal options available to all si <strong>com</strong>mands, as well as some general<br />

options. See the options reference page for descriptions.<br />

--fields=field1[:width1],field2[:width2]...<br />

allows you to select fields to be printed, specified in the format<br />

field1[:width1],field2[:width2].... Specifying the column [:width] (in pixels) for each field is<br />

optional. Fields are separated with a space.<br />

The fields available for printing can be one or more of the following:<br />

archive<br />

displays the archive name of member in the change package entry.<br />

closeddate<br />

displays the date the change package was closed on.<br />

description<br />

displays the description of the selected change package.<br />

id<br />

displays the ID of the issue associated with the selected change package.<br />

isclosed<br />

262 of 457


indicates if the change package is closed.<br />

member<br />

displays the member names in the change package.<br />

project<br />

displays the project the change package is associated with.<br />

resolution<br />

indicates whether or not the selected change package is a resolution change<br />

package.<br />

resolutionlist<br />

displays the list of change packages resolved by a selected resolution change<br />

package (the resolution list is displayed by default if a resolution change package is<br />

selected).<br />

revision<br />

displays the member revision number.<br />

sandbox<br />

displays the name of the sandbox where the deferred operation or check out took<br />

place.<br />

server<br />

displays the server the change package resides on.<br />

siserver<br />

displays the Source Integrity server the change package resides on.<br />

state<br />

displays the status of the change package.<br />

summary<br />

displays the change package summary.<br />

timestamp<br />

displays the timestamp of the selected change package.<br />

type<br />

displays how the member was added to the change package: add, update, drop, lock,<br />

rename-to, or rename-from.<br />

user<br />

displays the ID of the user who added the member to the change package.<br />

variant<br />

displays the names of variant projects associated with the member.<br />

creationdate<br />

displays date the change package was created..<br />

--[no]showCommitted<br />

specifies if to display <strong>com</strong>mitted operations. Committed operations appear as change<br />

package entries that contain changes <strong>com</strong>mitted to the server repository.<br />

--[no]showUn<strong>com</strong>mitted<br />

specifies if to display un<strong>com</strong>mitted operations. Un<strong>com</strong>mitted operations are Lock or deferred<br />

entries that can be submitted to the server repository.<br />

--[no]showPending<br />

specifies if to display pending entries that have not yet <strong>com</strong>mitted to the repository.<br />

--[no]showReviewLog<br />

263 of 457


specifies if to display review information. Source Integrity provides review logs as part of a<br />

<strong>com</strong>plete review audit process. A log consists of individual records for each reviewer vote<br />

cast. Each time the change package is submitted for review, a new log begins.<br />

Each review record contains the following information:<br />

Review States The possible review states are:<br />

❍ Review Pending the change package is still in a state of Submitted and there are<br />

outstanding votes to be cast by reviewers.<br />

❍ Accepted the change package is in a state of Accepted, and all of the individual<br />

reviewers and a user from each reviewer group have accepted the change package.<br />

❍ Rejected the change package is in a state of Rejected, and at least one reviewer has<br />

rejected the change package.<br />

Reviewer Type The possible reviewer types are:<br />

❍ User Reviewer is a user voting in an individual capacity.<br />

❍ Group Reviewer is a user voting in a group capacity on behalf of that group.<br />

❍ Super Reviewer is a user casting an overriding vote in a super reviewer capacity,<br />

and is not required to be a user on the reviewer list or in a group on the group<br />

reviewer list.<br />

Votes The possible vote values are:<br />

❍ Pending signifies that the reviewer or group reviewer has not yet cast a vote.<br />

❍ Accepted signifies that the user has cast an accept vote for the change package.<br />

❍ Rejected signifies that the user has cast a reject vote for the change package.<br />

Comments Displays information that reviewers optionally provide to clarify their votes.<br />

Changes Displays in tabular form the changes that were made to upon submission of the<br />

change package.<br />

si viewcp also includes options that deal with formatting for the view.<br />

--format=value<br />

format for user-formatted text.<br />

--headerFormat=value<br />

header for user-formatted text.<br />

--height=value<br />

the height in pixels of the window.<br />

264 of 457


--noFormat=value<br />

format for user-formatted text.<br />

--noHeaderFormat=value<br />

header for user-formatted text.<br />

--noTrailerFormat=value<br />

trailer for user-formatted text.<br />

--trailerFormat=value<br />

trailer for user-formatted text.<br />

--width=value<br />

the width in pixels of the window. Can also be specified as fields=field1[:width1]....<br />

-x value<br />

used with the -g or --gui options, specifies the x location in pixels of the window.<br />

-y value<br />

used with the -g or --gui options, specifies the y location in pixels of the window.<br />

issue...<br />

issue:change package id...<br />

issue identifies a specific issue that contains all change packages that you want to view; use<br />

spaces to specify more than one issue.<br />

issue:change package id identifies a specific change package to view; use spaces to specify<br />

more than one change package.<br />

DIAGNOSTICS<br />

See the diagnostics reference page for possible exit status values.<br />

PREFERENCES<br />

Using si setprefs or si viewprefs, you are able to set or view the preference keys for this<br />

<strong>com</strong>mand.<br />

SEE ALSO<br />

Commands:<br />

si add, si ci, si closecp, si co, si cpissues, si createcp, si drop, si<br />

lock<br />

Miscellaneous:<br />

ACL, diagnostics, options, preferences<br />

265 of 457


266 of 457


si viewcps<br />

displays all open change packages created by you<br />

SYNOPSIS<br />

si viewcps [--fields=field1[:width1],field2[:width2]...] [--filter=value] [--height=value] [--width=value] [-x<br />

value] [-y value] [--query=value] [--hostname=server] [--port=number] [--password=password] [-user=name]<br />

[(-?|--usage)] [(-F file|--selectionFile=file)] [(-N|--no)] [(-Y|--yes)] [--[no]batch] [-cwd=directory]<br />

[--forceConfirm=[yes|no]] [--[no]persist] [--quiet] [--myReviews] [(-g|--gui)] [-settingsUI=[gui|default]]<br />

[--status=[none|gui|default]] [--[no]persist] issue|issue:change package id...<br />

DESCRIPTION<br />

si viewcps displays all open change packages created by you.<br />

Options<br />

This <strong>com</strong>mand takes the universal options available to all si <strong>com</strong>mands, as well as some general options. See the options reference page for<br />

descriptions.<br />

--fields=field1[:width1],field2[:width2]...<br />

allows you to select fields to be printed, specified in the format field1[:width1],field2[:width2].... Specifying the column [:width] (in pixels) for each<br />

field is optional - widths are only available with the -g or -gui<br />

options. Under the CLI the fields are separated with a space.<br />

The fields available for printing can be one or more of the following:<br />

closeddate<br />

displays the date the change package was closed.<br />

creationdate<br />

displays the date the change package was created.<br />

description<br />

displays change package descriptions.<br />

id<br />

displays change packages IDs.<br />

summary<br />

displays change package summaries.<br />

issue<br />

displays the issue ID if the Integrity Manager integration is enabled.<br />

reason<br />

is only relevant when applying change packages, and is not used in the standalone Change Packages view.<br />

resolution 267 of 457


displays yes if the change package is a resolution change package, and no if it is not.<br />

resolutionlist<br />

displays the list of change packages resolved by a selected resolution change package (the resolution list is displayed by default if a<br />

resolution change package is selected).<br />

state<br />

displays current state of the change package.<br />

siserver<br />

displays the Source Integrity server the change package resides on.<br />

user<br />

displays the username who created the change package.<br />

--filter=value<br />

displays the change packages according to one of the following filters:<br />

state[:closed|:open|:submitted|:accepted|:rejected|:discarded|:<strong>com</strong>mitfailed]<br />

displays change packages according to their state, which can be one of the following:<br />

:closed specifies that the change package is in a closed state (all changes <strong>com</strong>mitted to repository).<br />

:open specifies that the change package has in an open state (work in progress, available to add entries too).<br />

:submitted specifies that the change package has been submitted for review.<br />

:accepted specifies that the change package has been accepted by all reviewers.<br />

:rejected specifies that the change package has been rejected by at least one reviewer.<br />

:discarded specifies that the change package has been discarded.<br />

:<strong>com</strong>mitfailed specifies that the change package has failed to <strong>com</strong>mit to the repository.<br />

closeddate:<br />

displays closed change packages based on a specified closed date. Valid date formats are the following: between MM/dd/yyyy and<br />

MM/dd/yyyy, in the last|in the next number days|months|years yesterday|today|tomorrow.<br />

creationdate:<br />

displays change packages based on a specified creation date. Valid date formats are the following: between MM/dd/yyyy and<br />

MM/dd/yyyy, in the last|in the next number days|months|years yesterday|today|tomorrow.<br />

member:<br />

specifies a text string to filter change packages by member name.<br />

project:<br />

specifies a text string to filter change packages by project.<br />

variant:<br />

specifies a text string to filter change packages by variant. 268 of 457


description:<br />

specifies a text string to filter change packages by their description.<br />

summary:<br />

specifies a text string to filter change packages by their summary.<br />

type[:add|:addfromarchive|:drop|:import|:lock|:movememberto|:movememberfrom|:renamefrom|:renameto|:update|:updatearchive|:updaterevision]<br />

displays change packages based on their entry type.<br />

typemodifier[:<strong>com</strong>mitted|:pending]<br />

displays change packages based on their entry category.<br />

hasissue<br />

displays change packages that have an associated issue.<br />

pendingreviewby:name<br />

displays change packages that have not yet been accepted or rejected by a specified reviewer.<br />

acceptedby:name[;date]<br />

displays change packages accepted by a specified username on a specified date. Valid date formats are the following: between<br />

MM/dd/yyyy and MM/dd/yyyy, in the last|in the next number days|months|years yesterday|today|tomorrow.<br />

rejectedby:name[;date]<br />

displays change packages rejected by a specified username on a specified date. Valid date formats are the following: between<br />

MM/dd/yyyy and MM/dd/yyyy, in the last|in the next number days|months|years yesterday|today|tomorrow.<br />

rejectedby:name[;date]<br />

displays change packages rejected by a specified username on a specified date. Valid date formats are the following: between<br />

MM/dd/yyyy and MM/dd/yyyy, in the last|in the next number days|months|years yesterday|today|tomorrow.<br />

--myReviews<br />

displays change packages you are to review (which may include change packages not created by you). Change packages only appear in the list<br />

after they have been submitted for review. After you vote on the change package, it no longer appears in this list.<br />

--query=value<br />

the Integrity Manager query used to find change packages. For information on creating and using queries, see the Integrity Manager CLI<br />

Reference Guide.<br />

--[no]persist<br />

controls the persistence of CLI views.<br />

--height=value<br />

the height in pixels of the window.<br />

--width=value<br />

the width in pixels of the window. Can also be specified as fields=field1[:width1]....<br />

-x value<br />

used with the -g or --gui options, specifies the x location in pixels of the window.<br />

-y value<br />

used with the -g or --gui options, specifies the y location in pixels of the window.<br />

DIAGNOSTICS<br />

See the diagnostics reference page for possible exit status values.<br />

269 of 457


PREFERENCES<br />

Using si setprefs or si viewprefs, you are able to set or view the preference keys for this <strong>com</strong>mand.<br />

SEE ALSO<br />

Commands:<br />

si add, si ci, si closecp, si co, si cpissues, si createcp, si drop, si lock<br />

Miscellaneous:<br />

ACL, diagnostics, options, preferences<br />

270 of 457


si viewhistory<br />

displays a member's history<br />

SYNOPSIS<br />

si viewhistory [--fields=field1[:width1],field2[:width2]...] [--height=value]<br />

[--width=value] [-x value] [-y value] [--filter=filteroptions]<br />

[(-P project|--project=project)] [(-S sandbox|--sandbox=sandbox)] [--devpath=path]<br />

[--projectRevision=rev] [--hostname=server] [--port=number] [--password=password]<br />

[--user=name] [(-?|--usage)] [(-F file|--selectionFile=file)] [(-N|--no)] [(-Y|--yes)]<br />

[--[no]batch] [--cwd=directory] [--forceConfirm=[yes|no]] [(-g|--gui)] [--[no]persist]<br />

[--quiet] [--settingsUI=[gui|default]] [--status=[none|gui|default]] member...<br />

DESCRIPTION<br />

si viewhistory displays a member's history, one line per revision, per member. This is similar<br />

to si print and si rlog, but with different defaults.<br />

While sandboxes and projects allow you to manage and access project members and the contents<br />

of individual members, the history of changes are saved in member histories.<br />

MKS Source Integrity lets you save and recreate every stage (or revision) in the development of<br />

each member you use. When you make changes to a project member and check it back in, your<br />

changes are automatically added to the member history.<br />

Options<br />

This <strong>com</strong>mand takes the universal options available to all si <strong>com</strong>mands, as well as some general<br />

options. See the options reference page for descriptions.<br />

--fields=field1[:width1],field2[:width2]...<br />

allows you to select fields to be printed, specified in the format<br />

field1[:width1],field2[:width2].... Specifying the column [:width] (in pixels) for each field is<br />

optional - widths are only available with the -g or --gui options. Under the CLI the fields<br />

are separated with a space.<br />

The fields available for printing can be one or more of the following:<br />

author<br />

displays author names.<br />

cpid<br />

displays the associated change package identifier (applies only if change packages<br />

271 of 457


are enabled).<br />

date<br />

displays the working file date.<br />

description<br />

displays revision and project descriptions.<br />

labels<br />

displays labels.<br />

lockcpid<br />

displays the change package ID for the associated lock entry.<br />

lockdevpath<br />

displays the name of the development path where the lock on the revision was made<br />

from. This information is relevant when the locking policy is set to devpath, allowing a<br />

single user to have a single lock on an archive per development path. Contact your<br />

administrator for more information.<br />

locked<br />

displays indicators for locked revisions.<br />

locker<br />

displays the user ID of the user with this revision locked, or null.<br />

lockhost<br />

displays the host name of the <strong>com</strong>puter that locked the member.<br />

lockproject<br />

displays the name and path of the project where the member revision was locked<br />

from. If the member revision was locked from a shared subproject, it is the subproject<br />

name and path that are displayed.<br />

locksandbox<br />

displays the name of the sandbox where the lock on the revision was made, and is<br />

relevant when viewing the information from the Locker Host.<br />

locktimestamp<br />

displays the time stamp for when the member was locked, otherwise null.<br />

revision<br />

displays the revision number.<br />

state<br />

displays the state.<br />

--height=value<br />

used with the -g or --gui options, specifies the height of the history view window, in pixels;<br />

value must be a whole number.<br />

--width=value<br />

used with the -g or --gui options, specifies the width of the history view window, in pixels;<br />

value must be a whole number.<br />

-x value<br />

used with the -g or --gui options, specifies the x location in pixels of the window.<br />

-y value<br />

used with the -g or --gui options, specifies the y location in pixels of the window.<br />

--[no]persist<br />

controls whether this presentation of information should continue to be updated as new<br />

272 of 457


information be<strong>com</strong>es available. --nopersist forces a static "snapshot" of information,<br />

while --persist gives real-time updates.<br />

member...<br />

identifies a specific member; use spaces to specify more than one member.<br />

DIAGNOSTICS<br />

See the diagnostics reference page for possible exit status values.<br />

PREFERENCES<br />

Using si setprefs or si viewprefs, you are able to set or view the preference keys for this<br />

<strong>com</strong>mand.<br />

SEE ALSO<br />

Commands:<br />

si archiveinfo, si memberinfo, si mods, si print, si revisioninfo, si<br />

rlog, si sandboxinfo, si viewlabels, si viewproject, si<br />

viewprojecthistory, si viewsandbox<br />

Miscellaneous:<br />

ACL, diagnostics, options, preferences<br />

273 of 457


si viewlabels<br />

displays a member's labels<br />

SYNOPSIS<br />

si viewlabels [--fields=field1[:width1],field2[:width2]...]<br />

[--height=value] [--width=value] [-x value] [-y value] [(-R|--[no|confirm]recurse)]<br />

[--filter=filteroptions] [(-P project|--project=project)] [(-S sandbox|--sandbox=sandbox)]<br />

[--devpath=path] [--projectRevision=rev] [--hostname=server] [--port=number]<br />

[--password=password] [--user=name] [(-?|--usage)] [(-F file|--selectionFile=file)]<br />

[(-N|--no)] [(-Y|--yes)] [--[no]batch] [--cwd=directory] [--forceConfirm=[yes|no]]<br />

[(-g|--gui)] [--[no]persist] [--quiet] [--settingsUI=[gui|default]]<br />

[--status=[none|gui|default]] member...<br />

DESCRIPTION<br />

si viewlabels displays a member's labels: one label per line, showing the label and its revision<br />

number.<br />

Options<br />

This <strong>com</strong>mand takes the universal options available to all si <strong>com</strong>mands, as well as some general<br />

options. See the options reference page for descriptions.<br />

--fields=field1[:width1],field2[:width2]...<br />

allows you to select fields to be printed, specified in the format<br />

field1[:width1],field2[:width2].... Specifying the column [:width] (in pixels) for each field is<br />

optional - widths are only available with the -g or --gui options. Under the CLI the fields<br />

are separated with a space.<br />

The fields available for printing can be one or more of the following:<br />

cpid<br />

label<br />

displays the associated change package identifier (applies only if change packages<br />

are enabled).<br />

displays labels.<br />

revision<br />

displays the revision number.<br />

--height=value<br />

used with the -g or --gui options, specifies the height of the labels view window, in pixels;<br />

value must be a whole number.<br />

274 of 457


--width=value<br />

used with the -g or --gui options, specifies the width of the labels view window, in pixels;<br />

value must be a whole number.<br />

-x value<br />

used with the -g or --gui options, specifies the x location in pixels of the window.<br />

-y value<br />

used with the -g or --gui options, specifies the y location in pixels of the window.<br />

--[no]persist<br />

controls whether this presentation of information should continue to be updated as new<br />

information be<strong>com</strong>es available. --nopersist forces a static "snapshot" of information,<br />

while --persist gives real-time updates.<br />

member...<br />

identifies a specific member; use spaces to specify more than one member.<br />

DIAGNOSTICS<br />

See the diagnostics reference page for possible exit status values.<br />

PREFERENCES<br />

Using si setprefs or si viewprefs, you are able to set or view the preference keys for this<br />

<strong>com</strong>mand.<br />

SEE ALSO<br />

Commands:<br />

si archiveinfo, si memberinfo, si mods, si print, si revisioninfo, si<br />

rlog, si sandboxinfo, si viewhistory, si viewproject, si<br />

viewprojecthistory, si viewsandbox<br />

Miscellaneous:<br />

ACL, diagnostics, options, preferences<br />

275 of 457


si viewlocks<br />

displays locks<br />

SYNOPSIS<br />

si viewlocks [--format=value] [--headerFormat=value] [--noFormat]<br />

[--noHeaderFormat] [--noTrailerFormat] [(-r rev|--revision=rev)] [--range=value]<br />

[--trailerFormat=value] [--fields=field1[:width1],field2[:width2]...] [--height=value]<br />

[--width=value] [-x value] [-y value] [(-R|--[no|confirm]recurse)]<br />

[--filter=filteroptions] [(-P project|--project=project)] [(-S sandbox|--sandbox=sandbox)]<br />

[--devpath=path] [--projectRevision=rev] [--hostname=server] [--port=number]<br />

[--password=password] [--user=name] [(-?|--usage)] [(-F file|--selectionFile=file)]<br />

[(-N|--no)] [(-Y|--yes)] [--[no]batch] [--cwd=directory] [--forceConfirm=[yes|no]]<br />

[--[no]persist] [--settingsUI=[gui|default]] [--status=[none|gui|default]] member...<br />

DESCRIPTION<br />

si viewlocks displays the locks held in a project and some information about the members, for<br />

example:<br />

c:\app\connect.txt 1.4 mkern<br />

Jan 9, 2002 - 4:06 PM<br />

c:\app\source.txt 1.3 mkern<br />

Jan 9, 2002 - 4:06 PM<br />

c:\app\config.c 1.3 mkern<br />

Jan 8, 2002 - 2:26 PM<br />

Note: By default, si viewlocks displays the member names of locked members, not the<br />

working file names.<br />

Options<br />

This <strong>com</strong>mand takes some of the universal options available to all si <strong>com</strong>mands, as well as some<br />

general options. See the options reference page for descriptions.<br />

See the si rlog reference page for descriptions of all options applicable to si viewlocks.<br />

DIAGNOSTICS<br />

See the diagnostics reference page for possible exit status values.<br />

276 of 457


PREFERENCES<br />

Using si setprefs or si viewprefs, you are able to set or view the preference keys for this<br />

<strong>com</strong>mand.<br />

SEE ALSO<br />

Commands:<br />

si archiveinfo, si memberinfo, si mods, si print, si revisioninfo, si<br />

rlog, si sandboxinfo, si viewhistory, si viewlabels, si<br />

viewprojecthistory, si viewsandbox<br />

Miscellaneous:<br />

ACL, diagnostics, options, preferences<br />

277 of 457


si viewnonmembers<br />

displays non-members in a sandbox<br />

SYNOPSIS<br />

si viewnonmembers [--[no|confirm]includeFormers]<br />

[--exclude=file:pattern,dir:pattern...] [--include=file:pattern,dir:pattern...]<br />

[--fields=field1[:width1],field2[:width2]...] [-R|--[no|confirm]recurse]<br />

[-S|--sandbox=value] [--hostname=server] [--port=number] [--password=password]<br />

[--user=name] [(-?|--usage)] [(-Ffile|--selectionFile=file)] [(-N|--no)] [(-Y|--yes)]<br />

[--[no]batch] [--cwd=directory] [--forceConfirm=[yes|no]] [(-g|--gui)] [--quiet]<br />

[--settingsUI=[gui|default]] [--status=[none|gui|default]] nonmember...<br />

DESCRIPTION<br />

si viewnonmembers displays non-members in a sandbox.<br />

From Source Integrity, you can view non-member files existent in your sandbox directory. The Non-<br />

Members view is useful when used recursively to identify all of the files that need to be placed<br />

under source control. By default, former members are not displayed in the Non-Members view.<br />

The Non-Members view does not display files that are:<br />

● deferred imported members<br />

● deferred add members from archive<br />

● pending members (add, add from archive, import)<br />

● working files from members that have been renamed but not resynchronized<br />

Non-members can only be viewed in a sandbox context, and not from any project view operation.<br />

Options<br />

This <strong>com</strong>mand takes the universal options available to all si <strong>com</strong>mands, as well as some general<br />

options. See the options reference page for descriptions.<br />

--[no|confirm]includeFormers<br />

specifies if to include members that have been dropped from the project, but where there<br />

still exists a working file in the sandbox directory..<br />

--exclude=file:pattern,dir:pattern...<br />

specifies a file that contains a glob pattern for excluding members.<br />

--include=file:pattern,dir:pattern...<br />

278 of 457


specifies a file that contains a glob pattern for including members.<br />

--fields=field1[:width1],field2[:width2]...<br />

allows you to select fields to be displayed, specified in the format<br />

field1[:width1],field2[:width2].... Specifying the column [:width] (in pixels) for each field is<br />

optional - widths are only available with the -g or --gui options.<br />

The fields available for printing can be one or more of the following:<br />

absolutepath<br />

displays the absolute file path of the file.<br />

closestproject<br />

displays the project associated with the sandbox that is closest to the directory<br />

containing the file.<br />

closestsandbox<br />

displays the sandbox that is closest to the directory containing the file.<br />

lastmodified<br />

displays the date that the file was last modified.<br />

memberid<br />

displays the default member name for the file as it would appear if it was added to the<br />

nearest project. In the case where the nearest project is subproject, the relative path<br />

is displayed with the member name.<br />

size<br />

displays the size of the file in bytes.<br />

nonmember...<br />

identifies nonmembers to display; use spaces to specify more than one change package.<br />

DIAGNOSTICS<br />

See the diagnostics reference page for possible exit status values.<br />

PREFERENCES<br />

Using si setprefs or si viewprefs, you are able to set or view the preference keys for this<br />

<strong>com</strong>mand.<br />

SEE ALSO<br />

Commands:<br />

si viewsandbox, si viewsproject, si add<br />

279 of 457


Miscellaneous:<br />

ACL, diagnostics, options, preferences<br />

280 of 457


si viewprefs<br />

displays preferences<br />

SYNOPSIS<br />

si viewprefs [--[no]global] [--<strong>com</strong>mand=value] [--[no]showValidValues]<br />

[--[no]ask] [--ui=[unspecified|gui|cli|api]] [(-?|--usage)] [(-N|--no)] [(-Y|--yes)]<br />

[--[no]batch] [--cwd=directory] [--forceConfirm=[yes|no]] [(-g|--gui)] [--quiet]<br />

[(-F file|--selectionFile=file)] [--settingsUI=[gui|default]] [--status=[none|gui|default]]<br />

DESCRIPTION<br />

si viewprefs displays preferences and configuration options. These settings are used to<br />

determine default behaviors for other <strong>com</strong>mands.<br />

Your administrator can lock certain preferences from the Integrity Server, preventing you from<br />

configuring them using the si setprefs <strong>com</strong>mand. Preferences that are locked display<br />

(locked) at the end of the output line. The following preferences can be locked from the server<br />

by editing Source Integrity policies in the Administration Client:<br />

Tip: For information on editing the Source Integrity policies, see "Configuring the Integrity Server"<br />

in the Integrity Server Administration Guide.<br />

Preference Affected Commands<br />

branchIfVariant si co , si lock<br />

breakLock si unlock<br />

changePackageID si co, si lock<br />

createBranch si lock<br />

onLock si co<br />

restoreTimestamp<br />

si resync,<br />

si resynccp, si<br />

revert<br />

retainWorkingFile si add, si ci<br />

saveTimestamp si add, si ci<br />

sparse si importsandbox<br />

updateMemberRev si ci<br />

281 of 457


Warning: Do not edit the IntegrityClient.rc file manually, because preferences that appear<br />

more than once in the IntegrityClient.rc file can cause Source Integrity to behave<br />

unpredictably.<br />

Options<br />

This <strong>com</strong>mand takes the universal options available to all si <strong>com</strong>mands, as well as some general<br />

options. See the options reference page for descriptions. For an easy way to see a list of<br />

<strong>com</strong>mands and values that may be set, simply type the si viewprefs <strong>com</strong>mand, either piped<br />

through |more or redirected to a file, for example:<br />

si viewprefs --global --showValidValues >prefs.txt<br />

Alternatively, the --gui option presents a simple-to-use dialog box that lets you view and<br />

configure the preferences.<br />

--[no]global<br />

controls whether to view all preferences.<br />

--<strong>com</strong>mand=value<br />

identifies the <strong>com</strong>mand preference to be viewed.<br />

--[no]showValidValues<br />

controls whether to list valid values for the preferences.<br />

--[no]ask<br />

controls whether to view the ask control over the preference options. See the description for<br />

--[no]ask on the si setprefs <strong>com</strong>mand.<br />

--ui=[unspecified|gui|cli|api]<br />

controls whether to view the preference as it applies to the graphical user interface, the<br />

<strong>com</strong>mand line interface, application programming interface, or when the interface is<br />

unspecified. By default, --ui=cli is implied when issuing the si viewprefs. To view<br />

preferences for GUI behavior, however, you should specify --ui=gui.<br />

The preferences you see correlate to settings in the IntegrityClient.rc file, which can<br />

be seen as having the gui.si. or cli.si. prefix, or simply the si. prefix when it is unspecified.<br />

DIAGNOSTICS<br />

See the diagnostics reference page for possible exit status values.<br />

PREFERENCES<br />

Using si setprefs or si viewprefs, you are able to set or view the preference keys for this<br />

<strong>com</strong>mand.<br />

282 of 457


SEE ALSO<br />

Commands:<br />

si loadrc, si setprefs<br />

Miscellaneous:<br />

ACL, diagnostics, options, preferences<br />

283 of 457


si viewproject<br />

displays the contents of a project<br />

SYNOPSIS<br />

si viewproject [--fields=field1[:width1],field2[:width2]...] [--[no]filterSubs]<br />

[--height=value] [--width=value] [-x value] [-y value] [(-R|--[no|confirm]recurse)]<br />

[--filter=filteroptions] [(-P project|--project=project)] [(-S sandbox|--sandbox=sandbox)]<br />

[--devpath=path] [--projectRevision=rev] [--hostname=server] [--port=number]<br />

[--password=password] [--user=name] [(-?|--usage)] [(-N|--no)] [(-Y|--yes)]<br />

[--[no]batch] [--cwd =directory] [--forceConfirm=[yes|no]] [(-g|--gui)]<br />

[--[no]persist] [--quiet] [--settingsUI=[gui|default]] [(-F file|--selectionFile=file)]<br />

[--status=[none|gui|default]] member/subproject...<br />

DESCRIPTION<br />

si viewproject displays the contents of a project and some information about the members, for<br />

example:<br />

connect.txt 1.4 archived<br />

source.txt 1.3 archived<br />

config.c 1.3 archived<br />

Note: Specifying si viewproject -S sandbox does not view the sandbox; it redirects through<br />

the sandbox to view the project. Use si viewsandbox to view a sandbox.<br />

Options<br />

This <strong>com</strong>mand takes the universal options available to all si <strong>com</strong>mands, as well as some general<br />

options. See the options reference page for descriptions.<br />

--fields=field1[:width1],field2[:width2]...<br />

allows you to select fields to be printed, specified in the format<br />

field1[:width1],field2[:width2].... Specifying the column [:width] (in pixels) for each field is<br />

optional. Widths are only available with the -g or --gui options. Under the CLI the fields<br />

are separated with a space.<br />

The fields available for printing can be one or more of the following:<br />

archiveshared<br />

displays indicators for members that share another member’s archive. This column is<br />

284 of 457


valid only if you are using the database repository.<br />

attributes<br />

displays member attributes.<br />

context<br />

displays the name of the project, with the parent project name if applicable, type of<br />

project, and if build or variant.<br />

cpid<br />

displays the change package associated with the operation that set the member<br />

revision.<br />

creationcpid<br />

displays the change package that created the revision that is currently the member<br />

revision. This revision may be different from the Member CPID if an import, add<br />

member from archive, or set member revision operation was used.<br />

frozen<br />

displays indicators for frozen members.<br />

indent<br />

indents subprojects.<br />

labels<br />

displays labels.<br />

locked<br />

displays indicators for locked revisions.<br />

locker<br />

displays user identifiers for those who have locked revisions.<br />

lockercpid<br />

displays the change package associated with the lock on the member revision.<br />

lockdevpath<br />

displays the name of the development path where the lock on the revision was made<br />

from. This information is relevant when the locking policy is set to devpath, allowing a<br />

single user to have a single lock on an archive per development path. Contact your<br />

administrator for more information.<br />

lockhost<br />

displays the host name of the <strong>com</strong>puter that locked the member.<br />

lockproject<br />

displays the name and path of the project where the member revision was locked<br />

from. If the member revision was locked from a shared subproject, it is the subproject<br />

name and path that are displayed.<br />

locksandbox<br />

displays the name of the sandbox where the lock on the revision was made, and is<br />

relevant when viewing the information from the Locker Host.<br />

locktimestamp<br />

displays the time stamp for when the member was locked.<br />

memberarchive<br />

displays the name and path of the member archive.<br />

memberdescription<br />

displays the member description.<br />

285 of 457


memberrev<br />

displays the member revision.<br />

membertimestamp<br />

displays the member timestamp.<br />

name<br />

displays the member name.<br />

newrevdelta<br />

displays indicators for new revisions.<br />

pendingcpid<br />

displays the change package associated with a pending operation.<br />

state<br />

displays the member state.<br />

type<br />

displays the type of each item in the project: project, subproject, shared-subproject,<br />

shared-variant-subproject, shared-build-subproject, or member.<br />

--[no]filterSubs<br />

controls whether to display subprojects and directories that do not contain members<br />

matching the current filter.<br />

--height=value<br />

used with the -g or --gui options, specifies the height of the project view window, in pixels;<br />

value must be a whole number.<br />

--width=value<br />

used with the -g or --gui options, specifies the width of the project view window, in pixels;<br />

value must be a whole number.<br />

-x value<br />

used with the -g or --gui options, specifies the x location in pixels of the window.<br />

-y value<br />

used with the -g or --gui options, specifies the y location in pixels of the window.<br />

--[no]persist<br />

controls whether this presentation of information should continue to be updated as new<br />

information be<strong>com</strong>es available. --nopersist forces a static "snapshot" of information,<br />

while --persist gives real-time updates.<br />

member/subproject...<br />

identifies a specific member or subproject; use spaces to specify more than one.<br />

DIAGNOSTICS<br />

See the diagnostics reference page for possible exit status values.<br />

PREFERENCES<br />

Using si setprefs or si viewprefs, you are able to set or view the preference keys for this<br />

<strong>com</strong>mand.<br />

286 of 457


SEE ALSO<br />

Commands:<br />

si archiveinfo, si memberinfo, si mods, si print, si revisioninfo, si<br />

rlog, si sandboxinfo, si viewhistory, si viewlabels, si<br />

viewprojecthistory , si viewsandbox<br />

Miscellaneous:<br />

ACL, diagnostics, options, preferences<br />

287 of 457


si viewprojecthistory<br />

displays a history of the project<br />

SYNOPSIS<br />

si viewprojecthistory [--fields=field1[:width1],field2[:width2]...] [--height=value]<br />

[--width=value] [-x value] [-y value] [(-R|--[no|confirm]recurse)]<br />

[(-P project|--project=project)] [(-S sandbox|--sandbox=sandbox)] [--devpath=path]<br />

[--projectRevision=rev] [--hostname=server] [--port=number] [--password=password]<br />

[--user=name] [(-?|--usage)] [(-F file|--selectionFile=file)] [(-N|--no)] [(-Y|--yes)]<br />

[--[no]batch] [--cwd =directory] [--forceConfirm=[yes|no]] [(-g|--gui)]<br />

[--[no]persist] [--quiet] [--settingsUI=[gui|default]] [--status=[none|gui|default]]<br />

[--xmlapi]<br />

DESCRIPTION<br />

si viewprojecthistory displays a history of the project, including information on each<br />

historical checkpoint.<br />

Options<br />

This <strong>com</strong>mand takes the universal options available to all si <strong>com</strong>mands, as well as some general<br />

options. See the options reference page for descriptions.<br />

--fields=field1[:width1],field2[:width2]...<br />

allows you to select fields to be printed, specified in the format<br />

field1[:width1],field2[:width2].... Specifying the column [:width] (in pixels) for each field is<br />

optional - widths are only available with the -g or --gui options. Under the CLI the fields<br />

are separated with a space.<br />

The fields available for printing can be one or more of the following:<br />

author<br />

displays author names.<br />

date<br />

displays the project checkpoint date.<br />

description<br />

displays revision and project descriptions.<br />

labels<br />

displays labels.<br />

revision<br />

displays the revision number.<br />

288 of 457


state<br />

displays the revision state.<br />

--height=value<br />

used with the -g or --gui options, specifies the height of the project history view window,<br />

in pixels; value must be a whole number.<br />

--width=value<br />

used with the -g or --gui options, specifies the width of the project history view window, in<br />

pixels; value must be a whole number.<br />

-x value<br />

used with the -g or --gui options, specifies the x location in pixels of the window.<br />

-y value<br />

used with the -g or --gui options, specifies the y location in pixels of the window.<br />

--[no]persist<br />

controls whether this presentation of information should continue to be updated as new<br />

information be<strong>com</strong>es available. --nopersist forces a static "snapshot" of information,<br />

while --persist gives real-time updates.<br />

DIAGNOSTICS<br />

See the diagnostics reference page for possible exit status values.<br />

PREFERENCES<br />

Using si setprefs or si viewprefs, you are able to set or view the preference keys for this<br />

<strong>com</strong>mand.<br />

SEE ALSO<br />

Commands:<br />

si archiveinfo, si memberinfo, si mods, si print, si revisioninfo, si<br />

rlog, si sandboxinfo, si viewhistory, si viewlabels, si viewproject, si<br />

viewsandbox<br />

Miscellaneous:<br />

ACL, diagnostics, options, preferences<br />

289 of 457


si viewrevision<br />

opens a revision for viewing<br />

SYNOPSIS<br />

si viewrevision [--[no|un]expand] [(-rrev|--revision=rev)]<br />

[(-P project|--project=project)] [(-S sandbox|--sandbox=sandbox)] [--devpath=path]<br />

[--projectRevision=rev] [--hostname=server] [--port=number] [--password=password]<br />

[--user=name] [(-?|--usage)] [(-F file|--selectionFile=file)] [(-N|--no)] [(-Y|--yes)]<br />

[--[no]batch] [--cwd=directory] [--forceConfirm=[yes|no]] [(-g|--gui)] [--quiet]<br />

[--settingsUI=[gui|default]] [--status=[none|gui|default]] member...<br />

DESCRIPTION<br />

si viewrevision opens a member revision for viewing.<br />

Options<br />

This <strong>com</strong>mand takes the universal options available to all si <strong>com</strong>mands, as well as some general<br />

options. See the options reference page for descriptions.<br />

--[no|un]expand<br />

controls whether to expand, unexpand, or ignore keywords in the member file. Keyword<br />

expansion is only available in text archives, not binary archives. For descriptions of the MKS<br />

Source Integrity keywords, see the Source Integrity Enterprise User Guide. Possible<br />

keywords are:<br />

$Author$<br />

$CompanyInfo$<br />

$Date$<br />

$Header$<br />

$Id$<br />

$Locker$<br />

$Log$<br />

$Name$<br />

$ProjectName$<br />

$ProjectSetting attribute$<br />

$ProjectRevision$<br />

$RCSfile$<br />

$Revision$<br />

$SandboxSetting attribute$<br />

$Setting attribute$<br />

290 of 457


$Source$<br />

$State$<br />

member...<br />

identifies a specific member; use spaces to specify more than one member.<br />

DIAGNOSTICS<br />

See the diagnostics reference page for possible exit status values.<br />

PREFERENCES<br />

Using si setprefs or si viewprefs, you are able to set or view the preference keys for this<br />

<strong>com</strong>mand.<br />

SEE ALSO<br />

Commands:<br />

si ci, si co, si edit, si lock, si unlock<br />

Miscellaneous:<br />

ACL, diagnostics, options, preferences<br />

291 of 457


si viewsandbox<br />

displays the contents of a sandbox<br />

SYNOPSIS<br />

si viewsandbox [--[no]includeDropped] [--fields=field1[:width1],field2[:width2]...] [--[no]filterSubs]<br />

[--height=value] [--width=value] [-x value] [-y value] [(-R |--[no|confirm]recurse)] [-filter=filteroptions]<br />

[(-S sandbox|--sandbox=sandbox)] [--hostname=server] [--port=number]<br />

[--password=password] [--user=name] [(-?|--usage)] [(-F file|--selectionFile=file)] [(-N |--no)] [(-Y|-yes)]<br />

[--[no]batch] [--cwd=directory] [--forceConfirm=[yes|no]] [(-g|--gui)] [--[no]persist] [--quiet]<br />

[--settingsUI=[gui|default]] [--status=[none|gui|default]] current or dropped member/subproject...<br />

DESCRIPTION<br />

si viewsandbox displays the contents of a sandbox, for example:<br />

Options<br />

c:\Documentation\xml_man\si_about.1.xml archived 1.6<br />

c:\Documentation\Man_Pages\xml_man\si_acv.1.xml archived 1.7<br />

c:\Documentation\Man_Pages\xml_man\si_add.1.xml archived 1.7 sueq Jun 21, 2002 - 10:14<br />

AM<br />

Working file 2,739 bytes smaller, older (Jun 20, 2002 - 1:46:27 PM)<br />

c:\Documentation\Man_Pages\xml_man\si_addlabel.1.xml archived 1.6 sueq Jun 21, 2002 -<br />

10:14 AM<br />

Working file 7,344 bytes smaller, older (Jun 20, 2002 - 2:49:28 PM)<br />

c:\Documentation\Man_Pages\xml_man\si_addmemberattr.1.xml archived 1.4 sueq Jun 21,<br />

2002 - 10:14 AM<br />

Working file 5,795 bytes smaller, older (Jun 20, 2002 - 3:16:29 PM)<br />

c:\Documentation\Man_Pages\xml_man\si_addprojectattr.1.xml archived 1.4<br />

c:\Documentation\Man_Pages\xml_man\si_addprojectlabel.1.xml archived 1.4<br />

c:\Documentation\Man_Pages\xml_man\si_appendrevdesc.1.xml archived 1.6<br />

c:\Documentation\Man_Pages\xml_man\si_archiveinfo.1.xml archived 1.5<br />

This <strong>com</strong>mand takes the universal options available to all si <strong>com</strong>mands, as well as some general options. See the options<br />

reference page for descriptions.<br />

--[no]includeDropped<br />

controls whether to include members dropped from the project that still have working files in your sandbox. Dropped<br />

members will be marked as dropped.<br />

--fields=field1[:width1],field2[:width2]...<br />

allows you to select fields to be printed, specified in the format field1[:width1],field2[:width2].... Specifying the column<br />

[: width] (in pixels) for each field is optional - widths are only available with the options. Under the CLI the fields are<br />

separated with a space>.<br />

The fields available for printing can be one or more of the following:<br />

archiveshared<br />

displays indicators for members that share another member’s archive. This column is valid only if you are using<br />

the database repository.<br />

attributes<br />

displays member and project attributes.<br />

context<br />

displays the name of the project, with the parent project name if applicable, type of project, and if build or variant.<br />

292 of 457


cpid<br />

displays the change package associated with the operation that set the member revision.<br />

creationcpid<br />

displays the change package that created the revision that is currently the member revision. This revision may<br />

be different from the Member CPID if an import, add member from archive, or set member revision operation<br />

was used.<br />

deferred<br />

displays all deferred operations.<br />

frozen<br />

displays indicators for frozen members.<br />

indent<br />

indent subprojects.<br />

labels<br />

displays labels.<br />

locked<br />

displays an indicator if the member revision is locked.<br />

locker<br />

displays user identifiers for those who have locked revisions.<br />

lockercpid<br />

displays the change package associated with the lock on the member revision.<br />

lockdevpath<br />

displays the name of the development path where the lock on the revision was made from. This information is<br />

relevant when the locking policy is set to devpath, allowing a single user to have a single lock on an archive per<br />

development path. Contact your administrator for more information.<br />

lockhost<br />

displays the host name of the <strong>com</strong>puter that locked the member.<br />

lockproject<br />

displays the name and path of the project where the member revision was locked from. If the member revision<br />

was locked from a shared subproject, it is the subproject name and path that are displayed.<br />

locksandbox<br />

displays the name of the sandbox where the lock on the revision was made, and is relevant when viewing the<br />

information from the Locker Host.<br />

locktimestamp<br />

displays the time stamp for when the member was locked.<br />

memberarchive<br />

display the name of the archive to which the member refers.<br />

memberdescription<br />

displays the revision description assigned to the sandbox member.<br />

memberrev<br />

displays the member revision.<br />

membertimestamp<br />

displays the date and time the member revision is set.<br />

merge<br />

displays any merge information between member revisions.<br />

name<br />

displays the member name.<br />

newrevdelta<br />

displays indicators for new revisions.<br />

pendingcpid<br />

displays the change package associated with a pending operation.<br />

revsyncdelta<br />

displays an indicator for out of sync members.<br />

state<br />

displays the member state.<br />

type<br />

displays the type of each item in the sandbox: sandbox, subsandbox, shared-subsandbox, shared-variantsubsandbox,<br />

shared-build-subsandbox, or member.<br />

wfdelta<br />

293 of 457


displays an indicator when the working file is different from the member revision.<br />

workingarchive<br />

displays the name of the archive from which the working file is derived.<br />

In the case where the working file was derived from an archive that was based on a server-side system setup<br />

(based on some default RCSPath or WorkToArch setting, as opposed to an explicit archive=reference), the<br />

Working Archive field displays the value default:server directory. The actual name of the archive the working<br />

file was derived from can then be determined from the value for the Archive Name field.<br />

workingcpid<br />

displays the change package associated with a deferred or a lock operation performed by the current user from<br />

the current sandbox.<br />

workingrev<br />

displays the working file revision.<br />

--[no]filterSubs<br />

controls whether to display subsandboxes and directories that do not contain members matching the current filter.<br />

--height=value<br />

used with the -g or --gui options, specifies the height of the sandbox view window, in pixels; value must be a whole<br />

number.<br />

--width=value<br />

used with the -g or --gui options, specifies the width of the sandbox view window, in pixels; value must be a whole<br />

number.<br />

-x value<br />

used with the -g or --gui options, specifies the x location in pixels of the window.<br />

-y value<br />

used with the -g or --gui options, specifies the y location in pixels of the window.<br />

--[no]persist<br />

controls whether this presentation of information should continue to be updated as new information be<strong>com</strong>es available.<br />

--nopersist forces a static "snapshot" of information, while --persist gives real-time updates.<br />

current or dropped member/subproject...<br />

identifies a specific member or subproject that currently exists in the project, or one that has been dropped from the<br />

project. Use spaces to specify more than one.<br />

DIAGNOSTICS<br />

See the diagnostics reference page for possible exit status values.<br />

PREFERENCES<br />

Using si setprefs or si viewprefs, you are able to set or view the preference keys for this <strong>com</strong>mand.<br />

SEE ALSO<br />

Commands:<br />

si archiveinfo, si memberinfo, si mods, si print, si revisioninfo, si rlog, si sandboxinfo, si<br />

viewhistory, si viewlabels, si viewproject, si viewprojecthistory<br />

Miscellaneous:<br />

ACL, diagnostics, options, preferences<br />

294 of 457


ACL (Access Control List)<br />

permissions for MKS Integrity Suite ACL interaction<br />

DESCRIPTION<br />

The ACL (Access Control List) permissions control user access to MKS Integrity Suite functions (in<br />

both MKS Source Integrity and MKS Integrity Manager) by associating development objects and<br />

operations with specific permissions. For example, whenever a user initiates an operation such as<br />

checking a file in or out, Source Integrity queries the ACL database to determine whether the user<br />

has permission to perform the operation. This reference page is provided as a guide to the ACL<br />

permissions.<br />

There are five server-level ACLs shipped by default: mks:aa--controls the Login access to the AA<br />

application for managing the ACLs, mks:aa:mks--controls Read and Update access to the ACLs,<br />

mks:im controls access to Integrity Manager operations, mks:patch controls the Download<br />

permission required for service pack management, and mks:si--controls access to Source Integrity<br />

operations. For the most part, however, you will be working with project ACLs, that control the<br />

permissions for a particular directory. Working with member ACLs is also possible, which control<br />

permissions for specific files -- this would be for those rare circumstances where security on<br />

specific, individual files must be heavily controlled and where the administrative costs are known<br />

and accepted.<br />

The ACL name itself follows a specific hierarchical format:<br />

● The default server-level ACL is named mks:si. All project and member ACLs will inherit<br />

permissions from this one.<br />

● Project-level ACL names include a specific prefix, taking the format<br />

mks:si:project:id:. The project directory is relative to the root of the<br />

Integrity Server.<br />

● Subproject ACLs have the same format as projects, simply appending the subdirectories<br />

using colons (:) instead of slashes.<br />

● Variant project ACLs have a slightly different prefix, taking the format<br />

mks:si:project:devpath::id.<br />

● Member ACLs simply specify the file name in the ACL name, such as<br />

mks:si:project:id::.<br />

● Archive ACLs simply specify the archive name in the ACL name, such as<br />

295 of 457


mks:si:archive:.<br />

ACL PERMISSIONS<br />

You must have the appropriate ACL permissions before you can perform Source Integrity and<br />

Integrity Manager operations. For details on configuring ACLs, see the Integrity Server<br />

Administration Guide.<br />

Server Permissions<br />

Possible Source Integrity server-related permissions:<br />

AdminProxy<br />

For MKS Customer Care only. Allows a user to perform administrative functions on the<br />

proxy<br />

Prerequisites: none.<br />

AdminServer<br />

For MKS Customer Care only. Allows a user to perform administrative functions on the<br />

server.<br />

Prerequisites: none.<br />

DebugProxy<br />

For MKS Customer Care only. Allows a user to perform diagnostic functions on the proxy.<br />

Prerequisites: none.<br />

DebugServer<br />

For MKS Customer Care only. Allows a user to perform diagnostic functions on the server.<br />

Prerequisites: none.<br />

EditPolicy<br />

Allows a user to modify and create Source Integrity policies on the Integrity Server. The Edit<br />

Policy permission should be restricted to administrators and Source Integrity project<br />

managers<br />

Prerequisites: Login.<br />

Login<br />

296 of 457


Allows a user to log in to Source Integrity.<br />

Prerequisites: none.<br />

ViewPolicy<br />

Allows a user to view Source Integrity policies on the Integrity Server. The View Policy<br />

permission should be restricted to administrators and Source Integrity project managers.<br />

Prerequisites: Login.<br />

Member Permissions<br />

Possible Source Integrity member-related permissions are:<br />

ApplyLabel<br />

Allows a user to add labels to revisions or move labels between revisions.<br />

Prerequisites: Login, OpenProject.<br />

BreakLock<br />

Allows a user to break locks held by other users.<br />

Prerequisites: Login, OpenProject, Lock, Unlock.<br />

CheckIn<br />

Allows a user to check in working files as new revisions of members.<br />

Prerequisites: Login, OpenProject, ApplyLabel, Lock, ModifyAuthor,<br />

ModifyMemberRev, ModifyMemberAttribute.<br />

DeleteLabel<br />

Allows users to delete a label from a revision.<br />

Prerequisites: Login, OpenProject.<br />

DeleteRevision<br />

Allows a user to delete revisions from the member history.<br />

Note:<br />

This permission allows users to irrevocably delete revisions from the member history.<br />

Administrators should assign this permission carefully.<br />

Prerequisites: Login, OpenProject.<br />

297 of 457


Demote<br />

This permission allows a user to change the promotion state of revisions from a higher<br />

setting to a lower one, when the States= configuration option defines a sequence of<br />

promotion states. For details, see the Integrity Server Administration Guide.<br />

Prerequisites: Login, OpenProject.<br />

FetchRevision<br />

Allows a user check out member revisions.<br />

Prerequisites: Login, OpenProject, Lock, ModifyMemberRev.<br />

Freeze<br />

Allows a user to freeze members. When a member is frozen, all Source Integrity operations<br />

are run on the frozen member revision.<br />

Lock<br />

Prerequisites: Login, OpenProject.<br />

Allows a user to lock revisions.<br />

Prerequisites: Login, OpenProject.<br />

ModifyAuthor<br />

Allows a user to change the author name associated with a revision.<br />

Prerequisites: Login, OpenProject.<br />

ModifyMemberAttribute<br />

Allows a user to set an attribute for a member that can be used later in a search.<br />

Prerequisites: Login, OpenProject.<br />

ModifyMemberRule<br />

Allows a user to configure a member revision rule that can be applied to one or more<br />

members.<br />

Prerequisites: Login, OpenProject.<br />

MoveLabel<br />

Allows a user to move a member label to another revision within the member history.<br />

298 of 457


Prerequisites: Login, OpenProject, ApplyLabel.<br />

Promote<br />

This permission specifies that a user may promote revisions from the current promotion<br />

state to a higher state, when the States= configuration option defines a sequence of<br />

promotion states. For details, see the Integrity Server Administration Guide.<br />

Prerequisites: Login, OpenProject.<br />

ShareArchive<br />

Allows sharing of member archives between two or more members.<br />

Thaw<br />

Note:<br />

Archive sharing is not re<strong>com</strong>mended. Instead, creating variant sandboxes is<br />

considered a better practice.<br />

Prerequisites: Login, OpenProject, Checkpoint, CheckIn, Lock.<br />

Allows a user to thaw frozen members.<br />

Prerequisites: Login, OpenProject.<br />

Change Package Permissions<br />

Possible Source Integrity change Package related permissions are:<br />

ChangePackageAdmin<br />

Allows a user to edit, discard, close, and submit change packages; as well as move or<br />

discard change package unties, regardless of any documented user restrictions.<br />

Prerequisites: none.<br />

CreateChangePackage<br />

If you are using Source Integrity only, this permission allows a user to create change<br />

packages.<br />

If the Source Integrity and Integrity Manager Integration is enabled, this permission allows a<br />

user to create change packages based on the Change Package Creation Policy for the type<br />

that they want to create change packages for.<br />

Prerequisites: Login, OpenProject.<br />

299 of 457


SelfReview<br />

Allows user to accept change packages under review that were created by that user.<br />

SuperReview<br />

Allows a user to accept or reject a change package under review regardless of the reviewer<br />

rules. Note: This permission supersedes the SelfReview permission.<br />

Project Permissions<br />

Possible Source Integrity project-related permissions are:<br />

AddMember<br />

Allows a user to add new members to projects through a sandbox.<br />

Prerequisites: Login, OpenProject, Lock, ShareArchive, ModifyAuthor.<br />

AddSubproject<br />

Allows a user to re-add dropped subprojects to a project.<br />

Prerequisites: Login, OpenProject.<br />

ApplyProjectLabel<br />

Allows a user to add labels to projects or move labels between revisions of the project.<br />

Prerequisites: Login, OpenProject.<br />

CheckPoint<br />

Allows a user to check in a new revision of a project (that is, checkpoint the project).<br />

Prerequisites: Login, OpenProject, ApplyLabel, Promote, PromoteProject,<br />

ApplyProjectLabel.<br />

ConfigureSubproject<br />

Allows a user to configure a subproject's type. A subproject can be configured as a Normal,<br />

Variant, or Build subproject.<br />

Prerequisites: Login, OpenProject.<br />

CreateDevPath<br />

Allows a user to create new development paths for variants of a project.<br />

Prerequisites: Login, OpenProject.<br />

300 of 457


CreateProject<br />

Allows a user to create new projects.<br />

Prerequisites: Login, OpenProject.<br />

CreateSubproject<br />

Allows a user to create new subprojects below existing projects.<br />

Prerequisites: Login, OpenProject.<br />

DeleteProjectLabel<br />

Allows a user to delete a label from a project revision.<br />

Prerequisites: Login, OpenProject.<br />

DemoteProject<br />

This permission specifies that a user may demote projects from a higher promotion state to<br />

a lower state, when the States= configuration option defines a sequence of promotion<br />

states. For details, see the Integrity Server Administration Guide.<br />

Prerequisites: Login, OpenProject.<br />

DropDevPath<br />

Allows a user to drop a development path, also known as "dropping variants" from a project.<br />

Prerequisites: Login, OpenProject.<br />

DropMember<br />

Allows a user to remove members from projects. The member archive remains, but the<br />

member is no longer treated as part of the project.<br />

Prerequisites: Login, OpenProject.<br />

DropProject<br />

Allows a user to drop one or more top-level, registered projects from the server. The<br />

projects then be<strong>com</strong>e unregistered projects.<br />

Prerequisites: Login, OpenProject.<br />

DropSubProject<br />

Allows a user to drop one or more subprojects from the server. The projects then be<strong>com</strong>e<br />

301 of 457


unregistered projects.<br />

Prerequisites: Login, OpenProject.<br />

ImportProject<br />

Allows a user to import one or more projects from an earlier version of Source Integrity. The<br />

import operation registers the project on the Integrity Server.<br />

Prerequisites: Login, OpenProject.<br />

ModifyMemberRev<br />

Allows a user to make changes to existing member histories.<br />

Prerequisites: Login, OpenProject.<br />

ModifyProjectAttribute<br />

Allows a user to set an attribute for a project, which can be used later in a filter or search.<br />

Prerequisites: Login, OpenProject.<br />

MoveProjectLabel<br />

Allows a user to move a project label to another project revision within the project history.<br />

Prerequisites: Login, OpenProject, ApplyProjectLabel.<br />

OpenProject<br />

Allows a user to open existing registered projects. This is required for most actions.<br />

Note:<br />

When OpenProject is granted or denied on a project, clients accessing the project<br />

must disconnect and then reconnect in order to get the new permission set. If you do<br />

not disconnect and reconnect your client, you may see unexpected behavior due to<br />

out-of-date permissions.<br />

Prerequisites: Login.<br />

PromoteProject<br />

This permission specifies that a user may promote projects from the current promotion state<br />

to a higher state, when the States= configuration option defines a sequence of promotion<br />

states. For details, see the Integrity Server Administration Guide.<br />

Prerequisites: Login, OpenProject.<br />

302 of 457


RestoreProject<br />

Allows a user to restore a project to a particular checkpointed version.<br />

Prerequisites: Login, OpenProject, Checkpoint.<br />

SnapshotSandbox<br />

Snapshot creates and records the state of the user’s sandbox as a branched project revision<br />

within the project history.<br />

Prerequisites: Login, OpenProject, Checkpoint, AddMember, DropMembers.<br />

MKS Integrity Manager Permissions<br />

Possible permissions related to Integrity Manager are:<br />

Admin<br />

Allows administrative privileges for working with Integrity Manager.<br />

Prerequisites: Login.<br />

AdminProxy<br />

For MKS Customer Care only. Allows a user to perform administrative functions on the<br />

proxy<br />

Prerequisites: none.<br />

AdminServer<br />

For MKS Customer Care only. Allows a user to perform administrative functions on the<br />

server.<br />

Prerequisites: none.<br />

CreateCPType<br />

Allows the assigned user or group to create a custom change package type. For information<br />

on custom change package types, contact MKS Customer Care.<br />

Prerequisites: Login.<br />

CreateProject<br />

Allows the assigned user or group to create a new top level Integrity Manager project and<br />

assign another Integrity Manager Project Administrator. This permission can be used to<br />

extend the capability of the Integrity Manager Project Administrator. Denying this permission<br />

303 of 457


means the user cannot create a new top level project or assign another Project<br />

Administrator.<br />

Prerequisites: Login.<br />

CreateQuery<br />

Allows a user to create a new query in Integrity Manager. Denying this permission restricts<br />

the user to using only those queries that already exist on the system.<br />

Prerequisites: Login.<br />

CreateType<br />

Allows the assigned user or group to create a new type in Integrity Manager or assign<br />

another Integrity Manager Type Administrator. This permission can be used to extend the<br />

capability of the Integrity Manager Type Administrator. Denying this permission means the<br />

user cannot create any new types or assign another Type Administrator.<br />

Prerequisites: Login.<br />

Login<br />

Allows a user to login to Integrity Manager.<br />

Prerequisites: none.<br />

ModifyMyNotification<br />

Allows a user to modify personal e-mail notification preferences in Integrity Manager.<br />

Prerequisites: Login, ViewMyNotification.<br />

ViewAdmin<br />

Allows a user to view administrative information related to Integrity Manager.<br />

Prerequisites: Login.<br />

ViewMyNotification<br />

Allows a user to view personal e-mail notification preferences in Integrity Manager.<br />

SEE ALSO<br />

Prerequisites: Login.<br />

304 of 457


Commands:<br />

aa acls, aa addaclentry, aa availablepermissions, aa deleteacl, aa<br />

deleteaclentry, aa groups, aa users, aa viewacl<br />

Miscellaneous:<br />

diagnostics<br />

305 of 457


NAME<br />

cc — cc configuration files.<br />

INTRODUCTION<br />

cc -- Miscellaneous Information<br />

cc reads <strong>com</strong>mands from the configuration file, and executes them to run the appropriate <strong>com</strong>piler<br />

and linker. The <strong>com</strong>mand line that was passed to cc is examined by the code in the configuration<br />

file. If you are familiar with MKS Toolkit, you may notice that the <strong>com</strong>mands resemble AWK or MKS<br />

KornShell <strong>com</strong>mands. However, these <strong>com</strong>mands are sufficiently different that you should study<br />

them carefully before using them. Look at sample configuration files, and experiment with cc in its<br />

interactive mode as you program new configuration files. The program tries to load the script<br />

$ROOTDIR/etc/<strong>com</strong>piler.ccg. You can modify this behavior by setting the CCG environment<br />

variable. If CCG contains the name of a file, cc loads and runs that file; if CCG contains the name<br />

of a directory, the program loads and runs the script in that directory.<br />

If you rename the cc executable, it attempts to find its default configuration in a .ccg file with the<br />

same base name as the renamed executable. For example, if you rename cc.exe to c89.exe,<br />

then c89 looks for a default configuration file named c89.ccg in ROOTDIR/etc.<br />

In any case, if you have set the CCG environment variable, its value takes precedence. If CCG<br />

contains a file name, cc looks for the default configuration in that file. If CCG contains a directory,<br />

cc looks for the default configuration in a .ccg file in that directory. The base name of the .ccg<br />

file is the same as that of the executable. That is, if the executable is cc.exe, the default<br />

configuration is looked for in $CCG/cc.ccg and if the executable has been renamed c89.exe,<br />

the default configuration is looked for in $CCG/c89.ccg.<br />

To enter interactive mode, set the environment variable CCG to the value - or stdin. cc then<br />

reads its configuration file from its standard input. This is useful for debugging new configuration<br />

files: you can interactively enter <strong>com</strong>mands, dump cc's symbol table, and follow the execution of<br />

your cc program.<br />

COMMENTS<br />

A <strong>com</strong>ment starts with a # character and extends to the end of the line. This is the same<br />

convention as MKS Make, AWK, and the MKS KornShell.<br />

LITERALS<br />

306 of 457


cc can manipulate three types of objects: integers, strings, and arrays of strings or integers. Since<br />

arrays are limited to one dimension, they are also called vectors. Unlike AWK, cc does not support<br />

floating point numbers.<br />

Integers are written in the usual way. Here are some sample integers:<br />

123 -49 20000<br />

Strings are written with quotes around them, and cannot extend across a line. Empty strings are<br />

written as "". The following escape sequences are allowed within strings:<br />

\a alert (bell)<br />

\b backspace<br />

\h hard space<br />

\i hard tab<br />

\n newline<br />

\r carriage return<br />

\t horizontal tab<br />

\v vertical tab<br />

\\ escaped \<br />

\" embedded "<br />

\ooo ASCII character with octal value ooo<br />

Here are some sample strings:<br />

"hello" "\"embedded\" quotes"<br />

"\\escaped backslash, with tab\t and newline\n"<br />

A vector is list of integers or strings, separated by <strong>com</strong>mas and surrounded by braces, as in<br />

{ 1, 2, 3 }<br />

{ "strings", 1, "and numbers" }<br />

{ a++, ++c }<br />

{ }<br />

Because these are dynamic, the contents of the vector need not be constant expressions. For<br />

example, a++ is valid in a vector list. Empty vectors are written as {}. You indicate a vector's<br />

elements with the bracket [] operator.<br />

Indexable Objects<br />

Both strings and vectors can be indexed -- indexing is 0-origin. Indexable objects have an<br />

associated cursor that indicates the current position of the index. This means you can treat any<br />

307 of 457


indexable object as a stream. (The cursor is actually associated with the value of a variable rather<br />

than with the variable itself; if you assign a new value to a variable, the cursor is reset to the<br />

origin.) The rewind statement lets you rewind the stream to the start of an object. Several<br />

functions are provided for dealing with indexable objects -- read(), offset(), and tail().<br />

# Setup the string:<br />

stream="Alph" ;<br />

# Read and print the first 3 elements;<br />

# this prints "A l p"<br />

println read(stream), read(stream), read(stream);<br />

# Rewind the stream:<br />

rewind(stream);<br />

# Print the first two elements<br />

# and the index of the next ("A l 2"):<br />

println read(stream), read(stream), offset(a);<br />

# Print the remainder of the string ("ph"):<br />

println tail(stream);<br />

To look ahead on a stream, use indexing <strong>com</strong>bined with the offset. See String/Vector Operations<br />

for more information on the functions.<br />

VARIABLES<br />

A variable is a name with an associated value. The name follows the usual rules for C identifiers;<br />

the first character must be a letter or underscore (_), followed by zero or more letters, digits, or<br />

underscores.<br />

Variables are created as they are first seen in cc input. Any variable can have any type of value;<br />

the type changes automatically if a value of a different type is assigned.<br />

BUILT-IN VARIABLES<br />

Several variables have pre-assigned values at the start of a cc program. You can change these<br />

values. The variables are:<br />

ARGV<br />

DIRSEPSTR<br />

This variable is assigned a vector containing the strings that appeared on the <strong>com</strong>mand line<br />

that called cc. Note that the name of the program is not provided. ARGV is typically<br />

examined, and used to build new argument lists for the <strong>com</strong>piler or linker that is being used.<br />

308 of 457


ECHO<br />

Contains the characters that can be used to separate path names into the <strong>com</strong>ponent<br />

directories. On Windows systems, it is initially set to the string /\:. although the default<br />

startup.mk file modifies this based on the value of the SHELL environment variable. See<br />

the description of filepath().<br />

Originally assigned the empty (null) string, corresponding to a false expression. If it is later<br />

assigned a true value, the exec and ovl_exec operations (described later) print the<br />

<strong>com</strong>mands as they are about to be executed.<br />

NORUN<br />

Originally assigned the empty (null) string, corresponding to a false expression. If it is later<br />

assigned a true value, the exec and ovl_exec operations (described later) only echo their<br />

arguments, and exec returns as though the <strong>com</strong>mand succeeded, while ovl_exec<br />

terminates cc with a return value of 0. Setting NORUN in this way corresponds to running<br />

Make with the -n option. By assigning non-null values to both ECHO and NORUN, you can get<br />

cc to display the <strong>com</strong>mands that it attempts to execute to <strong>com</strong>pile a program.<br />

true<br />

Assigned the integer value 1, true is used internally by cc to denote a true expression. You<br />

should not change this value; if you change the value of true to be an expression that is<br />

considered false (see EXPRESSIONS), cc may not function correctly.<br />

PROGRAMS<br />

A cc program consists of a number of statements, each of which is read and then executed.<br />

During the reading of a statement, a syntax error causes cc to print a diagnostic message, and<br />

then cc goes on to the next statement. During the execution of a statement, an error causes cc to<br />

print a diagnostic message. If cc finds a syntax error as it is reading a statement, it prints a<br />

diagnostic message and goes on to the next statement. While executing a statement, if cc finds an<br />

error, it prints a diagnostic message; if an expression is being calculated, then the null string is<br />

returned as the value of the expression.<br />

STATEMENTS<br />

This section describes the statements that may be used in input to cc. In the following, the<br />

characters {} are used to indicate zero or more occurrences of the enclosed items. The characters<br />

[] indicate an optional occurrence of the enclosed items.<br />

The following table summarizes statements allowed in cc:<br />

<strong>Description</strong> Syntax<br />

309 of 457


Advance advance name ;<br />

Assignment name = expr ;<br />

name[expr1] = expr2 ;<br />

Assign & concatenate name |= expr ;<br />

name[expr1] |= expr2 ;<br />

Break loop break [expr] ;<br />

Close file close filename ;<br />

Delete file delete filename ;<br />

Dump debugging info dump ;<br />

Empty statement ;<br />

Execute <strong>com</strong>mand exec expr ;<br />

Exit exit ;<br />

For for (name in expr)<br />

do statements done<br />

For for (expr1; expr2; expr3)<br />

do statements done<br />

Functions function name([arg1{[,arg2]]})<br />

{ statements }<br />

If if (expr1) statements<br />

{ elif (expr2) statements }<br />

[ else statements ]<br />

fi<br />

Open file open filename ;<br />

Overlay file ovl_exec cmd_expr1 {,expr2} ;<br />

Print expression(s) print expr1 {,expr2} ;<br />

Print line println expr1 {,expr2} ;<br />

Print to file print expr1 {,expr2} -> filename;<br />

println expr1 {,expr2} -> filename;<br />

Rewind cursor rewind indexable_object<br />

While while (expr) do statements done<br />

Table 1: Summary of cc Statements<br />

In this definition, statements means a list of statements, and expr, expr1, and expr2 mean any<br />

legal expression as described a bit later. The expression value is used as a logical expression. See<br />

EXPRESSIONS for the description of what values are considered true and false.<br />

Empty statement<br />

An empty statement is written as a single semicolon (;). It has no effect.<br />

310 of 457


If statement<br />

An if statement has the form:<br />

if ( expression ) statements<br />

{ elif ( expression ) statements }<br />

[ else statements ]<br />

fi<br />

Note that fi is required to end the if statement. Any number of elif's can be inserted before the<br />

end of the if statement.<br />

While statement<br />

A while statement has the form:<br />

while ( expression ) do statements done<br />

The done is required to mark the end of the statements. The meaning is similar to the C while<br />

loop.<br />

For loop<br />

A for statement has one of these forms:<br />

for ( name in expression ) do statements done<br />

for ( expr1; expr2; expr3 ) do statements done<br />

In the first form, the name must be a variable name, and the expression must evaluate to a vector<br />

or string. If the vector is not empty, the statements are executed repeatedly; on each iteration,<br />

name is assigned each successive value in the vector. The second form is much more like the C<br />

language for loop. Usually, the first expression initializes some variable, the second expression<br />

tests it, and the third expression increments or decrements it.<br />

Advance<br />

An advance statement has the form:<br />

advance name ;<br />

where name is a variable name used in an enclosing for loop. This statement immediately<br />

assigns to name the value it would normally have been given in the next iteration of the for loop,<br />

and subsequent iterations skip this value.<br />

Break loop<br />

311 of 457


A break statement has the form:<br />

break [expr] ;<br />

where expr is the number of levels to break out of. If no expression is specified, break exits the<br />

current loop (expr is 1).<br />

Exit Program<br />

The exit statement has the form:<br />

exit expression ;<br />

This terminates cc with the integer-valued expression as its exit value.<br />

Dump Debugging Information<br />

The dump statement is a debugging aid.<br />

dump ;<br />

outputs the names and values of all variables currently defined to the standard output.<br />

Print Expression<br />

There are several printing statement forms.<br />

print expression { , expression } ;<br />

prints the values of the given expressions on the standard output. If more then one expression is<br />

given, they are printed with a single blank separating each item. print does not put a newline<br />

character at the end of the output.<br />

println expression { , expression } ;<br />

is similar to the previous format, but does print a newline at the end of the list of expressions.<br />

print expression { , expression } -> filename ;<br />

println expression { , expression } -> filename ;<br />

are similar to the other printing statements, but they print to the given file instead of to the standard<br />

output. The filename is given as a string-valued expression. If the file does not exist, it is created; if<br />

it already exists, output is appended to the end of the current contents.<br />

Close File<br />

312 of 457


To close a given file, use<br />

close filename ;<br />

The filename is given as a string-valued expression. If you use a printing statement to write to a<br />

file, it is important to close the file before cc runs a program that requires the contents of the file to<br />

be up-to-date.<br />

Delete File<br />

To delete a given file, use<br />

delete filename ;<br />

You can use this to get rid of temporary (work) files created by earlier statements in the cc<br />

program. The file name is given as a string-valued expression.<br />

Define Function<br />

You can define a function using the function statement, which has the form:<br />

function name ( [arg1{, arg2}] )<br />

{<br />

statements<br />

}<br />

Execute a <strong>com</strong>mand<br />

To execute a <strong>com</strong>mand, use<br />

exec expression { , expression } ;<br />

Each expression is converted into a string (if necessary) and then concatenated into a <strong>com</strong>mand<br />

string (with a single blank between each expression in the list). For example,<br />

exec "cp","infile","outfile" ;<br />

executes the <strong>com</strong>mand<br />

cp infile outfile<br />

The exec statement executes the <strong>com</strong>mand and then goes on to the next statement. (See the<br />

exec expression following for ways to get the return status of the executed <strong>com</strong>mand.) The<br />

behavior of exec can be changed by the values of the ECHO and NORUN variables.<br />

313 of 457


Overlay Execute<br />

The statement<br />

ovl_exec expression { , expression } ;<br />

is similar to an exec statement. In this case, the memory used by cc is overlaid with the <strong>com</strong>mand<br />

to be run, and cc is effectively terminated. This frees the memory space that cc is occupying for<br />

the executed program. The behavior of ovl_exec can be changed by the values of the ECHO and<br />

NORUN variables.<br />

Rewind Stream<br />

The rewind statement has the form:<br />

rewind indexable_object ;<br />

where indexable_object is a string or vector. This statement moves the cursor associated with<br />

indexable_object back to the origin. For more about indexable objects, see Indexable Objects.<br />

EXPRESSIONS<br />

Expressions are created by <strong>com</strong>bining literal strings, integers, vectors, and variables, with the<br />

operators listed a bit later.<br />

An expression has a type: integer, string, or vector. When an integer value is required and a string<br />

or vector is provided, some operators convert the vector into a string, and then interpret that string<br />

as an ASCII sequence representing a number. For example, "123" has the integer value 123<br />

when used in arithmetic operations. By the same token, if a string is required, an integer value is<br />

converted into a string in the same way.<br />

Some expressions are calculated by determining if operands are true or false. The following are<br />

considered false:<br />

● the integer 0<br />

● the null string ""<br />

● an empty vector { }<br />

Other objects are considered true. The built-in variable true can also be used as a condition.<br />

Operators are grouped in precedence classes that are similar to those of the C programming<br />

language. Each section that follows describes a group of operators in a single-precedence class.<br />

The order of the sections gives the order of precedence.<br />

314 of 457


Order of Operations<br />

A++ A-- ++A --A pre- and post-increment and decrement<br />

-A (A) V[a] unary minus, grouping, array element<br />

A*B A/B integer multiplication and division<br />

A+B A-B addition and subtraction<br />

A%B modulus<br />

:<br />

A==B A!=B equality <strong>com</strong>parison<br />

AB A=B relational <strong>com</strong>parison<br />

A&&B A||B !A logical AND, logical OR, logical negation<br />

,<br />

-> file redirection<br />

length(A) length operation<br />

A | B string/vector concatenation<br />

A=B A|=B assignment<br />

A and B are any expression.<br />

V is any vector expression.<br />

Primary Expressions<br />

These expressions have the highest precedence.<br />

- expression<br />

gives the negative of an integer expression.<br />

( expression )<br />

Table 2: cc Order of Operations<br />

gives the value of the expression inside the parentheses, and you use it to change the order of<br />

315 of 457


evaluation of expressions.<br />

indexable_object[expression]<br />

obtains the value of a specific indexable element. Indexable objects (vectors and strings) are<br />

indexed with 0-origin. If a vector subscript is out of range, an error message is displayed, and the<br />

null string is returned. As a special case, the 0-th element of a 0-length vector does not cause an<br />

error; instead, its value is the null string.<br />

Arithmetic Operators<br />

The standard multiplication operators are:<br />

expression1 * expression2<br />

expression1 / expression2<br />

expression1 % expression2<br />

representing integer multiplication, division, and the modulus. Non-integer operands are converted<br />

to integers in the usual way.<br />

The standard addition operators are:<br />

expression1 + expression2<br />

expression1 - expression2<br />

representing addition and subtraction. Non-integer operands are converted to integers in the usual<br />

way.<br />

Equality Operators<br />

The result of:<br />

expression1 == expression2<br />

is true if the two expressions have equal values.<br />

expression1 != expression2<br />

is true if the two expressions are not equal.<br />

In both cases, if either operand is an integer, the other is converted into an integer for the purposes<br />

of <strong>com</strong>parison; otherwise, both expressions are converted into strings, and then <strong>com</strong>pared.<br />

316 of 457


Relational Operators<br />

The relational operators are:<br />

expression1 > expression2<br />

expression1 < expression2<br />

expression1 >= expression2<br />

expression1


If expression is a vector, the value is the number of elements in the vector. If expression is a string,<br />

the value is the number of characters in the string; otherwise, the value is 0.<br />

String/Vector Operators<br />

The operator | concatenates strings or vectors. The form is<br />

expression1 | expression2<br />

where expression1 must be a string or vector. If expression1 is a string, the second argument is<br />

converted to a string and the two strings are concatenated for the result. For example, in<br />

X = "hello";<br />

X = X | " good" | "bye";<br />

the variable X is assigned the value<br />

"hello goodbye"<br />

You can use the shorthand notation |= to append to the end of an existing string, as in<br />

x = "hello";<br />

x |= " good" | "bye";<br />

which has the same result.<br />

If the first argument of the | operator is a vector, the second argument is added as a new<br />

<strong>com</strong>ponent to the vector. In this way, you can assign values to a vector incrementally. You can use<br />

the |= operator as a shorthand assignment. For example:<br />

x = {} # ensure x is a vector<br />

x |= 1; # x is now { 1 }<br />

x |= "so"; # x is now { 1, "so" }<br />

x |= 2 | 3; # x is now { 1, "so", "23" }<br />

# Remember, the '|' is applied to '2' and '3',<br />

# forming a string, that is then added<br />

x |= { 4, 5 }; # x is now { 1, "so", "23", 4, 5 }<br />

Assignments<br />

There are several assignment expressions.<br />

name = expression ;<br />

318 of 457


assigns the value of the expression to the given named variable.<br />

name[expression1] = expression2 ;<br />

assigns the value of expression2 to the element of the vector variable specified by expression1. It<br />

is an error to use an index greater then the length of the vector.<br />

name |= expression ;<br />

name[expression1] |= expression2 ;<br />

are concatenation assignments. The value of the right hand side is concatenated to the existing<br />

value of the left hand side. See String/Vector Operators for more about concatenation.<br />

Because assignments are expressions, rather than statements, they can be used anywhere. For<br />

example, this is valid:<br />

if (a = 2)<br />

println "true" ;<br />

fi<br />

String/Vector Operations<br />

There are a number of other string/vector operators, summarized in this table:<br />

Function <strong>Description</strong><br />

access(filename,[num|str]) return true if filename's mode is str or num<br />

cd(pathname) change to named directory<br />

cinclude(filename) include filename; return 0 if it does not exist<br />

exec(expression {,<br />

expression})<br />

execute <strong>com</strong>mand line<br />

filepath(expression) return vector containing path name <strong>com</strong>ponents<br />

getcwd() return current working directory path<br />

getenv(name) return value of environment variable name<br />

getopt([str[, optind]]) process options string<br />

include(filename) include filename; abort if filename does not exist<br />

index(str,expr) return index of first expr in str<br />

isatty(fileno) return true if fileno is a tty<br />

offset(indexable_object) return cursor offset in indexable_object<br />

ovl_exec() execute <strong>com</strong>mand line in overlaid memory<br />

319 of 457


putenv() alter value of environment variable<br />

read(indexable_object) return next token from indexable_object<br />

replace(str,old,new) return str with old replaced by new<br />

rindex(str,expr) return index of last expr in str<br />

strerror() return string corresponding to errno<br />

substr(expr,pos) return substring of expr starting at pos<br />

substr(expr,pos,len) return length len substring of expr starting at pos<br />

tail(indexable_object) return unread portion of indexable_object<br />

tempfile([dir_str,]<br />

pre_str)<br />

temporary file name<br />

tolower(expr) return expr in lowercase<br />

toupper(expr) return expr in uppercase<br />

Table 3: Summary of cc Functions<br />

access(filename, [mode])<br />

returns true if the access mode of filename is the same as the supplied mode. The mode<br />

should be passed as a string <strong>com</strong>posed of the characters r, w, x, or f (for read, write,<br />

execute, or file existence). If no mode is supplied, f is assumed.<br />

access("temp.af9","f") -- checks if temp.af9 exists<br />

access("temp.af9","rw") -- checks for read/write<br />

permission on temp.af9<br />

If the base operating system allows, mode can be passed as a number. This is non-portable, so<br />

you should use a string representation.<br />

cd(pathname)<br />

changes the current directory to the value of pathname.<br />

cinclude(filename)<br />

includes the specified file. No path search is performed. If filename is not an absolute path<br />

name, the current directory is searched. If the file does not exist, this function returns 0;<br />

otherwise, it returns 1.<br />

exec(expression {, expression})<br />

is similar to the exec statement. The value of an exec expression is the exit status of the<br />

last <strong>com</strong>mand executed. This is an integer.<br />

filepath(expression)<br />

returns a vector whose <strong>com</strong>ponents are the strings corresponding to the path name<br />

<strong>com</strong>ponents of the string expression. The built-in variable DIRSEPSTR is used to determine<br />

320 of 457


the <strong>com</strong>ponents of the path.<br />

getcwd()<br />

returns the current working directory path.<br />

getenv(name)<br />

returns the string value of the environment variable indicated by the string expression name.<br />

If the environment variable is not set, the null string "" is returned.<br />

getopt([optstr[, optind]])<br />

processes an option string; this simplifies the business of writing scripts that take options.<br />

optstr is a format string listing each option character; if the option character is followed by a<br />

colon, the option takes an argument. For example, the format string "aei:o:u" specifies<br />

that the options a, e, i, o, and u are valid, and the colons show that both i and o require<br />

arguments. The option being processed is stored in a variable; if there is an argument, it is<br />

stored in the global variable OPTARG.<br />

optstr only needs to be specified on the first call. Subsequent calls to getopt() continue<br />

processing the same ARGV argument string. Here is a bit of code that sets flag variables for<br />

each option called:<br />

while (opt = getopt("dl:rtx")) do<br />

if (opt == "d" ) d_flag++;<br />

elif (opt == "l" )<br />

l_flag++;<br />

l_arg = OPTARG;<br />

elif (opt == "r" ) r_flag++;<br />

elif (opt == "t" ) t_flag++;<br />

elif (opt == "x" ) x_flag++;<br />

fi<br />

done<br />

The getopt call does not remove items from the ARGV string, it just moves the OPTIND pointer<br />

through the ARGV vector. If you want to pass the tail of the argument string without the options, you<br />

can reset the value of ARGV with code like this:<br />

members = {};<br />

for (i=OPTIND; ARGV{i}; i++) do<br />

members |= { ARGV[i] );<br />

done<br />

ARGV = members;<br />

include(filename)<br />

321 of 457


includes the specified file. No path search is performed. If filename is not an absolute path<br />

name, the current directory is searched. If the file does not exist, the script aborts.<br />

Note:<br />

Expressions are <strong>com</strong>piled <strong>com</strong>pletely and then executed. As a result, if you use<br />

include in a function, the file is not included until an expression referencing the<br />

function is executed.<br />

index(expression, string-expression)<br />

returns the index of the first occurrence of string-expression in the expression If the first<br />

expression is a vector, it is first converted into a string. The index is 1-origin; a value of 0 is<br />

returned if the second expression is not a substring of the first.<br />

isatty(filenum\)<br />

returns true if filenum is a tty; filenum is an integer representing a file number. The values<br />

0, 1, and 2 represent standard input, standard output, and standard error, respectively.<br />

offset(indexable_object)<br />

returns the current stream offset in an indexable object.<br />

ovl_exec(expression {, expression})<br />

constructs a <strong>com</strong>mand line in the same way, and then overlays cc with that <strong>com</strong>mand. cc<br />

exits with the exit code returned by that <strong>com</strong>mand.<br />

putenv(string)<br />

where string is a string expression of the form name=value assigns value to the environment<br />

variable indicated by the string expression name and adds that variable to the current<br />

environment.<br />

read(indexable_object)<br />

reads the next item from indexable_object and returns it.<br />

replace(string, old, new)<br />

returns string with all occurrences of the first character of the string old replaced with the first<br />

character of the string new.<br />

rindex(expression, string-expression)<br />

is similar to index but returns the index of the last occurrence.<br />

strerror()<br />

Returns the string that corresponds to the current value of errno. If errno is not set,<br />

returns a null string.<br />

322 of 457


substr(expression, position)<br />

returns the substring of the first string, starting at the position given by the second argument<br />

(an integer expression). Strings are 1-origin; however, for convenience, if the value of<br />

position is 0, substr returns the substring beginning at 1. If position is negative, it is taken<br />

to be an offset from the end of the string. For example:<br />

substr("hello",0) = substr("hello",1) -> "hello"<br />

substr("hello",length("hello")) -> "o"<br />

substr("hello",-3) -> "llo"<br />

substr("hello",-1) -> "o"<br />

substr may also take three arguments, as in:<br />

substr(expression, position, length)<br />

The length argument is an integer expression, giving the desired number of characters in<br />

the substring. If this value is negative, the substring is obtained by advancing to the<br />

indicated position, marking that the end, and then retreating by the specified amount. For<br />

example:<br />

substr("hello",0,1) = substr("hello",1,1) -> "h"<br />

substr("hello",-1,-3) -> "llo"<br />

tail(indexable_object)<br />

returns the unread portion of an indexable_object.<br />

tempfile([dir_str], pre)<br />

returns a string guaranteed to be an unused temporary file name in the directory specified<br />

by dir_str. If no dir_str is provided, then the directory specified by TMPDIR is used; if<br />

TMPDIR is not set, the system default is used (usually /tmp. If pre is not an empty string, it<br />

is taken as a prefix for the name of the temporary file.<br />

tolower(expression)<br />

returns the string expression with all uppercase characters translated to lowercase.<br />

toupper(expression)<br />

does the opposite translation.<br />

AVAILABILITY<br />

MKS Toolkit for Developers<br />

MKS Toolkit for Interoperability<br />

MKS Toolkit for Professional Developers<br />

323 of 457


MKS Toolkit for Enterprise Developers<br />

MKS Toolkit for Enterprise Developers 64-Bit Edition<br />

MKS Source Integrity Standard<br />

MKS Source Integrity Enterprise<br />

SEE ALSO<br />

Commands:<br />

cc<br />

324 of 457


diagnostics<br />

applicable to MKS Integrity Suite <strong>com</strong>mands<br />

DESCRIPTION<br />

The exit status values for MKS Integrity Suite <strong>com</strong>mands si, im, aa, integrity) can be used by<br />

event triggers for automating processes with Source Integrity or Integrity Manager. This reference<br />

page is provided as a guide to the exit status values you may see.<br />

DIAGNOSTICS<br />

Possible exit status values for MKS Integrity Suite <strong>com</strong>mands are:<br />

0<br />

1<br />

2<br />

3<br />

4<br />

5<br />

6<br />

Successful <strong>com</strong>pletion.<br />

or<br />

No differences between the files being <strong>com</strong>pared (using si diff).<br />

Command usage error.<br />

Command was canceled by user. This does not include cancellations using CTRL-c, which<br />

overrides this exit status value. In those cases, the return code will be 130.<br />

Invalid element in the selection for the <strong>com</strong>mand.<br />

Sandbox specified was ambiguous (using an si <strong>com</strong>mand). Command not executed.<br />

Unable to create or utilize the selection for the <strong>com</strong>mand.<br />

Unable to continue with the selection for the <strong>com</strong>mand because the program cannot find the<br />

next element.<br />

325 of 457


10<br />

16<br />

17<br />

19<br />

128<br />

130<br />

255<br />

SEE ALSO<br />

Connection failed: a network error caused the <strong>com</strong>mand to terminate.<br />

diff <strong>com</strong>pared the files and found them to be different (using si diff).<br />

Failure due to any of the following (using si diff):<br />

❍ invalid <strong>com</strong>mand line argument<br />

❍ cannot open one of the input files<br />

❍ out of memory<br />

❍ read error on one of the input files<br />

❍ more than LINE_MAX characters between newlines<br />

At least one of the files is a binary file containing embedded NUL (\0) bytes (using<br />

si diff).<br />

General <strong>com</strong>mand failure.<br />

Command was canceled by the user using CTRL-c.<br />

Unknown exception or error code.<br />

Miscellaneous:<br />

ACL, options, preferences<br />

326 of 457


NAME<br />

envvar — standard environment variables<br />

SYNOPSIS<br />

export NAME=value<br />

set NAME=value<br />

echo $NAME<br />

DESCRIPTION<br />

envvar -- Miscellaneous Information<br />

When a process is executed, it inherits a set of strings called the environment. It is conventional for<br />

these strings to have the form:<br />

NAME=value<br />

The export <strong>com</strong>mand built into the MKS KornShell can be used to set the variable NAME into the<br />

environment of every child process. The set <strong>com</strong>mand built into <strong>com</strong>mand.<strong>com</strong> or cmd.exe does<br />

the same. The echo <strong>com</strong>mand prints the value of environment variable NAME inside the MKS<br />

KornShell.<br />

Note:<br />

The shell maintains additional shell variables that are not exported to child processes;<br />

because these variables are not passed on, they are not environment variables.<br />

The following environment variables are used throughout MKS Toolkit:<br />

COLUMNS<br />

If you set this variable to a numeric value, various <strong>com</strong>mands use its value as the width of<br />

the output device in columns. This overrides the default.<br />

COMSPEC<br />

The value of this variable must point to the standard <strong>com</strong>mand interpreter (<strong>com</strong>mand.<strong>com</strong> or<br />

cmd.exe), if you want to use that <strong>com</strong>mand interpreter in any way. This variable is called<br />

ComSpec under Windows NT/2000/XP/2003.<br />

ENV<br />

327 of 457


The value of this variable is the name of a file of MKS KornShell <strong>com</strong>mands, or else be null.<br />

When the MKS KornShell is invoked, the file named by ENV is executed before the MKS<br />

KornShell does anything else. Thus your ENV file may contain definitions of aliases, shell<br />

functions, and son on that may be used by shell scripts. Note that your ENV file is executed,<br />

whether or not the MKS KornShell is invoked as a login shell. This differs from older<br />

releases of the MKS KornShell.<br />

HASHBANG<br />

If this variable is set then the #! feature of the MKS KornShell is enabled.<br />

HOME<br />

This variable is set by the shell's default startup files. It contains the name of your home<br />

directory. Your home directory is the default directory for the cd <strong>com</strong>mand built into the MKS<br />

KornShell.<br />

LINES<br />

If you set this variable to a numeric value, various <strong>com</strong>mands use its value as the number of<br />

lines available on the output device. This overrides the default.<br />

LOGNAME<br />

This variable is set by the shell's default startup files. It holds the user name of the current<br />

user.<br />

MAILER<br />

For <strong>com</strong>mands that send mail, this variable points at a mail delivery program. If this variable<br />

is not set, then the default mailer, mailx is invoked.<br />

PATH<br />

This variable is set to a default value when you start the MKS KornShell. Normally, it is also<br />

set in your profile file. It lists the directories that are to be searched to find <strong>com</strong>mands, as<br />

described in sh.<br />

ROOTDIR<br />

Because Windows systems have a multi-device file system, it is necessary to provide the<br />

location of the standard root directory for system files (for example, /etc/profile.ksh<br />

and /tmp). This variable contains a device name and possibly a directory where such files<br />

are found.<br />

SHELL<br />

This variable contains the full path name of the current shell. Note that if SHELL is not<br />

defined, all <strong>com</strong>mands that require the full path name of the current shell use the contents of<br />

the environment variable COMSPEC.<br />

328 of 457


TERM<br />

This variable contains the terminal type.<br />

TK_NTLINKS_OFF<br />

MKS Toolkit supports hard links under Windows NT/2000/XP/2003 on NTFS file systems.<br />

There is a slight loss of performance for this support. If you do not require hard link support<br />

then you should set and export the environment variable TK_NTLINKS_OFF to disable this<br />

support.<br />

TK_NTSECURITYINFO_OFF<br />

MKS Toolkit supports Windows NT/2000/XP/2003 security information on NTFS file<br />

systems. There is a slight loss of performance for this support. If you do not require any<br />

security information then you should set and export the environment variable<br />

TK_NTSECURITYINFO_OFF to disable this feature.<br />

TK_NTSECURITYINFO_SID_TERSE<br />

Under Windows NT/2000/XP/2003, when using ls with the -l option, files having an<br />

associated SID, whose name cannot be determined, display the value of the SID instead.<br />

SID values are usually very large. You should set and export the<br />

TK_NTSECURITYINFO_SID_TERSE environment variable. This causes all SID values to<br />

be shortened by replacing all the subauthority values, except the last one, by the string "-...-<br />

".<br />

TK_PERL_USE_COMSPEC<br />

When set, this environment variable causes perl to use the contents of the environment<br />

variable COMSPEC as the full path name of the current shell, whether or not the<br />

environment variable SHELL is set.<br />

TMPDIR<br />

By default, MKS Toolkit <strong>com</strong>mands store temporary files under /tmp. To use a different<br />

directory for temporary files, set TMPDIR to the name of the directory you want to use.<br />

TZ<br />

Commands that print times (and dates) use this variable to determine the time zone. If the<br />

TZ variable is left undefined, the operating system's current time zone setting is used. See<br />

timezone for details. On Windows, the MKS Toolkit makes use of the built-in timezone<br />

support, and you should not set the TZ environment variable.<br />

PORTABILITY<br />

The standard names on Windows systems are a superset of those used by UNIX programs, with<br />

COMSPEC (ComSpec under Windows NT/2000/XP/2003), ROOTDIR and TK_* being the major<br />

329 of 457


additions.<br />

AVAILABILITY<br />

MKS Toolkit for Power Users<br />

MKS Toolkit for System Administrators<br />

MKS Toolkit for Developers<br />

MKS Toolkit for Interoperability<br />

MKS Toolkit for Professional Developers<br />

MKS Toolkit for Enterprise Developers<br />

MKS Toolkit for Enterprise Developers 64-Bit Edition<br />

MKS AlertCentre<br />

MKS Source Integrity Standard<br />

MKS Source Integrity Enterprise<br />

SEE ALSO<br />

Commands:<br />

cd, env, ls, sh<br />

Miscellaneous:<br />

timezone<br />

330 of 457


NAME<br />

makefile — format of MKS Make file<br />

DESCRIPTION<br />

makefile -- Miscellaneous Information<br />

This reference page offers a summary of the syntax of a makefile's contents, using a style similar<br />

to BNF (Backus Naur Form). Items enclosed in [ ] are optional, while items enclosed in { } can<br />

appear zero or more times.<br />

makefile<br />

→ { makefile-line }<br />

makefile-line<br />

→ macro-definition<br />

→ target-definition<br />

→ attribute-definition<br />

→ conditional<br />

A line is a possibly empty sequence of characters, terminated by a nonescaped newline character;<br />

that is, one not immediately preceded by a backslash (\). A line can be extended over several<br />

input lines by placing a \ at the end of each line to be continued.<br />

A <strong>com</strong>ment begins with a # and extends to the end of the line. In the following, an expression is<br />

defined as<br />

expression<br />

→ string<br />

→ string == string<br />

→ string != string<br />

where string is defined as a literal sequence of characters, or the sequence of characters resulting<br />

from the expansion of a macro.<br />

A conditional is defined as<br />

conditional →<br />

.IF expression<br />

makefile<br />

{ .ELSIF expression<br />

331 of 457


makefile<br />

}<br />

[ .ELSE<br />

makefile<br />

]<br />

.END<br />

A rule-definition is defined as<br />

rule-definition →<br />

targets [ attributes ] op [prerequisites] [ ; recipe ]<br />

recipe<br />

targets →<br />

target { target }<br />

A target may be a special-target.<br />

Any number of attributes may follow a target in a rule-definition.<br />

attribute<br />

→ .IGNORE<br />

→ .SILENT<br />

→ .PRECIOUS<br />

→ .LIBRARY<br />

→ .PROLOG<br />

→ .EPILOG<br />

→ .SETDIR=path<br />

An attribute-definition is like a rule-definition, except that a recipe is not allowed. An attributedefinition<br />

is given as<br />

attribute-definition<br />

→ attribute { attribute } : targets<br />

The op defines the type of rule.<br />

op → :<br />

→ ::<br />

→ :^<br />

→ :!<br />

→ :-<br />

→ :|<br />

332 of 457


The prerequisites are a list (possibly empty) of targets that must be brought up-to-date before<br />

making the current target. The prerequisites may optionally be followed by a semicolon (;) and a<br />

recipe.<br />

A recipe normally follows; it consists of a number of lines, all starting with at least one tab<br />

character, or a group-recipe, which is written between brackets ([ ]).<br />

recipe<br />

→ { [+@-] line }<br />

→ [[+@-]lines]<br />

A special-target is a keyword that is given as a target in a rule-definition. The following special<br />

targets are allowed:<br />

special-target<br />

→ .BRACEEXPAND<br />

→ .ERROR<br />

→ .EXPORT<br />

→ .GROUPEPILOG<br />

→ .GROUPPROLOG<br />

→ .IMPORT<br />

→ .INCLUDE<br />

→ .INCLUDEDIRS<br />

→ .MAKEFILES<br />

→ .NOAUTODEPEND<br />

→ .REMOVE<br />

→ .SOURCE<br />

→ .SOURCE.suffix<br />

→ .SUFFIXES<br />

→ .POSIX<br />

A macro-definition is recognized as a string followed by an = character. There are three forms of<br />

macros:<br />

macro = string<br />

assign string to macro<br />

macro := string<br />

expand macro definitions string, then assign<br />

macro += string<br />

append string to end of macro<br />

333 of 457


If string is empty, macro is assigned the null string (unless you use the += operator; in this case,<br />

the macros contents are not touched). White space on either side of the =, :=, or += is ignored.<br />

Macros are expanded by $(macro) or ${macro}. If a macro name is a single letter, it can also be<br />

expanded by $n, where n is the name.<br />

If the .BRACEEXPAND special target is set, make expands a token sequence (separated by white<br />

space) prepending a prefix string and appending a suffix string to each token:<br />

string1{ token-list }string2<br />

Future versions of MKS Make may not support this obsolescent feature.<br />

A macro can also be modified as it is expanded. The syntax for this is<br />

$(macro {:modifier})<br />

where any number of modifiers can be supplied, separated by :.<br />

modifier<br />

→b<br />

→d<br />

→f<br />

→l<br />

→ s/string/new_string/<br />

→ suffix_string=new_suffix_string<br />

→ t"string"<br />

→u<br />

→^"string"<br />

→+"string"<br />

The :s modifier is a substitute operator; occurrences of the given pattern that are matched are<br />

replaced by the indicated value. The :t modifier tokenizes the macro string definition, placing the<br />

given string between each name in the indicated string. That string may contain the following<br />

escape sequences:<br />

\" → "<br />

\\ → \<br />

\a → alert or <br />

\b → <br />

\f → <br />

\n → <br />

334 of 457


\r → <br />

\t → <br />

\v → <br />

The :u modifier maps all characters in the expansion to uppercase.<br />

The :l modifier maps all characters in the expansion to lowercase.<br />

The :^ modifier adds a prefix to all of the tokens in the expanded macro.<br />

The :+ modifier adds a suffix to all of the tokens in the expanded macro.<br />

A number of built-in macros are defined by MKS Make.<br />

$@ full target name<br />

$$@ dynamic expansion of $@<br />

$% full target name, or name of archive library<br />

$$% dynamic expansion of $%<br />

$* $@ without suffix; same as $(@:db)<br />

$$* dynamic expansion of $*<br />

$> library name for current target (library member)<br />

$$> dynamic expansion of $><br />

$? all recently changed prerequisites<br />

$< in normal rules, those prerequisites prompting<br />

execution of current rule; in inference rules, the<br />

prerequisite of the current rule<br />

$& all prerequisites<br />

$^ prerequisites in current rule<br />

MKS Make also uses control-macros, whose value is either maintained by make, or used to control<br />

the corresponding attribute.<br />

control-macros<br />

→ DIRSEPSTR<br />

→ .EPILOG<br />

→ GROUPFLAGS<br />

→ GROUPSHELL<br />

→ GROUPSUFFIX<br />

→ .IGNORE<br />

→ INCDEPTH<br />

→ MAKE<br />

→ MAKECMD<br />

335 of 457


→ MAKEDIR<br />

→ MAKEFLAGS<br />

→ MAKESTARTUP<br />

→ MFLAGS<br />

→ NULL<br />

→ .PRECIOUS<br />

→ .PROLOG<br />

→ PWD<br />

→ SHELL<br />

→ SHELLFLAGS<br />

→ SHELLMETAS<br />

→ .SILENT<br />

For example, the .SILENT macro is like the .SILENT attribute, except that using the macro<br />

assigns the .SILENT attribute to all targets.<br />

AVAILABILITY<br />

MKS Toolkit for Developers<br />

MKS Toolkit for Interoperability<br />

MKS Toolkit for Professional Developers<br />

MKS Toolkit for Enterprise Developers<br />

MKS Source Integrity Standard<br />

MKS Source Integrity Enterprise<br />

SEE ALSO<br />

Commands:<br />

make<br />

336 of 457


options<br />

applicable to MKS Integrity Suite <strong>com</strong>mands<br />

DESCRIPTION<br />

Some MKS Integrity Suite <strong>com</strong>mands (si, im, aa, integrity) share general options, while all take certain universal options. This<br />

reference page is provided as a guide to these <strong>com</strong>mon options.<br />

Source Integrity: Specifying Members, Sandboxes and Projects<br />

There are three types of Source Integrity <strong>com</strong>mands, and therefore the way you specify the member varies:<br />

1. Some <strong>com</strong>mands can only be executed on members in the context of a sandbox, because they manipulate the member's working file.<br />

These are noted as requiring a sandbox member..., such as si ci, si co, and si merge. These take a sandbox member, and you<br />

may not perform the operation against a project member. If you try to specify a project for these <strong>com</strong>mands, you will see an error<br />

message.<br />

2. Other <strong>com</strong>mands do not manipulate a member's working file, and therefore can be performed directly in the context of a project. If you<br />

specify a sandbox, it is simply used as a pointer to find the project itself. The fact that you specify the sandbox is only incidental.<br />

These are noted as requiring a project member..., and most of the <strong>com</strong>mands that say member... fall into this category; for example,<br />

si updaterevision, si updatearchive, and si addlabel.<br />

3. There are also some <strong>com</strong>mands that perform differently depending on whether they are given a sandbox or a project. Examples for<br />

this would be si diff and si edit.<br />

You can explicitly specify either -P or -S options for most <strong>com</strong>mands. For -<br />

P you must specify a project or subproject, the -P option does not accept the filename of a sandbox. For -<br />

S you must specify a sandbox or subsandbox, -S does not accept the filename of a project.<br />

Source Integrity also allows for implicit sandbox selection. This means that you can use <strong>com</strong>mands without explicitly specifying a -<br />

S sandbox option, and Source Integrity determines the sandbox to operate on based on the directory you're working in.<br />

For example, suppose you are working in the directory C:\test\sbx\sub1\sub2, and suppose you have a sandbox only in the \sbx<br />

directory. Using the -S option to explicitly specify the sandbox, you might enter the following to check in a file:<br />

si ci -S c:\test\sbx\project.pj header.c<br />

Using implicit sandbox location to check in a file, you might enter:<br />

si ci header.c<br />

If the sandbox is not specified explicitly through -<br />

S, Source Integrity tries to locate one by starting in the current working directory and seeing if there is a sandbox registered in that directory.<br />

If there isn't, it searches up the directory tree until it either finds one, or until it reaches the root of the drive. In the example provided, Source<br />

Integrity first determines there is no sandbox in \sub2, then \sub1, then finds the sandbox in \sbx and uses that sandbox.<br />

Now suppose you have sandboxes in each of \sbx, \sub1, and \sub2. This implicit sandbox selection allows you to work with multiple<br />

sandboxes in one <strong>com</strong>mand line entry, and without having to explicitly specify lengthy locations for each one. If you're working in the<br />

C:\test\sbx directory and decide to check in files to each sandbox, for example, you might enter:<br />

si ci header.c sub1\<strong>com</strong>p.c sub1\sub2\img.c<br />

This checks in the file header.c to the sandbox at C:\test\sbx , checks in the file <strong>com</strong>p.c to the sandbox at C:\test\sbx\sub1, and<br />

checks in the file img.c to the sandbox at C:\test\sbx\sub1\sub2.<br />

A requirement for implicit sandbox location to operate correctly is that there can be no more than one sandbox (or subsandbox) registered in<br />

a single directory. If you create two or more sandboxes in the same directory, the implicit sandbox location algorithm cannot unambiguously<br />

determine which sandbox to use in that directory, and it prompts you to clarify by specifying the name of the sandbox that you want to use in<br />

that case. In general, you shouldn't create multiple sandboxes in the same directory.<br />

Note:<br />

Certain si <strong>com</strong>mands do not operate on Build sandboxes, which are created as read-only for the purpose of building a programming<br />

artifact. Using inappropriate <strong>com</strong>mands with a Build sandbox causes error messages to appear.<br />

337 of 457


General Options<br />

Some MKS Integrity Suite <strong>com</strong>mands share the following general options.<br />

--devpath=path<br />

identifies the development path of a variant project. This is always paired with a -P project or -project=project.<br />

This is a label that was associated with a branch of the project by si createdevpath. It is mutually exclusive<br />

with the -S sandbox or --sandbox=sandbox option since a sandbox remembers any devpath.<br />

Note:<br />

Paths that include spaces must be enclosed by quotes. Additionally, the following characters may not be used in a<br />

development path: \n, \r, \t, :, [', '], #.<br />

--filter=filteroptions<br />

allows you to select members for all <strong>com</strong>mands that take a list of members, using filteroptions, which can be one or more of the<br />

following:<br />

archiveshared<br />

selects members that share another member's archive. This option is valid only with the database repository.<br />

attribute:name[=value]<br />

selects members based on an attribute name and, optionally, value.<br />

changed [:working|:sync|:newer|:size|:missing|:newmem|:all]<br />

selects changed members based on: changes to working files, those that are out of sync with the project, those where a newer<br />

revision exists in the project, or based on all changes.<br />

rule [:memberrevdiffers|:defined|:invalid]<br />

selects members based on a revision rule filter. :memberrevdiffers selects all members for which the rule does not match<br />

the member revision. :defined selects all members with a revision rule. :invalid selects all members for which the rule<br />

does not expand to any existing revision.<br />

file:expression<br />

selects members with a specific file name. This allows you to specify wild cards for file naming, such as the asterisk (*) to<br />

match any number of characters, and the question mark (?) to match a single character. For example, *.java or<br />

*RB.properties would be valid expressions.<br />

frozen<br />

selects frozen members.<br />

label[:name]<br />

selects any member whose member revision has the specified label.<br />

anylabel[:name]<br />

selects any member that contains a revision that has the specified label.<br />

locked[:name]<br />

selects all locked members or those locked by a particular user.<br />

state[:name]<br />

selects members based on state.<br />

format[:text|:binary]<br />

selects members based on storage format.<br />

workingbranch<br />

selects members where the working file is on a branch from a given development path that is not the trunk development path.<br />

Note: This filter applies only to sandboxes.<br />

deferred[:add|:addfromarchive|:checkin|:drop|:import|:move|:rename|:updaterevision|:all]<br />

selects deferred members based on: add, addfromarchive, checkin, drop, import, move, rename, updaterevision, or all<br />

operations.<br />

memberonbranch<br />

shows only members that are off the main development trunk.<br />

unresolvedmerges<br />

selects members affected by unresolved merges.<br />

pending[:add|:addfromarchive|:drop|:import|:movememberfrom|:movememberto|:renamefrom|:renameto|:update|:updaterevision|:all]<br />

selects pending members based on add, addfromarchive, drop, import, movememberfrom, movememberto, renamefrom,<br />

renameto, update, updaterevision, or all operations.<br />

workinprogress<br />

<strong>com</strong>bines the deferred (all), locked (all), and changed (all) filters to select members that are considered work in progress.<br />

sparsecontents<br />

shows only existing working files and deferred operations in a sparse sandbox.<br />

338 of 457


Using <strong>com</strong>mas between the filteroptions serves to build logical "OR" statements between them, allowing you to create powerful filters.<br />

You may also specify multiple -filter=filteroptions<br />

on the <strong>com</strong>mand line, which effectively creates logical "AND" statements between them.<br />

For example, you can resynchronize all modified JAVA files through:<br />

si resync --filter=changed --filter=file:*.java<br />

or you can resynchronize all files with label a or b through:<br />

si resync --filter=label:a,label:b<br />

You can also negate a filter using the ! character.<br />

For example, you can check out all JAVA files that are not labelled Beta by typing:<br />

si co --filter=file:*.java --filter=!label:Beta<br />

--hostname=server<br />

identifies the name of the host server where the Integrity Server is located.<br />

--password=password<br />

identifies the password to use for connecting to the Integrity Server.<br />

--port=number<br />

identifies the port on the host server where the Integrity Server is located.<br />

-P project<br />

--project=project<br />

specifies the location of a project. This option is mutually exclusive with -S sandbox|--sandbox =sandbox.<br />

Note:<br />

Locations that include spaces must be enclosed by quotes.<br />

--projectRevision=rev<br />

identifies a particular revision of a project. This option is always paired with -P project|project=project,<br />

and is mutually exclusive with -devpath.<br />

It is available on all project-based <strong>com</strong>mands allowing you to specify the revision of the build project you want to work with.<br />

-R<br />

--[no|confirm]recurse<br />

controls whether to recursively apply this <strong>com</strong>mand to any subprojects; used in all <strong>com</strong>mands which take a list of members.<br />

-r rev<br />

--revision=rev<br />

uses a specified revision for the member. rev can be a valid revision number or a label. You may also facilitate automation with<br />

special keyword identifiers, specified using a colon (:) prefix (except for the state keyword). Acceptable identifiers are:<br />

:head<br />

identifies the head revision.<br />

:member<br />

identifies the member revision.<br />

:locked<br />

identifies locked revisions.<br />

:master<br />

identifies the member revision in the master project. This option is only applicable to variant projects.<br />

:time:timestamp<br />

uses the most recent revision on any branch at the specified timestamp. For example, -rtime:December 22, 2004<br />

3:33:34 PM GMT-05:00. Source Integrity recognizes all current timezones whatever your locale (country), for example,<br />

CEST, CET, EDT, PST, or GMT+/-hours:minutes. The following examples illustrate North American and German timestamps<br />

recognized by Source Integrity:<br />

Example 1: US GMT -5 (where E is the day of the week, M is the month, d is the numerical day of the month, y is the year, h is<br />

the time in hours, m is the time in minutes, s is the time in seconds, a is Greenwhich Mean Time (GMT), z is the timezone<br />

difference from Greenwhich Mean Time.<br />

05:00<br />

EEEE, MMMM d, yyyy h:mm:ss a z | Wednesday, April 28, 2004 3:33:45 AM GMT-<br />

EEEE, MMMM d, yyyy h:mm:ss a z | Wednesday, April 28, 2004 3:33:45 AM GMT-<br />

339 of 457


05:00<br />

EEEE, MMMM d, yyyy h:mm:ss a | Wednesday, April 28, 2004 3:33:45 AM<br />

EEEE, MMMM d, yyyy h:mm a | Wednesday, April 28, 2004 3:33 AM<br />

MMMM d, yyyy h:mm:ss a z | April 28, 2004 3:33:45 AM GMT-05:00<br />

MMMM d, yyyy h:mm:ss a z | April 28, 2004 3:33:45 AM GMT-05:00<br />

MMMM d, yyyy h:mm:ss a | April 28, 2004 3:33:45 AM<br />

MMMM d, yyyy h:mm a | April 28, 2004 3:33 AM<br />

MMM d, yyyy h:mm:ss a z | Apr 28, 2004 3:33:45 AM GMT-05:00<br />

MMM d, yyyy h:mm:ss a z | Apr 28, 2004 3:33:45 AM GMT-05:00<br />

MMM d, yyyy h:mm:ss a | Apr 28, 2004 3:33:45 AM<br />

MMM d, yyyy h:mm a | Apr 28, 2004 3:33 AM<br />

M/d/yy h:mm:ss a z | 4/28/04 3:33:45 AM GMT-05:00<br />

M/d/yy h:mm:ss a z | 4/28/04 3:33:45 AM GMT-05:00<br />

M/d/yy h:mm:ss a | 4/28/04 3:33:45 AM<br />

M/d/yy h:mm a | 4/28/04 3:33 AM<br />

h:mm:ss a z | 3:33:45 AM GMT-05:00<br />

h:mm:ss a z | 3:33:45 AM GMT-05:00<br />

h:mm:ss a | 3:33:45 AM<br />

h:mm a | 3:33 AM<br />

EEEE, MMMM d, yyyy | Wednesday, April 28, 2004<br />

MMMM d, yyyy | April 28, 2004<br />

MMM d, yyyy | Apr 28, 2004<br />

M/d/yy | 4/28/04<br />

MMM d, yyyy - h:mm:ss a | Apr 28, 2004 - 3:33:45 AM<br />

MMM d, yyyy - h:mm a | Apr 28, 2004 - 3:33 AM<br />

Example 2: Germany CEST (where E is the day of the week, M is the month, d is the numerical day of the month, y is the year, H is<br />

the time in hours, m is the time in minutes, s is the time in seconds, Uhr 'z is Central European Summer Time (CEST).<br />

EEEE, d. MMMM yyyy H.mm' Uhr 'z | Montag, 26. Juli 2004 22.26 Uhr CEST<br />

EEEE, d. MMMM yyyy HH:mm:ss z | Montag, 26. Juli 2004 22:26:29 CEST<br />

EEEE, d. MMMM yyyy HH:mm:ss | Montag, 26. Juli 2004 22:26:29<br />

EEEE, d. MMMM yyyy HH:mm | Montag, 26. Juli 2004 22:26<br />

d. MMMM yyyy H.mm' Uhr 'z | 26. Juli 2004 22.26 Uhr CEST<br />

d. MMMM yyyy HH:mm:ss z | 26. Juli 2004 22:26:29 CEST<br />

d. MMMM yyyy HH:mm:ss | 26. Juli 2004 22:26:29<br />

d. MMMM yyyy HH:mm | 26. Juli 2004 22:26<br />

dd.MM.yyyy H.mm' Uhr 'z | 26.07.2004 22.26 Uhr CEST<br />

dd.MM.yyyy HH:mm:ss z | 26.07.2004 22:26:29 CEST<br />

dd.MM.yyyy HH:mm:ss | 26.07.2004 22:26:29<br />

dd.MM.yyyy HH:mm | 26.07.2004 22:26<br />

dd.MM.yy H.mm' Uhr 'z | 26.07.04 22.26 Uhr CEST<br />

dd.MM.yy HH:mm:ss z | 26.07.04 22:26:29 CEST<br />

dd.MM.yy HH:mm:ss | 26.07.04 22:26:29<br />

dd.MM.yy HH:mm | 26.07.04 22:26<br />

H.mm' Uhr 'z | 22.26 Uhr CEST<br />

HH:mm:ss z | 22:26:29 CEST<br />

HH:mm:ss | 22:26:29<br />

HH:mm | 22:26<br />

EEEE, d. MMMM yyyy | Montag, 26. Juli 2004<br />

d. MMMM yyyy | 26. Juli 2004<br />

dd.MM.yyyy | 26.07.2004<br />

dd.MM.yy | 26.07.04<br />

MMM d, yyyy - h:mm:ss a | Jul 26, 2004 - 10:26:29 PM<br />

MMM d, yyyy - h:mm a | Jul 26, 2004 - 10:26 PM<br />

:timeonbranch:timestamp@branchnumber<br />

uses the most recent revision on a specific branch at a specific timestamp. -rtimeonbranch:timestamp uses the most<br />

recent revision on the branch where the member revision currently resides. For example, -rtimeonbranch:December 22,<br />

2004 3:33:34 PM GMT-05:00. -rtimeonbranch:timestamp@branchnumber uses the most recent revision on the<br />

specified branch at the specified timestamp. For example, -rtimeonbranch:December 22, 2004 3:33:34 PM GMT-<br />

05:00@1.5.1.1. Source Integrity recognizes all current timezones whatever your locale (country), for example, CEST, CET,<br />

340 of 457


EDT, PST, or GMT+/-hours:minutes. For timestamp examples, see the :time:timestamp option.<br />

Note: Updating a revision by timestamp makes the most recent revision at the specified timestamp the member revision.<br />

:memberbranchtip<br />

identifies the tip revision on the member revision branch.<br />

:working<br />

identifies the working revision.<br />

:trunktip<br />

identifies the tip revision on the trunk.<br />

state:statename<br />

identifies the state, for example, Beta. This option is useful when you want to select revisions in a project that are in a specific<br />

state.<br />

For each project member, Source Integrity searches from the member revision on the development path to the root of the<br />

archive to find a revision that corresponds to the specified state. If the member revision is on a branch, Source Integrity starts<br />

from the tip revision and searches to the root of the archive; other branches in the archive are not searched. If no revision on<br />

the development path matches the specified state, the <strong>com</strong>mand fails, stating "Revision does not exist."<br />

devpath: devpathname<br />

identifies the development path. This keyword only operates on member <strong>com</strong>mands.<br />

build: revisionnumber<br />

identifies the build revision number, which must be a valid project revision number or project label in which a given member is<br />

contained. Must specify a registered project. This keyword only operates on member <strong>com</strong>mands.<br />

:rule<br />

identifies a rule defined with the si setmemberrule <strong>com</strong>mand.<br />

link:p=project[::d=devpath][::m=member][::recurse] [::b=buildrevnumber]<br />

allows you to set the member revision to whatever is the member revision for the corresponding member in a specific external<br />

project configuration (normal, variant, build). Links the project that the member belongs to (the target project) with the master<br />

project where:<br />

project is the master project<br />

devpath is the development path for the master project<br />

member is a member in the target project. If not provided, the project is searched for a member with the same backing archive.<br />

If recurse is specified, the search is recursive throughout the subprojects. There must be exactly one backing archive for each<br />

member.<br />

A possible application is to update all members to the same revision, even if they don't have the same backing archive.<br />

-S sandbox<br />

--sandbox=sandbox<br />

specifies the location of a sandbox. In some cases, the <strong>com</strong>mands that take this option do something with the sandbox contents<br />

themselves. In other cases, specifying the sandbox location is simply a way to locate, or "point to", the corresponding project file. This<br />

option is mutually exclusive with -P project|--project =project.<br />

Note:<br />

Locations that include spaces must be enclosed by quotes.<br />

--user=name<br />

identifies the user to use for connecting to the Integrity Server.<br />

Universal Options<br />

The following universal options apply to all MKS Integrity Suite <strong>com</strong>mands.<br />

--[no]batch<br />

controls batch mode. Batch mode forces the application to process <strong>com</strong>mands without prompting for responses.<br />

--cwd=directory<br />

acts as if the <strong>com</strong>mand is executed in the specified directory. In particular, any files and members in the selection are treated as being<br />

relative to that directory.<br />

Suppose you are working in the c:\sandbox directory and you want to issue the check out <strong>com</strong>mand so that the implicit sandbox<br />

selection will work in a subdirectory, rather than having to specify the <strong>com</strong>plete path for subdirectory sandbox names. You could use<br />

the --cwd option to do this, for example:<br />

si co --cwd=./demoapp/controls demoappctrl.c<br />

341 of 457


makes Source Integrity work in the c:\sandbox\demoapp\controls directory and follows implicit sandbox selection rules from<br />

there to find the appropriate sandbox, then checks out the demoappctrl.c file.<br />

-F file<br />

--selectionFile=file<br />

provides an alternative way to specify the selection. The specified file is a text file containing a list of file names, members, projects, or<br />

sandboxes, one per line. The <strong>com</strong>mand operates on all the listed files.<br />

Note:<br />

Be careful to avoid duplications. In some cases if a file, member, project or sandbox is listed twice in the file, the <strong>com</strong>mand may<br />

report an error.<br />

--forceConfirm=[yes|no]<br />

-N<br />

--no<br />

-Y<br />

--yes<br />

controls the responses of either "yes" or "no" to all prompts. Specifying "yes" or "no" can be an easy way to ac<strong>com</strong>plish the same<br />

thing as specifying other <strong>com</strong>mand options with [no|confirm] prefixes, for example the<br />

--[no|confirm]overwriteChanged option in the si co, si resync, and si revert <strong>com</strong>mands. Specifying<br />

--yes or --no ac<strong>com</strong>plishes the same thing for --overwriteChanged and -nooverwriteChanged,<br />

but further responds "yes" or "no" to all other questions asked.<br />

Note:<br />

Be careful to use specific options if you want variations in your responses to prompts. The<br />

--yes and -no<br />

options in particular are wide-ranging types of responses and should be used only in rare circumstances.<br />

-g<br />

--gui<br />

allows user interaction to happen through the GUI (graphical user interface).<br />

--width<br />

controls the width in pixels of the graphical user interface.<br />

--height<br />

controls the height in pixels of the graphical user interface.<br />

-x<br />

specifies the x location in pixels of the graphical user interface window.<br />

-y<br />

specifies the y location in pixels of the graphical user interface window.<br />

--quiet<br />

controls the status display to silence most information messages.<br />

--settingsUI=[gui|default]<br />

controls the GUI for <strong>com</strong>mand options.<br />

--status=[none|gui|default]<br />

controls the status display.<br />

-?<br />

--usage<br />

shows usage for the <strong>com</strong>mand.<br />

DIAGNOSTICS<br />

See the diagnostics reference page for possible exit status values.<br />

SEE ALSO<br />

Miscellaneous:<br />

ACL, diagnostics, preferences<br />

342 of 457


preferences<br />

preferences applicable to MKS Integrity Suite setprefs and viewprefs <strong>com</strong>mands<br />

DESCRIPTION<br />

The setprefs and viewprefs <strong>com</strong>mands refer to the same group of <strong>com</strong>mands and preference<br />

keys for the MKS Integrity Suite <strong>com</strong>ponent you are configuring (si, im, aa, integrity). This<br />

reference page is provided as a guide to the preferences you can configure. To see each<br />

<strong>com</strong>ponent's specific keys, simply append the <strong>com</strong>mand to the viewprefs <strong>com</strong>mand. For<br />

example,<br />

si viewprefs --<strong>com</strong>mand=co<br />

displays the following output:<br />

co: mergeType<br />

co: onMergeConflict<br />

co: allowImplicitIdentification<br />

co: branchIfVariant<br />

co: changePackageID<br />

co: cwd<br />

co: filter<br />

co: forceBranch<br />

co: forceConfirm<br />

co: includeFormers<br />

co: issueID<br />

co: keywordExpand<br />

co: lock<br />

co: merge<br />

co: onLock<br />

co: overwriteIfChanged<br />

co: overwriteIfUnchanged<br />

co: recurse<br />

co: restoreTimestamp<br />

co: revision<br />

co: sandboxName<br />

co: selectionFile<br />

co: updateMemberRev<br />

co: <strong>com</strong>mand.batchMode<br />

co: sandbox.allowProjectSelection<br />

co: sandbox.allowSandboxSelection<br />

co: server.credential<br />

co: server.hostname<br />

343 of 457


co: server.port<br />

co: server.user<br />

co: si.lastUsedChangePackageID<br />

co: socksProxyHost<br />

co: socksProxyPort<br />

co: status.popupDelay<br />

co: swing.lookAndFeel<br />

Preference Keys<br />

The preference keys you can specify for the above <strong>com</strong>mands are often similar, and some are<br />

global preferences such that when you change it for one <strong>com</strong>mand, it changes for all. The following<br />

are some <strong>com</strong>mon preference keys:<br />

allowImplicitIdentification<br />

controls whether to allow the implicit identification and selection of sandboxes. This means<br />

that you can use <strong>com</strong>mands without explicitly specifying a -S sandbox option, and Source<br />

Integrity determines the sandbox to operate on based on the directory you're working in.<br />

Valid values are true or false.<br />

cwd<br />

identifies a working directory for the <strong>com</strong>mand. In particular, any relative files and members<br />

in the selection are treated as being in that directory.<br />

<strong>com</strong>mand.batchMode<br />

a global key that controls batch mode. Batch mode forces the application to process<br />

<strong>com</strong>mands without prompting for responses. Valid values are false, true.<br />

developmentPath<br />

specifies a particular development path to use with the <strong>com</strong>mand all the time.<br />

filter<br />

specifies a filter to use with the <strong>com</strong>mand all the time.<br />

forceConfirm<br />

specifies whether to force the application to request confirmation for the particular<br />

<strong>com</strong>mand.<br />

includeFormers<br />

specifies whether to include members that have been dropped from the project.<br />

projectName<br />

specifies a particular Source Integrity project to work with all the time.<br />

projectRevision<br />

specifies a particular Source Integrity project revision to work with all the time.<br />

recurse<br />

controls whether to recurse into subprojects.<br />

sandbox.allowProjectSelection<br />

a global key that controls whether to allow Source Integrity project selection. Valid values<br />

are false, true.<br />

sandbox.allowSandboxSelection<br />

a global key that controls whether to allow sandbox selection. Valid values are false, true.<br />

344 of 457


sandboxName<br />

specifies a particular sandbox to be used all the time.<br />

selectionFile<br />

specifies a file that lists member files to work with.<br />

server.credential<br />

a global key that identifies the credential, or password, for logging into the Integrity Server.<br />

server.hostname<br />

a global key that identifies the hostname for the Integrity Server.<br />

server.port<br />

a global key that identifies the port for the Integrity Server.<br />

server.user<br />

a global key that identifies the user name for logging into the Integrity Server.<br />

socksProxyHost<br />

a global key that identifies the SOCKS proxy host.<br />

socksProxyPort<br />

a global key that identifies the SOCKS proxy port.<br />

status.popupDelay<br />

a global key that controls the duration, in milliseconds (ms), that the <strong>com</strong>mands status<br />

appears in the graphical user interface or the <strong>com</strong>mand line interface.<br />

swing.lookAndFeel<br />

a global key that controls the "look and feel" appearance of the graphical user interface.<br />

Valid values are System, Windows, Motif, Metal.<br />

SEE ALSO<br />

Miscellaneous:<br />

diagnostics, options<br />

345 of 457


csedit<br />

MKS Source Integrity editing facilities for descriptions and log messages<br />

DESCRIPTION<br />

Whenever MKS Source Integrity asks you to enter a description or log message, you may make<br />

use of editing <strong>com</strong>mands to help you enter the message. Editing <strong>com</strong>mands must be on a<br />

separate line and the first character of the line must be a tilde ~ character. Here are the recognized<br />

<strong>com</strong>mands:<br />

~?<br />

Displays a summary of editing <strong>com</strong>mands.<br />

~d<br />

Restore message from dead.let file.<br />

~e<br />

Writes the current message to a temporary file and invokes a text editor to edit that file. The<br />

name of the editor is taken from the EDITOR environment variable. If there is no such<br />

variable, ed is used. When you are finished editing the message, write it back out to the<br />

temporary file and quit the editor. You return to MKS Source Integrity.<br />

~p<br />

Displays the current text of the message.<br />

~q<br />

Copies the current message to a file named dead.let and quits.<br />

~r filename<br />

Reads the contents of the given file and appends them to the current message.<br />

~v<br />

Similar to ~e, except that it invokes the visual editor identified by the VISUAL environment<br />

variable. The default is vi. (You can only use vi if you have a UNIX system or the MKS<br />

Toolkit.)<br />

~w filename<br />

Writes the current message to the specified file.<br />

~! <strong>com</strong>mand<br />

Executes the given system <strong>com</strong>mand.<br />

If a line begins with a tilde, MKS Source Integrity assumes it is an editing <strong>com</strong>mand. If you want to<br />

enter a text line that begins with a tilde, type two, as in<br />

~~ This line begins with a single tilde.<br />

EXAMPLES<br />

346 of 457


These are the changes I have made:<br />

~r changes<br />

.<br />

reads in text from a file named changes and adds that text to the message being <strong>com</strong>posed. The<br />

period (.) to mark the end of the message is still required.<br />

ENVIRONMENT VARIABLES<br />

The MKS Source Integrity editing facilities use the following environment variables:<br />

EDITOR<br />

contains the name of the editor invoked by the ~e <strong>com</strong>mand.<br />

VISUAL<br />

contains the name of the editor invoked by the ~v <strong>com</strong>mand.<br />

PORTABILITY<br />

These facilities are extensions to traditional implementations of RCS and are non-portable.<br />

SEE ALSO<br />

Commands:<br />

si ci<br />

347 of 457


NAME<br />

ar — create and maintain library archives<br />

SYNOPSIS<br />

ar<br />

ar -d [-Ilv] archive member ...<br />

ar -m [-abIilsv] [posname] archive member ...<br />

ar -p [-Ilsv] archive [member ...]<br />

ar -q [-clsv] [-F format] archive member ...<br />

ar -r [-abcIilsuv] [-F format] [posname] archive member ...<br />

ar -t [-Ilsv] archive [member ...]<br />

ar -u [-abcIilsv] [-F format] [posname] archive member ...<br />

ar -x [-CIlsTv] archive [member ...]<br />

DESCRIPTION<br />

ar creates and maintains file archives. You can use ar to<br />

● create a new archive<br />

● add members to an existing archive<br />

● delete members from an archive<br />

● extract members from an archive<br />

● print a table of contents for an archive<br />

● rearrange the members of an existing archive<br />

● display the contents of an archive member<br />

These libraries may be in Intel Object Module Format (OMF) or Common Object File Format<br />

(COFF). On Windows systems, ar defaults to OMF format when creating a new library.<br />

This implementation takes UNIX-<strong>com</strong>patible options and arguments, but works with libraries in<br />

either the OMF format or the COFF format. ar tries to deduce the format of an existing archive; the<br />

default for a new library is OMF format. You may specify the format of a new library with the -F<br />

option. Only valid OMF or COFF .obj files may be members of a library.<br />

ar identifies each member in the archive by the final <strong>com</strong>ponent (basename) of its file name.<br />

When adding a file to an archive, you can use the full path name, but when storing the member or<br />

348 of 457


<strong>com</strong>paring a member name, ar uses only the final <strong>com</strong>ponent of the name.<br />

Options<br />

ar accepts the following options that represent its main functions:<br />

-d<br />

-m<br />

-p<br />

-q<br />

-r<br />

-t<br />

-x<br />

deletes each named member from the archive and regenerates the symbol table.<br />

moves the named archive member in the archive. You indicate the new position for the<br />

member with -a, -b, or -i and posname; if you do not specify a location, ar moves the<br />

member to the end of the archive.<br />

displays each specified member on the standard output. If you do not specify any members,<br />

ar displays all members.<br />

quickly appends the specified file to the archive. ar does not check to see if file is already a<br />

member of the archive.<br />

replaces or adds file to archive. If archive does not exist, ar creates it and prints a message.<br />

When ar replaces an existing member, it does not change the archive order. If file is not<br />

replacing a member, ar adds it to the end of the archive (unless you specify -a, -b, or -i).<br />

This option regenerates the symbol table.<br />

displays a table of contents that lists member or every member if you do not specify a<br />

particular member. ar displays a diagnostic for each member that it cannot find. Normally,<br />

ar displays only the member's name, but with the verbose (-v) option, ar displays more<br />

information about archive members using a format similar to ls -l.<br />

extracts each specified member from the archive and copies it to a file. If you specify<br />

member as a full path name, ar copies it to that path name. If you do not specify a member,<br />

ar extracts all members. The archive remains unchanged.<br />

The following options modify the behavior of the main functions:<br />

-a<br />

places file in archive after the member specified by posname. If you do not specify a<br />

349 of 457


-b<br />

-C<br />

-c<br />

member, ar adds file to the end of the archive.<br />

places file in archive before the member specified by posname. If you do not specify<br />

posname, ar adds file to the beginning of the archive.<br />

prevents ar from overwriting existing files with extracted files. You can only specify this<br />

option when extracting files with the -x option.<br />

suppresses the message ar normally prints when it creates a new archive file. You can only<br />

use this in conjunction with the -r and -q options.<br />

-F format<br />

specifies the archive format to be used by a new archive. Valid formats are omf and coff.<br />

You can only use this option when creating a new archive with the -r option or the -q<br />

option.<br />

-I<br />

-i<br />

-l<br />

-s<br />

-T<br />

When no format for a new library is specified, ar creates the new library using the format<br />

(OMF or COFF) of the first .obj file specified on the <strong>com</strong>mand line. If no .obj files exist on<br />

the <strong>com</strong>mand line, the library is created using the OMF format.<br />

ignores the case of letters when searching the archive for specified member names.<br />

Normally, the case is significant.<br />

inserts the file into the archive before the member specified by posname. If you do not<br />

specify posname, ar inserts file at the beginning of the archive. This option is the same as<br />

-b.<br />

puts any temporary files that ar generates in the current directory rather than the default<br />

temporary file directory.<br />

regenerates the symbol table regardless of whether the <strong>com</strong>mand modifies the archive.<br />

when used with -x, allows extraction of members with names longer than the file system<br />

supports; normally, this is an error, and ar does not extract the file. Most file systems<br />

truncate the file name to the appropriate length.<br />

350 of 457


-u<br />

-v<br />

replaces the member only if the modification time of the file member is more recent than the<br />

time of the archive member. -u implies -r, so it is not necessary to specify -r also.<br />

gives verbose output. With -d, -q, -r, and -x, this option displays the <strong>com</strong>mand letter and<br />

the member name affected before performing each operation. With -t, it prints more<br />

information about archive members using a format similar to ls -l. With -p, it displays the<br />

member name before the contents.<br />

DIAGNOSTICS<br />

Possible exit status values are:<br />

0<br />

1<br />

2<br />

Successful <strong>com</strong>pletion.<br />

Failure due to any of the following:<br />

— inability to create the extracted file<br />

— an error writing to the extracted file<br />

— the requested module not found on appending<br />

— an error opening the module on appending<br />

— an invalid module on appending<br />

— inability to access the module on appending<br />

— a module not found on table/extraction<br />

Invalid <strong>com</strong>mand line arguments or options<br />

PORTABILITY<br />

POSIX.2. x/OPEN Portability Guide 4.0. Windows Me. Windows NT 4.0. Windows 2000. Windows<br />

XP. Windows Server 2003. All UNIX systems.<br />

On Windows systems, the archive format is either OMF, or the Common Object File Format<br />

(COFF). The options included in this implementation are the best possible approximation of those<br />

defined by the POSIX standard for the ar <strong>com</strong>mand, to make makefiles reasonably portable. For<br />

historical <strong>com</strong>patibility, you can omit the - preceding the options if the options appear only as the<br />

first argument after the <strong>com</strong>mand name.<br />

351 of 457


The following options are XPG extensions to the POSIX standard: -a, -b, -C, -i, -l, -m, -q, -s,<br />

and -T.<br />

The -F and -I options are extensions to the POSIX and XPG standards.<br />

AVAILABILITY<br />

MKS Toolkit for System Administrators<br />

MKS Toolkit for Developers<br />

MKS Toolkit for Interoperability<br />

MKS Toolkit for Professional Developers<br />

MKS Toolkit for Enterprise Developers<br />

MKS Toolkit for Enterprise Developers 64-Bit Edition<br />

MKS AlertCentre<br />

MKS Source Integrity Standard<br />

MKS Source Integrity Enterprise<br />

SEE ALSO<br />

Commands:<br />

cc, make<br />

352 of 457


•<br />

NAME<br />

cc, cxx<br />

cc, cxx — interfaces to Microsoft C and C++ <strong>com</strong>pilers<br />

SYNOPSIS<br />

cc [-c] [-C] [-Dname[=value]] [-e epsym] [-E] [-f[float]] [-g] [-Idirectory] [-llibrary] [-Ldirectory]<br />

[-m] [-mmodel] [-M] [-o output] [-O] [-P] [-s] [-S] [-static] [-U symname] [-VS num] [-Woption]<br />

[-x] [-Xc] files...<br />

cxx [-c] [-C] [-Dname[=value]] [-e epsym] [-E] [-g] [-Idirectory] [-llibrary] [-Ldirectory] [-m] [-M]<br />

[-o output] [-O] [-P] [-s] [-S] [-static] [-U symname] [-VS num] [-Woption] [-x] [-Xc] files...<br />

DESCRIPTION<br />

The cc and cxx <strong>com</strong>mands serve as interfaces to the Microsoft C <strong>com</strong>piler (cl). Versions 5.0 and<br />

higher of this <strong>com</strong>piler are supported. cc is for <strong>com</strong>piling C files, while cxx is for <strong>com</strong>piling C++<br />

files.<br />

Note:<br />

The behavior of cc depends upon whether or not you are working in the standard MKS<br />

Toolkit development environment or the development environment designed for use with the<br />

MKS Toolkit UNIX APIs.<br />

cxx is only available in the MKS Toolkit UNIX APIs development environment.<br />

These <strong>com</strong>mands are just wrappers that invoke the cl utility. If you are using MKS Toolkit<br />

for Professional Developers or MKS Toolkit for Developers, the presence of cl in PATH is<br />

checked for during installation. For other Toolkit products, you must ensure yourself that cl<br />

is in the PATH.<br />

Files with a .c suffix are taken to be C source files, files with a .cpp or .cxx extension are taken<br />

to be C++ source files, and files with a .asm extension are taken to be assembly language source<br />

files. The presence of source files with a .cpp or .cxx automatically causes the source files to be<br />

<strong>com</strong>piled as if the cxx <strong>com</strong>mand had been invoked instead.<br />

The cc and cxx <strong>com</strong>mands implicitly set the following Microsoft <strong>com</strong>piler switches (for Intel<br />

platforms only):<br />

353 of 457


Note:<br />

/D_X86_<br />

/D_NUTC_=0x430 (Value changes with each release)<br />

/Zl<br />

/Qifdiv-<br />

The /D_NUTC_=0x430 option is only set when working in the MKS Toolkit UNIX APIs<br />

development environment.<br />

The /Qifdiv- option is only set when working in the MKS Toolkit UNIX APIs development<br />

environment and is only available for Microsoft Visual Studio 2.1 or later.<br />

You can use the -W/option flag to pass options directly to cl. In doing this, be careful not to<br />

conflict with the options that this <strong>com</strong>mand sets. For example, the default <strong>com</strong>piler warning level is<br />

set to /W3. The option -W/Wn can be used to override this default. cl options specified with -W<br />

override cl options generated by other cc or cxx options.<br />

Options<br />

-c<br />

-C<br />

<strong>com</strong>piles only — does not link.<br />

This option be<strong>com</strong>es the /c option to cl.<br />

passes <strong>com</strong>ments through to preprocessor output.<br />

This option be<strong>com</strong>es the /C option to cl.<br />

-Dname[=value]<br />

defines a preprocessor symbol with an optional value.<br />

-E<br />

This option be<strong>com</strong>es the /Dname=value option to cl.<br />

sends all preprocessor output to standard output.<br />

This option be<strong>com</strong>es the /E option to cl.<br />

-e epsym<br />

sets entry point (passed through to linker).<br />

354 of 457


-ffloat<br />

specifies the floating point options that the <strong>com</strong>piler and linker use:<br />

Note:<br />

-g<br />

-f- no floating point required<br />

-f emulated floating point<br />

-fp hardware floating point (using 80x87 coprocessor)<br />

This option is obsolete and produces a warning. It is provided for backward <strong>com</strong>patibility and<br />

is not available with cxx or when working in the MKS Toolkit UNIX APIs development<br />

environment.<br />

produces debugging information in the <strong>com</strong>piled object modules.<br />

This option be<strong>com</strong>es the /Z7 option to cl.<br />

-I directory<br />

adds directory to the beginning of the list of directories to be searched for include files (the<br />

value of the %Include% environment variable). Any directories supplied on the <strong>com</strong>mand<br />

line are searched first, in the order in which they appear on the <strong>com</strong>mand line.<br />

This option be<strong>com</strong>es the /Idirectory option to cl.<br />

-l library<br />

if linking, adds the specified library to the list of libraries to be searched. In searching for<br />

libraries (for example, with -lfoo), each library directory is first searched for the UNIX-style<br />

archive name (that is, libfoo.a) and then for the Windows-style library name (that is,<br />

foo.lib).<br />

This option is passed through to the linker.<br />

-L directory<br />

if linking, adds the directory to the beginning of the list of directories that the linker searches<br />

for libraries (the value of the %Lib% environment variable). Any directories supplied on the<br />

<strong>com</strong>mand line are searched first, in the order in which they appear on the <strong>com</strong>mand line.<br />

-m<br />

This option is passed through to the linker.<br />

produces a link map.<br />

355 of 457


This option is passed through to the linker.<br />

-mmodel<br />

specifies the memory model that the <strong>com</strong>piler and linker use. The models may include:<br />

Note:<br />

-M<br />

-ms small model<br />

-mm medium model<br />

-ml large model<br />

-mf flat model (32-bit)<br />

-mc <strong>com</strong>pact model<br />

-mh huge model<br />

This option is obsolete and produces a warning. It is provided for backward <strong>com</strong>patibility and<br />

is not available with cxx or when working in the MKS Toolkit UNIX APIs development<br />

environment.<br />

<strong>com</strong>plains about multiply defined symbols.<br />

Note:<br />

This behavior is only available when working in the MKS Toolkit UNIX APIs<br />

development environment. Otherwise, -M is identical to the -m option.<br />

-o output<br />

specifies the name of the output file generated by the linker. This option is passed to the<br />

linker. If -c and -o are both specified, the -o option is ignored; however, you can specify a<br />

name for the oject file generated with -W/Foobj_file.<br />

-O<br />

Note:<br />

When working in the MKS Toolkit UNIX APIs development evironment, the -o option<br />

is not ignored. Instead, it behaves like -W/Foobj_file and specifies the name of the<br />

object file generated.<br />

File names specified with the -W/Fo option should have a .o or .obj extension. If the file<br />

name does not have such an extension, its current extension is replaced with .obj before<br />

invoking the linker. However, when -c is also specified, there are no restrictions on the<br />

extension of the specified file.<br />

instructs the <strong>com</strong>piler to generate optimized code.<br />

This option be<strong>com</strong>es the /Ox option to cl.<br />

356 of 457


-P<br />

-s<br />

-S<br />

stores preprocessor output to a file, where the file name is obtained by replacing the .c (or<br />

.cpp) extension with .i.<br />

when linking, strips debugging information from the output file.<br />

This option is passed through to the linker.<br />

produces an assembly code listing. The suffix for the listing file is .asm. This listing includes<br />

source and assembly code.<br />

This option be<strong>com</strong>es the /FAs option to cl.<br />

-static<br />

requests linking against the static C++ runtime libraries. This is not re<strong>com</strong>mended.<br />

When this option is not specified, the /MD to cl is the defaul for C++ and multithreaded<br />

DLLs are produced.<br />

-u symname<br />

when linking, adds an undefined reference to symname.<br />

This option is passed through to the linker.<br />

-U symname<br />

undefines the specified preprocessor symbol.<br />

This option be<strong>com</strong>es the /Usymname option to cl.<br />

-VS num<br />

passes through to the /VERSION linker option.<br />

-Wc++<br />

forces C++ linking.<br />

This option is passed through to the linker.<br />

Note:<br />

The C++ library paths are only available when working in the development<br />

357 of 457


-Wv<br />

environment for the MKS Toolkit UNIX APIs. If you are not working in this<br />

environment, you must specify these library paths with the -L option.<br />

selects verbose mode.<br />

This option is passed through to the linker.<br />

-W/option<br />

specifies an option that is to be passed either to the C <strong>com</strong>piler or to linker with the leading<br />

-W removed. The options — subsystem, def, base, entry, implib, machine, map, out,<br />

stack, and dll — are passed to the linker; all others are passed to the <strong>com</strong>piler.<br />

-x<br />

-Xc<br />

-Xa<br />

-Xs<br />

-Xt<br />

when linking, strips debugging information related to local symbols from the output file.<br />

This option is passed through to the linker.<br />

<strong>com</strong>piles with strict ANSI C conformance. Only symbols specified by the ANSI C<br />

specification are visible during <strong>com</strong>pilation.<br />

This option be<strong>com</strong>es the /D__STRICT_ANSI=1 and /D__STDC__=1 options to cl.<br />

<strong>com</strong>piles with non-strict ANSI C conformance. Only symbols specified by the ANSI C<br />

specification are visible during <strong>com</strong>pilation.<br />

This option be<strong>com</strong>es the /D__STDC__=0 to cl.<br />

While this reference page describes cc as an interface to the Microsoft C <strong>com</strong>piler, that is not the<br />

<strong>com</strong>plete truth. In truth, cc is a configurable interface to any C <strong>com</strong>piler and is designed for use<br />

with make. Theoretically, you can simply redefine cc on each system to work with that system's C<br />

<strong>com</strong>piler and by simply using cc in your makefiles, you can use those same makefile across<br />

different system.<br />

cc uses a <strong>com</strong>pilation configuration file to convert arguments on a standard <strong>com</strong>mand line into<br />

the arguments for the <strong>com</strong>mand or sequence of <strong>com</strong>mands needed to call your <strong>com</strong>piler or linker.<br />

If you want to change your <strong>com</strong>piler or linker, change the appropriate configuration file; do not<br />

change your makefile.<br />

358 of 457


The default configuration file for cc is<br />

ROOTDIR/etc/<strong>com</strong>piler.ccg<br />

You may chose a different configuration file by setting the environment variable CCG to point to the<br />

desired file. Interfaces to other <strong>com</strong>pilers may be available from MKS.<br />

If you want cc to temporarily use a different <strong>com</strong>piler, you can set the environment variable CCG to<br />

the name of the configuration file for the desired <strong>com</strong>piler.<br />

If you rename the cc executable, it attempts to find its default configuration in a .ccg file with the<br />

same base name as the renamed executable. For example, if you rename cc.exe to c89.exe,<br />

c89 looks for a default configuration file named c89.ccg in ROOTDIR/etc.<br />

If you use a <strong>com</strong>piler that does not have a configuration file, you can customize a given<br />

configuration file to use your <strong>com</strong>piler. Read the cc miscellaneous information reference page<br />

carefully, and modify an existing configuration to use your <strong>com</strong>piler.<br />

ENVIRONMENT VARIABLES<br />

CCG<br />

identifies the configuration file for the desired <strong>com</strong>piler. If CCG contains -, cc reads the<br />

default configuration from the standard input. If CCG contains a file name, cc uses that file<br />

as its default configuration file. If CCG contains a directory name, cc looks for the default<br />

configuration in the cc.ccg file in that directory. If the executable has been renamed, it<br />

looks for the default configuration in a .ccg file with the same name as the executable. For<br />

example, if cc.exe is renamed to c89.exe, it looks for the default configuration in<br />

$CCG/c89.ccg.<br />

DIAGNOSTICS<br />

Possible exit status values are:<br />

0<br />

>0<br />

Successful <strong>com</strong>pletion.<br />

An error occurred.<br />

AVAILABILITY<br />

359 of 457


The cc <strong>com</strong>mand is available with the following products:<br />

MKS Toolkit for Developers<br />

MKS Toolkit for Interoperability<br />

MKS Toolkit for Professional Developers<br />

MKS Toolkit for Enterprise Developers<br />

MKS Toolkit for Enterprise Developers 64-Bit Edition<br />

MKS AlertCentre<br />

MKS Source Integrity Standard<br />

MKS Source Integrity Enterprise<br />

The cxx <strong>com</strong>mand is available with the following products:<br />

MKS Toolkit for Professional Developers<br />

MKS Toolkit for Enterprise Developers<br />

MKS Toolkit for Enterprise Developers 64-Bit Edition<br />

MKS AlertCentre<br />

SEE ALSO<br />

Commands:<br />

ld, make<br />

Miscellaneous:<br />

cc<br />

360 of 457


NAME<br />

cmp — <strong>com</strong>pare two files<br />

SYNOPSIS<br />

cmp [-blsx] file1 file2 [seek1[seek2]]<br />

DESCRIPTION<br />

cmp<br />

cmp <strong>com</strong>pares two files. If either file name is -, cmp reads the standard input for that file. By<br />

default, cmp begins the <strong>com</strong>parison with the first byte of each file. If you specify seek1 and/or<br />

seek2, cmp uses it as a byte offset into file1 or file2 (respectively), and <strong>com</strong>parison begins at that<br />

offset instead of at the beginning of the files. The <strong>com</strong>parison continues (one byte at a time) until a<br />

difference is found, at which point the <strong>com</strong>parison ends and cmp displays the byte and line number<br />

where the difference occurred. cmp numbers bytes and lines beginning with 1.<br />

Options<br />

-b<br />

-l<br />

-s<br />

-x<br />

EXAMPLE<br />

<strong>com</strong>pares single blocks at a time. Normally, cmp reads large buffers of data into memory for<br />

<strong>com</strong>parison.<br />

causes the <strong>com</strong>parison and display to continue to the end. cmp displays the byte number (in<br />

decimal) and the differing bytes (in octal) for each difference found. cmp attempts no<br />

resynchronization.<br />

suppresses output and returns a non-zero status if the files differ.<br />

displays the differing bytes shown by the -l option in hex.<br />

To determine if prog.exe and prog.<strong>com</strong> are instances of the same program (generated, for<br />

example, by exe2bin)<br />

361 of 457


cmp prog.exe prog.<strong>com</strong> 512<br />

DIAGNOSTICS<br />

Possible exit status values are:<br />

0<br />

1<br />

2<br />

3<br />

Messages<br />

The files were identical.<br />

The files were not identical.<br />

Failure due to invalid <strong>com</strong>mand line argument or option.<br />

Failure because of an error opening or reading an input file.<br />

EOF on filename<br />

cmp reached end-of-file on the specified file before reaching end-of-file on the other file.<br />

PORTABILITY<br />

POSIX.2. x/OPEN Portability Guide 4.0. All UNIX systems. Windows Me. Windows NT 4.0.<br />

Windows 2000. Windows XP. Windows Server 2003. The -b and -x options and the seek pointers<br />

are extensions to the POSIX standard.<br />

AVAILABILITY<br />

MKS Toolkit for Power Users<br />

MKS Toolkit for System Administrators<br />

MKS Toolkit for Developers<br />

MKS Toolkit for Interoperability<br />

MKS Toolkit for Professional Developers<br />

MKS Toolkit for Enterprise Developers<br />

MKS Toolkit for Enterprise Developers 64-Bit Edition<br />

MKS AlertCentre<br />

MKS Source Integrity Standard<br />

MKS Source Integrity Enterprise<br />

362 of 457


SEE ALSO<br />

Commands:<br />

<strong>com</strong>m, diff, uniq<br />

363 of 457


NAME<br />

cp — copy files<br />

SYNOPSIS<br />

cp [-acfimPpSv] file1 file2<br />

cp [-acfimPpSv] file ... directory<br />

cp -R [-acfimPpSv] source... directory<br />

cp -r [-acfimPpSv] source... directory<br />

DESCRIPTION<br />

cp<br />

cp copies files to a target named by the last argument on its <strong>com</strong>mand line. If the target is an<br />

existing file, cp overwrites it; if it does not exist, cp creates it. If the target file already exists and<br />

does not have write permission, cp denies access and continues with the next copy.<br />

If you specify more than two path names, the last path name (that is, the target) must be a<br />

directory. If the target is a directory, cp copies the sources into that directory with names given by<br />

the final <strong>com</strong>ponent of the source path name.<br />

Normally, the destination file has its file mode (see chmod) set to 777 (that is, readable, writable,<br />

and executable by everyone) and sets the file modification time to the present. The -m and -p<br />

options can override this behavior.<br />

If a file being copied is a sparse file and the file system to which it is being copied does not support<br />

sparse files, cp warns that the resulting file will be larger. If the -i option was also specified, cp<br />

asks you if want to expand the file or skip it. The -S option overrides this behavior and expands all<br />

sparse files automatically when copying.<br />

Options<br />

-a<br />

-c<br />

copies the DACLs associated with the specified file along with the file itself.<br />

This option is only available on NTFS file systems.<br />

364 of 457


-f<br />

-i<br />

-m<br />

-P<br />

-p<br />

-R<br />

-r<br />

-S<br />

-v<br />

prompts you to change the diskette if there is insufficient room to <strong>com</strong>plete a copy operation.<br />

The parent directories must already exist on the new target diskette. This option has no<br />

effect on systems without floppy drives.<br />

attempts to replace files that do not have write permission.<br />

asks you if you want to overwrite an existing file, whether or not the file is read-only.<br />

sets the modification time, access time, and file mode (see chmod) of each destination file to<br />

those of the corresponding source file. The <strong>com</strong>pression and archive bits of the file mode<br />

are handled separately. The <strong>com</strong>pression bit for each destination file is always unset, while<br />

the archive bit is always set.<br />

prevents the -m and -p options from copying the file mode (see chmod). This option always<br />

sets the archive bit on the copied file.<br />

The behavior of this option is identical to setting the TK_CP_NOPRESERVE environment<br />

variable.<br />

is similar to the -m option, but also sets the owner and group of each destination file to the<br />

owner and group of the corresponding source file. Unlike the -m option, the archive bit of all<br />

destination files is always unset.<br />

reproduces the source trees. cp copies all files and subdirectories specified by source....<br />

into directory, making careful arrangements to duplicate special files (FIFO, block special,<br />

character special).<br />

reproduces the source trees, but makes no allowances for special files (FIFO, block special,<br />

character special). Consequently, cp attempts to read from a device rather than duplicate<br />

the special file. This is similar to, but less useful than, the preferred -R.<br />

automatically expands sparse files. This lets you make a non-sparse copy of a sparse file.<br />

prints file names to standard output as they are being processed.<br />

365 of 457


ENVIRONMENT VARIABLES<br />

TK_CP_NOPRESERVE<br />

when set, this variable prevents the -m and -p options from copying the file mode (see<br />

chmod). This option always sets the archive bit on the copied file.<br />

DIAGNOSTICS<br />

Possible exit status values are:<br />

0<br />

1<br />

2<br />

Successful <strong>com</strong>pletion.<br />

Failure due to any of the following:<br />

— an argument had a trailing slash (/) but was not a directory<br />

— unable to find a file<br />

— unable to open an input file for reading<br />

— unable to create or open an output file<br />

— a read error occurred on an input file<br />

— a write error occurred on an output file<br />

— the input and output files were the same file<br />

— encountered a fatal error when using -r or -R<br />

Possible fatal -r or -R errors include:<br />

— inability to access a file<br />

— inability to change permissions on a target file<br />

— inability to read a directory<br />

— inability to create a directory<br />

— a target that is not a directory<br />

— source and destination directories are the same<br />

Failure due to any of the following:<br />

— an invalid <strong>com</strong>mand line option<br />

— too few arguments on the <strong>com</strong>mand line<br />

— a target that should be a directory but is not<br />

— no space left on target device<br />

— out of memory to hold the data to be copied<br />

— inability to create a directory to hold a target file<br />

366 of 457


cannot allocate target string<br />

cp has no space to hold the name of the target file. Try to free up some memory to give cp<br />

more space.<br />

"name" is a directory (not copied)<br />

You did not specify -r or -R, but one of the names you asked to copy was the name of a<br />

directory.<br />

"target name"?<br />

You are attempting to copy a file with the -i option, but there is already a file with the target<br />

name. If you have specified -f, you can write over the existing file by typing y and pressing<br />

ENTER; if you do not want to write over the existing file, type n and press ENTER. If you did<br />

not specify -f and the file is read only, you are not given the opportunity to overwrite it.<br />

source "name" and target "name" are identical<br />

The source and the target are actually the same file (for example because of links, on UNIX<br />

and POSIX-<strong>com</strong>pliant systems). In this case, cp does nothing.<br />

unreadable directory "name"<br />

cp cannot read the specified directory, for example, because you do not have appropriate<br />

permissions.<br />

PORTABILITY<br />

POSIX.2. x/OPEN Portability Guide 4.0. All UNIX systems. Windows Me. Windows NT 4.0.<br />

Windows 2000. Windows XP. Windows Server 2003.<br />

The -c, -f, -m, and -v options are extensions to the POSIX standard. On Windows systems, the<br />

-R and -r options are equivalent since special files (FIFO, block special, character special) are not<br />

supported on Windows file systems.<br />

AVAILABILITY<br />

MKS Toolkit for Power Users<br />

MKS Toolkit for System Administrators<br />

MKS Toolkit for Developers<br />

MKS Toolkit for Interoperability<br />

MKS Toolkit for Professional Developers<br />

MKS Toolkit for Enterprise Developers<br />

MKS Toolkit for Enterprise Developers 64-Bit Edition<br />

MKS AlertCentre<br />

MKS Source Integrity Standard<br />

367 of 457


MKS Source Integrity Enterprise<br />

SEE ALSO<br />

Commands:<br />

cat, chmod, ln, mv, rm<br />

368 of 457


NAME<br />

date — set and display date and time<br />

SYNOPSIS<br />

date [-ctu] [timespec]<br />

date [-cu] [+format]<br />

DESCRIPTION<br />

date -- Command, KornShell Built-in<br />

date either displays the operating system's idea of the current date and time or sets it to a new<br />

value. The following example shows the default format of the date:<br />

Options<br />

-c<br />

-t<br />

-u<br />

Wed Feb 26 14:01:43 EST 1998<br />

sets or displays the date and time according to Greenwich Mean Time (Coordinated<br />

Universal Time) using CUT as the time zone name.<br />

specifies that the BSD format is used when setting the date and time.<br />

sets or displays the date and time according to Greenwich Mean Time (Coordinated<br />

Universal Time) using GMT as the time zone name.<br />

Setting Date and Time<br />

date also accepts an argument in one of two forms. If the argument does not begin with +, date<br />

assumes it is a timespec to set the date and time. The timespec can have the form<br />

or<br />

[[mm]dd]hhmm[.ss]<br />

mmddhhmmyy[.ss]<br />

369 of 457


where mm is the optional number of the month (01-12), dd is the optional day of the month, hh is<br />

the hour in 24 hour format (required) mm is the minutes (required), yy is the optional last 2 digits of<br />

the year, and ss is the optional seconds.<br />

date uses these values to set the date and time.<br />

Note:<br />

You must specify the hours and the minutes; other arguments are optional. The year can be<br />

specified only if you have specified the month and day.<br />

The -t option allows you to use the BSD date format, which is:<br />

[[[[cc]yy]mm]dd]hhmm[.ss]<br />

where cc is the optional first 2 digits of the year.<br />

Displaying Date and Time<br />

If the argument to date begins with a + character, date uses format to display the date. date<br />

writes all characters in format, with the exception of the % and the character which immediately<br />

follows it, directly to the standard output. After date exhausts the format string, it outputs a newline<br />

character. The % character introduces a special format field similar to the printf() function in the<br />

C library (see Field Descriptors).<br />

Field Descriptors<br />

%A<br />

%a<br />

%B<br />

%b<br />

%C<br />

%c<br />

%D<br />

the full weekday name in the current locale (for example, Sunday, in the POSIX locale).<br />

the abbreviation for the weekday in the current locale (for example, Sun, in the POSIX<br />

locale).<br />

the full month name in the current locale (for example, February, in the POSIX locale).<br />

the abbreviation for the month name in the current locale (for example, Feb, in the POSIX<br />

locale).<br />

the first two digits of the year (19 or 20).<br />

the appropriate representation of the date and time in the current locale.<br />

the date in the form mm/dd/yy.<br />

370 of 457


%d<br />

%e<br />

%H<br />

%h<br />

%I<br />

%j<br />

%M<br />

%m<br />

%n<br />

%p<br />

%R<br />

%r<br />

%S<br />

%T<br />

%t<br />

%U<br />

%u<br />

%V<br />

%W<br />

%w<br />

the two-digit day of the month as a number (01 to 31).<br />

the day of the month in a two-digit, right-justified, blank-filled field ( 1 to 31).<br />

the hour in the 24-hour clock representation (00 to 23).<br />

the same as %b.<br />

the hour in the 12-hour clock representation (01 to 12).<br />

the numeric day of the year (001 to 366).<br />

the minute (00 to 59).<br />

the month number (01 to 12).<br />

a newline character.<br />

the equivalent of AM or PM in the current locale.<br />

the 24-hour time (for example, 14:53).<br />

the 12-hour time in the current locale's equivalent of AM/PM notation (for example, 11:53:29<br />

AM in the POSIX locale).<br />

the seconds (00 to 61). Note that there is an allowance for two leap seconds.<br />

the 24-hour time (for example, 14:53:29).<br />

a tab character.<br />

the week number in the year, with Sunday being the first day of the week (00 to 53). All days<br />

before the first Sunday of the new year are in week 0.<br />

the weekday number with Monday being 1 and Sunday being 7.<br />

the week number in the year, with Monday being the first day of the week (01 to 53). If the<br />

week containing January 1 has four or more days in the new year, it is week 1 of the new<br />

year; otherwise it is week 53 of the previous year.<br />

the week number in the year, with Monday being the first day of the week (00 to 53). All<br />

days before the first Monday of the new year are in week 0.<br />

the weekday number, with Sunday being 0 and Saturday being 6.<br />

371 of 457


%X<br />

%x<br />

%Y<br />

%y<br />

%Z<br />

%z<br />

%%<br />

the appropriate time representation in the current locale.<br />

the appropriate date representation in the current locale.<br />

the four-digit number of the year (for example, 1998).<br />

the two-digit year (offset from %C).<br />

the time zone name (for example, EDT).<br />

equivalent to %Z.<br />

a percent-sign character.<br />

The date <strong>com</strong>mand also supports the following modified field descriptors to indicate a different<br />

format as specified by the locale indicated by LC_TIME. If the current locale does not support a<br />

modified descriptor, date uses the unmodified field descriptor value.<br />

%EC<br />

%Ec<br />

%EX<br />

%Ex<br />

%EY<br />

%Ey<br />

%Od<br />

%Oe<br />

%OH<br />

%OI<br />

%OM<br />

%Om<br />

the name of the base year (period) in the current locale's alternate representation.<br />

the current locale's alternate date and time representation.<br />

the current locale's alternate time representation.<br />

the current locale's alternate date representation.<br />

the full alternate year representation.<br />

the offset from %EC (year only) in the current locale's alternate representation.<br />

the day of month using the current locale's alternate numeric symbols.<br />

the day of month using the current locale's alternate numeric symbols in a two-character,<br />

right-justified, blank-filled field.<br />

the hour (24-hour clock) using the current locale's alternate numeric symbols.<br />

the hour (12-hour clock) using the current locale's alternate numeric symbols.<br />

the minutes using the current locale's alternate numeric symbols.<br />

the month using the current locale's alternate numeric symbols.<br />

372 of 457


%OS<br />

%OU<br />

%Ou<br />

%OV<br />

%OW<br />

%Ow<br />

%Oy<br />

the seconds using the current locale's alternate numeric symbols.<br />

the week number of the year (with Sunday as the first day of the week) using the current<br />

locale's alternate numeric symbols.<br />

the weekday number using the current locale's alternate numeric symbols with Monday<br />

being 1 and Sunday being 7.<br />

the week number in the year using the current locale's alternate numeric symbols, with<br />

Monday being the first day of the week. If the week containing January 1 has four or more<br />

days in the new year, it is week 1 of the new year; otherwise it is week 53 of the previous<br />

year.<br />

the week number of the year (with Monday as the first day of the week) using the current<br />

locale's alternate numeric symbols.<br />

the weekday as a number using the current locale's alternate numeric symbols with Sunday<br />

being 0 and Saturday being 6.<br />

the year (offset from %C) using the current locale's alternate numeric symbols.<br />

EXAMPLES<br />

The <strong>com</strong>mand<br />

date '+%a %b %e %T %Z %Y'<br />

produces the date in the default format. For example,<br />

Wed Feb 26 14:01:43 EST 1998<br />

ENVIRONMENT VARIABLES<br />

TZ<br />

gives the time zone for date to use when displaying the times. This is ignored if you specify<br />

either the -c or the -u option. For more information on this variable, see timezone.<br />

DIAGNOSTICS<br />

Possible exit status values are:<br />

373 of 457


0<br />

1<br />

2<br />

Successful <strong>com</strong>pletion.<br />

Failure due to any of the following:<br />

— a bad date conversion<br />

— a formatted date that was too long<br />

— you do not have permission to set the date<br />

Usage error, including:<br />

— an invalid <strong>com</strong>mand line option<br />

— too many arguments on the <strong>com</strong>mand line<br />

Possible error messages include:<br />

Bad date conversion: "string"<br />

The date and/or time specified on the <strong>com</strong>mand line had an invalid format (for example, if<br />

the hour is greater than 24).<br />

Bad format character x<br />

A character following % in the format string was not in the list of field descriptors.<br />

No permission to set date<br />

The system has denied you the right to set the date.<br />

PORTABILITY<br />

POSIX.2. x/OPEN Portability Guide 4.0. All UNIX systems. Windows Me. Windows NT 4.0.<br />

Windows 2000. Windows XP. Windows Server 2003.<br />

The -c option, the -t option, and the %z format specifier are extensions to both the POSIX and<br />

x/OPEN standards. The %R format specifier is an x/OPEN extension to the POSIX standard.<br />

On Windows NT/2000/XP/2003, you can specify the current locale using the Regional Settings<br />

item of the Control Panel.<br />

NOTES<br />

date is provided as both an external utility and a built-in MKS KornShell utility.<br />

374 of 457


On machines that have a time-of-day clock with battery backup, using date does not necessarily<br />

change this real-time clock. There is probably an operating system-specific <strong>com</strong>mand to achieve<br />

this.<br />

The date <strong>com</strong>mand supplied with MKS Toolkit should not be confused with the date <strong>com</strong>mand<br />

internal to the native <strong>com</strong>mand interpreters on Windows systems (that is, <strong>com</strong>mand.<strong>com</strong> and<br />

cmd.exe).<br />

AVAILABILITY<br />

MKS Toolkit for Power Users<br />

MKS Toolkit for System Administrators<br />

MKS Toolkit for Developers<br />

MKS Toolkit for Interoperability<br />

MKS Toolkit for Professional Developers<br />

MKS Toolkit for Enterprise Developers<br />

MKS Toolkit for Enterprise Developers 64-Bit Edition<br />

MKS AlertCentre<br />

MKS Source Integrity Standard<br />

MKS Source Integrity Enterprise<br />

SEE ALSO<br />

Commands:<br />

sh, touch<br />

Miscellaneous:<br />

timezone<br />

375 of 457


NAME<br />

diff, diffh, bdiff, vdiff32<br />

diff, diffh, bdiff, vdiff32 — <strong>com</strong>pare two text files and show differences<br />

SYNOPSIS<br />

diff [-BbefHhimnrsw] [-C n] [-c[n]] [-Difname] [-Mmark] [-U[b|B|l|L]] path1 path2<br />

diff [-BbefHhimnrsw] [-C n] [-c[n]] [-Difname] [-Mmark] [-U[b|B|l|L]] file... dir<br />

diffh [-Bbefimnrsw] [-C n] [-c[n]] [-Difname] [-Mmark] [-U[b|B|l|L]] path1 path2<br />

diffh [-Bbefimnrsw] [-C n] [-c[n]] [-Difname] [-Mmark] [-U[b|B|l|L]] file... dir<br />

bdiff [-Bbefimnrsw] [-C n] [-c[n]] [-Difname] [-Mmark] [-U[b|B|l|L]] path1 path2 [n]<br />

bdiff [-Bbefimnrsw] [-C n] [-c[n]] [-Difname] [-Mmark] [-U[b|B|l|L]] file... dir [n]<br />

vdiff32<br />

DESCRIPTION<br />

The diff <strong>com</strong>mand attempts to determine the minimal set of changes needed either to convert a<br />

file named path1 into path2 or the group of files indicated by file... into files of the same name<br />

found under the directory dir. Besides normal text files, diff also works on 16-bit Unicode files.<br />

Such files normally begin with a two-byte marker indicating whether the file's Unicode characters<br />

are big-endian or little-endian.<br />

If either (but only one) file name is -, diff reads that file from the standard input. If only two path<br />

names appear on the <strong>com</strong>mand line and one of path1 or path2 is a directory, diff uses a file in<br />

that directory with the same name as the other file name. If both are directories, diff <strong>com</strong>pares<br />

files with the same file names under the two directories. However, diff does not <strong>com</strong>pare files in<br />

subdirectories unless you specify the -r option. When <strong>com</strong>paring two directories, diff does not<br />

<strong>com</strong>pare block special files, character special files, or FIFO special files to any other files and does<br />

not <strong>com</strong>pare regular files to directories.<br />

If more than two path names appear on the <strong>com</strong>mand line, the last path name is assumed to be a<br />

directory and the preceding path names to be files. diff then <strong>com</strong>pares each file in the list to a file<br />

with the name under the specified directory.<br />

By default, output consists of descriptions of the changes in a style reminiscent of the ed text<br />

editor. A line indicating the type of change is given. The three types are a (append), d (delete), and<br />

c (change). The output is symmetric in the sense that a delete in path1 is the counterpart of an<br />

append in path2. diff prefixes each operation with a line number (or range) in path1 and suffixes<br />

376 of 457


each with a line number (or range) in path2. After the line giving the type of change, diff displays<br />

the deleted or added lines, prefixing lines from path1 with < and lines from path2 with >.<br />

When you call the <strong>com</strong>mand as diffh, it automatically uses the -h option.<br />

When you call it as bdiff, diff <strong>com</strong>putes the differences in chunks of n lines (default 3999). This<br />

lets you process arbitrarily large files and generally produces less output than the -h option.<br />

The vdiff32 <strong>com</strong>mand is a graphical version of diff, giving you the ability to <strong>com</strong>pare and view<br />

files from a graphical user interface. Complete instructions on using vdiff32 are available<br />

through its online help feature.<br />

Options<br />

-B<br />

-b<br />

-C n<br />

-c[n]<br />

uses diffb to <strong>com</strong>pare the files when binary files are detected.<br />

ignores white space at the end of each line (except the newline) and treats all consecutive<br />

strings of white space elsewhere in a line as equivalent (effectively, reducing all strings of<br />

white space to a single space for the purpose of <strong>com</strong>paring lines). For example if one file<br />

contained a string of three spaces and a tab at a given location while the other file contained<br />

a string of two spaces at the same location, diff would not report this as a difference.<br />

shows n lines of context before and after each change. diff marks lines removed from<br />

path1 with -, lines added to path2 with + and lines changed in both files with !. This option<br />

conflicts with the -e and -f options.<br />

is equivalent to -C n, but n is optional. The default value for n is 3. This option conflicts with<br />

the -e and -f options.<br />

-Difname<br />

displays output that is the appropriate input to the C preprocessor to generate the contents<br />

of path2 when ifname is defined, and the contents of path1 when ifname is not defined.<br />

-e<br />

-f<br />

writes out a script of <strong>com</strong>mands for the ed text editor that converts path1 to path2. diff<br />

sends the output to the standard output. This option conflicts with the -m, -c, and -C<br />

options.<br />

377 of 457


-H<br />

-h<br />

-i<br />

writes a script similar to the one produced under -e to the standard output, but with the<br />

<strong>com</strong>mand sequence reversed, the <strong>com</strong>mand form reversed, and the line-range separator a<br />

space, rather than a <strong>com</strong>ma. This option conflicts with the -m, -c, and -C options.<br />

uses the half-hearted (-h) algorithm only if the normal algorithm runs out of system<br />

resources.<br />

uses a fast, half-hearted algorithm instead of the normal diff algorithm. This algorithm can<br />

handle arbitrarily large files; however, it is not particularly good at finding a minimal set of<br />

differences in files with many differences.<br />

ignores the case of letters when doing the <strong>com</strong>parison.<br />

-Mmark<br />

describes the diff mark to be used in place of the vertical line character (|) when the -m<br />

option is also specified. mark can be any nroff/troff character or string. It can be as<br />

simple or <strong>com</strong>plex as you like. For example, specifying mark as 1 causes the diff mark to be<br />

the character 1. Specifying \(sq causes it to be an open square and specifying<br />

\s+6\fB\d~\u\fP\s0 causes the diff mark to be a bold-faced tilde (~) six points larger in<br />

size half a line below the current line.<br />

-m<br />

-n<br />

-r<br />

This option does not change the character used to indicate deleted lines. It remains the<br />

asterisk(*).<br />

produces the contents of path2 with extra formatter request lines interspersed to show which<br />

lines were added or changed and which were deleted.<br />

If you do not also specify the -M option, added, or changed lines are indicated by a vertical<br />

line character | in the right margin. If you do specify the -M option, diff uses the<br />

nroff/troff string given as mark to indicated additions or changes. Deleted lines are<br />

always indicated with an asterisk (*) in the right margin.<br />

These are nroff/ troff requests. This option conflicts with the -e and -f options.<br />

displays the differences in a form that is usable by MKS Source Integrity.<br />

<strong>com</strong>pares corresponding files under the directories, and recursively <strong>com</strong>pares<br />

378 of 457


-s<br />

corresponding files under corresponding subdirectories. You can use this option when you<br />

specify two directory names on the <strong>com</strong>mand line.<br />

<strong>com</strong>pares two directories, file by file, and prints messages for identical files between the two<br />

directories.<br />

-U[b|B|l|L]<br />

forces the specified files to be treated as Unicode files.<br />

-w<br />

By default, diff assumes that Unicode characters are little-endian. If a byte-order marker is<br />

present, that is used to determine the byte order for the characters. You can force Unicode<br />

characters to be treated as big-endian by specifying -Ub or -UB. Similarly, you can force<br />

them to be treated as little-endian by specifying -Ul or -UL.<br />

ignores white space (not including newlines) when making the <strong>com</strong>parison. For example,<br />

the following two lines are equivalent:<br />

a b c d<br />

abcd<br />

EXAMPLES<br />

The following example illustrates the output of the diff <strong>com</strong>mand. The following two files, price1<br />

and price2, are <strong>com</strong>pared with and without the use of the -c option.<br />

The contents of price1 are as follows:<br />

Company X Price List:<br />

$ 0.39 -- Package of Groat Clusters<br />

$ 5.00 -- Candy Apple Sampler Pack<br />

$ 12.00 -- Box of Crunchy Frog Chocolates<br />

$ 15.99 -- Instant Rain (Just Add Water)<br />

$ 20.00 -- Asparagus Firmness Meter<br />

$ 25.00 -- Package of Seeds for 35 Herbs<br />

$ 30.00 -- Child's Riding Hood (Red)<br />

$ 35.00 -- Genuine Placebos<br />

$ 45.00 -- Case of Simulated Soy Bean Oil<br />

$ 75.88 -- No-Name Contact Lenses<br />

$ 99.99 -- Kiddie Destructo-Bot<br />

$125.00 -- Emperor's New Clothes<br />

379 of 457


The contents of price2 are as follows:<br />

Company X Price List:<br />

$ 0.39 -- Package of Groat Clusters<br />

$ 5.49 -- Candy Apple Sampler Pack<br />

$ 12.00 -- Box of Crunchy Frog Chocolates<br />

$ 15.99 -- Instant Rain (Just Add Water)<br />

$ 17.00 -- Simulated Naugahyde Cleaner<br />

$ 20.00 -- Asparagus Firmness Meter<br />

$ 25.00 -- Package of Seeds for 35 Herbs<br />

$ 30.00 -- Child's Riding Hood (Red)<br />

$ 35.00 -- Genuine Placebos<br />

$ 45.00 -- Case of Simulated Soy Bean Oil<br />

$ 75.88 -- No-Name Contact Lenses<br />

$ 99.99 -- Kiddie Destructo-Bot<br />

The <strong>com</strong>mand<br />

diff price1 price2<br />

results in the following output:<br />

4c4<br />

< $ 5.00 -- Candy Apple Sampler Pack<br />

---<br />

> $ 5.49 -- Candy Apple Sampler Pack<br />

6a7<br />

> $ 17.00 -- Simulated Naugahyde Cleaner<br />

14d14<br />

< $125.00 -- Emperor's New Clothes<br />

The addition of the -c option, as in<br />

diff -c price1 price2<br />

results in the following output:<br />

*** price1 Wed Mar 04 10:08:40 1992<br />

--- price2 Wed Mar 04 10:09:10 1992<br />

***************<br />

*** 1,9 ****<br />

Company X Price List:<br />

$ 0.39 -- Package of Groat Clusters<br />

380 of 457


! $ 5.00 -- Candy Apple Sampler Pack<br />

$ 12.00 -- Box of Crunchy Frog Chocolates<br />

$ 15.99 -- Instant Rain (Just Add Water)<br />

$ 20.00 -- Asparagus Firmness Meter<br />

$ 25.00 -- Package of Seeds for 35 Herbs<br />

$ 30.00 -- Child's Riding Hood (Red)<br />

--- 1,10 ----<br />

Company X Price List:<br />

$ 0.39 -- Package of Groat Clusters<br />

! $ 5.49 -- Candy Apple Sampler Pack<br />

$ 12.00 -- Box of Crunchy Frog Chocolates<br />

$ 15.99 -- Instant Rain (Just Add Water)<br />

+ $ 17.00 -- Simulated Naugahyde cleaner<br />

$ 20.00 -- Asparagus Firmness Meter<br />

$ 25.00 -- Package of Seeds for 35 Herbs<br />

$ 30.00 -- Child's Riding Hood (Red)<br />

***************<br />

*** 11,14 ****<br />

$ 45.00 -- Case of Simulated Soy Bean Oil<br />

$ 75.88 -- No-Name Contact Lenses<br />

$ 99.99 -- Kiddie Destructo-Bot<br />

- $125.00 -- Emperor's New Clothes<br />

--- 12,14 ----<br />

diff -c marks lines removed from price1 with -, lines added to price1 with + and lines<br />

changed in both files with !. In the example, diff shows the default 3 lines of context around<br />

each changed line. One line was changed in both files (marked with !), one line was added to<br />

price1 (marked with +), and one line was removed from price1 (marked with -).<br />

Note:<br />

If there are no marks to be shown in the corresponding lines of the file being <strong>com</strong>pared, the<br />

lines are not displayed. Lines 12 to 14 of price2 are suppressed for this reason.<br />

DIAGNOSTICS<br />

Possible exit status values are:<br />

0<br />

1<br />

No differences between the files <strong>com</strong>pared.<br />

diff <strong>com</strong>pared the files and found them to be different.<br />

381 of 457


2<br />

4<br />

Messages<br />

Failure due to any of the following:<br />

— invalid <strong>com</strong>mand line argument<br />

— cannot open one of the input files<br />

— out of memory<br />

— read error on one of the input files<br />

— more than LINE_MAX characters between newlines<br />

At least one of the files is a binary file containing embedded NUL (\0) bytes.<br />

file "filename": no such file or directory<br />

The specified filename does not exist. filename was either typed explicitly, or generated by<br />

diff from the directory of one file argument and the base name of the other.<br />

Files file1 and file2 are identical<br />

The -s option was specified and the two named files are identical.<br />

Common subdirectories: name and name<br />

This message appears when diff is <strong>com</strong>paring the contents of directories, but you have<br />

not specified -r. When diff discovers two subdirectories with the same name, it reports<br />

that the directories exist, but it does not try to <strong>com</strong>pare the contents of the two directories.<br />

Insufficient memory (try diff -h)<br />

diff ran out of memory for generating the data structures used in the file differencing<br />

algorithm (see LIMITS). The -h option of diff can handle any size of file without running<br />

out of memory.<br />

Internal error--cannot create temporary file<br />

diff was unable to create a working file that it needed. Ensure that you either have a /tmp<br />

directory or that the environment contains a variable TMPDIR that names a directory where<br />

diff may store temporary files. Also, ensure that there is sufficient file space in this<br />

directory.<br />

Missing #ifdef symbol after -D<br />

You did not specify a conditional label on the <strong>com</strong>mand line after the -D option.<br />

Only one file may be "-"<br />

Of the two input files normally found on the <strong>com</strong>mand line of diff, only one can be the<br />

standard input.<br />

382 of 457


Too many lines in "filename"<br />

A file of more than the maximum number of lines (see LIMITS) was given to diff.<br />

LIMITS<br />

The longest input line is 8192 on Windows and most UNIX systems. -h, files are limited to<br />

INT_MAX lines.<br />

PORTABILITY<br />

POSIX.2. x/OPEN Portability Guide 4.0. All UNIX systems. Windows Me. Windows NT 4.0.<br />

Windows 2000. Windows XP. Windows Server 2003.<br />

The -D, -H, -h, -i, -m, -n, -s, and -w options; the n argument to the -c option; and the diffh<br />

and bdiff versions of the <strong>com</strong>mand are extensions to the POSIX and x/OPEN standard. The -f<br />

option is an x/OPEN extension to the POSIX standard.<br />

AVAILABILITY<br />

The diff, bdiff, and diffh utilities are available with the following products:<br />

MKS Toolkit for Power Users<br />

MKS Toolkit for System Administrators<br />

MKS Toolkit for Developers<br />

MKS Toolkit for Interoperability<br />

MKS Toolkit for Professional Developers<br />

MKS Toolkit for Enterprise Developers<br />

MKS Toolkit for Enterprise Developers 64-Bit Edition<br />

MKS AlertCentre<br />

MKS Source Integrity Standard<br />

MKS Source Integrity Enterprise<br />

The vdiff32 utility is only available with the following products:<br />

MKS Toolkit for Developers<br />

MKS Toolkit for Interoperability<br />

MKS Toolkit for Professional Developers<br />

MKS Toolkit for Enterprise Developers<br />

MKS Toolkit for Enterprise Developers 64-Bit Edition<br />

MKS Source Integrity Standard<br />

MKS Source Integrity Enterprise<br />

383 of 457


SEE ALSO<br />

Commands:<br />

cmp, <strong>com</strong>m, diff3, diffb, dircmp, patch<br />

384 of 457


NAME<br />

diffb<br />

diffb — <strong>com</strong>pare binary files and show differences<br />

SYNOPSIS<br />

diffb [-n] [-C n] [-c[n]] file1 file2<br />

DESCRIPTION<br />

The diffb utility indicates which bytes differ in the binary files file1 and file2. Output consists of<br />

descriptions of the changes in a style reminiscent of the ed text editor. Each description is headed<br />

by a line showing the type of change being performed. This line contains three pieces of<br />

information:<br />

● the location of the range of bytes in file1 affected by the change, represented as an offset<br />

from the beginning of the file;<br />

● the type of change: one of a (append), d (delete), and c (change);<br />

● the location of the range of bytes in file2 affected by the change.<br />

After the line giving the type of change, the deleted or added bytes are displayed. Non-printable<br />

bytes are represented by an escape sequence consisting of a backslash character (\), followed by<br />

the ASCII representation of the byte displayed as a three-digit octal number.<br />

The output of diffb resembles the output of diff, except that differences are ranges of bytes<br />

rather than ranges of lines. Each displayed set of bytes from file1 is prefixed by , and a > appears at the start of each new line in a set of<br />

bytes. If bytes from both file1 and file2 are being displayed, a line consisting of --- separates the<br />

two sets of bytes.<br />

Options<br />

-C n<br />

-c[n]<br />

-n<br />

is equivalent to -c n.<br />

displays n bytes of context before and after each difference. The default value for n is 3.<br />

displays the differences in a form usable by MKS Source Integrity.<br />

385 of 457


DIAGNOSTICS<br />

Possible exit status values are:<br />

0<br />

1<br />

2<br />

LIMITS<br />

The files were identical.<br />

The files were <strong>com</strong>pared successfully and found to be different.<br />

Failure due to any of the following:<br />

— the inability to open an input file<br />

— a syntax error on the <strong>com</strong>mand line<br />

— the wrong number of arguments on the <strong>com</strong>mand line<br />

The set of differences produced by diffb is correct but may not be minimal.<br />

PORTABILITY<br />

Windows Me. Windows NT 4.0. Windows 2000. Windows XP. Windows Server 2003.<br />

AVAILABILITY<br />

MKS Toolkit for Power Users<br />

MKS Toolkit for System Administrators<br />

MKS Toolkit for Developers<br />

MKS Toolkit for Interoperability<br />

MKS Toolkit for Professional Developers<br />

MKS Toolkit for Enterprise Developers<br />

MKS Toolkit for Enterprise Developers 64-Bit Edition<br />

MKS AlertCentre<br />

MKS Source Integrity Standard<br />

MKS Source Integrity Enterprise<br />

SEE ALSO<br />

Commands:<br />

386 of 457


diff<br />

387 of 457


NAME<br />

echo — display arguments<br />

SYNOPSIS<br />

echo argument...<br />

DESCRIPTION<br />

echo -- Command, KornShell Built-in<br />

echo writes its arguments to the standard output. echo accepts these C-style escape sequences:<br />

\a<br />

bell<br />

\b<br />

backspace<br />

\c<br />

removes any following characters including \n and \r<br />

\e<br />

escape character<br />

\E<br />

escape character<br />

\f<br />

formfeed<br />

\n<br />

newline<br />

\r<br />

carriage return<br />

\t<br />

horizontal tab<br />

\v<br />

vertical tab<br />

\xHH<br />

the character whose hexadecimal value is HH (on or two hex digits).<br />

\0num<br />

the byte with the numeric value specified by the zero to three digit octal num<br />

\\<br />

backslash<br />

echo follows the final argument with a newline unless it finds \c in the arguments. Arguments are<br />

388 of 457


subject to standard argument manipulation.<br />

Because echo interprets backslashes as the beginning of an escape sequence and path names<br />

can contain backslashes, echo can produce unusual results when attempting to display the value<br />

of PATH or any string may contain path names. To display such strings properly, you should use<br />

print -r instead of echo.<br />

EXAMPLES<br />

One use of echo is to expand file names on the <strong>com</strong>mand line, as in:<br />

echo *.[ch]<br />

This displays the names of all files with names ending in .c or .h, typically C source and header<br />

files. echo displays the names on a single line. If there are no file names in the current directory<br />

that end in .c or .h, echo simply displays the string *.[ch].<br />

echo is also handy for passing small amounts of input to other filters:<br />

echo 'this is\nreal handy' | banner<br />

DIAGNOSTICS<br />

echo always returns the status value:<br />

0<br />

Successful <strong>com</strong>pletion.<br />

PORTABILITY<br />

POSIX.2. x/OPEN Portability Guide 4.0. UNIX System V. Windows Me. Windows NT 4.0. Windows<br />

2000. Windows XP. Windows Server 2003.<br />

The POSIX.2 standard does not include the escape sequences, so a strictly conforming application<br />

cannot use them. printf is suggested as a replacement.<br />

On older UNIX systems, the backslash escape sequences are not available; the -n option is<br />

equivalent to \c embedded in an argument.<br />

NOTE<br />

389 of 457


echo is provided as both an external utility and a built-in MKS KornShell utility. The echo<br />

<strong>com</strong>mand provided with MKS Toolkit should not be confused with the echo <strong>com</strong>mand provided<br />

with Windows.<br />

To gain access to this <strong>com</strong>mand on Windows systems, outside the MKS KornShell, do one of the<br />

following:<br />

● call echo with its full path name (usually, $ROOTDIR/mksnt/echo.exe)<br />

● copy echo.exe to another file name to avoid a clash with the built-in <strong>com</strong>mand<br />

AVAILABILITY<br />

MKS Toolkit for Power Users<br />

MKS Toolkit for System Administrators<br />

MKS Toolkit for Developers<br />

MKS Toolkit for Interoperability<br />

MKS Toolkit for Professional Developers<br />

MKS Toolkit for Enterprise Developers<br />

MKS Toolkit for Enterprise Developers 64-Bit Edition<br />

MKS AlertCentre<br />

MKS Source Integrity Standard<br />

MKS Source Integrity Enterprise<br />

SEE ALSO<br />

Commands:<br />

print, sh<br />

390 of 457


ident<br />

look for keywords in a file<br />

SYNOPSIS<br />

ident [-q] [-Ffile]... [file ...]<br />

DESCRIPTION<br />

ident searches the named files (or the standard input if you do not specify any files) for all<br />

occurrences of the pattern $keyword:...$, where keyword is one of the following MKS Source<br />

Integrity keywords:<br />

$Author$<br />

$Date$<br />

$Header$<br />

$Id$<br />

$Locker$<br />

$Log$<br />

$Name$<br />

$ProjectName$<br />

$ProjectRevision$<br />

$RCSfile$<br />

$Revision$<br />

$Source$<br />

$State$<br />

ident works on any file, but the file must have been checked out with keyword expansion turned<br />

on for the results to be meaningful.<br />

The ident <strong>com</strong>mand works on object files and dumps as well as text files. For example, if the C<br />

program in file f.c contains<br />

char rcsid[] = "$Header$";<br />

and f.c is <strong>com</strong>piled into f.o, the <strong>com</strong>mand<br />

displays<br />

ident f.c f.o<br />

391 of 457


f.c:<br />

f.o:<br />

Options<br />

-Ffile<br />

-q<br />

$Header$<br />

$Header$<br />

provides an alternate way to specify file names. The given file is a text file containing a list of<br />

file names, one file name per line. ident checks all the files named in file, using the options<br />

specified on the <strong>com</strong>mand line. Multiple -F options may be specified on the <strong>com</strong>mand line,<br />

and can either be grouped together or interspersed between options.<br />

suppresses the warning given if there are no keywords in a file.<br />

DIAGNOSTICS<br />

Possible exit status values are:<br />

0<br />

1<br />

Successful <strong>com</strong>pletion.<br />

Failure due to an invalid <strong>com</strong>mand line argument, or inability to open input file.<br />

392 of 457


NAME<br />

more<br />

more, less — display files on a page-by-page basis<br />

SYNOPSIS<br />

more [-ceiSs] [-A|-u] [-n number] [-P prompt] [-p <strong>com</strong>mand] [-t tag] [-U[b|B|l|L]] [file ...]<br />

more [-ceiSs] [-A|-u] [-n number] [-P prompt] [-t tag] [+<strong>com</strong>mand] [-U[b|B|l|L]] [file ...]<br />

less [-ceiSs] [-A|-u] [-n number] [-P prompt] [-p <strong>com</strong>mand] [-t tag] [-U[b|B|l|L]] [file ...]<br />

less [-ceiSs] [-A|-u] [-n number] [-P prompt] [-t tag] [+<strong>com</strong>mand] [-U[b|B|l|L]] [file ...]<br />

DESCRIPTION<br />

The more <strong>com</strong>mand displays files one page at a time. It obtains the number of lines per page from<br />

the environment or from the -n option. If the standard output is not a terminal device, the number<br />

of lines per page is infinite. The less <strong>com</strong>mand is identical to the more <strong>com</strong>mand.<br />

If more than one file is specified, they are displayed one at a time. When more finishes displaying<br />

one file, it begins displaying the next one in the list. If you give - as one of the file names, more<br />

reads the standard input at that point in the sequence.<br />

Besides normal text files, more also works on 16-bit Unicode files. Such files normally begin with a<br />

two-byte marker indicating whether the file's Unicode characters are big-endian or little-endian.<br />

more allows paging forwards and backwards (if possible) and searching for strings.<br />

Options<br />

-A<br />

-c<br />

causes the display of all characters, including unprintable ones. Normally unprintable<br />

characters are displayed in a printable format. Further, ANSI escape sequences for display<br />

modes are processed. This option cannot be used with -u.<br />

Note:<br />

The character in the top left corner of the screen always appears in normal mode.<br />

clears the screen before displaying a new file. If at any time, the new screen to be displayed<br />

393 of 457


-e<br />

-i<br />

does not have any lines in <strong>com</strong>mon with the current screen, more does not scroll, but<br />

instead, redraws the screen one line at a time, starting from the top. more may ignore this<br />

option if the terminal does not support such operations.<br />

exits immediately after displaying the last line of the last file. Normally, if standard output is a<br />

terminal device, more stops after displaying the last line of the last file and prompts for a<br />

new <strong>com</strong>mand. If the <strong>com</strong>mand that displays text causes more to reach the end of the file<br />

again, more exits.<br />

ignores case during searches.<br />

-n number<br />

specifies the number of lines per page. This overrides any values obtained from the<br />

environment.<br />

-P string<br />

sets the prompt that appears at end of each page of text to string. The default prompt is<br />

[filename]. more normally displays the prompt in STANDOUT mode.<br />

-p <strong>com</strong>mand<br />

+<strong>com</strong>mand<br />

initially executes the more <strong>com</strong>mand on each file. If it executes successfully and <strong>com</strong>mand<br />

is a positioning <strong>com</strong>mand such as a line number or a regular expression search, more<br />

displays the resulting page; otherwise more displays the first page of the file. If both the -t<br />

and -p options are specified, the -t option is processed first.<br />

-S<br />

-s<br />

displays the prompt in normal mode rather than STANDOUT mode.<br />

replaces consecutive empty lines with a single empty line. Remember that all line numbers<br />

(for example, as specified with the p) will refer to the lines in the new file (that is, the file with<br />

the consecutive empty lines replaced).<br />

-t tag<br />

searches for the named tag and displays the page of text containing it. See ctags for more<br />

information.<br />

-U[b|B|l|L]<br />

forces the specified files to be treated as Unicode files.<br />

394 of 457


-u<br />

By default, more assumes that Unicode characters are little-endian. If a byte-order marker is<br />

present, that is used to determine the byte order for the characters. You can force Unicode<br />

characters to be treated as big-endian by specifying -Ub or -UB. Similarly, you can force<br />

them to be treated as little-endian by specifying -Ul or -UL.<br />

displays all backspaces as ^H. Normally characterbackspace_(underscore) displays<br />

character as underlined and characterbackspacecharacter displays character as boldfaced.<br />

-u also displays all carriage returns as ^M. This option cannot be used with -A.<br />

Interactive Commands<br />

more also accepts the following interactive <strong>com</strong>mands.<br />

[n]b<br />

[n]CTRL-B<br />

[n]PgUp<br />

moves backward n lines, with a default of one page. If n is more than the page size, more<br />

displays only the final page.<br />

[n]d<br />

[n]CTRL-D<br />

scrolls forward n lines, with a default of one half of the page size. If you specify n, it<br />

be<strong>com</strong>es the new default for subsequent d and u <strong>com</strong>mands.<br />

[n]f<br />

[n]CTRL-F<br />

[n]PgDn<br />

moves forward n lines, with a default of one page. At end-of-file, more continues with the<br />

next file in the list, or exits if the current file is the last one in the list.<br />

[n]G<br />

[n]g<br />

h<br />

[n]j<br />

[n]SPACE<br />

[n]ENTER<br />

goes to the nth line in the file. If you do not specify n, more advances to the end of the file.<br />

goes to the nth line in the file, with the default being the first line of the file.<br />

displays a summary of interactive <strong>com</strong>mands.<br />

395 of 457


[n]•<br />

[n]k<br />

[n]•<br />

scrolls forward n lines, with a default of one line for j, ENTER and •, and a default of one<br />

page for SPACE. This <strong>com</strong>mand displays the entire n lines even if n is more than the page<br />

size. At end-of-file, these <strong>com</strong>mands cause more to begin displaying the next file in the list,<br />

or to exit if the current file is the last one in the list.<br />

scrolls backward n lines, with a default of one line. This <strong>com</strong>mand displays the entire n lines<br />

even if n is more than the page size.<br />

mletter<br />

marks the current position with the lowercase letter. When you view a new file, all previous<br />

marks are lost.<br />

[n]N<br />

[n]n<br />

q<br />

:q<br />

ZZ<br />

R<br />

repeats the previous search, but in the opposite direction. If you specify n, more repeats the<br />

search n times.<br />

repeats the previous search. If you specify n, more repeats the search n times.<br />

For example, if there are eight occurrences of pattern in the file and /pattern found the<br />

second occurrence, a follow-up <strong>com</strong>mand of 5n finds and sets the current position to the 7th<br />

occurrence of pattern.<br />

exits more.<br />

refreshes the screen and discards any buffered input.<br />

r<br />

CTRL-L<br />

refreshes the screen.<br />

[n]s<br />

skips forward n lines (with a default of one line) and displays one page beginning at that<br />

point. If n would cause less than a full page to be displayed, more displays the last page in<br />

the file.<br />

396 of 457


[n]u<br />

[n]CTRL-U<br />

scrolls backward n lines, with a default of one half of the page size. If you specify n, it<br />

be<strong>com</strong>es the new default for subsequent d and u <strong>com</strong>mands.<br />

v<br />

invokes an editor to edit the current file. more uses the editor named by the environment<br />

variable EDITOR. The default editor is vi.<br />

'letter<br />

returns to the position marked with letter.<br />

''<br />

returns to the position where you last issued a movement <strong>com</strong>mand of greater than one<br />

page or the beginning of the file if you have issued no such <strong>com</strong>mands.<br />

:e [filename]ENTER<br />

stops viewing the current file and views filename instead. If you do not specify filename,<br />

more returns to the beginning of the current file. If filename is #, more returns to the last file<br />

viewed before the current one.<br />

[n]:n<br />

[n]:p<br />

views the next file from the list given on the <strong>com</strong>mand line. If you specify n, more views the<br />

nth next file from the list.<br />

views the previous file from the list given in the <strong>com</strong>mand line. If you specify n, more views<br />

the nth previous file from the list.<br />

:t tagname<br />

goes to tagname (see ctags).<br />

:w filename<br />

writes the contents of the current file to the file filename.<br />

!sh_cmd<br />

escapes to shell and executes sh_cmd as a shell <strong>com</strong>mand.<br />

=<br />

CTRL-G<br />

displays, where possible, the name of the file currently being viewed, its number (relative to<br />

the total number of files specified in the <strong>com</strong>mand line), the current line number, the current<br />

byte number, the total bytes to display and what percentage of the file has been displayed.<br />

397 of 457


[n]/[!]pattern<br />

searches forward in the file for the nth line containing pattern. n defaults to one if not<br />

specified. If pattern is the null regular expression (/), more uses the previous pattern. If the<br />

character ! precedes pattern, more searches for lines that do not contain pattern.<br />

[n]?[!]pattern<br />

searches backward in the file for the nth line containing pattern. The search begins at the<br />

line immediately before the top line displayed. n defaults to one if not specified. If pattern is<br />

the null regular expression (?), more uses the previous pattern. If the character ! precedes<br />

pattern, more searches for lines that do not contain pattern.<br />

HOME<br />

END<br />

goes to the first line in the file.<br />

goes to the last line in the file.<br />

ENVIRONMENT VARIABLES<br />

COLUMNS<br />

contains the maximum number of columns to display on one line.<br />

EDITOR<br />

contains the name of the editor that the v <strong>com</strong>mand invokes.<br />

LINES<br />

contains the number of lines in a page. This value takes precedence over the value provided<br />

by TERM; however, the -n value takes precedence over the LINES value.<br />

MORE<br />

contains a list of options (from those listed in the Options section) as they would appear on<br />

the <strong>com</strong>mand line. This variable takes preference over the TERM and LINES variables.<br />

TERM<br />

contains the name of the terminal type.<br />

DIAGNOSTICS<br />

Possible exit status values are:<br />

398 of 457


0<br />

>0<br />

Successful <strong>com</strong>pletion.<br />

Failure due to any of the following:<br />

PORTABILITY<br />

— filename not a text file<br />

— -n option too large<br />

— syntax error in regular expression<br />

— inability to create a file<br />

— inability to open input file<br />

— insufficient memory<br />

— invalid <strong>com</strong>mand<br />

— inability to access the terminal<br />

— missing string after -p option<br />

POSIX.2. x/OPEN Portability Guide 4.0. All UNIX systems. Windows Me. Windows NT 4.0.<br />

Windows 2000. Windows XP. Windows Server 2003.<br />

The -A, -P and -S options, and the :w and ! <strong>com</strong>mands are extensions to the POSIX standard.<br />

The HOME, END, PgDn, PgUp, • and • <strong>com</strong>mands are extensions to traditional implementations of<br />

more, available only on terminal types that support these keys.<br />

NOTE<br />

The MKS more <strong>com</strong>mand should not be confused with any more <strong>com</strong>mands supplied with your<br />

operating system.<br />

AVAILABILITY<br />

MKS Toolkit for Power Users<br />

MKS Toolkit for System Administrators<br />

MKS Toolkit for Developers<br />

MKS Toolkit for Interoperability<br />

MKS Toolkit for Professional Developers<br />

MKS Toolkit for Enterprise Developers<br />

MKS Toolkit for Enterprise Developers 64-Bit Edition<br />

MKS AlertCentre<br />

MKS Source Integrity Standard<br />

MKS Source Integrity Enterprise<br />

399 of 457


SEE ALSO<br />

Commands:<br />

cat, ctags, pg, vi<br />

400 of 457


NAME<br />

ln — create a link to a file<br />

SYNOPSIS<br />

ln [-fiRrv] old new<br />

ln [-fiRrsv] old old ... dir<br />

DESCRIPTION<br />

ln<br />

ln creates a link to a file or set of files. A link is a new directory entry that refers to the same file,<br />

either in the directory that currently contains the file or in a different directory. The result is a new<br />

path name that refers to the file. You can access the file under the old path name or the new one;<br />

both path names are of equal importance. If you rm either name, the other one remains and the file<br />

contents are still available under that name. The contents of the file do not disappear until you<br />

remove the last link.<br />

Note:<br />

The link utility only works on NTFS file systems on Windows NT/2000/XP/2003.<br />

A file may have any number of links to it. Thus you can establish any number of different path<br />

names for any file.<br />

In the first form given in the synopsis, new be<strong>com</strong>es a new path name for the file old. In the second<br />

form, ln creates entries for all the old files under the directory dir. For example,<br />

ln yourdir/* mydir<br />

creates links under mydir to all the files under yourdir. The files have the same names under<br />

mydir that they had under yourdir. ln always assumes this directory form when the last<br />

operand on the <strong>com</strong>mand line is the name of a directory. In this case, none of the old names may<br />

be a directory.<br />

In some cases a file may have the same name as the link you are trying to set up. This file is<br />

referred to as the conflicting path name. To deal with a conflicting path name, ln follows these<br />

steps.<br />

● If you have specified -i, ln writes a prompt to standard error to ask if you want to remove<br />

401 of 457


the conflicting path name. If you answer affirmatively, ln attempts to remove it.<br />

● If you have specified -f, ln attempts to remove the conflict silently.<br />

● Otherwise, ln prints a diagnostic message.<br />

● If it is going to get rid of the conflicting path name, ln attempts to do so in the same way that<br />

rm does. ln deletes the file associated with the path name if this path name is the last link<br />

to the file. If ln can't get rid of the conflicting path name, it does not attempt to establish the<br />

new link; it simply prints an error message on the standard error and goes on to process any<br />

other files.<br />

● If ln successfully removes the conflicting path name, it then establishes the link.<br />

Options<br />

-f<br />

-i<br />

-R<br />

-r<br />

-s<br />

removes conflicting path names without asking for confirmation.<br />

checks with you before getting rid of conflicting path names. (Note that the -f option<br />

overrides the -i option.)<br />

links files recursively; that is, you can link an entire hierarchy of subdirectories at once.<br />

is identical to -R.<br />

creates a symbolic link. You can only create symbolic links on Windows 2000/XP/2003<br />

systems using the NTFS file system and only for directories on local drives. You cannot<br />

create a symbolic link for a file.<br />

Note:<br />

The -s option does not work with drives which use removable media (for example,<br />

CD drives and tape drives).<br />

A symbolic link is a pointer to the directory to which it is linked. Like a normal hard link, you<br />

can refer to the directory by either its original name or the name of the symbolic link. Unlike<br />

a normal hard link, deleting the original directory leaves a link pointing nowhere and the<br />

contents of the directory are gone. Deleting the original directory leaves a link pointing<br />

402 of 457


-v<br />

nowhere.<br />

Note:<br />

When using Explorer, selecting a symbolic link and dragging it to the Recycle Bin (or<br />

hitting the DELETE key) deletes just the symbolic link. Selecting a symbolic link and<br />

hitting the SHIFT-DELETE key <strong>com</strong>bination deletes both the symbolic link and the<br />

original directory and its contents (including any subdirectories). Using the Windows<br />

<strong>com</strong>mand line del <strong>com</strong>mand to delete a symbolic link deletes the symbolic link and<br />

the contents (excluding subdirectories and their contents) of the original directory, but<br />

not the original directory itself.<br />

shows file names as they are processed.<br />

DIAGNOSTICS<br />

Possible exit status values are:<br />

0<br />

1<br />

2<br />

All requested links were established successfully.<br />

Failure due to any of the following:<br />

— an argument had a trailing / but was not the name of a directory<br />

— a file could not be found<br />

— an input file could not be opened for reading<br />

— an output file could not be created or opened for output<br />

— the new link file already exists<br />

— a link could not be established<br />

— a read error occurred on an input file<br />

— a write error occurred on an output file<br />

— the input and output files were the same file<br />

— inability to access a file when using -r<br />

— inability to read a directory when using -r<br />

— inability to create a directory when using -r<br />

— a target is not a directory when using -r<br />

— source and destination directory are the same when using -r<br />

Failure due to any of the following:<br />

— invalid <strong>com</strong>mand line option<br />

— too few arguments on the <strong>com</strong>mand line<br />

403 of 457


PORTABILITY<br />

— a target that should be a directory but isn't<br />

— no space left on target device<br />

— out of memory to hold the data to be copied<br />

— unable to create a directory to hold a target file<br />

POSIX.2. x/OPEN Portability Guide 4.0. All UNIX systems. Windows NT 4.0. Windows 2000.<br />

Windows XP. Windows Server 2003.<br />

Only the -f option is part of the POSIX standard.<br />

AVAILABILITY<br />

MKS Toolkit for Power Users<br />

MKS Toolkit for System Administrators<br />

MKS Toolkit for Developers<br />

MKS Toolkit for Interoperability<br />

MKS Toolkit for Professional Developers<br />

MKS Toolkit for Enterprise Developers<br />

MKS Toolkit for Enterprise Developers 64-Bit Edition<br />

MKS AlertCentre<br />

MKS Source Integrity Standard<br />

MKS Source Integrity Enterprise<br />

SEE ALSO<br />

Commands:<br />

cp, mv, rm<br />

404 of 457


NAME<br />

make<br />

make — maintain program-generated and interdependent files<br />

SYNOPSIS<br />

make [-EeiMnpqrstuVvx] [-k|-S] [-c dir] [-f file] [-D macro definition ...] [macro definition ...]<br />

[target ...]<br />

DESCRIPTION<br />

make is a <strong>com</strong>mand that helps you manage projects that contain a set of interdependent files.<br />

Typical examples would be a program with many source and object files, or a document that is built<br />

from source files, macro files, and so on. make keeps all the files up-to-date with one another: if<br />

one file changes, make updates all the other files that depend on the changed file.<br />

Note:<br />

Options<br />

-c dir<br />

This implementation of make features the .POSIX special target to provide maximum<br />

portability. When you specify this target, make processes the makefile as specified in the<br />

POSIX.2 standard. For details, see the description of .POSIX in the Special Target<br />

Directives section of this reference page.<br />

attempts to change to the specified directory upon startup. If make cannot change the<br />

directory, it displays an error message. This is useful for recursive makefiles when building<br />

in a different directory.<br />

-D macro definition<br />

defines macro on the <strong>com</strong>mand line before reading any makefile. Use the same form as a<br />

normal macro definition (macro=string). If you use this option, make assigns the value to the<br />

macro before reading the makefile; any definition of the same macro contained in the<br />

makefile supersedes this definition. Note that make uses any macros defined in this way<br />

before it reads any makefile, including the startup file. This allows you to define a startup file<br />

by providing a value for MAKESTARTUP on the <strong>com</strong>mand line:<br />

make -D MAKESTARTUP=$HOME/project/startup.mk<br />

405 of 457


-E<br />

-e<br />

-f file<br />

-i<br />

-k<br />

-M<br />

-n<br />

-p<br />

-q<br />

suppresses the reading of the environment <strong>com</strong>pletely.<br />

reads the environment after reading the makefile. If you do not specify -E or -e, make reads<br />

the environment before reading the makefile, except for the SHELL environment variable,<br />

which you must explicitly import. This option does not affect the value of MAKEFLAGS.<br />

uses file as the makefile, ignoring the makefiles specified as prerequisites to the<br />

.MAKEFILES special target. If you specify file as dash (-), make reads from standard input.<br />

ignores all errors and continues making other targets. This is equivalent to the .IGNORE<br />

attribute or macro.<br />

makes all independent targets, even if an error occurs. If you specify -k, make ignores the<br />

error and continue to make as much as possible. make does not attempt to update anything<br />

that depends on the target that was being made when the error occurred.<br />

does not copy macro definitions from the <strong>com</strong>mand line and the MAKEFLAGS environment<br />

variable to the MAKEFLAGS macro.<br />

displays the <strong>com</strong>mands that make would execute to update the chosen targets, but does not<br />

actually execute any recipe lines unless they have a plus sign (+) <strong>com</strong>mand prefix. make<br />

displays recipe lines with an at sign (@) <strong>com</strong>mand prefix on the standard output.<br />

With group recipes, make displays the <strong>com</strong>mands it uses to update a give target, but it also<br />

executes the <strong>com</strong>mands.<br />

If make finds the string $(MAKE) in a recipe line, it expands it, adds -n to the MAKEFLAGS,<br />

and then executes the recipe line. This allows you to see what recursive calls to make do.<br />

The output correctly shows line breaks in recipes that are divided into several lines of text<br />

using the \ sequence.<br />

displays the digested makefile, including macro and target definitions, in a human readable<br />

form useful for debugging. make itself cannot read this output as an input file.<br />

406 of 457


-r<br />

-S<br />

-s<br />

-t<br />

-u<br />

-V<br />

-v<br />

-x<br />

Targets<br />

checks whether the target is up-to-date. If it is, make exits with a status of 0; otherwise, it<br />

exits with a status of 1 (typically interpreted as an error by other software). make does not<br />

run <strong>com</strong>mands associated with the target unless they start with a plus sign (+) <strong>com</strong>mand<br />

prefix.<br />

does not read the default rules from the startup file.<br />

terminates make if an error occurs when bringing a target up-to-date (opposite of -k). This<br />

is the default.<br />

does not display recipe <strong>com</strong>mands, warning messages, or touch messages (see the -t<br />

option). This is equivalent to the .SILENT attribute or macro.<br />

touches the targets to mark them as up-to-date, but only execute <strong>com</strong>mands to change a<br />

target if the target has a plus sign (+) <strong>com</strong>mand prefix. make does not touch up-to-date<br />

targets or targets that have prerequisites but do not have recipes. make displays a message<br />

for each touched target file indicating the file name.<br />

forces an unconditional update: make behaves as if all the prerequisites of the given target<br />

are out-of-date.<br />

displays the version number of make and a list of built-in rules.<br />

displays a detailed account of make's progress, including files read, definition and<br />

redefinition of each macro, meta-rule and suffix rule searches, and other information.<br />

exports all macro definitions to the environment. This happens before make begins making<br />

targets (but after it reads the entire makefile).<br />

A target is normally a file that you want to ensure is up-to-date with the files that it is dependent on.<br />

For example, you may want to check to see if a is based on the most recent version of the<br />

corresponding source code and if not, re<strong>com</strong>pile the source code to get an up-to-date version. In<br />

this case, the <strong>com</strong>piled program file is the target and the corresponding source code files are<br />

407 of 457


prerequisites (that is, the files a target is dependent on).<br />

make updates all targets that are specified on the <strong>com</strong>mand line. If you do not specify any target,<br />

make updates the targets in the first rule of the makefile. A target is out-of-date if it is older than<br />

any of its prerequisites (based on modification times) or if it does not exist. To update a target,<br />

make first recursively ensures that all the target's prerequisites are up-to-date, processing them in<br />

the order they appear in the rule. If the target itself is out-of-date, make then executes the recipe<br />

associated with the target. If the target has no associated recipe, make considers it up-to-date.<br />

make also supports another form of targets, known as special targets, described in the following<br />

Special Target Directives section.<br />

Makefiles<br />

A makefile is a text file that describes the dependencies between various files. A makefile normally<br />

contains a list of targets and identifies the prerequisites each depends on. It also contains a series<br />

of instructions, called recipes that describe the actions to be taken if a given target is out-of-date<br />

with its prerequisites.<br />

By default, if you do not specify the -f option, make looks for a file in your current directory named<br />

makefile. If make does not find this file, and if your file system supports mixed case file names, it<br />

searches your current directory for a file named Makefile. If make finds either file, it uses this file<br />

as your makefile.<br />

You can change the default makefiles with the .MAKEFILES special target. This target is already<br />

specified in the startup.mk file. See the following Special Target Directives section for more<br />

information.<br />

Macro Definitions<br />

Macro definitions may take several forms.<br />

macro = string<br />

is the usual form. If string contains macro references, make does not expand them when the macro<br />

is defined, but when the macro is itself expanded.<br />

macro := string<br />

expands macros inside string before assigning the value to macro.<br />

macro += string<br />

408 of 457


appends string to the previous value of macro.<br />

You can use any amount of white space on both sides of macro operators. make defines the name<br />

macro to have the value string and replaces it with that value whenever it is used as $(macro or<br />

${macro} within the makefile. It is possible to specify a $(macro_name or ${macro_name}<br />

macro expansion where macro_name contains more $(...) or ${...} macro expansions itself.<br />

Normally, make does not include white space at the beginning and end of string in the definition of<br />

macro; however, it never strips white space from macros imported from the environment.<br />

If you want to include white space in a macro definition specified on the make <strong>com</strong>mand line, you<br />

must enclose the definition in quotes (" ").<br />

make defines macros in the following order:<br />

Note:<br />

1. Macro definitions in the built-in rules.<br />

2. Macro definitions on the <strong>com</strong>mand line associated with the -D option.<br />

3. Macro definitions in startup files.<br />

4. Contents of the environment.<br />

5. Macro definitions in the makefiles (in the order they appear).<br />

6. Macro definitions on the <strong>com</strong>mand line without the -D option.<br />

If you specify the -e option, make reads the makefiles before reading the contents of the<br />

environment. If you specify the -E option, make does not read the contents of the<br />

environment.<br />

If a macro is already defined when make encounters a new definition for it, the new definition<br />

replaces the old one. For example, a macro definition for name on the <strong>com</strong>mand line (without -D)<br />

overrides a definition for name in the makefile. You can use the -v option to display macro<br />

assignments, as make performs them.<br />

Macro Modifiers<br />

MKS Make supports macro expansions of the form:<br />

$(macro_name:modifier_list:modifier_list:...)<br />

Possible modifiers are:<br />

^"string"<br />

prefix tokens<br />

409 of 457


+"string" suffix tokens b file portion of all path names, without suffix d directory portion of all<br />

path names f file portion of all path names, including suffix l all characters mapped to<br />

lowercase s/pat/string/ simple pattern substitution; any character can be used to separate<br />

the pattern from the substitution text suffix=string suffix replacement t"separator"<br />

tokenization with given separator. u all characters mapped to uppercase<br />

You may specify macro modifiers in either uppercase or lowercase.<br />

For example, the following macro assignment<br />

test = D1/D2/d3/a.out f.out d1/k.out<br />

produces the following expansions:<br />

$(test:d) -> D1/D2/d3 . d1<br />

$(test:b) -> a f k<br />

$(test:f) -> a.out f.out k.out<br />

${test:DB} -> D1/D2/d3/a f d1/k<br />

${test:s/out/in/} -> D1/D2/d3/a.in f.in d1/k.in<br />

$(test:f:t"+") -> a.out+f.out+k.out<br />

$(test:t"+") -> D1/D2/d3/a.out+f.out+d1/k.out<br />

$(test:u) -> D1/D2/D3/A.OUT F.OUT D1/K.OUT<br />

$(test:l) -> d1/d2/d3/a.out f.out d1/k.out<br />

$(test:^"/rd/") -> /rd/D1/D2/d3/a.out /rd/f.out /rd/d1/k.out<br />

$(test:+".Z") -> D1/D2/d3/a.out.Z f.out.Z d1/k.out.Z<br />

Run-time Macros<br />

Run-time macros can take on different values for each target.<br />

$@<br />

When building a normal target, this macro evaluates to the full name of the target. When<br />

building a library, it expands to the name of the archive library. For example, if the target is<br />

mylib(member)<br />

$@ expands to<br />

$%<br />

mylib.<br />

When building a normal target, this macro evaluates to the full name of the target. When<br />

building a library, it expands to the name of the archive member. For example, if the target is<br />

410 of 457


mylib(member)<br />

$% expands to<br />

$><br />

$*<br />

$&<br />

$?<br />

$^<br />

$<<br />

member<br />

The name of the library if the current target is a library member.<br />

The target name with no suffix ($(%:db)) or the value of the stem in a meta-rule.<br />

The list of all prerequisites, in all rules that apply to the target. In :: rules, this macro<br />

produces a value identical to the $^ macro.<br />

The list of all prerequisites that are newer than the target or do not yet exist and need to be<br />

built. In rules using the :: rule operator, this macro expands to the same value as $


The construct may be modified:<br />

fred.obj : $$(@:b).c<br />

If you are building a library, $$% stands for the name of the archive member being made. If you are<br />

building a normal target, $$% stands for the name of the target currently being made.<br />

$$* stands for the name of the current target being made, but with no suffix.<br />

If you are building a library, $$> stands for the name of the archive library being made. If you are<br />

not building a library, its use is invalid.<br />

Comments<br />

Comments begin with the number sign (#) character and extend to the end-of-line. make discards<br />

all <strong>com</strong>ment text.<br />

Makefile Contents<br />

Inside makefiles, you can split long lines over several lines of text. To do this, put a backslash (\)<br />

at the very end of the line. You can use this technique to extend <strong>com</strong>ments as well as recipe lines<br />

and macro definitions for example.<br />

If a rule or macro definition must contain a # character, use \#; otherwise, make mistakes the # for<br />

the beginning of a <strong>com</strong>ment. Also, if a macro definition must contain a single $ character, use $$.<br />

File names that contain a colon (:) must always be enclosed in quotes (" "):<br />

"a:target" : "a:prereq"<br />

Rules<br />

The general format of a rule is<br />

targets [attributes] ruleop [prerequisites] [;recipe]<br />

{ recipe}<br />

The parts of the rule are described as follows.<br />

targets<br />

one or more target names.<br />

attributes<br />

412 of 457


a list, possibly empty, of attributes to apply to the list of targets.<br />

ruleop<br />

an operator token, usually :, that separates the target names from the prerequisite names<br />

and may also affect the processing of the specified targets.<br />

prerequisites<br />

a list of zero or more names the specified targets depend on.<br />

recipe<br />

<strong>com</strong>mand to execute to update targets. It may follow on the same line as the prerequisites,<br />

separated from them by a semicolon (;). If such a recipe is present, make takes it as the<br />

first in the list of recipe lines defining how to make the named targets. Additional recipe lines<br />

may follow the first line of the rule. Each subsequent recipe line must begin with a tab<br />

character.<br />

The possible rule operators are described here:<br />

targets : prereqs<br />

simple rule definition. For explicit targets, at most one simple rule may have a recipe, in<br />

contrast with the :: rule operator, whose description follows.<br />

targets :! prereqs<br />

executes the recipe for the associated targets once for each out-of-date prerequisite. In<br />

simple rules, the recipe is executed only once, for all out-of-date prerequisites at the same<br />

time. The $< macro expands to the current prerequisite if it appears in rules with this rule<br />

operator.<br />

targets :^ prereqs<br />

inserts the specified prerequisites before any other prerequisites already associated with the<br />

specified targets.<br />

targets :- prereqs<br />

clears the previous list of prerequisites before adding the new prerequisites.<br />

targets :: prereqs<br />

is used for multiple rules applying to the same target. Each rule can specify a different set of<br />

prerequisites with a different recipe for updating the target. Each rule is treated<br />

independently; the target is remade for each rule with out-of-date prerequisites, using the<br />

corresponding recipe.<br />

targets :| prereqs<br />

can only be used in meta-rules. It tells make to treat each meta-dependency as an<br />

413 of 457


independent meta-rule. For example:<br />

%$O :| archive/%.c rcs/%.c /srcarc/RCS/%.c<br />

recipe...<br />

is equivalent to<br />

%$O : archive/%.c<br />

recipe...<br />

%$O : rcs/%.c<br />

recipe...<br />

%$O : /srcarc/rcs/%.c<br />

recipe...<br />

This operator is particularly useful for searching for MKS Source Integrity archives. If the<br />

RCSPATH variable used by MKS Source Integrity is defined as<br />

archive/%f;rcs/%f;/srcarc/rcs/%f<br />

then the meta-rule<br />

% :| $(RCSPATH:s/%f/%/:s/;/ /)<br />

co -l $<<br />

searches the path looking for an RCS file and checks it out.<br />

Circular Dependencies<br />

There are two types of circular dependencies: within-rule and between-rule. A within-rule circular<br />

dependency occurs when the target's name is included in the list of prerequisites for that target.<br />

For example,<br />

c.o : a.o b.o c.o<br />

is a within-rule circular dependency. make detects a within-rule circular dependency when it is<br />

parsing the makefile to build the dependency tree.<br />

A between-rule circular dependency occurs when you have two targets, each of which includes the<br />

other's name in its prerequisite list. For example,<br />

a.o : b:o<br />

b:o : a.o<br />

414 of 457


is a between-rules circular dependency. make detects a between-rule circular dependency when it<br />

is processing the dependency tree built during the parse phase.<br />

Normally make only detects circular dependencies for those targets actually being built. When a<br />

circular dependency is encountered, make issues a warning message, removes the offending<br />

prerequisite from the list, and continues parsing the makefile. The .CYCLECHECK special target<br />

can be used to alter make's treatment of circular dependencies. For details, see the Special Target<br />

Directives section of this reference page.<br />

Recipes<br />

You can use a target that has prerequisites but no recipes to add the given prerequisites to that<br />

target's list of prerequisites.<br />

You may preface any recipe line with a <strong>com</strong>mand prefix immediately following the character<br />

(-, @, + or all three). - indicates that make is to ignore non-zero exit values when it executes this<br />

recipe line. @ indicates that make is not to display the recipe line before executing it. + tells make to<br />

always execute this line, even when -n, -q, or -t is specified.<br />

Group recipes begin with [ in the first non-white space position of a line, and end with ] in the first<br />

non-white space position of a line. Recipe lines in a group recipe need not have a leading tab.<br />

make executes a group recipe by feeding it as a single unit to a shell. If you immediately follow the<br />

[ at the beginning of a group recipe with one of -, @ or +, they apply to the entire group in the<br />

same way that they apply to single recipe lines.<br />

Inference Rules<br />

With inference rules, you can specify general rules for building files rather than creating a specific<br />

rule for each target.<br />

MKS Make provides two forms of inference rules: suffix rules and meta-rules. MKS Make includes<br />

suffix rules to ensure <strong>com</strong>patibility with older makefiles. Meta-rules, however, provide a more<br />

general mechanism for specifying make's default behavior. They provide a superset of the<br />

functionality of suffix rules. make searches all meta-rules before using suffix rules.<br />

make uses the inference rules to infer how it can bring a target up to date. A list of inference rules<br />

defines the <strong>com</strong>mands to be executed. The default startup.mk contains a set of inference rules<br />

for the most <strong>com</strong>mon targets. You can specify additional rules in the makefile.<br />

When make finds no explicit target rule to update a target, it checks the inference rules. If make<br />

finds an applicable inference rule with an out-of-date prerequisite, it executes that rule's recipe.<br />

(See also the section describing the .DEFAULT special target).<br />

Meta-rules<br />

415 of 457


Meta-rules have one target with a single percent symbol % that matches an arbitrary string called<br />

the stem. The % in a dependency stands for the stem.<br />

The inference rule to update a target matching pattern p1%s1, where p1 and s1 are prefix and<br />

suffix strings of the target, having a prerequisite p2%s2, where % is the stem from the target, is<br />

specified as follows:<br />

p1%s1 : p2%s2 ; recipe...<br />

Either the prefix or suffix string may be empty.<br />

Transitive Closure<br />

Meta-rules provide a mechanism that allows several meta-rules to chain together to eventually infer<br />

all the needed prerequisites to create the target.<br />

This is called transitive closure. For example, suppose you have the following two meta-rules<br />

%$O : %.c<br />

... rule body...<br />

%.c : %.y<br />

... rule body ...<br />

When you specify<br />

make file.obj<br />

make uses the first meta-rule to look for file.c. If it cannot find an explicit rule to build file.c, it<br />

again looks through the meta-rules for a rule to build %.c. It finds such a rule in<br />

%.c : %.y<br />

Thus, make can rebuild file.obj from file.y.<br />

make considers each meta-rule only once when performing transitive closure to avoid a situation<br />

where it loops forever. For example, if you have the rule<br />

% : %.c<br />

the <strong>com</strong>mand<br />

... rule body ...<br />

416 of 457


make file<br />

causes make to look for file.c. If the meta-rules were not restricted and file.c did not exist,<br />

then make would look for file.c.c, and then file.c.c.c, and so on. Because make uses each<br />

meta-rule only once, this cannot happen.<br />

make <strong>com</strong>putes transitive closure once for each meta-rule head the first time the pattern matches a<br />

target. When transitive closure is <strong>com</strong>puted, make adds all the <strong>com</strong>puted rules to the rule set for<br />

that meta-rule head. For example, if you have the rules<br />

%$E : %$O<br />

recipe 1...<br />

%$O : %c<br />

recipe 2...<br />

and you are making file.exe, this target matches successfully against %$E causing make to<br />

<strong>com</strong>pute transitive closure for %$E. As a result of this <strong>com</strong>putation, a new rule is created:<br />

%$E : %.c<br />

recipe 2...<br />

recipe 1...<br />

.REMOVE target recipe for %$O, if not .PRECIOUS<br />

make executes this rule if file$O.obj does not exist. When make finishes the <strong>com</strong>putation for the<br />

rule head, it marks the rule head as transitive closure <strong>com</strong>puted. Since make adds all possible new<br />

rules to the rule set the first time the <strong>com</strong>putation is done, it is not necessary to do it again --<br />

nothing new is added.<br />

The best way to understand how this works is to experiment with little make files with the -v option<br />

specified. This shows you in detail what rules are being searched, when transitive closure is<br />

calculated and what rules are added.<br />

Order of Rule Generation<br />

Since transitive closure allows make to generate new rules, it is important to understand the order<br />

this is done in:<br />

1. make searches for explicit rules in the order they appear, so explicit rules always take<br />

precedence.<br />

2. make reads meta-rules in the order they appear in the makefile. The first rule that appears in<br />

the makefile is the first one checked.<br />

3. New explicit meta-rules (as distinct from meta-rules generated by transitive closure) replace<br />

old ones. In other words, if your makefile contains an explicit rule like this one, it replaces<br />

417 of 457


the default rule in startup.mk:<br />

%$O : %.c<br />

rule1<br />

If you use the -v option, make prints a warning when it replaces a meta-rule.<br />

4. When transitive closure is calculated, the new meta-rules generated are added to the end of<br />

the list of possible meta-rules. Thus, make always finds the explicit rules first, so they take<br />

precedence over generated rules. You can use the -v option to see what rules make<br />

generates and the order they appear in.<br />

5. make performs two passes through the rules. On the first pass it attempts to find a match<br />

with an explicit rule in the makefile; if this does not succeed, make performs a second pass<br />

to find a match with an existing file.<br />

Suffix Rules<br />

make treats targets that begin with a period and contain no slashes or percent signs as suffix rules.<br />

If there is only one period in the target, it is a single-suffix inference rule. Targets with two periods<br />

are double-suffix inference rules. Suffix rules do not have prerequisites but do have <strong>com</strong>mands<br />

associated with them.<br />

When make finds no explicit rule to update a target, it checks the suffix of that target (.s1) against<br />

the suffix rules. make examines a prerequisite based on the base name of the target with the<br />

second suffix (.s2) appended, and if the target is out-of-date with respect to this prerequisite, make<br />

executes the recipe for that inference rule.<br />

If the target to be built does not contain a suffix and there is no rule for the target, make checks the<br />

single suffix inference rules. The single suffix inference rules define how to build a target 'br 'ne 5v<br />

if make finds a rule with one of the single suffixes appended. A rule with one suffix .s2 defines how<br />

to build target from target.s2.<br />

Any suffixes used in a suffix rule must appear as a prerequisite of the special target .SUFFIXES.<br />

The order that the suffixes appear in the .SUFFIXES rule determines the order make checks the<br />

suffix rules in. New suffixes and suffix rules are added to the existing list. To turn off the suffix<br />

rules, place<br />

.SUFFIXES:<br />

in your makefile. This clears the prerequisites of the .SUFFIXES target and prevents the enaction<br />

of any suffix rules.<br />

The search algorithm used for suffix rules depends on whether or not the .POSIX special target is<br />

418 of 457


specified. When .POSIX is specified, the following steps describe the search algorithm for suffix<br />

rules:<br />

1. Extract the suffix from the target. If that target has no suffix, go to step 6.<br />

2. Is it in the .SUFFIXES list? If not, then quit the search.<br />

3. If it is in the .SUFFIXES list, look for a double suffix rule that matches the target suffix.<br />

4. If you find one, then extract the base name of the file, add on the second suffix and see if<br />

the resulting file exists. If it does not, then keep searching the double suffix rules. If it does<br />

exist, then use the recipe for this rule.<br />

5. If no successful match is made, then the inference has failed.<br />

6. If the target did not have a suffix, then check the single suffix rules in the order that the<br />

suffixes are specified in the .SUFFIXES target.<br />

7. For each single suffix rule, add the suffix to the target name and see if the resulting file<br />

name exists.<br />

8. If the file exists, then execute the recipe associated with that suffix rule. If the file does not<br />

exist, continue trying the rest of the single suffix rules.<br />

9. If no successful match is made, then the inference has failed.<br />

When the .POSIX special target is not specified, make handles suffix rules in the same manner as<br />

traditional implementations of make. The following steps describe the search algorithm for suffix<br />

rules in this situation.<br />

1. Extract the suffix from the target. If that target has no suffix, go to step 8.<br />

2. Is it in the .SUFFIXES list? If not, then quit the search.<br />

3. If it is in the .SUFFIXES list, look for a double suffix rule that matches the target suffix.<br />

4. If you find one, then extract the base name of the file, add on the second suffix and see if<br />

the resulting file exists. If it does, go to step 7. If not, continue with step 5.<br />

5. Is there an inference rule for the resulting file? If yes, execute the recipe associated with that<br />

rule (that should describe how to make the file exist) and go to step 7.<br />

6. Search for the next double suffix rule that matches the target suffix and return to step 4. If<br />

the double suffix rules are exhausted then the inference has failed.<br />

7. Use the recipe for the target rule.<br />

8. If the target did not have a suffix, then check the single suffix rules in the order that the<br />

suffixes are specified in the .SUFFIXES target.<br />

9. For each single suffix rule, add the suffix to the target name and see if the resulting file<br />

name exists.<br />

10. If the file exists, then execute the recipe associated with that suffix rule. If the file does not<br />

exist, continue trying the rest of the single suffix rules.<br />

11. If no successful match is made, then the inference has failed.<br />

MKS Make also provides a special feature in the suffix rule mechanism for archive library handling,<br />

useful mainly for <strong>com</strong>patibility with System V Make. If you specify a suffix rule of the form<br />

.suf.a:<br />

419 of 457


ecipe<br />

the rule matches any target specified as a library member, regardless of what the actual library<br />

suffix is. For example, suppose your makefile contains the following rules:<br />

.SUFFIXES: .a .obj<br />

.obj.a:<br />

echo adding $< to library $@<br />

If mem.obj exists, then the following <strong>com</strong>mand<br />

make -r "mylib(mem)"<br />

causes make to print this message:<br />

adding mem.obj to library mylib<br />

Refer to Making Libraries in the User's Guide for more information about libraries.<br />

Attributes<br />

make defines several target attributes. Attributes may be assigned to a single target, a group of<br />

targets, or to all targets in the makefile. Attributes affect what make does when it needs to update a<br />

target. You can associate attributes with targets by specifying a rule of the following form:<br />

attribute_list : target ...<br />

This assigns the attributes in attribute_list to the given targets. If you do not specify any targets, the<br />

attributes apply to every target in the makefile. You can also put attributes inside a normal rule, as<br />

in:<br />

targets attribute_list : prerequisite ...<br />

These are the recognized attributes:<br />

.EPILOG<br />

Insert shell epilog code when executing a group recipe associated with any target having<br />

this attribute set.<br />

.IGNORE<br />

Ignore an error when trying to make any target with this attribute set.<br />

420 of 457


.LIBRARY<br />

Target is a library.<br />

.PRECIOUS<br />

Do not remove this target under any circumstances. Any automatically inferred prerequisite<br />

inherits this attribute.<br />

.PROLOG<br />

Insert shell prolog code when executing a group recipe associated with any target having<br />

this attribute set.<br />

.SETDIR<br />

Change current working directory to specified directory when making associated targets.<br />

The syntax of this attribute is .SETDIR=path, where path is the path name of desired<br />

working directory. If path contains any colon (:) characters, the entire attribute string must<br />

be quoted, not just the path name.<br />

.SILENT<br />

Do not echo the recipe lines when making any target with this attribute set, and do not issue<br />

any warnings.<br />

You can use any attribute with any target, including special targets.<br />

Special Target Directives<br />

Special Target Directives are called targets because they appear in the target position of rules;<br />

however, they are really keywords, not targets. The rules they appear in are directives that control<br />

the behavior of make.<br />

The special target must be the only target in a special rule--you cannot list other normal or special<br />

targets.<br />

Some special targets are affected by some attributes. Any special target can be given any<br />

attribute, but often the <strong>com</strong>bination is meaningless and the attribute has no effect.<br />

.BRACEEXPAND<br />

This target may have no prerequisites and no recipe associated with it. If set, the target<br />

enables the outdated brace expansion feature used in older versions of MKS Make. (This<br />

target is ignored if the .POSIX special target is set.) Older versions of make use brace<br />

expansion to expand a token list of this form:<br />

string1{token_list}string2<br />

421 of 457


make adds string1 to the front, and string2 to the end, of each token in the token_list. To include<br />

brace brackets while this target is set, use {{ and }}; you cannot include literal brace brackets in<br />

the token list. You can achieve the same kind of brace expansion in modern versions of make by<br />

using macro expansion with prefix and suffix modifiers:<br />

$(TOKEN_BASE:^"prefix":+"suffix")<br />

Note that the double quotes are required. Future versions of MKS Make may dispense with brace<br />

expansion <strong>com</strong>pletely.<br />

.CYCLECHECK<br />

This special target may have no prerequisites and no recipe associated with it. If set, it<br />

determines how make treats circular dependencies (for more information, see the Circular<br />

Dependencies section of this reference page). You can specify one of five attributes with<br />

this target. If you specify more than one attribute, an error message results. The five<br />

attributes are:<br />

.SILENT<br />

make remains silent about any within-rule and between-rule circular dependencies, removes<br />

the offending dependency from the list of prerequisites, and continues.<br />

.WARNTARG<br />

make issues warnings for named targets with circular dependencies. If the name of the<br />

dependency is the same as the named target, it is removed from the list of prerequisites and<br />

make continues. This is the default behavior if .CYCLECHECK is not specified or is specified<br />

with no attributes.<br />

.WARNALL<br />

make issues warnings for all within-rule circular dependencies regardless of whether the<br />

target is being built or not and for all between-rule circular dependencies for the named<br />

targets. The offending dependency is removed from the list of prerequisites and make<br />

continues.<br />

.FATALTARG<br />

make treats all circular dependencies for named targets as fatal errors. It issues an error<br />

message and exits.<br />

.FATALALL<br />

make treats all within-rule circular dependencies as fatal errors whether the target is being<br />

built or not. It also treats all between-rule circular dependencies for named targets as fatal<br />

errors. make issues an error message and exits.<br />

For example, to set the circular dependency check to make's default, use the rule:<br />

422 of 457


.CYCLECHECK .WARNTARG:<br />

.DEFAULT<br />

This target has no prerequisites, but it does have a recipe. If make can apply no other rule to<br />

produce a target, it uses this rule if it has been defined.<br />

.ERROR<br />

make executes the recipe associated with this target whenever it detects an error condition.<br />

.EXPORT<br />

All prerequisites associated with this target that correspond to macro names are exported to<br />

the environment at the point in the makefile where this target appears. If you do not specify<br />

any prerequisites for this target, all macros are exported.<br />

.GROUPEPILOG<br />

make adds the recipe associated with this target after any group recipe for a target that has<br />

the .EPILOG attribute.<br />

.GROUPPROLOG<br />

make adds the recipe associated with this target before any group recipe for a target that<br />

has the .PROLOG attribute.<br />

.IMPORT<br />

make searches in the environment for prerequisite names specified for this target and<br />

defines them as macros with their value taken from the environment. If the prerequisite<br />

.EVERYTHING is given, make reads in the entire environment (also, see the -e and -E<br />

options).<br />

.INCLUDE<br />

make reads one or more additional makefiles (specified in the prerequisite list), as if their<br />

contents had been inserted at this point. If the prerequisite list contains more than one file,<br />

make reads them in order from left to right.<br />

make uses the following rules to search for extra makefiles:<br />

● If a relative file name is enclosed in quotes, or is not enclosed with angle brackets (<<br />

and >), make looks in the current directory. If the file is not present, make then looks<br />

for it in each directory specified by the .INCLUDEDIRS special target.<br />

● If a relative name is enclosed with angle brackets (< and >), make only searches in<br />

the directories specified by the .INCLUDEDIRS special target.<br />

● If an absolute path name is given, make looks for that file, and ignores the list<br />

associated with the .INCLUDEDIRS special target.<br />

423 of 457


.INCLUDEDIRS<br />

The list of prerequisites specified for this target defines the set of directories to search when<br />

including a makefile.<br />

.MAKEFILES<br />

The list of prerequisites is the set of files to try to read as the user makefile. These files are<br />

made in the order they are specified (from left to right) until one is found to be up to date.<br />

This is the file that is used.<br />

.NOAUTODEPEND<br />

Disable the autodependency feature when building libraries. When this special target is<br />

used, only library members that have been explicitly given as dependents are considered<br />

prerequisites.<br />

.POSIX<br />

Process the makefile as specified in the POSIX.2 draft standard. This special target must<br />

appear before the first non-<strong>com</strong>ment line in the makefile, and may have no prerequisite list,<br />

or recipe, associated with it. The target does the following:<br />

● causes make to use the shell when executing all recipe lines; make invokes one shell<br />

per line, regardless of the setting of SHELLMETAS.<br />

● disables brace expansion (the .BRACEEXPAND special target is ignored).<br />

● disables meta-rule inferencing.<br />

● disables conditionals.<br />

● disables dynamic prerequisites generation for libraries.<br />

● disables group recipes.<br />

● disables library autodependency.<br />

● make does not check for the string $(MAKE) when run with the -n options specified.<br />

● make always prints a message if no work is done.<br />

● When attempting to do suffix rule inference, the inference succeeds only if the<br />

inference prerequisite file exists.<br />

.REMOVE<br />

make uses the recipe of this target to remove any intermediate files that it creates if an error<br />

is encountered before creating the final target. This .REMOVE target only deletes a file that<br />

satisfies all of the following criteria:<br />

● the file did not exist when make began running<br />

● the file is named as an intermediate target, produced by invoking a meta-rule that<br />

was produced by transitive closure<br />

● the file is not explicitly named in the makefile<br />

● the generated target does not have the .PRECIOUS attribute<br />

● the file is a prerequisite of a rule that is actually used<br />

.SOURCE<br />

The prerequisite list of this target defines a set of directories to check when trying to locate a<br />

424 of 457


target file name.<br />

.SOURCE.x<br />

Same as .SOURCE, except that make searches the .SOURCE.x list first when trying to<br />

locate a file matching a target with a name that ends in the suffix .x.<br />

.SUFFIXES<br />

make appends the prerequisite list of this target to the set of suffixes used when trying to<br />

infer a prerequisite for making a target using suffix rules. If you specify no prerequisites,<br />

make clears the list of suffixes, effectively disabling suffix rules from that point on.<br />

Control Macros<br />

make defines a number of control macros that, like special target directives and attributes, alter its<br />

behavior. A control macro that has the same function as a special target or attribute also has the<br />

same name.<br />

Macros that are said to be defined internally are automatically created by make and you can use<br />

them with the usual $(name construct. For example, you can use $(PWD) to obtain the current<br />

directory name.<br />

Recognized control macros are:<br />

DIRSEPSTR<br />

Contains the characters used to separate parts in a path name and can be set by the user.<br />

make uses the first character in this string to build path names when necessary.<br />

Note:<br />

The DIRSEPSTR macro must be set in your environment before running make, so that<br />

the MAKEDIR macro is aware of its value. This is necessary because MAKEDIR is set<br />

before the makefile or <strong>com</strong>mand-line flags are looked at.<br />

.EPILOG<br />

If assigned a non-empty value, the .EPILOG attribute is given to every target.<br />

GROUPFLAGS<br />

Specifies options to pass to GROUPSHELL when make invokes it to execute a group recipe.<br />

GROUPSHELL<br />

Gives the path name of the <strong>com</strong>mand interpreter (shell) that make calls to process group<br />

recipes.<br />

GROUPSUFFIX<br />

425 of 457


Specifies a string for make to use as a suffix when creating group recipe files to be handed<br />

to the <strong>com</strong>mand interpreter. This must be .bat (for <strong>com</strong>mand.<strong>com</strong>) or .cmd (for cmd.exe).<br />

.IGNORE<br />

If this is assigned a non-null value, make assigns the .IGNORE attribute to every target.<br />

INCDEPTH<br />

The current depth of makefile inclusion. This is set internally.<br />

MAKE<br />

This is set by the startup file and may be changed by the user. The standard startup file<br />

defines it as<br />

$(MAKECMD) $(MFLAGS)<br />

The MAKE macro is not used by make itself, but the string $(MAKE) is recognized when using the<br />

-n option for single line recipes.<br />

MAKECMD<br />

The name that make was invoked with.<br />

MAKEDIR<br />

Full path name of the initial directory where make began execution.<br />

MAKEFLAGS<br />

The MAKEFLAGS macro contains all the options and macros specified in the MAKEFLAGS<br />

environment variable plus all the options specified on the <strong>com</strong>mand line, with the following<br />

exceptions:<br />

● The options -c, -D, -f, and -p are silently ignored if they are found in the<br />

MAKEFLAGS environment variable.<br />

● Any of options -c, -D, -f, -p, -v, or -V, when specified on the <strong>com</strong>mand line, are<br />

not added to the MAKEFLAGS macro.<br />

● When the -M option is specified, macro definitions from the MAKEFLAGS<br />

environment variable are not added to the MAKEFLAGS macro.<br />

added<br />

Options in the MAKEFLAGS environment variable may have leading minus signs and can<br />

be separated by spaces. These are stripped out when the MAKEFLAGS macro is<br />

constructed.<br />

Note:<br />

make always reads the MAKEFLAGS environment variable before reading the<br />

makefile. The -E and -e options do not affect this.<br />

426 of 457


MAKESTARTUP<br />

Has the default value ROOTDIR/etc/startup.mk on Windows systems. (On UNIX and<br />

POSIX systems, the $ROOTDIR is omitted.) To change this value, you can set the<br />

MAKESTARTUP environment variable before running make. You can also specify a value<br />

for this control macro on the <strong>com</strong>mand line, if you use the -D option:<br />

make -DMAKESTARTUP=$HOME/project/startup.mk<br />

MFLAGS<br />

Same as MAKEFLAGS, except that it includes the leading switch character.<br />

NULL<br />

OS<br />

Permanently defined to be the empty string.<br />

Name of the operating system that this version of make is <strong>com</strong>piled for.<br />

NT on Windows NT/2000/XP/2003<br />

unix on UNIX systems<br />

POSIX on POSIX systems<br />

.PRECIOUS<br />

If this is assigned a non-empty value, make assigns the .PRECIOUS attribute to every<br />

target.<br />

.PROLOG<br />

If this is assigned a non-empty value, make assigns the .PROLOG attribute to every target.<br />

PWD<br />

Full path name of the current directory where make is executing.<br />

SHELL<br />

Specifies the full path name of the <strong>com</strong>mand interpreter that make calls to process single<br />

line recipes if they contain one or more of the characters given in SHELLMETAS. Otherwise,<br />

make executes these <strong>com</strong>mands directly. By default, the value of the SHELL environment<br />

variable does not affect the value of this macro; however, you can use the .IMPORT special<br />

target to assign the environment variable's value to this macro. You can also use the<br />

EXPORT special target to assign this macro's value to the SHELL environment variable.<br />

SHELLFLAGS<br />

Specifies options to pass to the shell when invoking it to execute a single line recipe.<br />

427 of 457


SHELLMETAS<br />

Specifies a list of metacharacters that can appear in single recipe lines. If make finds any<br />

metacharacter, it invokes the recipe using the shell specified by SHELL; otherwise, it<br />

executes the recipe without the shell.<br />

.SILENT<br />

If this is assigned a non-empty value, make assigns the .SILENT attribute to every target.<br />

SWITCHAR<br />

The character currently being used to mark options in <strong>com</strong>mand lines.<br />

Making Libraries<br />

A library is a file containing a collection of object files. To make a library, you specify it as a target<br />

with the .LIBRARY attribute and list its prerequisites. The prerequisites should be the object<br />

members that are to go into the library. When make makes the library target, it looks for the<br />

prerequisites in the library if it cannot find an appropriate object file.<br />

When make finds lib(member), it declares the lib portion as a target with the .LIBRARY attribute<br />

and automatically declares the member portion as a prerequisite of the lib target. When make finds<br />

lib((entry)), it declares the lib portion as a target with the .LIBRARY attribute and automatically<br />

declares the module defining entry as lib's associated prerequisite.<br />

This autodependency can be turned off by the .NOAUTODEPEND special target. Since<br />

autodependency is not POSIX <strong>com</strong>patible, it is also disabled by the .POSIX special target.<br />

Conditionals<br />

Conditional expressions use the following form:<br />

.IF expression<br />

... if text ...<br />

{.ELSIF expression2<br />

... elsif text ...}<br />

[.ELSE<br />

... else text ...]<br />

.END<br />

You can nest the conditionals (that is, the text may contain another conditional). The .IF, .ELSE,<br />

.ELSIF, and .END must start in the first column of the line. expression or expression 2 can have<br />

one of three forms:<br />

string<br />

428 of 457


is true if the given string is non-empty,<br />

string == string<br />

is true if the two strings are equal, and<br />

string != string<br />

is true if the two strings are not equal.<br />

Typically, one or both strings contain macros that make expands before <strong>com</strong>paring. make also<br />

discards white space at the start and end of the text portion before the <strong>com</strong>parison. This means<br />

that a macro that expands to nothing but white space is considered an empty value for the purpose<br />

of the <strong>com</strong>parison. If a macro expression needs to be <strong>com</strong>pared to an empty string, <strong>com</strong>pare it to<br />

the value of the macro NULL for readability.<br />

The text enclosed in the conditional construct must have the same format that it would have<br />

outside the conditional. In particular, make assumes that anything that starts with a tab inside the<br />

conditional is a recipe line. This means that you cannot use tabs to indent text inside the<br />

conditional (except, of course, for recipe lines that always begin with tabs).<br />

Functions<br />

make supports the following function:<br />

$(shell shell_cmd)<br />

performs the same function that backquotes (`shell_cmd`) do in most shells. That is, it<br />

performs <strong>com</strong>mand substitution, returning the output of the specified shell <strong>com</strong>mand,<br />

shell_cmd and subsituting it into the surrounding text, after first replacing each newline or<br />

carrige-return/newline pair with a single space and removing any trailing newline or carriagereturn/newline<br />

pair.<br />

The <strong>com</strong>mand specified with the shell function is run when the the function call is<br />

expanded. Because this function involves spawning a new shell, you should carefully<br />

consider the performance implications of using the shell function within recursively<br />

expanded variables as opposed to simply expanded variables.<br />

Software Configuration Management Integration<br />

make provides integration with a variety of Software Configuration Management (SCM)<br />

applications.<br />

The SCM environment variable determines not only if SCM integration is enabled, but also which<br />

429 of 457


SCM application is to be used. The following are the valid values for SCM:<br />

CC Rational Clearcase<br />

CVS CVS (Concurrent Versions System)<br />

RCS RCS (Revision Control System)<br />

SIE Source Integrity Enterprise<br />

SS Microsoft SourceSafe<br />

If SCM is unset or set to a value other than those listed, no SCM integration is used.<br />

make uses the $ROOTDIR/etc/makescm.ksh script and the built-in rules in<br />

$ROOTDIR/etc/startup.mk to determine if a possible prerequisite file name is a versioned<br />

object in the current SCM repository. When SCM integration is enabled, make checks out and uses<br />

the most recent version of each prerequisite file on the appropriate branch in the current SCM<br />

repository. However, if a writable version of the prerequisite file exists in the working directory, a<br />

newer version is not checked out. To help the SCM application determine the most recent version<br />

of versioned files, the UPDFLAGS variable in $ROOTDIR/etc/startup.mk can be set to a string<br />

of options to be used with the SCM application's <strong>com</strong>mand for retrieving file versions.<br />

ENVIRONMENT VARIABLES<br />

COFLAGS<br />

specifies the options to be used with the RCS co <strong>com</strong>mand when RCS integration is<br />

enabled with the HAVERCS environment variable. This variable is supported primarily for<br />

backwards <strong>com</strong>patibility with earlier versions of make. You should use the SCM and<br />

UPDFLAGS environment variables as described in the Software Configuration Management<br />

Integration section.<br />

HAVERCS<br />

when set to yes, enables RCS integration. This variable is supported primarily for<br />

backwards <strong>com</strong>patibility with earlier versions of make. You should use the SCM and<br />

UPDFLAGS environment variables as described in the Software Configuration Management<br />

Integration section.<br />

Note:<br />

You should not have both the HAVERCS variable set to yes and the SCM variable<br />

set to a valid value as this may lead to unexpected results.<br />

MAKEFLAGS<br />

contains a series of make options that are used as the default options for any make<br />

<strong>com</strong>mand. You may specify the options with or without leading minus signs (-) and blanks<br />

430 of 457


etween them. It may also include macro definitions of the form usually found on the<br />

<strong>com</strong>mand line.<br />

MAKESTARTUP<br />

contains the path name of the make startup file. By default, make uses the file<br />

ROOTDIR/etc/startup.mk as its startup file. To use a different file, set this environment<br />

variable before running make.<br />

SCM<br />

when set to an appropriate value, enables Software Configuration Management Integration<br />

and specifies which SCM application to use. For details on SCM integration and appropriate<br />

values for this environment variable, see the Software Configuration Management<br />

Integration section.<br />

Note:<br />

You should not have both the HAVERCS variable set to yes and the SCM variable<br />

set to a valid value as this may lead to unexpected results.<br />

SHELL<br />

contains the name of a <strong>com</strong>mand interpreter. To assign this value to the control macro<br />

SHELL, use the .IMPORT special target. You can also use the .EXPORT special target to<br />

assign the value of the SHELL macro to this environment variable for <strong>com</strong>mands run from<br />

recipes.<br />

UPDFLAGS<br />

when SCM integration is enabled, helps the SCM application specified by the SCM<br />

environment variable determine the most version of a version of version files. This variable<br />

is set in $ROOTDIR/etc/startup.mk and contains a string of options to be used with the<br />

SCM application's <strong>com</strong>mand for retrieving file versions. For details on SCM integration, see<br />

the Software Configuration Management Integration section.<br />

make automatically imports all other environment variables, unless you specify the -E option.<br />

FILES<br />

ROOTDIR/etc/makescm.ksh<br />

is used in conjunction with the built-in rules in ROOTDIR/etc/startup.mks to implement<br />

SCM integration. See the Software Configuration Management Integration for details.<br />

ROOTDIR/etc/startup.mk<br />

default startup file containing default rules.<br />

431 of 457


DIAGNOSTICS<br />

If a <strong>com</strong>mand in a recipe line fails (exits with a non-zero status), Make returns the exit status of the<br />

failed <strong>com</strong>mand. Since most <strong>com</strong>mands use exit statuses between 0 and 10, Make uses exit<br />

status values below 10 only for failures that do not run recipe lines.<br />

Possible exit status values for Make are:<br />

0<br />

1<br />

2<br />

126<br />

127<br />

128<br />

Successful <strong>com</strong>pletion.<br />

Returned if you specified -q and file is not up to date.<br />

Failure due to any of the following:<br />

— unknown <strong>com</strong>mand-line option<br />

— missing argument to option, such as no file name for -f<br />

Recipe <strong>com</strong>mand not executable.<br />

Recipe <strong>com</strong>mand not found.<br />

Make called a program that crashed.<br />

129-254<br />

Make, or a program that Make called, was interrupted by a signal; the error code is the<br />

signal number OR'ed with 128. For example, SIGINT ( CTRL-C) is frequently signal 1: the<br />

return code from Make is 128|1, or 129.<br />

255<br />

Failure because of any of the following:<br />

— Macro cannot be redefined<br />

— Macro variables must be assigned with :=<br />

— Special target cannot be a prerequisite<br />

— Too many makefiles specified<br />

— Configuration file not found<br />

— No makefile present<br />

432 of 457


— Missing .END for .IF<br />

— No target<br />

— Unable to return to directory<br />

— Too many open files<br />

— Open failed<br />

— File not found<br />

— Unable to change directory<br />

— No more memory<br />

— Line too long<br />

— Detected circular macro definition<br />

— Unterminated pattern string<br />

— Unterminated replacement string<br />

— Token separator string must be quoted<br />

— Unterminated separator string<br />

— Expansion too long<br />

— Suffix too long<br />

— Unmatched quote<br />

— .IF nesting too deep<br />

— .ELSE without .IF<br />

— Unmatched .END<br />

— Inference rules result in circular dependency<br />

— No macro name specified<br />

— Write error on temp file<br />

— Target not found, and cannot be made<br />

— Do not know how to make <br />


PORTABILITY<br />

— Include file NAME, not found<br />

— NAME ignored on special target<br />

— Attributes possibly ignored<br />

— Cannot find member defining symbol ((NAME)<br />

— Invalid library format<br />

— Cannot touch library member<br />

— SHELL macro not defined<br />

— Too many arguments<br />

— Could not export NAME<br />

— Cannot open file<br />

— Detected circular dependency<br />

— Unable to stat /<br />

— Unable to stat .<br />

— Cannot open ..<br />

— Read error in ..<br />

— Metarule too long: "rule"<br />

POSIX.2. x/OPEN Portability Guide 4.0. All UNIX systems. Windows Me. Windows NT 4.0.<br />

Windows 2000. Windows XP. Windows Server 2003.<br />

The following features of MKS Make are enhancements to POSIX.2:<br />

● The options; -c dir, -D macro_def'n, -E, -M, -u, -V, -v, -x.<br />

● The -n option has enhanced functionality not covered by the standard; for more information<br />

see the explanations of the -n option and the .POSIX special target in this reference page.<br />

● The run-time macros: $&, $^, $>.<br />

● The dynamic prerequisites: $$%, $$>, $$*, $$@.<br />

● All macro expansion modifiers except for suffix replacement.<br />

● Macro assignments of the following forms:<br />

● Brace expansion.<br />

● Backslash continuation.<br />

macroname := stringassigned<br />

macroname += stringassigned<br />

● The quoting mechanism, as in the following example:<br />

"a:target" : "a:prerequisite"<br />

● All rule operators except the colon (:).<br />

● Conditionals.<br />

434 of 457


● Meta-Rules.<br />

● All MKS Make attributes except .IGNORE, .PRECIOUS, .SILENT.<br />

● All MKS Make special targets except .DEFAULT, .POSIX, .SUFFIXES.<br />

● All MKS Make control macros except SHELL (referred to in POSIX.2 as control macros).<br />

● The search algorithm for suffix rule follows the POSIX.2 rules when the .POSIX special<br />

target is specified, but behaves like traditional implementations when it is not specified.<br />

LIMITS<br />

The maximum length of a script line is 16834 characters.<br />

In some environments, the length of an argument string is restricted. For example, <strong>com</strong>mand-line<br />

arguments cannot be longer than 128 bytes if you are using the standard <strong>com</strong>mand.<strong>com</strong> <strong>com</strong>mand<br />

interpreter.<br />

NOTES<br />

When the .SETDIR special target is used, MKS Make checks the file attributes of targets and<br />

prerequisites on every pass through a rule. This can significantly increase the number of file<br />

system accesses.<br />

AVAILABILITY<br />

MKS Toolkit for Developers<br />

MKS Toolkit for Interoperability<br />

MKS Toolkit for Professional Developers<br />

MKS Toolkit for Enterprise Developers<br />

MKS Toolkit for Enterprise Developers 64-Bit Edition<br />

MKS Source Integrity Standard<br />

MKS Source Integrity Enterprise<br />

SEE ALSO<br />

Miscellaneous:<br />

makefile<br />

Using MKS Make<br />

435 of 457


NAME<br />

manstrip<br />

manstrip — strip the unprintable sequences out of online reference pages<br />

SYNOPSIS<br />

manstrip<br />

DESCRIPTION<br />

manstrip is a filter. It takes text redirected from a file, or piped into it, and outputs that text to<br />

standard output, without any ANSI color escape sequences or ^H control sequences.<br />

This <strong>com</strong>mand can be used to produce standard text versions of the online man pages for printing.<br />

EXAMPLE<br />

To convert the sh reference page to a regular text file, type the following <strong>com</strong>mand:<br />

man sh.1 | manstrip > sh.txt<br />

PORTABILITY<br />

Windows Me. Windows NT 4.0. Windows 2000. Windows XP. Windows Server 2003.<br />

AVAILABILITY<br />

MKS Toolkit for Power Users<br />

MKS Toolkit for System Administrators<br />

MKS Toolkit for Developers<br />

MKS Toolkit for Interoperability<br />

MKS Toolkit for Professional Developers<br />

MKS Toolkit for Enterprise Developers<br />

MKS Toolkit for Enterprise Developers 64-Bit Edition<br />

MKS AlertCentre<br />

MKS Source Integrity Standard<br />

MKS Source Integrity Enterprise<br />

436 of 457


SEE ALSO<br />

Commands:<br />

man<br />

437 of 457


NAME<br />

mv — rename and move files and directories<br />

SYNOPSIS<br />

mv [-adfiv] file1 file2<br />

mv [-fiv] file ... directory<br />

mv -r [-fiv] directory1 directory2<br />

DESCRIPTION<br />

mv<br />

mv renames files or moves them to a different directory. If you specify multiple files, the target (that<br />

is, the last path name on the <strong>com</strong>mand line) must be a directory. mv moves the files into that<br />

directory and gives them names that match the final <strong>com</strong>ponents of the source path names. When<br />

you specify a single source file and the target is not a directory, mv moves the source to the new<br />

name, by a simple rename if possible.<br />

If a destination file exists and you do not have write permission for it, mv prompts with the name of<br />

the existing file. If you answer y or yes, it deletes the destination and then moves the source.<br />

If the file being moved is a sparse file and the file system to which it is being moved does not<br />

support sparse files, mv warns that the resulting file will be larger. If the -i option was also<br />

specified, mv asks you if want to expand the file or skip it.<br />

Options<br />

-a<br />

moves the ACLs associated with the specified file along with the file itself. When used with<br />

-p, permissions are moved as well.<br />

This option is only available on NTFS file systems.<br />

Note:<br />

When you use mv to do a simple rename (that is, simply move it on the same device),<br />

ACLs are automatically moved with the file and the -a option is not required.<br />

However, when you use mv to move a file to another device, you must specify the -a<br />

option or the ACLs are not moved with the file.<br />

438 of 457


-d<br />

-f<br />

-i<br />

-r<br />

-v<br />

delays moving the specified files until the system is rebooted.<br />

On Windows Me, the destination file name must be a short file name. The destination<br />

directory may have a long file name but the file name must be short.<br />

This option relies upon the underlying operating system's capability to perform the action at<br />

reboot time.<br />

does not ask if you want to overwrite an existing destination without write permission; it<br />

automatically behaves as if you answered yes. If you specify both -f and -i, mv uses the<br />

option that appears last on the <strong>com</strong>mand line.<br />

always prompts before overwriting an existing file, whether or not the file is read-only. If you<br />

specify both -f and -i, mv uses the option that appears last on the <strong>com</strong>mand line.<br />

moves directory and all its contents (files, subdirectories, files in subdirectories, and so on).<br />

For example, mv -r dir1 dir2 moves the entire contents of dir1 to dir2/dir1. mv<br />

creates any directories that it needs.<br />

prints file names to standard output as they are being processed.<br />

DIAGNOSTICS<br />

Possible exit status values are:<br />

0<br />

1<br />

Successful <strong>com</strong>pletion.<br />

Failure due to any of the following:<br />

— argument had trailing slash (/) but was not a directory<br />

— file could not be found<br />

— input file could not be opened for reading<br />

— output file could not be created or opened for output<br />

— read error occurred on an input file<br />

— write error occurred on an output file<br />

439 of 457


2<br />

— input and output files were the same file<br />

— input file could not be unlinked<br />

— input file could not be renamed<br />

— fatal error was encountered when using the -r option<br />

Possible fatal -r errors include the following:<br />

— inability to access a file<br />

— inability to read a directory<br />

— inability to remove a directory<br />

— inability to create a directory<br />

— a target that is not a directory<br />

— the source and destination directories are the same<br />

Failure due to any of the following:<br />

— invalid <strong>com</strong>mand line option<br />

— too few arguments on the <strong>com</strong>mand line<br />

— a target that should be a directory but is not<br />

— no space left on the target device<br />

— out of memory to hold the data to be copied<br />

— the inability to create a directory to hold a target file<br />

cannot allocate target string<br />

mv has no space to hold the name of the target file. Try to free up some memory to give mv<br />

more space.<br />

filename read only?<br />

You are attempting to move a file, but there is already a file with the target name and the file<br />

is read-only. If you really want to write over the existing file, type y and press ENTER. If you<br />

do not want to write over the existing file, type n and press ENTER.<br />

source "name" and target "name" are identical<br />

The source and the target are actually the same file (for example, because of links on UNIX<br />

and POSIX-<strong>com</strong>pliant systems). In this case, mv does nothing.<br />

unreadable directory "name"<br />

mv cannot read the specified directory (for example, because you do not have appropriate<br />

permissions).<br />

PORTABILITY<br />

POSIX.2. x/OPEN Portability Guide 4.0. All UNIX systems. Windows Me. Windows NT 4.0.<br />

Windows 2000. Windows XP. Windows Server 2003.<br />

440 of 457


The -d, -r, and -v options are extensions to the POSIX standard. The -d and -s options are only<br />

available on Windows.<br />

AVAILABILITY<br />

MKS Toolkit for Power Users<br />

MKS Toolkit for System Administrators<br />

MKS Toolkit for Developers<br />

MKS Toolkit for Interoperability<br />

MKS Toolkit for Professional Developers<br />

MKS Toolkit for Enterprise Developers<br />

MKS Toolkit for Enterprise Developers 64-Bit Edition<br />

MKS AlertCentre<br />

MKS Source Integrity Standard<br />

MKS Source Integrity Enterprise<br />

SEE ALSO<br />

Commands:<br />

cp, ln, pending, rm<br />

441 of 457


NAME<br />

nm<br />

nm — display symbol table of object, library, or executable file<br />

SYNOPSIS<br />

nm [-AaefgnoPprsuvx] [-t format] file ...<br />

DESCRIPTION<br />

nm displays the symbol table associated with an object, archive library of objects, or executable file.<br />

nm recognizes several different file types that may contain symbol tables:<br />

● object files ending in .obj. These files may be Intel OMF (Object Module Format) files or<br />

COFF (Common Object File Format) files.<br />

● library files, which normally end in .lib and contain one or more OMF or COFF files.<br />

● Windows executable files, which normally end in .exe, that contain a symbol table<br />

<strong>com</strong>patible with those produced by PLINK86, the Microsoft Linker, the Wat<strong>com</strong> Linker, or<br />

the Borland Linker.<br />

● A symbol table may be created from a .map file (such as those produced by Microsoft<br />

link) by using unstrip to create a symbol table <strong>com</strong>patible with PLINK86.<br />

Note that nm does not list entry points in a DLL, unless there is a symbol table associated with it.<br />

By default, nm lists the symbols in file in alphabetical order by name and provides the following<br />

information on each:<br />

● File or object name (if you specified -A)<br />

● Symbol name<br />

● Symbol type:<br />

Note:<br />

A<br />

a<br />

Not all of these symbol types are available on all systems. For instance, not all<br />

systems support the ability to determine different segment information.<br />

absolute symbol, global<br />

442 of 457


B<br />

b<br />

D<br />

d<br />

F<br />

l<br />

N<br />

n<br />

S<br />

s<br />

T<br />

t<br />

U<br />

?<br />

absolute symbol, local<br />

uninitialized data (bss), global<br />

uninitialized data (bss), local<br />

initialized data, global<br />

initialized data, local<br />

file name<br />

line number entry (see -a option)<br />

no defined type, global; this is an unspecified type, <strong>com</strong>pared to the undefined type U<br />

no defined type, local; this is an unspecified type, <strong>com</strong>pared to the undefined type U<br />

section symbol, global<br />

section symbol, local<br />

text symbol, global<br />

text symbol, local (static)<br />

undefined symbol<br />

443 of 457


● Symbol value<br />

unknown symbol<br />

● Symbol size, if applicable<br />

Options<br />

-A<br />

-a<br />

-e<br />

-f<br />

-g<br />

-n<br />

-o<br />

-P<br />

prefixes each line with the file name or archive member name.<br />

displays all symbols, including line number entries on systems which support them.<br />

displays only global (external) and static symbols.<br />

displays full output. This is the default, since this implementation does not suppress any<br />

output.<br />

displays only global symbols.<br />

is equivalent to -v.<br />

displays output in octal (same as -t o).<br />

displays output in a portable POSIX-<strong>com</strong>pliant format, with blanks separating the output<br />

fields. If you specified -A and file is not a library, the format is<br />

file: name type value size<br />

If you specified -A and file is a library, the format is<br />

file[object_file]: name type value size<br />

where object_file is the object file in the library which contains the symbol being described. If you<br />

did not specify -A, the format is<br />

444 of 457


name type value size<br />

If you did not also specify the -t option, nm displays value and size in hexadecimal.<br />

If you did not specify -A and the <strong>com</strong>mand line contains more than one file, or file is a library, nm<br />

displays a line preceding the list of symbols for each specified file or each object file in a specified<br />

library. If file is a library, this line has the following format:<br />

file[object_file]:<br />

If file is not a library, the format is simply<br />

-p<br />

-r<br />

-s<br />

file:<br />

does not sort output.<br />

reverses sort order.<br />

includes symbol size for each symbol.<br />

-t format<br />

defines the numeric value formatting base. The format shall be one of d, o, or x, for decimal,<br />

octal, or hexadecimal, respectively. If this option is not used, numbers are displayed in<br />

decimal.<br />

-u<br />

-v<br />

-x<br />

displays only undefined symbols.<br />

sorts output by value.<br />

displays information in hexadecimal (same as -t x).<br />

DIAGNOSTICS<br />

Possible exit status values are:<br />

0<br />

445 of 457


1<br />

Successful <strong>com</strong>pletion.<br />

Failure due to any of the following:<br />

— invalid <strong>com</strong>mand line option<br />

— missing file name<br />

— unknown symbol table type<br />

— invalid library file<br />

— end-of-file found in library<br />

— bad record in the library<br />

— out of memory<br />

If a file does not contain a symbol table, nm displays a warning and goes to the next file, but this is<br />

not considered an error.<br />

PORTABILITY<br />

POSIX.2. x/OPEN Portability Guide 4.0. All UNIX systems. Windows Me. Windows NT 4.0.<br />

Windows 2000. Windows XP. Windows Server 2003.<br />

The -a, -e, -f, -n, -o, -p, -r, -s and -x options are not part of the POSIX standard.<br />

The -a, -n, -p, -r, -s options and -t d are not part of the x/OPEN standard.<br />

NOTE<br />

On Windows systems, data (D, d) and uninitialized data (B, b) are not currently recognized in<br />

executable files, as this involves trying to guess segment types. All such symbols <strong>com</strong>e out as text<br />

(T, t) symbols.<br />

AVAILABILITY<br />

MKS Toolkit for Developers<br />

MKS Toolkit for Interoperability<br />

MKS Toolkit for Professional Developers<br />

MKS Toolkit for Enterprise Developers<br />

MKS Toolkit for Enterprise Developers 64-Bit Edition<br />

MKS Source Integrity Standard<br />

MKS Source Integrity Enterprise<br />

446 of 457


SEE ALSO<br />

Commands:<br />

ar, size, strip<br />

447 of 457


NAME<br />

rm — remove files<br />

SYNOPSIS<br />

rm [-fiRrv] [-d|s] file ...<br />

DESCRIPTION<br />

rm -- Command, KornShell Built-in<br />

rm removes each specified file argument (provided that it is a valid path name). If you specify<br />

either . or .. as the final <strong>com</strong>ponent of the path name for a file, rm displays an error message,<br />

and moves onto the next file. If you specify a file you do not have write permission for, rm asks you<br />

for confirmation. Type the yes expression defined in LC_MESSAGES (the English expression is<br />

typically y or yes) if you really want it deleted.<br />

Options<br />

-d<br />

-f<br />

-i<br />

-R<br />

delays the removal of the specified files until the system is rebooted. This option and the -s<br />

option are mutually exclusive.<br />

This option relies upon the underlying operating system's capability to perform the action at<br />

reboot time.<br />

deletes read-only files immediately, without asking for confirmation. When you specify this<br />

option and a file does not exist, rm does not display an error message and does not modify<br />

the exit status. If you specify both -f and -i, rm uses the option that appears last on the<br />

<strong>com</strong>mand line.<br />

prompts for confirmation (from standard input) before deleting each file or confirmation<br />

before entering a subdirectory if either the -r or -R option is specified. If you specify both<br />

-f and -i, rm uses the option that appears last on the <strong>com</strong>mand line.<br />

recursively removes the entire directory structure if file is a directory.<br />

448 of 457


-r<br />

-s<br />

-v<br />

is equivalent to -R.<br />

saves the file for undeletion if possible. An attempt is made to put the file in the Recycle Bin<br />

and if this attempt fails then the file is quietly deleted. This option and the -d option are<br />

mutually exclusive.<br />

prints file names to standard output as they are being processed.<br />

DIAGNOSTICS<br />

Possible exit status values are:<br />

0<br />

1<br />

2<br />

NOTE<br />

Successful <strong>com</strong>pletion.<br />

Failure due to any of the following:<br />

— inability to remove a file<br />

— tried to remove directory without specifying -r or -R<br />

— inability to find file information when using -r or -R<br />

— inability to read directory when using -r or -R<br />

Failure due to any of the following:<br />

— invalid <strong>com</strong>mand line option<br />

— no files specified<br />

rm is provided as both an external utility and a built-in MKS KornShell utility.<br />

PORTABILITY<br />

POSIX.2. x/OPEN Portability Guide 4.0. All UNIX systems. Windows Me. Windows NT 4.0.<br />

Windows 2000. Windows XP. Windows Server 2003.<br />

The -d, -s, and -v options are extensions to the POSIX standard. The -d and -s options are only<br />

449 of 457


available on Windows.<br />

AVAILABILITY<br />

MKS Toolkit for Power Users<br />

MKS Toolkit for System Administrators<br />

MKS Toolkit for Developers<br />

MKS Toolkit for Interoperability<br />

MKS Toolkit for Professional Developers<br />

MKS Toolkit for Enterprise Developers<br />

MKS Toolkit for Enterprise Developers 64-Bit Edition<br />

MKS AlertCentre<br />

MKS Source Integrity Standard<br />

MKS Source Integrity Enterprise<br />

SEE ALSO<br />

Commands:<br />

cp, mv, pending, rmdir, sh<br />

450 of 457


NAME<br />

touch — change file modification date<br />

SYNOPSIS<br />

touch<br />

touch [-acm] [-f agefile] [-r agefile] [[-t] time] file ...<br />

touch [-acm] time file ...<br />

DESCRIPTION<br />

The touch <strong>com</strong>mand changes certain dates for each file argument. By default, touch sets both<br />

the date of last file modification and the date of last file access to the current time. This is useful for<br />

maintaining correct release times for software and is particularly useful in conjunction with the MKS<br />

Make software development facility.<br />

Options<br />

-a<br />

-c<br />

-m<br />

sets only the access time.<br />

does not create any files that do not already exist. Normally, touch creates such files.<br />

sets only the modification time.<br />

If you do not specify -a or -m, touch behaves as though you specified both.<br />

To tell touch to use a time other than the current, use one of the following options:<br />

-f agefile<br />

is an obsolete version of the POSIX-<strong>com</strong>pliant -r option.<br />

-r agefile<br />

sets the access and modification times (as indicated by the other options) to those kept for<br />

agefile.<br />

-t time<br />

specifies a particular time using this format:<br />

[[[[cc]yy]MM]dd]hhmm[.ss]<br />

451 of 457


where cc is the optional first 2 digits of the year, yy is the optional last 2 digits of the year, MM is<br />

the optional number of the month (01-12), dd is the optional day of the month, hh is the hour in 24<br />

hour format (required), mm is the minutes (required), ss is the optional seconds.<br />

An obsolete (but still supported) version of this <strong>com</strong>mand lets you omit the -t, but the format is:<br />

MMddhhmmyy[yy]<br />

EXAMPLES<br />

touch newfile<br />

sets the modification time of newfile to the present.<br />

touch -t 8001031305 oldfile<br />

sets the modification time of oldfile to 13:05 on January 3, 1980.<br />

touch -r oldfile newfile<br />

sets the modification time of newfile to that of oldfile.<br />

ENVIRONMENT VARIABLES<br />

TZ<br />

contains the time zone that touch is to use when interpreting times.<br />

DIAGNOSTICS<br />

Possible exit status values are:<br />

0<br />

1<br />

Successful <strong>com</strong>pletion.<br />

Failure due to any of the following:<br />

— inability to access the desired file<br />

— system cannot support such an early date<br />

452 of 457


2<br />

Messages<br />

— inability to create a file<br />

— inability to change a file's times<br />

Failure that resulted in a usage message, including:<br />

— unknown <strong>com</strong>mand line option<br />

— only one of -t, -f, or -r is allowed<br />

— -r was missing the agefile<br />

— -t was missing its argument<br />

— invalid date string (bad date conversion)<br />

Age file inaccessible<br />

indicates that time could not be found for the file given with the -f or -r option either<br />

because that file does not exist or because the requesting user is not granted the<br />

appropriate permission for the file.<br />

Missing age file argument<br />

You specified -f or -r, but did not give a file name after it.<br />

Years earlier than year invalid<br />

Your system only recognizes dates back to the given year. touch does not accept dates<br />

before that time.<br />

Bad date conversion<br />

Only one -r(-f) or -t flag allowed<br />

Missing date/time argument<br />

Self-explanatory.<br />

PORTABILITY<br />

POSIX.2. x/OPEN Portability Guide 4.0. All UNIX systems. Windows Me. Windows NT 4.0.<br />

Windows 2000. Windows XP. Windows Server 2003.<br />

NOTE<br />

touch is provided as both an external utility and a built-in MKS KornShell utility.<br />

On the extended FAT file system, the earliest date accepted is 1980. On the NTFS file system, the<br />

earliest date accepted is 1970.<br />

The touch utility does not accept dates and times past 11:59.59 pm on December 31, 2099.<br />

453 of 457


AVAILABILITY<br />

MKS Toolkit for Power Users<br />

MKS Toolkit for System Administrators<br />

MKS Toolkit for Developers<br />

MKS Toolkit for Interoperability<br />

MKS Toolkit for Professional Developers<br />

MKS Toolkit for Enterprise Developers<br />

MKS Toolkit for Enterprise Developers 64-Bit Edition<br />

MKS AlertCentre<br />

MKS Source Integrity Standard<br />

MKS Source Integrity Enterprise<br />

SEE ALSO<br />

Commands:<br />

cp, date, sh<br />

454 of 457


NAME<br />

which, whereis<br />

which, whereis — display full path name for executable <strong>com</strong>mand<br />

SYNOPSIS<br />

which [-a] <strong>com</strong>mand ...<br />

whereis <strong>com</strong>mand ...<br />

DESCRIPTION<br />

Windows systems use the PATH environment variable to determine which directories are searched<br />

to find programs. If PATH is not found under Windows NT/2000/XP/2003, which then searches for<br />

Path. For each <strong>com</strong>mand, which looks through the directories in the search path, and displays the<br />

name of the first executable file that matches <strong>com</strong>mand.<br />

which uses the PATHEXT environment variable to determine which files are considered<br />

executable. As which searches each directory in the search path, it appends each of the<br />

extensions in the list, in turn, to <strong>com</strong>mand name to see if it matches a file name in that directory. If<br />

a match exists, that file is considered to be executable.<br />

If PATHEXT is not defined, which only considers files with a .exe, .<strong>com</strong>, .bat, or .cmd<br />

extension to be executable.<br />

Because which is intended primarily for use when working from the Windows <strong>com</strong>mand prompt, it<br />

always searches the current directory first before consulting the search path in the same way that<br />

Windows <strong>com</strong>mand interpreters (such as <strong>com</strong>mand.<strong>com</strong> and cmd.exe) do.<br />

Note:<br />

When running which from the Windows <strong>com</strong>mand prompt, not all executable files reported<br />

may be directly executable from the prompt. Such files may require the use of an additional<br />

program (such as a shell) to execute it. The program to use can normally be determined by<br />

the file's extension. For example, files with a .sh extension should be executed using the<br />

MKS KornShell.<br />

The whereis <strong>com</strong>mand is equivalent to specifying which -a.<br />

Options<br />

455 of 457


-a<br />

displays all matching executable files from every directory in PATH (on Windows Me) or in<br />

Path (on Windows NT/2000/XP/2003), not just the first match. This can help you find<br />

conflicts between two executables of the same name.<br />

ENVIRONMENT VARIABLES<br />

PATH<br />

contains a list of directories for which to search when looking for <strong>com</strong>mand.<br />

PATHEXT<br />

contains a list of file extensions (separated by semicolons) for executable <strong>com</strong>mands. By<br />

default, PATHEXT, has the value of Windows NT/2000/XP/2003's PATHEXT variable with<br />

.<strong>com</strong>;.exe;.bat;.sh;.ksh;.csh;.sed;.awk;.pl appended (omitting any<br />

extensions already represented in PATHEXT).<br />

DIAGNOSTICS<br />

Possible exit status values are:<br />

0<br />

1<br />

An appropriate executable file can be found with the current PATH.<br />

Failure due to any of the following:<br />

PORTABILITY<br />

— an appropriate executable file cannot be found<br />

— invalid <strong>com</strong>mand line option<br />

Available on some UNIX systems. Windows Me. Windows NT 4.0. Windows 2000. Windows XP.<br />

Windows Server 2003.<br />

NOTE<br />

This <strong>com</strong>mand does not know about shell keywords, aliases, functions, and so forth. For this<br />

reason, whence is re<strong>com</strong>mended when you are using the MKS KornShell.<br />

456 of 457


AVAILABILITY<br />

MKS Toolkit for Power Users<br />

MKS Toolkit for System Administrators<br />

MKS Toolkit for Developers<br />

MKS Toolkit for Interoperability<br />

MKS Toolkit for Professional Developers<br />

MKS Toolkit for Enterprise Developers<br />

MKS Toolkit for Enterprise Developers 64-Bit Edition<br />

MKS AlertCentre<br />

MKS Source Integrity Standard<br />

MKS Source Integrity Enterprise<br />

SEE ALSO<br />

Commands:<br />

<strong>com</strong>mand, sh, whence<br />

457 of 457

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!