Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to avoid mercurial obsolete warning on clients without evolve extension

Tags:

I currently work for a company that uses mercurial, but most developers use MQ instead of the new evolve flow. Therefore, most users do not have the extension enabled.

Every time I push to the main repository, .hg/store/obsstore gets automatically pushed with the obsolete changesets. This is problematic because after that all users that do not have the extension enabled get the following message:

obsolete feature not enabled but 33 markers found!

One solution, proposed in this answer, involves deleting .obsstore locally, but that's not what I want, since I'm still working with evolve and that means I expect the obsolete changesets to remain hidden. Not only that, but obsolete markers and changesets should be available on the server repo so that we keep the benefits of using evolve such as intelligent conflict solving.

I'd expect a way to either not push the obsolete changesets to the server repo, or (the correct way) for the server to not push the obsolete data to clients without evolve enabled.

Is this possible? If not, why not?

like image 652
Euller Borges Avatar asked Jun 08 '18 15:06

Euller Borges


1 Answers

If you really want to use evolve locally but not exchange your obsmarkers, you can do it. I will tell you how but be aware that you will have the exact same set of problems as with using stripping and rebase without evolve. If you push a previous version of a changeset and pushed the new version, the server will have the two versions at the same time. If you want to use Evolve only locally you can add these lines in your config files:

[experimental]
createmarkers=True
allowunstable=True
exchangeopt=False
like image 106
Boris Feld Avatar answered Oct 07 '22 17:10

Boris Feld