##// END OF EJS Templates
patch: include file name in binary patch error messages...
Patrick Mezard -
r16523:72706841 stable
parent child Browse files
Show More
@@ -1022,9 +1022,10 b' class hunk(object):'
1022
1022
1023 class binhunk(object):
1023 class binhunk(object):
1024 'A binary patch file. Only understands literals so far.'
1024 'A binary patch file. Only understands literals so far.'
1025 def __init__(self, lr):
1025 def __init__(self, lr, fname):
1026 self.text = None
1026 self.text = None
1027 self.hunk = ['GIT binary patch\n']
1027 self.hunk = ['GIT binary patch\n']
1028 self._fname = fname
1028 self._read(lr)
1029 self._read(lr)
1029
1030
1030 def complete(self):
1031 def complete(self):
@@ -1040,7 +1041,8 b' class binhunk(object):'
1040 line = lr.readline()
1041 line = lr.readline()
1041 self.hunk.append(line)
1042 self.hunk.append(line)
1042 if not line:
1043 if not line:
1043 raise PatchError(_('could not extract binary patch'))
1044 raise PatchError(_('could not extract "%s" binary data')
1045 % self._fname)
1044 size = int(line[8:].rstrip())
1046 size = int(line[8:].rstrip())
1045 dec = []
1047 dec = []
1046 line = lr.readline()
1048 line = lr.readline()
@@ -1054,14 +1056,14 b' class binhunk(object):'
1054 try:
1056 try:
1055 dec.append(base85.b85decode(line[1:-1])[:l])
1057 dec.append(base85.b85decode(line[1:-1])[:l])
1056 except ValueError, e:
1058 except ValueError, e:
1057 raise PatchError(_('could not decode binary patch: %s')
1059 raise PatchError(_('could not decode "%s" binary patch: %s')
1058 % str(e))
1060 % (self._fname, str(e)))
1059 line = lr.readline()
1061 line = lr.readline()
1060 self.hunk.append(line)
1062 self.hunk.append(line)
1061 text = zlib.decompress(''.join(dec))
1063 text = zlib.decompress(''.join(dec))
1062 if len(text) != size:
1064 if len(text) != size:
1063 raise PatchError(_('binary patch is %d bytes, not %d') %
1065 raise PatchError(_('"%s" length is %d bytes, should be %d')
1064 len(text), size)
1066 % (self._fname, len(text), size))
1065 self.text = text
1067 self.text = text
1066
1068
1067 def parsefilename(str):
1069 def parsefilename(str):
@@ -1200,7 +1202,7 b' def iterhunks(fp):'
1200 gitpatches[-1].ispatching(afile, bfile)):
1202 gitpatches[-1].ispatching(afile, bfile)):
1201 gp = gitpatches.pop()
1203 gp = gitpatches.pop()
1202 if x.startswith('GIT binary patch'):
1204 if x.startswith('GIT binary patch'):
1203 h = binhunk(lr)
1205 h = binhunk(lr, gp.path)
1204 else:
1206 else:
1205 if context is None and x.startswith('***************'):
1207 if context is None and x.startswith('***************'):
1206 context = True
1208 context = True
@@ -364,6 +364,7 b' Move text file and patch as binary'
364 R text2
364 R text2
365
365
366 Invalid base85 content
366 Invalid base85 content
367
367 $ hg rollback
368 $ hg rollback
368 repository tip rolled back to revision 15 (undo import)
369 repository tip rolled back to revision 15 (undo import)
369 working directory now based on revision 15
370 working directory now based on revision 15
@@ -379,8 +380,38 b' Invalid base85 content'
379 >
380 >
380 > EOF
381 > EOF
381 applying patch from stdin
382 applying patch from stdin
382 abort: could not decode binary patch: bad base85 character at position 6
383 abort: could not decode "binary2" binary patch: bad base85 character at position 6
383 [255]
384 [255]
385
386 $ hg revert -aq
387 $ hg import -d "1000000 0" -m rename-as-binary - <<"EOF"
388 > diff --git a/text2 b/binary2
389 > rename from text2
390 > rename to binary2
391 > index 78981922613b2afb6025042ff6bd878ac1994e85..10efcb362e9f3b3420fcfbfc0e37f3dc16e29757
392 > GIT binary patch
393 > literal 6
394 > Mc$`b*O5$Pw00T?_*Z=?k
395 >
396 > EOF
397 applying patch from stdin
398 abort: "binary2" length is 5 bytes, should be 6
399 [255]
400
401 $ hg revert -aq
402 $ hg import -d "1000000 0" -m rename-as-binary - <<"EOF"
403 > diff --git a/text2 b/binary2
404 > rename from text2
405 > rename to binary2
406 > index 78981922613b2afb6025042ff6bd878ac1994e85..10efcb362e9f3b3420fcfbfc0e37f3dc16e29757
407 > GIT binary patch
408 > Mc$`b*O5$Pw00T?_*Z=?k
409 >
410 > EOF
411 applying patch from stdin
412 abort: could not extract "binary2" binary data
413 [255]
414
384 $ cd ..
415 $ cd ..
385
416
386 Consecutive import with renames (issue2459)
417 Consecutive import with renames (issue2459)
General Comments 0
You need to be logged in to leave comments. Login now