- #!/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
-
-
-