By admin , 29 April 2026

Two ecosystem shapes

Git's ecosystem is sprawling, market-driven, and uneven. Mercurial's is smaller, deliberate, and more cohesive. The trade-off is comprehensive availability versus focused quality.

Hosting

Git hosting is everywhere: GitHub (~100M users), GitLab, Bitbucket, Gitea, Forgejo, sourcehut, self-hosted options at every price point. Mercurial hosting has thinned dramatically: Bitbucket dropped Mercurial in 2020; SourceForge supports it; Heptapod offers Mercurial hosting on a GitLab fork. New Mercurial projects find hosting choices limited.

CI/CD integrations

Every major CI service supports Git natively - GitHub Actions, GitLab CI, CircleCI, Buildkite, Jenkins, Drone. Mercurial support exists but is patchy. Self-hosted Jenkins and similar handle Mercurial fine; modern hosted CI typically requires Git.

IDE support

VS Code, JetBrains, Vim, Emacs, Sublime Text, Visual Studio - all have first-class Git integration with rich features (blame, PR review, commit graph, history filtering). Mercurial integration in the same editors is functional but seldom matches the polish of Git's.

Extension architectures

Mercurial extensions plug into a stable Python API. Notable extensions:

  • histedit - interactive history editing.
  • mq - patch queues.
  • shelve - stash equivalent.
  • evolve - first-class history mutation tracking.
  • largefiles - LFS-equivalent.

Git's extensibility is via plumbing commands and hooks. Notable third-party tools:

  • git-lfs - large file storage.
  • git filter-repo - history rewriting.
  • gh, glab, gitlab-cli - host clients.
  • delta, diff-so-fancy - improved diffs.
  • tig, lazygit - terminal UIs.
  • Hundreds of GitHub Actions for any workflow imaginable.

Hooks

# Git: shell scripts in .git/hooks/
cat > .git/hooks/pre-commit <<'EOF'
#!/usr/bin/env bash
npm test
EOF
chmod +x .git/hooks/pre-commit

# Mercurial: configured in hgrc, can be Python or external
# .hg/hgrc
[hooks]
pretxncommit.tests = npm test

Mercurial's hook configuration is centralised; Git's is per-script. Both work; Mercurial's is easier to share, Git's is easier to script.

Programming-language libraries

Git has libraries for every major language: libgit2 (C), JGit (Java), gitoxide (Rust), pygit2 (Python), nodegit (Node), go-git (Go). Mercurial has its Python core and bindings - fewer alternative implementations.

Documentation and learning materials

Pro Git, the GitHub documentation, the Atlassian guides, and innumerable courses and YouTube tutorials cover Git. Mercurial's documentation is good but smaller; the user community is correspondingly smaller, and answers to obscure questions take longer.

Security tooling

Secret scanning (gitleaks, trufflehog), supply chain attestation (cosign, in-toto), commit signing (gitsign, sigstore), automated dependency updates (Dependabot, Renovate) - all target Git first. Mercurial equivalents exist for some but not all categories.

AI and developer tooling

Modern AI assistants and code generation tools assume Git. Cursor, GitHub Copilot, code review bots all integrate with Git semantics (diffs, branches, PRs). Mercurial users have to bridge or adapt.

Where Mercurial's ecosystem wins

  • Heptapod (Mercurial-friendly fork of GitLab) provides a polished hosting and CI experience.
  • Mercurial's evolve extension offers history-mutation tracking that Git lacks - useful for stacked diff workflows.
  • Sapling, Meta's Mercurial-inspired tool, is the most advanced monorepo client today.

The honest assessment

Network effects are real and self-reinforcing. Git's ecosystem advantage is so large that, for most teams, "use Git" is the right answer not because Git is technically superior but because the auxiliary tools you will need - hosting, CI, IDE, security - are all immediately available. Mercurial remains a fine system; choosing it now means choosing self-reliance for tooling.