Mercurial > hg
diff mercurial/subrepo.py @ 8812:859f841937d0
subrepo: introduce basic state parsing
author | Matt Mackall <mpm@selenic.com> |
---|---|
date | Mon, 15 Jun 2009 02:45:38 -0500 |
parents | |
children | db3c1ab0e632 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mercurial/subrepo.py Mon Jun 15 02:45:38 2009 -0500 @@ -0,0 +1,35 @@ +# subrepo.py - sub-repository handling for Mercurial +# +# Copyright 2006, 2007 Matt Mackall <mpm@selenic.com> +# +# This software may be used and distributed according to the terms of the +# GNU General Public License version 2, incorporated herein by reference. + +import config, util, errno + +def state(ctx): + p = config.config() + def read(f, sections=None, remap=None): + if f in ctx: + try: + p.parse(f, ctx[f].data(), sections, remap) + except IOError, err: + if err.errno != errno.ENOENT: + raise + read('.hgsub') + + rev = {} + if '.hgsubstate' in ctx: + try: + for l in ctx['.hgsubstate'].data().splitlines(): + revision, path = l.split() + rev[path] = revision + except IOError, err: + if err.errno != errno.ENOENT: + raise + + state = {} + for path, src in p[''].items(): + state[path] = (src, rev.get(path, '')) + + return state