Merge with MPM.
authorBryan O'Sullivan <bos@serpentine.com>
Wed, 14 Sep 2005 14:39:46 -0700
changeset 1250 0ad3f9b27260
parent 1249 a5355fa5e33a (current diff)
parent 1245 d0a960b437a8 (diff)
child 1251 84cf8834efb5
Merge with MPM.
mercurial/commands.py
--- a/contrib/hgit	Wed Sep 14 14:29:02 2005 -0700
+++ b/contrib/hgit	Wed Sep 14 14:39:46 2005 -0700
@@ -256,13 +256,13 @@
         while visit:
             n = visit.pop(0)
             if n in stop_sha1:
-                break
+                continue
             for p in repo.changelog.parents(n):
                 if p not in reachable[i]:
                     reachable[i][p] = 1
                     visit.append(p)
                 if p in stop_sha1:
-                    break
+                    continue
 
     # walk the repository looking for commits that are in our
     # reachability graph
--- a/mercurial/commands.py	Wed Sep 14 14:29:02 2005 -0700
+++ b/mercurial/commands.py	Wed Sep 14 14:39:46 2005 -0700
@@ -579,8 +579,11 @@
             change = repo.changelog.read(n)
             m = repo.manifest.read(change[0])
             n = m[relpath(repo, [file1])[0]]
-        except hg.RepoError, KeyError:
-            n = r.lookup(rev)
+        except (hg.RepoError, KeyError):
+            try:
+                n = r.lookup(rev)
+            except KeyError, inst:
+                raise util.Abort('cannot find file %s in rev %s', file1, rev)
     else:
         n = r.tip()
     fp = make_file(repo, r, opts['output'], node=n)
@@ -618,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"))
 
--- a/mercurial/dirstate.py	Wed Sep 14 14:29:02 2005 -0700
+++ b/mercurial/dirstate.py	Wed Sep 14 14:39:46 2005 -0700
@@ -260,7 +260,7 @@
                             work.append(p)
                     else:
                         if statmatch(np, st):
-                            yield np
+                            yield util.pconvert(np)
 
         known = {'.hg': 1}
         def seen(fn):
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-pull-permission	Wed Sep 14 14:39:46 2005 -0700
@@ -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 14:39:46 2005 -0700
@@ -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