# HG changeset patch
# User Pierre-Yves David <pierre-yves.david@logilab.fr>
# Date 1326299187 -3600
#      Wed Jan 11 17:26:27 2012 +0100
# Node ID 2072e403199460754fb996358750e3af88b8ad64
# Parent  12dea4d998ecb5f18969c51d9b86fd19eb0e09fc
phases: exclude secret when doing a local clone

This is achieved by denying copy clone when any secret changeset exist.

diff --git a/mercurial/localrepo.py b/mercurial/localrepo.py
--- a/mercurial/localrepo.py
+++ b/mercurial/localrepo.py
@@ -626,6 +626,10 @@
     def local(self):
         return self
 
+    def cancopy(self):
+        return (repo.repository.cancopy(self)
+                and not self._phaseroots[phases.secret])
+
     def join(self, f):
         return os.path.join(self.path, f)
 
diff --git a/tests/test-phases.t b/tests/test-phases.t
--- a/tests/test-phases.t
+++ b/tests/test-phases.t
@@ -164,6 +164,17 @@
   4 changesets found
   $ cd ..
 
+Test secret changeset are not cloned
+(during local clone)
+
+  $ hg clone -qU initialrepo clone-dest
+  $ hglog -R clone-dest
+  4 0 B'
+  3 0 D
+  2 0 C
+  1 0 B
+  0 0 A
+
 Test revset
 
   $ cd initialrepo