So much easier conceptually, the cmd line utility was written for actual humans, and it has sequential commit numbers.
So much easier conceptually, the cmd line utility was written for actual humans, and it has sequential commit numbers.
That right there illustrates the disconnect that causes some people to dislike git while others love it. Git is truly distributed.
In a distributed system, commits are not totally ordered. It is fundamentally impossible to give them all meaningful sequential numbers, because some are really neither newer nor older than others. They are "in parallel".
Git excels at truly distributed workflows, and distributed workflows dominate in open source. That's why git dominates the open source world. The basic issue in open source is this: code is shared across organizational boundaries. You need to make and deploy a change today, without knowing or necessarily even caring whether the upstream project is going to take the patch. But your code needs to stay consistent and cleanly mergeable at every point through this process, even as multiple patches are flying in multiple directions.
Git commit ids are a hash of the commit content. This has very nice properties in that:
- Ids are duplicate if and only if the commit is identical (the collision chance is so low it's not worth considering)
- It's content-addressable
And you can refer to it by any unique prefix, so it's not a pain to type out (and you should only rarely be typing out particular commits instead of branches or tags).
If you see references to commits 143, 732, and 2021, you have some instant grasp on the ordering of those. acbe2f, 7624ab, bccc07 not so much.
Git keeps getting better, and I'd be hesitant to put anything new on Mercurial at this point. The tooling just doesn't seem to be keeping up any more.