* * Build a past revision from history: - Working; now rebuild only up to a particular point. - A generic test that can be applied to any test working directory that all previous revisions can be successfully recreated. * Ignore-file support: finalize design and then implement it. * Command-line options: should be passed down as arguments to ``cmd`` functions. - ``commit`` message should be an option, not an argument. * Class representing a tree (or working directory or branch) - Should this really be a class or is it better to just have a set of global functions? What data is held in memory other than the directory name? - List status and inventory sorted by file name. - Add/move/delete files. * Store patches in a zip file? * When building diffs, show only the relevant tail of the two filenames in the index line. * Store patch headers in XML? What parser/generator to use? Maybe tupletree-format, or Zope xmlpickle, or ElementTree_? .. _ElementTree: http://effbot.org/zone/element-index.htm * Make immutable files (e.g. recorded patches) read-only after they're written. This would be a good idea, except that it means people need to use ``rm -rf`` to remove branches, which may be dangerous. Guiding principles ------------------ * In the first instance, just cache everything; don't worry about recreating them from simpler components. So keep a copy around of all previous revisions, their inventory and manifest, etc. * Start writing a test framework into which new development can fit. * No need to handle move/rename or subdirectories yet. * Do try to add assertions against invalid states. * Keep it simple in interface and implementation. .. Local variables: .. mode: rst .. End: