• lysdexic@programming.dev
    link
    fedilink
    English
    arrow-up
    9
    ·
    1 year ago

    Honestly, a similar tool should rethink the design to be more intuitive, orthogonal and have fewer concepts that cover all use-cases.

    With regards to Git I’m a victim of Stockholm syndrome, thus it’s hard for me to see where are all those alledged unintuitive design choices.

    This analysis is rendered even more difficult as these criticisms of Git are depicted in vague terms without mentioning a single concrete example.

    To make matters worse, these accusations become even less credible given the fact that all other Git competitors seem to copy Git’s user interface almost verbatim. This means Git must be doing something right.

    So given this issue, is there any concrete example of where Git is lacking in the UI department?

    • bttk@programming.dev
      link
      fedilink
      English
      arrow-up
      3
      ·
      1 year ago

      I had a really pleasant experience using mercurial. Some of the things git may be missing:

      • excellent tui for selecting chunks like incommit -i. Arrow keys quickly fold and unfold files/chunks/individual lines
      • commits come in 3 categories:
        • public commits were seen by other people and are considered immutable
        • draft commit is your regular WIP local commit and can’t be a parent to a public commit.
        • secret commit with your printf debugging won’t be uploaded by accident
      • when you rebase, your previous commits are marked obsolete and hidden from most UI. For an obsolete commit it is easy to find it’s updated version. The graph of obsolete revisions is an orthogonal DAG on top of the regular commit DAG.
      • lysdexic@programming.dev
        link
        fedilink
        English
        arrow-up
        3
        ·
        edit-2
        1 year ago

        excellent tui for selecting chunks like incommit -i. Arrow keys quickly fold and unfold files/chunks/individual lines

        git add -p might not have a fancy TUI interface but it supports picking files/chunks without an issue. I’m not sure how this could be described as a UI problem.

        commits come in 3 categories:

        I’m not sure how that would be useful in Git’s perspective. In Git, public commits are commits pushed to a shared remote repository, and draft/secret commits are just local commits that you don’t push. I’m not sure what value those specialized types of commits add.

        Git’s approach sounds simpler, consistent, and coherent, and thus simple to learn. I’m not sure what was gained by pushing that level of complexity onto Mercurial.

        when you rebase, your previous commits are marked obsolete and hidden from most UI.

        I’m also not sure if that makes sense. If you rebased a branch, you don’t expect the original branch to stay there. As the name implies, what you want to do is to replay a sequence of commits onto another branch. In the rare cases you wish to keep the original branch in place, you just create a new branch alongside the old branch and rebase the new one instead.

        Keeping the old branch in place after rebasing it feels inconsistent and illogical.