evennia/docs/sphinx/source/wiki/UpdatingYourGame.rst
2011-10-04 00:46:50 +02:00

123 lines
4.4 KiB
ReStructuredText

Updating your Game
==================
Fortunately, it's extremely easy to keep your Evennia server up-to-date
via Mercurial. If you haven't already, see the `Getting Started
guide <GettingStarted.html>`_ and get everything running. There are many
ways to get told when to update: You can subscribe to the RSS feed or
manually check up on the feeds from
`http://www.evennia.com. <http://www.evennia.com.>`_ You can also join
the `Evennia Commit
Log <http://groups.google.com/group/evennia-commits/>`_ group, which
will send you an email when the server repository changes.
When you're wanting to apply updates, simply ``cd`` to your ``evennia``
root directory and type:
::
hg pull
Assuming you've got the command line client. If you're using a graphical
client, you will probably want to navigate to the ``evennia`` directory
and either right click and find your client's pull function, or use one
of the menus (if applicable).
You can review the latest changes with
::
hg log
or the equivalent in the graphical client. The log tends to scroll past
quite quickly, so if you are in linux it might be an idea to *pipe* the
output to a text reader like ``less``
(`here <http://mercurial.selenic.com/wiki/PagerExtension>`_ is a more
permanent solution):
::
hg log | less
You can also see the latest changes online
`here <http://code.google.com/p/evennia/source/list>`_.
Resetting your database
-----------------------
Should you ever want to start over completely from scratch, there is no
need to re-download Evennia or anything like that. You just need to
clear your database. Once you are done, you just rebuild it from scratch
as described in step 2 of the `Getting Started
guide <GettingStarted.html>`_.
If you run the default ``SQlite3`` database (to change this you need to
edit your ``settings.py`` file), the database is actually just a normal
file in ``game/`` called ``evennia.db3``. Simply delete that file -
that's it.
Regardless of which database system you use, you can reset your database
via ``game/manage.py``. Since Evennia consists of many separate
components you need to clear the data from all of them:
::
python manage.py reset objects players scripts comms help web auth
Django also offers an easy way to start the database's own management
should we want more direct control:
::
python manage.py dbshell
In e.g. MySQL you can then do something like this (assuming your MySQL
database is named "Evennia":
::
mysql> DROP DATABASE Evennia;
mysql> exit
A Note on Schema Migration
--------------------------
If and when an Evennia update modifies the database *schema* (that is,
the under-the-hood details as to how data is stored in the database),
you must update your existing database correspondingly to match the
change. If you don't, the updated Evennia will complain that it cannot
read the database properly. Whereas schema changes should become more
and more rare as Evennia matures, it may still happen from time to time.
One way to handle this is to apply the changes manually to your database
using the database's command line. This often means adding/removing new
tables or fields as well as possibly convert existing data to match what
the new Evennia version expects. It should be quite obvious that this
quickly becomes cumbersome and error-prone. If your database doesn't
contain anything critical yet iẗ́'s probably easiest to simply reset it
and start over rather than to bother converting.
Enter `South <http://south.aeracode.org/>`_. South keeps track of
changes in the database schema and applies them automatically for you.
Basically, whenever the schema changes we also distribute small files
called "migrations" with the source. Those tell South exactly how to
repeat that change so you don't have to do so manually.
Using South is optional, but if you do install it, Evennia *will* use
South automatically. See the correct section of
`GettingStarted <GettingStarted.html>`_ on how to install South and the
slightly different way to start a clean database server when South is
used (you have to give the ``mange.py migrate`` command as well as
``manage.py syncdb``).
Once you have a database ready and using South, you work as normal.
Whenever a new Evennia update tells you that the database schema has
changed (check ``hg log`` or the online list), you go to ``game/`` and
run this command:
::
python manage.py migrate
This will convert your database to the new schema and you should be set
to go.