@@ -1634,13 +1634,14 @@ private async void StageChanges(List<Models.Change> changes, Models.Change next)
1634
1634
foreach ( var c in changes )
1635
1635
paths . Add ( c . Path ) ;
1636
1636
1637
- for ( int i = 0 ; i < count ; i += 10 )
1637
+ for ( int i = 0 ; i < count ; i += 32 )
1638
1638
{
1639
- var step = paths . GetRange ( i , Math . Min ( 10 , count - i ) ) ;
1639
+ var step = paths . GetRange ( i , Math . Min ( 32 , count - i ) ) ;
1640
1640
await Task . Run ( ( ) => new Commands . Add ( _repo . FullPath , step ) . Use ( log ) . Exec ( ) ) ;
1641
1641
}
1642
1642
}
1643
1643
log . Complete ( ) ;
1644
+
1644
1645
_repo . MarkWorkingCopyDirtyManually ( ) ;
1645
1646
_repo . SetWatcherEnabled ( true ) ;
1646
1647
IsStaging = false ;
@@ -1664,15 +1665,26 @@ private async void UnstageChanges(List<Models.Change> changes, Models.Change nex
1664
1665
log . AppendLine ( "$ git update-index --index-info " ) ;
1665
1666
await Task . Run ( ( ) => new Commands . UnstageChangesForAmend ( _repo . FullPath , changes ) . Exec ( ) ) ;
1666
1667
}
1667
- else if ( count == _staged . Count )
1668
+ else if ( Native . OS . GitVersion >= Models . GitVersions . RESTORE_WITH_PATHSPECFILE )
1668
1669
{
1669
- await Task . Run ( ( ) => new Commands . Restore ( _repo . FullPath , true ) . Use ( log ) . Exec ( ) ) ;
1670
+ var paths = new List < string > ( ) ;
1671
+ foreach ( var c in changes )
1672
+ {
1673
+ paths . Add ( c . Path ) ;
1674
+ if ( c . Index == Models . ChangeState . Renamed )
1675
+ paths . Add ( c . OriginalPath ) ;
1676
+ }
1677
+
1678
+ var tmpFile = Path . GetTempFileName ( ) ;
1679
+ File . WriteAllLines ( tmpFile , paths ) ;
1680
+ await Task . Run ( ( ) => new Commands . Restore ( _repo . FullPath , tmpFile , "--staged" ) . Use ( log ) . Exec ( ) ) ;
1681
+ File . Delete ( tmpFile ) ;
1670
1682
}
1671
1683
else
1672
1684
{
1673
- for ( int i = 0 ; i < count ; i += 10 )
1685
+ for ( int i = 0 ; i < count ; i += 32 )
1674
1686
{
1675
- var step = changes . GetRange ( i , Math . Min ( 10 , count - i ) ) ;
1687
+ var step = changes . GetRange ( i , Math . Min ( 32 , count - i ) ) ;
1676
1688
var files = new List < string > ( ) ;
1677
1689
foreach ( var c in step )
1678
1690
{
@@ -1685,6 +1697,7 @@ private async void UnstageChanges(List<Models.Change> changes, Models.Change nex
1685
1697
}
1686
1698
}
1687
1699
log . Complete ( ) ;
1700
+
1688
1701
_repo . MarkWorkingCopyDirtyManually ( ) ;
1689
1702
_repo . SetWatcherEnabled ( true ) ;
1690
1703
IsUnstaging = false ;
0 commit comments