I have already found some bugs in these refactorings, which surface themselves when I am trying to add obsolescence-based shelve. I will fix those and send a v2. In a meantime, any comments are very welcome.
On 11/8/16, 1:51 PM, "Mercurial-devel on behalf of Kostia Balytskyi" <mercurial-devel-boun...@mercurial-scm.org on behalf of ikos...@fb.com> wrote: # HG changeset patch # User Kostia Balytskyi <ikos...@fb.com> # Date 1478529210 28800 # Mon Nov 07 06:33:30 2016 -0800 # Node ID b2d851fac63c8e12605948c7d182f86974b5096c # Parent d500ddae7494772e5eb867fccc6876f5f0c21dac shelve: move possible shelve file extensions to a single place This and a couple of following patches are a preparation to implementing obsolescense-enabled shelve which was discussed on a Sprint. If this refactoring is not done, shelve is going to look even more hackish than now. diff --git a/hgext/shelve.py b/hgext/shelve.py --- a/hgext/shelve.py +++ b/hgext/shelve.py @@ -62,6 +62,7 @@ testedwith = 'ships-with-hg-core' backupdir = 'shelve-backup' shelvedir = 'shelved' +shelvefileextensions = ['hg', 'patch'] class shelvedfile(object): """Helper for the file storing a single shelve @@ -221,7 +222,7 @@ def cleanupoldbackups(repo): # keep it, because timestamp can't decide exact order of backups continue base = f[:-3] - for ext in 'hg patch'.split(): + for ext in shelvefileextensions: try: vfs.unlink(base + '.' + ext) except OSError as err: @@ -399,7 +400,7 @@ def cleanupcmd(ui, repo): with repo.wlock(): for (name, _type) in repo.vfs.readdir(shelvedir): suffix = name.rsplit('.', 1)[-1] - if suffix in ('hg', 'patch'): + if suffix in shelvefileextensions: shelvedfile(repo, name).movetobackup() cleanupoldbackups(repo) @@ -410,8 +411,15 @@ def deletecmd(ui, repo, pats): with repo.wlock(): try: for name in pats: - for suffix in 'hg patch'.split(): - shelvedfile(repo, name, suffix).movetobackup() + for suffix in shelvefileextensions: + shfile = shelvedfile(repo, name, suffix) + # patch file is necessary, as it should + # be present for any kind of shelve, + # but the .hg file is optional as in future we + # will add obsolete shelve with does not create a + # bundle + if shfile.exists() or suffix == 'patch': + shfile.movetobackup() cleanupoldbackups(repo) except OSError as err: if err.errno != errno.ENOENT: @@ -557,7 +565,7 @@ def restorebranch(ui, repo, branchtorest def unshelvecleanup(ui, repo, name, opts): """remove related files after an unshelve""" if not opts.get('keep'): - for filetype in 'hg patch'.split(): + for filetype in shelvefileextensions: shelvedfile(repo, name, filetype).movetobackup() cleanupoldbackups(repo) _______________________________________________ Mercurial-devel mailing list Mercurial-devel@mercurial-scm.org https://urldefense.proofpoint.com/v2/url?u=https-3A__www.mercurial-2Dscm.org_mailman_listinfo_mercurial-2Ddevel&d=DQIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=Pp-gQYFgs4tKlSFPF5kfCw&m=j4MF6YwF5GBNZqgBlHpqrc4maAhwOiM-cjjiuF_MQoE&s=6ECsPeS8UkS-4d7x6CRYFYeXVrlio1N5b8eBTUHIu3s&e= _______________________________________________ Mercurial-devel mailing list Mercurial-devel@mercurial-scm.org https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel