yann@1888
|
1 |
#!/bin/sh
|
yann@1888
|
2 |
|
yann@1888
|
3 |
repos="$1"
|
yann@1888
|
4 |
pdir="$2"
|
yann@1888
|
5 |
if [ -z "${repos}" -o ! -d "${repos}" -o -z "${pdir}" -o ! -d "${pdir}" ];then
|
yann@1888
|
6 |
printf "Usage: ${0##*/} <repos_dir> <patch_dir>\n"
|
yann@1888
|
7 |
exit 1
|
yann@1888
|
8 |
fi
|
yann@1888
|
9 |
|
yann@1888
|
10 |
pdir="$( cd "${pdir}"; pwd)"
|
yann@1888
|
11 |
version="$( echo "${pdir}" |sed -r -e 's,.*/([^/]+)/*$,\1,' )"
|
yann@1888
|
12 |
branch="${version%.*}"
|
yann@1888
|
13 |
n=$( ls -1 "${pdir}" 2>/dev/null |wc -l )
|
yann@1888
|
14 |
|
yann@1888
|
15 |
r1="$( hg -R "${repos}" log -b "${branch}" \
|
yann@1888
|
16 |
|awk '
|
yann@1888
|
17 |
$1=="changeset:" {
|
yann@1888
|
18 |
prev=rev;
|
yann@1888
|
19 |
split($2,a,":");
|
yann@1888
|
20 |
rev=a[1];
|
yann@1888
|
21 |
}
|
yann@1888
|
22 |
$0~/^summary:[[:space:]]+'"${branch}: (bump|update) version to ${version}\+hg"'$/ {
|
yann@1888
|
23 |
printf( "%d\n", prev );
|
yann@1888
|
24 |
}
|
yann@1888
|
25 |
'
|
yann@1888
|
26 |
)"
|
yann@1888
|
27 |
|
yann@1888
|
28 |
i=0
|
yann@1888
|
29 |
hg -R "${repos}" log -b "${branch}" -r "${r1}:tip" --template '{rev}\n' \
|
yann@1888
|
30 |
|while read rev; do
|
yann@1888
|
31 |
p="$( printf "%03d" ${i} )"
|
yann@1888
|
32 |
i=$((i+1))
|
yann@1888
|
33 |
if [ $( ls -1 "${pdir}/${p}-"*.patch 2>/dev/null |wc -l ) -ne 0 ]; then
|
yann@1888
|
34 |
continue
|
yann@1888
|
35 |
fi
|
yann@1888
|
36 |
plog=$( hg -R "${repos}" log -r ${rev} --template '{desc|firstline}\n' \
|
yann@2075
|
37 |
|sed -r -e 's,[/:,[:space:]],_,g; s/_+/_/g;' \
|
yann@1888
|
38 |
)
|
yann@1888
|
39 |
pname="${p}-${plog}.patch"
|
yann@1888
|
40 |
printf "Revision '%d' --> '%s'\n" ${rev} "${pname}"
|
yann@1888
|
41 |
hg -R "${repos}" diff -c ${rev} --color=never >"${pdir}/${pname}"
|
yann@1888
|
42 |
pdate="$( hg -R "${repos}" log -r ${rev} --template '{date|isodate}\n' )"
|
yann@1888
|
43 |
touch -d "${pdate}" "${pdir}/${pname}"
|
yann@1888
|
44 |
done
|