--- a/mercurial/commands.py Wed Sep 14 13:14:20 2005 -0500
+++ b/mercurial/commands.py Wed Sep 14 15:48:34 2005 -0500
@@ -621,15 +621,23 @@
abspath = source
other = hg.repository(ui, source)
+ copy = False
if other.dev() != -1:
abspath = os.path.abspath(source)
+ copy = True
- # we use a lock here because if we race with commit, we can
- # end up with extra data in the cloned revlogs that's not
- # pointed to by changesets, thus causing verify to fail
- l1 = lock.lock(os.path.join(source, ".hg", "lock"))
+ if copy:
+ try:
+ # we use a lock here because if we race with commit, we
+ # can end up with extra data in the cloned revlogs that's
+ # not pointed to by changesets, thus causing verify to
+ # fail
+ l1 = lock.lock(os.path.join(source, ".hg", "lock"))
+ except OSError:
+ copy = False
- # and here to avoid premature writing to the target
+ if copy:
+ # we lock here to avoid premature writing to the target
os.mkdir(os.path.join(dest, ".hg"))
l2 = lock.lock(os.path.join(dest, ".hg", "lock"))
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-pull-permission Wed Sep 14 15:48:34 2005 -0500
@@ -0,0 +1,20 @@
+#!/bin/sh
+
+mkdir a
+cd a
+hg init
+echo foo > b
+hg add b
+hg ci -m "b" -d "0 0"
+
+chmod -w .hg
+
+cd ..
+
+hg clone a b
+cd b
+hg verify
+
+cd ..
+
+chmod +w a/.hg # let test clean up
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-pull-permission.out Wed Sep 14 15:48:34 2005 -0500
@@ -0,0 +1,10 @@
+requesting all changes
+adding changesets
+adding manifests
+adding file changes
+added 1 changesets with 1 changes to 1 files
+checking changesets
+checking manifests
+crosschecking files in changesets and manifests
+checking files
+1 files, 1 changesets, 1 total revisions