There is a very handy CLI command "get_member_info" available
as part of the "PC Integrations" package. It prints the list of
a project's members including their workarea pathnames.
Usage: ccm get_member_info [-format|-f ...] [-recurse|-r] project_spec
The output consists of one line per project member: the workarea
pathname first and then information about the member formatted
as specified in the "-format" option. "-format" may contain the
ususual "%keyword"s. If option "-recurse" is specified,
sub projects are recursively traversed.
Advantages:
- "get_member_info" is orders of magnitude faster than traversing the
project tree "by hand" (i.e. with recursive queries to is_child_of(),
which is the method implemented by VCS::CMSynergy::Project::traverse())
Disadvantages:
- no directories (i.e. Synergy objects of cvtype "dir")
are included in the listing; the same goes for projects, i.e. there
is no indication in the output where sub projects are traversed
- the list can't be restricted to a sub tree
- the output depends on whether the project maintains a workarea:
if maintain_wa = FALSE then the path reported is the relative wa path,
otherwise it is an absolute path starting with the project's wa_path
- the path is always in client's native OS notation (even if wa_path is
from a different OS)
NOTE: The methods get_member_info_object() and get_member_info_hashref()
in VCS::CMSynergy::Project work around the latter two
(the path is always returned workarea relative and the path separator
may be explicitly specified).
Installation:
- download the "PC Integrations" package from the Telelogic support site
- on a Windows client, install any of the contained integration
packages; this will put a file called "intlib.a" into $CCM_HOME/lib
- copy this extension library (it's not machine specific)
to your server's $CCM_HOME/lib
- on each client machine, add the following two lines to $CCM_HOME/etc/ccminit:
load "$CCM_HOME/lib/intlib.a"
define get_member_info intcmds get_member_info_cmd