This is an archive of the discontinued Mercurial Phabricator instance.

bookmarks: prevent pushes of divergent bookmarks (foo@remote)
ClosedPublic

Authored by valentin.gatienbaron on Feb 13 2020, 11:32 PM.

Details

Summary

Before this change, such bookmarks are write-only: a client can push
them but not pull/read them. And because these bookmark can't be read,
even pushes are limited (for instance trying to delete such a bookmark
fails with a vanilla client because the client thinks the bookmark is
neither on the local nor the remote).

This change makes the server refuses such bookmarks, and for earlier
errors, makes the client refuse to send them.

I think the change of behavior is acceptable because I think this is a
bug in push/pull, and I don't think we change the behavior of `hg
unbundle`, because it doesn't seem that hg bundle ever store
bookmarks (and even if it did, it would seem weird anyway to try to
send divergent bookmarks).

Diff Detail

Repository
rHG Mercurial
Lint
Automatic diff as part of commit; lint not applicable.
Unit
Automatic diff as part of commit; unit tests not applicable.

Event Timeline

pulkit accepted this revision.Feb 21 2020, 4:14 AM
This revision is now accepted and ready to land.Feb 21 2020, 4:14 AM

I'm enthusiastic about this change, and in general a fan of declaring misfeatures in bookmarks exchange bugs. I think it's pretty clear the existing bookmarks exchange behavior isn't right to the point of being buggy.

I am also +1 for this change. divergence bookmark are close to "remote" bookmark and should not be exchanged. Especially because it open the way to divergent-divergent-bookmark and other hells.