diff --git a/src/Commands/IsConflictResolved.cs b/src/Commands/IsConflictResolved.cs
new file mode 100644
index 00000000..49bc56fa
--- /dev/null
+++ b/src/Commands/IsConflictResolved.cs
@@ -0,0 +1,20 @@
+namespace SourceGit.Commands
+{
+ public class IsConflictResolved : Command
+ {
+ public IsConflictResolved(string repo, Models.Change change)
+ {
+ var opt = new Models.DiffOption(change, true);
+
+ WorkingDirectory = repo;
+ Context = repo;
+ Args = $"diff -a --ignore-cr-at-eol --check {opt}";
+ }
+
+ public bool Result()
+ {
+ var rs = ReadToEnd();
+ return rs.IsSuccess;
+ }
+ }
+}
diff --git a/src/Resources/Locales/en_US.axaml b/src/Resources/Locales/en_US.axaml
index fc2260a8..fed4f46b 100644
--- a/src/Resources/Locales/en_US.axaml
+++ b/src/Resources/Locales/en_US.axaml
@@ -427,11 +427,13 @@
Sort
Changes
Amend
+ You can stage this file now.
COMMIT
COMMIT & PUSH
Enter commit message
CTRL + Enter
CONFLICTS DETECTED
+ FILE CONFLICTS ARE RESOLVED
RECENT INPUT MESSAGES
INCLUDE UNTRACKED FILES
MESSAGE HISTORIES
diff --git a/src/Resources/Locales/zh_CN.axaml b/src/Resources/Locales/zh_CN.axaml
index ae5a624f..c2500d54 100644
--- a/src/Resources/Locales/zh_CN.axaml
+++ b/src/Resources/Locales/zh_CN.axaml
@@ -427,11 +427,13 @@
排序
本地更改
修补(--amend)
+ 现在您已可将其加入暂存区中
提交
提交并推送
填写提交信息
CTRL + Enter
检测到冲突
+ 文件冲突已解决
最近输入的提交信息
显示未跟踪文件
历史提交信息
diff --git a/src/ViewModels/WorkingCopy.cs b/src/ViewModels/WorkingCopy.cs
index 24e733a0..76c3be50 100644
--- a/src/ViewModels/WorkingCopy.cs
+++ b/src/ViewModels/WorkingCopy.cs
@@ -12,9 +12,27 @@ using CommunityToolkit.Mvvm.ComponentModel;
namespace SourceGit.ViewModels
{
- public class ConflictContext
+ public class ConflictContext : ObservableObject
{
- public Models.Change Change { get; set; }
+ public bool IsResolved
+ {
+ get => _isResolved;
+ set => SetProperty(ref _isResolved, value);
+ }
+
+ public ConflictContext(string repo, Models.Change change)
+ {
+ Task.Run(() =>
+ {
+ var result = new Commands.IsConflictResolved(repo, change).Result();
+ Dispatcher.UIThread.Post(() =>
+ {
+ IsResolved = result;
+ });
+ });
+ }
+
+ private bool _isResolved = false;
}
public class WorkingCopy : ObservableObject
@@ -296,9 +314,9 @@ namespace SourceGit.ViewModels
{
DetailContext = null;
}
- else if (change.IsConflit)
+ else if (change.IsConflit && isUnstaged)
{
- DetailContext = new ConflictContext() { Change = change };
+ DetailContext = new ConflictContext(_repo.FullPath, change);
}
else
{
@@ -432,26 +450,23 @@ namespace SourceGit.ViewModels
_repo.SetWatcherEnabled(true);
}
- public async void UseExternalMergeTool()
+ public async void UseExternalMergeTool(Models.Change change)
{
- if (_detailContext is ConflictContext ctx)
+ var type = Preference.Instance.ExternalMergeToolType;
+ var exec = Preference.Instance.ExternalMergeToolPath;
+
+ var tool = Models.ExternalMerger.Supported.Find(x => x.Type == type);
+ if (tool == null)
{
- var type = Preference.Instance.ExternalMergeToolType;
- var exec = Preference.Instance.ExternalMergeToolPath;
-
- var tool = Models.ExternalMerger.Supported.Find(x => x.Type == type);
- if (tool == null)
- {
- App.RaiseException(_repo.FullPath, "Invalid merge tool in preference setting!");
- return;
- }
-
- var args = tool.Type != 0 ? tool.Cmd : Preference.Instance.ExternalMergeToolCmd;
-
- _repo.SetWatcherEnabled(false);
- await Task.Run(() => Commands.MergeTool.OpenForMerge(_repo.FullPath, exec, args, ctx.Change.Path));
- _repo.SetWatcherEnabled(true);
+ App.RaiseException(_repo.FullPath, "Invalid merge tool in preference setting!");
+ return;
}
+
+ var args = tool.Type != 0 ? tool.Cmd : Preference.Instance.ExternalMergeToolCmd;
+
+ _repo.SetWatcherEnabled(false);
+ await Task.Run(() => Commands.MergeTool.OpenForMerge(_repo.FullPath, exec, args, change.Path));
+ _repo.SetWatcherEnabled(true);
}
public async void DoCommit(bool autoPush)
@@ -554,7 +569,7 @@ namespace SourceGit.ViewModels
openMerger.Header = App.Text("FileCM.OpenWithExternalMerger");
openMerger.Click += (_, e) =>
{
- UseExternalMergeTool();
+ UseExternalMergeTool(change);
e.Handled = true;
};
diff --git a/src/Views/WorkingCopy.axaml b/src/Views/WorkingCopy.axaml
index 3e52ffc3..57931284 100644
--- a/src/Views/WorkingCopy.axaml
+++ b/src/Views/WorkingCopy.axaml
@@ -319,11 +319,19 @@
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+