Mercurial > hg > mercurial-crew-with-dirclash
comparison mercurial/hg.py @ 646:342927da4f4c
Show remote client output with "remote:"
author | Matt Mackall <mpm@selenic.com> |
---|---|
date | Wed, 06 Jul 2005 22:30:00 -0800 |
parents | 6ebe118280bd |
children | 8c89408a7154 |
comparison
equal
deleted
inserted
replaced
645:a55048b2ae3a | 646:342927da4f4c |
---|---|
9 import util | 9 import util |
10 from revlog import * | 10 from revlog import * |
11 from demandload import * | 11 from demandload import * |
12 demandload(globals(), "re lock urllib urllib2 transaction time socket") | 12 demandload(globals(), "re lock urllib urllib2 transaction time socket") |
13 demandload(globals(), "tempfile httprangereader bdiff") | 13 demandload(globals(), "tempfile httprangereader bdiff") |
14 demandload(globals(), "bisect") | 14 demandload(globals(), "bisect select") |
15 | 15 |
16 class filelog(revlog): | 16 class filelog(revlog): |
17 def __init__(self, opener, path): | 17 def __init__(self, opener, path): |
18 revlog.__init__(self, opener, | 18 revlog.__init__(self, opener, |
19 os.path.join("data", path + ".i"), | 19 os.path.join("data", path + ".i"), |
1749 path = self.path or "" | 1749 path = self.path or "" |
1750 | 1750 |
1751 cmd = "ssh %s 'hg -R %s serve --stdio'" | 1751 cmd = "ssh %s 'hg -R %s serve --stdio'" |
1752 cmd = cmd % (args, path) | 1752 cmd = cmd % (args, path) |
1753 | 1753 |
1754 self.pipeo, self.pipei = os.popen2(cmd) | 1754 self.pipeo, self.pipei, self.pipee = os.popen3(cmd) |
1755 | |
1756 def readerr(self): | |
1757 while 1: | |
1758 r,w,x = select.select([self.pipee], [], [], 0) | |
1759 if not r: break | |
1760 l = self.pipee.readline() | |
1761 if not l: break | |
1762 self.ui.status("remote: ", l) | |
1755 | 1763 |
1756 def __del__(self): | 1764 def __del__(self): |
1765 self.readerr() | |
1757 self.pipeo.close() | 1766 self.pipeo.close() |
1758 self.pipei.close() | 1767 self.pipei.close() |
1768 self.pipee.close() | |
1759 | 1769 |
1760 def dev(self): | 1770 def dev(self): |
1761 return -1 | 1771 return -1 |
1762 | 1772 |
1763 def do_cmd(self, cmd, **args): | 1773 def do_cmd(self, cmd, **args): |
1770 | 1780 |
1771 return self.pipei | 1781 return self.pipei |
1772 | 1782 |
1773 def call(self, cmd, **args): | 1783 def call(self, cmd, **args): |
1774 r = self.do_cmd(cmd, **args) | 1784 r = self.do_cmd(cmd, **args) |
1775 l = int(r.readline()) | 1785 l = r.readline() |
1786 self.readerr() | |
1787 try: | |
1788 l = int(l) | |
1789 except: | |
1790 raise RepoError("unexpected response '%s'" % l) | |
1776 return r.read(l) | 1791 return r.read(l) |
1777 | 1792 |
1778 def lock(self): | 1793 def lock(self): |
1779 self.call("lock") | 1794 self.call("lock") |
1780 return remotelock(self) | 1795 return remotelock(self) |
1785 def heads(self): | 1800 def heads(self): |
1786 d = self.call("heads") | 1801 d = self.call("heads") |
1787 try: | 1802 try: |
1788 return map(bin, d[:-1].split(" ")) | 1803 return map(bin, d[:-1].split(" ")) |
1789 except: | 1804 except: |
1790 self.ui.warn("unexpected response:\n" + d[:400] + "\n...\n") | 1805 raise RepoError("unexpected response '%s'" % (d[:400] + "...")) |
1791 raise | |
1792 | 1806 |
1793 def branches(self, nodes): | 1807 def branches(self, nodes): |
1794 n = " ".join(map(hex, nodes)) | 1808 n = " ".join(map(hex, nodes)) |
1795 d = self.call("branches", nodes=n) | 1809 d = self.call("branches", nodes=n) |
1796 try: | 1810 try: |
1797 br = [ tuple(map(bin, b.split(" "))) for b in d.splitlines() ] | 1811 br = [ tuple(map(bin, b.split(" "))) for b in d.splitlines() ] |
1798 return br | 1812 return br |
1799 except: | 1813 except: |
1800 self.ui.warn("unexpected response:\n" + d[:400] + "\n...\n") | 1814 raise RepoError("unexpected response '%s'" % (d[:400] + "...")) |
1801 raise | |
1802 | 1815 |
1803 def between(self, pairs): | 1816 def between(self, pairs): |
1804 n = "\n".join(["-".join(map(hex, p)) for p in pairs]) | 1817 n = "\n".join(["-".join(map(hex, p)) for p in pairs]) |
1805 d = self.call("between", pairs=n) | 1818 d = self.call("between", pairs=n) |
1806 try: | 1819 try: |
1807 p = [ l and map(bin, l.split(" ")) or [] for l in d.splitlines() ] | 1820 p = [ l and map(bin, l.split(" ")) or [] for l in d.splitlines() ] |
1808 return p | 1821 return p |
1809 except: | 1822 except: |
1810 self.ui.warn("unexpected response:\n" + d[:400] + "\n...\n") | 1823 raise RepoError("unexpected response '%s'" % (d[:400] + "...")) |
1811 raise | |
1812 | 1824 |
1813 def changegroup(self, nodes): | 1825 def changegroup(self, nodes): |
1814 n = " ".join(map(hex, nodes)) | 1826 n = " ".join(map(hex, nodes)) |
1815 f = self.do_cmd("changegroup", roots=n) | 1827 f = self.do_cmd("changegroup", roots=n) |
1816 return self.pipei | 1828 return self.pipei |
1822 | 1834 |
1823 while 1: | 1835 while 1: |
1824 d = cg.read(4096) | 1836 d = cg.read(4096) |
1825 if not d: break | 1837 if not d: break |
1826 self.pipeo.write(d) | 1838 self.pipeo.write(d) |
1839 self.readerr() | |
1827 | 1840 |
1828 self.pipeo.flush() | 1841 self.pipeo.flush() |
1829 | 1842 |
1843 self.readerr() | |
1830 l = int(self.pipei.readline()) | 1844 l = int(self.pipei.readline()) |
1831 return self.pipei.read(l) | 1845 return self.pipei.read(l) != "" |
1832 | 1846 |
1833 def repository(ui, path=None, create=0): | 1847 def repository(ui, path=None, create=0): |
1834 if path: | 1848 if path: |
1835 if path.startswith("http://"): | 1849 if path.startswith("http://"): |
1836 return httprepository(ui, path) | 1850 return httprepository(ui, path) |