1313namespace SourceGit . ViewModels
1414{
1515 public record InteractiveRebasePrefill ( string SHA , Models . InteractiveRebaseAction Action ) ;
16+ public record InteractiveRebaseReorderItem ( string Key , InteractiveRebaseItem Item ) ;
1617
1718 public class InteractiveRebaseItem : ObservableObject
1819 {
@@ -172,7 +173,7 @@ public InteractiveRebase(Repository repo, Models.Commit on, InteractiveRebasePre
172173 . ConfigureAwait ( false ) ;
173174
174175 var list = new List < InteractiveRebaseItem > ( ) ;
175- var needReorder = new Dictionary < string , InteractiveRebaseItem > ( ) ;
176+ var needReorder = new List < InteractiveRebaseReorderItem > ( ) ;
176177 for ( var i = 0 ; i < commits . Count ; i ++ )
177178 {
178179 var c = commits [ i ] ;
@@ -184,25 +185,25 @@ public InteractiveRebase(Repository repo, Models.Commit on, InteractiveRebasePre
184185 if ( subject . StartsWith ( "fixup! " , StringComparison . Ordinal ) )
185186 {
186187 item . Action = Models . InteractiveRebaseAction . Fixup ;
187- needReorder . Add ( subject . Substring ( 7 ) , item ) ;
188+ needReorder . Add ( new ( subject . Substring ( 7 ) , item ) ) ;
188189 continue ;
189190 }
190191
191192 if ( subject . StartsWith ( "squash! " , StringComparison . Ordinal ) )
192193 {
193194 item . Action = Models . InteractiveRebaseAction . Squash ;
194- needReorder . Add ( subject . Substring ( 8 ) , item ) ;
195+ needReorder . Add ( new ( subject . Substring ( 8 ) , item ) ) ;
195196 continue ;
196197 }
197198 }
198199
199- var reordered = new List < string > ( ) ;
200- foreach ( var ( k , v ) in needReorder )
200+ var reordered = new List < InteractiveRebaseReorderItem > ( ) ;
201+ foreach ( var o in needReorder )
201202 {
202- if ( subject . StartsWith ( k , StringComparison . Ordinal ) )
203+ if ( subject . StartsWith ( o . Key , StringComparison . Ordinal ) )
203204 {
204- list . Add ( v ) ;
205- reordered . Add ( k ) ;
205+ list . Add ( o . Item ) ;
206+ reordered . Add ( o ) ;
206207 }
207208 }
208209
@@ -212,14 +213,14 @@ public InteractiveRebase(Repository repo, Models.Commit on, InteractiveRebasePre
212213 list . Add ( item ) ;
213214 }
214215
215- foreach ( var ( _ , v ) in needReorder )
216+ foreach ( var v in needReorder )
216217 {
217218 for ( var i = 0 ; i < list . Count ; i ++ )
218219 {
219- if ( v . OriginalOrder > list [ i ] . OriginalOrder )
220+ if ( v . Item . OriginalOrder > list [ i ] . OriginalOrder )
220221 {
221- v . Action = Models . InteractiveRebaseAction . Pick ; // For safety, reset to pick if the target commit is not found
222- list . Insert ( i , v ) ;
222+ v . Item . Action = Models . InteractiveRebaseAction . Pick ; // For safety, reset to pick if the target commit is not found
223+ list . Insert ( i , v . Item ) ;
223224 break ;
224225 }
225226 }
0 commit comments