refactor: re-write commit searching (part 3)

Signed-off-by: leo <longshuang@msn.cn>
This commit is contained in:
leo 2025-03-12 11:53:24 +08:00
parent ee7ccc0391
commit bb2284c4c9
No known key found for this signature in database
3 changed files with 15 additions and 18 deletions

View file

@ -1,4 +1,6 @@
namespace SourceGit.Commands
using System.Collections.Generic;
namespace SourceGit.Commands
{
public class QueryRevisionFileNames : Command
{
@ -9,13 +11,17 @@
Args = $"ls-tree -r -z --name-only {revision}";
}
public string[] Result()
public List<string> Result()
{
var rs = ReadToEnd();
if (rs.IsSuccess)
return rs.StdOut.Split('\0', System.StringSplitOptions.RemoveEmptyEntries);
if (!rs.IsSuccess)
return [];
var lines = rs.StdOut.Split('\0', System.StringSplitOptions.RemoveEmptyEntries);
var outs = new List<string>();
foreach (var line in lines)
outs.Add(line);
return outs;
}
}
}

View file

@ -814,14 +814,11 @@ namespace SourceGit.ViewModels
Task.Run(() =>
{
var files = new Commands.QueryRevisionFileNames(_repo.FullPath, sha).Result();
var filesList = new List<string>();
filesList.AddRange(files);
Dispatcher.UIThread.Invoke(() =>
{
if (sha == Commit.SHA)
{
_revisionFiles = filesList;
_revisionFiles = files;
if (!string.IsNullOrEmpty(_revisionFileSearchFilter))
CalcRevisionFileSearchSuggestion();
}

View file

@ -2376,16 +2376,10 @@ namespace SourceGit.ViewModels
Task.Run(() =>
{
var files = new Commands.QueryRevisionFileNames(_fullpath, "HEAD").Result();
_worktreeFiles = new Commands.QueryRevisionFileNames(_fullpath, "HEAD").Result();
Dispatcher.UIThread.Invoke(() =>
{
if (!IsSearchingCommitsByFilePath())
return;
_worktreeFiles = new List<string>();
foreach (var f in files)
_worktreeFiles.Add(f);
if (IsSearchingCommitsByFilePath())
CalcMatchedFilesForSearching();
});
});