Here is how the example given in RefactoringWithCvs would work under MetaCvs: mcvs mv old_file new_file mcvs --meta diff # review the differences to the object map mcvs ci # commit Then some fun: mcvs log new_file # verify that history is are all there mcvs up -D'900 seconds ago' # new_file jumps to old_file mcvs up -A # old_file jumps to new file MetaCvs doesn't support modules yet. However, unlike with CVS, it is possible to check out a Meta-CVS project within a Meta-CVS sandbox. A Meta-CVS sandbox has only one administrative directory at the top level, called MCVS. So there are no conflicts between administrative directories if you nest sandboxes. One day, the software will support a way to compose multiple modules into a nested sandbox, and automatically recurse the commands into these sandboxes. There is one feature to help with nested sandboxes: the --up N command line option. This is a kind of nesting escape operator which lets you execute a mcvs command on an outer sandbox. The default, implicit behavior of the software is --up 0. --up 1 means escape up one level of nesting and so forth. So you don't have to ``cd'' out of your nested sandbox to do a higher level update or commit, etc.