sublime_merge icon indicating copy to clipboard operation
sublime_merge copied to clipboard

Deleting untracked files does not work

Open joelekstrom opened this issue 3 years ago • 10 comments

Version info

  • OS: macOS 12.4
  • Build: Dev Channel, 2073 (but it has never worked for me)

Description

When my repos have untracked files, neither the Delete All button or Delete button per file work. They simply do nothing (delete all does present the confirmation, but then proceeds to do nothing). Delete all untracked files in command palette also fails.

I think I've had this issue for a year or more, but just learned to use command line for it so didn't bother to report it until now.

Steps to reproduce

  1. Try to delete any untracked file

Expected behavior

Untracked files are deleted

joelekstrom avatar Jul 04 '22 06:07 joelekstrom

Hi @joelekstrom,

Thanks for reaching out!

After clicking the delete button, does anything appear in the Git output container? This can be accessed by clicking the output icon to the left of the branch name in the top toolbar: image

It will typically contain the result of the command run, along with any output (as shown below): image

Thanks, - Dylan

dpjohnst avatar Jul 08 '22 05:07 dpjohnst

possibly related: #1371

srbs avatar Jul 10 '22 06:07 srbs

@srbs When I click Delete All, it runs git clean -fd and prints Removing File for all files in question.

Here's the interesting part - I added a bogus file manually, as addition to a bunch of files deleted remotely (their folder was deleted, all files that were in that folder now show up as untracked). It successfully deletes the untracked file I added locally. The problem is all the files that were deleted by someone else remotely fail to be deleted. This is quite common for us - some folder being deleted by someone else, then I fetch, some hundred files show up as untracked and can't be deleted.

Simplified reproduction steps:

  • Delete folder containing many files on another computer/clone, commit and push
  • Pull changes locally, deleted files show as untracked
  • Try delete button, it does not work for files deleted remotely

joelekstrom avatar Jul 11 '22 07:07 joelekstrom

Hi @joelekstrom,

This sounds like an issue with Git or permissions, as the command is being run as expected.

Could you try running git clean -fdi from the command line when you have these untracked files and confirm if the expected files appear. Additionally, could you check the permissions of these untracked files and report if you have full permissions.

Thanks, - Dylan

dpjohnst avatar Jul 12 '22 01:07 dpjohnst

From my terminal, I have -rw-r--r-- permissions for the files. git clean -fdi does nothing (exits immediately). Adding x does list them, so I imagine it has something to do with ignore rules. But why would ignored files be listed as untracked by git status?

joelekstrom avatar Jul 12 '22 09:07 joelekstrom

Hi @joelekstrom,

Thanks for confirming this - when you have a spare moment, could you share your Sublime Merge debug information?

This is accessible via the Sublime Merge application menu under Help > Debug Information. Before sharing this, take a moment to redact anything that's sensitive such as paths, git user information, remotes etc.

Additionally could you pick one of the files you're unable to delete, and run the following command and report its output: git check-ignore -v PATH_TO_FILE

Thanks for your patience while this is investigated!

Kind regards, - Dylan

dpjohnst avatar Jul 13 '22 01:07 dpjohnst

  • git check-ignore -v file exits with code 1 and no output.
  • As a sidenote, deleting an individual file runs git clean -qf -- PATH_TO_FILE, which also does not do anything
=== App Version Information ===
Build: 2073

=== Git Version Information ===
Using Git: git (system)
git version 2.32.0 (Apple Git-132)
PATH: /usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Library/Apple/usr/bin (from shell)
environment variables loaded using: /bin/zsh -l

=== Browse Page Information ===
HEAD: head_commit
Is in merge: 0
Is in cherry_pick: 0
Is in rebase: 0
Is in revert: 0

=== Git Status Information ===
 ? changed_submodule
?? deleted_folder

=== Our Status Information ===
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file
?? deleted_folder/file

=== Git Config Information ===
branch.master.merge=refs/heads/master
branch.master.remote=origin
core.bare=false
core.editor=nano
core.excludesfile=/Users/joel/.gitignore
core.filemode=true
core.ignorecase=true
core.logallrefupdates=true
core.precomposeunicode=true
core.repositoryformatversion=0
credential.helper=osxkeychain
diff.tool=Kaleidoscope
difftool.Kaleidoscope.cmd=ksdiff --partial-changeset --relative-path "$MERGED" -- "$LOCAL" "$REMOTE"
difftool.prompt=false
filter.lfs.clean=git-lfs clean -- %f
filter.lfs.process=git-lfs filter-process
filter.lfs.required=true
filter.lfs.smudge=git-lfs smudge -- %f
lfs.repositoryformatversion=0
merge.tool=Kaleidoscope
mergetool.Kaleidoscope.cmd=ksdiff --merge --output "$MERGED" --base "$BASE" -- "$LOCAL" --snapshot "$REMOTE" --snapshot
mergetool.Kaleidoscope.trustexitcode=true
mergetool.prompt=false
oh-my-zsh.hide-info=1
oh-my-zsh.hide-status=1
pull.rebase=true
push.default=simple
rebase.autostash=true
remote.origin.fetch=+refs/heads/*:refs/remotes/origin/*
remote.origin.url=originurl
remote.upstream.fetch=+refs/heads/*:refs/remotes/upstream/*
remote.upstream.pushurl=no_push
remote.upstream.url=upstreamurl
submodule.submodule
submodule.submodule
submodule.submodule
submodule.submodule
submodule.submodule
submodule.submodule
submodule.submodule
submodule.submodule
submodule.submodule
submodule.submodule
submodule.submodule
submodule.submodule
submodule.submodule
submodule.submodule
user.email=
user.name=Joel

=== Our Config Information ===
Git Config Path Information
Using config path: /etc/gitconfig
Using config path: /Users/joele/.config/git/config
Using config path: /Users/joele/.gitconfig
Using config path: /Users/joele/Developer/path

Our config output is different to the Git config output
branch.master.merge=refs/heads/master
branch.master.remote=origin
core.bare=false
core.editor=nano
core.excludesfile=/Users/joel/.gitignore
core.filemode=true
core.ignorecase=true
core.logallrefupdates=true
core.precomposeunicode=true
core.repositoryformatversion=0
diff.tool=Kaleidoscope
difftool.Kaleidoscope.cmd=ksdiff --partial-changeset --relative-path "$MERGED" -- "$LOCAL" "$REMOTE"
difftool.prompt=false
filter.lfs.clean=git-lfs clean -- %f
filter.lfs.process=git-lfs filter-process
filter.lfs.required=true
filter.lfs.smudge=git-lfs smudge -- %f
lfs.repositoryformatversion=0
merge.tool=Kaleidoscope
mergetool.Kaleidoscope.cmd=ksdiff --merge --output "$MERGED" --base "$BASE" -- "$LOCAL" --snapshot "$REMOTE" --snapshot
mergetool.Kaleidoscope.trustexitcode=true
mergetool.prompt=false
oh-my-zsh.hide-info=1
oh-my-zsh.hide-status=1
pull.rebase=true
push.default=simple
rebase.autostash=true
remote.origin.fetch=+refs/heads/*:refs/remotes/origin/*
remote.origin.url=originurl
remote.upstream.fetch=+refs/heads/*:refs/remotes/upstream/*
remote.upstream.pushurl=no_push
remote.upstream.url=upstreamurl
submodule.submodule
submodule.submodule
submodule.submodule
submodule.submodule
submodule.submodule
submodule.submodule
submodule.submodule
submodule.submodule
submodule.submodule
submodule.submodule
submodule.submodule
submodule.submodule
submodule.submodule
submodule.submodule
user.email=
user.name=Joel

=== Git Attributes Information ===
git check_attr --all output

=== Our Modified Files Newline Normalisation and EOL Information ===

=== Our Modified Files Flag Information ===
Ignoring symlinks: 0

joelekstrom avatar Jul 13 '22 08:07 joelekstrom

Hi @joelekstrom,

Thanks for the additional information.

This is quite strange: Git is indicating that they aren't ignored files (no output from check-ignore), but is also ignoring them with git clean.

Could you run git status -u and confirm it matches the untracked files listed in Sublime Merge.

Kind regards, - Dylan

dpjohnst avatar Aug 09 '22 06:08 dpjohnst

Hi, I've since cleaned the repo manually. I'll get back to you once it happens again (it's quite often in this repo so should be soon)

joelekstrom avatar Aug 09 '22 12:08 joelekstrom

Hi again @dpjohnst! The issue is back, and I've tried git status -u. It lists a single item, the top folder of all the hundreds of untracked files: libraries/DeletedFolder/

joelekstrom avatar Sep 07 '22 09:09 joelekstrom