summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYann E. MORIN" <yann.morin.1998@anciens.enib.fr>2010-04-10 10:34:07 (GMT)
committerYann E. MORIN" <yann.morin.1998@anciens.enib.fr>2010-04-10 10:34:07 (GMT)
commit0d8e0f0e8b46df001f61cffc4dceddc9e5964e36 (patch)
treef50c6e0e187f8356330864dca14c825dad39967a
parentd2248b1728894d3f3f37db227dc1913e02ca72c3 (diff)
scripts: add script to publish patches
This script creates the patches for an existing version.
-rwxr-xr-xscripts/mk-patch.sh44
1 files changed, 44 insertions, 0 deletions
diff --git a/scripts/mk-patch.sh b/scripts/mk-patch.sh
new file mode 100755
index 0000000..2cd4529
--- /dev/null
+++ b/scripts/mk-patch.sh
@@ -0,0 +1,44 @@
+#!/bin/sh
+
+repos="$1"
+pdir="$2"
+if [ -z "${repos}" -o ! -d "${repos}" -o -z "${pdir}" -o ! -d "${pdir}" ];then
+ printf "Usage: ${0##*/} <repos_dir> <patch_dir>\n"
+ exit 1
+fi
+
+pdir="$( cd "${pdir}"; pwd)"
+version="$( echo "${pdir}" |sed -r -e 's,.*/([^/]+)/*$,\1,' )"
+branch="${version%.*}"
+n=$( ls -1 "${pdir}" 2>/dev/null |wc -l )
+
+r1="$( hg -R "${repos}" log -b "${branch}" \
+ |awk '
+ $1=="changeset:" {
+ prev=rev;
+ split($2,a,":");
+ rev=a[1];
+ }
+ $0~/^summary:[[:space:]]+'"${branch}: (bump|update) version to ${version}\+hg"'$/ {
+ printf( "%d\n", prev );
+ }
+ '
+ )"
+
+i=0
+hg -R "${repos}" log -b "${branch}" -r "${r1}:tip" --template '{rev}\n' \
+|while read rev; do
+ p="$( printf "%03d" ${i} )"
+ i=$((i+1))
+ if [ $( ls -1 "${pdir}/${p}-"*.patch 2>/dev/null |wc -l ) -ne 0 ]; then
+ continue
+ fi
+ plog=$( hg -R "${repos}" log -r ${rev} --template '{desc|firstline}\n' \
+ |sed -r -e 's,[/ :]+,_,g;' \
+ )
+ pname="${p}-${plog}.patch"
+ printf "Revision '%d' --> '%s'\n" ${rev} "${pname}"
+ hg -R "${repos}" diff -c ${rev} --color=never >"${pdir}/${pname}"
+ pdate="$( hg -R "${repos}" log -r ${rev} --template '{date|isodate}\n' )"
+ touch -d "${pdate}" "${pdir}/${pname}"
+done