Show More
@@ -372,9 +372,10 b' class abstractbackend(object):' | |||
|
372 | 372 | """ |
|
373 | 373 | raise NotImplementedError |
|
374 | 374 | |
|
375 |
def |
|
|
375 | def setfile(self, fname, lines, mode): | |
|
376 | 376 | """Write lines to target file. mode is a (islink, isexec) |
|
377 | tuple, or None if there is no mode information. | |
|
377 | tuple, or None if there is no mode information. If lines is None, | |
|
378 | the file must exists and its content is left unchanged. | |
|
378 | 379 | """ |
|
379 | 380 | raise NotImplementedError |
|
380 | 381 | |
@@ -399,10 +400,6 b' class abstractbackend(object):' | |||
|
399 | 400 | def exists(self, fname): |
|
400 | 401 | raise NotImplementedError |
|
401 | 402 | |
|
402 | def setmode(self, fname, islink, isexec): | |
|
403 | """Change target file mode.""" | |
|
404 | raise NotImplementedError | |
|
405 | ||
|
406 | 403 | class fsbackend(abstractbackend): |
|
407 | 404 | def __init__(self, ui, basedir): |
|
408 | 405 | super(fsbackend, self).__init__(ui) |
@@ -420,7 +417,11 b' class fsbackend(abstractbackend):' | |||
|
420 | 417 | finally: |
|
421 | 418 | fp.close() |
|
422 | 419 | |
|
423 |
def |
|
|
420 | def setfile(self, fname, lines, mode): | |
|
421 | if lines is None: | |
|
422 | if mode: | |
|
423 | util.setflags(self._join(fname), mode[0], mode[1]) | |
|
424 | return | |
|
424 | 425 | if not mode: |
|
425 | 426 | # Preserve mode information |
|
426 | 427 | isexec, islink = False, False |
@@ -475,9 +476,6 b' class fsbackend(abstractbackend):' | |||
|
475 | 476 | def exists(self, fname): |
|
476 | 477 | return os.path.lexists(self._join(fname)) |
|
477 | 478 | |
|
478 | def setmode(self, fname, islink, isexec): | |
|
479 | util.setflags(self._join(fname), islink, isexec) | |
|
480 | ||
|
481 | 479 | class workingbackend(fsbackend): |
|
482 | 480 | def __init__(self, ui, repo, similarity): |
|
483 | 481 | super(workingbackend, self).__init__(ui, repo.root) |
@@ -487,8 +485,8 b' class workingbackend(fsbackend):' | |||
|
487 | 485 | self.changed = set() |
|
488 | 486 | self.copied = [] |
|
489 | 487 | |
|
490 |
def |
|
|
491 |
super(workingbackend, self). |
|
|
488 | def setfile(self, fname, lines, mode): | |
|
489 | super(workingbackend, self).setfile(fname, lines, mode) | |
|
492 | 490 | self.changed.add(fname) |
|
493 | 491 | |
|
494 | 492 | def unlink(self, fname): |
@@ -501,10 +499,6 b' class workingbackend(fsbackend):' | |||
|
501 | 499 | self.copied.append((src, dst)) |
|
502 | 500 | self.changed.add(dst) |
|
503 | 501 | |
|
504 | def setmode(self, fname, islink, isexec): | |
|
505 | super(workingbackend, self).setmode(fname, islink, isexec) | |
|
506 | self.changed.add(fname) | |
|
507 | ||
|
508 | 502 | def close(self): |
|
509 | 503 | wctx = self.repo[None] |
|
510 | 504 | addremoved = set(self.changed) |
@@ -585,7 +579,7 b' class patchfile(object):' | |||
|
585 | 579 | rawlines.append(l) |
|
586 | 580 | lines = rawlines |
|
587 | 581 | |
|
588 |
self.backend. |
|
|
582 | self.backend.setfile(fname, lines, mode) | |
|
589 | 583 | |
|
590 | 584 | def printfile(self, warn): |
|
591 | 585 | if self.fileprinted: |
@@ -1252,11 +1246,12 b' def _applydiff(ui, fp, patcher, backend,' | |||
|
1252 | 1246 | if gp.op == 'RENAME': |
|
1253 | 1247 | backend.unlink(pstrip(gp.oldpath)) |
|
1254 | 1248 | if gp.mode and not first_hunk: |
|
1249 | data = None | |
|
1255 | 1250 | if gp.op == 'ADD': |
|
1256 |
# Added files without content have no hunk and |
|
|
1257 | backend.writelines(path, [], gp.mode) | |
|
1258 |
|
|
|
1259 |
|
|
|
1251 | # Added files without content have no hunk and | |
|
1252 | # must be created | |
|
1253 | data = [] | |
|
1254 | backend.setfile(path, data, gp.mode) | |
|
1260 | 1255 | if not first_hunk: |
|
1261 | 1256 | continue |
|
1262 | 1257 | try: |
General Comments 0
You need to be logged in to leave comments.
Login now