##// END OF EJS Templates
addchangegroup: pass in lock to release it before changegroup hook is called...
Matt Mackall -
r11442:ee1ed6af stable
parent child Browse files
Show More
@@ -339,11 +339,10 b' def reposetup(ui, repo):'
339
339
340 return result
340 return result
341
341
342 def addchangegroup(self, source, srctype, url, emptyok=False):
342 def addchangegroup(self, *args, **kwargs):
343 parents = self.dirstate.parents()
343 parents = self.dirstate.parents()
344
344
345 result = super(bookmark_repo, self).addchangegroup(
345 result = super(bookmark_repo, self).addchangegroup(*args, **kwargs)
346 source, srctype, url, emptyok)
347 if result > 1:
346 if result > 1:
348 # We have more heads than before
347 # We have more heads than before
349 return result
348 return result
@@ -3745,7 +3745,8 b' def unbundle(ui, repo, fname1, *fnames, '
3745 for fname in fnames:
3745 for fname in fnames:
3746 f = url.open(ui, fname)
3746 f = url.open(ui, fname)
3747 gen = changegroup.readbundle(f, fname)
3747 gen = changegroup.readbundle(f, fname)
3748 modheads = repo.addchangegroup(gen, 'unbundle', 'bundle:' + fname)
3748 modheads = repo.addchangegroup(gen, 'unbundle', 'bundle:' + fname,
3749 lock=lock)
3749 finally:
3750 finally:
3750 lock.release()
3751 lock.release()
3751
3752
@@ -164,7 +164,7 b' def unbundle(repo, req):'
164 urllib.quote(req.env.get('REMOTE_HOST', '')),
164 urllib.quote(req.env.get('REMOTE_HOST', '')),
165 urllib.quote(req.env.get('REMOTE_USER', '')))
165 urllib.quote(req.env.get('REMOTE_USER', '')))
166 try:
166 try:
167 ret = repo.addchangegroup(gen, 'serve', url)
167 ret = repo.addchangegroup(gen, 'serve', url, lock=lock)
168 except util.Abort, inst:
168 except util.Abort, inst:
169 sys.stdout.write("abort: %s\n" % inst)
169 sys.stdout.write("abort: %s\n" % inst)
170 ret = 0
170 ret = 0
@@ -1199,7 +1199,7 b' class localrepository(repo.repository):'
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
@@ -1233,8 +1233,8 b' class localrepository(repo.repository):'
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]
@@ -1620,7 +1620,7 b' class localrepository(repo.repository):'
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.
@@ -1760,6 +1760,8 b' class localrepository(repo.repository):'
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
@@ -161,7 +161,8 b' class sshserver(object):'
161 return
161 return
162
162
163 self.respond("")
163 self.respond("")
164 r = self.repo.addchangegroup(self.fin, 'serve', self.client_url())
164 r = self.repo.addchangegroup(self.fin, 'serve', self.client_url(),
165 lock=self.lock)
165 self.respond(str(r))
166 self.respond(str(r))
166
167
167 def client_url(self):
168 def client_url(self):
@@ -205,7 +206,8 b' class sshserver(object):'
205 # push can proceed
206 # push can proceed
206
207
207 fp.seek(0)
208 fp.seek(0)
208 r = self.repo.addchangegroup(fp, 'serve', self.client_url())
209 r = self.repo.addchangegroup(fp, 'serve', self.client_url(),
210 lock=self.lock)
209 self.respond(str(r))
211 self.respond(str(r))
210 finally:
212 finally:
211 if not was_locked:
213 if not was_locked:
General Comments 0
You need to be logged in to leave comments. Login now