feature: auto-change filter branches after checkout (#855)

This commit is contained in:
leo 2025-01-02 14:10:10 +08:00
parent 2a55ba6d07
commit 127315528a
No known key found for this signature in database
2 changed files with 18 additions and 4 deletions

View file

@ -65,8 +65,14 @@ namespace SourceGit.ViewModels
{ {
var b = _repo.Branches.Find(x => x.IsLocal && x.Name == Branch); var b = _repo.Branches.Find(x => x.IsLocal && x.Name == Branch);
if (b != null && _repo.HistoriesFilterMode == Models.FilterMode.Included) if (b != null && _repo.HistoriesFilterMode == Models.FilterMode.Included)
{
_repo.Settings.HistoriesFilters.Clear();
_repo.Settings.UpdateHistoriesFilter(b.FullName, Models.FilterType.LocalBranch, Models.FilterMode.Included); _repo.Settings.UpdateHistoriesFilter(b.FullName, Models.FilterType.LocalBranch, Models.FilterMode.Included);
if (!string.IsNullOrEmpty(b.Upstream))
_repo.Settings.UpdateHistoriesFilter(b.Upstream, Models.FilterType.LocalBranch, Models.FilterMode.Included);
}
_repo.MarkBranchesDirtyManually(); _repo.MarkBranchesDirtyManually();
_repo.SetWatcherEnabled(true); _repo.SetWatcherEnabled(true);
}); });

View file

@ -83,6 +83,7 @@ namespace SourceGit.ViewModels
_repo.SetWatcherEnabled(false); _repo.SetWatcherEnabled(false);
return Task.Run(() => return Task.Run(() =>
{ {
var succ = false;
if (CheckoutAfterCreated) if (CheckoutAfterCreated)
{ {
var changes = new Commands.CountLocalChangesWithoutUntracked(_repo.FullPath).Result(); var changes = new Commands.CountLocalChangesWithoutUntracked(_repo.FullPath).Result();
@ -92,7 +93,7 @@ namespace SourceGit.ViewModels
if (PreAction == Models.DealWithLocalChanges.StashAndReaply) if (PreAction == Models.DealWithLocalChanges.StashAndReaply)
{ {
SetProgressDescription("Stash local changes"); SetProgressDescription("Stash local changes");
var succ = new Commands.Stash(_repo.FullPath).Push("CREATE_BRANCH_AUTO_STASH"); succ = new Commands.Stash(_repo.FullPath).Push("CREATE_BRANCH_AUTO_STASH");
if (!succ) if (!succ)
{ {
CallUIThread(() => _repo.SetWatcherEnabled(true)); CallUIThread(() => _repo.SetWatcherEnabled(true));
@ -109,7 +110,7 @@ namespace SourceGit.ViewModels
} }
SetProgressDescription($"Create new branch '{_name}'"); SetProgressDescription($"Create new branch '{_name}'");
new Commands.Checkout(_repo.FullPath).Branch(_name, _baseOnRevision, SetProgressDescription); succ = new Commands.Checkout(_repo.FullPath).Branch(_name, _baseOnRevision, SetProgressDescription);
if (needPopStash) if (needPopStash)
{ {
@ -120,17 +121,24 @@ namespace SourceGit.ViewModels
else else
{ {
SetProgressDescription($"Create new branch '{_name}'"); SetProgressDescription($"Create new branch '{_name}'");
Commands.Branch.Create(_repo.FullPath, _name, _baseOnRevision); succ = Commands.Branch.Create(_repo.FullPath, _name, _baseOnRevision);
} }
CallUIThread(() => CallUIThread(() =>
{ {
if (CheckoutAfterCreated && _repo.HistoriesFilterMode == Models.FilterMode.Included) if (succ && CheckoutAfterCreated && _repo.HistoriesFilterMode == Models.FilterMode.Included)
{
_repo.Settings.HistoriesFilters.Clear();
_repo.Settings.UpdateHistoriesFilter($"refs/heads/{_name}", Models.FilterType.LocalBranch, Models.FilterMode.Included); _repo.Settings.UpdateHistoriesFilter($"refs/heads/{_name}", Models.FilterType.LocalBranch, Models.FilterMode.Included);
if (BasedOn is Models.Branch b && !b.IsLocal)
_repo.Settings.UpdateHistoriesFilter(b.FullName, Models.FilterType.LocalBranch, Models.FilterMode.Included);
}
_repo.MarkBranchesDirtyManually(); _repo.MarkBranchesDirtyManually();
_repo.SetWatcherEnabled(true); _repo.SetWatcherEnabled(true);
}); });
return true; return true;
}); });
} }