• MystikIncarnate@lemmy.ca
    link
    fedilink
    English
    arrow-up
    21
    arrow-down
    3
    ·
    19 hours ago

    While I have some sympathy for anyone who loses months of work, as an IT administrator by day, all I have to say about their lack of backups, and lack of RTFM before messing with shit is:

    HAHAHAHAHAHAHA HAHAHAHAHA. you got what you deserved fucker. GL.YF.

  • Phoenix3875@lemmy.world
    link
    fedilink
    arrow-up
    36
    ·
    22 hours ago

    Reminds me of a hilarious bug in early GHC: https://gitlab.haskell.org/ghc/ghc/-/issues/163

    The compiler will delete your source file if there’s any compile error. And the user complained only by sending a very polite email to report this bug. Simon Peyton Jones mentioned it in one of his talks and I still find it quite hilarious till this day.

  • MonkeMischief@lemmy.today
    link
    fedilink
    arrow-up
    14
    ·
    19 hours ago

    Man I get paranoid about synchronization programs for this very reason. There’s usually some turnkey easy-mode enabled as soon as you first launch that’s like:

    “Hey you wanna back up your entire NAS to your phone?! That’ll be fun, right?!”

    And you’re like “…No.”

    And then it wants to obliterate everything so it’s all “synchronized”, often it’s not easy to find a “No, stop, don’t do anything at all until I configure this.” Option.

    iTunes was SO BAD about this.

    Syncthing is the least-bad sync software I’ve ever run. It’s got some footguns but it’s still brilliant.

    I would imagine there’s still ways to back up version controlled software right?

    • JackbyDev@programming.dev
      link
      fedilink
      English
      arrow-up
      17
      arrow-down
      1
      ·
      21 hours ago

      Go read the actual thread. There was a bug someone found that files you have in there that aren’t even associated with git still get deleted. I’m not entirely convinced this was the poster’s fault.

      • zalgotext@sh.itjust.works
        link
        fedilink
        arrow-up
        3
        arrow-down
        8
        ·
        22 hours ago

        If you use git and understand that VSC’s source control stuff is just a thin wrapper around git, you should understand what “discard all changes” means

      • bitwolf@sh.itjust.works
        link
        fedilink
        English
        arrow-up
        3
        arrow-down
        7
        ·
        edit-2
        22 hours ago

        I just tried right now to get the exact message.

        Are you sure you want to DELETE foo?
        This is IRREVERSIBLE!
        This file will be FOREVER LOST if you proceed.

        The confirmation button even says Delete File

        User error.

    • SPRUNT@lemmy.world
      link
      fedilink
      arrow-up
      1
      arrow-down
      4
      ·
      23 hours ago

      Man who clicks confirmation for leopards to delete his work is angry and surprised when his work is deleted.

  • DelightfullyDivisive@lemmy.world
    link
    fedilink
    English
    arrow-up
    27
    arrow-down
    14
    ·
    22 hours ago

    I’m sure that the “three months of work” was completely shit code. Anybody who is unfamiliar with source control (or even backups!) is prone to making stupid mistakes. Republican voters are likely to have a similar experience over the next 4 years.

  • AusatKeyboardPremi@lemmy.world
    link
    fedilink
    arrow-up
    41
    arrow-down
    1
    ·
    edit-2
    1 day ago

    I always found Git GUIs, especially the ones built into IDEs, to be more confusing and clunkier than working with Git on a terminal. It often feels like unlearning what one knows about Git, and relearning it the way that specific GUI demands.

    Heck, I am going through the aforementioned feeling as I force myself to use Magit on Emacs. It just does not feel intuitive. But I will not give up until I have made an honest and full attempt.

    The only sensible Git GUI I ever used is Sublime Merge[0], after a coworker praised it immensely. Even that is reserved for the rarest of the rare times when the changes in the workspace gets unwieldy and unruly. For every other instance: Git CLI on a terminal.

    [0] https://www.sublimemerge.com/

    E: typo, and link to mentioned GUI.

    • Traister101@lemmy.today
      link
      fedilink
      arrow-up
      4
      ·
      edit-2
      22 hours ago

      JetBrains has really nice Git integration. Interactive rebaseses and merges are quite pleasant but I’m still dipping into the command line to do stuff occasionally. Most commonly a git reset HEAD~ cause I want to split a commit though I had to dig through the reflog the other day cause I suddenly realized I lost an important branch that ended up being over a hundred commits back.

    • BehindTheBarrier@programming.dev
      link
      fedilink
      arrow-up
      5
      ·
      1 day ago

      How do you view diffs and merges when you say you don’t use git GUIs? External tool or terminal/command line?

      I use Jetbrains IDEs and most of my life has been IDE based git interaction. And I honestly love it, easy access to see my diffs, the most common commit, push and stage(or shelve as Jetbrains does it, which is better than visual studio). Hassle free and available beats writing anything to me.

      • AusatKeyboardPremi@lemmy.world
        link
        fedilink
        arrow-up
        12
        ·
        1 day ago

        How do you view diffs and merges when you say you don’t use git GUIs? External tool or terminal/command line?

        Terminal.

        I use Jetbrains IDEs and most of my life has been IDE based git interaction. And I honestly love it, easy access to see my diffs, the most common commit, push and stage(or shelve as Jetbrains does it, which is better than visual studio). Hassle free and available beats writing anything to me.

        Perhaps, it is a mix of learned behaviour and cognitive fixation, as I started out my development journey predominantly using a terminal, that I cannot fathom Git GUI being hassle free.

        Nice to read a different perspective on such a fundamental thing that I take for granted while working. Thank you for sharing it.

      • Reil@beehaw.org
        link
        fedilink
        English
        arrow-up
        3
        ·
        22 hours ago

        Yeah, those are novice numbers. I have infinite backups of my 0 files!

    • JackbyDev@programming.dev
      link
      fedilink
      English
      arrow-up
      5
      ·
      21 hours ago

      And they were trying to correct their priorities by looking into the source control features, so I don’t see how that’s anything other than victim blaming for them not doing it sooner.

      • MystikIncarnate@lemmy.ca
        link
        fedilink
        English
        arrow-up
        2
        arrow-down
        2
        ·
        19 hours ago

        I would argue that it’s common sense to at least make a point in time copy, to… IDK, a USB drive? Before trying to implement a new source/control system.

        Just plug in an external drive, or a thumb drive, copy/paste, unplug it, then proceed with testing.

        I don’t see how anyone who values their time and effort could do any less.

        As for the files, undelete is a thing, and it shouldn’t be hard to do.

      • Vanshaj@lemmy.world
        link
        fedilink
        arrow-up
        4
        ·
        23 hours ago

        I once lost three hours of work early on during my learning, not much that I lost but it was a moment when I learnt a lesson. Never lost work after that ever.

  • _____@lemm.ee
    link
    fedilink
    English
    arrow-up
    124
    arrow-down
    2
    ·
    1 day ago

    let’s turn this into a constructive angle for future devs and current juniors: just learn git cli, I promise you it is much simpler than it seems.

    all those memes about git having like a thousand commands are true, but you really will only use like 7 at most per month.

    learn push, pull, merge, squash, stash, reset, im probably missing like one or two

    I promise you again: it is much simpler than it seems. and you won’t have to use these stupid git GUI things, and it will save you a hassle because you will know what commands you are running and what they do

    short disclaimer: using git GUI is totally fine but low-key you are missing out on so much

    • Piatro@programming.dev
      link
      fedilink
      English
      arrow-up
      11
      ·
      1 day ago

      The main draw to the CLI for me is portability. I’ve been a dev for ten years now and used tons of different editors on different platforms and while each one had a different way to describe the changes, how to commit, or how to “sync” (shudder), the CLI hasn’t changed. I didn’t have to relearn a vital part of my workflow just because I wanted to try a different editor.

    • MajorasMaskForever@lemmy.world
      link
      fedilink
      English
      arrow-up
      19
      arrow-down
      1
      ·
      1 day ago

      Every time I mentor a dev on using git they insist so much on using some GUI. Even ones who are “proficient” take way longer to do any action than I can with cli. I had one dev who came from SVN land try and convince me that TortoiseGit was the only way to go

      I died a little that day, and I never won her over to command line despite her coming to me kinda regularly to un-fuck her repository (still one of the best engineers I ever worked with and I honestly miss her… Just not her source control antics)

        • MajorasMaskForever@lemmy.world
          link
          fedilink
          English
          arrow-up
          6
          ·
          24 hours ago

          That is the one use case I’ve seen where a gui is absolutely faster.

          In my line of work, I primarily work on embedded systems or process automation so any new files in the repo directory either need to be added for tracking or to the ignore file. I’m not saying it will never happen, but at least in my experience it happens so rarely that I always try to teach command line when possible

        • ulterno@programming.dev
          link
          fedilink
          English
          arrow-up
          2
          ·
          edit-2
          1 day ago

          Did you not know?
          You can simply select all files you want to commit, in the File Manager, Ctrl+C, then paste in the terminal and it will automatically add all those file names (full paths) separated with spaces at the cursor. At least in KDE: Dolphin -> zsh + Konsole it does.

          And sure, it might look like 2 extra steps, but you will still be clicking around a lot in case of a GUI anyway.

          I tend to just type partial filenames and use tab completions, which are also pretty configurable. And the only dissatisfaction I have rn, is that I don’t have zsh module for completions with pascal case and snake case.

      • _____@lemm.ee
        link
        fedilink
        English
        arrow-up
        3
        ·
        23 hours ago

        that’s exactly why I’m saying this. I know from experience helping other devs with git issues it’s always because they’re using a GUI alternative to the CLI and they’re clicking on things they don’t understand

        • MajorHavoc@programming.dev
          link
          fedilink
          arrow-up
          4
          ·
          21 hours ago

          You’re 100% right.

          But I defy anyone’s mouse-foo to come anywhere near the speed of my typing speed and alias list.

          Even someone mastering GUI keyboard shortcuts isn’t going to be able to match, because my terminal is optimized beyond what is possible in a more graphical app.

          What I’m trying to say is that no one can introduce a thoughtless mistake into production code as quickly as I can.

          • MajorasMaskForever@lemmy.world
            link
            fedilink
            English
            arrow-up
            2
            ·
            21 hours ago

            The real metric is dollars per second of destroyed hardware ;)

            I once watched an engineer blow up a $200k prototype with a terminal alias.

            • MajorHavoc@programming.dev
              link
              fedilink
              arrow-up
              1
              ·
              19 hours ago

              That’s impressive. I’m glad I don’t have any story to match that. Hopefully they find it hilarious now. Probably no fun at the time.

        • MajorHavoc@programming.dev
          link
          fedilink
          arrow-up
          2
          ·
          edit-2
          21 hours ago

          Welcome to the brotherhood. Haha. Ow.

          Using SVN was like a having a thoughtful professional assistant who ignored half of what I said and occasionally threw medium sized objects at my head without warning.

          You’re allowed to mock the whole organization mercilessly until they upgrade to git. Git is completely free, and the available upgrade tools are lossless. Also git actually works perfectly fine when naively treated like SVN.

          Source: I used git naively like SVN for awhile after (flawlessly) upgrading a huge number of repositories.

      • dave@feddit.uk
        link
        fedilink
        English
        arrow-up
        6
        ·
        1 day ago

        So I’m normally a command line fan and have used git there. But I’m also using sublimerge and honestly I find it fantastic for untangling a bunch of changes that need to be in several commits; being able to quickly scroll through all the changed files, expand & collapse the diffs, select files, hunks, and lines directly in the gui for staging, etc. I can’t see that being any faster / easier on the command line.

        • MajorasMaskForever@lemmy.world
          link
          fedilink
          English
          arrow-up
          3
          ·
          24 hours ago

          Heh, I guess this shows my corporate software dev experience. Whenever I’ve taught git workflows it was always paired with a work ticketing system where any changes you were making were ideally all one single set of changes. If you need a feature or bug fix someone else was doing that was being done on another branch which you could pull into your code early and for tracking purposes we always made sure the other person merged into main first. The only time I’ve seen per line manipulation with git was when someone made a ton of changes in a file and wanted to revert a handful of lines.

          Everything else you mentioned I’ve had a web git host like gitlab or bitbucket for, but I kinda put that more into peer review workflow than git itself

    • Atlas_@lemmy.world
      link
      fedilink
      arrow-up
      9
      arrow-down
      1
      ·
      1 day ago

      For a first step you can get away with just add, commit, push, and pull. Maybe reset, but tbh using git like svn at first is fine.

      Next branch, checkout and merge. At this point show, log, bisect and blame also start to be useful.

      I’m not a fan of stash, and would instead recommend reflog and cherry-pick as the first two advanced commands to learn. Then rebase and squash.

    • CodeMonkey@programming.dev
      link
      fedilink
      arrow-up
      1
      ·
      21 hours ago

      For me, it is easier to learn to use git via CLI instead of a UI. When I first started using git, I learned a few command/flag combinations that I use every day and I barely learned anything else about git after. Everything I don’t do regularly I don’t remember, but have written down in a text file of incantations. It is harder to write down what buttons and what menus I have to click.

    • Cethin@lemmy.zip
      link
      fedilink
      English
      arrow-up
      7
      ·
      edit-2
      1 day ago

      Personally, I’m pretty good with the CLI version, but sometimes I just use the Code VC interface. For some tasks (basic commit, pull, push) it’s pretty fast. I don’t know if it’s faster than CLI, but I switch between them depending on what I’m doing at that moment. Code has a built in console, so using either is pretty seemless and easy. If you only use the GUI you won’t ever understand it though. I think everyone should start with CLI.

      Honestly, this is true for almost everything. GUIs obfiscate. They don’t help you learn, but try to take control away so you can’t mess up, and as an effect can’t do everything you may want.

    • thebestaquaman@lemmy.world
      link
      fedilink
      arrow-up
      6
      ·
      1 day ago

      I use gitkraken for two primary purposes:

      1. Having a visual representation of my project history.

      2. resolving merge conflicts

      Of these, the first is really the only thing I really want a GUI for. I’ll just have it open on my side-screen if I’m managing some more or less messy branch structure or quickly want an overview of what has been done on which branches, where common ancestors are, etc. All the actual doing of things is done from the CLI, because it’s just better for that.

    • apostrofail@lemmy.world
      link
      fedilink
      arrow-up
      8
      arrow-down
      7
      ·
      1 day ago

      How about Git’s CLI stop being so shit? All of the options are obtuse & usually 3 ways to do the same thing.

      Developers should normalize non-Git DVCSs.

  • AwkwardLookMonkeyPuppet@lemmy.world
    link
    fedilink
    English
    arrow-up
    15
    arrow-down
    6
    ·
    22 hours ago

    Why are they messing with the source control options when they’re not using source control? Perhaps learn about stuff before you start clicking buttons and performing delete operations on your super critical files?

  • kamen@lemmy.world
    link
    fedilink
    arrow-up
    24
    arrow-down
    6
    ·
    1 day ago

    That has the same energy as complaining that a file manager has “Delete” in the context menu.

    • Swedneck@discuss.tchncs.de
      link
      fedilink
      arrow-up
      13
      arrow-down
      2
      ·
      edit-2
      22 hours ago

      except that the “delete” in file managers is actually “trash” and that’s for precisely this reason. Anyone not using the trash bin for a GUI that is capable of deleting files is either incompetent or malicious.

      frankly rm should default to using the trash bin as well, for desktop-focused distros.

    • AwkwardLookMonkeyPuppet@lemmy.world
      link
      fedilink
      English
      arrow-up
      4
      arrow-down
      6
      ·
      22 hours ago

      I clicked delete and then clicked confirm when it asked me if I’m sure I want to delete, and all my files disappeared! What the fuck?!? Fuck this fucking operating system!!!1!!1one!!!

              • JackbyDev@programming.dev
                link
                fedilink
                English
                arrow-up
                4
                ·
                19 hours ago

                I’m not doing “a bunch of research”, I just read the thread and the linked issue and I’m annoyed by people’s condescending comments about something it seems like they didn’t actually read. We shouldn’t shit on people for things we believe they did wrong, especially when, if you read the linked issue, it wasn’t their fault.

                I use VS Codium (basically Code), but I don’t use it’s git integration other than maybe the occasional merge conflict resolution.

                • AwkwardLookMonkeyPuppet@lemmy.world
                  link
                  fedilink
                  English
                  arrow-up
                  2
                  arrow-down
                  2
                  ·
                  edit-2
                  19 hours ago

                  If the user didn’t read that, that’s on them. They used a feature they didn’t understand, which is part of a version control system that they also didn’t understand, and didn’t bother reading anything. If you still think they bear no responsibility for their actions then we’ll just have to agree to disagree.

                  Since they don’t actually have a git project tied to their files, “all changes” means “files created”. If they did have git configured then it would mean “changes since the last commit”, and it wouldn’t delete the files.

                  Edit: I will concede that it’s probably not immediately apparent to someone not familiar with the system that uncommitted files will be deleted if you use the revert button. But that comes back to understanding things before you go around clicking buttons that say the action is irreversible. At a minimum, they bear responsibility for not knowing what they were doing, and still charging ahead full steam.

  • AnAmericanPotato@programming.dev
    link
    fedilink
    English
    arrow-up
    150
    arrow-down
    5
    ·
    1 day ago

    I feel bad for this kid. That really is a bad warning dialog. Nowhere does it say it’s going to delete files. Anyone who thinks that’s good design needs a break.

    Half the replies are basically “This should be obvious if your past five years of life experience is similar to mine, and if it isn’t then get fucked.” Just adding insult to injury.

    • Omega_Jimes@lemmy.ca
      link
      fedilink
      arrow-up
      74
      arrow-down
      2
      ·
      1 day ago

      I’m not great at English, but “discard all changes” shouldn’t ever mean “Delete”.

      • Michal@programming.dev
        link
        fedilink
        arrow-up
        39
        arrow-down
        9
        ·
        1 day ago

        In the context of version control it does. Discarding a change that creates a file means deleting the file.

        • thebestaquaman@lemmy.world
          link
          fedilink
          arrow-up
          15
          ·
          1 day ago

          If you have set up your staging area for a commit you may want to discard (unstage) changes from the staging area, as opposed to discarding changes in the working directory.

          Of course, the difference between the two is obvious if you’re using git CLI, but I can easily see someone using a GUI (and that maybe isn’t too familiar with git) misunderstanding “discard” as “unstage”.

          Either way, what happened here indicates that all the files were somehow added to the VC, without having been committed first, or something like that, because git will not let you discard a file that is untracked, because that wouldn’t make any sense. The fact that the GUI let this person delete a bunch of files without first committing them to the index is what makes this a terrible design choice, and also what makes the use of the word “discard” misleading.

        • Omega_Jimes@lemmy.ca
          link
          fedilink
          arrow-up
          4
          arrow-down
          1
          ·
          1 day ago

          Ok fair enough, but I’m under the impression these files existed before the source control was implemented.

          I guess it’s all up to how the program handles existing files.

          • FiskFisk33@startrek.website
            link
            fedilink
            arrow-up
            4
            ·
            1 day ago

            I guess the newly created git repository was empty, and all the files that was present in the folder represented “changes”

      • stebo@lemmy.dbzer0.com
        link
        fedilink
        arrow-up
        7
        arrow-down
        2
        ·
        1 day ago

        I’m pretty sure vscode shows a confirmation dialog when discarding changes will permanently delete a file. I’ve done that recently with temporary files that were no longer needed.

    • JackbyDev@programming.dev
      link
      fedilink
      English
      arrow-up
      4
      ·
      20 hours ago

      It’s so fucking infuriating that so many devs act like this. “This should’ve been obvious!” Fuck off, that’s an unhelpful statement. “You should’ve been using version control! No backup, no sympathy!” Fuck off, they were literally trying to begin using version control for backups.

      Even half the comments on this very Lemmy thread are disparaging this dev. I wonder how many actually read the thread and found that there was a bug discovered causing this feature to delete files not even associated with git?

      But, congratulations to them, I suppose. Congratulations on making fun of someone. I hope it makes them feel powerful. 🙄 Devs can be so toxic.

    • cocobean@bookwormstory.social
      link
      fedilink
      English
      arrow-up
      43
      ·
      1 day ago

      Also, why not send them to the recycle bin? I never really thought about it before, but that does seem a reasonable UX improvement for this case

    • kehet@sopuli.xyz
      link
      fedilink
      arrow-up
      6
      arrow-down
      1
      ·
      1 day ago

      Came here to say this. No one deserves this, not even new programmers who try to learn things.

      Some programming tools are really powerful compared to what new users are used to. If you come from the world of Microsoft Office and Apple whatever it’s called, everything is saved automatically to cloud and there is some local backup file somewhere which you can just restore. Modern programs are designed to protect users against their own mistakes, and when suddenly that is taken away, it can be a jarring experience.

    • Scary le Poo@beehaw.org
      link
      fedilink
      arrow-up
      1
      arrow-down
      4
      ·
      edit-2
      1 day ago

      If you’re going to use a git tool, you need to know how git works.

      There are 0 excuses for not having months of work in a repo, none. I have no sympathy whatsoever. How the fuck do you spend so many months without backing up your project or stuffing it in a repo?

      No sympathy. Dude is a shit developer and he learned an invaluable lesson.

      • AnAmericanPotato@programming.dev
        link
        fedilink
        English
        arrow-up
        6
        ·
        24 hours ago

        My guess is that this is a teenager, and this is probably their first experience with git and version control in general. Just a hunch.

        Anyway, it is reasonable to expect a mainstream GUI app from one of the largest companies in the world to be approachable for people who do not know all the inner workings of the command line tools that are used behind the scenes. And it is reasonable to expect any destructive action to have clear and bold warnings. “Changes will be discarded” is not clear. What changes? From the user’s perspective, the only changes were regarding version control, so “discarding” that should leave them where they started — with their files intact but not in version control.

        Have mercy on the poor noobs. We were all there once.

      • JackbyDev@programming.dev
        link
        fedilink
        English
        arrow-up
        2
        ·
        20 hours ago

        If you’re going to use a git tool, you need to know how git works.

        I guarantee you at least half of git users would get glossy eyes as soon as you mention blobs and trees, yet they all still manage to use it daily successfully.

        There are 0 excuses for not having months of work in a repo, none. I have no sympathy whatsoever. How the fuck do you spend so many months without backing up your project or stuffing it in a repo?

        I need you to listen to me very carefully: THEY WERE FUCKING SETTING UP A REPO WHEN THIS HAPPENED.

        • Scary le Poo@beehaw.org
          link
          fedilink
          arrow-up
          1
          arrow-down
          1
          ·
          16 hours ago

          No, by his own admission, he was playing around with the IDE. He wasn’t interested in the version control, he was interested in the pretty editor.

          I suggest you go read the original issue.