##// END OF EJS Templates
Add a scheme for handling remote locking...
Matt Mackall -
r638:35f7adfe default
parent child Browse files
Show More
@@ -880,6 +880,8 b' def serve(ui, repo, **opts):'
880 880 fout.write(v)
881 881 fout.flush()
882 882
883 lock = None
884
883 885 while 1:
884 886 cmd = fin.readline()[:-1]
885 887 if cmd == '':
@@ -887,6 +889,13 b' def serve(ui, repo, **opts):'
887 889 if cmd == "heads":
888 890 h = repo.heads()
889 891 respond(" ".join(map(hg.hex, h)) + "\n")
892 if cmd == "lock":
893 lock = repo.lock()
894 respond("")
895 if cmd == "unlock":
896 if lock: lock.release()
897 lock = None
898 respond("")
890 899 elif cmd == "branches":
891 900 arg, nodes = getarg()
892 901 nodes = map(hg.bin, nodes.split(" "))
@@ -1620,6 +1620,15 b' class httprepository:'
1620 1620
1621 1621 return zread(f)
1622 1622
1623 class remotelock:
1624 def __init__(self, repo):
1625 self.repo = repo
1626 def release(self):
1627 self.repo.unlock()
1628 self.repo = None
1629 def __del__(self):
1630 if self.repo:
1631 self.release()
1623 1632
1624 1633 class sshrepository:
1625 1634 def __init__(self, ui, path):
@@ -1666,6 +1675,13 b' class sshrepository:'
1666 1675 l = int(r.readline())
1667 1676 return r.read(l)
1668 1677
1678 def lock(self):
1679 self.call("lock")
1680 return remotelock(self)
1681
1682 def unlock(self):
1683 self.call("unlock")
1684
1669 1685 def heads(self):
1670 1686 d = self.call("heads")
1671 1687 try:
General Comments 0
You need to be logged in to leave comments. Login now