Mercurial > public > mercurial-scm > hg-stable
diff mercurial/streamclone.py @ 9506:49b62395e910
streamclone: partially encode filename over the wire, not for local read (issue1847)
(Fixes issue1847, which was introduced by 810387f59696: stream clone
of a repo with directory named *.d failed: server raises exception
"IOError: [Errno 2] No such file or directory:
/tmp/test/.hg/store/data/foo.d.hg.hg/foo".)
author | Greg Ward <greg-hg@gerg.ca> |
---|---|
date | Wed, 30 Sep 2009 16:08:11 -0400 |
parents | 0289f384e1e5 |
children | e2fd9b62349b |
line wrap: on
line diff
--- a/mercurial/streamclone.py Wed Sep 30 13:15:18 2009 -0500 +++ b/mercurial/streamclone.py Wed Sep 30 16:08:11 2009 -0400 @@ -48,8 +48,7 @@ try: repo.ui.debug(_('scanning\n')) for name, ename, size in repo.store.walk(): - # for backwards compat, name was partially encoded - entries.append((store.encodedir(name), size)) + entries.append((name, size)) total_bytes += size finally: lock.release() @@ -62,6 +61,7 @@ yield '%d %d\n' % (len(entries), total_bytes) for name, size in entries: repo.ui.debug(_('sending %s (%d bytes)\n') % (name, size)) - yield '%s\0%d\n' % (name, size) + # partially encode name over the wire for backwards compat + yield '%s\0%d\n' % (store.encodedir(name), size) for chunk in util.filechunkiter(repo.sopener(name), limit=size): yield chunk