diff -r 473103758373 -r 3d0b5760851c mercurial/repair.py --- 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: