• TechNom (nobody)@programming.dev
    link
    fedilink
    English
    arrow-up
    1
    ·
    5 months ago

    It didn’t look like a submodule reimplementation to me. Subtree is more of a submodule reimplementation. This is more like a language-agnostic package manager (like cargo, npm, etc) that downloads and caches source packages.

    • FizzyOrange@programming.dev
      link
      fedilink
      arrow-up
      1
      ·
      5 months ago

      First line of the readme:

      vdm is an alternative to e.g. Git Submodules for managing arbitrary external dependencies for the same reasons, in a more sane way.

      • TechNom (nobody)@programming.dev
        link
        fedilink
        English
        arrow-up
        1
        ·
        5 months ago

        Yes. I saw that. I was giving you my assessment based on the rest of the technical details in that readme. It doesn’t look like vdm is dealing with any part of the dependency repos (.git directories) other than to download them. In fact, they even mention deleting those .git directories. Please let me know if you think I misinterpreted any of those details.

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

          Neither does Git though. I’m not really sure I follow your point. This is clearly intended as an alternative to submodules. It says so!

          I’m not saying it’s an exact copy of git submodules.

          • TechNom (nobody)@programming.dev
            link
            fedilink
            English
            arrow-up
            2
            ·
            edit-2
            5 months ago

            This is clearly intended as an alternative to submodules.

            An alternative, not a replacement. Vdm is specifically designed to track code dependencies. There are use cases like monorepos where vdm won’t work.

            Neither does Git though. I’m not really sure I follow your point.

            Git does track submodule history unlike vdm.

            By default, vdm sync also removes the local .git directories for each git remote, so as to not upset your local Git tree.

            Git submodules don’t delete those .git directories. It uses them.

            If you want to change the version/revision of a remote, just update your spec file and run vdm sync again.

            This is not how git submodules or subtrees work.

            vdm does depends on git being installed if you specify any git remote types

            Support more than just git and file types, and make file better

            Git submodules and subtrees don’t support anything other than git remotes.

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

              There are use cases like monorepos where vdm won’t work.

              Erm yeah because the whole point of monorepos is that you don’t use submodules. What?

              Git does track submodule history unlike vdm.

              The history of submodules is tracked in the submodule repo. VDM doesn’t change that.

              It uses them.

              It doesn’t use them any differently to if you had just checked out the submodule standalone. I’m not exactly sure what VDM does (haven’t used it) but that doesn’t seem like a big thing.

              This is not how git submodules or subtrees work.

              No?. Actually that’s not all you need to manage for git submodules - there’s additional hidden state so you can’t just edit that file; you need to use git add/rm. Which is fundamentally the same but worse - this is one of the selling points of the alternatives like VDM. It’s way less confusing.

              Git submodules and subtrees don’t support anything other than git remotes.

              So? Alternatives to git submodules don’t need to restrict themselves to its features.

              • lysdexic@programming.dev
                link
                fedilink
                English
                arrow-up
                1
                arrow-down
                1
                ·
                5 months ago

                Erm yeah because the whole point of monorepos is that you don’t use submodules. What?

                Not true. The whole point of monorepos is that you track everything in a single repo. There is absolutely no requirement or constraint to avoid using specific features of specific VCSs or even package managers.

          • lysdexic@programming.dev
            link
            fedilink
            English
            arrow-up
            1
            ·
            5 months ago

            Neither does Git though.

            Doesn’t it, though? I mean, you can update a submodule’s history directly from the consumer package. That’s the whole point of submodules. Otherwise you would be better off by just wget something into your project.