#!/usr/bin/perl -w # List all objects with parallel versions within a given project. # Optionally report finduse information. # Usage: find_parallel_versions.pl [-v] database proj_vers use Getopt::Std; use VCS::CMSynergy; our ($opt_v); getopts('v'); die "usage: $0 database proj_vers" unless @ARGV == 2; my ($database, $proj_vers) = @ARGV; my $ccm = VCS::CMSynergy->new( database => $database, RaiseError => 1, ); foreach my $member (@{ $ccm->query_object("is_member_of('$proj_vers')") }) { my ($name, $instance, $cvtype) = ($member->name, $member->instance, $member->cvtype); my $parallel_versions = $ccm->query_object( qq[name='$name' and instance='$instance' and cvtype='$cvtype' and is_hist_leaf()]); if (@$parallel_versions > 1) { print "$name:$cvtype:$instance\n"; next unless $opt_v; foreach my $object (@$parallel_versions) { print "\tversion ", $object->version, "\n"; my ($finduse) = @{ $ccm->finduse($object) }; while (my ($pr, $fu) = each %{ $finduse->[1] }) { print "\t\tused in $pr as $fu\n"; } } } }