mercurial/repair.py
branchstable
changeset 50299 3d0b5760851c
parent 50295 4bcb91c8b9d8
child 50301 d89eecf9605e
--- a/mercurial/repair.py	Mon Mar 06 19:39:35 2023 +0100
+++ b/mercurial/repair.py	Mon Mar 06 21:03:45 2023 +0100
@@ -7,8 +7,6 @@
 # GNU General Public License version 2 or any later version.
 
 
-import errno
-
 from .i18n import _
 from .node import (
     hex,
@@ -31,7 +29,6 @@
 )
 from .utils import (
     hashutil,
-    stringutil,
     urlutil,
 )
 
@@ -114,43 +111,6 @@
     return s
 
 
-UNDO_BACKUP = b'undo.backupfiles'
-
-
-def cleanup_undo_files(repo):
-    """remove "undo" files used by the rollback logic
-
-    This is useful to prevent rollback running in situation were it does not
-    make sense. For example after a strip.
-    """
-    backup_entries = []
-    undo_files = []
-    vfsmap = repo.vfs_map
-    try:
-        with repo.svfs(UNDO_BACKUP) as f:
-            backup_entries = transaction.read_backup_files(repo.ui.warn, f)
-    except OSError as e:
-        if e.errno != errno.ENOENT:
-            msg = _(b'could not read %s: %s\n')
-            msg %= (repo.svfs.join(UNDO_BACKUP), stringutil.forcebytestr(e))
-            repo.ui.warn(msg)
-
-    for location, f, backup_path, c in backup_entries:
-        if location in vfsmap and backup_path:
-            undo_files.append((vfsmap[location], backup_path))
-
-    undo_files.append((repo.svfs, UNDO_BACKUP))
-    undo_files.extend(repo.undofiles())
-    for undovfs, undofile in undo_files:
-        try:
-            undovfs.unlink(undofile)
-        except OSError as e:
-            if e.errno != errno.ENOENT:
-                msg = _(b'error removing %s: %s\n')
-                msg %= (undovfs.join(undofile), stringutil.forcebytestr(e))
-                repo.ui.warn(msg)
-
-
 def strip(ui, repo, nodelist, backup=True, topic=b'backup'):
     # This function requires the caller to lock the repo, but it operates
     # within a transaction of its own, and thus requires there to be no current
@@ -299,7 +259,7 @@
                 bmchanges = [(m, repo[newbmtarget].node()) for m in updatebm]
                 repo._bookmarks.applychanges(repo, tr, bmchanges)
 
-            cleanup_undo_files(repo)
+            transaction.cleanup_undo_files(repo)
 
         except:  # re-raises
             if backupfile: