# HG changeset patch # User Jason R. Coombs # Date 1659028656 14400 # Node ID c4417029e6c2ac33249f0ee4209c928c2059d4e8 # Parent 24ffd13893cc851f6e560f35b52aa7c5918968ab phase-shelve: honor and prefer obs shelves for existence and modified time diff -r 24ffd13893cc -r c4417029e6c2 mercurial/shelve.py --- a/mercurial/shelve.py Thu Jul 28 12:53:11 2022 -0400 +++ b/mercurial/shelve.py Thu Jul 28 13:17:36 2022 -0400 @@ -112,12 +112,19 @@ self.name = name def exists(self): - return self.vfs.exists(self.name + b'.patch') and self.vfs.exists( - self.name + b'.hg' - ) + return self._exists(b'.shelve') or self._exists(b'.patch', b'.hg') + + def _exists(self, *exts): + return all(self.vfs.exists(self.name + ext) for ext in exts) def mtime(self): - return self.vfs.stat(self.name + b'.patch')[stat.ST_MTIME] + try: + return self._stat(b'.shelve')[stat.ST_MTIME] + except FileNotFoundError: + return self._stat(b'.patch')[stat.ST_MTIME] + + def _stat(self, ext): + return self.vfs.stat(self.name + ext) def writeinfo(self, info): scmutil.simplekeyvaluefile(self.vfs, self.name + b'.shelve').write(info) diff -r 24ffd13893cc -r c4417029e6c2 tests/test-shelve.t --- a/tests/test-shelve.t Thu Jul 28 12:53:11 2022 -0400 +++ b/tests/test-shelve.t Thu Jul 28 13:17:36 2022 -0400 @@ -243,12 +243,12 @@ (this also tests that same timestamp prevents backups from being removed, even though there are more than 'maxbackups' backups) - $ f -t .hg/shelve-backup/default.patch - .hg/shelve-backup/default.patch: file - $ touch -t 200001010000 .hg/shelve-backup/default.patch - $ f -t .hg/shelve-backup/default-1.patch - .hg/shelve-backup/default-1.patch: file - $ touch -t 200001010000 .hg/shelve-backup/default-1.patch + $ f -t .hg/shelve-backup/default.shelve + .hg/shelve-backup/default.shelve: file + $ touch -t 200001010000 .hg/shelve-backup/default.shelve + $ f -t .hg/shelve-backup/default-1.shelve + .hg/shelve-backup/default-1.shelve: file + $ touch -t 200001010000 .hg/shelve-backup/default-1.shelve $ hg unshelve unshelving change 'default-01'