jesseduffield / lazygit

simple terminal UI for git commands
MIT License
53.74k stars 1.88k forks source link

`discard all changes` on an untracked directory deletes only files in it #1964

Open c02y opened 2 years ago

c02y commented 2 years ago

Describe the bug A clear and concise description of what the bug is.

I have a directory which contains files and dirs recursively, I open lazygit and navigate to the directory, d to discard all changes, all the files in the directory are deleted, but the top directory and all the subdirectories are still there.

To Reproduce Steps to reproduce the behavior:

  1. create a directoryA containing files and directoris in it inside a git repo
  2. open lazygit in the repo
  3. navigate to the directoryA
  4. d on the directoryA

Check the content in directoryA, files in it are all deleted, but directoryA and all subdirectories are not

Expected behavior A clear and concise description of what you expected to happen.

d (discard all changes) on an untracked directory should delete all the files and subdirectories and directory itself completely.

Screenshots If applicable, add screenshots to help explain your problem.

Desktop (please complete the following information):

Additional context Add any other context about the problem here.

Using the default configuration (~/.config/lazygit is created by first run of lazygit and no changes in it)

mark2185 commented 2 years ago

Thanks for reporting this, it's reproducible and being looked into.

mark2185 commented 2 years ago

Another thing that solving this issue would solve - when discarding an entire directory, each file in the directory is checked out individually, it would be much faster just to checkout the entire directory (i.e. discarding exactly what's under the cursor), especially for big git-lfs directories.

DusanLesan commented 1 month ago

I would really like to see this done. This was slowing me down for years. Instead of being lazy, I must go to these empty directories and remove them by hand

it would be much faster just to checkout the entire directory

@mark2185 That would maybe require additional check if the directory contains tracked files.