Handover's notes ================ + Test suite ------------ tbdiff just passed a coding style and branding review. There are still bugs with real scenarios (debootstrapped directory trees). The lack of a test suite is making it really hard to refactor code so the first priority at the moment is to create a set of unit tests. A basic bash based test framework is being put in place, once it is finished no bug should be fixed unless it provides a unit test to prevent regressions in the future. + File system safety ------------------ There has been a problem while testing on a real system directory tree, during deployment of a diff image between two Debian debootstrapped trees, the root filesystem of the test host was corrupted. Further investigation has shown that /bin /root /usr were listed for deletion in the command stream. We need to figure out why tbdiff is sending remove commands for directories that are not removed. But most importantly we have to put safeguards so that we make sure we never crawl up the directory trees and perform operations on the host system. + Split stream parsing and filesystem operations ---------------------------------------------- Right now the stream parsing and the filesystem operations are both made in one go. This operations should be made separately so that output the stream and dry runs can be performed. We should have a defined struct per command for easier understanding of what goes into the wire. + Abstract the stream object -------------------------- Right now FILE* is used as the stream object. However abstracting the stream object is desirable. General ======= + Separate reading/writing stream data from actual file system operation + Create a manifest of deleted/created/modified files + Improve commandline for the deploy command + Improve function namespaces to ease understanding Features ======== + Need to be able to embed metadata into the top of an update stream e.g. arbitrary key/value pairs would be nice. + Need to be able to retrieve that metadata separately from deploying a stream, so that metadata files can be prepared on the server. + Ideally deploy should be able to take any stream URI (or perhaps stdin, allowing for curl externally?) + Support a given pathname changing kind. - That can be done by embedding a delete and then a create