# HG changeset patch # User Pierre-Yves David # Date 1583338085 -3600 # Node ID e0c091b199bca83b31cfbcfc2bbbb641b824b912 # Parent 3f40b39d091e2d0fa5210f0561a6315b4447db5d topic: extend topic gating to descendant If a changeset with topic as descendant without topic, we need to exclude them too when using: topic.server-gate-topic-changesets. diff -r 3f40b39d091e -r e0c091b199bc hgext3rd/topic/server.py --- a/hgext3rd/topic/server.py Wed Mar 04 16:53:32 2020 +0100 +++ b/hgext3rd/topic/server.py Wed Mar 04 17:08:05 2020 +0100 @@ -50,6 +50,7 @@ if cl.changelogrevision(r).extra.get(constants.extrakey, b''): extrafiltered.add(r) if extrafiltered: + extrafiltered = set(repo.revs('%ld::%ld', extrafiltered, consider)) filteredrevs = frozenset(filteredrevs | extrafiltered) return filteredrevs diff -r 3f40b39d091e -r e0c091b199bc tests/test-topic-server.t --- a/tests/test-topic-server.t Wed Mar 04 16:53:32 2020 +0100 +++ b/tests/test-topic-server.t Wed Mar 04 17:08:05 2020 +0100 @@ -99,6 +99,15 @@ $ echo c > c $ hg commit -Am 'adding c (no topic)' adding c + $ hg up some-work + switching to topic some-work + 1 files updated, 0 files merged, 1 files removed, 0 files unresolved + $ hg topic --clear + $ echo d > d + $ hg commit -Am 'adding d (no topic)' + adding d + created new head + (consider using topic for lightweight branches. See 'hg help topic') $ hg log -r 'all() - 0' changeset: 1:2a2e8b3520f2 topic: some-work @@ -107,12 +116,18 @@ summary: adding b (topic) changeset: 2:b46feb4d24f9 - tag: tip parent: 0:6569b5a81c7e user: test date: Thu Jan 01 00:00:00 1970 +0000 summary: adding c (no topic) + changeset: 3:be22ca6e89ea + tag: tip + parent: 1:2a2e8b3520f2 + user: test + date: Thu Jan 01 00:00:00 1970 +0000 + summary: adding d (no topic) + (disable the bare publishing to put a bare draft on the server) @@ -120,16 +135,16 @@ > [experimental] > topic.publish-bare-branch = no > EOF - $ hg push + $ hg push --force pushing to ssh://user@dummy/server searching for changes remote: adding changesets remote: adding manifests remote: adding file changes - remote: added 2 changesets with 2 changes to 2 files (+1 heads) + remote: added 3 changesets with 3 changes to 3 files (+1 heads) $ cd .. $ hg --cwd server phase -r 'tip' - 2: draft + 3: draft Clients with topic can exchange draft changesets both with and without a topic through the server @@ -139,9 +154,9 @@ adding changesets adding manifests adding file changes - added 2 changesets with 2 changes to 2 files (+1 heads) - new changesets 2a2e8b3520f2:b46feb4d24f9 (2 drafts) - (run 'hg heads' to see heads) + added 3 changesets with 3 changes to 3 files (+1 heads) + new changesets 2a2e8b3520f2:be22ca6e89ea (3 drafts) + (run 'hg heads' to see heads, 'hg merge' to merge) $ hg --cwd client-topic2 log -r 'all() - 0' changeset: 1:2a2e8b3520f2 topic: some-work @@ -150,12 +165,18 @@ summary: adding b (topic) changeset: 2:b46feb4d24f9 - tag: tip parent: 0:6569b5a81c7e user: test date: Thu Jan 01 00:00:00 1970 +0000 summary: adding c (no topic) + changeset: 3:be22ca6e89ea + tag: tip + parent: 1:2a2e8b3520f2 + user: test + date: Thu Jan 01 00:00:00 1970 +0000 + summary: adding d (no topic) + Client without topic only sees draft changesets if they don't have a topic