#!/bin/sh
# Name : /public/scripts/integbychg
# Purpose : Integrate from one configuration to another according to
# a given submitted changelist number.
# By : Yariv Sheizaf
# Date : 19.7.2001
if [ $# -lt 2 ]
then
echo ""
echo "Usage: $0 submitted-changelist-number target-configuration"
echo "Example: $0 112 dev"
echo ""
exit 1
fi
CHG=$1
p4 change -o $CHG 1>/dev/null 2>&1
if [ "$?" != "0" ]
then
echo ""
echo "Changelist No. "$CHG" is not exist. Exit..."
echo ""
exit 1
fi
ISSUBMITTED=`p4 describe $CHG | head -1 | awk '{print $NF}'`
if [ "$ISSUBMITTED" = "*pending*" ]
then
echo ""
echo "Changelist No. "$CHG" is still pending. Exit..."
echo ""
exit 1
fi
## Create new pending changelist
p4 change -o $CHG | sed 's/'$CHG'/new/' | p4 change -i > $$.newchg
NEWCHG=`awk '{print $2}' $$.newchg`
TRGCNF=$2
## Check configuration existing in P4 DB
ISCNF="n"
for i in `p4 dirs //Globecom/\* | awk -F/ '{print $NF}'`
do
if [ "$i" = "$TRGCNF" ]
then
ISCNF="y"
fi
done
if [ "$ISCNF" = "n" ]
then
echo ""
echo $TRGCNF" is not a valid configuration. Exit..."
echo ""
exit 1
fi
p4 describe -s $CHG | grep "^... //" | awk -F# '{print $1}' | sed 's/... //' | sed 's/ /@@@/g' > $$.flist
IS1CNF=`awk -F/ '{print $4}' $$.flist | sort | uniq | wc -l | awk '{print $1}'`
if [ "$IS1CNF" != "1" ]
then
echo ""
echo "There are more than one source configuration in changelist No. "$CHG
echo ""
exit 1
fi
SRCCNF=`awk -F/ '{print $4}' $$.flist | sort | uniq`
if [ "$SRCCNF" = "$TRGCNF" ]
then
echo ""
echo "Source and target configuration are identical. Exit..."
echo ""
exit 1
fi
for i in `cat $$.flist`
do
SRCFILE=`echo $i | sed 's/@@@/ /g'`
TRGFILE=`echo $SRCFILE | sed 's/'$SRCCNF'/'$TRGCNF'/'`
p4 integrate -c $NEWCHG -f -d -i -v "$SRCFILE" "$TRGFILE"
p4 resolve -at -af "$TRGFILE"
done
p4 submit -c $NEWCHG
rm -f $$.*
exit 0