hgext/shelve.py
changeset 28862 39130afcce60
parent 28666 ae53ecc47414
child 29205 a0939666b836
equal deleted inserted replaced
28861:86db5cb55d46 28862:39130afcce60
    58 # be specifying the version(s) of Mercurial they are tested with, or
    58 # be specifying the version(s) of Mercurial they are tested with, or
    59 # leave the attribute unspecified.
    59 # leave the attribute unspecified.
    60 testedwith = 'internal'
    60 testedwith = 'internal'
    61 
    61 
    62 backupdir = 'shelve-backup'
    62 backupdir = 'shelve-backup'
       
    63 shelvedir = 'shelved'
    63 
    64 
    64 class shelvedfile(object):
    65 class shelvedfile(object):
    65     """Helper for the file storing a single shelve
    66     """Helper for the file storing a single shelve
    66 
    67 
    67     Handles common functions on shelve files (.hg/.patch) using
    68     Handles common functions on shelve files (.hg/.patch) using
    68     the vfs layer"""
    69     the vfs layer"""
    69     def __init__(self, repo, name, filetype=None):
    70     def __init__(self, repo, name, filetype=None):
    70         self.repo = repo
    71         self.repo = repo
    71         self.name = name
    72         self.name = name
    72         self.vfs = scmutil.vfs(repo.join('shelved'))
    73         self.vfs = scmutil.vfs(repo.join(shelvedir))
    73         self.backupvfs = scmutil.vfs(repo.join(backupdir))
    74         self.backupvfs = scmutil.vfs(repo.join(backupdir))
    74         self.ui = self.repo.ui
    75         self.ui = self.repo.ui
    75         if filetype:
    76         if filetype:
    76             self.fname = name + '.' + filetype
    77             self.fname = name + '.' + filetype
    77         else:
    78         else:
   406 
   407 
   407 def cleanupcmd(ui, repo):
   408 def cleanupcmd(ui, repo):
   408     """subcommand that deletes all shelves"""
   409     """subcommand that deletes all shelves"""
   409 
   410 
   410     with repo.wlock():
   411     with repo.wlock():
   411         for (name, _type) in repo.vfs.readdir('shelved'):
   412         for (name, _type) in repo.vfs.readdir(shelvedir):
   412             suffix = name.rsplit('.', 1)[-1]
   413             suffix = name.rsplit('.', 1)[-1]
   413             if suffix in ('hg', 'patch'):
   414             if suffix in ('hg', 'patch'):
   414                 shelvedfile(repo, name).movetobackup()
   415                 shelvedfile(repo, name).movetobackup()
   415             cleanupoldbackups(repo)
   416             cleanupoldbackups(repo)
   416 
   417 
   430             raise error.Abort(_("shelved change '%s' not found") % name)
   431             raise error.Abort(_("shelved change '%s' not found") % name)
   431 
   432 
   432 def listshelves(repo):
   433 def listshelves(repo):
   433     """return all shelves in repo as list of (time, filename)"""
   434     """return all shelves in repo as list of (time, filename)"""
   434     try:
   435     try:
   435         names = repo.vfs.readdir('shelved')
   436         names = repo.vfs.readdir(shelvedir)
   436     except OSError as err:
   437     except OSError as err:
   437         if err.errno != errno.ENOENT:
   438         if err.errno != errno.ENOENT:
   438             raise
   439             raise
   439         return []
   440         return []
   440     info = []
   441     info = []