Skip to content
Snippets Groups Projects
Commit c9bd81d3 authored by jacob's avatar jacob
Browse files

branch scripts

parent 4e601864
No related branches found
No related tags found
No related merge requests found
#!/bin/sh -e
CVS=${CVS:-cvs}
progname=${0##*/}
if [ $# -lt 2 -o $# -gt 3 ]; then
echo "This creates a new branch in CVS. Usage: $progname parent child <dir>"
exit
fi
parent=$1
child=$2
CHILD=`echo $child | sed -e "s/^b_//" | tr "[a-z]" "[A-Z]"`
dir=${3:-.}
module=$(<$dir/CVS/Repository)
if [ "$module" = "lustre" ] ; then
echo >&2 "${progname}: You probably want to branch lustre or portals."
echo >&2 "${progname}: Try using ${0} $parent $child lustre"
exit 1
fi
case $parent in
HEAD) : ;;
b_*|b1*) : ;;
*) parent="b_$parent" ;;
esac
case $child in
HEAD) : ;;
b_*|b1*) : ;;
*) child="b_$child"
esac
if [ "$parent" != "HEAD" -a "`cat $dir/CVS/Tag`" != "T$parent" ]; then
echo "This script must be run within the $parent branch"
exit 1
fi
echo parent: $parent CHILD: $CHILD child: $child date: $date
echo -n "tagging $parent as '${CHILD}_BASE' ...."
$CVS rtag -r $parent ${CHILD}_BASE $module
echo "done"
echo -n "branching $child at ${CHILD}_BASE' ...."
$CVS rtag -b -r ${CHILD}_BASE $child $module
echo -n "updating $dir to $child ...."
$CVS update -r $child $dir
echo "done"
#!/bin/sh -e
progname=${0##*/}
CONFLICTS=cvs-merge-conflicts
CVS=cvs
if [ -f .mergeinfo ] ; then
echo ".mergeinfo exists - clean up first"
exit
fi
if [ -f $CONFLICTS ] ; then
echo "$CONFLICTS exists - clean up first"
exit
fi
if [ $# -lt 2 -o $# -gt 3 ]; then
echo "This is phase 1 of merging branches. Usage: $0 parent child [dir]"
exit
fi
parent=$1
PARENT=`echo $parent | sed -e "s/^b_//" | tr "[a-z]" "[A-Z]"`
child=$2
CHILD=`echo $child | sed -e "s/^b_//" | tr "[a-z]" "[A-Z]"`
date=`date +%Y%m%d_%H%M`
dir=${3:-.}
module=$(<$dir/CVS/Repository)
if [ "$module" = "lustre" ] ; then
echo >&2 "${progname}: You probably want to branch lustre or portals, not the whole tree."
echo >&2 "${progname}: Try using ${0} $parent $child lustre"
exit 1
fi
case $parent in
HEAD) : ;;
b_*|b[1-4]*) : ;;
*) parent="b_$parent" ;;
esac
case $child in
HEAD) : ;;
b_*|b[1-4]*) : ;;
*) child="b_$child"
esac
if [ "$parent" != "HEAD" -a "`cat $dir/CVS/Tag 2> /dev/null`" != "T$parent" ]; then
echo "${progname}: this script must be run within the $parent branch"
exit 1
fi
TEST_FILE=${TEST_FILE:-ChangeLog} # does this need to be smarter?
check_tag() {
[ -z "$1" ] && echo "check_tag() missing arg" && exit3
[ "$1" = "HEAD" ] && return
$CVS log $dir/$TEST_FILE 2> /dev/null | grep -q " $1: " && return
echo "${progname}: tag $1 not found in $dir/$TEST_FILE"
exit 2
}
check_tag $child
check_tag ${CHILD}_BASE
cat << EOF > ".mergeinfo"
parent=$parent
PARENT=$PARENT
child=$child
CHILD=$CHILD
date=$date
module=$module
dir=$dir
CONFLICTS=$CONFLICTS
OPERATION=Land
OPERWHERE=onto
EOF
echo PARENT $PARENT parent $parent CHILD $CHILD child $child date $date
# Update your tree to the PARENT branch; HEAD is not really a branch, so you
# need to update -A instead of update -r HEAD, or the commit will fail. -p
echo -n "Updating to $parent ...."
if [ $parent == "HEAD" ]; then
$CVS update -AdP $dir
else
$CVS update -r $parent -dP $dir
fi
echo "done"
echo -n "Tagging as ${PARENT}_${CHILD}_LAND_PARENT_$date ..."
$CVS tag ${PARENT}_${CHILD}_LAND_PARENT_$date $dir
echo "done"
echo -n "Create land point on ${child} ${PARENT}_${CHILD}_LAND_CHILD_$date ..."
$CVS rtag -r ${child} ${PARENT}_${CHILD}_LAND_CHILD_$date $module $dir
echo "done"
echo -n "Preserve old base tag ${CHILD}_BASE as ${CHILD}_BASE_PREV ..."
$CVS tag -F -r ${CHILD}_BASE ${CHILD}_BASE_PREV $dir
echo "done"
# Apply all of the changes to your local tree:
echo -n "Updating as -j ${CHILD}_BASE -j ${PARENT}_${CHILD}_LAND_CHILD_$date ..."
$CVS update -j ${CHILD}_BASE -j ${PARENT}_${CHILD}_LAND_CHILD_$date $dir
echo "done"
echo -n "Recording conflicts in $CONFLICTS ..."
if $CVS update | grep '^C' > $CONFLICTS; then
echo "Conflicts found, fix before committing."
cat $CONFLICTS
else
echo "No conflicts found"
rm -f $CONFLICTS
fi
echo "done"
echo "Build, test, commit and then run land2.sh (no arguments)"
#!/bin/sh -e
CVS=cvs
if [ ! -f .mergeinfo ] ; then
echo ".mergeinfo doesn't exist - exit"
exit
fi
. .mergeinfo
if [ -f "$CONFLICTS" ] ; then
echo "$CONFLICTS exists - clean up first"
cat $CONFLICTS
exit
fi
#cvs update $dir 2>&1 | grep "^M" && echo "uncommitted changes" && exit 1
echo -n "Tagging as ${CHILD}_BASE_$date ..."
$CVS tag -F ${CHILD}_BASE_$date $dir
echo "done"
echo -n "Tagging as ${CHILD}_BASE ..."
$CVS tag -F ${CHILD}_BASE $dir
echo "saving .mergeinfo as .mergeinfo-$date"
mv .mergeinfo .mergeinfo-$date
echo "done"
#!/bin/sh -e
CONFLICTS=cvs-merge-conflicts
CVS="cvs -z3"
if [ -f .mergeinfo ] ; then
echo ".mergeinfo exists - clean up first"
exit
fi
if [ -f $CONFLICTS ] ; then
echo "$CONFLICTS exists - clean up first"
exit
fi
if [ $# -lt 2 -o $# -gt 3 ]; then
echo "This is phase 1 of merging branches. Usage: $0 parent child [dir]"
exit
fi
parent=$1
PARENT=`echo $parent | sed -e "s/^b_//" | tr "[a-z]" "[A-Z]"`
child=$2
CHILD=`echo $child | sed -e "s/^b_//" | tr "[a-z]" "[A-Z]"`
date=`date +%Y%m%d_%H%M`
dir=${3:-.}
module=$(<$dir/CVS/Repository)
if [ "$module" = "lustre" ] ; then
echo >&2 "${progname}: You probably want to branch lustre or portals, not the whole tree."
echo >&2 "${progname}: Try using ${0} $parent $child lustre"
exit 1
fi
case $parent in
HEAD) : ;;
b_*|b[1-4]*) : ;;
*) parent="b_$parent" ;;
esac
case $child in
HEAD) : ;;
b_*|b[1-4]*) : ;;
*) child="b_$child"
esac
if [ "$child" != "HEAD" -a "`cat $dir/CVS/Tag 2> /dev/null`" != "T$child" ]; then
echo "This script must be run within the $child branch"
exit 1
fi
TEST_FILE=${TEST_FILE:-ChangeLog} # does this need to be smarter?
check_tag() {
[ -z "$1" ] && echo "check_tag() missing arg" && exit3
[ "$1" = "HEAD" ] && return
$CVS log $dir/$TEST_FILE 2> /dev/null | grep -q " $1: " && return
echo "$0: tag $1 not found in $dir/$TEST_FILE"
exit 2
}
check_tag $parent
check_tag ${CHILD}_BASE
cat << EOF > .mergeinfo
parent=$parent
PARENT=$PARENT
child=$child
CHILD=$CHILD
date=$date
dir=$dir
module=$module
CONFLICTS=$CONFLICTS
OPERATION=Merge
OPERWHERE=from
EOF
echo PARENT: $PARENT parent: $parent CHILD: $CHILD child: $child date: $date
echo -n "tagging $parent as '${PARENT}_${CHILD}_UPDATE_PARENT_$date' ...."
$CVS rtag -r $parent ${PARENT}_${CHILD}_UPDATE_PARENT_$date $module
echo "done"
echo -n "tagging $child as '${PARENT}_${CHILD}_UPDATE_CHILD_$date' ...."
$CVS rtag -r $child ${PARENT}_${CHILD}_UPDATE_CHILD_$date $module
echo "done"
# Apply all of the changes to your local tree:
echo "Updating: -j ${CHILD}_BASE -j ${PARENT}_${CHILD}_UPDATE_PARENT_$date ...."
$CVS update -j ${CHILD}_BASE -j ${PARENT}_${CHILD}_UPDATE_PARENT_$date -dP $dir
echo "done"
echo -n "Recording conflicts in $CONFLICTS ..."
$CVS update | awk '/^C/ { print $2 }' > $CONFLICTS
if [ -s $CONFLICTS ] ; then
echo "Conflicts found, fix before committing."
cat $CONFLICTS
else
echo "No conflicts found"
rm -f $CONFLICTS
fi
echo "done"
echo "Build, test, commit and then run merge2.sh (no arguments)"
#!/bin/sh -e
if [ ! -f .mergeinfo ] ; then
echo ".mergeinfo doesn't exist - exit"
exit
fi
. .mergeinfo
if [ -f $CONFLICTS ] ; then
echo "$CONFLICTS exists - clean up first"
cat $CONFLICTS
exit
fi
cvs update $dir 2>&1 | grep "^M" && echo "uncommitted changes" && exit 1
echo -n "Tagging ${PARENT}_${CHILD}_UPDATE_PARENT_$date as ${CHILD}_BASE_$date ..."
cvs rtag -r ${PARENT}_${CHILD}_UPDATE_PARENT_$date ${CHILD}_BASE_$date $module
echo "done"
echo -n "Tagging ${CHILD}_BASE as ${CHILD}_BASE_PREV ...."
cvs rtag -F -r ${CHILD}_BASE ${CHILD}_BASE_PREV $module
echo "done"
echo "${CHILD}_BASE_$date as ${CHILD}_BASE ..."
cvs rtag -F -r ${CHILD}_BASE_$date ${CHILD}_BASE $module
echo "saving .mergeinfo as .mergeinfo-$date"
mv .mergeinfo .mergeinfo-$date
echo "done"
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment