> You lost me at "free from the index". The index is one of the most important parts of Git that makes my life easier. Opinionated DVCS UIs make my life harder -- all of them.
Mercurial has an 'index' / staging area, but not exposed by default. You can access it with some extra CLI options, but there is an optional idea that may be 'better' and worth looking into:
> If you need the index, you can gain its behavior (with many additional options) with mercurial queues [1] (MQ).[2] Simple addition of changes to the index can be imitated by just building up a commit with hg commit --amend (optionally with --secret, see phases [3]).
MQs (optionally) expand on the idea of only a single staging area:
> This single "intermediate" area is where git stops. For many workflows it's enough, but if you want more power MQ has you covered.
> MQ is called Mercurial Queues for a reason. You can have more than one patch in your queue, which means you can have multiple "intermediate" areas if you need them.
If you only want to use one queue/index then that's fine too.
As a Mercurial user from almost the beginning, it’s not accurate to say Mercurial has a hidden index.
That Steve Losh post is from 2010 and it was mainly highlighting a workflow that was popular at the time for a particular use case. It also highlighted how Mercurial’s plug-in architecture can be used to to support different workflows.
Fast forward to the present and the use of MQ isn’t really a thing anymore, but is available for those who want it.
Mercurial has an 'index' / staging area, but not exposed by default. You can access it with some extra CLI options, but there is an optional idea that may be 'better' and worth looking into:
> If you need the index, you can gain its behavior (with many additional options) with mercurial queues [1] (MQ).[2] Simple addition of changes to the index can be imitated by just building up a commit with hg commit --amend (optionally with --secret, see phases [3]).
* https://www.mercurial-scm.org/wiki/GitConcepts#Git.27s_stagi...
[1] is "A Git User's Guide to Mercurial Queues"
* https://stevelosh.com/blog/2010/08/a-git-users-guide-to-merc...
MQs (optionally) expand on the idea of only a single staging area:
> This single "intermediate" area is where git stops. For many workflows it's enough, but if you want more power MQ has you covered.
> MQ is called Mercurial Queues for a reason. You can have more than one patch in your queue, which means you can have multiple "intermediate" areas if you need them.
If you only want to use one queue/index then that's fine too.