Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion src/App.axaml.cs
Original file line number Diff line number Diff line change
Expand Up @@ -695,7 +695,7 @@ private string FixFontFamilyName(string input)
}

var name = sb.ToString();
if (name.Contains('#', StringComparison.Ordinal))
if (name.Contains('#'))
{
if (!name.Equals("fonts:Inter#Inter", StringComparison.Ordinal) &&
!name.Equals("fonts:SourceGit#JetBrains Mono", StringComparison.Ordinal))
Expand Down
2 changes: 1 addition & 1 deletion src/Commands/Blame.cs
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ public Blame(string repo, string file, string revision)

private void ParseLine(string line)
{
if (line.Contains('\0', StringComparison.Ordinal))
if (line.Contains('\0'))
{
_result.IsBinary = true;
_result.LineInfos.Clear();
Expand Down
10 changes: 3 additions & 7 deletions src/Commands/Config.cs
Original file line number Diff line number Diff line change
Expand Up @@ -31,13 +31,9 @@ public async Task<Dictionary<string, string>> ReadAllAsync()
var lines = output.StdOut.Split(['\r', '\n'], StringSplitOptions.RemoveEmptyEntries);
foreach (var line in lines)
{
var idx = line.IndexOf('=', StringComparison.Ordinal);
if (idx != -1)
{
var key = line.Substring(0, idx).Trim();
var val = line.Substring(idx + 1).Trim();
rs[key] = val;
}
var parts = line.Split('=', 2);
if (parts.Length == 2)
rs[parts[0]] = parts[1];
}
}

Expand Down
15 changes: 3 additions & 12 deletions src/Commands/Diff.cs
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
using System;
using System.Collections.Generic;
using System.IO;
using System.Text.RegularExpressions;
using System.Threading.Tasks;

Expand Down Expand Up @@ -39,20 +40,10 @@ public Diff(string repo, Models.DiffOption opt, int unified, bool ignoreWhitespa
public async Task<Models.DiffResult> ReadAsync()
{
var rs = await ReadToEndAsync().ConfigureAwait(false);
var start = 0;
var end = rs.StdOut.IndexOf('\n', start);
while (end > 0)
{
var line = rs.StdOut.Substring(start, end - start);
var sr = new StringReader(rs.StdOut);
while (sr.ReadLine() is { } line)
ParseLine(line);

start = end + 1;
end = rs.StdOut.IndexOf('\n', start);
}

if (start < rs.StdOut.Length)
ParseLine(rs.StdOut.Substring(start));

if (_result.IsBinary || _result.IsLFS || _result.TextDiff.Lines.Count == 0)
{
_result.TextDiff = null;
Expand Down
8 changes: 4 additions & 4 deletions src/Commands/QueryBranches.cs
Original file line number Diff line number Diff line change
Expand Up @@ -80,12 +80,12 @@ private Models.Branch ParseLine(string line)
else if (refName.StartsWith(PREFIX_REMOTE, StringComparison.Ordinal))
{
var name = refName.Substring(PREFIX_REMOTE.Length);
var shortNameIdx = name.IndexOf('/', StringComparison.Ordinal);
if (shortNameIdx < 0)
var nameParts = name.Split('/', 2);
if (nameParts.Length != 2)
return null;

branch.Remote = name.Substring(0, shortNameIdx);
branch.Name = name.Substring(branch.Remote.Length + 1);
branch.Remote = nameParts[0];
branch.Name = nameParts[1];
branch.IsLocal = false;
}
else
Expand Down
14 changes: 3 additions & 11 deletions src/Commands/QueryRevisionObjects.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using System.Collections.Generic;
using System.IO;
using System.Text.RegularExpressions;
using System.Threading.Tasks;

Expand All @@ -25,18 +26,9 @@ public QueryRevisionObjects(string repo, string sha, string parentFolder)
var rs = await ReadToEndAsync().ConfigureAwait(false);
if (rs.IsSuccess)
{
var start = 0;
var end = rs.StdOut.IndexOf('\0', start);
while (end > 0)
{
var line = rs.StdOut.Substring(start, end - start);
var sr = new StringReader(rs.StdOut);
while (sr.ReadLine() is { } line)
Parse(outs, line);
start = end + 1;
end = rs.StdOut.IndexOf('\0', start);
}

if (start < rs.StdOut.Length)
Parse(outs, rs.StdOut.Substring(start));
}

return outs;
Expand Down
26 changes: 7 additions & 19 deletions src/Commands/Statistics.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
using System;
using System.IO;
using System.Threading.Tasks;

namespace SourceGit.Commands
Expand All @@ -19,31 +19,19 @@ public Statistics(string repo, int max)
if (!rs.IsSuccess)
return statistics;

var start = 0;
var end = rs.StdOut.IndexOf('\n', start);
while (end > 0)
{
ParseLine(statistics, rs.StdOut.Substring(start, end - start));
start = end + 1;
end = rs.StdOut.IndexOf('\n', start);
}

if (start < rs.StdOut.Length)
ParseLine(statistics, rs.StdOut.Substring(start));
var sr = new StringReader(rs.StdOut);
while (sr.ReadLine() is { } line)
ParseLine(statistics, line);

statistics.Complete();
return statistics;
}

private void ParseLine(Models.Statistics statistics, string line)
{
var dateEndIdx = line.IndexOf('$', StringComparison.Ordinal);
if (dateEndIdx == -1)
return;

var dateStr = line.AsSpan(0, dateEndIdx);
if (double.TryParse(dateStr, out var date))
statistics.AddCommit(line.Substring(dateEndIdx + 1), date);
var parts = line.Split('$', 2);
if (parts.Length == 2 && double.TryParse(parts[0], out var date))
statistics.AddCommit(parts[1], date);
}
}
}
23 changes: 7 additions & 16 deletions src/Models/Change.cs
Original file line number Diff line number Diff line change
@@ -1,6 +1,4 @@
using System;

namespace SourceGit.Models
namespace SourceGit.Models
{
public enum ChangeViewMode
{
Expand Down Expand Up @@ -64,20 +62,13 @@ public void Set(ChangeState index, ChangeState workTree = ChangeState.None)

if (index == ChangeState.Renamed || workTree == ChangeState.Renamed)
{
var idx = Path.IndexOf('\t', StringComparison.Ordinal);
if (idx >= 0)
{
OriginalPath = Path.Substring(0, idx);
Path = Path.Substring(idx + 1);
}
else
var parts = Path.Split('\t', 2);
if (parts.Length < 2)
parts = Path.Split(" -> ", 2);
if (parts.Length == 2)
{
idx = Path.IndexOf(" -> ", StringComparison.Ordinal);
if (idx > 0)
{
OriginalPath = Path.Substring(0, idx);
Path = Path.Substring(idx + 4);
}
OriginalPath = parts[0];
Path = parts[1];
}
}

Expand Down
8 changes: 4 additions & 4 deletions src/Models/OpenAI.cs
Original file line number Diff line number Diff line change
Expand Up @@ -32,25 +32,25 @@ public void Append(string text)

buffer = REG_COT().Replace(buffer, "");

var startIdx = buffer.IndexOf('<', StringComparison.Ordinal);
var startIdx = buffer.IndexOf('<');
if (startIdx >= 0)
{
if (startIdx > 0)
OnReceive(buffer.Substring(0, startIdx));

var endIdx = buffer.IndexOf(">", startIdx + 1, StringComparison.Ordinal);
var endIdx = buffer.IndexOf('>', startIdx + 1);
if (endIdx <= startIdx)
{
if (buffer.Length - startIdx <= 15)
_thinkTail.Append(buffer.Substring(startIdx));
_thinkTail.Append(buffer.AsSpan(startIdx));
else
OnReceive(buffer.Substring(startIdx));
}
else if (endIdx < startIdx + 15)
{
var tag = buffer.Substring(startIdx + 1, endIdx - startIdx - 1);
if (_thinkTags.Contains(tag))
_thinkTail.Append(buffer.Substring(startIdx));
_thinkTail.Append(buffer.AsSpan(startIdx));
else
OnReceive(buffer.Substring(startIdx));
}
Expand Down
3 changes: 1 addition & 2 deletions src/Models/Stash.cs
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,7 @@ public string Subject
{
get
{
var idx = Message.IndexOf('\n', StringComparison.Ordinal);
return idx > 0 ? Message.Substring(0, idx).Trim() : Message;
return Message.Split('\n', 2)[0].Trim();
}
}

Expand Down
2 changes: 1 addition & 1 deletion src/Models/Statistics.cs
Original file line number Diff line number Diff line change
Expand Up @@ -199,7 +199,7 @@ public Statistics()

public void AddCommit(string author, double timestamp)
{
var emailIdx = author.IndexOf('±', StringComparison.Ordinal);
var emailIdx = author.IndexOf('±');
var email = author.Substring(emailIdx + 1).ToLower(CultureInfo.CurrentCulture);
if (!_users.TryGetValue(email, out var user))
{
Expand Down
11 changes: 6 additions & 5 deletions src/Models/User.cs
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
using System;
using System.Collections.Concurrent;
using System.Collections.Concurrent;

namespace SourceGit.Models
{
Expand All @@ -17,10 +16,12 @@ public User()

public User(string data)
{
var nameEndIdx = data.IndexOf('±', StringComparison.Ordinal);
var parts = data.Split('±', 2);
if (parts.Length < 2)
parts = [string.Empty, data];

Name = nameEndIdx > 0 ? data.Substring(0, nameEndIdx) : string.Empty;
Email = data.Substring(nameEndIdx + 1);
Name = parts[0];
Email = parts[1];
_hash = data.GetHashCode();
}

Expand Down
2 changes: 1 addition & 1 deletion src/ViewModels/BranchTreeNode.cs
Original file line number Diff line number Diff line change
Expand Up @@ -151,7 +151,7 @@ private void MakeBranchNode(Models.Branch branch, List<BranchTreeNode> roots, Di
{
var time = branch.CommitterDate;
var fullpath = $"{prefix}/{branch.Name}";
var sepIdx = branch.Name.IndexOf('/', StringComparison.Ordinal);
var sepIdx = branch.Name.IndexOf('/');
if (sepIdx == -1 || branch.IsDetachedHead)
{
roots.Add(new BranchTreeNode()
Expand Down
2 changes: 1 addition & 1 deletion src/ViewModels/ChangeTreeNode.cs
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ public static List<ChangeTreeNode> Build(IList<Models.Change> changes, HashSet<s

foreach (var c in changes)
{
var sepIdx = c.Path.IndexOf('/', StringComparison.Ordinal);
var sepIdx = c.Path.IndexOf('/');
if (sepIdx == -1)
{
nodes.Add(new ChangeTreeNode(c, 0));
Expand Down
2 changes: 1 addition & 1 deletion src/ViewModels/CommitDetail.cs
Original file line number Diff line number Diff line change
Expand Up @@ -232,7 +232,7 @@ public async Task OpenRevisionFileWithDefaultEditorAsync(string file)
var fullPath = Native.OS.GetAbsPath(_repo.FullPath, file);
var fileName = Path.GetFileNameWithoutExtension(fullPath) ?? "";
var fileExt = Path.GetExtension(fullPath) ?? "";
var tmpFile = Path.Combine(Path.GetTempPath(), $"{fileName}~{_commit.SHA.Substring(0, 10)}{fileExt}");
var tmpFile = Path.Combine(Path.GetTempPath(), $"{fileName}~{_commit.SHA.AsSpan(0, 10)}{fileExt}");

await Commands.SaveRevisionFile
.RunAsync(_repo.FullPath, _commit.SHA, file, tmpFile)
Expand Down
5 changes: 3 additions & 2 deletions src/ViewModels/FileHistories.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using System.Collections.Generic;
using System;
using System.Collections.Generic;
using System.IO;
using System.Threading.Tasks;

Expand Down Expand Up @@ -60,7 +61,7 @@ public async Task OpenWithDefaultEditorAsync()
var fullPath = Native.OS.GetAbsPath(_repo.FullPath, _file);
var fileName = Path.GetFileNameWithoutExtension(fullPath) ?? "";
var fileExt = Path.GetExtension(fullPath) ?? "";
var tmpFile = Path.Combine(Path.GetTempPath(), $"{fileName}~{_revision.SHA.Substring(0, 10)}{fileExt}");
var tmpFile = Path.Combine(Path.GetTempPath(), $"{fileName}~{_revision.SHA.AsSpan(0, 10)}{fileExt}");

await Commands.SaveRevisionFile
.RunAsync(_repo.FullPath, _revision.SHA, _file, tmpFile)
Expand Down
10 changes: 3 additions & 7 deletions src/ViewModels/InteractiveRebase.cs
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
using System;
using System.Collections.Generic;
using System.Collections.Generic;
using System.IO;
using System.Text.Json;
using System.Threading.Tasks;
Expand Down Expand Up @@ -52,11 +51,8 @@ public string FullMessage
if (SetProperty(ref _fullMessage, value))
{
var normalized = value.ReplaceLineEndings("\n");
var idx = normalized.IndexOf("\n\n", StringComparison.Ordinal);
if (idx > 0)
Subject = normalized.Substring(0, idx).ReplaceLineEndings(" ");
else
Subject = value.ReplaceLineEndings(" ");
var parts = normalized.Split("\n\n", 2);
Subject = parts[0].ReplaceLineEndings(" ");
}
}
}
Expand Down
5 changes: 3 additions & 2 deletions src/ViewModels/PushRevision.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using System.Threading.Tasks;
using System;
using System.Threading.Tasks;

namespace SourceGit.ViewModels
{
Expand Down Expand Up @@ -31,7 +32,7 @@ public PushRevision(Repository repo, Models.Commit revision, Models.Branch remot
public override async Task<bool> Sure()
{
_repo.SetWatcherEnabled(false);
ProgressDescription = $"Push {Revision.SHA.Substring(0, 10)} -> {RemoteBranch.FriendlyName} ...";
ProgressDescription = $"Push {Revision.SHA.AsSpan(0, 10)} -> {RemoteBranch.FriendlyName} ...";

var log = _repo.CreateLog("Push Revision");
Use(log);
Expand Down
2 changes: 1 addition & 1 deletion src/ViewModels/SubmoduleCollection.cs
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ public static List<SubmoduleTreeNode> Build(IList<Models.Submodule> submodules,

foreach (var module in submodules)
{
var sepIdx = module.Path.IndexOf('/', StringComparison.Ordinal);
var sepIdx = module.Path.IndexOf('/');
if (sepIdx == -1)
{
nodes.Add(new SubmoduleTreeNode(module, 0));
Expand Down
2 changes: 1 addition & 1 deletion src/ViewModels/TagCollection.cs
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ public static List<TagTreeNode> Build(List<Models.Tag> tags, HashSet<string> exp

foreach (var tag in tags)
{
var sepIdx = tag.Name.IndexOf('/', StringComparison.Ordinal);
var sepIdx = tag.Name.IndexOf('/');
if (sepIdx == -1)
{
nodes.Add(new TagTreeNode(tag, 0));
Expand Down
5 changes: 2 additions & 3 deletions src/ViewModels/WorkingCopy.cs
Original file line number Diff line number Diff line change
Expand Up @@ -774,7 +774,7 @@ public ContextMenu CreateContextMenuForUnstagedChanges(string selectedSingleFold
}
else
{
var isRooted = change.Path.IndexOf('/', StringComparison.Ordinal) <= 0;
var isRooted = change.Path.IndexOf('/') <= 0;
var singleFile = new MenuItem();
singleFile.Header = App.Text("WorkingCopy.AddToGitIgnore.SingleFile");
singleFile.Click += (_, e) =>
Expand Down Expand Up @@ -1654,8 +1654,7 @@ public ContextMenu CreateContextMenuForCommitMessages()
for (int i = 0; i < historiesCount; i++)
{
var message = _repo.Settings.CommitMessages[i].Trim().ReplaceLineEndings("\n");
var subjectEndIdx = message.IndexOf('\n');
var subject = subjectEndIdx > 0 ? message.Substring(0, subjectEndIdx) : message;
var subject = message.Split('\n', 2)[0];
var item = new MenuItem();
item.Header = new CommitMessageRecord(subject);
item.Icon = App.CreateMenuIcon("Icons.Histories");
Expand Down
Loading