@@ -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