sharing secret changesets with friends

Angel Ezquerra angel.ezquerra at
Wed Feb 19 03:20:30 CST 2014

On Wed, Feb 19, 2014 at 12:41 AM, Matt Mackall <mpm at> wrote:
> On Tue, 2014-02-18 at 23:42 +0100, Angel Ezquerra wrote:
>> I agree with your point of view that specifying levels of secretness
>> with greater granularity does not make sense. However there is one
>> thing that I really miss when using phases which is that there is no
>> way to differentiate between unshared draft revisions and shared draft
>> revisions.
> This is fundamentally unavoidable. Not all repositories are HTTP smart
> servers that have operating system permissions to even record such a
> difference during a nominally read-only pull. Such cases include
> unprivileged HTTP servers (yay! secure!), dumb HTTP servers, SSH servers
> using standard Unix permissions, shared filesystems, etc. In other
> words: most use cases are simply incompatible with your idea out of the
> gate.

I'm not sure I understand your point.

My first suggestion (having a "draft -> shared" phase transition)
would work exactly the same as the existing "draft -> public"
transition. The only difference would be that the former would happen
when talking to non publishing repos, while the later would happen
when working with publishing repos. If it were not possible to tell if
the repo is publishing or not then mercurial could assume that the
repo is publishing and do a "draft -> public" transition by default.

If the "draft -> public" transition works, why would a hypothetical
"draft -> shared" transition not work?

My second suggestion, which is to have a way to (locally) log which
revisions you have shared (pushed or pulled) and to/from which
repositories could be made by creating a local log (i.e. it would not
need any special server capabilities).

Note that what I miss is a way to tell which revisions have been
shared from a _local_ repo. I'm less interested in knowing if
revisions have been further shared to/from other repos (although that
could be nice I guess). I've noticed that a lot of people check if a
revision is public in order to tell if that revision has been shared.
It is a pity that when you start working with non publishing repos
that nice "public = shared" revision mapping is broken.


More information about the Mercurial-devel mailing list