summaryrefslogtreecommitdiff
path: root/scripts/patch-renumber.sh
blob: f46c064db3bd25e2f2a0d59bc8bcfb4adc2a8a47 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#!/bin/sh
# Yes, this intends to be a true POSIX script file.

myname="$0"

doUsage() {
  cat <<_EOF_
Usage: ${myname} <dir> <base> <inc>
    Will renumber all patches found in <dir>, starting at <base>, and with
    an increment of <inc>
    Eg.: patch-renumber patches/gcc/4.3.1 100 10
_EOF_
}

[ $# -eq 3 ] || { doUsage; exit 1; }
[ -d "${1}" ] || { doUsage; exit 1; }

dir="${1}"
cpt="${2}"
inc="${3}"

case $(LC_ALL=C svnversion 2>/dev/null) in
    exported)   CMD="mv -v";;
    *)          CMD="svn mv";;
esac

for p in "${dir}"/*.patch; do
    [ -e "${p}" ] || { echo "No such file '${p}'"; exit 1; }
    newname="$(printf "%03d" ${cpt})-$(basename "${p}" |sed -r -e 's/^[[:digit:]]{3}-//')"
    [ "${p}" = "${dir}/${newname}" ] || ${CMD} "${p}" "${dir}/${newname}"
    cpt=$((cpt+inc))
done