Mercurial > public > mercurial-scm > hg
comparison mercurial/cmdutil.py @ 2882:cf98cd70d2c4
move walk and matchpats from commands to cmdutil.
author | Vadim Gelfer <vadim.gelfer@gmail.com> |
---|---|
date | Sun, 13 Aug 2006 16:11:22 -0700 |
parents | 4ec58b157265 |
children | c2932ad5476a |
comparison
equal
deleted
inserted
replaced
2881:eab07a7b7491 | 2882:cf98cd70d2c4 |
---|---|
6 # of the GNU General Public License, incorporated herein by reference. | 6 # of the GNU General Public License, incorporated herein by reference. |
7 | 7 |
8 from demandload import demandload | 8 from demandload import demandload |
9 from node import * | 9 from node import * |
10 from i18n import gettext as _ | 10 from i18n import gettext as _ |
11 demandload(globals(), 'util') | |
11 demandload(globals(), 'os sys') | 12 demandload(globals(), 'os sys') |
12 | 13 |
13 def make_filename(repo, pat, node, | 14 def make_filename(repo, pat, node, |
14 total=None, seqno=None, revwidth=None, pathname=None): | 15 total=None, seqno=None, revwidth=None, pathname=None): |
15 node_expander = { | 16 node_expander = { |
64 if hasattr(pat, 'read') and 'r' in mode: | 65 if hasattr(pat, 'read') and 'r' in mode: |
65 return pat | 66 return pat |
66 return open(make_filename(repo, pat, node, total, seqno, revwidth, | 67 return open(make_filename(repo, pat, node, total, seqno, revwidth, |
67 pathname), | 68 pathname), |
68 mode) | 69 mode) |
70 | |
71 def matchpats(repo, pats=[], opts={}, head=''): | |
72 cwd = repo.getcwd() | |
73 if not pats and cwd: | |
74 opts['include'] = [os.path.join(cwd, i) for i in opts['include']] | |
75 opts['exclude'] = [os.path.join(cwd, x) for x in opts['exclude']] | |
76 cwd = '' | |
77 return util.cmdmatcher(repo.root, cwd, pats or ['.'], opts.get('include'), | |
78 opts.get('exclude'), head) | |
79 | |
80 def makewalk(repo, pats, opts, node=None, head='', badmatch=None): | |
81 files, matchfn, anypats = matchpats(repo, pats, opts, head) | |
82 exact = dict(zip(files, files)) | |
83 def walk(): | |
84 for src, fn in repo.walk(node=node, files=files, match=matchfn, | |
85 badmatch=badmatch): | |
86 yield src, fn, util.pathto(repo.getcwd(), fn), fn in exact | |
87 return files, matchfn, walk() | |
88 | |
89 def walk(repo, pats, opts, node=None, head='', badmatch=None): | |
90 files, matchfn, results = makewalk(repo, pats, opts, node, head, badmatch) | |
91 for r in results: | |
92 yield r |