Mercurial > public > mercurial-scm > hg-stable
comparison mercurial/patch.py @ 21717:2a095d3442e0
patch: replace functions in fsbackend to use vfs
Several functions in fsbackend are replaced to use vfs functions.
vfs operations are applied on filename and path is joined by _join().
author | Chinmay Joshi <c@chinmayjoshi.com> |
---|---|
date | Thu, 05 Jun 2014 15:24:29 +0530 |
parents | bee0e1cffdd3 |
children | 3fbef7ac26f0 |
comparison
equal
deleted
inserted
replaced
21716:90f9be5adade | 21717:2a095d3442e0 |
---|---|
415 | 415 |
416 def _join(self, f): | 416 def _join(self, f): |
417 return os.path.join(self.opener.base, f) | 417 return os.path.join(self.opener.base, f) |
418 | 418 |
419 def getfile(self, fname): | 419 def getfile(self, fname): |
420 path = self._join(fname) | 420 if self.opener.islink(fname): |
421 if os.path.islink(path): | 421 return (self.opener.readlink(fname), (True, False)) |
422 return (os.readlink(path), (True, False)) | 422 |
423 isexec = False | 423 isexec = False |
424 try: | 424 try: |
425 isexec = os.lstat(path).st_mode & 0100 != 0 | 425 isexec = self.opener.lstat(fname).st_mode & 0100 != 0 |
426 except OSError, e: | 426 except OSError, e: |
427 if e.errno != errno.ENOENT: | 427 if e.errno != errno.ENOENT: |
428 raise | 428 raise |
429 return (self.opener.read(fname), (False, isexec)) | 429 return (self.opener.read(fname), (False, isexec)) |
430 | 430 |
431 def setfile(self, fname, data, mode, copysource): | 431 def setfile(self, fname, data, mode, copysource): |
432 islink, isexec = mode | 432 islink, isexec = mode |
433 if data is None: | 433 if data is None: |
434 util.setflags(self._join(fname), islink, isexec) | 434 self.opener.setflags(fname, islink, isexec) |
435 return | 435 return |
436 if islink: | 436 if islink: |
437 self.opener.symlink(data, fname) | 437 self.opener.symlink(data, fname) |
438 else: | 438 else: |
439 self.opener.write(fname, data) | 439 self.opener.write(fname, data) |
440 if isexec: | 440 if isexec: |
441 util.setflags(self._join(fname), False, True) | 441 self.opener.setflags(fname, False, True) |
442 | 442 |
443 def unlink(self, fname): | 443 def unlink(self, fname): |
444 util.unlinkpath(self._join(fname), ignoremissing=True) | 444 self.opener.unlinkpath(fname, ignoremissing=True) |
445 | 445 |
446 def writerej(self, fname, failed, total, lines): | 446 def writerej(self, fname, failed, total, lines): |
447 fname = fname + ".rej" | 447 fname = fname + ".rej" |
448 self.ui.warn( | 448 self.ui.warn( |
449 _("%d out of %d hunks FAILED -- saving rejects to file %s\n") % | 449 _("%d out of %d hunks FAILED -- saving rejects to file %s\n") % |
451 fp = self.opener(fname, 'w') | 451 fp = self.opener(fname, 'w') |
452 fp.writelines(lines) | 452 fp.writelines(lines) |
453 fp.close() | 453 fp.close() |
454 | 454 |
455 def exists(self, fname): | 455 def exists(self, fname): |
456 return os.path.lexists(self._join(fname)) | 456 return self.opener.lexists(fname) |
457 | 457 |
458 class workingbackend(fsbackend): | 458 class workingbackend(fsbackend): |
459 def __init__(self, ui, repo, similarity): | 459 def __init__(self, ui, repo, similarity): |
460 super(workingbackend, self).__init__(ui, repo.root) | 460 super(workingbackend, self).__init__(ui, repo.root) |
461 self.repo = repo | 461 self.repo = repo |