Mercurial > hgsubversion
comparison fetch_command.py @ 106:122b6037e5f9
fetch_command: simplify deleted files enumeration, bypass filesystem
| author | Patrick Mezard <pmezard@gmail.com> |
|---|---|
| date | Tue, 25 Nov 2008 09:18:28 -0600 |
| parents | 607d72c12dee |
| children | a8950157281a |
comparison
equal
deleted
inserted
replaced
| 105:607d72c12dee | 106:122b6037e5f9 |
|---|---|
| 454 link_path = link_path[len('link '):] | 454 link_path = link_path[len('link '):] |
| 455 os.remove(path) | 455 os.remove(path) |
| 456 link_files[m] = link_path | 456 link_files[m] = link_path |
| 457 files_touched.add(m) | 457 files_touched.add(m) |
| 458 | 458 |
| 459 deleted_files = set() | |
| 459 for p in r.paths: | 460 for p in r.paths: |
| 460 if p.startswith(diff_path) and r.paths[p].action == 'D': | 461 if p.startswith(diff_path) and r.paths[p].action == 'D': |
| 461 p2 = p[len(diff_path)+1:] | 462 p2 = p[len(diff_path)+1:].strip('/') |
| 462 files_touched.add(p2) | 463 if p2 in hg_editor.repo[parent_ha]: |
| 463 p3 = os.path.join(our_tempdir, p2) | 464 deleted_files.add(p2) |
| 464 if os.path.exists(p3) and not os.path.isdir(p3): | 465 continue |
| 465 os.unlink(p3) | |
| 466 if p2 and p2[0] == '/': | |
| 467 p2 = p2[1:] | |
| 468 # If this isn't in the parent ctx, it must've been a dir | 466 # If this isn't in the parent ctx, it must've been a dir |
| 469 if not p2 in hg_editor.repo[parent_ha]: | 467 deleted_files.update([f for f in hg_editor.repo[parent_ha] |
| 470 d_files = [f for f in hg_editor.repo[parent_ha].manifest().iterkeys() | 468 if f.startswith(p2 + '/')]) |
| 471 if f.startswith(p2 + '/')] | 469 files_touched.update(deleted_files) |
| 472 for d in d_files: | |
| 473 files_touched.add(d) | |
| 474 | 470 |
| 475 copies = getcopies(svn, hg_editor, b, branches[b], r, files_touched, | 471 copies = getcopies(svn, hg_editor, b, branches[b], r, files_touched, |
| 476 parent_ha) | 472 parent_ha) |
| 477 | 473 |
| 478 def filectxfn(repo, memctx, path): | 474 def filectxfn(repo, memctx, path): |
| 475 if path in deleted_files: | |
| 476 raise IOError() | |
| 479 disk_path = os.path.join(our_tempdir, path) | 477 disk_path = os.path.join(our_tempdir, path) |
| 480 if path in link_files: | 478 if path in link_files: |
| 481 return context.memfilectx(path=path, data=link_files[path], | 479 return context.memfilectx(path=path, data=link_files[path], |
| 482 islink=True, isexec=False, | 480 islink=True, isexec=False, |
| 483 copied=False) | 481 copied=False) |
