Updating VoxelGlobe - VisionSystemsInc/voxel_globe GitHub Wiki
The latest version of VoxelGlobe is represented by the Docker images at https://hub.docker.com/r/vsiri/voxel_globe/ this means that only the latest version of master will be conveniently hosted for you. This will represent the latest version with all the bug fixes and features.
TL;DR
git pull origin master
git submodule update
./just sync start
Updating VoxelGlobe
You must first get the latest version of the VoxelGlobe:
git pull {remote_name} {branch_name}
Then in a separate command, you need to update the submodules. Assuming you are not a submodule developer, you can simply
git submodule update
or else you will have to merge them yourself (Advanced developers only).
At this point, the repo is checked out and should match the latest images on docker hub. Only one set of images are currently hosted on docker hub, and in this case they represent the latest master branch. See below for how to use any arbitrary version.
Now that you have updates your code the the latest VoxelGlobe, there are many moving pieces that need to be updated. There is a single just
command to do all of this for you,
./just sync
just sync
runs some database migration steps, and several other things, last of which is incrementally building vxl. Building VXL can take the longest amount of time (sometimes less than a minute or up to an hour). All services are stopped during just sync
to prevent any caching problems that may occur.
Once just sync
is done, you are ready to run ./just start
and resume using VoxelGlobe
Checking out a custom version of VoxelGlobe
(Advanced users only)
If you absolutely need a version of VoxelGlobe other than the latest version, you can build the images yourself. This can take up to an hour or two the first time, but will be much quicker due to Docker's cache. To checkout a custom version, run
git checkout {remote} {version}
git submodule update
./just build sync
It is important to run just build sync
as one command in that order, as it sets up a special flag in sync
to not pull the latest images, thus overwriting the images you just built.
This is necessary because a lot of configuration goes into each service, and has to match the server code running in order for everything to run smoothly.
When switching back and forth between versions of VoxelGlobe, there is a very small chance the database will not migrate well. Django does a very good job as migrating to newer versions, and I am not sure how well it migrates to older versions. For this reason, in the case of database corruption ./just initialize-database
should be run to wipe and delete your currently database. This is not a recoverable process and will delete everything in your database, and should only be done as a last resort.