mercurial/streamclone.py
changeset 4959 97b734fb9c6f
parent 4865 439e2f2fde42
child 5396 5105b119edd2
equal deleted inserted replaced
4958:9a2a73ea6135 4959:97b734fb9c6f
    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: