Skip to content

Commit d09866e

Browse files
committed
enhance: commit search (#268)
* add `-i` parameter to ignore case while searching commit message * add `--branches --remotes` to search commits from all branches
1 parent a68b61d commit d09866e

File tree

2 files changed

+20
-10
lines changed

2 files changed

+20
-10
lines changed

src/Commands/QueryCommits.cs

Lines changed: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -14,20 +14,30 @@ public QueryCommits(string repo, string limits, bool needFindHead = true)
1414
_findFirstMerged = needFindHead;
1515
}
1616

17-
public QueryCommits(string repo, int maxCount, string messageFilter)
17+
public QueryCommits(string repo, int maxCount, string messageFilter, bool isFile)
1818
{
19-
var argsBuilder = new StringBuilder();
20-
var words = messageFilter.Split(new[] { ' ', '\t', '\r' }, StringSplitOptions.RemoveEmptyEntries);
21-
foreach (var word in words)
19+
string search;
20+
if (isFile)
2221
{
23-
var escaped = word.Trim().Replace("\"", "\\\"", StringComparison.Ordinal);
24-
argsBuilder.Append($"--grep=\"{escaped}\" ");
22+
search = $"-- \"{messageFilter}\"";
2523
}
26-
argsBuilder.Append("--all-match");
24+
else
25+
{
26+
var argsBuilder = new StringBuilder();
27+
var words = messageFilter.Split(new[] { ' ', '\t', '\r' }, StringSplitOptions.RemoveEmptyEntries);
28+
foreach (var word in words)
29+
{
30+
var escaped = word.Trim().Replace("\"", "\\\"", StringComparison.Ordinal);
31+
argsBuilder.Append($"--grep=\"{escaped}\" ");
32+
}
33+
argsBuilder.Append("--all-match -i");
34+
search = argsBuilder.ToString();
35+
}
36+
2737

2838
WorkingDirectory = repo;
2939
Context = repo;
30-
Args = $"log -{maxCount} --date-order --no-show-signature --decorate=full --pretty=format:%H%n%P%n%D%n%aN±%aE%n%at%n%cN±%cE%n%ct%n%s " + argsBuilder.ToString();
40+
Args = $"log -{maxCount} --date-order --no-show-signature --decorate=full --pretty=format:%H%n%P%n%D%n%aN±%aE%n%at%n%cN±%cE%n%ct%n%s --branches --remotes " + search;
3141
_findFirstMerged = false;
3242
}
3343

src/ViewModels/Repository.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -566,10 +566,10 @@ public void StartSearchCommits()
566566

567567
break;
568568
case 2:
569-
visible = new Commands.QueryCommits(FullPath, 1000, _searchCommitFilter).Result();
569+
visible = new Commands.QueryCommits(FullPath, 1000, _searchCommitFilter, false).Result();
570570
break;
571571
case 3:
572-
visible = new Commands.QueryCommits(FullPath, $"-1000 -- \"{_searchCommitFilter}\"", false).Result();
572+
visible = new Commands.QueryCommits(FullPath, 1000, _searchCommitFilter, true).Result();
573573
break;
574574
}
575575

0 commit comments

Comments
 (0)