#!/usr/local/bin/perl # Delete a p4 controlled cell or view $lib=$ARGV[0]; $client=$ARGV[1]; $path=$ARGV[2]; $type=$ARGV[3]; if($#ARGV<3) { die("Usage: deleteCellOrView.pl libname clientname pathname cell|view\n"); } local($p4) = "p4"; # First get all the opened files $dlist=0; $wrotecl=0; open(CL, ">/tmp/p4cl.$$") || die "Couldn't open /tmp/p4cl.$$" ; print(CL "\nChange: new\n\Description: $type delete\n\n\nFiles:\n\t"); if($type eq "cell") { open(OPENED, "$p4 -c $client opened $path/\*/\*|") || next; } if($type eq "view") { open(OPENED, "$p4 -c $client opened $path/\*|") || next; } if($type eq "file") { open(OPENED, "$p4 -c $client opened $path|") || next; } while() { { # is it add or edit (@mode)=split; ($depotfile)=split('#', $mode[0]); $p4mode=$mode[2]; if($p4mode eq "add") { # revert it system("$p4 -c $client revert $depotfile"); $dlist{$depotfile}=1; next; } if($p4mode eq "delete") { print(CL "\t$depotfile\n"); $wrotecl++; $dlist{$depotfile}=1; next; } if($p4mode eq "edit") { # mark it for delete # write it into the change list system("$p4 -c $client revert $depotfile; $p4 -c $client delete $depotfile"); print(CL "\t$depotfile\n"); $wrotecl++; $dlist{$depotfile}=1; next; } } } close(OPENED); if($type eq "cell") { open(HAVE, "$p4 -c $client have $path/\*/\*|") || next; } if($type eq "view") { open(HAVE, "$p4 -c $client have $path/\*|") || next; } if($type eq "file") { open(HAVE, "$p4 -c $client have $path|") || next; } while() { { ($depotfilev)=split; ($depotfile)=split('#', $depotfilev); if($dlist{$depotfile} eq 1) { #print "Skipping $depotfile\n"; next; } system("$p4 -c $client delete $depotfile"); print(CL "\t$depotfile\n"); $wrotecl++; } } print (CL "\n"); close(CL); # submit the changelist if($wrotecl) { system("$p4 -c $client submit -i < /tmp/p4cl.$$"); } system("rm /tmp/p4cl.$$")