Subversion Repositories DevTools

Rev

Rev 2764 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
392 dpurdie 1
########################################################################
5709 dpurdie 2
# Copyright (c) VIX TECHNOLOGY (AUST) LTD
392 dpurdie 3
#
4
# Module name   : cc2svn_updaterm.pl
5
# Module type   : Makefile system
6
# Compiler(s)   : Perl
7
# Environment(s): jats
8
#
9
# Description   : Update RM with ClearCase to Subversion conversion info
10
#
11
# Usage:
12
#
13
# Version   Who      Date        Description
14
#
15
#......................................................................#
16
 
17
require 5.008_002;
18
use strict;
19
use warnings;
20
 
21
use Pod::Usage;
22
use Getopt::Long;
23
 
24
use JatsError;
25
use JatsRmApi;
26
 
27
#
28
#   Globals
29
#
30
my $RM_DB;
31
my $VERSION = "1.0.0";                      # Update this
32
my %packageVcs;
2764 dpurdie 33
my %pkgInfo;
392 dpurdie 34
#
35
#   Options
36
#
37
my $opt_verbose = 0;
38
my $opt_help = 0;
39
my $opt_package;
40
my $opt_rm = 'RELMANU1';
41
my $opt_test = 1;
42
my $opt_force;
43
my $opt_checkOperation;
1197 dpurdie 44
my $opt_report = 0;
45
my $opt_live;
2429 dpurdie 46
my $opt_grep;
392 dpurdie 47
 
48
#-------------------------------------------------------------------------------
49
# Function        : Main Entry
50
#
51
# Description     :
52
#
53
# Inputs          :
54
#
55
# Returns         :
56
#
57
my $result = GetOptions (
58
                "help+"         => \$opt_help,          # flag, multiple use allowed
59
                "manual:3"      => \$opt_help,
60
                "verbose:+"     => \$opt_verbose,       # flag
61
                'package:s'     => \$opt_package,
62
                'database:s'    => \$opt_rm,
63
                'test!'         => \$opt_test,
64
                'force!'        => \$opt_force,
65
                'check:s'       => \$opt_checkOperation,
1197 dpurdie 66
                'report:+'      => \$opt_report,
2429 dpurdie 67
                'live!'         => \$opt_live,
68
                'grep'          => \$opt_grep,          # Grep friendly - display pkg name
392 dpurdie 69
                );
70
 
71
#
72
#   Process help and manual options
73
#
74
pod2usage(-verbose => 0, -message => "Version: $VERSION")  if ($opt_help == 1  || ! $result);
75
pod2usage(-verbose => 1)  if ($opt_help == 2);
76
pod2usage(-verbose => 2)  if ($opt_help > 2);
77
 
78
ErrorConfig( 'name'    =>'CC2SVN_UPDATERM',
79
             'verbose' => $opt_verbose,
80
              );
81
 
82
Error ("Must specify a package name") unless ( defined $opt_package || $#ARGV >= 0 );
83
 
1197 dpurdie 84
if ( $opt_live )
85
{
86
    $opt_rm = 'RELEASEM';
87
}
88
 
89
 
392 dpurdie 90
$ENV{GBE_RM_LOCATION} = 'jdbc:oracle:thin:@auperaprm01:1521:' . $opt_rm;
91
unless ( $opt_rm eq 'RELEASEM' )
92
{
1451 dpurdie 93
    Warning ("Using internal user/password - Test Database");
392 dpurdie 94
    $ENV{GBE_RM_USERNAME} = 'RELEASE_MANAGER';
95
    $ENV{GBE_RM_PASSWORD} = 'RELEASE_MANAGER';
1340 dpurdie 96
    $ENV{GBE_RM_LOCATION} = 'jdbc:oracle:thin:@auperaora07.vix.local:1521:' . $opt_rm;
392 dpurdie 97
}
98
else
99
{
100
    $ENV{GBE_RM_USERNAME} = 'RM_READONLY';
101
    $ENV{GBE_RM_PASSWORD} = 'RM_READONLY';
102
}
103
 
104
#
105
#   Check operation
106
#
107
if ( $opt_checkOperation )
108
{
109
    Message ("Check RM operation");
110
    Error ("PVID must be specified via -package option") unless $opt_package;
111
    intoReleaseManager ($opt_package, $opt_checkOperation);
112
    Message ("Check Complete OK");
113
    exit 0;
114
}
115
 
116
 
2764 dpurdie 117
foreach my $fileName ( $opt_package, @ARGV )
392 dpurdie 118
{
2764 dpurdie 119
    next unless ( defined $fileName );
120
    next if ( $fileName eq 'Dataman' );
121
 
122
    $fileName =~ s~\.data$~~;
123
    $fileName =~ s~\.svg$~~;
124
    $fileName =~ s~\.importlog$~~;
125
    readPackageDataFile($fileName);
126
 
127
    foreach my $packageName( sort keys %pkgInfo )
128
    {
129
        getVcsData($packageName) if ( $opt_report <= 1 || $opt_report == 6 );
130
        processPackage($packageName);
131
    }
392 dpurdie 132
}
133
exit 0;
134
 
135
#-------------------------------------------------------------------------------
136
# Function        : getVcsData
137
#
138
# Description     : Get existing VCS data from the release Manager
139
#
140
# Inputs          : 
141
#
142
# Returns         : 
143
#
144
sub getVcsData
145
{
146
    my ($packageName) = @_;
147
    %packageVcs = ();
148
    my $pkg_id = GetPkgIdByName ( $packageName );
149
    GetData_by_pkg_id ( $pkg_id, $packageName  );
2764 dpurdie 150
    #DebugDumpData("packageVcs", \%packageVcs );
392 dpurdie 151
}
152
 
153
#-------------------------------------------------------------------------------
2764 dpurdie 154
# Function        : readPackageDataFile
392 dpurdie 155
#
2764 dpurdie 156
# Description     : Read in the data file. It may contain data for more
157
#                   than one package - but this is rare
392 dpurdie 158
#
2764 dpurdie 159
# Inputs          : 
392 dpurdie 160
#
2764 dpurdie 161
# Returns         : Fills in %pkgInfo
392 dpurdie 162
#
2764 dpurdie 163
#
392 dpurdie 164
our %ScmVersions;
2764 dpurdie 165
sub readPackageDataFile
392 dpurdie 166
{
2764 dpurdie 167
    %pkgInfo = ();
392 dpurdie 168
    my ($pname) = @_;
169
    my $fname = $pname . '.data';
170
    Verbose2 ('Reading Package Data: ' . $fname);
2429 dpurdie 171
return unless ( -f $fname );
392 dpurdie 172
    Error "Cannot locate $fname" unless ( -f $fname );
173
    %ScmVersions = ();
174
    require $fname;
175
 
176
    Error "Data in $fname is not valid\n"
177
        unless ( keys(%ScmVersions) >= 0 );
178
 
2764 dpurdie 179
    foreach (keys %ScmVersions)
180
    {
181
        my $entry = $ScmVersions{$_};
182
        $pkgInfo{$entry->{name}}{$_} = $entry;
183
    }
392 dpurdie 184
 
2764 dpurdie 185
    %ScmVersions = ();
186
}
187
 
188
#-------------------------------------------------------------------------------
189
# Function        : processPackage
190
#
191
# Description     : Process data for one package
192
#
193
# Inputs          : Name of the package
194
#
195
# Returns         : 
196
#
197
sub processPackage
198
{
199
    my ($pname) = @_;
200
    Error ("Internal: Hash data not found")
201
        unless ( exists $pkgInfo{$pname});
202
    my $pkgData = $pkgInfo{$pname};
203
 
204
    my @updateList;
392 dpurdie 205
    my $essentialCount = 0;
206
    my $errorCount = 0;
207
    my $ecount = 0;
2429 dpurdie 208
    my $notOk = 0;
392 dpurdie 209
    my $transferred = 0;
210
    my $totalCount = 0;
211
    my $diffCount = 0;
212
    my $missingPVID = 0;
213
    my $rippleProcessed = 0;
214
    my $globalErrors = 0;
215
    my $notProcessed = 0;
2764 dpurdie 216
    my $prjBase = 0;
2429 dpurdie 217
    my $pkgProject = 0;
2478 dpurdie 218
    my $badPaths = 0;
1270 dpurdie 219
    my $adjustedPath = 0;
1380 dpurdie 220
#    my $rtCount = 0;
1342 dpurdie 221
    my $rtErrorCount = 0;
222
 
1270 dpurdie 223
 
2764 dpurdie 224
    foreach (sort {$a <=> $b}  keys(%{$pkgInfo{$pname}} ) )
392 dpurdie 225
    {
2764 dpurdie 226
        my $pkgEntry = $pkgInfo{$pname}{$_};
227
 
392 dpurdie 228
        $totalCount ++;
2764 dpurdie 229
        $notProcessed++ unless $pkgEntry->{Scanned};
230
        $essentialCount++ if ( $pkgEntry->{Essential}  );
231
        $rippleProcessed++ if ( $pkgEntry->{rippleProcessed} );
1270 dpurdie 232
 
2764 dpurdie 233
        $globalErrors++ if ( ($pkgEntry->{data}{errFlags} || '') eq 'e' );
234
        $prjBase++ if ( $pkgEntry->{data}{BadProjectBase} );
235
        $pkgProject++ if ( $pkgEntry->{data}{BadMakeProject} );
236
        $badPaths++ if ( $pkgEntry->{data}{BadPath} );
237
        $adjustedPath++ if ( $pkgEntry->{data}{adjustedPath} );
238
        unless ( $pkgEntry->{TagCreated} )
392 dpurdie 239
        {
2764 dpurdie 240
            $errorCount++ if ( $pkgEntry->{Essential}  );
392 dpurdie 241
            $ecount++;
2764 dpurdie 242
            Verbose ("Package Not Processed: " . $pkgEntry->{vname} . ' - ' . ($pkgEntry->{data}{errStr} || 'Unspecified Error')  );
2429 dpurdie 243
 
2764 dpurdie 244
            unless ( $pkgEntry->{DeadWood} ||  $pkgEntry->{locked} eq 'N' )
2429 dpurdie 245
            {
246
                $notOk++;
2764 dpurdie 247
#Warning ("Package Not OK: " . $pkgEntry->{vname} . ' - ' . ($pkgEntry->{data}{errStr} || 'Unspecified Error')  );
2429 dpurdie 248
            }
249
 
392 dpurdie 250
        }
1342 dpurdie 251
 
2764 dpurdie 252
#        $rtCount += $pkgEntry->{data}{ReleaseTag}{tCount} || 0;
253
#        $rtErrorCount += $pkgEntry->{data}{ReleaseTag}{eCount} || 0;
392 dpurdie 254
    }
255
 
2764 dpurdie 256
    foreach my $pvid (sort {$a <=> $b}  keys(%{$pkgInfo{$pname}} ) )
392 dpurdie 257
    {
2764 dpurdie 258
        my $pkgEntry = $pkgInfo{$pname}{$pvid};
259
        if ( $pkgEntry->{TagCreated} )
392 dpurdie 260
        {
261
            $transferred++;
262
            my $done = '';
2764 dpurdie 263
            my $rmRef = $pkgEntry->{rmRef} ;
392 dpurdie 264
 
265
            my $include = 1;
2764 dpurdie 266
            if ( exists $packageVcs{$pvid} )
392 dpurdie 267
            {
2764 dpurdie 268
                if ( $opt_report == 6 )
269
                {
270
                    $include = 0 if ( $packageVcs{$pvid} =~ m~^SVN::~ );
271
                }
272
                else
273
                {
274
                    $include = 0 if ( ($packageVcs{$pvid} eq $rmRef) );
275
                }
392 dpurdie 276
            }
277
            else
278
            {
279
                $missingPVID++;
280
                $done = ' < Missing' unless $done;
281
                $include = 0 ;
282
            }
283
 
284
            if ( $include || $opt_force)
285
            {
286
                    $diffCount++;
287
                    $done = ' *' unless $done;
2764 dpurdie 288
                    push @updateList, $pvid;
392 dpurdie 289
            }
290
 
2764 dpurdie 291
            Verbose ("Processed: " . $pkgEntry->{vname} . ' :: ' . ($rmRef || '???') . $done );
392 dpurdie 292
 
293
        }
294
    }
295
 
2764 dpurdie 296
    if ( $opt_report == 6 )
297
    {
298
        # Display missing updates
299
        foreach my $entry ( @updateList )
300
        {
301
            print "$pname : $pkgData->{$entry}{vname}\n";
302
        }
303
        return;
304
    }
305
 
2450 dpurdie 306
    if ( $opt_report == 5 )
307
    {
308
        #
309
        #   Packages that use MakeProject
310
        #
311
        return unless ( $pkgProject );
312
        print ("$pname\n");
313
        return;
314
    }
315
 
2429 dpurdie 316
    if ( $opt_report == 3 )
317
    {
318
        #
319
        #   Just the packages that have no problems
320
        #   Short form
321
        #
2764 dpurdie 322
#Debug0("$pname", $notOk ,$globalErrors ,$prjBase ,$pkgProject ,$errorCount ,$notProcessed ,$rtErrorCount);
323
        return if ( $notOk ||$globalErrors || $prjBase || $pkgProject ||  $errorCount || $notProcessed || $rtErrorCount || $badPaths);
2429 dpurdie 324
        print ("$pname\n");
325
        return;
326
    }
327
 
328
    if ( $opt_report == 4 )
329
    {
330
        #
331
        #   Just the packages that Global Errors
332
        #   Short form
333
        #
334
        return if (  !$globalErrors);
335
        print ("$pname\n");
336
        return;
337
    }
338
 
339
 
1197 dpurdie 340
    if ( $opt_report )
341
    {
2764 dpurdie 342
        return unless ($globalErrors || $prjBase || $pkgProject ||  $errorCount || $notProcessed || $rtErrorCount || $badPaths);
1197 dpurdie 343
    }
344
 
392 dpurdie 345
    sub highlight
346
    {
347
        my ($value) = @_;
348
        return $value ? ' <------' : '';
349
    }
350
 
351
    my $rmTotal = scalar keys %packageVcs;
2429 dpurdie 352
    my $tpref = $opt_grep ? "$pname: " : '';
392 dpurdie 353
    Message ("Transfer Stats",
2429 dpurdie 354
            ,"${tpref}Package                   : $pname"
355
            ,"${tpref}Total RM Versions         : $rmTotal"
356
            ,"${tpref}Total Packages Processed  : $totalCount"
357
            ,"${tpref}Packages NOT Processed    : $notProcessed" . highlight($notProcessed)
358
            ,"${tpref}Packages pruned           : " . ($rmTotal - $totalCount)
359
            ,"${tpref}Essential Packages        : $essentialCount"
360
            ,"${tpref}Essential Packages Errors : $errorCount" . highlight($errorCount)
361
            ,"${tpref}Global Import Errors      : $globalErrors" . highlight($globalErrors)
2478 dpurdie 362
 
363
            ,"${tpref}Bad Source Paths          : $badPaths" . highlight($badPaths)
2764 dpurdie 364
            ,"${tpref}ProjectBase Error         : $prjBase" . highlight($prjBase)
2429 dpurdie 365
            ,"${tpref}MakeProject Error         : $pkgProject" . highlight($pkgProject)
366
            ,"${tpref}Adjusted Paths            : $adjustedPath" . highlight($adjustedPath && ($transferred - $adjustedPath))
367
            ,"${tpref}Not Transferred Packages  : $ecount"
368
            ,"${tpref}Transferred Packages      : $transferred" . highlight(!$transferred)
369
#            ,"${tpref}Release Tags applied      : $rtCount"
370
#            ,"${tpref}Release Tag errors        : $rtErrorCount" . highlight($rtErrorCount)
371
            ,"${tpref}Transfer to RM            : $diffCount"
372
            ,"${tpref}Missing PackageVersions   : $missingPVID" . highlight($missingPVID)
373
            ,"${tpref}Ripple Processed Early    : $rippleProcessed" . highlight($rippleProcessed)
392 dpurdie 374
            );
375
 
1197 dpurdie 376
    if ( $opt_report )
377
    {
378
        return;
379
    }
380
 
381
 
392 dpurdie 382
    if ( $opt_test )
383
    {
384
        Message('Test Mode : No changes made to RM');
385
        return;
386
    }
387
 
388
    unless ( $diffCount )
389
    {
390
        Message ('Release Manager entries are all upto date');
391
        return;
392
    }
393
 
394
    #
395
    #   Now do the RM Update
396
    #
397
    Message('Updating Release Manager: ' . $opt_rm);
398
    foreach my $entry ( @updateList )
399
    {
2764 dpurdie 400
        intoReleaseManager ( $entry, $pkgData->{$entry}{vname}  ,$pkgData->{$entry}{rmRef} );
392 dpurdie 401
    }
402
}
403
 
404
#-------------------------------------------------------------------------------
405
# Function        : intoReleaseManager
406
#
407
# Description     : Update VCS tags in RM
408
#
409
# Inputs          : $pvid           - PVId
2764 dpurdie 410
#                   $name           - Package Version (text)
392 dpurdie 411
#                   $tag            - New Tag
412
#
413
# Returns         : 
414
#
415
sub intoReleaseManager
416
{
2764 dpurdie 417
    my ($pvid, $name, $new_tag ) = @_;
392 dpurdie 418
    my @row;
419
    my $user = 3768;            # buildadm
420
 
421
    connectRM(\$RM_DB, $opt_verbose) unless $RM_DB;
422
 
2764 dpurdie 423
    Verbose ("ToRm: $pvid, $name  - $new_tag");
1380 dpurdie 424
    my $m_sqlstr =  "begin release_manager.PK_RMAPI.update_vcs_details($pvid, '$new_tag', $user); end;";
392 dpurdie 425
    my $sth = $RM_DB->prepare($m_sqlstr);
426
    if ( defined($sth) )
427
    {
428
        if ( $sth->execute( ) )
429
        {
430
            if ( $sth->rows )
431
            {
432
                while ( @row = $sth->fetchrow_array )
433
                {
434
                    print "Data: @row\n";
435
                }
436
            }
437
            $sth->finish();
438
        }
439
        else
440
        {
441
            Error("Execute failure: $m_sqlstr", $sth->errstr() );
442
        }
443
    }
444
    else
445
    {
446
        Error("Prepare failure" );
447
    }
448
}
449
 
450
#-------------------------------------------------------------------------------
451
# Function        : GetPkgIdByName
452
#
453
# Description     :
454
#
455
# Inputs          : pkg_name
456
#
457
# Returns         : pkg_id
458
#
459
sub GetPkgIdByName
460
{
461
    my ( $pkg_name ) = @_;
462
    my (@row);
463
    my $pv_id;
464
    my $pkg_id;
465
 
466
    #
467
    #   Establish a connection to Release Manager
468
    #
469
    connectRM(\$RM_DB) unless ( $RM_DB );
470
 
471
    #
472
    #   Extract data from Release Manager
473
    #
474
    my $m_sqlstr = "SELECT pkg.PKG_NAME, pkg.PKG_ID" .
475
                   " FROM RELEASE_MANAGER.PACKAGES pkg" .
476
                   " WHERE pkg.PKG_NAME = \'$pkg_name\'";
477
 
478
    my $sth = $RM_DB->prepare($m_sqlstr);
479
    if ( defined($sth) )
480
    {
481
        if ( $sth->execute( ) )
482
        {
483
            if ( $sth->rows )
484
            {
485
                while ( @row = $sth->fetchrow_array )
486
                {
487
                    Verbose3( "DATA: " . join(',', @row) );
488
                    $pkg_id = $row[1] || 0;
489
                    last;
490
                }
491
            }
492
            else
493
            {
494
                Error ("GetPkgIdByName:No Data for package: $pkg_name");
495
            }
496
            $sth->finish();
497
        }
498
    }
499
    else
500
    {
501
        Error("GetPkgIdByName:Prepare failure" );
502
    }
503
 
504
    return $pkg_id;
505
}
506
 
507
#-------------------------------------------------------------------------------
508
# Function        : GetData_by_pkg_id
509
#
510
# Description     : Create a hash of VCS tags for a given package
511
#
512
# Inputs          : pv_id
513
#
514
# Returns         :
515
#
516
sub GetData_by_pkg_id
517
{
518
    my ( $pkg_id, $packageName ) = @_;
519
    my (@row);
520
 
521
    #
522
    #   Establish a connection to Release Manager
523
    #
524
    Verbose2("Extract package versions from Release Manager: $packageName");
525
    connectRM(\$RM_DB) unless ( $RM_DB );
526
 
527
    #
528
    #   Extract data from Release Manager
529
    #
530
    my $m_sqlstr = "SELECT pkg.PKG_NAME, pv.PKG_VERSION, pkg.PKG_ID, pv.PV_ID, release_manager.PK_RMAPI.return_vcs_tag(pv.PV_ID)".
531
                   " FROM RELEASE_MANAGER.PACKAGES pkg, RELEASE_MANAGER.PACKAGE_VERSIONS pv" .
532
                   " WHERE pv.PKG_ID = \'$pkg_id\' AND pkg.PKG_ID = pv.PKG_ID";
533
 
534
 
535
    my $sth = $RM_DB->prepare($m_sqlstr);
536
    if ( defined($sth) )
537
    {
538
        if ( $sth->execute( ) )
539
        {
540
            if ( $sth->rows )
541
            {
542
                while ( @row = $sth->fetchrow_array )
543
                {
544
                    Verbose3( "DATA: " . join(',', @row) );
545
                    $packageVcs{$row[3]} = $row[4];
546
                }
547
            }
548
            else
549
            {
550
                Error ("GetData_by_pkg_id: No Data: $m_sqlstr");
551
            }
552
            $sth->finish();
553
        }
554
        else
555
        {
556
                Error ("GetData_by_pkg_id: Execute: $m_sqlstr");
557
        }
558
    }
559
    else
560
    {
561
        Error("GetData_by_pkg_id:Prepare failure" );
562
    }
563
}
564
 
565
 
566
#-------------------------------------------------------------------------------
567
#   Documentation
568
#
569
 
570
=pod
571
 
572
=for htmltoc    SYSUTIL::cc2svn::
573
 
574
=head1 NAME
575
 
576
cc2svn_updaterm - Update Release Manager with CC2SVN information
577
 
578
=head1 SYNOPSIS
579
 
580
  jats cc2svn_updaterm [options] [PackageName]*
581
 
582
 Options:
583
    -help              - brief help message
584
    -help -help        - Detailed help message
585
    -man               - Full documentation
586
    -verbose           - Enable verbosity
587
    -[no]test          - Test update. Default: -notest
2429 dpurdie 588
    -[no]live          - Select database. Default: -nolive
392 dpurdie 589
    -package=name      - Specify single package to be processed
1197 dpurdie 590
    -database=name     - Default: RELMANU1 (test db) Live: RELEASEM
392 dpurdie 591
    -[no]force         - Force update of all entries
592
    -check=string      - Check operation with string
1197 dpurdie 593
    -report            - Report on errors
2764 dpurdie 594
    -report=1          - Report on errors
1197 dpurdie 595
    -report=2          - Report on errors, don't access RM
2764 dpurdie 596
    -report=3          - Packages that have no problems
597
    -report=4          - Packages that have global errors
598
    -report=5          - Packages that use MakeProject
599
    -report=6          - Display missing updates
392 dpurdie 600
 
601
=head1 OPTIONS
602
 
603
=over 8
604
 
605
=item B<-help>
606
 
607
Print a brief help message and exits.
608
 
609
=item B<-help -help>
610
 
611
Print a detailed help message with an explanation for each option.
612
 
613
=item B<-man>
614
 
615
Prints the manual page and exits.
616
 
617
=item B<-[no]test>
618
 
619
Invoke the program in test mode. This is the default.
620
 
621
In test mode the program will examine each packages 'data' results file
622
and report status and errors.
623
 
624
In 'notest' the program will update the Release Manager database.
625
 
2429 dpurdie 626
=item B<-[no]live>
627
 
628
Invoke the program in live-database mode. This is the NOT the default.
629
 
630
In live mode the program will access the Live Release Manager database.
631
 
632
In non-live mode the program will access the test (RELMANU1) database
633
 
392 dpurdie 634
=item B<-package=name>
635
 
636
This option will name one package to be processed. Packages to be
637
processed can just be named on the command line.
638
 
639
=item B<-database=name>
640
 
641
This option specifies the target database. The default value is 'RELMANU1'.
642
This is a test database.
643
 
644
The production database is RELEASEM.
645
 
646
The user must specifically specify the database to update the production system.
647
 
648
=item B<-[no]force>
649
 
650
This option will force the Release Manager entries to be updated - even if the
651
current entry matches the desired result.
652
 
653
Useful in testing.
654
 
655
=item B<-check=string>
656
 
657
This option will pass a string directly to the Release Manager updating proceedure.
658
 
659
With this option no packages will be examined or processed.
660
 
661
It is only useful for testing.
662
 
663
=back
664
 
665
=head1 DESCRIPTION
666
 
667
This program is a tool used in the conversion of ClearCase VOBS to subversion.
668
It will:
669
 
670
=over 8
671
 
672
=item *
673
 
674
Process all packages named on the command line or with the -package option.
675
 
676
=item *
677
 
678
Examine the packages '.data' file, whcih is created as the package is inserted
679
into Subversion.
680
 
681
=item *
682
 
683
Report the status of the package import and highlight issues.
684
 
685
=item *
686
 
687
Read the Release Manager entry and ensure that the entry is not the same.
688
If the entry is the same then it will not be updated, unless the '-force'
689
option has been used.
690
 
691
=item *
692
 
693
Insert the new Version Control information into the Release Manager entry.
694
 
695
=back
696
 
697
The default operation of this utility is to test the import process. The
698
user needs to provide specific options in order to update the production
699
database. This is intentional.
700
 
701
=cut
702