diff --git a/edenscm/hgext/snapshot.py b/edenscm/hgext/snapshot.py index e205bfe6d2..b370c1dcda 100644 --- a/edenscm/hgext/snapshot.py +++ b/edenscm/hgext/snapshot.py @@ -366,11 +366,12 @@ def checkouttosnapshotmanifest(ui, repo, snapmanifest, force=True): vfs.write(file.path, store.read(file.oid)) # deleting files that should be missing - todelete = [f.path for f in snapmanifest.deleted] - if todelete: - ui.note(_("will delete %s\n") % ",".join(todelete)) - m = scmutil.match(repo[None], todelete) - cmdutil.remove(ui, repo, m, "", after=False, force=False) + for file in snapmanifest.deleted: + try: + ui.note(_("will delete %s\n") % file.path) + util.unlink(repo.wjoin(file.path)) + except OSError: + ui.warn(_("%s cannot be removed\n") % file.path) # populating the untracked files for file in snapmanifest.unknown: checkaddfile(repo.svfs.lfslocalblobstore, file, repo.wvfs, force) diff --git a/tests/test-fb-hgext-snapshot.t b/tests/test-fb-hgext-snapshot.t index 96b60cc74b..eacf60b84a 100644 --- a/tests/test-fb-hgext-snapshot.t +++ b/tests/test-fb-hgext-snapshot.t @@ -179,7 +179,7 @@ $ hg status --verbose M bar/file M mergefile - R foofile + ! foofile ? bar/untracked ? mergefile.orig ? untrackedfile @@ -202,7 +202,7 @@ .hg/merge/state .hg/merge/state2 $ hg debugsnapshot --clean - snapshot e203bc3b0e5140c52ec5ba01fcb7071af5ea40de created + snapshot ccdff83036b6b05c657a1eebff7dc523b865f6ce created 3 files updated, 0 files merged, 0 files removed, 0 files unresolved $ hg status --verbose $ test -d .hg/merge @@ -215,6 +215,7 @@ # Finally, resolve the conflict $ hg resolve --mark mergefile (no more unresolved files) + $ hg remove foofile $ hg status --verbose M bar/file M mergefile diff --git a/tests/test-snapshot.t b/tests/test-snapshot.t index 9b05938f59..2699498028 100644 --- a/tests/test-snapshot.t +++ b/tests/test-snapshot.t @@ -87,7 +87,6 @@ $ hg debugcheckoutsnapshotmanifest --verbose "$OID" will delete existingfile - removing existingfile will add untrackedfile snapshot checkout complete @@ -139,7 +138,7 @@ $ hg update 0 files updated, 0 files merged, 0 files removed, 0 files unresolved $ hg status - R existingfile + ! existingfile ? untrackedfile $ hg debugcheckoutsnapshotmanifest --verbose "$MERGEOID" will add new.orig @@ -150,7 +149,7 @@ will add rebasestate snapshot checkout complete $ hg status --verbose - R existingfile + ! existingfile ? new.orig ? untrackedfile # The repository is in an unfinished *rebase* state.