I see that Jujutsu is getting a slot at Git Merge, God willing one day from
Mercurial!

https://github.com/git/git-merge

On Mon, Sep 16, 2024 at 11:33 AM Pierre-Yves David <
pierre-yves.da...@ens-lyon.org> wrote:

>
> On 7/19/24 14:28, PIERRE AUGIER wrote:
>
> I first wanted to react to a statement on Mercurial wheels on PyPI and it 
> leads me to express my fear that Mercurial is not evolving towards a nice 
> alternative to Git.
>
> I describe few issues and try to think about what could be done to fix them.
>
> ----- Mail original -----
>
> De: "Alessandro Dentella" <sandro.dente...@gmail.com> 
> <sandro.dente...@gmail.com>
> À: "Uwe Brauer" <o...@mat.ucm.es> <o...@mat.ucm.es>, "mercurial" 
> <mercur...@mercurial-scm.org> <mercur...@mercurial-scm.org>
> Envoyé: Vendredi 19 Juillet 2024 09:36:14
> Objet: Re: ubuntu 24 (and most likely debian 12) does not allow to install 
> evolve
>
> Il giorno gio 18 lug 2024 alle ore 16:45 Uwe Brauer via Mercurial < 
> [mailto:mercurial@lists.mercurial-scm.org <mercurial@lists.mercurial-scm.org> 
> | mercurial@lists.mercurial-scm.org ]
>
> ha scritto:
>
> II don't really know which version of hg-git is ok for you, but I'm on Ubuntu
> 24:04 and I can tell you that 67.2 is the default that in fact does not work
> with evolve, so Idid exactly what was suggested by Sietze Browser::
>
> sudo apt install pipx
> pipx install mercurial
> pipx inject mercurial hg-evolve hg-git
>
> and I ended up with::
>
> mercurial 6.8
> hg-git 1.1.3
> evolve 11.1.4
>
> do you need something different?
> It was very fast as it uses wheels
>
> Unfortunately, there is no Mercurial wheels on PyPI (see 
> https://pypi.org/project/mercurial/#files)! I don't know any other big public 
> open-source Python projects using extensions that do not upload wheels on 
> PyPI. Nowadays, it is very simple.
>
>
> Yes, we should start to upload wheels, it would even be a powerful tool to
> ship the rust powered improvement to more people.
>
> A few year back, Boris did the necessary work to have wheel easily built
> with docker. However at the time, it was never integrated with the release
> process. In addition, we will need Windows wheel that I believe are of most
> interest to you.
>
>
> Even if I don't like it, I have to admit that it becomes more and more 
> difficult to defend Mercurial. I start to feel that it does not make sense to 
> teach Mercurial anymore. I see two main issues:
>
> 1. Setting up Mercurial with basic extensions (topics, hg-git, evolve) is TOO 
> difficult and long for beginners (in particular compared to Git).
>
> Python packaging is improving but Mercurial does not follow. Installation via 
> pipx really makes sense for Mercurial and its extensions.
>
>
> We are clearly behind in terms of upgrading Mercurial packaging. It is
> fairly complex and the change to Python packaging have been huge overtime.
> Making the endeavor complex. However this tech debt is catching up on us
> fast. If anyone in the community is brave and familiar enough with Python
> packaging wants to tackle it would be of great value.
>
>
> pipx install mercurial
> pipx inject mercurial hg-evolve hg-git
>
> should work **without compilation** (i.e. without Python headers and 
> compilers) basically everywhere/everytime (of course on up-to-date/standard 
> platforms with an up-to-date python). It should be checked that these 
> commands lead to something reasonable on recent Windows, macOS and popular 
> Linux distros. For example, on Windows, I thing there is by default neither 
> vi nor any pager. Mercurial should be aware of that and at least print 
> reasonable advice when such issues are detected.
>
> The commands should lead to a correct user experience, in particular with an 
> easy way to enable tab completion on popular terminals/shells. Modern 
> mercurial should have a command to setup completion (something like 
> https://pixi.sh/latest/#autocompletion).
>
>
> This auto-complete approach seems great. We should do that. (we already
> have auto-completion in `contrib/` we should make them part of python
> package and implement this kind of auto-completion setup command. It could
> also apply to setting up "smart prompt".
>
>
> Using /usr/bin/python3 -m pip install (--user) or --break-system-packages are 
> really bad practice.
>
>
> Agree that these time are behind us. However, mercurial can be installed
> in many different way, making it hard to provide  a "standard" recommended
> way to install extensions.
>
> As we discussed last year in Paris, I believe it would be a reasonable
> amount of work  to add a couple of command dedicated to extensions
> management to Mercurial. Since Mercurial known how and where it is
> installed, it is best suited to deal with that.
>
> I did a very crude PoC of that when I got back from vacation
> https://foss.heptapod.net/mercurial/mercurial-devel/-/merge_requests/930
>
> Note that when combining this idea  with automated config writing
> discussed later in the this email, such command could both install and
> enable an extension in a single command.
>
>
> Using hg-git or topics should not require writing by hands strange lines in 
> ~/.hgrc. It is too difficult for beginners (terminal editors are hard for 
> them) and for teaching it's sure that few students will do it wrong and get a 
> buggy behavior. Nowadays, I wonder if hg-git and topics could not be 
> automatically activated if they are installed for the Python used by 
> Mercurial? Is there a good reason not to do that? It would be possible 
> directly after `pipx inject mercurial hg-evolve hg-git` to clone Mercurial 
> repositories using topics and Git repositories from Github.
>
>
> Unfortunately topic is not ready to be enabled by default yet. It has
> performance and user experience impact that are not suitable for it yet.
> However the plan for topic is to keep fixing theses and to directly
> integrate it as part of Core are we progress. Notably, the current plan for
> topic UX will be a way to smoothly integrate the exchange of draft
> changesets in the core workflow without breaking BC.
>
> Note that we did various small improvement to improve the "raw" situation
> however. For example client not using topic will no longer clone and pull
> changeset on a topic by default, avoiding some of the confusion.
>
>
> If it does not make sense to auto activate topics and hg-git, Mercurial 
> should have a simple interface (command line or maybe something like what we 
> get with `hg commit -i`) to modify its user configuration.
>
> More generally, with Git, one can run `git config --global user.name "Mona 
> Lisa"`, which is convenient for beginners (much more than editing a file).
>
>
> Changing config without manually editing files have been a long standing
> topic for Mercurial. The main issue being the complexity of mixing
> automated and human edit.
>
> However, there is actually a quite simple solution to this issue. We could
> have a config file dedicated to automated changes independent from the one
> targeted to human. The human one would take priority and the command that
> manipulate the config would warn if the "human" config shadow the "machine"
> value set through it. For the new file to be taken in account by older
> Mercurial version, it must be "%included" from the historic one.
>
> To details a bit this would mean :
>
>    - introduce a `hg config --set foo.bar my-value` command (UI may
>    varies),
>    - that command write `.hg/auto.rc` file, that explicitly state that is
>    machine managed (path varies depending config level),
>    - that command ensure that the first line of `.hg/hgrc` is `%include
>    ./auto.rc # some explanatory comment`
>    - If `foo.bar` as a value in `.hg/hgrc` it override the newly set from
>    the command in `.hg/auto.rc`, the command will warn about it.
>
> With this approach we could finally have a programmatic way to set config,
> greatly improving the situation.
>
>
>
> 2. the difference between modern mercurial with topics and hg-git with 
> bookmarks is an issue. We should not need to use/teach bookmarks to interact 
> with a Git repository. Topics are much better. Most Git branches on Github 
> which are not called master or main should be represented by topics (of 
> course, there are exceptions which should be handled). I know that Dan 
> Villiom Podlaski Christiansen works on a topic on this feature 
> (https://foss.heptapod.net/mercurial/hg-git/-/merge_requests/101), which is 
> planed for hg-git 2.0.0. However, I start to be less confident that it will 
> be one day usable.
>
> Moreover phases should be by default reasonable when working with Git repos 
> (at least commits pushed on main/master should be public).
>
>
> Sorry to tell all these negative statements but I feel that without changes 
> and more focus on usability for beginners, I will have to stop to communicate 
> on Mercurial and teach Mercurial. If this is a matter of founding, I may be 
> able to help a bit and more generally we should organize ourself to get 
> enough money to get these improvements.
>
>
> Thanks for you feedback, they highlight area were we could do much better
> by combining new ideas and more attentions. Pointed them will help the
> project to improves
>
> At Octobus, we have been lacking "free" time in the past couple of year,
> but we have been in the process of changing things in order to regain some.
> Funding never hurt in that regard as it help to divers time from other paid
> work or to task other with doing so.
>
> Regards
>
> --
> Pierre-Yves David
>
> _______________________________________________
> Mercurial mailing list
> Mercurial@lists.mercurial-scm.org
> https://lists.mercurial-scm.org/mailman/listinfo/mercurial
>
_______________________________________________
Mercurial mailing list
Mercurial@lists.mercurial-scm.org
https://lists.mercurial-scm.org/mailman/listinfo/mercurial

Reply via email to