hgext/directaccess.py
branchstable
changeset 1489 2f8a4d496585
parent 1372 7023a01b9007
child 1492 f869033391b9
equal deleted inserted replaced
1487:ee5391999f2d 1489:2f8a4d496585
    11 from mercurial import branchmap
    11 from mercurial import branchmap
    12 from mercurial import revset
    12 from mercurial import revset
    13 from mercurial import error
    13 from mercurial import error
    14 from mercurial import commands
    14 from mercurial import commands
    15 from mercurial import hg
    15 from mercurial import hg
       
    16 from mercurial import util
    16 from mercurial.i18n import _
    17 from mercurial.i18n import _
    17 
    18 
    18 cmdtable = {}
    19 cmdtable = {}
    19 command = cmdutil.command(cmdtable)
    20 command = cmdutil.command(cmdtable)
    20 
    21 
   124 def extsetup(ui):
   125 def extsetup(ui):
   125     extensions.wrapfunction(revset, 'posttreebuilthook', _posttreebuilthook)
   126     extensions.wrapfunction(revset, 'posttreebuilthook', _posttreebuilthook)
   126     extensions.wrapfunction(hg, 'repository', _repository)
   127     extensions.wrapfunction(hg, 'repository', _repository)
   127     setupdirectaccess()
   128     setupdirectaccess()
   128 
   129 
       
   130 hashre = util.re.compile('[0-9a-fA-F]{1,40}')
       
   131 
   129 def gethashsymbols(tree):
   132 def gethashsymbols(tree):
   130     # Returns the list of symbols of the tree that look like hashes
   133     # Returns the list of symbols of the tree that look like hashes
   131     # for example for the revset 3::abe3ff it will return ('abe3ff')
   134     # for example for the revset 3::abe3ff it will return ('abe3ff')
   132     if not tree:
   135     if not tree:
   133         return []
   136         return []
   135     if len(tree) == 2 and tree[0] == "symbol":
   138     if len(tree) == 2 and tree[0] == "symbol":
   136         try:
   139         try:
   137             int(tree[1])
   140             int(tree[1])
   138             return []
   141             return []
   139         except ValueError as e:
   142         except ValueError as e:
   140             return [tree[1]]
   143             if hashre.match(tree[1]):
       
   144                 return [tree[1]]
       
   145             return []
   141     elif len(tree) == 3:
   146     elif len(tree) == 3:
   142         return gethashsymbols(tree[1]) + gethashsymbols(tree[2])
   147         return gethashsymbols(tree[1]) + gethashsymbols(tree[2])
   143     else:
   148     else:
   144         return []
   149         return []
   145 
   150