1.4 KiB
Automatic Schema Updating
GitBucket uses H2 database to manage project and account data. GitBucket updates database schema automatically in the first run after the upgrading.
To release a new version of GitBucket, add the version definition to the gitbucket.core.servlet.AutoUpdate at first.
object AutoUpdate {
...
/**
* The history of versions. A head of this sequence is the current GitBucket version.
*/
val versions = Seq(
Version(1, 0)
)
...
Next, add a SQL file which updates database schema into /src/main/resources/update/ as MAJOR_MINOR.sql.
GitBucket stores the current version to GITBUCKET_HOME/version and checks it at start-up. If the stored version differs from the actual version, it executes differences of SQL files between the stored version and the actual version. And GITBUCKET_HOME/version is updated by the actual version.
We can also add any Scala code for upgrade GitBucket which modifies resources other than database. Override Version.update like below:
val versions = Seq(
new Version(1, 3){
override def update(conn: Connection): Unit = {
super.update(conn)
// Add any code here!
}
},
Version(1, 2),
Version(1, 1),
Version(1, 0)
)