Skip to content

Commit 6426da3

Browse files
committed
enhance: supports search commits by changed file path like src/Commands/* or */Add.cs.
1 parent 89f2d3d commit 6426da3

File tree

5 files changed

+60
-17
lines changed

5 files changed

+60
-17
lines changed

src/Resources/Locales/en_US.axaml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -384,7 +384,9 @@
384384
<x:String x:Key="Text.Repository.Remotes.Add" xml:space="preserve">ADD REMOTE</x:String>
385385
<x:String x:Key="Text.Repository.Resolve" xml:space="preserve">RESOLVE</x:String>
386386
<x:String x:Key="Text.Repository.Search" xml:space="preserve">Search Commit</x:String>
387-
<x:String x:Key="Text.Repository.SearchTip" xml:space="preserve">Search Author/Committer/Message/SHA</x:String>
387+
<x:String x:Key="Text.Repository.Search.By" xml:space="preserve">Search By</x:String>
388+
<x:String x:Key="Text.Repository.Search.ByBaseInfo" xml:space="preserve">Information</x:String>
389+
<x:String x:Key="Text.Repository.Search.ByFile" xml:space="preserve">File</x:String>
388390
<x:String x:Key="Text.Repository.Statistics" xml:space="preserve">Statistics</x:String>
389391
<x:String x:Key="Text.Repository.Submodules" xml:space="preserve">SUBMODULES</x:String>
390392
<x:String x:Key="Text.Repository.Submodules.Add" xml:space="preserve">ADD SUBMODULE</x:String>

src/Resources/Locales/zh_CN.axaml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -387,7 +387,9 @@
387387
<x:String x:Key="Text.Repository.Remotes.Add" xml:space="preserve">添加远程</x:String>
388388
<x:String x:Key="Text.Repository.Resolve" xml:space="preserve">解决冲突</x:String>
389389
<x:String x:Key="Text.Repository.Search" xml:space="preserve">查找提交</x:String>
390-
<x:String x:Key="Text.Repository.SearchTip" xml:space="preserve">支持搜索作者/提交者/主题/指纹</x:String>
390+
<x:String x:Key="Text.Repository.Search.By" xml:space="preserve">搜索途径</x:String>
391+
<x:String x:Key="Text.Repository.Search.ByBaseInfo" xml:space="preserve">摘要</x:String>
392+
<x:String x:Key="Text.Repository.Search.ByFile" xml:space="preserve">文件</x:String>
391393
<x:String x:Key="Text.Repository.Statistics" xml:space="preserve">提交统计</x:String>
392394
<x:String x:Key="Text.Repository.Submodules" xml:space="preserve">子模块列表</x:String>
393395
<x:String x:Key="Text.Repository.Submodules.Add" xml:space="preserve">添加子模块</x:String>

src/Resources/Locales/zh_TW.axaml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -387,7 +387,9 @@
387387
<x:String x:Key="Text.Repository.Remotes.Add" xml:space="preserve">新增遠端</x:String>
388388
<x:String x:Key="Text.Repository.Resolve" xml:space="preserve">解決衝突</x:String>
389389
<x:String x:Key="Text.Repository.Search" xml:space="preserve">查詢提交</x:String>
390-
<x:String x:Key="Text.Repository.SearchTip" xml:space="preserve">支援搜尋作者/提交者/主題/指紋</x:String>
390+
<x:String x:Key="Text.Repository.Search.By" xml:space="preserve">查詢方式</x:String>
391+
<x:String x:Key="Text.Repository.Search.ByBaseInfo" xml:space="preserve">摘要</x:String>
392+
<x:String x:Key="Text.Repository.Search.ByFile" xml:space="preserve">檔案</x:String>
391393
<x:String x:Key="Text.Repository.Statistics" xml:space="preserve">提交統計</x:String>
392394
<x:String x:Key="Text.Repository.Submodules" xml:space="preserve">子模組列表</x:String>
393395
<x:String x:Key="Text.Repository.Submodules.Add" xml:space="preserve">新增子模組</x:String>

src/ViewModels/Repository.cs

Lines changed: 25 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -185,6 +185,13 @@ public bool IsSearching
185185
}
186186
}
187187

188+
[JsonIgnore]
189+
public int SearchCommitFilterType
190+
{
191+
get => _searchCommitFilterType;
192+
set => SetProperty(ref _searchCommitFilterType, value);
193+
}
194+
188195
[JsonIgnore]
189196
public string SearchCommitFilter
190197
{
@@ -416,18 +423,26 @@ public void StartSearchCommits()
416423
return;
417424

418425
var visible = new List<Models.Commit>();
419-
foreach (var c in _histories.Commits)
420-
{
421-
if (c.SHA.Contains(_searchCommitFilter, StringComparison.OrdinalIgnoreCase)
422-
|| c.Body.Contains(_searchCommitFilter, StringComparison.OrdinalIgnoreCase)
423-
|| c.Author.Name.Contains(_searchCommitFilter, StringComparison.OrdinalIgnoreCase)
424-
|| c.Committer.Name.Contains(_searchCommitFilter, StringComparison.OrdinalIgnoreCase)
425-
|| c.Author.Email.Contains(_searchCommitFilter, StringComparison.OrdinalIgnoreCase)
426-
|| c.Committer.Email.Contains(_searchCommitFilter, StringComparison.OrdinalIgnoreCase))
426+
427+
if (_searchCommitFilterType == 0)
428+
{
429+
foreach (var c in _histories.Commits)
427430
{
428-
visible.Add(c);
431+
if (c.SHA.Contains(_searchCommitFilter, StringComparison.OrdinalIgnoreCase)
432+
|| c.Body.Contains(_searchCommitFilter, StringComparison.OrdinalIgnoreCase)
433+
|| c.Author.Name.Contains(_searchCommitFilter, StringComparison.OrdinalIgnoreCase)
434+
|| c.Committer.Name.Contains(_searchCommitFilter, StringComparison.OrdinalIgnoreCase)
435+
|| c.Author.Email.Contains(_searchCommitFilter, StringComparison.OrdinalIgnoreCase)
436+
|| c.Committer.Email.Contains(_searchCommitFilter, StringComparison.OrdinalIgnoreCase))
437+
{
438+
visible.Add(c);
439+
}
429440
}
430441
}
442+
else
443+
{
444+
visible = new Commands.QueryCommits(FullPath, $"-1000 -- \"{_searchCommitFilter}\"", false).Result();
445+
}
431446

432447
SearchedCommits = visible;
433448
}
@@ -1508,6 +1523,7 @@ private BranchTreeNode.Builder BuildBranchTree(List<Models.Branch> branches, Lis
15081523
private object _selectedView = null;
15091524

15101525
private bool _isSearching = false;
1526+
private int _searchCommitFilterType = 0;
15111527
private string _searchCommitFilter = string.Empty;
15121528
private List<Models.Commit> _searchedCommits = new List<Models.Commit>();
15131529

src/Views/Repository.axaml

Lines changed: 26 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -493,17 +493,17 @@
493493
</Grid>
494494

495495
<!-- Left Search Mode -->
496-
<Grid Grid.Column="0" RowDefinitions="32,*" IsVisible="{Binding IsSearching}" PropertyChanged="OnSearchCommitPanelPropertyChanged">
496+
<Grid Grid.Column="0" RowDefinitions="32,32,*" IsVisible="{Binding IsSearching}" PropertyChanged="OnSearchCommitPanelPropertyChanged">
497497
<!-- Search -->
498498
<TextBox Grid.Row="0"
499499
x:Name="txtSearchCommitsBox"
500-
Margin="4,2"
500+
Margin="4,2,4,0"
501501
Height="24"
502502
BorderThickness="1"
503503
BorderBrush="{DynamicResource Brush.Border2}"
504504
Background="{DynamicResource Brush.Contents}"
505505
CornerRadius="4"
506-
Watermark="{DynamicResource Text.Repository.SearchTip}"
506+
Watermark="{DynamicResource Text.Repository.Search}"
507507
Text="{Binding SearchCommitFilter, Mode=TwoWay}"
508508
VerticalContentAlignment="Center"
509509
KeyDown="OnSearchKeyDown">
@@ -529,7 +529,27 @@
529529
</TextBox.InnerRightContent>
530530
</TextBox>
531531

532-
<DataGrid Grid.Row="1"
532+
<Grid Grid.Row="1" ColumnDefinitions="Auto,*" Margin="4,0">
533+
<TextBlock Grid.Column="0"
534+
Text="{DynamicResource Text.Repository.Search.By}"
535+
Foreground="{DynamicResource Brush.FG2}"
536+
Margin="2,0,0,0"/>
537+
538+
<ComboBox Grid.Column="1"
539+
MinHeight="24" Height="24"
540+
Padding="8,0"
541+
Background="{DynamicResource Brush.Contents}"
542+
BorderBrush="{DynamicResource Brush.Border2}"
543+
HorizontalAlignment="Right"
544+
SelectedIndex="{Binding SearchCommitFilterType, Mode=TwoWay}">
545+
<ComboBox.Items>
546+
<TextBlock Text="{DynamicResource Text.Repository.Search.ByBaseInfo}" FontSize="12"/>
547+
<TextBlock Text="{DynamicResource Text.Repository.Search.ByFile}" FontSize="12"/>
548+
</ComboBox.Items>
549+
</ComboBox>
550+
</Grid>
551+
552+
<DataGrid Grid.Row="2"
533553
ItemsSource="{Binding SearchedCommits}"
534554
SelectionMode="Single"
535555
SelectedItem="{Binding SearchResultSelectedCommit, Mode=OneWay}"
@@ -544,6 +564,7 @@
544564
BorderBrush="{DynamicResource Brush.Border2}"
545565
Background="{DynamicResource Brush.Contents}"
546566
Margin="4,0,4,4"
567+
CornerRadius="4"
547568
HorizontalScrollBarVisibility="Disabled"
548569
VerticalScrollBarVisibility="Auto"
549570
SelectionChanged="OnSearchResultDataGridSelectionChanged">
@@ -572,7 +593,7 @@
572593
</DataGrid.Columns>
573594
</DataGrid>
574595

575-
<Path Grid.Row="1"
596+
<Path Grid.Row="2"
576597
HorizontalAlignment="Center" VerticalAlignment="Center"
577598
Width="48" Height="48"
578599
Data="{StaticResource Icons.Empty}"

0 commit comments

Comments
 (0)