Index: 0-init.sql
===================================================================
--- 0-init.sql	(revision 1)
+++ 0-init.sql	(revision 1)
@@ -0,0 +1,7 @@
+CREATE TABLE db_schema (
+    version integer NOT NULL
+);
+
+CREATE UNIQUE INDEX db_schema_unique ON db_schema ((true));
+
+INSERT INTO db_schema VALUES (0);
Index: current
===================================================================
--- current	(revision 1)
+++ current	(revision 1)
@@ -0,0 +1,5 @@
+#!/bin/sh
+
+DB=`cat db`
+
+psql -Atc "SELECT version FROM db_schema" $DB
Index: db
===================================================================
--- db	(revision 1)
+++ db	(revision 1)
@@ -0,0 +1,1 @@
+dummy
Index: snapshot
===================================================================
--- snapshot	(revision 1)
+++ snapshot	(revision 1)
@@ -0,0 +1,11 @@
+#!/bin/sh
+
+DB=`cat db`
+
+CURRENT=`./current`
+echo Current is $CURRENT
+
+pg_dump -f schema-$CURRENT.sql -C -O -s $DB
+pg_dump -f data-$CURRENT.sql -a --disable-triggers $DB
+
+echo Snapshot complete
Index: upgrade
===================================================================
--- upgrade	(revision 1)
+++ upgrade	(revision 1)
@@ -0,0 +1,22 @@
+#!/bin/bash
+
+DB=`cat db`
+
+CURRENT=`./current`
+echo Current is $CURRENT
+
+LATEST=`ls -vr [0-9]*.sql |head -n1 |egrep -o "^[0-9]+"`
+echo Latest is $LATEST
+
+PENDING=""
+for (( I = $CURRENT + 1 ; I <= LATEST ; I++ )) ; do
+	F=`ls $I-*.sql`
+	echo Applying $F
+	G=`mktemp`
+	cp $F $G
+	echo "UPDATE db_schema SET version = $I;" >>$G
+	psql -v ON_ERROR_STOP=TRUE -1 -f $G $DB || exit 1
+	rm $G
+done
+
+echo OK
