Marek Lukáš via Mercurial <mercurial@mercurial-scm.org> writes:
> I found a thread at OpenJDK mailing list with proposal of migrating from 
> Mercurial to Git:
> New candidate JEP: 357: Migrate from Mercurial to Git 
> https://mail.openjdk.java.net/pipermail/discuss/2019-July/thread.html
> Any ideas how to help them continue with Mercurial?

From this: https://mail.openjdk.java.net/pipermail/discuss/2019-July/005096.html
> *) There are improvements to Mercurial that can make the conversion 
> advantages less appealing. For
>example, clonebundles that I pointed out multiple times over the year (and 
>Mark promised to deliver,
>at OpenJDK Committers Workshop in February 2019) is still not enabled:
>https://bugs.openjdk.java.net/browse/JDK-8211383. Instead, we have 
>"Alternatives: Keep using
>Mercurial" (sic!).
>
> *) The claim that "There are many more tools for interacting with Git than 
> Mercurial" look dubious.
>For the tools I use from that list: IntelliJ, NetBeans, Atom are supporting 
>Mercurial as well.

It looks like most of the arguments for the move are not based in
delivering improvements with the minimal amount of breakage, but rather
in moving to git at any cost.

I’m not sure how to help with that, except maybe by explicitly offering
Aleksey help in improving the situation.


The only non-trivially-false argument the JEP gives for moving to git is
that the repository could become smaller:

> Initial prototypes of converted repositories show a significant
> reduction in the size of the version control metadata. For example,
> the .git directory of the jdk/jdk repository is approximately 300 MB
> with Git and the .hg directory is around 1.2 GB with Mercurial,
> depending on the Mercurial version being used.

Looking at the .hg/ folder, it seems that there were quite a few big
renames which consume additional space in Mercurial, but not in git:

$ du -hs .hg/store/data/jdk
382M    .hg/store/data/jdk
$ LANG=C ls -d jdk
ls: cannot access 'jdk': No such file or directory

More general:
$ for i in .hg/store/data/*; do ls -d ${i##*/} 2>/dev/null 1>/dev/null || echo 
$i; done | LANG=C xargs du -hsc | LANG=C sort -h | tail -n 8
15M     .hg/store/data/corba
30M     .hg/store/data/nashorn
48M     .hg/store/data/jaxp
51M     .hg/store/data/jaxws
66M     .hg/store/data/langtools
80M     .hg/store/data/hotspot
382M    .hg/store/data/jdk
672M    total

The rename was in 2017:

$ LANG=C hg log jdk | head -n 5
changeset:   47216:71c04702a3d5
user:        erikj
date:        Tue Sep 12 19:03:39 2017 +0200
summary:     8187443: Forest Consolidation: Move files to unified layout


The solution to that is the RenameSpaceSavingPlan
https://www.mercurial-scm.org/wiki/RenameSpaceSavingPlan
and going by the bugtracker, that got considerably easier:
> Gábor Stefanik 2018-09-21 08:15:18 UTC:
> As an alternative to my previous "foreigndelta" proposal, we now have a new 
> option thanks to the new sparse revlog feature (bug 5480).
> With sparse revlogs, it can now be economical to use the same filelog for 
> multiple files - e.g. not opening a new filelog when a file is 
> renamed/copied, but instead storing revisions for both filenames in the 
> pre-existing filelog, or even using a single large filelog (or just a few) 
> for all files in the repository. In this setup, the pre- and post-rename 
> revisions end up in the same revlog, so no extension of the delta base field 
> is required.
> 
> Previously, this would have been uneconomical due to the "delta chain span" 
> constraint (and before generaldelta, the requirement for deltas to always be 
> based on the previous revlog entry). Sparse revlogs relax this constraint, so 
> having unrelated revisions stored in the same revlog file between the 
> relevant deltas should no longer incur a performance penalty.
> - https://bz.mercurial-scm.org/show_bug.cgi?id=883#c45

So the only solid argument for migrating jdk to git is that Mercurial
still has additional costs on renaming.

Is there an ETA for fixing that — and if not, can one be found?

This is basically the one critical feature openjdk would need.

Best wishes,
Arne
--
Unpolitisch sein
heißt politisch sein
ohne es zu merken

Attachment: signature.asc
Description: PGP signature

_______________________________________________
Mercurial mailing list
Mercurial@mercurial-scm.org
https://www.mercurial-scm.org/mailman/listinfo/mercurial

Reply via email to