CNRS researcher, fluid mechanics, turbulence & instabilities. Experiments and simulations.
A lot of software development (open-source, Python). Unlike most of my colleagues…
Learned Mercurial in 2014 because (i) I read that it was easier than Git yet powerfull and (ii) Python…
Stayed with Mercurial because my first experiences with Git weren’t so pleasant.
Bitbucket user before 2020, then adopted Heptapod.
hg-git user to interact with Git repos on Github and Gitlab.
Teach hg and hg-git to post-docs/PhDs and also students
Software development
Scientific communications (articles, presentations, notes) and few websites…
Note: Dropbox like services (Owncloud and Nextcloud) to build/share datasets.
With Heptapod:
topic based workflow with 1 branch and Github mirroring for visibility and for some services, like Github Actions
Simple 1 branch workflow without Merge Request
With Github / Gitlab (hg-git):
Bookmark based workflow with and without fork
Simple 1 branch workflow without Pull Request
Topic based workflow with Heptapod is great, especially to collaborate with beginners/students
Experienced users can edit the history in MR (for ex. rebase
, fold
, split
, …)
Beginners learn not being afraid of hg commit
(something wrong can be amend
or prune
)
Experienced users can explained what can be done (for ex. absorb
)
No fork is actually often a good thing for us
Unnamed branches could simplify things for beginners. They could push and a more experienced users can merge.
Topics much nicer than bookmarks. But we still need to learn/use both!
Evident for programming, less for other activities…
Should command line based versioning tools be used by academics for text edition (for ex. Latex)?
Some people prefer more integrated tools (for example Overleaf, Dropbox, layers between Git and the users…).
Which tool for people not specialized in development but who could benefit from versioning?
Git or Mercurial?
--force
Incompatible with many tools in a world where for most people “version control” is Git.
Nothing like Github for Mercurial (mass, Github Actions, bots, integration with other tools, …)
Harder to get (git
is “everywhere” and no extension)
For communities in which people who are not developers need to program and share code, explicit versioning with Mercurial still make sense.
Thus a “Mercurial for dummies” plan is interesting…
Propose Mercurial as a good solution for people not specialized in development but who could benefit from versioning.
Note: an alternative to the current situation: “Git for dummies”
Github is so widely used. Scientists need to be able to interact with projects on Github.
Only questions: Which client? Command line based? Git? Or Mercurial with hg-git as an alternative Git client?
Most scientists do not have time/energy to learn two version control tools!
Propose Mercurial as a good solution for people not specialized in development but who could benefit from versioning.
Heptapod instances
hg-git
Note: Situation already much better than few years ago!
Not easy to install/setup Mercurial with hg-git + hg-evolve (compared to Git).
Setup a good Mercurial environment on Windows? See Git Bash
Configuration (slightly harder than with Git git config --global user.name "Mona Lisa"
)
on the web: often quite outdated contents (Mercurial book, wiki, Stackoverflow)…
in the terminal: not easily searchable, lack a good doc reader application (Textual could be great!)
University Gitlab instances are not running Heptapod
Topic: after a merge on Heptapod, hg pull; hg up; hg up; hg topic new-topic-name
Bookmark based hg-git workflow less nice than topic based workflow
Users need to learn topics and bookmarks 🙁
Incompatible tools (for example setuptools-scm, MyBender, precommit…).
Can’t wait improvements in core Mercurial…
conda-forge: conda-app install mercurial
An updated version of the Mercurial book: https://foss.heptapod.net/mercurial/mercurial-jupyterbook
Python package to help installing hg extensions and editing config
Python package (based on Textual) to navigate and search in Mercurial documentation
Mercurial/hg-git/Heptapod are already great tools for us. Thanks a lot to the mainteners!
The “Mercurial for dummies” plan is fun
It would require some care
It could bring future users and visibility