Mercurial > hg
comparison mercurial/localrepo.py @ 11493:cc4e2a7ca23f
Merge with stable
author | Martin Geisler <mg@aragost.com> |
---|---|
date | Fri, 02 Jul 2010 11:30:57 +0200 |
parents | ee1ed6afac21 |
children | b602a95c21ec |
comparison
equal
deleted
inserted
replaced
11428:8b452fe4bf50 | 11493:cc4e2a7ca23f |
---|---|
1197 if not remote.capable('changegroupsubset'): | 1197 if not remote.capable('changegroupsubset'): |
1198 raise util.Abort(_("Partial pull cannot be done because " | 1198 raise util.Abort(_("Partial pull cannot be done because " |
1199 "other repository doesn't support " | 1199 "other repository doesn't support " |
1200 "changegroupsubset.")) | 1200 "changegroupsubset.")) |
1201 cg = remote.changegroupsubset(fetch, heads, 'pull') | 1201 cg = remote.changegroupsubset(fetch, heads, 'pull') |
1202 return self.addchangegroup(cg, 'pull', remote.url()) | 1202 return self.addchangegroup(cg, 'pull', remote.url(), lock=lock) |
1203 finally: | 1203 finally: |
1204 lock.release() | 1204 lock.release() |
1205 | 1205 |
1206 def push(self, remote, force=False, revs=None, newbranch=False): | 1206 def push(self, remote, force=False, revs=None, newbranch=False): |
1207 '''Push outgoing changesets (limited by revs) from the current | 1207 '''Push outgoing changesets (limited by revs) from the current |
1231 lock = remote.lock() | 1231 lock = remote.lock() |
1232 try: | 1232 try: |
1233 ret = discovery.prepush(self, remote, force, revs, newbranch) | 1233 ret = discovery.prepush(self, remote, force, revs, newbranch) |
1234 if ret[0] is not None: | 1234 if ret[0] is not None: |
1235 cg, remote_heads = ret | 1235 cg, remote_heads = ret |
1236 # here, we return an integer indicating remote head count change | 1236 # we return an integer indicating remote head count change |
1237 return remote.addchangegroup(cg, 'push', self.url()) | 1237 return remote.addchangegroup(cg, 'push', self.url(), lock=lock) |
1238 # and here we return 0 for "nothing to push" or 1 for | 1238 # and here we return 0 for "nothing to push" or 1 for |
1239 # "something to push but I refuse" | 1239 # "something to push but I refuse" |
1240 return ret[1] | 1240 return ret[1] |
1241 finally: | 1241 finally: |
1242 lock.release() | 1242 lock.release() |
1618 if nodes: | 1618 if nodes: |
1619 self.hook('outgoing', node=hex(nodes[0]), source=source) | 1619 self.hook('outgoing', node=hex(nodes[0]), source=source) |
1620 | 1620 |
1621 return util.chunkbuffer(gengroup()) | 1621 return util.chunkbuffer(gengroup()) |
1622 | 1622 |
1623 def addchangegroup(self, source, srctype, url, emptyok=False): | 1623 def addchangegroup(self, source, srctype, url, emptyok=False, lock=None): |
1624 """Add the changegroup returned by source.read() to this repo. | 1624 """Add the changegroup returned by source.read() to this repo. |
1625 srctype is a string like 'push', 'pull', or 'unbundle'. url is | 1625 srctype is a string like 'push', 'pull', or 'unbundle'. url is |
1626 the URL of the repo where this changegroup is coming from. | 1626 the URL of the repo where this changegroup is coming from. |
1627 | 1627 |
1628 Return an integer summarizing the change to this repo: | 1628 Return an integer summarizing the change to this repo: |
1758 cl.finalize(trp) | 1758 cl.finalize(trp) |
1759 | 1759 |
1760 tr.close() | 1760 tr.close() |
1761 finally: | 1761 finally: |
1762 tr.release() | 1762 tr.release() |
1763 if lock: | |
1764 lock.release() | |
1763 | 1765 |
1764 if changesets > 0: | 1766 if changesets > 0: |
1765 # forcefully update the on-disk branch cache | 1767 # forcefully update the on-disk branch cache |
1766 self.ui.debug("updating the branch cache\n") | 1768 self.ui.debug("updating the branch cache\n") |
1767 self.branchtags() | 1769 self.branchtags() |