phases, local and remote; topics

Uwe Brauer oub at mat.ucm.es
Mon Dec 21 16:31:25 UTC 2020


Hi

I just noted that when pulling from 

https://dev.heptapod.net/mercurial/hg-git

And running 

Hg log -G 

I see.


│ ○  changeset:   1484:c6a262158160
│╱   Branch:      default
│    Author:      Dan Villiom Podlaski Christiansen <danchr at gmail.com>
│    Date:        Wed, 09 Dec 2020 23:24:54 +0100
│    Topic:       ci-tweaks
│    Phase:       draft
│    Summary:     ci: fix XML report path
│
â—‹  changeset:   1483:19d34b8f69da
│  Branch:      default
│  Author:      Dan Villiom Podlaski Christiansen <danchr at gmail.com>
│  Date:        Sat, 12 Dec 2020 13:11:18 +0100
│  Phase:       public
│  Summary:     ssh: fix Python 3 and Windows

That is precisely the behavior I would like to have for the repositories
I push to Helix, the ones with a topic are (still) in the draft phase,
while the topic free ones are in the public phase.

Now in my understanding the logic behind phases  is this


|   |               | remote | local | pull   | push   | clone  |
|---+---------------+--------+-------+--------+--------+--------|
| 1 | phase publish | true   | true  | public | public | public |
| 2 |               | true   | false | draft  | public | draft  |
| 3 |               | false  | false | draft  | draft  | draft  |
| 4 |               | false  | true  | public | draft  | public |

I tried to simulate this by 
starting a fresh local repository like this

$ mkdir Server
$ cd Server
$ hg init
$ echo "[phase]\npublish=false" >> .hg/hgrc
$ echo "First line" >> test.org
$ hg addremove
$ hg ci -m "First commit not publishing"


Then I wanted to consider Server as remote and clone it and consider the
Clone as local. But something did not work as expected.

In my global .hgrc I have 

[phases]
publish = True

So after cloning 

 hg clone Server local

 cd local

 hg log -G 

  changeset:   0:a40cb56af932
   Branch:      default
   tag:         tip
   Author:      Uwe Brauer <oub at mat.ucm.es>
   Date:        Mon, 21 Dec 2020 17:26:16 +0100
   Phase:       public
   Summary:     First commit not publishing

 echo "Change" >> test.org
 hg ci -m "Change local"
 hg push
 

hg log -G 

◍  changeset:   1:2c383a3d8fa0
│  Branch:      default
│  tag:         tip
│  Author:      Uwe Brauer <oub at mat.ucm.es>
│  Date:        Mon, 21 Dec 2020 17:27:44 +0100
│  Phase:       public
│  Summary:     Change
│
â—‹  changeset:   0:a40cb56af932
   Branch:      default
   Author:      Uwe Brauer <oub at mat.ucm.es>
   Date:        Mon, 21 Dec 2020 17:26:16 +0100
   Phase:       public
   Summary:     First commit not publishing

But the "Server/remote setting" is 
[phase]
publish=false

So why is the phase after pushing public? 

Most likely I cannot consider the repo Server as remote.

So in short how can I achieve the behavior 

│ ○  changeset:   1484:c6a262158160
│╱   Branch:      default
│    Author:      Dan Villiom Podlaski Christiansen <danchr at gmail.com>
│    Date:        Wed, 09 Dec 2020 23:24:54 +0100
│    Topic:       ci-tweaks
│    Phase:       draft
│    Summary:     ci: fix XML report path
│
â—‹  changeset:   1483:19d34b8f69da
│  Branch:      default
│  Author:      Dan Villiom Podlaski Christiansen <danchr at gmail.com>
│  Date:        Sat, 12 Dec 2020 13:11:18 +0100
│  Phase:       public
│  Summary:     ssh: fix Python 3 and Windows

Either for pseudo remote directories 

Or which is more important for Helix

I presume 



[phase]
publish=false

[experimental]
topic.publish-bare-branch = yes

If helix supports this feature.



More information about the Mercurial mailing list