mirror of
https://github.com/gitbucket/gitbucket.git
synced 2025-11-08 22:45:51 +01:00
38 lines
1.4 KiB
Markdown
38 lines
1.4 KiB
Markdown
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](https://github.com/gitbucket/gitbucket/blob/master/src/main/scala/gitbucket/core/servlet/AutoUpdate.scala) at first.
|
|
|
|
```scala
|
|
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/](https://github.com/gitbucket/gitbucket/tree/master/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:
|
|
|
|
```scala
|
|
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)
|
|
)
|
|
```
|