# HG changeset patch # User Yuya Nishihara # Date 2016-01-19 15:08:00 # Node ID 5f2a308bac94b72453e0147d59edae23509f9dd4 # Parent 505a10b504edeee5e71c6b03066d428b1b9ce5a6 commandserver: drop tell() and seek() from channels (issue5049) These operations are obviously invalid for file-like channels because they will read or write protocol headers. This patch works around the issue that "hg archive" generates a corrupted zip file on Windows commandserver because of unusable tell() implementation. But the problem still occurs without using a commandserver. $ hg archive -R not-small-repo -t zip - | cat > invalid.zip So, this patch cannot fix the issue5049 completely. diff --git a/mercurial/commandserver.py b/mercurial/commandserver.py --- a/mercurial/commandserver.py +++ b/mercurial/commandserver.py @@ -55,7 +55,7 @@ class channeledoutput(object): self.out.flush() def __getattr__(self, attr): - if attr in ('isatty', 'fileno'): + if attr in ('isatty', 'fileno', 'tell', 'seek'): raise AttributeError(attr) return getattr(self.out, attr) @@ -139,7 +139,7 @@ class channeledinput(object): return l def __getattr__(self, attr): - if attr in ('isatty', 'fileno'): + if attr in ('isatty', 'fileno', 'tell', 'seek'): raise AttributeError(attr) return getattr(self.in_, attr)