Skip to content
Snippets Groups Projects
  • Mark Thomas's avatar
    c2b30348
    dirstate: clean up when restoring identical backups · c2b30348
    Mark Thomas authored
    When a dirstate backup is restored, it is possible that no actual changes to
    the dirstate have been made.  In this case, the backup is still a hardlink
    to the original dirstate.
    
    Unfortunately, `os.rename` silently fails (nothing happens, and no error
    occurs) when `src` and `dst` are hardlinks to the same file.  As a result,
    the backup is left lying around.  Over time, these files accumulate.
    
    When restoring dirstate backups, check if the backup and the dirstate are
    the same file, and if so, just delete the backup.
    
    Differential Revision: https://phab.mercurial-scm.org/D1201
    c2b30348
    History
    dirstate: clean up when restoring identical backups
    Mark Thomas authored
    When a dirstate backup is restored, it is possible that no actual changes to
    the dirstate have been made.  In this case, the backup is still a hardlink
    to the original dirstate.
    
    Unfortunately, `os.rename` silently fails (nothing happens, and no error
    occurs) when `src` and `dst` are hardlinks to the same file.  As a result,
    the backup is left lying around.  Over time, these files accumulate.
    
    When restoring dirstate backups, check if the backup and the dirstate are
    the same file, and if so, just delete the backup.
    
    Differential Revision: https://phab.mercurial-scm.org/D1201