• Facebook does not use Git due to scale issues with their large monorepo, instead opting for Mercurial.
  • Mercurial may be a better option for large monorepos, but Git has made improvements to support them better.
  • Despite some drawbacks, Git usage remains dominant with 93.87% share, due to familiarity, additional tools, and industry trends.
  • SkyNTP
    link
    fedilink
    arrow-up
    15
    ·
    4 months ago

    I suspect rebasing makes sequential commit IDs not really work in practice.

    • wewbull@feddit.uk
      link
      fedilink
      English
      arrow-up
      9
      arrow-down
      1
      ·
      4 months ago

      Rebasing updates the commit ids. It’s fine. Commit IDs are only local anyway.

      One thing that makes mercurial better for rebase based flows is obsolescence markers. The old version of the commits still exist after a rebases and are marked as being made obsolete by the new commits. This means somebody you’ve shared those old commits with isn’t left in hyperspace when they fetch your new commits. There’s history about what happened being shared.

        • wewbull@feddit.uk
          link
          fedilink
          English
          arrow-up
          3
          ·
          4 months ago

          You and I both clone a repo with ten changes in it. We each make a new commit. Both systems will call it commit 11. If I pull your change into my repo your 11 becomes my 12.

          The sequential change IDs are only consistent locally.

            • wewbull@feddit.uk
              link
              fedilink
              English
              arrow-up
              2
              ·
              4 months ago

              No. They are not renumbered. Your 11 is always the same commit. It’s consistent locally (which is what I mean by “local only”) otherwise they’d change under your feet. You just can’t share them with others and expect the same results. You have to use the hash for that.

      • FizzyOrange@programming.dev
        link
        fedilink
        arrow-up
        3
        arrow-down
        1
        ·
        4 months ago

        That’s exactly the same in git. The old commits are still there, they just don’t show up in git log because nothing points to them.