Mercurial > public > mercurial-scm > hg-stable
comparison mercurial/commands.py @ 1209:920682a532df
Tighten up clone locking
Add a lock on the destination, expand comment on source lock
author | mpm@selenic.com |
---|---|
date | Wed, 07 Sep 2005 19:37:11 -0700 |
parents | 4644df4944ff |
children | 1c455338ad95 |
comparison
equal
deleted
inserted
replaced
1208:4644df4944ff | 1209:920682a532df |
---|---|
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 |
608 # we use a lock here because because we're not nicely ordered | 608 # we use a lock here because if we race with commit, we can |
609 l = lock.lock(os.path.join(source, ".hg", "lock")) | 609 # end up with extra data in the cloned revlogs that's not |
610 | 610 # pointed to by changesets, thus causing verify to fail |
611 l1 = lock.lock(os.path.join(source, ".hg", "lock")) | |
612 | |
613 # and here to avoid premature writing to the target | |
611 os.mkdir(os.path.join(dest, ".hg")) | 614 os.mkdir(os.path.join(dest, ".hg")) |
615 l2 = lock.lock(os.path.join(dest, ".hg", "lock")) | |
612 | 616 |
613 files = "data 00manifest.d 00manifest.i 00changelog.d 00changelog.i" | 617 files = "data 00manifest.d 00manifest.i 00changelog.d 00changelog.i" |
614 for f in files.split(): | 618 for f in files.split(): |
615 src = os.path.join(source, ".hg", f) | 619 src = os.path.join(source, ".hg", f) |
616 dst = os.path.join(dest, ".hg", f) | 620 dst = os.path.join(dest, ".hg", f) |