193 if isinstance(fileid, int): |
193 if isinstance(fileid, int): |
194 try: |
194 try: |
195 return store.node(fileid) |
195 return store.node(fileid) |
196 except IndexError: |
196 except IndexError: |
197 raise error.LookupError( |
197 raise error.LookupError( |
198 '%d' % fileid, identifier, _('no match found') |
198 b'%d' % fileid, identifier, _(b'no match found') |
199 ) |
199 ) |
200 |
200 |
201 if len(fileid) == 20: |
201 if len(fileid) == 20: |
202 try: |
202 try: |
203 store.rev(fileid) |
203 store.rev(fileid) |
224 except (IndexError, TypeError): |
224 except (IndexError, TypeError): |
225 pass |
225 pass |
226 except (ValueError, OverflowError): |
226 except (ValueError, OverflowError): |
227 pass |
227 pass |
228 |
228 |
229 raise error.LookupError(fileid, identifier, _('no match found')) |
229 raise error.LookupError(fileid, identifier, _(b'no match found')) |
230 |
230 |
231 |
231 |
232 def resolvestripinfo(minlinkrev, tiprev, headrevs, linkrevfn, parentrevsfn): |
232 def resolvestripinfo(minlinkrev, tiprev, headrevs, linkrevfn, parentrevsfn): |
233 """Resolve information needed to strip revisions. |
233 """Resolve information needed to strip revisions. |
234 |
234 |
359 """ |
359 """ |
360 |
360 |
361 fnode = store.node |
361 fnode = store.node |
362 frev = store.rev |
362 frev = store.rev |
363 |
363 |
364 if nodesorder == 'nodes': |
364 if nodesorder == b'nodes': |
365 revs = [frev(n) for n in nodes] |
365 revs = [frev(n) for n in nodes] |
366 elif nodesorder == 'linear': |
366 elif nodesorder == b'linear': |
367 revs = set(frev(n) for n in nodes) |
367 revs = set(frev(n) for n in nodes) |
368 revs = dagop.linearize(revs, store.parentrevs) |
368 revs = dagop.linearize(revs, store.parentrevs) |
369 else: # storage and default |
369 else: # storage and default |
370 revs = sorted(frev(n) for n in nodes) |
370 revs = sorted(frev(n) for n in nodes) |
371 |
371 |
496 # Fragile heuristic: unless new file meta keys are added alphabetically |
496 # Fragile heuristic: unless new file meta keys are added alphabetically |
497 # preceding "censored", all censored revisions are prefixed by |
497 # preceding "censored", all censored revisions are prefixed by |
498 # "\1\ncensored:". A delta producing such a censored revision must be a |
498 # "\1\ncensored:". A delta producing such a censored revision must be a |
499 # full-replacement delta, so we inspect the first and only patch in the |
499 # full-replacement delta, so we inspect the first and only patch in the |
500 # delta for this prefix. |
500 # delta for this prefix. |
501 hlen = struct.calcsize(">lll") |
501 hlen = struct.calcsize(b">lll") |
502 if len(delta) <= hlen: |
502 if len(delta) <= hlen: |
503 return False |
503 return False |
504 |
504 |
505 oldlen = baselenfn(baserev) |
505 oldlen = baselenfn(baserev) |
506 newlen = len(delta) - hlen |
506 newlen = len(delta) - hlen |
507 if delta[:hlen] != mdiff.replacediffheader(oldlen, newlen): |
507 if delta[:hlen] != mdiff.replacediffheader(oldlen, newlen): |
508 return False |
508 return False |
509 |
509 |
510 add = "\1\ncensored:" |
510 add = b"\1\ncensored:" |
511 addlen = len(add) |
511 addlen = len(add) |
512 return newlen >= addlen and delta[hlen : hlen + addlen] == add |
512 return newlen >= addlen and delta[hlen : hlen + addlen] == add |