Skip to content

Commit 94eb5db

Browse files
committed
feature: supports to select two branches/tags to compare them
Signed-off-by: leo <[email protected]>
1 parent 41bbefb commit 94eb5db

File tree

5 files changed

+62
-20
lines changed

5 files changed

+62
-20
lines changed

src/Resources/Locales/en_US.axaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@
5555
<x:String x:Key="Text.Blame.BlameOnPreviousRevision" xml:space="preserve">Blame on Previous Revision</x:String>
5656
<x:String x:Key="Text.Blame.TypeNotSupported" xml:space="preserve">BLAME ON THIS FILE IS NOT SUPPORTED!!!</x:String>
5757
<x:String x:Key="Text.BranchCM.Checkout" xml:space="preserve">Checkout ${0}$...</x:String>
58+
<x:String x:Key="Text.BranchCM.CompareTwo" xml:space="preserve">Compare selected 2 branches</x:String>
5859
<x:String x:Key="Text.BranchCM.CompareWithCurrent" xml:space="preserve">Compare with ${0}$</x:String>
5960
<x:String x:Key="Text.BranchCM.CompareWithWorktree" xml:space="preserve">Compare with Worktree</x:String>
6061
<x:String x:Key="Text.BranchCM.CopyName" xml:space="preserve">Copy Branch Name</x:String>
@@ -853,6 +854,7 @@
853854
<x:String x:Key="Text.Sure" xml:space="preserve">OK</x:String>
854855
<x:String x:Key="Text.Tag.Tagger" xml:space="preserve">TAGGER</x:String>
855856
<x:String x:Key="Text.Tag.Time" xml:space="preserve">TIME</x:String>
857+
<x:String x:Key="Text.TagCM.CompareTwo" xml:space="preserve">Compare 2 tags</x:String>
856858
<x:String x:Key="Text.TagCM.CompareWithHead" xml:space="preserve">Compare with HEAD</x:String>
857859
<x:String x:Key="Text.TagCM.Copy.Message" xml:space="preserve">Message</x:String>
858860
<x:String x:Key="Text.TagCM.Copy.Name" xml:space="preserve">Name</x:String>

src/Resources/Locales/zh_CN.axaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@
5959
<x:String x:Key="Text.Blame.BlameOnPreviousRevision" xml:space="preserve">对当前版本的前一版本执行逐行追溯操作</x:String>
6060
<x:String x:Key="Text.Blame.TypeNotSupported" xml:space="preserve">选中文件不支持该操作!!!</x:String>
6161
<x:String x:Key="Text.BranchCM.Checkout" xml:space="preserve">检出(checkout) ${0}$...</x:String>
62+
<x:String x:Key="Text.BranchCM.CompareTwo" xml:space="preserve">比较选中的 2 个分支</x:String>
6263
<x:String x:Key="Text.BranchCM.CompareWithCurrent" xml:space="preserve">与当前 ${0}$ 比较</x:String>
6364
<x:String x:Key="Text.BranchCM.CompareWithWorktree" xml:space="preserve">与本地工作树比较</x:String>
6465
<x:String x:Key="Text.BranchCM.CopyName" xml:space="preserve">复制分支名</x:String>
@@ -857,6 +858,7 @@
857858
<x:String x:Key="Text.Sure" xml:space="preserve">确 定</x:String>
858859
<x:String x:Key="Text.Tag.Tagger" xml:space="preserve">创建者</x:String>
859860
<x:String x:Key="Text.Tag.Time" xml:space="preserve">创建时间</x:String>
861+
<x:String x:Key="Text.TagCM.CompareTwo" xml:space="preserve">比较 2 个标签</x:String>
860862
<x:String x:Key="Text.TagCM.CompareWithHead" xml:space="preserve">与当前 HEAD 比较</x:String>
861863
<x:String x:Key="Text.TagCM.Copy.Message" xml:space="preserve">标签信息</x:String>
862864
<x:String x:Key="Text.TagCM.Copy.Name" xml:space="preserve">标签名</x:String>

src/Resources/Locales/zh_TW.axaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@
5959
<x:String x:Key="Text.Blame.BlameOnPreviousRevision" xml:space="preserve">對上一個版本執行逐行溯源</x:String>
6060
<x:String x:Key="Text.Blame.TypeNotSupported" xml:space="preserve">所選擇的檔案不支援該操作!</x:String>
6161
<x:String x:Key="Text.BranchCM.Checkout" xml:space="preserve">簽出 (checkout) ${0}$...</x:String>
62+
<x:String x:Key="Text.BranchCM.CompareTwo" xml:space="preserve">比較所選的 2 個分支</x:String>
6263
<x:String x:Key="Text.BranchCM.CompareWithCurrent" xml:space="preserve">與目前 ${0}$ 比較</x:String>
6364
<x:String x:Key="Text.BranchCM.CompareWithWorktree" xml:space="preserve">與本機工作區比較</x:String>
6465
<x:String x:Key="Text.BranchCM.CopyName" xml:space="preserve">複製分支名稱</x:String>
@@ -857,6 +858,7 @@
857858
<x:String x:Key="Text.Sure" xml:space="preserve">確 定</x:String>
858859
<x:String x:Key="Text.Tag.Tagger" xml:space="preserve">建立者</x:String>
859860
<x:String x:Key="Text.Tag.Time" xml:space="preserve">建立時間</x:String>
861+
<x:String x:Key="Text.TagCM.CompareTwo" xml:space="preserve">比較 2 個標籤</x:String>
860862
<x:String x:Key="Text.TagCM.CompareWithHead" xml:space="preserve">與目前 HEAD 比較</x:String>
861863
<x:String x:Key="Text.TagCM.Copy.Message" xml:space="preserve">標籤訊息</x:String>
862864
<x:String x:Key="Text.TagCM.Copy.Name" xml:space="preserve">標籤名稱</x:String>

src/Views/BranchTree.axaml.cs

Lines changed: 37 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -517,32 +517,50 @@ private void OnTreeContextRequested(object _1, ContextRequestedEventArgs _2)
517517
var menu = branch.IsLocal ? CreateContextMenuForLocalBranch(repo, branch) : CreateContextMenuForRemoteBranch(repo, branch);
518518
menu.Open(this);
519519
}
520-
else if (branches.Find(x => x.IsCurrent) == null)
520+
else
521521
{
522522
var menu = new ContextMenu();
523523

524-
var mergeMulti = new MenuItem();
525-
mergeMulti.Header = App.Text("BranchCM.MergeMultiBranches", branches.Count);
526-
mergeMulti.Icon = App.CreateMenuIcon("Icons.Merge");
527-
mergeMulti.Click += (_, ev) =>
524+
if (branches.Count == 2)
528525
{
529-
repo.MergeMultipleBranches(branches);
530-
ev.Handled = true;
531-
};
532-
menu.Items.Add(mergeMulti);
533-
menu.Items.Add(new MenuItem() { Header = "-" });
526+
var compare = new MenuItem();
527+
compare.Header = App.Text("BranchCM.CompareTwo");
528+
compare.Icon = App.CreateMenuIcon("Icons.Compare");
529+
compare.Click += (_, ev) =>
530+
{
531+
App.ShowWindow(new ViewModels.BranchCompare(repo.FullPath, branches[0], branches[1]));
532+
ev.Handled = true;
533+
};
534+
menu.Items.Add(compare);
535+
}
534536

535-
var deleteMulti = new MenuItem();
536-
deleteMulti.Header = App.Text("BranchCM.DeleteMultiBranches", branches.Count);
537-
deleteMulti.Icon = App.CreateMenuIcon("Icons.Clear");
538-
deleteMulti.Click += (_, ev) =>
537+
if (branches.Find(x => x.IsCurrent) == null)
539538
{
540-
repo.DeleteMultipleBranches(branches, branches[0].IsLocal);
541-
ev.Handled = true;
542-
};
543-
menu.Items.Add(deleteMulti);
539+
var mergeMulti = new MenuItem();
540+
mergeMulti.Header = App.Text("BranchCM.MergeMultiBranches", branches.Count);
541+
mergeMulti.Icon = App.CreateMenuIcon("Icons.Merge");
542+
mergeMulti.Click += (_, ev) =>
543+
{
544+
repo.MergeMultipleBranches(branches);
545+
ev.Handled = true;
546+
};
544547

545-
menu.Open(this);
548+
var deleteMulti = new MenuItem();
549+
deleteMulti.Header = App.Text("BranchCM.DeleteMultiBranches", branches.Count);
550+
deleteMulti.Icon = App.CreateMenuIcon("Icons.Clear");
551+
deleteMulti.Click += (_, ev) =>
552+
{
553+
repo.DeleteMultipleBranches(branches, branches[0].IsLocal);
554+
ev.Handled = true;
555+
};
556+
557+
menu.Items.Add(mergeMulti);
558+
menu.Items.Add(new MenuItem() { Header = "-" });
559+
menu.Items.Add(deleteMulti);
560+
}
561+
562+
if (menu.Items.Count > 0)
563+
menu.Open(this);
546564
}
547565
}
548566

src/Views/TagsView.axaml.cs

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -356,6 +356,25 @@ private void OnTagsContextMenuRequested(object sender, ContextRequestedEventArgs
356356
}
357357
else if (selected.Count > 0)
358358
{
359+
var menu = new ContextMenu();
360+
361+
if (selected.Count == 2)
362+
{
363+
var compare = new MenuItem();
364+
compare.Header = App.Text("TagCM.CompareTwo");
365+
compare.Icon = App.CreateMenuIcon("Icons.Compare");
366+
compare.Click += (_, ev) =>
367+
{
368+
var (based, to) = (selected[0], selected[1]);
369+
if (based.CreatorDate > to.CreatorDate)
370+
(based, to) = (to, based);
371+
372+
App.ShowWindow(new ViewModels.BranchCompare(repo.FullPath, based, to));
373+
ev.Handled = true;
374+
};
375+
menu.Items.Add(compare);
376+
}
377+
359378
var deleteMultiple = new MenuItem();
360379
deleteMultiple.Header = App.Text("TagCM.DeleteMultiple", selected.Count);
361380
deleteMultiple.Icon = App.CreateMenuIcon("Icons.Clear");
@@ -367,7 +386,6 @@ private void OnTagsContextMenuRequested(object sender, ContextRequestedEventArgs
367386
ev.Handled = true;
368387
};
369388

370-
var menu = new ContextMenu();
371389
menu.Items.Add(deleteMultiple);
372390
menu.Open(listBox);
373391
}

0 commit comments

Comments
 (0)