#!/bin/sh # Generic function to print an error message and bail out. die () { echo $1 > /dev/stderr exit 1 } # Print usage usage () { cat < is the directory where the rebase was performed. You need to clone the repository first. Options are: -h: Print this message -u: Uncommit all patches and initialize stgit repo EOF exit 0 } test -f gdb.spec || die "This script needs to run from the same directory as gdb.spec." test -z $1 && die "You need to specify the repository." test "$1" = "-h" && usage uncommit=0 if [ "$1" = "-u" ]; then uncommit=1 shift fi git_repo=$1 if [ ! -e $git_repo ]; then echo "$0: repository \"$git_repo\" does not exist" exit 1 fi test -f _git_upstream_commit || die "Cannot find _git_upstream_commit file." test -f _patch_order || die "Cannot find _patch_order file." command -v stg > /dev/null 2>&1 || die "Cannot find stg. Is stgit installed?" last_ancestor_commit=`cat _git_upstream_commit` cd $1 git name-rev $last_ancestor_commit test $? -eq 0 || die "Could not find $last_ancestor_commit in the repository $1. Did you run 'git fetch'?" # Create a branch for the checkout; use the distro name in # the name of this branch. f=`cd .. && pwd` name=devel-`basename $f` git checkout -b $name $last_ancestor_commit echo "Applying patches..." for p in `cat ../_patch_order` ; do git am ../$p test $? -eq 0 || die "Could not apply patch '$p'." done if (($uncommit)); then echo "Uncommitting patches..." stg init stg uncommit -t $last_ancestor_commit -x fi