Skip to content

Commit 8c9e8e5

Browse files
committed
Reset to Parent Revision
* support reset to parent revision for Added files too * support reset to parent revision in Files tab * support reset to parent revision in Changes - now supports Renamings too now it behaves more like git-extensions
1 parent 089f24b commit 8c9e8e5

File tree

2 files changed

+43
-23
lines changed

2 files changed

+43
-23
lines changed

src/Commands/Checkout.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ public bool UseMine(List<string> files)
5858

5959
public bool FileWithRevision(string file, string revision)
6060
{
61-
Args = $"checkout {revision} -- \"{file}\"";
61+
Args = $"checkout --no-overlay {revision} -- \"{file}\"";
6262
return Exec();
6363
}
6464

src/ViewModels/CommitDetail.cs

Lines changed: 42 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
using System;
22
using System.Collections.Generic;
33
using System.IO;
4+
using System.Linq;
45
using System.Text.RegularExpressions;
56
using System.Threading.Tasks;
67

@@ -270,25 +271,6 @@ public ContextMenu CreateChangeContextMenu(Models.Change change)
270271
var fullPath = Path.Combine(_repo.FullPath, change.Path);
271272
if (File.Exists(fullPath))
272273
{
273-
var resetToThisRevision = new MenuItem();
274-
resetToThisRevision.Header = App.Text("ChangeCM.CheckoutThisRevision");
275-
resetToThisRevision.Icon = App.CreateMenuIcon("Icons.File.Checkout");
276-
resetToThisRevision.Click += (_, ev) =>
277-
{
278-
new Commands.Checkout(_repo.FullPath).FileWithRevision(change.Path, $"{_commit.SHA}");
279-
ev.Handled = true;
280-
};
281-
282-
var resetToFirstParent = new MenuItem();
283-
resetToFirstParent.Header = App.Text("ChangeCM.CheckoutFirstParentRevision");
284-
resetToFirstParent.Icon = App.CreateMenuIcon("Icons.File.Checkout");
285-
resetToFirstParent.IsEnabled = _commit.Parents.Count > 0 && change.Index != Models.ChangeState.Added && change.Index != Models.ChangeState.Renamed;
286-
resetToFirstParent.Click += (_, ev) =>
287-
{
288-
new Commands.Checkout(_repo.FullPath).FileWithRevision(change.Path, $"{_commit.SHA}~1");
289-
ev.Handled = true;
290-
};
291-
292274
var explore = new MenuItem();
293275
explore.Header = App.Text("RevealFile");
294276
explore.Icon = App.CreateMenuIcon("Icons.Explore");
@@ -298,8 +280,6 @@ public ContextMenu CreateChangeContextMenu(Models.Change change)
298280
ev.Handled = true;
299281
};
300282

301-
menu.Items.Add(resetToThisRevision);
302-
menu.Items.Add(resetToFirstParent);
303283
menu.Items.Add(new MenuItem { Header = "-" });
304284
menu.Items.Add(explore);
305285
menu.Items.Add(new MenuItem { Header = "-" });
@@ -332,6 +312,29 @@ public ContextMenu CreateChangeContextMenu(Models.Change change)
332312
menu.Items.Add(new MenuItem { Header = "-" });
333313
}
334314

315+
var resetToThisRevision = new MenuItem();
316+
resetToThisRevision.Header = App.Text("ChangeCM.CheckoutThisRevision");
317+
resetToThisRevision.Icon = App.CreateMenuIcon("Icons.File.Checkout");
318+
resetToThisRevision.Click += (_, ev) =>
319+
{
320+
new Commands.Checkout(_repo.FullPath).FileWithRevision(change.Path, $"{_commit.SHA}");
321+
ev.Handled = true;
322+
};
323+
324+
var resetToFirstParent = new MenuItem();
325+
resetToFirstParent.Header = App.Text("ChangeCM.CheckoutFirstParentRevision");
326+
resetToFirstParent.Icon = App.CreateMenuIcon("Icons.File.Checkout");
327+
resetToFirstParent.IsEnabled = _commit.Parents.Count > 0;
328+
resetToFirstParent.Click += (_, ev) =>
329+
{
330+
if (change.Index == Models.ChangeState.Renamed)
331+
{
332+
new Commands.Checkout(_repo.FullPath).FileWithRevision(change.OriginalPath, $"{_commit.SHA}~1");
333+
}
334+
new Commands.Checkout(_repo.FullPath).FileWithRevision(change.Path, $"{_commit.SHA}~1");
335+
ev.Handled = true;
336+
};
337+
335338
var copyPath = new MenuItem();
336339
copyPath.Header = App.Text("CopyPath");
337340
copyPath.Icon = App.CreateMenuIcon("Icons.Copy");
@@ -340,7 +343,6 @@ public ContextMenu CreateChangeContextMenu(Models.Change change)
340343
App.CopyText(change.Path);
341344
ev.Handled = true;
342345
};
343-
menu.Items.Add(copyPath);
344346

345347
var copyFileName = new MenuItem();
346348
copyFileName.Header = App.Text("CopyFileName");
@@ -350,6 +352,11 @@ public ContextMenu CreateChangeContextMenu(Models.Change change)
350352
App.CopyText(Path.GetFileName(change.Path));
351353
e.Handled = true;
352354
};
355+
356+
menu.Items.Add(resetToThisRevision);
357+
menu.Items.Add(resetToFirstParent);
358+
menu.Items.Add(new MenuItem { Header = "-" });
359+
menu.Items.Add(copyPath);
353360
menu.Items.Add(copyFileName);
354361

355362
return menu;
@@ -369,6 +376,18 @@ public ContextMenu CreateRevisionFileContextMenu(Models.Object file)
369376
ev.Handled = true;
370377
};
371378

379+
var resetToFirstParent = new MenuItem();
380+
resetToFirstParent.Header = App.Text("ChangeCM.CheckoutFirstParentRevision");
381+
resetToFirstParent.Icon = App.CreateMenuIcon("Icons.File.Checkout");
382+
var fileInChanges = _changes.Find(x => x.Path == file.Path);
383+
var fileIndex = fileInChanges?.Index;
384+
resetToFirstParent.IsEnabled = _commit.Parents.Count > 0 && fileIndex != Models.ChangeState.Renamed;
385+
resetToFirstParent.Click += (_, ev) =>
386+
{
387+
new Commands.Checkout(_repo.FullPath).FileWithRevision(file.Path, $"{_commit.SHA}~1");
388+
ev.Handled = true;
389+
};
390+
372391
var explore = new MenuItem();
373392
explore.Header = App.Text("RevealFile");
374393
explore.Icon = App.CreateMenuIcon("Icons.Explore");
@@ -448,6 +467,7 @@ public ContextMenu CreateRevisionFileContextMenu(Models.Object file)
448467

449468
var menu = new ContextMenu();
450469
menu.Items.Add(resetToThisRevision);
470+
menu.Items.Add(resetToFirstParent);
451471
menu.Items.Add(new MenuItem() { Header = "-" });
452472
menu.Items.Add(explore);
453473
menu.Items.Add(saveAs);

0 commit comments

Comments
 (0)