Skip to content

Commit ea9517e

Browse files
committed
code_review: PR #2070
- Remove unused code - Add translations for Chinese (Simplified & Traditional) - UI/UX changes - Fix sync-scroll function sometimes does not work - Re-arrange context menu items for local change Signed-off-by: leo <longshuang@msn.cn>
1 parent d25faca commit ea9517e

File tree

11 files changed

+577
-835
lines changed

11 files changed

+577
-835
lines changed

src/Models/MergeConflict.cs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,8 @@ public enum ConflictResolution
77
None,
88
UseOurs,
99
UseTheirs,
10-
UseBoth,
1110
UseBothMineFirst,
1211
UseBothTheirsFirst,
13-
Manual,
1412
}
1513

1614
public class MergeConflictRegion

src/Resources/Locales/en_US.axaml

Lines changed: 23 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,8 @@
9393
<x:String x:Key="Text.ChangeCM.CheckoutFirstParentRevision" xml:space="preserve">Reset to Parent Revision</x:String>
9494
<x:String x:Key="Text.ChangeCM.CheckoutThisRevision" xml:space="preserve">Reset to This Revision</x:String>
9595
<x:String x:Key="Text.ChangeCM.GenerateCommitMessage" xml:space="preserve">Generate commit message</x:String>
96+
<x:String x:Key="Text.ChangeCM.Merge" xml:space="preserve">Merge (Built-in)</x:String>
97+
<x:String x:Key="Text.ChangeCM.MergeExternal" xml:space="preserve">Merge (External)</x:String>
9698
<x:String x:Key="Text.ChangeDisplayMode" xml:space="preserve">CHANGE DISPLAY MODE</x:String>
9799
<x:String x:Key="Text.ChangeDisplayMode.Grid" xml:space="preserve">Show as File and Dir List</x:String>
98100
<x:String x:Key="Text.ChangeDisplayMode.List" xml:space="preserve">Show as Path List</x:String>
@@ -536,6 +538,24 @@
536538
<x:String x:Key="Text.Merge.Into" xml:space="preserve">Into:</x:String>
537539
<x:String x:Key="Text.Merge.Mode" xml:space="preserve">Merge Option:</x:String>
538540
<x:String x:Key="Text.Merge.Source" xml:space="preserve">Source:</x:String>
541+
<x:String x:Key="Text.MergeConflictEditor.AcceptBoth.MineFirst" xml:space="preserve">First Mine, then Theirs</x:String>
542+
<x:String x:Key="Text.MergeConflictEditor.AcceptBoth.TheirsFirst" xml:space="preserve">First Theirs, then Mine</x:String>
543+
<x:String x:Key="Text.MergeConflictEditor.UseBoth" xml:space="preserve">USE BOTH</x:String>
544+
<x:String x:Key="Text.MergeConflictEditor.AllResolved" xml:space="preserve">All conflicts resolved</x:String>
545+
<x:String x:Key="Text.MergeConflictEditor.ConflictsRemaining" xml:space="preserve">{0} conflict(s) remaining</x:String>
546+
<x:String x:Key="Text.MergeConflictEditor.Mine" xml:space="preserve">MINE</x:String>
547+
<x:String x:Key="Text.MergeConflictEditor.NextConflict" xml:space="preserve">Next Conflict</x:String>
548+
<x:String x:Key="Text.MergeConflictEditor.PrevConflict" xml:space="preserve">Previous Conflict</x:String>
549+
<x:String x:Key="Text.MergeConflictEditor.Result" xml:space="preserve">RESULT</x:String>
550+
<x:String x:Key="Text.MergeConflictEditor.SaveAndStage" xml:space="preserve">SAVE &amp; STAGE</x:String>
551+
<x:String x:Key="Text.MergeConflictEditor.Theirs" xml:space="preserve">THEIRS</x:String>
552+
<x:String x:Key="Text.MergeConflictEditor.Title" xml:space="preserve">Merge Conflicts</x:String>
553+
<x:String x:Key="Text.MergeConflictEditor.UnsavedChanges" xml:space="preserve">Discard unsaved changes?</x:String>
554+
<x:String x:Key="Text.MergeConflictEditor.UseMine" xml:space="preserve">USE MINE</x:String>
555+
<x:String x:Key="Text.MergeConflictEditor.UseMine.Tip" xml:space="preserve">Resolve current conflict using Mine version</x:String>
556+
<x:String x:Key="Text.MergeConflictEditor.UseTheirs" xml:space="preserve">USE THEIRS</x:String>
557+
<x:String x:Key="Text.MergeConflictEditor.UseTheirs.Tip" xml:space="preserve">Resolve current conflict using Theirs version</x:String>
558+
<x:String x:Key="Text.MergeConflictEditor.Undo" xml:space="preserve">UNDO</x:String>
539559
<x:String x:Key="Text.MergeMultiple" xml:space="preserve">Merge (Multiple)</x:String>
540560
<x:String x:Key="Text.MergeMultiple.CommitChanges" xml:space="preserve">Commit all changes</x:String>
541561
<x:String x:Key="Text.MergeMultiple.Strategy" xml:space="preserve">Strategy:</x:String>
@@ -552,8 +572,7 @@
552572
<x:String x:Key="Text.Open.SystemDefaultEditor" xml:space="preserve">Default Editor (System)</x:String>
553573
<x:String x:Key="Text.OpenAppDataDir" xml:space="preserve">Open Data Storage Directory</x:String>
554574
<x:String x:Key="Text.OpenFile" xml:space="preserve">Open File</x:String>
555-
<x:String x:Key="Text.OpenInExternalMergeTool" xml:space="preserve">Open in Merge Tool</x:String>
556-
<x:String x:Key="Text.OpenInBuiltinMergeTool" xml:space="preserve">Open in Built-in Merge Tool</x:String>
575+
<x:String x:Key="Text.OpenInExternalMergeTool" xml:space="preserve">Open in External Merge Tool</x:String>
557576
<x:String x:Key="Text.Optional" xml:space="preserve">Optional.</x:String>
558577
<x:String x:Key="Text.PageTabBar.New" xml:space="preserve">Create New Tab</x:String>
559578
<x:String x:Key="Text.PageTabBar.Tab.Bookmark" xml:space="preserve">Bookmark</x:String>
@@ -875,24 +894,6 @@
875894
<x:String x:Key="Text.TagCM.DeleteMultiple" xml:space="preserve">Delete selected {0} tags...</x:String>
876895
<x:String x:Key="Text.TagCM.Merge" xml:space="preserve">Merge ${0}$ into ${1}$...</x:String>
877896
<x:String x:Key="Text.TagCM.Push" xml:space="preserve">Push ${0}$...</x:String>
878-
<x:String x:Key="Text.MergeConflictEditor.AcceptBoth.MineFirst" xml:space="preserve">First Mine, then Theirs</x:String>
879-
<x:String x:Key="Text.MergeConflictEditor.AcceptBoth.TheirsFirst" xml:space="preserve">First Theirs, then Mine</x:String>
880-
<x:String x:Key="Text.MergeConflictEditor.UseBoth" xml:space="preserve">USE BOTH</x:String>
881-
<x:String x:Key="Text.MergeConflictEditor.AllResolved" xml:space="preserve">All conflicts resolved</x:String>
882-
<x:String x:Key="Text.MergeConflictEditor.ConflictsRemaining" xml:space="preserve">{0} conflict(s) remaining</x:String>
883-
<x:String x:Key="Text.MergeConflictEditor.Mine" xml:space="preserve">MINE</x:String>
884-
<x:String x:Key="Text.MergeConflictEditor.NextConflict" xml:space="preserve">Next Conflict</x:String>
885-
<x:String x:Key="Text.MergeConflictEditor.PrevConflict" xml:space="preserve">Previous Conflict</x:String>
886-
<x:String x:Key="Text.MergeConflictEditor.Result" xml:space="preserve">RESULT</x:String>
887-
<x:String x:Key="Text.MergeConflictEditor.SaveAndStage" xml:space="preserve">SAVE &amp; STAGE</x:String>
888-
<x:String x:Key="Text.MergeConflictEditor.Theirs" xml:space="preserve">THEIRS</x:String>
889-
<x:String x:Key="Text.MergeConflictEditor.Title" xml:space="preserve">Merge Conflict - {0}</x:String>
890-
<x:String x:Key="Text.MergeConflictEditor.UnsavedChanges" xml:space="preserve">Discard unsaved changes?</x:String>
891-
<x:String x:Key="Text.MergeConflictEditor.UseMine" xml:space="preserve">USE MINE</x:String>
892-
<x:String x:Key="Text.MergeConflictEditor.UseMine.Tip" xml:space="preserve">Resolve current conflict using Mine version</x:String>
893-
<x:String x:Key="Text.MergeConflictEditor.UseTheirs" xml:space="preserve">USE THEIRS</x:String>
894-
<x:String x:Key="Text.MergeConflictEditor.UseTheirs.Tip" xml:space="preserve">Resolve current conflict using Theirs version</x:String>
895-
<x:String x:Key="Text.MergeConflictEditor.Undo" xml:space="preserve">UNDO</x:String>
896897
<x:String x:Key="Text.UpdateSubmodules" xml:space="preserve">Update Submodules</x:String>
897898
<x:String x:Key="Text.UpdateSubmodules.All" xml:space="preserve">All submodules</x:String>
898899
<x:String x:Key="Text.UpdateSubmodules.Init" xml:space="preserve">Initialize as needed</x:String>
@@ -936,8 +937,8 @@
936937
<x:String x:Key="Text.WorkingCopy.ConfirmCommitWithDetachedHead">You are creating commit on a detached HEAD. Do you want to continue?</x:String>
937938
<x:String x:Key="Text.WorkingCopy.ConfirmCommitWithFilter">You have staged {0} file(s) but only {1} file(s) displayed ({2} files are filtered out). Do you want to continue?</x:String>
938939
<x:String x:Key="Text.WorkingCopy.Conflicts" xml:space="preserve">CONFLICTS DETECTED</x:String>
939-
<x:String x:Key="Text.WorkingCopy.Conflicts.OpenBuiltinMergeTool" xml:space="preserve">OPEN MERGE TOOL</x:String>
940-
<x:String x:Key="Text.WorkingCopy.Conflicts.OpenExternalMergeTool" xml:space="preserve">OPEN EXTERNAL MERGETOOL</x:String>
940+
<x:String x:Key="Text.WorkingCopy.Conflicts.Merge" xml:space="preserve">MERGE</x:String>
941+
<x:String x:Key="Text.WorkingCopy.Conflicts.MergeExternal" xml:space="preserve">OPEN EXTERNAL MERGETOOL</x:String>
941942
<x:String x:Key="Text.WorkingCopy.Conflicts.OpenExternalMergeToolAllConflicts" xml:space="preserve">OPEN ALL CONFLICTS IN EXTERNAL MERGETOOL</x:String>
942943
<x:String x:Key="Text.WorkingCopy.Conflicts.Resolved" xml:space="preserve">FILE CONFLICTS ARE RESOLVED</x:String>
943944
<x:String x:Key="Text.WorkingCopy.Conflicts.UseMine" xml:space="preserve">USE MINE</x:String>

src/Resources/Locales/zh_CN.axaml

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,8 @@
9797
<x:String x:Key="Text.ChangeCM.CheckoutFirstParentRevision" xml:space="preserve">重置文件到上一版本</x:String>
9898
<x:String x:Key="Text.ChangeCM.CheckoutThisRevision" xml:space="preserve">重置文件到该版本</x:String>
9999
<x:String x:Key="Text.ChangeCM.GenerateCommitMessage" xml:space="preserve">生成提交信息</x:String>
100+
<x:String x:Key="Text.ChangeCM.Merge" xml:space="preserve">解决冲突(内部工具)</x:String>
101+
<x:String x:Key="Text.ChangeCM.MergeExternal" xml:space="preserve">解决冲突(外部工具)</x:String>
100102
<x:String x:Key="Text.ChangeDisplayMode" xml:space="preserve">切换变更显示模式</x:String>
101103
<x:String x:Key="Text.ChangeDisplayMode.Grid" xml:space="preserve">文件名+路径列表模式</x:String>
102104
<x:String x:Key="Text.ChangeDisplayMode.List" xml:space="preserve">全路径列表模式</x:String>
@@ -540,6 +542,22 @@
540542
<x:String x:Key="Text.Merge.Into" xml:space="preserve">目标分支 :</x:String>
541543
<x:String x:Key="Text.Merge.Mode" xml:space="preserve">合并方式 :</x:String>
542544
<x:String x:Key="Text.Merge.Source" xml:space="preserve">合并目标 :</x:String>
545+
<x:String x:Key="Text.MergeConflictEditor.AcceptBoth.MineFirst" xml:space="preserve">先应用 MINE 后 THEIRS</x:String>
546+
<x:String x:Key="Text.MergeConflictEditor.AcceptBoth.TheirsFirst" xml:space="preserve">先应用 THEIRS 后 MINE</x:String>
547+
<x:String x:Key="Text.MergeConflictEditor.UseBoth" xml:space="preserve">应用全部</x:String>
548+
<x:String x:Key="Text.MergeConflictEditor.AllResolved" xml:space="preserve">所有冲突已解决</x:String>
549+
<x:String x:Key="Text.MergeConflictEditor.ConflictsRemaining" xml:space="preserve">{0} 个冲突未解决</x:String>
550+
<x:String x:Key="Text.MergeConflictEditor.Mine" xml:space="preserve">MINE</x:String>
551+
<x:String x:Key="Text.MergeConflictEditor.NextConflict" xml:space="preserve">下一个冲突</x:String>
552+
<x:String x:Key="Text.MergeConflictEditor.PrevConflict" xml:space="preserve">上一个冲突</x:String>
553+
<x:String x:Key="Text.MergeConflictEditor.Result" xml:space="preserve">合并结果</x:String>
554+
<x:String x:Key="Text.MergeConflictEditor.SaveAndStage" xml:space="preserve">保存并暂存</x:String>
555+
<x:String x:Key="Text.MergeConflictEditor.Theirs" xml:space="preserve">THEIRS</x:String>
556+
<x:String x:Key="Text.MergeConflictEditor.Title" xml:space="preserve">合并冲突</x:String>
557+
<x:String x:Key="Text.MergeConflictEditor.UnsavedChanges" xml:space="preserve">放弃所有更改?</x:String>
558+
<x:String x:Key="Text.MergeConflictEditor.UseMine" xml:space="preserve">仅应用 MINE</x:String>
559+
<x:String x:Key="Text.MergeConflictEditor.UseTheirs" xml:space="preserve">仅应用 THEIRS</x:String>
560+
<x:String x:Key="Text.MergeConflictEditor.Undo" xml:space="preserve">撤销更改</x:String>
543561
<x:String x:Key="Text.MergeMultiple" xml:space="preserve">合并(多目标)</x:String>
544562
<x:String x:Key="Text.MergeMultiple.CommitChanges" xml:space="preserve">提交变化</x:String>
545563
<x:String x:Key="Text.MergeMultiple.Strategy" xml:space="preserve">合并策略 :</x:String>
@@ -921,7 +939,8 @@
921939
<x:String x:Key="Text.WorkingCopy.ConfirmCommitWithDetachedHead">您正在向一个游离的 HEAD 提交变更,是否继续提交?</x:String>
922940
<x:String x:Key="Text.WorkingCopy.ConfirmCommitWithFilter" xml:space="preserve">当前有 {0} 个文件在暂存区中,但仅显示了 {1} 个文件({2} 个文件被过滤掉了),是否继续提交?</x:String>
923941
<x:String x:Key="Text.WorkingCopy.Conflicts" xml:space="preserve">检测到冲突</x:String>
924-
<x:String x:Key="Text.WorkingCopy.Conflicts.OpenExternalMergeTool" xml:space="preserve">打开合并工具</x:String>
942+
<x:String x:Key="Text.WorkingCopy.Conflicts.Merge" xml:space="preserve">解决冲突</x:String>
943+
<x:String x:Key="Text.WorkingCopy.Conflicts.MergeExternal" xml:space="preserve">使用外部工具解决冲突</x:String>
925944
<x:String x:Key="Text.WorkingCopy.Conflicts.OpenExternalMergeToolAllConflicts" xml:space="preserve">打开合并工具解决冲突</x:String>
926945
<x:String x:Key="Text.WorkingCopy.Conflicts.Resolved" xml:space="preserve">文件冲突已解决</x:String>
927946
<x:String x:Key="Text.WorkingCopy.Conflicts.UseMine" xml:space="preserve">使用 MINE</x:String>

src/Resources/Locales/zh_TW.axaml

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,8 @@
9797
<x:String x:Key="Text.ChangeCM.CheckoutFirstParentRevision" xml:space="preserve">重設檔案到上一版本</x:String>
9898
<x:String x:Key="Text.ChangeCM.CheckoutThisRevision" xml:space="preserve">重設檔案為此版本</x:String>
9999
<x:String x:Key="Text.ChangeCM.GenerateCommitMessage" xml:space="preserve">產生提交訊息</x:String>
100+
<x:String x:Key="Text.ChangeCM.Merge" xml:space="preserve">解決衝突 (內建工具)</x:String>
101+
<x:String x:Key="Text.ChangeCM.MergeExternal" xml:space="preserve">解決衝突 (外部工具)</x:String>
100102
<x:String x:Key="Text.ChangeDisplayMode" xml:space="preserve">切換變更顯示模式</x:String>
101103
<x:String x:Key="Text.ChangeDisplayMode.Grid" xml:space="preserve">檔案名稱 + 路徑列表模式</x:String>
102104
<x:String x:Key="Text.ChangeDisplayMode.List" xml:space="preserve">全路徑列表模式</x:String>
@@ -540,6 +542,22 @@
540542
<x:String x:Key="Text.Merge.Into" xml:space="preserve">目標分支:</x:String>
541543
<x:String x:Key="Text.Merge.Mode" xml:space="preserve">合併方式:</x:String>
542544
<x:String x:Key="Text.Merge.Source" xml:space="preserve">合併來源:</x:String>
545+
<x:String x:Key="Text.MergeConflictEditor.AcceptBoth.MineFirst" xml:space="preserve">先應用 MINE,再應用 THEIRS</x:String>
546+
<x:String x:Key="Text.MergeConflictEditor.AcceptBoth.TheirsFirst" xml:space="preserve">先應用 THEIRS,再應用 MINE</x:String>
547+
<x:String x:Key="Text.MergeConflictEditor.UseBoth" xml:space="preserve">應用兩側</x:String>
548+
<x:String x:Key="Text.MergeConflictEditor.AllResolved" xml:space="preserve">所有衝突已經解決</x:String>
549+
<x:String x:Key="Text.MergeConflictEditor.ConflictsRemaining" xml:space="preserve">{0} 個衝突尚未解決</x:String>
550+
<x:String x:Key="Text.MergeConflictEditor.Mine" xml:space="preserve">MINE</x:String>
551+
<x:String x:Key="Text.MergeConflictEditor.NextConflict" xml:space="preserve">下一個衝突</x:String>
552+
<x:String x:Key="Text.MergeConflictEditor.PrevConflict" xml:space="preserve">上一個衝突</x:String>
553+
<x:String x:Key="Text.MergeConflictEditor.Result" xml:space="preserve">合併结果</x:String>
554+
<x:String x:Key="Text.MergeConflictEditor.SaveAndStage" xml:space="preserve">保存並暫存</x:String>
555+
<x:String x:Key="Text.MergeConflictEditor.Theirs" xml:space="preserve">THEIRS</x:String>
556+
<x:String x:Key="Text.MergeConflictEditor.Title" xml:space="preserve">解決衝突</x:String>
557+
<x:String x:Key="Text.MergeConflictEditor.UnsavedChanges" xml:space="preserve">放棄所有更改?</x:String>
558+
<x:String x:Key="Text.MergeConflictEditor.UseMine" xml:space="preserve">僅應用 MINE</x:String>
559+
<x:String x:Key="Text.MergeConflictEditor.UseTheirs" xml:space="preserve">僅應用 THEIRS</x:String>
560+
<x:String x:Key="Text.MergeConflictEditor.Undo" xml:space="preserve">撤銷更改</x:String>
543561
<x:String x:Key="Text.MergeMultiple" xml:space="preserve">合併 (多個來源)</x:String>
544562
<x:String x:Key="Text.MergeMultiple.CommitChanges" xml:space="preserve">提交變更</x:String>
545563
<x:String x:Key="Text.MergeMultiple.Strategy" xml:space="preserve">合併策略:</x:String>
@@ -921,7 +939,8 @@
921939
<x:String x:Key="Text.WorkingCopy.ConfirmCommitWithDetachedHead">您正在向一个分離狀態的 HEAD 提交變更,您確定要繼續提交嗎?</x:String>
922940
<x:String x:Key="Text.WorkingCopy.ConfirmCommitWithFilter" xml:space="preserve">您已暫存 {0} 個檔案,但只顯示 {1} 個檔案 ({2} 個檔案被篩選器隱藏)。您確定要繼續提交嗎?</x:String>
923941
<x:String x:Key="Text.WorkingCopy.Conflicts" xml:space="preserve">偵測到衝突</x:String>
924-
<x:String x:Key="Text.WorkingCopy.Conflicts.OpenExternalMergeTool" xml:space="preserve">使用外部合併工具開啟</x:String>
942+
<x:String x:Key="Text.WorkingCopy.Conflicts.Merge" xml:space="preserve">解決衝突</x:String>
943+
<x:String x:Key="Text.WorkingCopy.Conflicts.MergeExternal" xml:space="preserve">使用外部工具解決衝突</x:String>
925944
<x:String x:Key="Text.WorkingCopy.Conflicts.OpenExternalMergeToolAllConflicts" xml:space="preserve">使用外部合併工具開啟</x:String>
926945
<x:String x:Key="Text.WorkingCopy.Conflicts.Resolved" xml:space="preserve">檔案衝突已解決</x:String>
927946
<x:String x:Key="Text.WorkingCopy.Conflicts.UseMine" xml:space="preserve">使用我方版本 (ours)</x:String>

src/ViewModels/Conflict.cs

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -54,17 +54,12 @@ public bool IsResolved
5454
private set;
5555
} = false;
5656

57-
public bool CanUseExternalMergeTool
57+
public bool CanMerge
5858
{
5959
get;
6060
private set;
6161
} = false;
6262

63-
public bool CanUseBuiltinMergeTool
64-
{
65-
get => CanUseExternalMergeTool;
66-
}
67-
6863
public string FilePath
6964
{
7065
get => _change.Path;
@@ -79,7 +74,7 @@ public Conflict(Repository repo, WorkingCopy wc, Models.Change change)
7974
var isSubmodule = repo.Submodules.Find(x => x.Path.Equals(change.Path, StringComparison.Ordinal)) != null;
8075
if (!isSubmodule && (_change.ConflictReason is Models.ConflictReason.BothAdded or Models.ConflictReason.BothModified))
8176
{
82-
CanUseExternalMergeTool = true;
77+
CanMerge = true;
8378
IsResolved = new Commands.IsConflictResolved(repo.FullPath, change).GetResult();
8479
}
8580

@@ -123,14 +118,20 @@ public async Task UseMineAsync()
123118
await _wc.UseMineAsync([_change]);
124119
}
125120

126-
public async Task OpenExternalMergeToolAsync()
121+
public async Task MergeAsync()
127122
{
128-
await _wc.UseExternalMergeToolAsync(_change);
123+
if (CanMerge)
124+
{
125+
var ctx = new MergeConflictEditor(_repo, _change.Path);
126+
await ctx.LoadAsync();
127+
await App.ShowDialog(ctx);
128+
}
129129
}
130130

131-
public MergeConflictEditor CreateBuiltinMergeViewModel()
131+
public async Task MergeExternalAsync()
132132
{
133-
return new MergeConflictEditor(_repo, _change.Path);
133+
if (CanMerge)
134+
await _wc.UseExternalMergeToolAsync(_change);
134135
}
135136

136137
private Repository _repo = null;

0 commit comments

Comments
 (0)