Subversion Repositories DevTools

Rev

Rev 3045 | Rev 3559 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 3045 Rev 3347
Line 31... Line 31...
31
use JatsProperties;
31
use JatsProperties;
32
use JatsEnv;
32
use JatsEnv;
33
use ConfigurationFile;
33
use ConfigurationFile;
34
use JatsSvn qw(:All);
34
use JatsSvn qw(:All);
35
use JatsLocateFiles;
35
use JatsLocateFiles;
-
 
36
use JatsBuildFiles;
36
use Encode;
37
use Encode;
37
 
38
 
38
 
39
 
39
#use Data::Dumper;
40
#use Data::Dumper;
40
use Fcntl ':flock'; # import LOCK_* constants
41
use Fcntl ':flock'; # import LOCK_* constants
Line 69... Line 70...
69
my $opt_workDir = '/work';
70
my $opt_workDir = '/work';
70
my $opt_vobMap;
71
my $opt_vobMap;
71
my $opt_preserveProjectBase;
72
my $opt_preserveProjectBase;
72
my $opt_ignoreProjectBaseErrors;
73
my $opt_ignoreProjectBaseErrors;
73
my $opt_ignoreMakeProjectErrors;
74
my $opt_ignoreMakeProjectErrors;
-
 
75
my $opt_ignoreBuildFileClashes;
74
my $opt_forceProjectBase;
76
my $opt_forceProjectBase;
75
my @opt_limitProjectBase;
77
my @opt_limitProjectBase;
76
my @opt_mergePaths;
78
my @opt_mergePaths;
77
my $opt_ignoreBadPaths;
79
my $opt_ignoreBadPaths;
78
my $opt_delete;
80
my $opt_delete;
Line 291... Line 293...
291
 
293
 
292
    'rt3070'                          => 'flatVersion',
294
    'rt3070'                          => 'flatVersion',
293
 
295
 
294
    'TRACS'                           => 'IgnoreMakeProject,DeleteFiles=*.plg',   # not tested
296
    'TRACS'                           => 'IgnoreMakeProject,DeleteFiles=*.plg',   # not tested
295
 
297
 
-
 
298
    'qtobeapp'                        => 'Trunk=.uk',
-
 
299
 
-
 
300
    'br_applets'                      => 'flatTime,LimitProjectBase=/ProjectCD/seattle'.
-
 
301
                                       ',mergePaths=++:build/**:Sales/**:FarePayment/**:KCM/**:unit_test/**:VP/**:WSF/**'.
-
 
302
                                       ',processRipples',
-
 
303
    
-
 
304
 
296
 
305
 
297
    'icl'                   => 'IgnoreProjectBase,',
306
    'icl'                   => 'IgnoreProjectBase,',
298
    'itso'                  => 'IgnoreProjectBase,',
307
    'itso'                  => 'IgnoreProjectBase,',
299
#    'daf_osa_mos'           => 'IgnoreProjectBase,',
308
#    'daf_osa_mos'           => 'IgnoreProjectBase,',
300
    'daf_utils_mos'         => 'IgnoreProjectBase,',
309
    'daf_utils_mos'         => 'IgnoreProjectBase,',
Line 558... Line 567...
558
        $opt_name = $opt_mergePackages;
567
        $opt_name = $opt_mergePackages;
559
        @ARGV = qw (
568
        @ARGV = qw (
560
                    linux_kernel_viper
569
                    linux_kernel_viper
561
                    linux_kernel_cobra
570
                    linux_kernel_cobra
562
                );
571
                );
-
 
572
 
-
 
573
    } elsif ( $opt_mergePackages eq 'seattleBr' ) {
-
 
574
        $opt_name = 'br_applets';
-
 
575
        @ARGV = qw (
-
 
576
                    br_applet_cst
-
 
577
                    br_applet_gak_wsf
-
 
578
                    br_applet_gak_wsf_pos
-
 
579
                    br_applet_obftp_ct
-
 
580
                    br_applet_obftp_et
-
 
581
                    br_applet_obftp_kcm
-
 
582
                    br_applet_obftp_kt
-
 
583
                    br_applet_obftp_pt
-
 
584
                    br_applet_obftp_st
-
 
585
                    br_applet_pftp_ct_brt
-
 
586
                    br_applet_pftp_ct_vanpool
-
 
587
                    br_applet_pftp_kcm_dart
-
 
588
                    br_applet_pftp_kcm_rr
-
 
589
                    br_applet_pftp_kcm_vanpool
-
 
590
                    br_applet_pftp_kt
-
 
591
                    br_applet_pftp_pt_vanpool
-
 
592
                    br_applet_pftp_st
-
 
593
                    br_applet_pftp_st_llr
-
 
594
                    br_applet_pftp_wsf
-
 
595
                    br_applet_saftp_ct_brt
-
 
596
                    br_applet_saftp_kcm_rr
-
 
597
                    br_applet_saftp_st
-
 
598
                    br_applet_saftp_st_llr
-
 
599
                    br_applet_tru
-
 
600
                    br_applet_tvm
-
 
601
                    unit_test_br_cst
-
 
602
                    unit_test_br_gak
-
 
603
                    unit_test_br_kcm_ct_saftp
-
 
604
                    unit_test_br_obftp
-
 
605
                    unit_test_br_st_saftp
-
 
606
                    unit_test_br_vanpool
-
 
607
                    SalesConfiguration
-
 
608
                );
563
    } else
609
    } else
564
    {
610
    {
565
        Error ("Unknown Merge Package Name: $opt_mergePackages");
611
        Error ("Unknown Merge Package Name: $opt_mergePackages");
566
    }
612
    }
567
}
613
}
Line 676... Line 722...
676
    $versions{$tip}{Tip} = 1 if $tip;
722
    $versions{$tip}{Tip} = 1 if $tip;
677
}
723
}
678
 
724
 
679
#
725
#
680
#   Generate dumps and images
726
#   Generate dumps and images
-
 
727
#       Always create image first - we are doing it after every transfer
681
#
728
#
682
if ( $opt_images )
729
if ( $opt_images || 1 )
683
{
730
{
684
    createImages();
731
    createImages();
685
}
732
}
686
 
733
 
687
if ( $opt_dump )
734
if ( $opt_dump )
Line 982... Line 1029...
982
        if ( index( $data, ',IgnoreMakeProject,' ) >= 0) {
1029
        if ( index( $data, ',IgnoreMakeProject,' ) >= 0) {
983
            $opt_ignoreMakeProjectErrors = 1;
1030
            $opt_ignoreMakeProjectErrors = 1;
984
            Message ("Ignore MakeProject Usage");
1031
            Message ("Ignore MakeProject Usage");
985
        }
1032
        }
986
 
1033
 
-
 
1034
        if ( index( $data, ',IgnoreBuildFileClash,' ) >= 0) {
-
 
1035
            $opt_ignoreBuildFileClashes = 1;
-
 
1036
            Message ("Ignoring Build File Clashes");
-
 
1037
        }
-
 
1038
 
987
        if ( index( $data, ',IgnoreBadPath,' ) >= 0) {
1039
        if ( index( $data, ',IgnoreBadPath,' ) >= 0) {
988
            $opt_ignoreBadPaths = 1;
1040
            $opt_ignoreBadPaths = 1;
989
            Message ("Ignore Bad Paths in makefile Usage");
1041
            Message ("Ignore Bad Paths in makefile Usage");
990
        }
1042
        }
991
        
1043
        
992
        if ( index( $data, ',utf8,' ) >= 0) {
1044
        if ( index( $data, ',utf8,' ) >= 0) {
993
            $mustConvertFileNames = 1;
1045
            $mustConvertFileNames = 1;
994
            Message ("Convert filenames to UTF8");
1046
            Message ("Convert filenames to UTF8");
995
        }
1047
        }
-
 
1048
 
-
 
1049
        if ( $data =~ m~,Trunk=(.*?),~ ) {
-
 
1050
            my $tt = $1;
-
 
1051
            $Projects{$tt}{Trunk} = 1;
-
 
1052
            Message ("Force project to trunk: $tt");
-
 
1053
        }
996
    }
1054
    }
997
 
1055
 
998
    Message("Package Type: $packageType, $pruneModeString");
1056
    Message("Package Type: $packageType, $pruneModeString");
999
}
1057
}
1000
 
1058
 
Line 1960... Line 2018...
1960
    }
2018
    }
1961
    else
2019
    else
1962
    {
2020
    {
1963
        #
2021
        #
1964
        #   Call worker function
2022
        #   Call worker function
1965
        #   It will exist on any error so that it can be logged
2023
        #   It will exit on any error so that it can be logged
1966
        #
2024
        #
1967
        $rv = newPackageVersionBody( \%data, @_ );
2025
        $rv = newPackageVersionBody( \%data, @_ );
1968
        $globalError = 1 if ( $rv >= 10 );
2026
        $globalError = 1 if ( $rv >= 10 );
1969
    }
2027
    }
1970
 
2028
 
Line 2299... Line 2357...
2299
    {
2357
    {
2300
        #
2358
        #
2301
        #   Create CC view
2359
        #   Create CC view
2302
        #   Import into Subversion View
2360
        #   Import into Subversion View
2303
        #
2361
        #
2304
        $rv = extractFilesFromClearCase( $data, $cc_path, $cc_label );
2362
        $rv = extractFilesFromClearCase( $data, $cc_path, $cc_label, $entry );
2305
        return $rv if ( $rv );
2363
        return $rv if ( $rv );
2306
    }
2364
    }
-
 
2365
    
2307
 
2366
 
2308
    #
2367
    #
2309
    #   Delete specified files from the source tree
2368
    #   Delete specified files from the source tree
2310
    #
2369
    #
2311
    if ( @opt_deleteFiles )
2370
    if ( @opt_deleteFiles )
Line 2542... Line 2601...
2542
    {
2601
    {
2543
        $data->{errStr} = 'Failed to import to SVN';
2602
        $data->{errStr} = 'Failed to import to SVN';
2544
        return 12;
2603
        return 12;
2545
    }
2604
    }
2546
 
2605
 
-
 
2606
    #
-
 
2607
    #   Some packages generate multiple packages
-
 
2608
    #   Some of these are the result of merging several packages
-
 
2609
    #   so we can only do this detection After the import
-
 
2610
    #
-
 
2611
    #   Detect potential build problems where multiple buildfiles
-
 
2612
    #   exists and cannot be resolved by our build system
-
 
2613
    #
-
 
2614
    #   This is not a show stopper (yet)
-
 
2615
    #
-
 
2616
    if (detectBuildFileClashes($data, 'SvnImportDir'))
-
 
2617
    {
-
 
2618
        unless ( $opt_ignoreBuildFileClashes )
-
 
2619
        {
-
 
2620
            $data->{BuildFileClash}++;
-
 
2621
            Message ("Build File Clash detected");
-
 
2622
        }
-
 
2623
    }
-
 
2624
 
2547
    $versions{$entry}{TagCreated} = 1;
2625
    $versions{$entry}{TagCreated} = 1;
2548
    $firstVersionCreated = $entry unless ( $firstVersionCreated );
2626
    $firstVersionCreated = $entry unless ( $firstVersionCreated );
2549
 
2627
 
2550
    #
2628
    #
2551
    #   Read in the Rm Reference
2629
    #   Read in the Rm Reference
Line 2919... Line 2997...
2919
    my $inernalErrorCount = 0;
2997
    my $inernalErrorCount = 0;
2920
    my $notProcessedCount = 0;
2998
    my $notProcessedCount = 0;
2921
    my $badPathCount = 0;
2999
    my $badPathCount = 0;
2922
    my $badProjectBaseCount = 0;
3000
    my $badProjectBaseCount = 0;
2923
    my $badMakeProjectCount = 0;
3001
    my $badMakeProjectCount = 0;
-
 
3002
    my $buildFileClashes = 0;
2924
 
3003
 
2925
    #
3004
    #
2926
    #   Display versions that did get captured
3005
    #   Display versions that did get captured
2927
    #
3006
    #
2928
    foreach my $entry ( @processOrder )
3007
    foreach my $entry ( @processOrder )
Line 2943... Line 3022...
2943
        {
3022
        {
2944
            $processedCount++;
3023
            $processedCount++;
2945
            $badPathCount++ if ($versions{$entry}{data}{BadPath} );
3024
            $badPathCount++ if ($versions{$entry}{data}{BadPath} );
2946
            $badProjectBaseCount++ if ($versions{$entry}{data}{BadProjectBase} );
3025
            $badProjectBaseCount++ if ($versions{$entry}{data}{BadProjectBase} );
2947
            $badMakeProjectCount++ if ($versions{$entry}{data}{BadMakeProject} );
3026
            $badMakeProjectCount++ if ($versions{$entry}{data}{BadMakeProject} );
-
 
3027
            $buildFileClashes++ if ($versions{$entry}{data}{BuildFileClash} );
2948
            next;
3028
            next;
2949
        }
3029
        }
2950
 
3030
 
2951
        my $reason = $versions{$entry}{data}{errStr} || '';
3031
        my $reason = $versions{$entry}{data}{errStr} || '';
2952
        my $tag = $versions{$entry}{vcsTag}|| 'No Tag';
3032
        my $tag = $versions{$entry}{vcsTag}|| 'No Tag';
Line 2982... Line 3062...
2982
    Warning ("Multiple source paths", @multiplePaths ) if ( scalar @multiplePaths > 1 );
3062
    Warning ("Multiple source paths", @multiplePaths ) if ( scalar @multiplePaths > 1 );
2983
    Message ("Packages Relabled: $packageReLabelCount") if ( $packageReLabelCount );
3063
    Message ("Packages Relabled: $packageReLabelCount") if ( $packageReLabelCount );
2984
    Warning ("Packages with Bad Paths: $badPathCount") if ( $badPathCount );
3064
    Warning ("Packages with Bad Paths: $badPathCount") if ( $badPathCount );
2985
    Warning ("Packages with Bad ProjectBase: $badProjectBaseCount") if ( $badProjectBaseCount );
3065
    Warning ("Packages with Bad ProjectBase: $badProjectBaseCount") if ( $badProjectBaseCount );
2986
    Warning ("Packages with MakeProjects: $badMakeProjectCount") if ( $badMakeProjectCount );
3066
    Warning ("Packages with MakeProjects: $badMakeProjectCount") if ( $badMakeProjectCount );
-
 
3067
    Warning ("Build File Clashes Found: $buildFileClashes") if ( $buildFileClashes );
2987
    Warning ("Global Error Detected") if ( $globalError );
3068
    Warning ("Global Error Detected") if ( $globalError );
2988
    Message ("---- All Done -----");
3069
    Message ("---- All Done -----");
2989
}
3070
}
2990
 
3071
 
2991
#-------------------------------------------------------------------------------
3072
#-------------------------------------------------------------------------------
Line 2995... Line 3076...
2995
#                   May take a while as we handle nasty errors
3076
#                   May take a while as we handle nasty errors
2996
#
3077
#
2997
# Inputs          : $data           - Hash of good stuff from newPackageVersionBody
3078
# Inputs          : $data           - Hash of good stuff from newPackageVersionBody
2998
#                   $cc_path
3079
#                   $cc_path
2999
#                   $cc_label
3080
#                   $cc_label
-
 
3081
#                   $entry          - original PV entry
3000
#
3082
#
3001
# Returns         : exit code
3083
# Returns         : exit code
3002
#                   Sets up
3084
#                   Sets up
3003
#                       $data->{errStr}
3085
#                       $data->{errStr}
3004
#                       $data->{errCode}
3086
#                       $data->{errCode}
3005
#                   As per newPackageVersionBody
3087
#                   As per newPackageVersionBody
3006
#
3088
#
3007
sub extractFilesFromClearCase
3089
sub extractFilesFromClearCase
3008
{
3090
{
3009
    my ($data, $cc_path, $cc_label) = @_;
3091
    my ($data, $cc_path, $cc_label, $entry) = @_;
3010
    my $tryCount = 0;
3092
    my $tryCount = 0;
3011
    my $rv = 99;
3093
    my $rv = 99;
3012
 
3094
 
3013
    $data->{ViewRoot} = ( defined $opt_name && ! defined $opt_mergePackages )? $opt_name : "$cc_label";
3095
    $data->{ViewRoot} = ( defined $opt_name && ! defined $opt_mergePackages )? $opt_name : "$cc_label";
3014
    $data->{ViewPath} =  $data->{ViewRoot} . $cc_path;
3096
    $data->{ViewPath} =  $data->{ViewRoot} . $cc_path;
Line 3021... Line 3103...
3021
        $data->{ViewPath} =  $data->{ViewRoot} . '/' . $cc_vob;
3103
        $data->{ViewPath} =  $data->{ViewRoot} . '/' . $cc_vob;
3022
        Message ("Preserving Project Base");
3104
        Message ("Preserving Project Base");
3023
    }
3105
    }
3024
    $data->{ViewPath} =~  tr~/~/~s;
3106
    $data->{ViewPath} =~  tr~/~/~s;
3025
 
3107
 
-
 
3108
    #
-
 
3109
    #   Some versions are bad and have been manually marked as bad
-
 
3110
    #
-
 
3111
    if ( $opt_reuse && -f "$data->{ViewRoot}/cc2svn_ignore" )
-
 
3112
    {
-
 
3113
        Message ("View specifically ignored");
-
 
3114
        $data->{errStr} = 'View specifically ignored';
-
 
3115
        $data->{errCode} = '0';
-
 
3116
        return 4;               # Will Retain view
-
 
3117
    }
-
 
3118
 
3026
    if ( $opt_reuse && -d $data->{ViewPath}  )
3119
    if ( $opt_reuse && -d $data->{ViewPath}  )
3027
    {
3120
    {
3028
        Message ("Reusing view: $cc_label");
3121
        Message ("Reusing view: $cc_label");
-
 
3122
 
-
 
3123
        #
-
 
3124
        #   Br applet kludge - can be removed later
-
 
3125
        #   Add some nice data to each view
-
 
3126
#        open (FH, '>' , $data->{ViewRoot} . '/cc2svn_tag' ) || Error ("Cannot open '$data->{ViewRoot}/cc2svn_tag'");
-
 
3127
#        print FH $versions{$entry}{name},' ',$versions{$entry}{vname},"\n";
-
 
3128
#        close FH;
3029
        return 0;
3129
        return 0;
3030
    }
3130
    }
3031
 
3131
 
3032
    while ( $rv == 99 ) {
3132
    while ( $rv == 99 ) {
3033
        my @args;
3133
        my @args;
Line 3129... Line 3229...
3129
    $data->{ViewPath} =  $data->{ViewRoot};
3229
    $data->{ViewPath} =  $data->{ViewRoot};
3130
    $data->{ViewPath} =~  tr~/~/~s;
3230
    $data->{ViewPath} =~  tr~/~/~s;
3131
    
3231
    
3132
    if ( $opt_reuse && -d $data->{ViewPath}  )
3232
    if ( $opt_reuse && -d $data->{ViewPath}  )
3133
    {
3233
    {
-
 
3234
        #
-
 
3235
        #   Br applet kludge - can be removed later
-
 
3236
        #   Add some nice data to each view
-
 
3237
#        open (FH, '>' , $data->{ViewRoot} . '/cc2svn_tag' ) || Error ("Cannot open '$data->{ViewRoot}/cc2svn_tag'");
-
 
3238
#        print FH $versions{$entry}{name},' ',$versions{$entry}{vname},"\n";
-
 
3239
#        close FH;
-
 
3240
        
3134
        Message ("Reusing view: $import_label");
3241
        Message ("Reusing view: $import_label");
3135
        return 0;
3242
        return 0;
3136
    }
3243
    }
3137
 
3244
 
3138
    #
3245
    #
Line 3638... Line 3745...
3638
    #
3745
    #
3639
    #   Detect defined, but not used
3746
    #   Detect defined, but not used
3640
    #
3747
    #
3641
    if ( $usesProjectBase && ! $definesProjectBase )
3748
    if ( $usesProjectBase && ! $definesProjectBase )
3642
    {
3749
    {
3643
        Warning ("SetProjectBase - Uses ProjectBase without defining it");
3750
        Warning ("SetProjectBase - Uses Default ProjectBase");
3644
    }
3751
    }
3645
 
3752
 
3646
    if ( ! $usesProjectBase && $definesProjectBase )
3753
    if ( ! $usesProjectBase && $definesProjectBase )
3647
    {
3754
    {
3648
        Warning ("SetProjectBase - Defines ProjectBase without using it");
3755
        Warning ("SetProjectBase - Defines ProjectBase without using it");
Line 3655... Line 3762...
3655
    }
3762
    }
3656
    return $retval;
3763
    return $retval;
3657
}
3764
}
3658
 
3765
 
3659
#-------------------------------------------------------------------------------
3766
#-------------------------------------------------------------------------------
-
 
3767
# Function        : detectBuildFileClashes
-
 
3768
#
-
 
3769
# Description     : Scan a directory for multiple buildfiles and conflicts
-
 
3770
#                   Only works for Jats build.pl files - at the moment
-
 
3771
#
-
 
3772
# Inputs          : $data       - PackageVersion Data
-
 
3773
#                   $rootDir    - Directory to scan
-
 
3774
#
-
 
3775
# Returns         : 0                   - All is well
-
 
3776
#                   !0                  - Multiple build files found
-
 
3777
#
-
 
3778
sub detectBuildFileClashes
-
 
3779
{
-
 
3780
    my ($pvdata, $rootDir) = @_;
-
 
3781
    my %data;
-
 
3782
    my $rv = 0;
-
 
3783
Message ('Detect Build File Clashes');
-
 
3784
 
-
 
3785
    my $bscanner = BuildFileScanner ( $rootDir, 'build.pl' );
-
 
3786
    my $count = $bscanner->locate();
-
 
3787
 
-
 
3788
    #
-
 
3789
    #   None found - OK ( but not good )
-
 
3790
    #
-
 
3791
    return $rv unless ( $count );
-
 
3792
 
-
 
3793
    #
-
 
3794
    #   Process all the build files in the tree
-
 
3795
    #
-
 
3796
    $bscanner->scan();
-
 
3797
    my @buildfiles = $bscanner->getMatchList();
-
 
3798
#   DebugDumpData('$bscanner', $bscanner );
-
 
3799
#   DebugDumpData('@buildfiles', \@buildfiles );
-
 
3800
#   exit 99;
-
 
3801
 
-
 
3802
    foreach my $bf ( @buildfiles )
-
 
3803
    {
-
 
3804
        my $bdir = $bf->{dir};
-
 
3805
        my $bname = $bf->{name};
-
 
3806
        my $bversion = $bf->{version};
-
 
3807
Information ("BuildFiles: $bname, $bversion : $bdir");
-
 
3808
 
-
 
3809
        if ( exists ($data{$bname}{count}) && ($data{$bname}{count} > 1) )
-
 
3810
        {
-
 
3811
            Message ("MultipleBuildFiles for $bname ($bversion)");
-
 
3812
            $rv = 1;
-
 
3813
        }
-
 
3814
        $data{$bname}{count}++;
-
 
3815
        push @{$data{$bname}{versions}}, $bversion;
-
 
3816
    }
-
 
3817
 
-
 
3818
    return $rv;
-
 
3819
}
-
 
3820
 
-
 
3821
#-------------------------------------------------------------------------------
3660
# Function        : findDirWithStuff
3822
# Function        : findDirWithStuff
3661
#
3823
#
3662
# Description     : Find a directory that contains more than just another subdir
3824
# Description     : Find a directory that contains more than just another subdir
3663
#                   Note: don't use 'glob' it doesn't work if the name has a space in it.
3825
#                   Note: don't use 'glob' it doesn't work if the name has a space in it.
3664
#
3826
#
Line 4816... Line 4978...
4816
        unless ( $opt_repo || $opt_vobMap );
4978
        unless ( $opt_repo || $opt_vobMap );
4817
    my $r1 = ($opt_repo || '') . '/' . ($opt_vobMap || '') . '/' . ($opt_repoSubdir || '') ;
4979
    my $r1 = ($opt_repo || '') . '/' . ($opt_vobMap || '') . '/' . ($opt_repoSubdir || '') ;
4818
    $r1 = 'Import_test/' . $r1 if ( $opt_useTestRepo );
4980
    $r1 = 'Import_test/' . $r1 if ( $opt_useTestRepo );
4819
    $r1 =~ s~//~/~g;
4981
    $r1 =~ s~//~/~g;
4820
    $r1 =~ s~^/~~;
4982
    $r1 =~ s~^/~~;
-
 
4983
    $r1 =~ s~/\.$~~;
4821
    $r1 =~ s~/$~~;
4984
    $r1 =~ s~/$~~;
4822
    $svnRepo = $opt_repo_base . $r1;
4985
    $svnRepo = $opt_repo_base . $r1;
4823
 
4986
 
4824
    Message( "Repo URL: $svnRepo");
4987
    Message( "Repo URL: $svnRepo");
4825
}
4988
}
Line 5017... Line 5180...
5017
    #   Process data
5180
    #   Process data
5018
    foreach my $entry ( @svnDataItems )
5181
    foreach my $entry ( @svnDataItems )
5019
    {
5182
    {
5020
        my $name;
5183
        my $name;
5021
        my $isaBranch;
5184
        my $isaBranch;
5022
        my $target = $entry->{target};
5185
        my $target = $entry->{'target'};
5023
        if ( $target =~ m~/tags/(.*)~ ) {
5186
        if ( $target =~ m~/tags/(.*)~ ) {
5024
            $name = $1;
5187
            $name = $1;
5025
            $svnData{tags}{$name} = 1;
5188
            $svnData{tags}{$name} = 1;
5026
        } elsif ( $target =~ m~/branches/(.*)~ )  {
5189
        } elsif ( $target =~ m~/branches/(.*)~ )  {
5027
            $name = $1;
5190
            $name = $1;
Line 5029... Line 5192...
5029
        } else {
5192
        } else {
5030
            $svnData{nonTag}{$target} = 1;
5193
            $svnData{nonTag}{$target} = 1;
5031
        }
5194
        }
5032
 
5195
 
5033
        my $fromBranch;
5196
        my $fromBranch;
5034
        if ( $entry->{fromPath} =~ m~/trunk$~  ) {
5197
        if ( $entry->{'copyfrom-path'} =~ m~/trunk$~  ) {
5035
            $fromBranch = 'trunk';
5198
            $fromBranch = 'trunk';
5036
        } elsif ( $entry->{fromPath} =~ m~/branches/(.*)~ ) {
5199
        } elsif ( $entry->{'copyfrom-path'} =~ m~/branches/(.*)~ ) {
5037
            $fromBranch = $1;
5200
            $fromBranch = $1;
5038
        }
5201
        }
5039
 
5202
 
5040
        # largest Rev number on branch
5203
        # largest Rev number on branch
5041
        if ( exists $svnData{max} && exists $svnData{max}{$fromBranch} )
5204
        if ( exists $svnData{max} && exists $svnData{max}{$fromBranch} )
5042
        {
5205
        {
5043
            if ( $svnData{max}{$fromBranch}{rev} <  $entry->{fromRev} )
5206
            if ( $svnData{max}{$fromBranch}{rev} <  $entry->{'copyfrom-rev'} )
5044
            {
5207
            {
5045
                $svnData{max}{$fromBranch}{rev} =  $entry->{fromRev};
5208
                $svnData{max}{$fromBranch}{rev} =  $entry->{'copyfrom-rev'};
5046
                $svnData{max}{$fromBranch}{name} = $name;
5209
                $svnData{max}{$fromBranch}{name} = $name;
5047
            }
5210
            }
5048
        }
5211
        }
5049
        else
5212
        else
5050
        {
5213
        {
5051
            $svnData{max}{$fromBranch}{rev} =  $entry->{fromRev};
5214
            $svnData{max}{$fromBranch}{rev} =  $entry->{'copyfrom-rev'};
5052
            $svnData{max}{$fromBranch}{name} = $name;
5215
            $svnData{max}{$fromBranch}{name} = $name;
5053
        }
5216
        }
5054
    }
5217
    }
5055
 
5218
 
5056
    foreach my $branch ( keys %{$svnData{max}} )
5219
    foreach my $branch ( keys %{$svnData{max}} )
Line 5107... Line 5270...
5107
# Inputs          : 
5270
# Inputs          : 
5108
#
5271
#
5109
# Returns         : 
5272
# Returns         : 
5110
#
5273
#
5111
my $entryData;
5274
my $entryData;
-
 
5275
my $entryActive;
5112
sub  ProcessSvnLog
5276
sub  ProcessSvnLog
5113
{
5277
{
5114
    my ($self, $line ) = @_;
5278
    my ($self, $line ) = @_;
-
 
5279
    $entryActive = '' unless ( defined $entryActive );
-
 
5280
    return unless ( $line );
5115
#print "----- $line\n";
5281
#print "----- ($entryActive) $line\n";
-
 
5282
 
5116
    if ( $line =~ m~^<logentry~ ) {
5283
    if ( $line =~ m~^<logentry~ ) {
5117
        $entryData = ();
5284
        $entryData = ();
-
 
5285
        $entryActive = 'A';
5118
 
5286
 
5119
    } elsif ( $line =~ m~^\s+revision="(\d+)"~ ) {
5287
    } elsif ( ($line =~ s~\s*(.+?)="(.*)">(.*)</path>$~~) && ($entryActive eq 'A') ) {
-
 
5288
        #
-
 
5289
        #   Last entry has two items
-
 
5290
        #       Attribute
5120
        $entryData->{Rev} = $1;
5291
        #       Data Item
5121
 
5292
        #
5122
    } elsif ( $line =~ m~^\s+copyfrom-path="(.*)"~ ) {
5293
        $entryData->{$1} = $2;
5123
        $entryData->{fromPath} = $1;
5294
        $entryData->{target} = $3;
5124
 
5295
 
5125
    } elsif ( $line =~ m~^\s+copyfrom-rev="(\d+)"~ ) {
5296
    } elsif ( ($line =~ m~\s*(.*?)="(.*)"~) && ($entryActive eq 'A') ) {
-
 
5297
        #
5126
        $entryData->{fromRev} = $1;
5298
        #   Attribute
5127
        
5299
        #
5128
    } elsif ( $line =~ m~\s+action=.*?>(.*)</path~ ) {
-
 
5129
        $entryData->{target} = $1;
5300
        $entryData->{$1} = $2;
5130
 
5301
 
5131
    } elsif ( $line =~ m~</logentry~ ) {
5302
    } elsif ( $line =~ m~</logentry~ ) {
-
 
5303
        $entryActive = '';
5132
        if ( exists $entryData->{fromPath} )
5304
        if ( exists $entryData->{'copyfrom-path'} )
5133
        {
5305
        {
5134
#            DebugDumpData("Data", $entryData);
5306
#            DebugDumpData("Data", $entryData);
5135
            push @svnDataItems, $entryData;
5307
            push @svnDataItems, $entryData;
5136
        }
5308
        }
5137
    }
5309
    }
Line 5257... Line 5429...
5257
    -delete            - Delete SVN package before test
5429
    -delete            - Delete SVN package before test
5258
    -[no]relabel       - Attempt to relabel dirs in packages that don't extract
5430
    -[no]relabel       - Attempt to relabel dirs in packages that don't extract
5259
    -testRmDatabase    - Use test database
5431
    -testRmDatabase    - Use test database
5260
    -[no]fromSvn       - Also extract packages from SVN
5432
    -[no]fromSvn       - Also extract packages from SVN
5261
    -[no]testRepo      - Force use of a test repository.
5433
    -[no]testRepo      - Force use of a test repository.
-
 
5434
    -resume            - Resume aborted import (dangerous)
5262
 
5435
 
5263
=head1 OPTIONS
5436
=head1 OPTIONS
5264
 
5437
 
5265
=over 8
5438
=over 8
5266
 
5439