#!/usr/bin/perl
#
#*******************************************************************************
#
#Copyright (c) 2009, Perforce Software, Inc. All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
#
# 1. Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
#
# 2. Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
# ARE DISCLAIMED. IN NO EVENT SHALL PERFORCE SOFTWARE, INC. BE LIABLE FOR ANY
# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#*******************************************************************************
#
#Author: Stephen Moon
#
#Date: October 18, 2010
#Program: Finds out stale branches of a depot
#
#*******************************************************************************
use warnings;
use strict;
my $argc = @ARGV;
if($argc != 1) { die "Usage: staleBranches.pl <depot_name>\n"; }
my $p4 = "p4 -u smoon -p 10.0.0.169:20101";
my ($branch,$change,$date,$user,$client) = ("","","","","");
my $regChg = qr/.*^\.\.\. change (\d+)\n^\.\.\./sm;
my $regTime = qr/time (\d+)\n^\.\.\./sm;
my $regUser = qr/user (\S+)\n^\.\.\./sm;
my $regClient = qr/client (\S+)\n^\.\.\./sm;
my $chgHashRef = {};
open(OUT,">$ARGV[0].txt") or die "Unable to open the file\n";
foreach(`$p4 dirs //$ARGV[0]/*`) {
#print;
chomp;
$branch = $_;
$/ = ''; #sets input record separator to paragraph
foreach(`$p4 -ztag changes -m2 $_/...`) {
if(/$regChg $regTime $regUser $regClient/) {
$change = $1; $date = $2; $user = $3; $client = $4;
print "$change, $date, $user, $client\n";
$chgHashRef->{$date}{'branch'} = $branch;
$chgHashRef->{$date}{'change'} = $change;
$chgHashRef->{$date}{'user'} = $user;
$chgHashRef->{$date}{'client'} = $client;
}
}
}
foreach my $chgDate (sort {$a <=> $b} keys %$chgHashRef) {
my $localDate = localtime($chgDate);
print "chg: $chgHashRef->{$chgDate}{'change'}, date: $localDate,$chgDate, branch: $chgHashRef->{$chgDate}{'branch'}, user: $chgHashRef->{$chgDate}{'user'}, client: $chgHashRef->{$chgDate}{'client'}\n";
print OUT "chg: $chgHashRef->{$chgDate}{'change'}, date: $localDate, branch: $chgHashRef->{$chgDate}{'branch'}, user: $chgHashRef->{$chgDate}{'user'}, client: $chgHashRef->{$chgDate}{'client'}\n";
}
close(OUT);