diff options
Diffstat (limited to '.be/bugs/51930348-9ccc-4165-af41-6c7450de050e/comments')
4 files changed, 65 insertions, 0 deletions
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. + diff --git a/.be/bugs/51930348-9ccc-4165-af41-6c7450de050e/comments/d304f93b-faf2-477e-9ff8-c77e301fd9f9/values b/.be/bugs/51930348-9ccc-4165-af41-6c7450de050e/comments/d304f93b-faf2-477e-9ff8-c77e301fd9f9/values new file mode 100644 index 0000000..b296bff --- /dev/null +++ b/.be/bugs/51930348-9ccc-4165-af41-6c7450de050e/comments/d304f93b-faf2-477e-9ff8-c77e301fd9f9/values @@ -0,0 +1,11 @@ +Author: W. Trevor King <wking@drexel.edu> + + +Content-type: text/plain + + +Date: Mon, 31 Aug 2009 16:29:50 +0000 + + +In-reply-to: f1479ecf-4154-4cd4-bbd6-0ed6275b9f98 + diff --git a/.be/bugs/51930348-9ccc-4165-af41-6c7450de050e/comments/f1479ecf-4154-4cd4-bbd6-0ed6275b9f98/body b/.be/bugs/51930348-9ccc-4165-af41-6c7450de050e/comments/f1479ecf-4154-4cd4-bbd6-0ed6275b9f98/body new file mode 100644 index 0000000..372a655 --- /dev/null +++ b/.be/bugs/51930348-9ccc-4165-af41-6c7450de050e/comments/f1479ecf-4154-4cd4-bbd6-0ed6275b9f98/body @@ -0,0 +1,16 @@ +There is no obvious means of using +".be/version"/"libbe.bugdir.TREE_VERSION_STRING". In the past I've +worked around this by keeping all the disk-reading backwards +compatible (e.g. homemade mapfile -> YAML, the "From" hack in +libbe.comment.Comment.load_settings, possibly others). However, this +is not the road to easily maintainable code. + +Most projects only need to maintain backwards compatibility with the +last few versions of their disk cache, to allow users an easy upgrade +path. The difficulties come with "be diff", which must be able to +read _every_ disk-image of the bugdir ever committed into something +comparible with the current cutting edge. This makes sweeping changes +very difficult. VCSs themselves avoid this by never showing their +disk-cache to another program, but we've shown ours to the VCS, and +it's difficult (or impossible, depending on the VCS) to change history +to match the current format. diff --git a/.be/bugs/51930348-9ccc-4165-af41-6c7450de050e/comments/f1479ecf-4154-4cd4-bbd6-0ed6275b9f98/values b/.be/bugs/51930348-9ccc-4165-af41-6c7450de050e/comments/f1479ecf-4154-4cd4-bbd6-0ed6275b9f98/values new file mode 100644 index 0000000..3d4d9df --- /dev/null +++ b/.be/bugs/51930348-9ccc-4165-af41-6c7450de050e/comments/f1479ecf-4154-4cd4-bbd6-0ed6275b9f98/values @@ -0,0 +1,8 @@ +Author: W. Trevor King <wking@drexel.edu> + + +Content-type: text/plain + + +Date: Sun, 16 Aug 2009 19:07:06 +0000 + |