Finding Database Changes Between Releases
Starting with Platform 2.0, the changesets are split out into individual files, so for later versions you need to look somewhere like https://github.com/openmrs/openmrs-core/blob/2.1.x/api/src/main/resources/liquibase-update-to-2.1.xml and use a script like this:
version = '2.1.0-beta'
file = 'liquibase-update-to-2.1.xml'
def url = "https://raw.githubusercontent.com/openmrs/openmrs-core/${version}/api/src/main/resources/${file}"
println "fetching ${url}"
def xml = new URL(url).text
println "fetched ${xml.substring(0,10)}"
def trimWhitespace = { s -> s.toString().replaceAll(/\s+/,' ').trim() }
def parser=new XmlSlurper()
parser.setFeature("http://apache.org/xml/features/disallow-doctype-decl", false)
parser.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", false);
parser.parseText(xml).children().findAll({it.name() == 'changeSet'}).each {
println trimWhitespace(it.comment);
}
@Burke Mamlin wrote this Groovy script to determine the sql and changesets that were put into openmrs between any two revisions (prior to version 2.0.0).
from = '1.9.1'
to = '1.9.2'
def getUrl = { version ->
MAJOR = 0; MINOR = 1; v = { v,part -> Integer.valueOf(v.split(/\./)[part]) }
if (v(version,MAJOR) > 1 || v(version,MINOR) >= 8) // post-maven
url = "https://raw.github.com/openmrs/openmrs-core/@VERSION@/api/src/main/resources/liquibase-update-to-latest.xml"
else // pre-maven
url = "https://raw.github.com/openmrs/openmrs-core/@VERSION@/metadata/model/liquibase-update-to-latest.xml"
return url.replace('@VERSION@', version)
}
def trimWhitespace = { s -> s.toString().replaceAll(/\s+/,' ').trim() }
priorChanges = new XmlSlurper().parseText(new URL(getUrl(from)).text).changeSet*.@id
newChanges = new XmlSlurper().parseText(new URL(getUrl(to)).text)
.changeSet.findAll{ !priorChanges.contains(it.@id) }
println newChanges*.comment.collect{ "* " + trimWhitespace(it) }.join("\n")
The output of this should be publicized on the release notes page so users know what to expect.