Skip to content

Commit c7a01f6

Browse files
committed
fix: GetCanStagedChanges should allow stage conflict that has been resolved manually (#1621)
Signed-off-by: leo <longshuang@msn.cn>
1 parent d170bf6 commit c7a01f6

File tree

1 file changed

+16
-4
lines changed

1 file changed

+16
-4
lines changed

src/ViewModels/WorkingCopy.cs

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -345,7 +345,7 @@ public void StashAll(bool autoStart)
345345

346346
public async Task StageChangesAsync(List<Models.Change> changes, Models.Change next)
347347
{
348-
var canStaged = GetCanStagedChanges(changes);
348+
var canStaged = await GetCanStageChangesAsync(changes);
349349
var count = canStaged.Count;
350350
if (count == 0)
351351
return;
@@ -645,16 +645,28 @@ public void CommitWithPush()
645645
return visible;
646646
}
647647

648-
private List<Models.Change> GetCanStagedChanges(List<Models.Change> changes)
648+
private async Task<List<Models.Change>> GetCanStageChangesAsync(List<Models.Change> changes)
649649
{
650650
if (!HasUnsolvedConflicts)
651651
return changes;
652652

653653
var outs = new List<Models.Change>();
654654
foreach (var c in changes)
655655
{
656-
if (!c.IsConflicted)
657-
outs.Add(c);
656+
if (c.IsConflicted)
657+
{
658+
var isResolved = c.ConflictReason switch
659+
{
660+
Models.ConflictReason.BothAdded or Models.ConflictReason.BothModified =>
661+
await new Commands.IsConflictResolved(_repo.FullPath, c).GetResultAsync(),
662+
_ => false,
663+
};
664+
665+
if (!isResolved)
666+
continue;
667+
}
668+
669+
outs.Add(c);
658670
}
659671

660672
return outs;

0 commit comments

Comments
 (0)