Merge remote-tracking branch 'official-origin/develop' into develop

This commit is contained in:
mpagani 2025-04-14 10:26:29 +02:00
commit abe4568df2
3 changed files with 31 additions and 53 deletions

View file

@ -35,7 +35,26 @@ namespace SourceGit.Commands
public Models.DiffResult Result() public Models.DiffResult Result()
{ {
Exec(); var rs = ReadToEnd();
if (!rs.IsSuccess)
{
_result.TextDiff = null;
return _result;
}
var start = 0;
var end = rs.StdOut.IndexOf('\n', start);
while (end > 0)
{
var line = rs.StdOut.Substring(start, end - start);
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) if (_result.IsBinary || _result.IsLFS)
{ {
@ -54,8 +73,11 @@ namespace SourceGit.Commands
return _result; return _result;
} }
protected override void OnReadline(string line) private void ParseLine(string line)
{ {
if (_result.IsBinary)
return;
if (line.StartsWith("old mode ", StringComparison.Ordinal)) if (line.StartsWith("old mode ", StringComparison.Ordinal))
{ {
_result.OldMode = line.Substring(9); _result.OldMode = line.Substring(9);
@ -80,9 +102,6 @@ namespace SourceGit.Commands
return; return;
} }
if (_result.IsBinary)
return;
if (_result.IsLFS) if (_result.IsLFS)
{ {
var ch = line[0]; var ch = line[0];

View file

@ -206,52 +206,9 @@ namespace SourceGit.ViewModels
rs = latest.LFSDiff; rs = latest.LFSDiff;
} }
else else
{
// Check if old and new hashes differ but no text changes found
if (!string.IsNullOrEmpty(latest.OldHash) &&
!string.IsNullOrEmpty(latest.NewHash) &&
latest.OldHash != latest.NewHash)
{
// If hashes differ but no text diff found, it's likely an EOL change
// Create a text diff to show the file content
var textDiff = new Models.TextDiff()
{
Repo = _repo,
Option = _option,
File = _option.Path
};
// Query the file content to show
var fileContent = Commands.QueryFileContent.Run(_repo, "HEAD", _option.Path);
using var reader = new StreamReader(fileContent);
var line = string.Empty;
int lineNumber = 1;
while ((line = reader.ReadLine()) != null)
{
textDiff.Lines.Add(new Models.TextDiffLine(
Models.TextDiffLineType.Normal,
line,
lineNumber,
lineNumber));
lineNumber++;
}
if (textDiff.Lines.Count > 0)
{
textDiff.MaxLineNumber = lineNumber - 1;
rs = textDiff;
}
else
{ {
rs = new Models.NoOrEOLChange(); rs = new Models.NoOrEOLChange();
} }
}
else
{
rs = new Models.NoOrEOLChange();
}
}
Dispatcher.UIThread.Post(() => Dispatcher.UIThread.Post(() =>
{ {

View file

@ -1253,11 +1253,12 @@ namespace SourceGit.Views
{ {
builder.Append(line.Content.Substring(0, 1000)); builder.Append(line.Content.Substring(0, 1000));
builder.Append($"...({line.Content.Length - 1000} character trimmed)"); builder.Append($"...({line.Content.Length - 1000} character trimmed)");
builder.AppendLine(); builder.Append('\n');
} }
else else
{ {
builder.AppendLine(line.Content); builder.Append(line.Content);
builder.Append('\n');
} }
} }
@ -1492,11 +1493,12 @@ namespace SourceGit.Views
{ {
builder.Append(line.Content.Substring(0, 1000)); builder.Append(line.Content.Substring(0, 1000));
builder.Append($"...({line.Content.Length - 1000} characters trimmed)"); builder.Append($"...({line.Content.Length - 1000} characters trimmed)");
builder.AppendLine(); builder.Append('\n');
} }
else else
{ {
builder.AppendLine(line.Content); builder.Append(line.Content);
builder.Append('\n');
} }
} }