enhance: prevent requesting worktree files more than once time

Signed-off-by: leo <longshuang@msn.cn>
This commit is contained in:
leo 2025-05-20 16:49:00 +08:00
parent eb183589f5
commit 550493b572
No known key found for this signature in database

View file

@ -294,6 +294,7 @@ namespace SourceGit.ViewModels
SelectedSearchedCommit = null; SelectedSearchedCommit = null;
SearchCommitFilter = string.Empty; SearchCommitFilter = string.Empty;
MatchedFilesForSearching = null; MatchedFilesForSearching = null;
_requestingWorktreeFiles = false;
_worktreeFiles = null; _worktreeFiles = null;
} }
} }
@ -568,6 +569,7 @@ namespace SourceGit.ViewModels
_searchedCommits.Clear(); _searchedCommits.Clear();
_selectedSearchedCommit = null; _selectedSearchedCommit = null;
_requestingWorktreeFiles = false;
_worktreeFiles = null; _worktreeFiles = null;
_matchedFilesForSearching = null; _matchedFilesForSearching = null;
} }
@ -2698,19 +2700,27 @@ namespace SourceGit.ViewModels
{ {
if (!IsSearchingCommitsByFilePath()) if (!IsSearchingCommitsByFilePath())
{ {
_requestingWorktreeFiles = false;
_worktreeFiles = null; _worktreeFiles = null;
MatchedFilesForSearching = null; MatchedFilesForSearching = null;
GC.Collect(); GC.Collect();
return; return;
} }
if (_requestingWorktreeFiles)
return;
_requestingWorktreeFiles = true;
Task.Run(() => Task.Run(() =>
{ {
_worktreeFiles = new Commands.QueryRevisionFileNames(_fullpath, "HEAD").Result(); _worktreeFiles = new Commands.QueryRevisionFileNames(_fullpath, "HEAD").Result();
Dispatcher.UIThread.Invoke(() => Dispatcher.UIThread.Invoke(() =>
{ {
if (IsSearchingCommitsByFilePath()) if (IsSearchingCommitsByFilePath() && _requestingWorktreeFiles)
CalcMatchedFilesForSearching(); CalcMatchedFilesForSearching();
_requestingWorktreeFiles = false;
}); });
}); });
} }
@ -2796,6 +2806,7 @@ namespace SourceGit.ViewModels
private string _searchCommitFilter = string.Empty; private string _searchCommitFilter = string.Empty;
private List<Models.Commit> _searchedCommits = new List<Models.Commit>(); private List<Models.Commit> _searchedCommits = new List<Models.Commit>();
private Models.Commit _selectedSearchedCommit = null; private Models.Commit _selectedSearchedCommit = null;
private bool _requestingWorktreeFiles = false;
private List<string> _worktreeFiles = null; private List<string> _worktreeFiles = null;
private List<string> _matchedFilesForSearching = null; private List<string> _matchedFilesForSearching = null;