yann@1888: #!/bin/sh yann@1888: yann@1888: repos="$1" yann@1888: pdir="$2" yann@1888: if [ -z "${repos}" -o ! -d "${repos}" -o -z "${pdir}" -o ! -d "${pdir}" ];then yann@1888: printf "Usage: ${0##*/} \n" yann@1888: exit 1 yann@1888: fi yann@1888: yann@1888: pdir="$( cd "${pdir}"; pwd)" yann@1888: version="$( echo "${pdir}" |sed -r -e 's,.*/([^/]+)/*$,\1,' )" yann@1888: branch="${version%.*}" yann@1888: n=$( ls -1 "${pdir}" 2>/dev/null |wc -l ) yann@1888: yann@1888: r1="$( hg -R "${repos}" log -b "${branch}" \ yann@1888: |awk ' yann@1888: $1=="changeset:" { yann@1888: prev=rev; yann@1888: split($2,a,":"); yann@1888: rev=a[1]; yann@1888: } yann@1888: $0~/^summary:[[:space:]]+'"${branch}: (bump|update) version to ${version}\+hg"'$/ { yann@1888: printf( "%d\n", prev ); yann@1888: } yann@1888: ' yann@1888: )" yann@1888: yann@1888: i=0 yann@1888: hg -R "${repos}" log -b "${branch}" -r "${r1}:tip" --template '{rev}\n' \ yann@1888: |while read rev; do yann@1888: p="$( printf "%03d" ${i} )" yann@1888: i=$((i+1)) yann@1888: if [ $( ls -1 "${pdir}/${p}-"*.patch 2>/dev/null |wc -l ) -ne 0 ]; then yann@1888: continue yann@1888: fi yann@1888: plog=$( hg -R "${repos}" log -r ${rev} --template '{desc|firstline}\n' \ yann@2403: |sed -r -e 's,[^[:alnum:]],_,g; s/_+/_/g;' \ yann@1888: ) yann@1888: pname="${p}-${plog}.patch" yann@1888: printf "Revision '%d' --> '%s'\n" ${rev} "${pname}" yann@1888: hg -R "${repos}" diff -c ${rev} --color=never >"${pdir}/${pname}" yann@1888: pdate="$( hg -R "${repos}" log -r ${rev} --template '{date|isodate}\n' )" yann@1888: touch -d "${pdate}" "${pdir}/${pname}" yann@1888: done