I have built one that I call Mahout (https://github.com/cbbrowne/mahout) which has the merit of involving just two shell scripts, one of which is an auditing tool (pgcmp). It implements a "little language" to indicate dependencies between the SQL scripts that implement the DDL changes. The notable thing that I have seen "downthread" that it does not attempt to implement is "rollback scripts." I find that "necessity" to be a ruby-on-rails dogma that does not seem to fit what I see people doing.