Mercurial > public > mercurial-scm > hg-stable
diff 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 |
line wrap: on
line diff
--- a/mercurial/cmdutil.py Sun Aug 13 15:24:30 2006 -0700 +++ b/mercurial/cmdutil.py Sun Aug 13 16:11:22 2006 -0700 @@ -8,6 +8,7 @@ from demandload import demandload from node import * from i18n import gettext as _ +demandload(globals(), 'util') demandload(globals(), 'os sys') def make_filename(repo, pat, node, @@ -66,3 +67,26 @@ return open(make_filename(repo, pat, node, total, seqno, revwidth, pathname), mode) + +def matchpats(repo, pats=[], opts={}, head=''): + cwd = repo.getcwd() + if not pats and cwd: + opts['include'] = [os.path.join(cwd, i) for i in opts['include']] + opts['exclude'] = [os.path.join(cwd, x) for x in opts['exclude']] + cwd = '' + return util.cmdmatcher(repo.root, cwd, pats or ['.'], opts.get('include'), + opts.get('exclude'), head) + +def makewalk(repo, pats, opts, node=None, head='', badmatch=None): + files, matchfn, anypats = matchpats(repo, pats, opts, head) + exact = dict(zip(files, files)) + def walk(): + for src, fn in repo.walk(node=node, files=files, match=matchfn, + badmatch=badmatch): + yield src, fn, util.pathto(repo.getcwd(), fn), fn in exact + return files, matchfn, walk() + +def walk(repo, pats, opts, node=None, head='', badmatch=None): + files, matchfn, results = makewalk(repo, pats, opts, node, head, badmatch) + for r in results: + yield r