The Magic TODO list
larger features
merge-through-conflict code (necessary in rare cases for revert and resurrection)
revert (for name operations, this already works for file contents)
resurrecting deleted files
access control lists on repository paths in the server
support for binaries
metadata (the execute bit, for instance)
internationalization
deal with case-insensitive file systems
more polish
cherry picking individual changes
rollback of individual changes
smaller stuff
Security audit of networking code
Shared secrets are stored encrypted against the users password, should also include a salt to protect against precomputed dictionary attacks
Move authentication-related info out of the tree.
Graphical history browsing tool.
Graphical conflict resolution tool, something like dirdiff which can read the inline conflict info.
Code cleanup - there are places in the code (sync_history(), gen_changeset(), handle_contents_at_point()) which should be using DFS.py to do a topological sort instead of being ad-hoc about it. This is a good way to become more familiar with the code.
Replace the stop-and-wait changeset fetching over the network with something better. Ask on the mailing list for more details.
Better parallelize the delta fetching and history replaying by moving one of the 2 into a separate thread.
Documentation. Some HowTo guides would be especially useful for things like history browsing.
Fix the file ignore pattern stuff. Should probably work more like CVS.
Remember which files had conflicts after an update and have the status command display them.
Force users to resolve name conflicts before allowing relevent files to be committed.