#!/bin/bash log() { echo "=== $@" } err() { log $@ } fatal() { err $@ exit 1 } lp() { find . -name "$1" | grep -v "/dist/\|/include/" } usage() { echo "$myname [-h] [-t target-dir ] [ package-name ]" [ "$1" ] && exit $1 } # -- here we go set -- `getopt 'ht:' $*` while [ "$1" != -- ]; do case "$1" in -h) usage 0 ;; -t) target="$2" shift ;; *) usage 1 ;; esac shift done shift [ "$target" ] && { cd $target || fatal "failed to change to target dir \"$target\"" } proj=$1 [ "$proj" ] || { proj=`pwd | xargs basename` proj="$proj-run $proj-devel" } changed_paths=`rpm -qV $proj | sed ' /^..5.*/ !d s%^..5...... . /%/% '` for p in $changed_paths; do [ -r $p ] || { fatal "can't read $p" } b=`basename $p` lp=`lp "$b"` [ "$lp" ] || { fatal "$p is not in repository" } nl=`lp $b | wc -l` [ $nl -gt 1 ] && { log $p is more than once in repository: lp $b fatal exiting } diff -q $lp $p >/dev/null 2>&1 && { continue } log copying $p $lp cp $p $lp done