#!/bin/sh set -e # stg-dispatch - percollates files matching a pattern down to another patch. # It does the same job as stg-fold-files-from (and makes use of it to # do so), but from the patch containing the changes to migrate, # instead of doing so from the target patch. # usage: stg-dispatch [-n] [-#[-][,]...] # Copyright (c) 2007 Yann Dirson # Subject to the GNU GPL, version 2. die() { echo >&2 "$(basename $0) error: $*" exit 1 } noact=0 if [ "x$1" = "x-n" ]; then noact=1 shift fi TOPATCH="$1" shift stg applied | grep "^$TOPATCH\$" >/dev/null || die "cannot dispatch to unapplied patch '$TOPATCH'" CURRENTPATCH=$(stg top) [ "x$TOPATCH" != "x$CURRENTPATCH" ] || die "dispatching to current patch ($CURRENTPATCH) makes no sense" if [ $noact = 1 ]; then stg-fold-files-from "$CURRENTPATCH" -n "$@" else stg goto "$TOPATCH" stg-fold-files-from "$CURRENTPATCH" "$@" stg refresh stg goto "$CURRENTPATCH" fi