Git repos have lots of write protected files in the .git directory, sometimes hundreds, and the default rm my_project_managed_by_git will prompt before deleting each write protected file. So, to actually delete my project I have to do rm -rf my_project_managed_by_git.

Using rm -rf scares me. Is there a reasonable way to delete git repos without it?

  • Buttons@programming.devOP
    link
    fedilink
    English
    arrow-up
    11
    arrow-down
    6
    ·
    7 months ago

    That’s a good example. If I’m regularly running a command that is a single whitespace character away from disaster, that’s a problem.

    Imagine a fighter aircraft that had an eject button on the side of the flight stick. The pilot complains “I’m afraid I might accidentally hit the eject button when I don’t need to”, but everyone responds “why would you push the eject button if you don’t want to eject?”, or “so your concern is that the eject button will cause you to eject…?” – That’s how I feel right now.

    • IsoKiero@sopuli.xyz
      link
      fedilink
      English
      arrow-up
      4
      ·
      7 months ago

      I understand the mindset you have, but trust me, you’ll learn (sooner or later) a habit to pause and check your command before hitting enter. For some it takes a bit longer and it’ll bite you in the butt for few times (so have backups), but everyone has gone down that path and everyone has fixed their mistakes now and then. If you want hard (and fast) way to learn to confirm your commands, use dd a lot ;)

      One way to make it a bit less scary is to ‘mv <thing you want removed> /tmp’ and when you confirmed that nothing extra got removed you can ‘cd /tmp; rm -rf <thing>’, but that still includes the ‘rm -rf’ part.

    • OneCardboardBox@lemmy.sdf.org
      link
      fedilink
      English
      arrow-up
      2
      ·
      edit-2
      7 months ago

      How about writing a script to automate the deletion, thus minimizing the chance of human error being a factor? It could include checks like “Is this a folder with .git contents? Am I being invoked from /home/username/my_dev_workspace?”

      In a real aviation design scenario, they want to minimize the bullshit tasks that take up cognitive load on a pilot so they can focus on actually flying. Your ejector seat example would probably be replaced with an automatic ejection system that’s managed by the flight computer.