This is an old revision of the document!
Description
A way to rename files while keeping the history is essential to any decent VCS.
Current Implementation
CVS, well, does not cope at all with renames. We implement a crude way to deal with these by using direct repository intervention through the CVSmeisters (with all the risks that approach entail). Renaming a file is done through a direct copy of the <file>,v files from one place to the other (note that because we may have tags and branch tags within the files, we do not use mv even though the file moves. We use cp instead then mark the file as deleted).
SVN Implementation
Hg Implementation
hg mv is the way to rename files while retaining the history. Soon there will be history-sensitive rename and merge in Hg, sponsored by Sun. It means that if file “A” from repository “R” is renamed as “B” but “R” was cloned into “S” before “A” is renamed, then modifications to “A” in “S”, the modifications will show up in file “B” in “R” when merging (XXX is that clear?).