Show More
@@ -177,6 +177,10 b' def outdebug(ui, message):' | |||||
177 | """debug regarding output stream (bundling)""" |
|
177 | """debug regarding output stream (bundling)""" | |
178 | ui.debug('bundle2-output: %s\n' % message) |
|
178 | ui.debug('bundle2-output: %s\n' % message) | |
179 |
|
179 | |||
|
180 | def indebug(ui, message): | |||
|
181 | """debug on input stream (unbundling)""" | |||
|
182 | ui.debug(message) | |||
|
183 | ||||
180 | def validateparttype(parttype): |
|
184 | def validateparttype(parttype): | |
181 | """raise ValueError if a parttype contains invalid character""" |
|
185 | """raise ValueError if a parttype contains invalid character""" | |
182 | if _parttypeforbidden.search(parttype): |
|
186 | if _parttypeforbidden.search(parttype): | |
@@ -346,7 +350,7 b' def _processpart(op, part):' | |||||
346 | handler = parthandlermapping.get(part.type) |
|
350 | handler = parthandlermapping.get(part.type) | |
347 | if handler is None: |
|
351 | if handler is None: | |
348 | raise error.UnsupportedPartError(parttype=part.type) |
|
352 | raise error.UnsupportedPartError(parttype=part.type) | |
349 |
op.ui |
|
353 | indebug(op.ui, 'found a handler for part %r\n' % part.type) | |
350 | unknownparams = part.mandatorykeys - handler.params |
|
354 | unknownparams = part.mandatorykeys - handler.params | |
351 | if unknownparams: |
|
355 | if unknownparams: | |
352 | unknownparams = list(unknownparams) |
|
356 | unknownparams = list(unknownparams) | |
@@ -356,7 +360,7 b' def _processpart(op, part):' | |||||
356 | except error.UnsupportedPartError, exc: |
|
360 | except error.UnsupportedPartError, exc: | |
357 | if part.mandatory: # mandatory parts |
|
361 | if part.mandatory: # mandatory parts | |
358 | raise |
|
362 | raise | |
359 |
op.ui |
|
363 | indebug(op.ui, 'ignoring unsupported advisory part %s\n' % exc) | |
360 | return # skip to part processing |
|
364 | return # skip to part processing | |
361 |
|
365 | |||
362 | # handler is called outside the above try block so that we don't |
|
366 | # handler is called outside the above try block so that we don't | |
@@ -559,7 +563,7 b' def getunbundler(ui, fp, header=None):' | |||||
559 | if unbundlerclass is None: |
|
563 | if unbundlerclass is None: | |
560 | raise util.Abort(_('unknown bundle version %s') % version) |
|
564 | raise util.Abort(_('unknown bundle version %s') % version) | |
561 | unbundler = unbundlerclass(ui, fp) |
|
565 | unbundler = unbundlerclass(ui, fp) | |
562 |
ui |
|
566 | indebug(ui, 'start processing of %s stream\n' % header) | |
563 | return unbundler |
|
567 | return unbundler | |
564 |
|
568 | |||
565 | class unbundle20(unpackermixin): |
|
569 | class unbundle20(unpackermixin): | |
@@ -576,7 +580,7 b' class unbundle20(unpackermixin):' | |||||
576 | @util.propertycache |
|
580 | @util.propertycache | |
577 | def params(self): |
|
581 | def params(self): | |
578 | """dictionary of stream level parameters""" |
|
582 | """dictionary of stream level parameters""" | |
579 |
self.ui |
|
583 | indebug(self.ui, 'reading bundle2 stream parameters\n') | |
580 | params = {} |
|
584 | params = {} | |
581 | paramssize = self._unpack(_fstreamparamsize)[0] |
|
585 | paramssize = self._unpack(_fstreamparamsize)[0] | |
582 | if paramssize < 0: |
|
586 | if paramssize < 0: | |
@@ -609,7 +613,7 b' class unbundle20(unpackermixin):' | |||||
609 | # Some logic will be later added here to try to process the option for |
|
613 | # Some logic will be later added here to try to process the option for | |
610 | # a dict of known parameter. |
|
614 | # a dict of known parameter. | |
611 | if name[0].islower(): |
|
615 | if name[0].islower(): | |
612 |
self.ui |
|
616 | indebug(self.ui, "ignoring unknown parameter %r\n" % name) | |
613 | else: |
|
617 | else: | |
614 | raise error.UnsupportedPartError(params=(name,)) |
|
618 | raise error.UnsupportedPartError(params=(name,)) | |
615 |
|
619 | |||
@@ -618,14 +622,14 b' class unbundle20(unpackermixin):' | |||||
618 | """yield all parts contained in the stream""" |
|
622 | """yield all parts contained in the stream""" | |
619 | # make sure param have been loaded |
|
623 | # make sure param have been loaded | |
620 | self.params |
|
624 | self.params | |
621 |
self.ui |
|
625 | indebug(self.ui, 'start extraction of bundle2 parts\n') | |
622 | headerblock = self._readpartheader() |
|
626 | headerblock = self._readpartheader() | |
623 | while headerblock is not None: |
|
627 | while headerblock is not None: | |
624 | part = unbundlepart(self.ui, headerblock, self._fp) |
|
628 | part = unbundlepart(self.ui, headerblock, self._fp) | |
625 | yield part |
|
629 | yield part | |
626 | part.seek(0, 2) |
|
630 | part.seek(0, 2) | |
627 | headerblock = self._readpartheader() |
|
631 | headerblock = self._readpartheader() | |
628 |
self.ui |
|
632 | indebug(self.ui, 'end of bundle2 stream\n') | |
629 |
|
633 | |||
630 | def _readpartheader(self): |
|
634 | def _readpartheader(self): | |
631 | """reads a part header size and return the bytes blob |
|
635 | """reads a part header size and return the bytes blob | |
@@ -635,7 +639,7 b' class unbundle20(unpackermixin):' | |||||
635 | if headersize < 0: |
|
639 | if headersize < 0: | |
636 | raise error.BundleValueError('negative part header size: %i' |
|
640 | raise error.BundleValueError('negative part header size: %i' | |
637 | % headersize) |
|
641 | % headersize) | |
638 |
self.ui |
|
642 | indebug(self.ui, 'part header size: %i\n' % headersize) | |
639 | if headersize: |
|
643 | if headersize: | |
640 | return self._readexact(headersize) |
|
644 | return self._readexact(headersize) | |
641 | return None |
|
645 | return None | |
@@ -821,16 +825,16 b' class interrupthandler(unpackermixin):' | |||||
821 | if headersize < 0: |
|
825 | if headersize < 0: | |
822 | raise error.BundleValueError('negative part header size: %i' |
|
826 | raise error.BundleValueError('negative part header size: %i' | |
823 | % headersize) |
|
827 | % headersize) | |
824 |
self.ui |
|
828 | indebug(self.ui, 'part header size: %i\n' % headersize) | |
825 | if headersize: |
|
829 | if headersize: | |
826 | return self._readexact(headersize) |
|
830 | return self._readexact(headersize) | |
827 | return None |
|
831 | return None | |
828 |
|
832 | |||
829 | def __call__(self): |
|
833 | def __call__(self): | |
830 |
self.ui |
|
834 | indebug(self.ui, 'bundle2 stream interruption, looking for a part.\n') | |
831 | headerblock = self._readpartheader() |
|
835 | headerblock = self._readpartheader() | |
832 | if headerblock is None: |
|
836 | if headerblock is None: | |
833 |
self.ui |
|
837 | indebug(self.ui, 'no part found during interruption.\n') | |
834 | return |
|
838 | return | |
835 | part = unbundlepart(self.ui, headerblock, self._fp) |
|
839 | part = unbundlepart(self.ui, headerblock, self._fp) | |
836 | op = interruptoperation(self.ui) |
|
840 | op = interruptoperation(self.ui) | |
@@ -914,7 +918,7 b' class unbundlepart(unpackermixin):' | |||||
914 |
|
918 | |||
915 | pos = self._chunkindex[chunknum][0] |
|
919 | pos = self._chunkindex[chunknum][0] | |
916 | payloadsize = self._unpack(_fpayloadsize)[0] |
|
920 | payloadsize = self._unpack(_fpayloadsize)[0] | |
917 |
self.ui |
|
921 | indebug(self.ui, 'payload chunk size: %i\n' % payloadsize) | |
918 | while payloadsize: |
|
922 | while payloadsize: | |
919 | if payloadsize == flaginterrupt: |
|
923 | if payloadsize == flaginterrupt: | |
920 | # interruption detection, the handler will now read a |
|
924 | # interruption detection, the handler will now read a | |
@@ -932,7 +936,7 b' class unbundlepart(unpackermixin):' | |||||
932 | super(unbundlepart, self).tell())) |
|
936 | super(unbundlepart, self).tell())) | |
933 | yield result |
|
937 | yield result | |
934 | payloadsize = self._unpack(_fpayloadsize)[0] |
|
938 | payloadsize = self._unpack(_fpayloadsize)[0] | |
935 |
self.ui |
|
939 | indebug(self.ui, 'payload chunk size: %i\n' % payloadsize) | |
936 |
|
940 | |||
937 | def _findchunk(self, pos): |
|
941 | def _findchunk(self, pos): | |
938 | '''for a given payload position, return a chunk number and offset''' |
|
942 | '''for a given payload position, return a chunk number and offset''' | |
@@ -947,16 +951,16 b' class unbundlepart(unpackermixin):' | |||||
947 | """read the header and setup the object""" |
|
951 | """read the header and setup the object""" | |
948 | typesize = self._unpackheader(_fparttypesize)[0] |
|
952 | typesize = self._unpackheader(_fparttypesize)[0] | |
949 | self.type = self._fromheader(typesize) |
|
953 | self.type = self._fromheader(typesize) | |
950 |
self.ui |
|
954 | indebug(self.ui, 'part type: "%s"\n' % self.type) | |
951 | self.id = self._unpackheader(_fpartid)[0] |
|
955 | self.id = self._unpackheader(_fpartid)[0] | |
952 |
self.ui |
|
956 | indebug(self.ui, 'part id: "%s"\n' % self.id) | |
953 | # extract mandatory bit from type |
|
957 | # extract mandatory bit from type | |
954 | self.mandatory = (self.type != self.type.lower()) |
|
958 | self.mandatory = (self.type != self.type.lower()) | |
955 | self.type = self.type.lower() |
|
959 | self.type = self.type.lower() | |
956 | ## reading parameters |
|
960 | ## reading parameters | |
957 | # param count |
|
961 | # param count | |
958 | mancount, advcount = self._unpackheader(_fpartparamcount) |
|
962 | mancount, advcount = self._unpackheader(_fpartparamcount) | |
959 |
self.ui |
|
963 | indebug(self.ui, 'part parameters: %i\n' % (mancount + advcount)) | |
960 | # param size |
|
964 | # param size | |
961 | fparamsizes = _makefpartparamsizes(mancount + advcount) |
|
965 | fparamsizes = _makefpartparamsizes(mancount + advcount) | |
962 | paramsizes = self._unpackheader(fparamsizes) |
|
966 | paramsizes = self._unpackheader(fparamsizes) |
General Comments 0
You need to be logged in to leave comments.
Login now