hide private changeset to inc and pull.
--- a/states.py Fri May 20 19:14:19 2011 +0200
+++ b/states.py Fri May 20 19:51:09 2011 +0200
@@ -95,10 +95,16 @@
def uisetup(ui):
- def filter_private(orig, repo, *args,**kwargs):
+ def filterprivateout(orig, repo, *args,**kwargs):
common, heads = orig(repo, *args, **kwargs)
- return common, repo._reducehead(heads, repo._publicheads)
- extensions.wrapfunction(discovery, 'findcommonoutgoing', filter_private)
+ return common, repo._reducehead(heads)
+ def filterprivatein(orig, repo, remote, *args, **kwargs):
+ common, anyinc, heads = orig(repo, remote, *args, **kwargs)
+ heads = remote._reducehead(heads)
+ return common, anyinc, heads
+
+ extensions.wrapfunction(discovery, 'findcommonoutgoing', filterprivateout)
+ extensions.wrapfunction(discovery, 'findcommonincoming', filterprivatein)
def reposetup(ui, repo):
@@ -164,12 +170,12 @@
if olds != heads:
self._writestateshead()
- def _reducehead(self, candidates, max):
+ def _reducehead(self, candidates):
selected = set()
for candidate in candidates:
rev = self.changelog.rev(candidate)
ok = True
- for h in max:
+ for h in self._publicheads:
revh = self.changelog.rev(h)
if self.changelog.descendant(revh, rev):
ok = False
--- a/tests/test-state.t Fri May 20 19:14:19 2011 +0200
+++ b/tests/test-state.t Fri May 20 19:51:09 2011 +0200
@@ -28,25 +28,31 @@
adding file changes
added 2 changesets with 2 changes to 1 files
$ hg setstate 0 1 # until we fix push
- $ echo "cornelius" >> babar
- $ hg ci -m "great old one"
+ $ echo "tree" >> savainna
+ $ hg add savanna
+ savanna: No such file or directory
+ [1]
+ $ hg ci -m "terrain"
+ nothing changed
+ [1]
$ echo "flore" >> babar
$ hg ci -m "children"
$ hg log --template='{rev}:{node|short}: {state}\n'
- 3:3f5e297fd1c6: 0
- 2:dc0a5281e2d9: 0
+ 2:46356f7ddfb9: 0
1:710fe444b3b0: 0
0:5caa672bac26: 0
- $ cat >> $HGRCPATH <<EOF
+turn private on (repo side)
+ $ cat > .hg/hgrc << EOF
> [states]
> private=yes
> EOF
$ hg log --template='{rev}:{node|short}: {state}\n'
- 3:3f5e297fd1c6: 2
- 2:dc0a5281e2d9: 2
+ 2:46356f7ddfb9: 2
1:710fe444b3b0: 0
0:5caa672bac26: 0
+
+test outgoing and push
$ hg out ../remote1 --template='{rev}:{node|short}\n'
comparing with ../remote1
searching for changes
@@ -70,6 +76,41 @@
adding file changes
added 2 changesets with 2 changes to 1 files
+turn private off again (repo side)
+ $ sed -i 's/^private=.*$/private=no/' .hg/hgrc
+ $ hg log --template='{rev}:{node|short}: {state}\n'
+ 2:46356f7ddfb9: 0
+ 1:710fe444b3b0: 0
+ 0:5caa672bac26: 0
+ $ hg out ../remote1 --template='{rev}:{node|short}\n'
+ comparing with ../remote1
+ searching for changes
+ 2:46356f7ddfb9
+
+turn private on again (repo side)
+ $ sed -i 's/^private=.*$/private=yes/' .hg/hgrc
+
+test incoming and pull
+
+ $ hg init ../other1
+ $ cd ../other1
+ $ hg incoming ../local --template='{rev}:{node|short}\n'
+ comparing with ../local
+ 0:5caa672bac26
+ 1:710fe444b3b0
+ $ hg pull ../local
+ pulling from ../local
+ requesting all changes
+ adding changesets
+ adding manifests
+ adding file changes
+ added 2 changesets with 2 changes to 1 files
+ (run 'hg update' to get a working copy)
+ $ cd ..
+ $ hg clone local other2
+ updating to branch default
+ 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+