44 total_bytes = 0 |
44 total_bytes = 0 |
45 try: |
45 try: |
46 # get consistent snapshot of repo, lock during scan |
46 # get consistent snapshot of repo, lock during scan |
47 lock = repo.lock() |
47 lock = repo.lock() |
48 try: |
48 try: |
49 repo.ui.debug(_('scanning\n')) |
49 repo.ui.debug('scanning\n') |
50 for name, ename, size in repo.store.walk(): |
50 for name, ename, size in repo.store.walk(): |
51 # for backwards compat, name was partially encoded |
51 # for backwards compat, name was partially encoded |
52 entries.append((store.encodedir(name), size)) |
52 entries.append((store.encodedir(name), size)) |
53 total_bytes += size |
53 total_bytes += size |
54 finally: |
54 finally: |
55 lock.release() |
55 lock.release() |
56 except error.LockError: |
56 except error.LockError: |
57 raise StreamException(2) |
57 raise StreamException(2) |
58 |
58 |
59 yield '0\n' |
59 yield '0\n' |
60 repo.ui.debug(_('%d files, %d bytes to transfer\n') % |
60 repo.ui.debug('%d files, %d bytes to transfer\n' % |
61 (len(entries), total_bytes)) |
61 (len(entries), total_bytes)) |
62 yield '%d %d\n' % (len(entries), total_bytes) |
62 yield '%d %d\n' % (len(entries), total_bytes) |
63 for name, size in entries: |
63 for name, size in entries: |
64 repo.ui.debug(_('sending %s (%d bytes)\n') % (name, size)) |
64 repo.ui.debug('sending %s (%d bytes)\n' % (name, size)) |
65 yield '%s\0%d\n' % (name, size) |
65 yield '%s\0%d\n' % (name, size) |
66 for chunk in util.filechunkiter(repo.sopener(name), limit=size): |
66 for chunk in util.filechunkiter(repo.sopener(name), limit=size): |
67 yield chunk |
67 yield chunk |