Skip to content

Commit addbb19

Browse files
committed
feature: add context menu items to revision changes to reset (checkout) selected file to this revision or to it's first parent file version (#359)
1 parent eb56de2 commit addbb19

File tree

4 files changed

+33
-1
lines changed

4 files changed

+33
-1
lines changed

src/Resources/Locales/en_US.axaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,8 @@
6464
<x:String x:Key="Text.BranchCompare" xml:space="preserve">Branch Compare</x:String>
6565
<x:String x:Key="Text.Bytes" xml:space="preserve">Bytes</x:String>
6666
<x:String x:Key="Text.Cancel" xml:space="preserve">CANCEL</x:String>
67+
<x:String x:Key="Text.ChangeCM.CheckoutThisRevision" xml:space="preserve">Reset to This Revision</x:String>
68+
<x:String x:Key="Text.ChangeCM.CheckoutFirstParentRevision" xml:space="preserve">Reset to Parent Revision</x:String>
6769
<x:String x:Key="Text.ChangeDisplayMode" xml:space="preserve">CHANGE DISPLAY MODE</x:String>
6870
<x:String x:Key="Text.ChangeDisplayMode.Grid" xml:space="preserve">Show as File and Dir List</x:String>
6971
<x:String x:Key="Text.ChangeDisplayMode.List" xml:space="preserve">Show as Path List</x:String>

src/Resources/Locales/zh_CN.axaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,8 @@
6767
<x:String x:Key="Text.BranchCompare" xml:space="preserve">分支比较</x:String>
6868
<x:String x:Key="Text.Bytes" xml:space="preserve">字节</x:String>
6969
<x:String x:Key="Text.Cancel" xml:space="preserve">取 消</x:String>
70+
<x:String x:Key="Text.ChangeCM.CheckoutThisRevision" xml:space="preserve">重置文件到该版本</x:String>
71+
<x:String x:Key="Text.ChangeCM.CheckoutFirstParentRevision" xml:space="preserve">重置文件到上一版本</x:String>
7072
<x:String x:Key="Text.ChangeDisplayMode" xml:space="preserve">切换变更显示模式</x:String>
7173
<x:String x:Key="Text.ChangeDisplayMode.Grid" xml:space="preserve">文件名+路径列表模式</x:String>
7274
<x:String x:Key="Text.ChangeDisplayMode.List" 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
@@ -67,6 +67,8 @@
6767
<x:String x:Key="Text.BranchCompare" xml:space="preserve">分支比較</x:String>
6868
<x:String x:Key="Text.Bytes" xml:space="preserve">位元組</x:String>
6969
<x:String x:Key="Text.Cancel" xml:space="preserve">取 消</x:String>
70+
<x:String x:Key="Text.ChangeCM.CheckoutThisRevision" xml:space="preserve">重置檔案到該版本</x:String>
71+
<x:String x:Key="Text.ChangeCM.CheckoutFirstParentRevision" xml:space="preserve">重置檔案到上一版本</x:String>
7072
<x:String x:Key="Text.ChangeDisplayMode" xml:space="preserve">切換變更顯示模式</x:String>
7173
<x:String x:Key="Text.ChangeDisplayMode.Grid" xml:space="preserve">檔名+路徑列表模式</x:String>
7274
<x:String x:Key="Text.ChangeDisplayMode.List" xml:space="preserve">全路徑列表模式</x:String>

src/ViewModels/CommitDetail.cs

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -260,6 +260,33 @@ public ContextMenu CreateChangeContextMenu(Models.Change change)
260260
ev.Handled = true;
261261
};
262262
menu.Items.Add(diffWithMerger);
263+
menu.Items.Add(new MenuItem { Header = "-" });
264+
265+
if (File.Exists(Path.Combine(_repo.FullPath, change.Path)))
266+
{
267+
var resetToThisRevision = new MenuItem();
268+
resetToThisRevision.Header = App.Text("ChangeCM.CheckoutThisRevision");
269+
resetToThisRevision.Icon = App.CreateMenuIcon("Icons.Undo");
270+
resetToThisRevision.Click += (_, ev) =>
271+
{
272+
new Commands.Checkout(_repo.FullPath).FileWithRevision(change.Path, $"{_commit.SHA}");
273+
ev.Handled = true;
274+
};
275+
276+
var resetToFirstParent = new MenuItem();
277+
resetToFirstParent.Header = App.Text("ChangeCM.CheckoutFirstParentRevision");
278+
resetToFirstParent.Icon = App.CreateMenuIcon("Icons.Undo");
279+
resetToFirstParent.IsEnabled = _commit.Parents.Count > 0 && change.Index != Models.ChangeState.Added;
280+
resetToFirstParent.Click += (_, ev) =>
281+
{
282+
new Commands.Checkout(_repo.FullPath).FileWithRevision(change.Path, $"{_commit.SHA}~1");
283+
ev.Handled = true;
284+
};
285+
286+
menu.Items.Add(resetToThisRevision);
287+
menu.Items.Add(resetToFirstParent);
288+
menu.Items.Add(new MenuItem { Header = "-" });
289+
}
263290

264291
if (change.Index != Models.ChangeState.Deleted)
265292
{
@@ -294,7 +321,6 @@ public ContextMenu CreateChangeContextMenu(Models.Change change)
294321
ev.Handled = true;
295322
};
296323

297-
menu.Items.Add(new MenuItem { Header = "-" });
298324
menu.Items.Add(history);
299325
menu.Items.Add(blame);
300326
menu.Items.Add(explore);

0 commit comments

Comments
 (0)