101 lines
1.4 KiB
Bash
101 lines
1.4 KiB
Bash
|
#!/bin/sh
|
||
|
|
||
|
# Invoke as:
|
||
|
# $ ./import-patches.sh [ --dry-run ] <n> <dir>/00*.patch
|
||
|
|
||
|
usage ()
|
||
|
{
|
||
|
echo "./import-patches.sh [ --dry-run ] <n> <files>+"
|
||
|
}
|
||
|
|
||
|
dryrun=false
|
||
|
case "$1" in
|
||
|
-dryrun|-dry-run|--dryrun|--dry-run)
|
||
|
dryrun=true
|
||
|
shift
|
||
|
;;
|
||
|
esac
|
||
|
|
||
|
n="$1"
|
||
|
shift
|
||
|
|
||
|
case $n in
|
||
|
"")
|
||
|
echo "Missing <n> argument"
|
||
|
usage
|
||
|
exit 1
|
||
|
;;
|
||
|
[0-9][0-9]*)
|
||
|
;;
|
||
|
*)
|
||
|
echo "Need numeric <n> argument"
|
||
|
usage
|
||
|
exit 1
|
||
|
;;
|
||
|
esac
|
||
|
|
||
|
if [ "$n" = "" ]; then
|
||
|
echo "Missing <n> argument"
|
||
|
usage
|
||
|
exit 1
|
||
|
fi
|
||
|
|
||
|
files="$*"
|
||
|
|
||
|
rm -Rf tmp.patches
|
||
|
mkdir tmp.patches
|
||
|
|
||
|
tmp=
|
||
|
for f in $files; do
|
||
|
dir=$(dirname "$f")
|
||
|
f=$(basename "$f")
|
||
|
orig_f="$f"
|
||
|
|
||
|
# Remove numeric prefix.
|
||
|
f=$(echo "$f" \
|
||
|
| sed 's/^[0-9]*-//')
|
||
|
|
||
|
# To lowercase.
|
||
|
f=$(echo "$f" \
|
||
|
| tr '[:upper:]' '[:lower:]')
|
||
|
|
||
|
# Fix patch.patch.
|
||
|
f=$(echo "$f" \
|
||
|
| sed 's/\.patch\.patch/.patch/')
|
||
|
|
||
|
# Copy.
|
||
|
cp "$dir"/"$orig_f" tmp.patches/"$f"
|
||
|
|
||
|
# Filter out ChangeLog entries.
|
||
|
filterdiff -x "*/ChangeLog" tmp.patches/"$f" > tmp.patches/tmp."$f"
|
||
|
mv tmp.patches/tmp."$f" tmp.patches/"$f"
|
||
|
|
||
|
tmp="$tmp $f"
|
||
|
done
|
||
|
files="$tmp"
|
||
|
|
||
|
i=$n
|
||
|
for f in $files; do
|
||
|
printf "Patch%-11s%s\n" "$i:" "$f"
|
||
|
|
||
|
i=$((i + 1))
|
||
|
done
|
||
|
|
||
|
i=$n
|
||
|
for f in $files; do
|
||
|
echo "%patch$i -p1"
|
||
|
|
||
|
i=$((i + 1))
|
||
|
done
|
||
|
|
||
|
if $dryrun; then
|
||
|
exit
|
||
|
fi
|
||
|
|
||
|
for f in $files; do
|
||
|
mv tmp.patches/"$f" .
|
||
|
osc add "$f"
|
||
|
done
|
||
|
|
||
|
rmdir tmp.patches
|