Chapter 3. Activities of Project Management

Table of Contents
3.1. General Use and Common Options
3.2. Checking Projects
3.3. Building and Cleaning Projects
3.4. Viewing Status of Projects
3.5. Saving Local Changes in a Project Package
3.6. Applying Commands to Packages of a Project
3.7. Committing all Changes to a Project, Change Sets
3.8. Creating Snapshots and Releases
3.9. Reproducing Snapshots and Releases
3.10. Controlling the Project State Cache
3.11. External Commit Hooks

Prjm can be used



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.

3.1. General Use and 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: