fix: renamed files are missing in commit changes and stash changes (#1151)

Signed-off-by: leo <longshuang@msn.cn>
This commit is contained in:
leo 2025-04-07 10:14:02 +08:00
parent c615d04038
commit 8c9cf05c1d
No known key found for this signature in database
2 changed files with 26 additions and 10 deletions

View file

@ -6,8 +6,10 @@ namespace SourceGit.Commands
{ {
public partial class CompareRevisions : Command public partial class CompareRevisions : Command
{ {
[GeneratedRegex(@"^([MADRC])\s+(.+)$")] [GeneratedRegex(@"^([MADC])\s+(.+)$")]
private static partial Regex REG_FORMAT(); private static partial Regex REG_FORMAT();
[GeneratedRegex(@"^R[0-9]{0,4}\s+(.+)$")]
private static partial Regex REG_RENAME_FORMAT();
public CompareRevisions(string repo, string start, string end) public CompareRevisions(string repo, string start, string end)
{ {
@ -38,7 +40,17 @@ namespace SourceGit.Commands
{ {
var match = REG_FORMAT().Match(line); var match = REG_FORMAT().Match(line);
if (!match.Success) if (!match.Success)
{
match = REG_RENAME_FORMAT().Match(line);
if (match.Success)
{
var renamed = new Models.Change() { Path = match.Groups[1].Value };
renamed.Set(Models.ChangeState.Renamed);
_changes.Add(renamed);
}
return; return;
}
var change = new Models.Change() { Path = match.Groups[2].Value }; var change = new Models.Change() { Path = match.Groups[2].Value };
var status = match.Groups[1].Value; var status = match.Groups[1].Value;
@ -57,10 +69,6 @@ namespace SourceGit.Commands
change.Set(Models.ChangeState.Deleted); change.Set(Models.ChangeState.Deleted);
_changes.Add(change); _changes.Add(change);
break; break;
case 'R':
change.Set(Models.ChangeState.Renamed);
_changes.Add(change);
break;
case 'C': case 'C':
change.Set(Models.ChangeState.Copied); change.Set(Models.ChangeState.Copied);
_changes.Add(change); _changes.Add(change);

View file

@ -9,8 +9,10 @@ namespace SourceGit.Commands
/// </summary> /// </summary>
public partial class QueryStashChanges : Command public partial class QueryStashChanges : Command
{ {
[GeneratedRegex(@"^([MADRC])\s+(.+)$")] [GeneratedRegex(@"^([MADC])\s+(.+)$")]
private static partial Regex REG_FORMAT(); private static partial Regex REG_FORMAT();
[GeneratedRegex(@"^R[0-9]{0,4}\s+(.+)$")]
private static partial Regex REG_RENAME_FORMAT();
public QueryStashChanges(string repo, string stash) public QueryStashChanges(string repo, string stash)
{ {
@ -31,7 +33,17 @@ namespace SourceGit.Commands
{ {
var match = REG_FORMAT().Match(line); var match = REG_FORMAT().Match(line);
if (!match.Success) if (!match.Success)
{
match = REG_RENAME_FORMAT().Match(line);
if (match.Success)
{
var renamed = new Models.Change() { Path = match.Groups[1].Value };
renamed.Set(Models.ChangeState.Renamed);
outs.Add(renamed);
}
continue; continue;
}
var change = new Models.Change() { Path = match.Groups[2].Value }; var change = new Models.Change() { Path = match.Groups[2].Value };
var status = match.Groups[1].Value; var status = match.Groups[1].Value;
@ -50,10 +62,6 @@ namespace SourceGit.Commands
change.Set(Models.ChangeState.Deleted); change.Set(Models.ChangeState.Deleted);
outs.Add(change); outs.Add(change);
break; break;
case 'R':
change.Set(Models.ChangeState.Renamed);
outs.Add(change);
break;
case 'C': case 'C':
change.Set(Models.ChangeState.Copied); change.Set(Models.ChangeState.Copied);
outs.Add(change); outs.Add(change);