comparison hgext/mq.py @ 4332:4e5e1638b165

mq: don't abort when merging a patch that removes files
author Alexis S. L. Carvalho <alexis@cecm.usp.br>
date Mon, 09 Apr 2007 04:24:17 -0300
parents e1cdf5f6386e
children 1cc5fc1d0994 7ae02bce8de2
comparison
equal deleted inserted replaced
4331:ce52deed83bc 4332:4e5e1638b165
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)