--- /dev/null
+> I think a good solution would run along the lines of the currently
+> commented out code in duplicate_bugdir(), where a
+> VersionedStorage.changed_since(revision)
+> call would give you a list of changed files. diff could work off of
+> that directly, without the need to generate a whole duplicate bugdir.
+
+This is definately the way to go. Rough approach for the VCS family:
+
+1) Parse `bzr diff` or such to get a list of new,changed,moved,removed
+ paths.
+2) Convert those paths to ids.
+3) Return a list of ids to duplicate_bugdir().
+4) Provide Storage.parent(id, revision), so duplicate_bugdir() could
+ figure out what type of id we were dealing with (bugdir, bug,
+ comment, other?), and construct the appropriate difference tree.
+
+There could be a DupBugDir class which stored that diff tree and a
+link to the current bugdir, which would make diffs much easier (work
+already done, just copy the diff tree), and provide faster access to
+unchanged files (just use the current version).
+
--- /dev/null
+Author: W. Trevor King <wking@drexel.edu>
+
+
+Content-type: text/plain
+
+
+Date: Sun, 03 Jan 2010 12:25:03 +0000
+
+
+In-reply-to: 9c4b8921-7b43-4bb6-b650-34144b414dc0
+
--- /dev/null
+Ok, time to fix the issue I mentioned in this commit message:
+
+revno: 473.1.63
+revision-id: wking@drexel.edu-20091215114420-sbdnvm5jlx0ampbg
+
+...
+duplicate_bugdir() works, but for the vcs backends, it could require
+shelling out for _every_ file read. This could, and probably will, be
+horribly slow. Still it works ;).
+
+I'm not sure what a better implementation would be. The old
+implementation checked out the entire earlier state into a temporary
+directory
+ pros: single shell out, simple upgrade implementation
+ cons: wouldn't work well for HTTP backens
+
+I think a good solution would run along the lines of the currently
+commented out code in duplicate_bugdir(), where a
+ VersionedStorage.changed_since(revision)
+call would give you a list of changed files. diff could work off of
+that directly, without the need to generate a whole duplicate bugdir.
+I'm stuck on how to handle upgrades though...
+...
--- /dev/null
+Author: W. Trevor King <wking@drexel.edu>
+
+
+Content-type: text/plain
+
+
+Date: Sat, 02 Jan 2010 22:58:31 +0000
+
--- /dev/null
+> I'm stuck on how to handle upgrades though...
+
+I've satisfied myself with the solution mentioned in #bea86499-824e-4e77-b085-2d581fa9ccab/1100c966-9671-4bc6-8b68-6d408a910da1/bd1207ef-f97e-4078-8c5d-046072012082#,
+namely, upgrading on disk the way we've always done, and not
+supporting on-the-fly upgrading at all. This isn't important for this
+bug, but I didn't want to just ignore that part of the commit message.
+
--- /dev/null
+Author: W. Trevor King <wking@drexel.edu>
+
+
+Content-type: text/plain
+
+
+Date: Sat, 02 Jan 2010 23:04:01 +0000
+
+
+In-reply-to: 9c4b8921-7b43-4bb6-b650-34144b414dc0
+
--- /dev/null
+severity: minor
+
+
+status: open
+
+
+summary: Slow and ugly diff implementation
+
+
+time: Sat, 02 Jan 2010 22:56:08 +0000
+