Annotation of 43BSDTahoe/new/spms/man/mann/spmsintro.n, revision 1.1

1.1     ! root        1: .TH SPMSINTRO 1P "1 July 1985"
        !             2: .UC 4
        !             3: .SH NAME
        !             4: spmsintro - introduction to SPMS commands
        !             5: .SH INTRODUCTION
        !             6: The Software Project Management System (SPMS) is a system for the management
        !             7: of medium- to large-scale software systems. SPMS provides, within the
        !             8: UNIX environment, a number of commands which can greatly simplify many tasks
        !             9: associated with program development and maintenance. SPMS does not
        !            10: attempt to duplicate existing UNIX program development tools such as
        !            11: .I make
        !            12: or
        !            13: .I SCCS,
        !            14: but instead provides a way of coordinating these tools.
        !            15: .PP
        !            16: Each software package managed by SPMS is organized as a project. A
        !            17: project is a collection of directories, each of which supports a
        !            18: specific activity such as program development, testing, or
        !            19: documentation. There is no restriction on the number of directories
        !            20: belonging to a project. The directory layout is arbitrary, and can be
        !            21: altered to reflect the changing needs of the package. Projects can be
        !            22: nested to any level and a mechanism is provided for executing commands
        !            23: globally over an entire project hierarchy.
        !            24: .SH DESCRIPTION
        !            25: .PP
        !            26: \fBGetting Started\fR
        !            27: .PP
        !            28: Before using SPMS for the first time you must do the following \-
        !            29: .PP
        !            30: If you are a \fBC shell\fR, (\fIcsh\fR), user:
        !            31: .IP 1.
        !            32: Include the directory `/usr/new' in the
        !            33: command search path. This is done by altering the PATH variable
        !            34: in one of the startup files, `.cshrc'  or `.login', in the home directory.
        !            35: .IP 2.
        !            36: Add the following aliases to the `.cshrc' file
        !            37: .br
        !            38:        alias chproject  \'eval \`\^"chproject"  \\!*\`\^\'
        !            39: .br
        !            40:        alias pd  \'eval \`\^"pd"  \\!*\`\^\'
        !            41: .IP 3.
        !            42: Add the following command to the `.login' file
        !            43: .br
        !            44:        chproject  ^
        !            45: .IP 4.
        !            46: Convert the home directory to a project root directory by typing
        !            47: .br
        !            48:        /usr/new/mkproject  \-d  ^
        !            49: .IP 5.
        !            50: Execute the `.cshrc' and `.login' files by typing
        !            51: .br
        !            52:        source .cshrc
        !            53: .br
        !            54:        source .login
        !            55: .PP
        !            56: If you are a \fBBourne shell\fR, (\fIsh\fR), user:
        !            57: .IP 1.
        !            58: Include the directory `/usr/new' in the command search path. This is
        !            59: done by altering the PATH variable in the startup file, `.profile', in
        !            60: the home directory.
        !            61: .IP 2.
        !            62: Add the following command to the `.profile' file:
        !            63: .br
        !            64:        eval  \`chproject  \\^\^\`
        !            65: .IP 3.
        !            66: Convert the home directory to a project root directory by typing
        !            67: .br
        !            68:        /usr/new/mkproject  \-d  \\^
        !            69: .IP 4.
        !            70: Execute the `.profile' file by typing
        !            71: .br
        !            72:        .  .profile
        !            73: .PP
        !            74: \fBGlobal Operations\fR
        !            75: .PP
        !            76: The means for executing a command over an entire software package
        !            77: is provided by the
        !            78: .I pexec
        !            79: command. By labeling each project directory according to the type of
        !            80: activity that it supports, global operations can be restricted to
        !            81: specific directories. These labels are known as \fItype labels\fR. In
        !            82: some instances, the directories affected by a global command must be
        !            83: processed in a particular order. This ordering is achieved by appending
        !            84: priorities to type labels. For example, if the project directories
        !            85: `include', `cmd1', `cmd2', `lib1', and `lib2' have the following
        !            86: labels,
        !            87: .PP
        !            88: .nf
        !            89: .ta 1.0i 2.5i
        !            90:        include print.0, src, update.100, include
        !            91:        cmd1    print.1, src, update.300, cmdsrc
        !            92:        cmd2    print.1, src, update.300, cmdsrc
        !            93:        lib1    print.2, src, update.200, libsrc
        !            94:        lib2    print.2, src, update.200, libsrc
        !            95: .DT
        !            96: .fi
        !            97: .PP
        !            98: the entire software package can be updated by the command
        !            99: .PP
        !           100:        pexec  \-Tupdate  make update
        !           101: .PP
        !           102: in the order `include', `lib1', `lib2', `cmd1', `cmd2'.
        !           103: .PP
        !           104: Global commands can be made even more precise by using boolean expressions
        !           105: on type labels to select project directories. The formal definition of
        !           106: a boolean type label expression is
        !           107: .LP
        !           108: .ce
        !           109: \fIE\fR \(-> \fIE\fB or \fIE\fR  | \fIE\fB and \fIE\fR  | \fBnot\fI E\fR  | ( E ) | \fBid\fR
        !           110: .LP
        !           111: where
        !           112: .I E
        !           113: is a boolean expression; \fBand\fR, \fBor\fR, and \fBnot\fR are
        !           114: boolean operators; and
        !           115: .B id
        !           116: is a type label.
        !           117: .B Or
        !           118: and
        !           119: .B and
        !           120: are left-associative.
        !           121: .B Or
        !           122: has the lowest precedence, then \fBand\fR, then
        !           123: .B not.
        !           124: In terms of entering the boolean expression on the command line, `\fBor\fR'
        !           125: is represented by the character `|', `\fBand\fR' by the character `&', and
        !           126: `\fBnot\fR' by `!'. Since these characters, together with `(' and `)',
        !           127: are meaningful to the command shell, it is good idea to enclose the
        !           128: whole expression in quotes. However, even if this is done, the `!'
        !           129: character must still be escaped by a backslash `\\' if it precedes a
        !           130: type label to prevent it from being interpreted by the
        !           131: .I csh
        !           132: history mechanism. The command
        !           133: .PP
        !           134:        pexec  "\-Tprint\|&\|(libsrc\||\|cmdsrc)"  \'pr *.h *.c\'  | lpr
        !           135: .PP
        !           136: prints the source code in the command and library directories, but not
        !           137: the directory containing header files. Alternatively,
        !           138: .PP
        !           139:        pexec  "\-Tprint\|&\|\\!include"  \'pr *.h *.c\'  | lpr
        !           140: .PP
        !           141: achieves the same result.
        !           142: .PP
        !           143: \fBProject Pathnames\fR
        !           144: .PP
        !           145: \fIProject pathnames\fR provide a convenient way for accessing a
        !           146: particular directory or file within a project hierarchy. A project
        !           147: pathname is formed by a succession of project names separated by `^'
        !           148: characters, followed by the name of the directory or file. For instance,
        !           149: to describe a file `main.c' in the project directory `work' in the project
        !           150: `spms', the project pathname is
        !           151: .PP
        !           152:        ^spms^work/main.c
        !           153: .PP
        !           154: The project at the top of each user's project hierarchy is called the
        !           155: \fIroot project\fR and is given the special name `^'. If a project
        !           156: pathname begins with the character `^', it is interpreted relative
        !           157: to the root project and is called an \fIabsolute project pathname\fR.
        !           158: However, a project pathname not beginning with `^' is interpreted with
        !           159: respect to the current working project and is therefore called a
        !           160: \fIrelative project pathname\fR. The parent of the working project is
        !           161: called `....' and the alternative name for the current project is
        !           162: `...'.
        !           163: .PP
        !           164: Project pathnames may have a prepended ~\fIusername\fR, and an appended
        !           165: regular pathname. For example, the pathname
        !           166: .PP
        !           167:        ~pjn^spms^work/old/main.c
        !           168: .PP
        !           169: represents the path to `main.c' located in the directory `old' in the
        !           170: project `spms' owned by `pjn'.
        !           171: .SH OPTIONS
        !           172: The options to SPMS commands follow certain conventions. Keyword
        !           173: options are uppercase (with the exception of the
        !           174: .B \-f
        !           175: option). The keyword can immediately follow the option, or be
        !           176: separated by an arbitrary amount of space. The following options
        !           177: are uniformly recognized.
        !           178: .IP "\fB\-P \fIpdirname\fR"
        !           179: Specify a project other than the current working project.
        !           180: .IP "\fB\-T \fItypexpr\fR"
        !           181: Only use project directories corresponding to boolean type label
        !           182: expression,
        !           183: .I typexpr.
        !           184: .PP
        !           185: Non-keyword options are lowercase (with the exception of the
        !           186: .B \-D
        !           187: option). The following options are standard.
        !           188: .IP \fB\-q\fR
        !           189: Quiet mode. Do not print titles.
        !           190: .IP \fB\-r\fR
        !           191: Apply the command recursively to subprojects.
        !           192: .IP \fB\-x\fR
        !           193: Trace and print, but do not execute.
        !           194: .IP \fB\-D\fR
        !           195: Print the expanded pathname when a project pathname is converted to a
        !           196: regular pathname.
        !           197: .PP
        !           198: An option specified as {+\^\-}\fIx\fR means +\fIx\fR or \-\fIx\fR.
        !           199: .SH "ENVIRONMENT VARIABLES"
        !           200: .IP PROJECT \w'ROOTPROJECT'u+.5i
        !           201: Absolute pathname of the current working project root directory.
        !           202: This variable is set by
        !           203: .I chproject.
        !           204: .IP ROOTPROJECT
        !           205: Absolute pathname of the root project directory. The default is the
        !           206: user's home directory.
        !           207: .SH FILES
        !           208: .ta \w'ROOTPROJECT'u+.5i
        !           209: \&...  Project link directory.
        !           210: .DT
        !           211: .SH "SEE ALSO"
        !           212: mkmf(1), chproject(1P), mkproject(1P), pcp(1P), pd(1P), pdiff(1P), pexec(1P),
        !           213: pfind(1P), pgrep(1P), phelp(1P), plog(1P), pman(1P), pmkdir(1P), pmv(1P),
        !           214: ppd(1P), prmdir(1P), ptest(1P), pwp(1P), rmproject(1P)
        !           215: 
        !           216: Peter J. Nicklin  \fIThe SPMS Software Project Management System\fR
        !           217: .SH AUTHOR
        !           218: Peter J. Nicklin
        !           219: .SH BUGS
        !           220: At present, project pathnames are only recognized by SPMS commands.
        !           221: .PP
        !           222: Since the Bourne shell,
        !           223: .I sh,
        !           224: recognizes the `^' character as an alternative pipe
        !           225: symbol, Bourne shell users must type `\\^' instead.

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.