equal
deleted
inserted
replaced
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() |