469 |
469 |
470 (patcherr, files, fuzz) = self.patch(repo, pf) |
470 (patcherr, files, fuzz) = self.patch(repo, pf) |
471 patcherr = not patcherr |
471 patcherr = not patcherr |
472 |
472 |
473 if merge and files: |
473 if merge and files: |
474 # Mark as merged and update dirstate parent info |
474 # Mark as removed/merged and update dirstate parent info |
475 repo.dirstate.update(repo.dirstate.filterfiles(files.keys()), 'm') |
475 removed = [] |
|
476 merged = [] |
|
477 for f in files: |
|
478 if os.path.exists(repo.dirstate.wjoin(f)): |
|
479 merged.append(f) |
|
480 else: |
|
481 removed.append(f) |
|
482 repo.dirstate.update(repo.dirstate.filterfiles(removed), 'r') |
|
483 repo.dirstate.update(repo.dirstate.filterfiles(merged), 'm') |
476 p1, p2 = repo.dirstate.parents() |
484 p1, p2 = repo.dirstate.parents() |
477 repo.dirstate.setparents(p1, merge) |
485 repo.dirstate.setparents(p1, merge) |
478 files = patch.updatedir(self.ui, repo, files, wlock=wlock) |
486 files = patch.updatedir(self.ui, repo, files, wlock=wlock) |
479 n = repo.commit(files, message, user, date, force=1, lock=lock, |
487 n = repo.commit(files, message, user, date, force=1, lock=lock, |
480 wlock=wlock) |
488 wlock=wlock) |