From 830522c293a479636d7bfc0fff125ec57f06e9a3 Mon Sep 17 00:00:00 2001 From: "W. Trevor King" Date: Mon, 31 Aug 2009 12:32:05 -0400 Subject: Added libbe/upgrade.py to handle upgrading on-disk bugdirs. --- .../d304f93b-faf2-477e-9ff8-c77e301fd9f9/body | 30 ++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 .be/bugs/51930348-9ccc-4165-af41-6c7450de050e/comments/d304f93b-faf2-477e-9ff8-c77e301fd9f9/body (limited to '.be/bugs/51930348-9ccc-4165-af41-6c7450de050e/comments/d304f93b-faf2-477e-9ff8-c77e301fd9f9/body') diff --git a/.be/bugs/51930348-9ccc-4165-af41-6c7450de050e/comments/d304f93b-faf2-477e-9ff8-c77e301fd9f9/body b/.be/bugs/51930348-9ccc-4165-af41-6c7450de050e/comments/d304f93b-faf2-477e-9ff8-c77e301fd9f9/body new file mode 100644 index 0000000..34d37e5 --- /dev/null +++ b/.be/bugs/51930348-9ccc-4165-af41-6c7450de050e/comments/d304f93b-faf2-477e-9ff8-c77e301fd9f9/body @@ -0,0 +1,30 @@ +Added libbe/upgrade.py to handle upgrading on-disk bugdirs. + +When upgrade.BUGDIR_DISK_VERSION changes, a series of Updater +classes handle the upgrade. For example, if + BUGDIR_DISK_VERSIONS = ["v1", "v2", "v3"] +and the on-disk version is "v1", you should have defined classes + class Upgrade_1_to_2 (Upgrader): + initial_version = "v1" + final_version = "v2" + def _upgrade(): + .... + class Upgrade_2_to_3 (Upgrader): + initial_version = "v2" + final_version = "v3" + def _upgrade(): + .... +and added them to upgraders: + upgraders = [Upgrade_1_to_2, Upgrade_2_to_3] +If the on-disk version is v2, then only Upgrade_2_to_3.upgrade() is +run. If the on-disk version is v1, then Upgrade_1_to_2.upgrade() is +run, followed by Upgrade_2_to_3.upgrade(). + +You can optionally define shortcut upgrades (e.g. Upgrade_1_to_3) for +efficiency or to avoid data loss. + +This upgrade occurs during BugDir.load(), which is called by +BugDir.__init__(from_disk=True), before any processing of the on-disk +data except for the access of .be/version to determine if an upgrade +was necessary. + -- cgit