• bignose@programming.dev
    link
    fedilink
    English
    arrow-up
    14
    arrow-down
    1
    ·
    edit-2
    10 days ago

    Magit, which is the best Git porcelain around. Git, because it has an unparalleled free-software ecosystem of developer tools that work with it.

    Why is Git’s free-software ecosystem so much better than all the other VCSen?

    Largely because of marketing (the maker of Linux made this! hey look, GitHub!), but also because it has a solid internal data model that quickly proved to experts that it is fast and flexible and reliable.

    Git’s command-line interface is atrocious compared to contemporary DVCSen. This was seen originally as no problem because Git developers intentionally released it as the “plumbing” for a VCS, intending that other motivated projects would create various VCS “porcelain” for various user audiences. https://git-scm.com/book/en/v2/Git-Internals-Plumbing-and-Porcelain The interface with sensible operations and coherent interface language, resides in that “porcelain”, which the Git developers explicitly said they were not focussed on creating.

    But, of course, the “plumbing” command line interface itself immediately became the primary way people were told to use Git, and the “porcelain” applications had much slower development and nowhere near the universal recognition of Git. So either people didn’t learn Git (learning only a couple of operations in a web app, for example), or to learn Git they were required to use the dreadful user-hostile default “plumbing” commands. It became cemented as the primary way to learn Git for many years.

    I was a holdout with Bazaar VCS for quite a while, because its command-line interface dealt in coherent user-facing language and consistent commands and options. It was deliberately designed to first have a good command-line UI, and make a solid DVCS under that. Which it did, quite well; but it was no match for the market forces behind Git.

    Well, eventually I found that Magit is the best porcelain for Git, and now I have my favourite VCS.

  • un_ax@lemmy.sdf.org
    link
    fedilink
    arrow-up
    6
    ·
    edit-2
    9 days ago

    I’ve been trying out Jujutsu recently.

    It’s compatible with git repos. The workflow takes a little while to get used to but can be nicer to work with.

    • tatterdemalion@programming.dev
      link
      fedilink
      arrow-up
      3
      ·
      8 days ago

      can be nicer

      Understatement. It solves almost every problem I’ve ever had with git.

      1. No more destructive commands. jj undo or jj op restore can always put you back into a good state.
      2. Merge conflicts can be ignored until you want to resolve them.
      3. No “unstaged files” to deal with. Just keep your .gitignores up to date and jj automatically tracks new files.
      4. Rebasing and patch management is just incredibly simple.
      5. It actually has a nice default view of the commit graph.

      I used to use StackedGit for a while before switching to Jujutusu. While stg is nice, I think jj is a huge improvement.

      • StrikeForceZero@programming.dev
        link
        fedilink
        arrow-up
        1
        ·
        8 days ago

        Aside from the obvious cases like pruning or garbage collection that remove orphaned or dangling commits, is there anything else destructive that git reflog can’t help recover from?

  • jlothamer@programming.dev
    link
    fedilink
    arrow-up
    3
    ·
    8 days ago

    Git here. Subversion for a while before that. And source safe, or as I like to say source “safe”, before that.

    But maybe a better question would be, what source control hosting site (if any) do you use? And do any of them not forcibly use your code to train their AI?

    • Jerkface (any/all)@lemmy.ca
      link
      fedilink
      English
      arrow-up
      1
      arrow-down
      1
      ·
      9 days ago

      I often use RCS because it is (until recently?) built in to the distribution, and a quick “ci -l foo” is in every way superior to “cp foo foo.save” without having a bunch of the housework required to support git.

  • YurkshireLad@lemmy.ca
    link
    fedilink
    arrow-up
    1
    ·
    10 days ago

    I used to use the OpenVMS file system for informal version control, while I was developing something and before it was ready to be committed to the repository.

OSZAR »