diff --git a/src/Models/RepositorySettings.cs b/src/Models/RepositorySettings.cs index 06e60a87..db5496a3 100644 --- a/src/Models/RepositorySettings.cs +++ b/src/Models/RepositorySettings.cs @@ -70,6 +70,12 @@ namespace SourceGit.Models set; } = false; + public bool FirstParentFilterEnabled + { + get; + set; + } = false; + public AvaloniaList Filters { get; diff --git a/src/Resources/Icons.axaml b/src/Resources/Icons.axaml index 7952105c..6e16802a 100644 --- a/src/Resources/Icons.axaml +++ b/src/Resources/Icons.axaml @@ -38,6 +38,7 @@ M416 832H128V128h384v192C512 355 541 384 576 384L768 384v32c0 19 13 32 32 32S832 435 832 416v-64c0-6 0-19-6-25l-256-256c-6-6-19-6-25-6H128A64 64 0 0064 128v704C64 867 93 896 129 896h288c19 0 32-13 32-32S435 832 416 832zM576 172 722 320H576V172zM736 512C614 512 512 614 512 736S614 960 736 960s224-102 224-224S858 512 736 512zM576 736C576 646 646 576 736 576c32 0 58 6 83 26l-218 218c-19-26-26-51-26-83zm160 160c-32 0-64-13-96-32l224-224c19 26 32 58 32 96 0 90-70 160-160 160z M896 320c0-19-6-32-19-45l-192-192c-13-13-26-19-45-19H192c-38 0-64 26-64 64v768c0 38 26 64 64 64h640c38 0 64-26 64-64V320zm-256 384H384c-19 0-32-13-32-32s13-32 32-32h256c19 0 32 13 32 32s-13 32-32 32zm166-384H640V128l192 192h-26z M599 425 599 657 425 832 425 425 192 192 832 192Z + M599 425 599 657 425 832 425 425 192 192 832 192Z M853 267H514c-4 0-6-2-9-4l-38-66c-13-21-38-36-64-36H171c-41 0-75 34-75 75v555c0 41 34 75 75 75h683c41 0 75-34 75-75V341c0-41-34-75-75-75zm-683-43h233c4 0 6 2 9 4l38 66c13 21 38 36 64 36H853c6 0 11 4 11 11v75h-704V235c0-6 4-11 11-11zm683 576H171c-6 0-11-4-11-11V480h704V789c0 6-4 11-11 11z M1088 227H609L453 78a11 11 0 00-7-3H107a43 43 0 00-43 43v789a43 43 0 0043 43h981a43 43 0 0043-43V270a43 43 0 00-43-43zM757 599c0 5-5 9-10 9h-113v113c0 5-4 9-9 9h-56c-5 0-9-4-9-9V608h-113c-5 0-10-4-10-9V543c0-5 5-9 10-9h113V420c0-5 4-9 9-9h56c5 0 9 4 9 9V533h113c5 0 10 4 10 9v56z M922 450c-6-9-15-13-26-13h-11V341c0-41-34-75-75-75H514c-4 0-6-2-9-4l-38-66c-13-21-38-36-64-36H171c-41 0-75 34-75 75v597c0 6 2 13 6 19 6 9 15 13 26 13h640c13 0 26-9 30-21l128-363c4-11 2-21-4-30zM171 224h233c4 0 6 2 9 4l38 66c13 21 38 36 64 36H811c6 0 11 4 11 11v96H256c-13 0-26 9-30 21l-66 186V235c0-6 4-11 11-11zm574 576H173l105-299h572l-105 299z diff --git a/src/Resources/Locales/de_DE.axaml b/src/Resources/Locales/de_DE.axaml index 8de53cba..790fa9cd 100644 --- a/src/Resources/Locales/de_DE.axaml +++ b/src/Resources/Locales/de_DE.axaml @@ -480,6 +480,7 @@ GEFILTERT: LOKALE BRANCHES Zum HEAD wechseln + Erster-Eltern-Filter Erstelle Branch Öffne in {0} Öffne in externen Tools diff --git a/src/Resources/Locales/en_US.axaml b/src/Resources/Locales/en_US.axaml index 88634189..58d54ea6 100644 --- a/src/Resources/Locales/en_US.axaml +++ b/src/Resources/Locales/en_US.axaml @@ -478,6 +478,7 @@ FILTERED BY: LOCAL BRANCHES Navigate To HEAD + First Parent Filter Create Branch Open In {0} Open In External Tools diff --git a/src/Resources/Locales/pt_BR.axaml b/src/Resources/Locales/pt_BR.axaml index 637f9a21..f488b651 100644 --- a/src/Resources/Locales/pt_BR.axaml +++ b/src/Resources/Locales/pt_BR.axaml @@ -480,6 +480,7 @@ FILTRADO POR: BRANCHES LOCAIS Navegar para HEAD + Filtro do Primeiro Pai Criar Branch Abrir em {0} Abrir em Ferramentas Externas diff --git a/src/Resources/Locales/zh_CN.axaml b/src/Resources/Locales/zh_CN.axaml index b7c3e5d1..d30c35b5 100644 --- a/src/Resources/Locales/zh_CN.axaml +++ b/src/Resources/Locales/zh_CN.axaml @@ -480,6 +480,7 @@ 过滤规则 : 本地分支 定位HEAD + 首个父节点过滤器 新建分支 在 {0} 中打开 使用外部工具打开 diff --git a/src/Resources/Locales/zh_TW.axaml b/src/Resources/Locales/zh_TW.axaml index 6d51c588..655020bc 100644 --- a/src/Resources/Locales/zh_TW.axaml +++ b/src/Resources/Locales/zh_TW.axaml @@ -480,6 +480,7 @@ 過濾規則 : 本地分支 定位HEAD + 首個父節點過濾器 新建分支 在 {0} 中開啟 使用外部工具開啟 diff --git a/src/ViewModels/Repository.cs b/src/ViewModels/Repository.cs index 752b06db..4496ff71 100644 --- a/src/ViewModels/Repository.cs +++ b/src/ViewModels/Repository.cs @@ -284,6 +284,19 @@ namespace SourceGit.ViewModels set => SetProperty(ref _isWorktreeGroupExpanded, value); } + public bool FirstParentFilterToggled + { + get => _firstParentFilterToggled; + set + { + if (SetProperty(ref _firstParentFilterToggled, value)) + { + _settings.FirstParentFilterEnabled = value; + Task.Run(RefreshCommits); + } + } + } + public InProgressContext InProgressContext { get => _inProgressContext; @@ -752,9 +765,13 @@ namespace SourceGit.ViewModels }); } } + else if (_settings.FirstParentFilterEnabled) + { + limits += "--first-parent "; + } else { - limits += "--exclude=refs/stash --all"; + limits += "--exclude=refs/stash --all "; } var commits = new Commands.QueryCommits(_fullpath, limits).Result(); @@ -1957,6 +1974,7 @@ namespace SourceGit.ViewModels private bool _isSearchLoadingVisible = false; private bool _isSearchCommitSuggestionOpen = false; private int _searchCommitFilterType = 0; + private bool _firstParentFilterToggled = false; private string _searchCommitFilter = string.Empty; private List _searchedCommits = new List(); private List _revisionFiles = new List(); diff --git a/src/Views/RepositoryToolbar.axaml b/src/Views/RepositoryToolbar.axaml index b76cfd63..02a90d31 100644 --- a/src/Views/RepositoryToolbar.axaml +++ b/src/Views/RepositoryToolbar.axaml @@ -125,6 +125,10 @@ + + + +