hgext/evolve.py
changeset 1034 5fd28e46e8f5
parent 1033 908273755215
child 1035 59bc29c84ce0
equal deleted inserted replaced
1033:908273755215 1034:5fd28e46e8f5
  2227 
  2227 
  2228 def obsexcmsg(ui, message):
  2228 def obsexcmsg(ui, message):
  2229     message = 'OBSEXC: ' + message
  2229     message = 'OBSEXC: ' + message
  2230     ui.status(message)
  2230     ui.status(message)
  2231 
  2231 
       
  2232 def obsexcprg(ui, *args, **kwargs):
       
  2233     ui.progress('OBSEXC', *args, **kwargs)
       
  2234 
  2232 
  2235 
  2233 @command('debugobsoleterelevant',
  2236 @command('debugobsoleterelevant',
  2234          [],
  2237          [],
  2235          'REVSET')
  2238          'REVSET')
  2236 def debugobsoleterelevant(ui, repo, *revsets):
  2239 def debugobsoleterelevant(ui, repo, *revsets):
  2305     @util.propertycache
  2308     @util.propertycache
  2306     def length(self):
  2309     def length(self):
  2307         return len(self.getvalue())
  2310         return len(self.getvalue())
  2308 
  2311 
  2309     def read(self, size):
  2312     def read(self, size):
  2310         self.ui.progress('OBSEXC', self.tell(), unit="bytes",
  2313         obsexcprg(self.ui, self.tell(), unit="bytes", total=self.length)
  2311                          total=self.length)
       
  2312         return StringIO.read(self, size)
  2314         return StringIO.read(self, size)
  2313 
  2315 
  2314     def __iter__(self):
  2316     def __iter__(self):
  2315         d = self.read(4096)
  2317         d = self.read(4096)
  2316         while d:
  2318         while d:
  2398             obsdata.ui = repo.ui
  2400             obsdata.ui = repo.ui
  2399             obsexcmsg(repo.ui, "pushing %i markers (%i bytes)\n"
  2401             obsexcmsg(repo.ui, "pushing %i markers (%i bytes)\n"
  2400                                % (len(markers), len(obsdata.getvalue())))
  2402                                % (len(markers), len(obsdata.getvalue())))
  2401             bundler.newpart('EVOLVE:B2X:OBSMARKERV1', data=obsdata)
  2403             bundler.newpart('EVOLVE:B2X:OBSMARKERV1', data=obsdata)
  2402             def callback(op):
  2404             def callback(op):
  2403                 repo.ui.progress('OBSEXC', None)
  2405                 obsexcprg(repo.ui, None)
  2404                 obsexcmsg(repo.ui, "DONE\n")
  2406                 obsexcmsg(repo.ui, "DONE\n")
  2405             return callback
  2407             return callback
  2406     bundle2partsgenerators.append(_pushb2phases)
  2408     bundle2partsgenerators.append(_pushb2phases)
  2407     bundle2partsgenerators.append(_pushb2obsmarker)
  2409     bundle2partsgenerators.append(_pushb2obsmarker)
  2408 
  2410 
  2484                 raise util.Abort('missing support for %s' % exc)
  2486                 raise util.Abort('missing support for %s' % exc)
  2485             try:
  2487             try:
  2486                 op = bundle2.processbundle(pushop.repo, reply)
  2488                 op = bundle2.processbundle(pushop.repo, reply)
  2487             except bundle2.UnknownPartError, exc:
  2489             except bundle2.UnknownPartError, exc:
  2488                 raise util.Abort('missing support for %s' % exc)
  2490                 raise util.Abort('missing support for %s' % exc)
  2489             repo.ui.progress('OBSEXC', None)
  2491             obsexcprg(repo.ui, None)
  2490         elif remote.capable('_evoext_pushobsmarkers_0'):
  2492         elif remote.capable('_evoext_pushobsmarkers_0'):
  2491             obsdata = pushobsmarkerStringIO()
  2493             obsdata = pushobsmarkerStringIO()
  2492             _encodemarkersstream(obsdata, markers)
  2494             _encodemarkersstream(obsdata, markers)
  2493             obsdata.seek(0)
  2495             obsdata.seek(0)
  2494             obsdata.ui = repo.ui
  2496             obsdata.ui = repo.ui
  2495             obsexcmsg(repo.ui, "pushing %i markers (%i bytes)\n"
  2497             obsexcmsg(repo.ui, "pushing %i markers (%i bytes)\n"
  2496                                % (len(markers), len(obsdata.getvalue())))
  2498                                % (len(markers), len(obsdata.getvalue())))
  2497             remote.evoext_pushobsmarkers_0(obsdata)
  2499             remote.evoext_pushobsmarkers_0(obsdata)
  2498             repo.ui.progress('OBSEXC', None)
  2500             obsexcprg(repo.ui, None)
  2499         else:
  2501         else:
  2500             rslts = []
  2502             rslts = []
  2501             remotedata = _pushkeyescape(markers).items()
  2503             remotedata = _pushkeyescape(markers).items()
  2502             totalbytes = sum(len(d) for k,d in remotedata)
  2504             totalbytes = sum(len(d) for k,d in remotedata)
  2503             sentbytes = 0
  2505             sentbytes = 0
  2504             obsexcmsg(repo.ui, "pushing %i markers in %i pushkey payload (%i bytes)\n"
  2506             obsexcmsg(repo.ui, "pushing %i markers in %i pushkey payload (%i bytes)\n"
  2505                                 % (len(markers), len(remotedata), totalbytes))
  2507                                 % (len(markers), len(remotedata), totalbytes))
  2506             for key, data in remotedata:
  2508             for key, data in remotedata:
  2507                 repo.ui.progress('OBSEXC', sentbytes, item=key, unit="bytes",
  2509                 obsexcprg(repo.ui, sentbytes, item=key, unit="bytes",
  2508                                  total=totalbytes)
  2510                           total=totalbytes)
  2509                 rslts.append(remote.pushkey('obsolete', key, '', data))
  2511                 rslts.append(remote.pushkey('obsolete', key, '', data))
  2510                 sentbytes += len(data)
  2512                 sentbytes += len(data)
  2511                 repo.ui.progress('OBSEXC', sentbytes, item=key, unit="bytes",
  2513                 obsexcprg(repo.ui, sentbytes, item=key, unit="bytes",
  2512                                  total=totalbytes)
  2514                           total=totalbytes)
  2513             repo.ui.progress('OBSEXC', None)
  2515             obsexcprg(repo.ui, None)
  2514             if [r for r in rslts if not r]:
  2516             if [r for r in rslts if not r]:
  2515                 msg = _('failed to push some obsolete markers!\n')
  2517                 msg = _('failed to push some obsolete markers!\n')
  2516                 repo.ui.warn(msg)
  2518                 repo.ui.warn(msg)
  2517         obsexcmsg(repo.ui, "DONE\n")
  2519         obsexcmsg(repo.ui, "DONE\n")
  2518 
  2520 
  2570         obsdata = inpart.read()
  2572         obsdata = inpart.read()
  2571     else:
  2573     else:
  2572         length = int(length)
  2574         length = int(length)
  2573         data = StringIO()
  2575         data = StringIO()
  2574         current = 0
  2576         current = 0
  2575         op.ui.progress('OBSEXC', current, unit="bytes", total=length)
  2577         obsexcprg(op.repo.ui, current, unit="bytes", total=length)
  2576         while current < length:
  2578         while current < length:
  2577             readsize = min(length-current, 4096)
  2579             readsize = min(length-current, 4096)
  2578             data.write(inpart.read(readsize))
  2580             data.write(inpart.read(readsize))
  2579             current += readsize
  2581             current += readsize
  2580             op.ui.progress('OBSEXC', current, unit="bytes", total=length)
  2582             obsexcprg(op.repo.ui, current, unit="bytes", total=length)
  2581         op.ui.progress('OBSEXC', None)
  2583         obsexcprg(op.repo.ui, None)
  2582         obsdata = data.getvalue()
  2584         obsdata = data.getvalue()
  2583     totalsize = len(obsdata)
  2585     totalsize = len(obsdata)
  2584     old = len(op.repo.obsstore._all)
  2586     old = len(op.repo.obsstore._all)
  2585     op.repo.obsstore.mergemarkers(tr, obsdata)
  2587     op.repo.obsstore.mergemarkers(tr, obsdata)
  2586     new = len(op.repo.obsstore._all) - old
  2588     new = len(op.repo.obsstore._all) - old
  2730     length = int(f.read(20))
  2732     length = int(f.read(20))
  2731     chunk = 4096
  2733     chunk = 4096
  2732     current = 0
  2734     current = 0
  2733     data = StringIO()
  2735     data = StringIO()
  2734     ui = self.ui
  2736     ui = self.ui
  2735     ui.progress('OBSEXC', current, unit="bytes", total=length)
  2737     obsexcprg(ui, current, unit="bytes", total=length)
  2736     while current < length:
  2738     while current < length:
  2737         readsize = min(length-current, chunk)
  2739         readsize = min(length-current, chunk)
  2738         data.write(f.read(readsize))
  2740         data.write(f.read(readsize))
  2739         current += readsize
  2741         current += readsize
  2740         ui.progress('OBSEXC', current, unit="bytes", total=length)
  2742         obsexcprg(ui, current, unit="bytes", total=length)
  2741     ui.progress('OBSEXC', None)
  2743     obsexcprg(ui, None)
  2742     data.seek(0)
  2744     data.seek(0)
  2743     return data
  2745     return data
  2744 
  2746 
  2745 @eh.addattr(localrepo.localpeer, 'evoext_pullobsmarkers_0')
  2747 @eh.addattr(localrepo.localpeer, 'evoext_pullobsmarkers_0')
  2746 def local_pullobsmarkers(self, heads=None, common=None):
  2748 def local_pullobsmarkers(self, heads=None, common=None):