602 abspath = os.path.abspath(source) |
602 abspath = os.path.abspath(source) |
603 copyfile = (os.stat(dest).st_dev == other.dev() |
603 copyfile = (os.stat(dest).st_dev == other.dev() |
604 and getattr(os, 'link', None) or shutil.copy2) |
604 and getattr(os, 'link', None) or shutil.copy2) |
605 if copyfile is not shutil.copy2: |
605 if copyfile is not shutil.copy2: |
606 ui.note("cloning by hardlink\n") |
606 ui.note("cloning by hardlink\n") |
|
607 |
607 # we use a lock here because because we're not nicely ordered |
608 # we use a lock here because because we're not nicely ordered |
608 l = lock.lock(os.path.join(source, ".hg", "lock")) |
609 l = lock.lock(os.path.join(source, ".hg", "lock")) |
609 |
610 |
610 util.copyfiles(os.path.join(source, ".hg"), os.path.join(dest, ".hg"), |
611 os.mkdir(os.path.join(dest, ".hg")) |
611 copyfile) |
612 |
612 |
613 files = "data 00manifest.d 00manifest.i 00changelog.d 00changelog.i" |
613 for fn in "dirstate", "lock", "hgrc", "localtags": |
614 for f in files.split(): |
614 try: |
615 src = os.path.join(source, ".hg", f) |
615 os.unlink(os.path.join(dest, ".hg", fn)) |
616 dst = os.path.join(dest, ".hg", f) |
616 except OSError: |
617 util.copyfiles(src, dst, copyfile) |
617 pass |
|
618 |
618 |
619 repo = hg.repository(ui, dest) |
619 repo = hg.repository(ui, dest) |
620 |
620 |
621 else: |
621 else: |
622 repo = hg.repository(ui, dest, create=1) |
622 repo = hg.repository(ui, dest, create=1) |