The implementation of look for moves flag, uses the timestamp index to track the fileids(inodes in unix-like filesystems or fhandles in windows filesystems) of the files. The timestamp index is updated whenever the pending patch is updated or a record is made, and it saves the tree structure of the last pending state(ie recorded state plus pending patches). When a record or a pending patch(and darcs add, darcs mv, darcs replace, etc) is made, if a there is a file deleted(but the deletion is not recorded), the timestamp index don’t track this deleted file and keep the old data safe, because the file is not deleted in the pending state. It is important to highlight this because it is critical to get look for moves working right in all cases.

See also