Mercurial > hgsubversion
comparison fetch_command.py @ 59:430af23bef4a
Performance fix for branches-from-tags in real replay, which is tied up with
changes that fix problems when trunk is not the oldest branch. Also includes
fixes for copying from a tag that we chose not to create (eg tagging a vendor
branch) and includes tests for all of those things.
| author | Augie Fackler <durin42@gmail.com> |
|---|---|
| date | Tue, 04 Nov 2008 16:38:16 -0600 |
| parents | a8b9c7e7c2ac |
| children | 2e30b59a9c19 |
comparison
equal
deleted
inserted
replaced
| 58:a8b9c7e7c2ac | 59:430af23bef4a |
|---|---|
| 433 if f.startswith(p2 + '/')] | 433 if f.startswith(p2 + '/')] |
| 434 for d in d_files: | 434 for d in d_files: |
| 435 files_touched.add(d) | 435 files_touched.add(d) |
| 436 if delete_all_files: | 436 if delete_all_files: |
| 437 for p in hg_editor.repo[parent_ha].manifest().iterkeys(): | 437 for p in hg_editor.repo[parent_ha].manifest().iterkeys(): |
| 438 files_touched.add(p) | 438 if p: |
| 439 files_touched.add(p) | |
| 439 if not used_diff: | 440 if not used_diff: |
| 440 for p in reduce(operator.add, [[os.path.join(x[0], y) for y in x[2]] | 441 for p in reduce(operator.add, [[os.path.join(x[0], y) for y in x[2]] |
| 441 for x in | 442 for x in |
| 442 list(os.walk(our_tempdir))]): | 443 list(os.walk(our_tempdir))]): |
| 443 p_real = p[len(our_tempdir)+1:] | 444 p_real = p[len(our_tempdir)+1:] |
| 445 link_files[p_real] = os.readlink(p) | 446 link_files[p_real] = os.readlink(p) |
| 446 exec_files[p_real] = (os.lstat(p).st_mode & 0100 != 0) | 447 exec_files[p_real] = (os.lstat(p).st_mode & 0100 != 0) |
| 447 files_touched.add(p_real) | 448 files_touched.add(p_real) |
| 448 for p in hg_editor.repo[parent_ha].manifest().iterkeys(): | 449 for p in hg_editor.repo[parent_ha].manifest().iterkeys(): |
| 449 # TODO this might not be a required step. | 450 # TODO this might not be a required step. |
| 450 files_touched.add(p) | 451 if p: |
| 452 files_touched.add(p) | |
| 451 date = r.date.replace('T', ' ').replace('Z', '').split('.')[0] | 453 date = r.date.replace('T', ' ').replace('Z', '').split('.')[0] |
| 452 date += ' -0000' | 454 date += ' -0000' |
| 453 def filectxfn(repo, memctx, path): | 455 def filectxfn(repo, memctx, path): |
| 454 disk_path = os.path.join(our_tempdir, path) | 456 disk_path = os.path.join(our_tempdir, path) |
| 455 if path in link_files: | 457 if path in link_files: |
| 463 return context.memfilectx(path=path, data=fp.read(), islink=False, | 465 return context.memfilectx(path=path, data=fp.read(), islink=False, |
| 464 isexec=exe, copied=False) | 466 isexec=exe, copied=False) |
| 465 extra = {} | 467 extra = {} |
| 466 if b: | 468 if b: |
| 467 extra['branch'] = b | 469 extra['branch'] = b |
| 470 if '' in files_touched: | |
| 471 files_touched.remove('') | |
| 468 if parent_ha != node.nullid or files_touched: | 472 if parent_ha != node.nullid or files_touched: |
| 469 # TODO(augie) remove this debug code? Or maybe it's sane to have it. | 473 # TODO(augie) remove this debug code? Or maybe it's sane to have it. |
| 470 for f in files_touched: | 474 for f in files_touched: |
| 471 if f: | 475 if f: |
| 472 assert f[0] != '/' | 476 assert f[0] != '/' |
