#!/usr/local/bin/perl # Integrate Wizard command line version require "ctime.pl"; $date = &ctime(time); use Getopt::Long; $Getopt::Long::autoabbrev=0; #make them specify exact option unless(GetOptions("h", "utm", "utb", "bname=s", "exec", "text=s")){ die "Illegal Input Options, -h for help\n"; } if($opt_h) { print "Integration Wizard Help\n-utm Update the Mainline (reverse integrate) -utb Update the Branch (forward integrate) -exec execute the integrate -text integration message for -utm -bname -h this message \n"; exit(1); } if((!$opt_utm || !$opt_utb) && !$opt_bname) { print "Usage: intwiz -h for help Usage: intwiz {-utm|-utb} -bname -text \n"; exit(1); } if($opt_utm && $opt_utb) { print "Hey, you can't do that\n"; exit(1); } if($opt_utm && !$opt_text ) { if($opt_exec) { print "You need to specify a message using -text \n"; exit(1); } } if($opt_utm) { $intdir="-r "; } else { $intdir=""; } if($opt_exec) { $intoption=""; } else { $intoption=" -n"; } if($opt_utb) { $btext="auto-int"; } else { $btext="auto-r-int ".$opt_text; } # Create a temporary client for fast integration $intclient="intwiz_temp.$$"; $cmd="p4 client -o $intclient | p4 client -i > /dev/null"; system($cmd); $cmd="p4 -c $intclient integ $intoption -v -i -d $intdir -b $opt_bname\n"; system($cmd); if($intoption ne "-n") { $cmd="p4 -c $intclient change -o | sed 's/<.*>/$btext/' > /tmp/subout.$$"; system($cmd); open(SUB, ") { if(/^Files/) { $submit++; close(SUB); } } if($submit) { # We should resolve first $cmd="p4 -c $intclient resolve -at"; system($cmd); $cmd="p4 -c $intclient submit -i < /tmp/subout.$$"; system($cmd); } system("p4 client -d $intclient > /dev/null"); }