From 65dbfd336d4fe33e05ce6864fdf589e95c96b3c7 Mon Sep 17 00:00:00 2001 From: leo Date: Thu, 20 Mar 2025 20:53:30 +0800 Subject: [PATCH] refactor: it's not necessary to store untracked file list for selected stash Signed-off-by: leo --- src/Models/Stash.cs | 1 - src/ViewModels/StashesPage.cs | 25 ++++++++----------------- 2 files changed, 8 insertions(+), 18 deletions(-) diff --git a/src/Models/Stash.cs b/src/Models/Stash.cs index 8dca3bdb..257b6d33 100644 --- a/src/Models/Stash.cs +++ b/src/Models/Stash.cs @@ -10,7 +10,6 @@ namespace SourceGit.Models public List Parents { get; set; } = []; public ulong Time { get; set; } = 0; public string Message { get; set; } = ""; - public bool HasUntracked => Parents.Count == 3; public string TimeStr => DateTime.UnixEpoch.AddSeconds(Time).ToLocalTime().ToString(DateTimeFormat.Actived.DateTime); } diff --git a/src/ViewModels/StashesPage.cs b/src/ViewModels/StashesPage.cs index ec7cc84a..d8443c91 100644 --- a/src/ViewModels/StashesPage.cs +++ b/src/ViewModels/StashesPage.cs @@ -59,24 +59,16 @@ namespace SourceGit.ViewModels Task.Run(() => { var changes = new Commands.CompareRevisions(_repo.FullPath, $"{value.SHA}^", value.SHA).Result(); - var untracked = new HashSet(); - if (value.HasUntracked) + if (value.Parents.Count == 3) { - var untrackedChanges = new Commands.CompareRevisions(_repo.FullPath, "4b825dc642cb6eb9a060e54bf8d69288fbee4904", value.Parents[2]).Result(); - foreach (var c in untrackedChanges) - { - untracked.Add(c.Path); + var untracked = new Commands.CompareRevisions(_repo.FullPath, "4b825dc642cb6eb9a060e54bf8d69288fbee4904", value.Parents[2]).Result(); + foreach (var c in untracked) changes.Add(c); - } + + changes.Sort((l, r) => string.Compare(l.Path, r.Path, StringComparison.Ordinal)); } - changes.Sort((l, r) => Models.NumericSort.Compare(l.Path, r.Path)); - - Dispatcher.UIThread.Invoke(() => - { - Changes = changes; - _untrackedChanges = untracked; - }); + Dispatcher.UIThread.Invoke(() => Changes = changes); }); } } @@ -102,7 +94,7 @@ namespace SourceGit.ViewModels { if (value == null) DiffContext = null; - else if (_untrackedChanges.Contains(value.Path)) + else if (value.Index == Models.ChangeState.Added && _selectedStash.Parents.Count == 3) DiffContext = new DiffContext(_repo.FullPath, new Models.DiffOption("4b825dc642cb6eb9a060e54bf8d69288fbee4904", _selectedStash.Parents[2], value), _diffContext); else DiffContext = new DiffContext(_repo.FullPath, new Models.DiffOption(_selectedStash.Parents[0], _selectedStash.SHA, value), _diffContext); @@ -178,7 +170,7 @@ namespace SourceGit.ViewModels var opts = new List(); foreach (var c in _changes) { - if (_untrackedChanges.Contains(c.Path)) + if (c.Index == Models.ChangeState.Added && _selectedStash.Parents.Count == 3) opts.Add(new Models.DiffOption("4b825dc642cb6eb9a060e54bf8d69288fbee4904", _selectedStash.Parents[2], c)); else opts.Add(new Models.DiffOption(_selectedStash.Parents[0], _selectedStash.SHA, c)); @@ -303,7 +295,6 @@ namespace SourceGit.ViewModels private List _visibleStashes = new List(); private string _searchFilter = string.Empty; private Models.Stash _selectedStash = null; - private HashSet _untrackedChanges = new HashSet(); private List _changes = null; private Models.Change _selectedChange = null; private DiffContext _diffContext = null;