64 fileobj.write('1\n') |
64 fileobj.write('1\n') |
65 return |
65 return |
66 |
66 |
67 # get consistent snapshot of repo. lock during scan so lock not |
67 # get consistent snapshot of repo. lock during scan so lock not |
68 # needed while we stream, and commits can happen. |
68 # needed while we stream, and commits can happen. |
|
69 lock = None |
69 try: |
70 try: |
70 repolock = repo.lock() |
71 try: |
71 except (lock.LockHeld, lock.LockUnavailable), inst: |
72 repolock = repo.lock() |
72 repo.ui.warn('locking the repository failed: %s\n' % (inst,)) |
73 except (lock.LockHeld, lock.LockUnavailable), inst: |
73 fileobj.write('2\n') |
74 repo.ui.warn('locking the repository failed: %s\n' % (inst,)) |
74 return |
75 fileobj.write('2\n') |
|
76 return |
75 |
77 |
76 fileobj.write('0\n') |
78 fileobj.write('0\n') |
77 repo.ui.debug('scanning\n') |
79 repo.ui.debug('scanning\n') |
78 entries = [] |
80 entries = [] |
79 total_bytes = 0 |
81 total_bytes = 0 |
80 for name, size in walkrepo(repo.spath): |
82 for name, size in walkrepo(repo.spath): |
81 name = repo.decodefn(util.pconvert(name)) |
83 name = repo.decodefn(util.pconvert(name)) |
82 entries.append((name, size)) |
84 entries.append((name, size)) |
83 total_bytes += size |
85 total_bytes += size |
84 repolock.release() |
86 finally: |
|
87 del repolock |
85 |
88 |
86 repo.ui.debug('%d files, %d bytes to transfer\n' % |
89 repo.ui.debug('%d files, %d bytes to transfer\n' % |
87 (len(entries), total_bytes)) |
90 (len(entries), total_bytes)) |
88 fileobj.write('%d %d\n' % (len(entries), total_bytes)) |
91 fileobj.write('%d %d\n' % (len(entries), total_bytes)) |
89 for name, size in entries: |
92 for name, size in entries: |