455 |
455 |
456 (patcherr, files, fuzz) = self.patch(repo, pf) |
456 (patcherr, files, fuzz) = self.patch(repo, pf) |
457 patcherr = not patcherr |
457 patcherr = not patcherr |
458 |
458 |
459 if merge and files: |
459 if merge and files: |
460 # Mark as merged and update dirstate parent info |
460 # Mark as removed/merged and update dirstate parent info |
461 repo.dirstate.update(repo.dirstate.filterfiles(files.keys()), 'm') |
461 removed = [] |
|
462 merged = [] |
|
463 for f in files: |
|
464 if os.path.exists(repo.dirstate.wjoin(f)): |
|
465 merged.append(f) |
|
466 else: |
|
467 removed.append(f) |
|
468 repo.dirstate.update(repo.dirstate.filterfiles(removed), 'r') |
|
469 repo.dirstate.update(repo.dirstate.filterfiles(merged), 'm') |
462 p1, p2 = repo.dirstate.parents() |
470 p1, p2 = repo.dirstate.parents() |
463 repo.dirstate.setparents(p1, merge) |
471 repo.dirstate.setparents(p1, merge) |
464 files = patch.updatedir(self.ui, repo, files, wlock=wlock) |
472 files = patch.updatedir(self.ui, repo, files, wlock=wlock) |
465 n = repo.commit(files, message, user, date, force=1, lock=lock, |
473 n = repo.commit(files, message, user, date, force=1, lock=lock, |
466 wlock=wlock) |
474 wlock=wlock) |