1 package Vss2Svn
::SvnRevHandler
;
8 $gCfg{revtimerange
} = 3600;
10 ###############################################################################
12 ###############################################################################
16 my $svncache = Vss2Svn
::DataCache
->new('SvnRevision', 1);
18 if (!defined($svncache)) {
19 print "\nERROR: Could not create cache 'SvnRevision'\n";
25 svncache
=> $svncache,
29 $self = bless($self, $class);
36 ###############################################################################
38 ###############################################################################
42 $self->{timestamp
} = undef;
43 $self->{author
} = undef;
44 $self->{comment
} = undef;
49 ###############################################################################
51 ###############################################################################
53 my($self, $data) = @_;
55 my($physname, $itemtype, $actiontype, $timestamp, $author, $comment) =
56 @
{ $data }{qw( physname itemtype actiontype timestamp author comment )};
57 my($prevtimestamp, $prevauthor, $prevcomment) =
58 @
{ $self }{qw( timestamp author comment )};
60 # Any of the following cause a new SVN revision:
61 # * same file touched more than once
62 # * different author or comment
63 # * time range exceeds threshold num. of seconds (default 3600)
64 # * any action on a directory other than add
66 my $wasseen = $self->{seen
}->{$physname};
69 no warnings
'uninitialized';
70 if(($author ne $prevauthor) || ($comment ne $prevcomment) || $wasseen ||
71 ($timestamp - $prevtimestamp > $gCfg{revtimerange
}) ||
72 ($itemtype == 1 && $actiontype ne 'ADD') ||
73 $self->{commitPending
} ) {
75 $self->new_revision($data);
77 if ($self->{verbose
}) {
78 print "\n**** NEW SVN REVISION ($self->{revnum}): ",
79 join(',', $physname, $timestamp, $author, $comment), "\n";
84 # Any of the following actions needs to be commited the next time:
85 # * any action on a directory other than add
86 # * the first initial creation of the $/ project
87 $self->{commitPending
} = ($itemtype == 1 && $actiontype ne 'ADD') || ($self->{revnum
} == 0);
89 $self->{seen
}->{$physname}++;
91 @
{ $self }{qw( timestamp author comment)} =
92 ($timestamp, $author, $comment);
96 ###############################################################################
98 ###############################################################################
100 my($self, $data) = @_;
102 $self->{svncache
}->add( @
{ $data }{qw(timestamp author comment)} );
103 $self->{revnum
} = $self->{svncache
}->{pkey
};
105 $self->{commitPending
} = undef;
109 ###############################################################################
111 ###############################################################################
115 $self->{svncache
}->commit();
118 ###############################################################################
120 ###############################################################################
121 sub SetRevTimeRange
{
122 my($class, $range) = @_;
124 $gCfg{revtimerange
} = $range;
125 } # End SetRevTimeRange