On Wed, Oct 30, 2019 at 7:48 AM Jonathan Gilbert via GitGitGadget <gitgitgadget@xxxxxxxxx> wrote: > > My development environment sometimes makes automatic changes that I don't > want to keep. In some cases, this involves new files being added that I > don't want to commit or keep (but I also don't want to outright .gitignore > forever). I have typically had to explicitly delete those files externally > to Git Gui, which is a context switch to a manual operation, and I want to > be able to just select those newly-created untracked files in the UI and > "revert" them into oblivion. in Git speak, that operation is called 'clean' (see 'git clean') why should we overload the 'revert' operation here? Bert > > This change updates the revert_helper proc to check for untracked files as > well as changes, and then changes to be reverted and untracked files are > handled by independent blocks of code. The user is prompted independently > for untracked files, since the underlying action is fundamentally different > (rm -f). If after deleting untracked files, the directory containing them > becomes empty, then the directory is removed as well. A new proc > delete_files takes care of actually deleting the files, using the Tcler's > Wiki recommended approach for keeping the UI responsive. > > This is the second revision of this change, which differs from the first > version in the following ways: > > * The change is now based on git-gui/master. > * With one exception, all lines are at most 80 characters long. The > exception has a string literal in it that pushes it to 82 characters. I > think it would be messy to try to split it, and I got advice on > #git-devel to just let it go to 82 characters. > * camelCase is eliminated. I eliminated it from existing code in a separate > commit. > * try is no longer used anywhere. The code that cares about the result (had > code in a catch after a try) uses [catch]. > * Deletion of files and removal of empty directories is now handled by > separate procs. > * The deletion of a large number of files does not block the UI during its > execution any more. > * The revert_helper code no longer uses an epilogue of generic statements > to be evaluated on exit. > * When deleting files, the UI is notified about the deletion directly > instead of doing a full rescan. > > Jonathan Gilbert (2): > git-gui: consolidate naming conventions > git-gui: revert untracked files by deleting them > > lib/index.tcl | 343 ++++++++++++++++++++++++++++++++++++++------------ > 1 file changed, 266 insertions(+), 77 deletions(-) > > > base-commit: b524f6b399c77b40c8bf2b6217585fde4731472a > Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-436%2Flogiclrd%2Fgit-gui-revert-untracked-v1 > Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-436/logiclrd/git-gui-revert-untracked-v1 > Pull-Request: https://github.com/gitgitgadget/git/pull/436 > -- > gitgitgadget