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

    Well, I can’t read it… But I would say it’s nonsense that Git is intrinsically confusing. The core data model is extremely simple and intuitive. The problems are:

    • Terrible CLI.
    • Terrible terminology (index is probably the worse; why not draft commit?)
    • Bad tutorials. Lots of them explain things wrong or just confusingly
    • It’s a fundamentally visual problem yet so many people advise against using a GUI.

    It’s like trying to explain CAD using OpenSCAD instead of SOLIDWORKS. Of course it’s going to seem like CAD is confusing.

    That’s not to say Git’s data model is perfect. What’s there is decent but there are big gaps. Support for large files is bad (LFS is a hack). Support for very large projects is bad (monorepos tend to get slow and sparse checkouts are difficult; submodules have lots of issues). Conflict resolution tends to be very dumb, though I think there are some projects to improve that.

    • Kissaki@programming.dev
      link
      fedilink
      English
      arrow-up
      1
      ·
      3 months ago

      It’s a fundamentally visual problem

      In what way do you mean git versioning is fundamentally visual?

      Or do you mean understanding it or visualising it? The data and its relationships?

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

        Git is a graph of commits and you can’t really display a graph in any way except visually. Even the CLI has a way of showing it visually (git log --graph).

        Think about other graphs you might interact with, e.g. node graphs in 3D graphics of music production. How many of them do you manipulate with a CLI?

  • Corbin@programming.dev
    link
    fedilink
    English
    arrow-up
    1
    ·
    3 months ago

    A PDF is available here, and analysis from Colyer 2016 is good.

    This paper is fascinating in terms of ethnography. Consider: the paper mentions “branch” or “branches” dozens of times, but only says “tree” four times, and every instance is in the phrase “working tree”. The paper never mentions “blob” or “blobs”, “DAG” or “graph” or “poset”. The authors either chose to omit git’s data model, or they don’t know about it. The implication is that the UX and UI don’t reflect the data model, I suppose, but it is a very curious omission.

    Now, contrast this with Git’s documentation. When sysadmins teach git, we focus on the data first. git is a kind of database which stores four different flavors of object, and the git UI is merely a collection of commands for programmatically manipulating the database. All of the various UX is purpose-built, on a per-command basis, for development workflows. New commands can be implemented as plain UINX-style executable scripts in any language.

    In summary, this paper looks at git as a version-control product, while its developers and users look at git as a version-control framework.

    There was a followup paper from a few years later, also with Colyer 2016 analysis; this paper has too many glaring defects to discuss here.

    On a personal note, I saw this and am happy to note that science has marched along:

    We plan to extend our notation to make it more expressive in the future, but are cognizant of the fact that diagrammatic syntaxes for first order logic have a long and troubled history.

    Not long after this paper, ontology logs were figured out, which can be made as expressive as needed for the case of relations; see Patterson 2017.

  • morphballganon@lemmy.world
    link
    fedilink
    arrow-up
    0
    ·
    3 months ago

    There should be a download link for the latest release on a project’s main page, so I don’t have to click on the releases page if I just want the current version.

  • Rentlar@lemmy.ca
    link
    fedilink
    arrow-up
    0
    ·
    3 months ago

    I just need a GUI or some sort of visual reference. I have trouble picturing what exactly is going on with each variant of the command. I’ve been able to fuddle through it every time I do some programming, and when I used Android Studio there were some GUI tools to use but otherwise I always get so confused. I think using IDEs would help in other projects but that’s a thing that keeps me from doing programming projects on the regular.

    • maegul@lemmy.ml
      link
      fedilink
      English
      arrow-up
      1
      ·
      3 months ago

      Yea my take with git for a while is that it is a naturally GUI oriented app/program much like text editors (who uses ed any more?), however much you’re a CLI only person.