--==_Exmh_19382350820
Content-Type: text/plain; charset=us-ascii
lm@bitmover.com said:
> We've already built all the interfaces you need to do this, so would
> you be interested in writing the shell script that does it?  The
> interfaces you will want:
>         bk export -tpatch
>         bk import -tpatch
>         bk comments
>         bk changes -v
> You'll want this, I believe that you can take the output of this
> command and feed it into bk comments and have that be a noop.  If that
> works, this is what you need to save as the comments part of the
> patch, and now it's pretty trivial to move the patch backwards.
I've got a shell script which does this (I use it to take test patches from my 
build tree back to a pristine source for submission to linus).  I'm afraid 
it's a bit rough and ready, but it takes a given set of changes, wraps them up 
as patches, extracts the comments and applies them as patches to a different 
tree and then inserts the comments.  I wrote it a while ago, so it may be a 
little dusty and lacking in the newer bitkeeper features.
James
--==_Exmh_19382350820
Content-Type: text/plain ; name="bkexport"; charset=us-ascii
Content-Description: bkexport
Content-Disposition: attachment; filename="bkexport"
#!/bin/bash
#
##
# Author: James Bottomley
##
# Tool to backport from bitkeeper repositories
##
# $Id: bkexport,v 1.1 2002/03/16 15:50:50 jejb Exp $
##
usage() {
    echo "Usage: $0 {-C <change set list>|-R <repository>} <other repository>";
    exit 1;
}
tmp=/tmp/$$
tmpdiff=$tmp.diff
tmpfile=$tmp.file
if [ $# -ne 3 ]; then
    usage;
fi
case $1 in
    -C)		changeset=$2
		dir=$3;;
    -R)		changeset=`bk changes -d':REV:\n' -L $2|sort -n`
		dir=$3;;
    *)		usage;;
esac
if [ ! -d $dir ]; then
    echo "DIRECTORY $dir MUST EXIST" 2>&1
    exit 1;
fi
# get the changes
for c in $changeset; do
    echo "Applying ChangeSet $c"
    bk export -tpatch -du -r$c > $tmpdiff
    pushd $dir > /dev/null
    bk get -e `awk '/^diff/{print substr($3,3)}' < $tmpdiff`
    patch -p1 < $tmpdiff
    popd > /dev/null
    bk changes -v -n -d':GFILE: :REV:' -r$c | {
    while read file rev; do
	if [ "$file" = "ChangeSet" ]; then
	    continue
	fi
	echo "Applying change log for $file revision $rev"
	bk prs -h -d'$each(:C:){(:C:)\n}' -r$rev $file > $tmpfile
	pushd $dir > /dev/null
	bk ci -y"`cat $tmpfile`" $file
	popd > /dev/null
    done
    bk prs -h -d'$each(:C:){(:C:)\n}' -r$c ChangeSet > $tmpfile
    pushd $dir > /dev/null
    echo "Commiting ChangeSet $c"
    bk commit -d -Y$tmpfile
    popd > /dev/null
    }
done
rm -f $tmpdiff $tmpfile
--==_Exmh_19382350820--
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/