Prjm can be used
to check the current state of all packages that are part of a project,
to freeze the current development state as a snapshot,
to use the current development state for a release of the software,
to build the complete project by building and shipping every package in the correct order defined by the import-relation of packages (which of course must not be cyclic),
to checkout and rebuild a snapshot or release from the snaps directory or the PrjDesc file,
to apply user defined command sequences to all or some packages of a project, and
to select packages of the project by internal or user defined command sequences.
For some of these tasks, prjm needs to know about the dependencies of the packages and maintain a dependency graph (which is, once computed, saved in the file DepGraph and may be reused), for other actions (like checkout or update) the order is irrelevant.
Each of these actions is described in detail in its own sections below. This next section will be include a general description of the use of prjm and the common options.
Like most other programs of Elego ComPact, prjm is a command line oriented interface. The interface is easy to use and consistent. Also, prjm may easily be integrated into scripts, makefiles or other means to further automate project management.
Here is a synopsis of the syntax:
prjm <option> <action> [ <pkgname>* ]
<option> ::= [-v] [-q] [-qc] [-d] [-k] [-f]
[-m | -md | -modifieddeps]
[-o | -od | -outofdatedeps]
[-nd | -nodep]
[-noc | -nocache]
[-novr]
[-noivc | -nointernalvc | -nointernalversioncontrol]
[-novc | -noversioncontrol]
[-fr | -forcerelease]
[-lazy]
[-dep]
[-p <PrjDescFile>]
[-sd <snapshot dir>]
[-snapdir <snapshot dir>]
[-D name=value ]*
[ (-message | -msg) <commit message>]
[-file <commit message file>]
[-t <tag1> [-t <tag2>]]
[-changeset <changeset> | -cs <changeset>]
[-relevancelevel <i> | -importlevel <i> | -irl <i>]
[-nosort | -byname | -bydate ]
[-reverse | -down ]
[-saveprereleases | -saveall]
<action> ::= -buildlocal | -localbuild
| -buildproject | -projectbuild
| -buildglobal | -globalbuild
| -shiplocal | -localship
| -shipproject | -projectship
| -shipglobal | -globalship
| -clean
| -realclean
| -saveimports <n> | -saveimps <n> | -pkgovr <n>
| -diff
| -cdiff
| -udiff
| -check
| -check -label <regex> <n>*
| -newstatecache | -newcache
| -purgeunsureversioninfo | -purgeunsureinfo | -pui
| -showpackages | -showpkgs
| -showpackagekinds | -showkinds | -kinds
| -showsnapshots | -showsnaps | -snaps
| -showreleases | -showrels | -rels
| -showsnapshot [-l] <n>* | -showsnap <n>* | -ssnap <n>*
| -editsnapshot <n> | -editsnap <n> | -esnap <n>
| -snapshotlog [-mtime] | -snaplog | -ssl
| -showrelease [-l] <n>* | -showrel <n>* | -srel <n>*
| -editrelease <n> | -editrel <n> | -erel <n>
| -releaselog [-mtime] | -rellog | -rl
| -showpackagepaths | -showpkgpaths | -spp
| -showstatecache | -showcache | -sc
| -showshortstatus | -shortstatus | -sstat
| -showlongstatus | -longstatus | -lstat
| -showchangesets | -showcs | -scs
| -changesetlog | -cslog | -csl
| -editchangeset | -editcs | -ecs
| -mergechangeset | -mergecs | -mcs
| -dependencies | -showdeps | -deps
| -updatesequence | -upseq | -tsort
| -isrelease | -isrel | -rel
| -ismodified | -ismod | -mod
| -showmodified | -showmod | -smod
| -isoutofdate | -isood | -ood
| -showoutofdate | -showood | -sood
| -hasconflicts | -hascfl | -cfl
| -showconflicts | -showcfl | -scfl
| -checkout | -get | -co
| -update | -upd | -up
| -commit <t> | -ci <t>
| -commitrelease <t> | -commitrel <t> | -cirel <t>
| -makesnapshot <n> | -snapshot <n> | -snap <n>
| -makerelease <n> | -makerel <n> | -release <n>
| -newrelease <t> <n> | -newrel <t> <n>
| -applyaction <a>+ | -action <a>
| -orderedapplyaction <a>+ | -ordaction <a>
| -apply <cmd> | -app <cmd>
| -ordapply <cmd> | -oapp <cmd>
| -selectby <cmd> | -sel <cmd>
| -ordselectby <cmd> | -osel <cmd>
| -stablerelease <n> [<n>] | -makestable <n> [<n>]
| -makestablerelease <n> [<n>]
| -listpkgkinds | -listkinds
| -dumppkgkinds | -dumpkinds
<t> ::= [ patch | minor | major ]
<n> ::= <token>
<a> ::= <token> | <string>
<cmd> ::= <token> | <string>
<t> describes the type of commit: patch should be used if only bugs or misfeatures are corrected, minor if minor additions and extensions are committed, and major if any interface change or semantical change in exported functionality occured.
<n> stands for the name of a release or snapshot.
<a> is a symbolic action name as used in the backend configuration file (see Chapter 4).
<cmd> denotes one or more commands understood by the internal command interpreter or the external shell that is used.
Commonly used options are:
-v be verbose
-q be quiet
-qc quiet cache (no `scanning' messages)
-k do not stop on errors (keep going)
-f do not stop on failures of external programs
-o use only out-of-date (elsewhere modified) packages
-od use only out-of-date (elsewhere modified) packages and those depending on them. This also implies an automatic update of the concerned packages.
-m use only locally modified packages
-md use only locally modified packages and those depending on them (needed for selective builds)
-nd do not recompute dependencies, if possible; use old dependency graph dump
-dep consider all dependend packages, too
-p explicitly specify a project description file (default: PrjDesc)
-sd explicitly specify a snapshot directory (default: snaps)
-noc don't use any state cached in checkpoint files (default: .checkpoint)
-noivc don't use internal access to version control backend, exlusively rely on external programs defined in PkgBase.DefaultData
-novc don't use version control for project and snapshot files
-sh <shell> use the named shell to interpret commands.
-msg specify local commit message
-file read local commit message from file
-fr force release for all packages in -newrelease command
-irl set the relevance level for generated import directives in PkgOvr files (0-3, deault: 2)
-nosort do not sort lists of snapshots, releases, or change sets
-byname sort lists of snapshots, releases, or change sets by name
-bydate sort lists of snapshots, releases, or change sets by date
-down reverese the sort order of snapshots, releases, or change sets
-nodep = -nd
-modifieddeps = -md
-outofdatedeps = -od
-snapdir = -sd
-nocache = -noc
-nointernalvc -noivc
-message -msg
-forcerelease -fr
-importlevel -irl
-reverse -down
-D name=value define the value of the named variable. These values are passed on to the execution of actions from PkgBase.DefaultData and are substituted if matching names are found.