Mercurial > hg
comparison hgext/mq.py @ 17191:5884812686f7
peer: introduce peer methods to prepare for peer classes
This introduces a peer method into all repository classes, which currently
simply returns self. It also changes hg.repository so it now raises an
exception if the supplied paths does not resolve to a localrepo or descendant.
Finally, all call sites are changed to use the peer and local methods as
appropriate, where peer is used whenever the code is dealing with a remote
repository (even if it's on local disk).
author | Sune Foldager <cryo@cyanite.org> |
---|---|
date | Fri, 13 Jul 2012 21:46:53 +0200 |
parents | 54da604fefee |
children | e7cfe3587ea4 39e7e74b3cd3 |
comparison
equal
deleted
inserted
replaced
17190:d99d0b559084 | 17191:5884812686f7 |
---|---|
2243 return url + '/.hg/patches' | 2243 return url + '/.hg/patches' |
2244 | 2244 |
2245 # main repo (destination and sources) | 2245 # main repo (destination and sources) |
2246 if dest is None: | 2246 if dest is None: |
2247 dest = hg.defaultdest(source) | 2247 dest = hg.defaultdest(source) |
2248 sr = hg.repository(hg.remoteui(ui, opts), ui.expandpath(source)) | 2248 sr = hg.peer(ui, opts, ui.expandpath(source)) |
2249 | 2249 |
2250 # patches repo (source only) | 2250 # patches repo (source only) |
2251 if opts.get('patches'): | 2251 if opts.get('patches'): |
2252 patchespath = ui.expandpath(opts.get('patches')) | 2252 patchespath = ui.expandpath(opts.get('patches')) |
2253 else: | 2253 else: |
2254 patchespath = patchdir(sr) | 2254 patchespath = patchdir(sr) |
2255 try: | 2255 try: |
2256 hg.repository(ui, patchespath) | 2256 hg.peer(ui, opts, patchespath) |
2257 except error.RepoError: | 2257 except error.RepoError: |
2258 raise util.Abort(_('versioned patch repository not found' | 2258 raise util.Abort(_('versioned patch repository not found' |
2259 ' (see init --mq)')) | 2259 ' (see init --mq)')) |
2260 qbase, destrev = None, None | 2260 qbase, destrev = None, None |
2261 if sr.local(): | 2261 if sr.local(): |
2262 if sr.mq.applied and sr[qbase].phase() != phases.secret: | 2262 repo = sr.local() |
2263 qbase = sr.mq.applied[0].node | 2263 if repo.mq.applied and repo[qbase].phase() != phases.secret: |
2264 qbase = repo.mq.applied[0].node | |
2264 if not hg.islocal(dest): | 2265 if not hg.islocal(dest): |
2265 heads = set(sr.heads()) | 2266 heads = set(repo.heads()) |
2266 destrev = list(heads.difference(sr.heads(qbase))) | 2267 destrev = list(heads.difference(repo.heads(qbase))) |
2267 destrev.append(sr.changelog.parents(qbase)[0]) | 2268 destrev.append(repo.changelog.parents(qbase)[0]) |
2268 elif sr.capable('lookup'): | 2269 elif sr.capable('lookup'): |
2269 try: | 2270 try: |
2270 qbase = sr.lookup('qbase') | 2271 qbase = sr.lookup('qbase') |
2271 except error.RepoError: | 2272 except error.RepoError: |
2272 pass | 2273 pass |
2282 hg.clone(ui, opts, opts.get('patches') or patchdir(sr), patchdir(dr), | 2283 hg.clone(ui, opts, opts.get('patches') or patchdir(sr), patchdir(dr), |
2283 pull=opts.get('pull'), update=not opts.get('noupdate'), | 2284 pull=opts.get('pull'), update=not opts.get('noupdate'), |
2284 stream=opts.get('uncompressed')) | 2285 stream=opts.get('uncompressed')) |
2285 | 2286 |
2286 if dr.local(): | 2287 if dr.local(): |
2288 repo = dr.local() | |
2287 if qbase: | 2289 if qbase: |
2288 ui.note(_('stripping applied patches from destination ' | 2290 ui.note(_('stripping applied patches from destination ' |
2289 'repository\n')) | 2291 'repository\n')) |
2290 dr.mq.strip(dr, [qbase], update=False, backup=None) | 2292 repo.mq.strip(repo, [qbase], update=False, backup=None) |
2291 if not opts.get('noupdate'): | 2293 if not opts.get('noupdate'): |
2292 ui.note(_('updating destination repository\n')) | 2294 ui.note(_('updating destination repository\n')) |
2293 hg.update(dr, dr.changelog.tip()) | 2295 hg.update(repo, repo.changelog.tip()) |
2294 | 2296 |
2295 @command("qcommit|qci", | 2297 @command("qcommit|qci", |
2296 commands.table["^commit|ci"][1], | 2298 commands.table["^commit|ci"][1], |
2297 _('hg qcommit [OPTION]... [FILE]...')) | 2299 _('hg qcommit [OPTION]... [FILE]...')) |
2298 def commit(ui, repo, *pats, **opts): | 2300 def commit(ui, repo, *pats, **opts): |