Re: Re: Maintaining 'stable' and 'development' versionsof a repository (hopeless newbie question)

Sam Ravnborg <[email protected]> Sun, 3 Jul 2005 22:47:22 +0200
Newsgroups gmane.comp.version-control.bitkeeper.user
Message-ID <[email protected]>
> 
> We know how to do "bad" cherry-picking, it's an easy technical problem to
> solve.

Jeff Garzik (I think) wrote the following script a while ago.
It copies (cherrypicks) a cset from one repository and commits it to
another repositoriry including history.

	Sam


#!/bin/sh
#
# Purpose: Copy changeset patch and description from one
#	   repository to another, unrelated one.
#
# usage:  cpcset [revision] [from-repository] [to-repository]
#

REV=$1
FROM=$2
TO=$3
TMPF=/tmp/cpcset.$$

rm -f $TMPF*

CWD_SAVE=`pwd`
cd $FROM
bk changes -r$REV			|	\
	grep -v '^ChangeSet'		|	\
	sed -e 's/^  //g' > $TMPF.log

USERHOST=`bk changes -r$REV | grep '^ChangeSet' | awk '{print $4}'`
export BK_USER=`echo $USERHOST | awk '-F@' '{print $1}'`
export BK_HOST=`echo $USERHOST | awk '-F@' '{print $2}'`

bk export -tpatch -hdu -r$REV > $TMPF.patch && \
cd $CWD_SAVE && \
cd $TO && \
bk import -tpatch -CFR -y"`cat $TMPF.log`" $TMPF.patch . && \
bk commit -y"`cat $TMPF.log`"

rm -f $TMPF*

echo changeset $REV copied.
echo ""