@@ -1565,13 +1565,16 @@ ClassMethod RunGitCommandWithInput(command As %String, inFile As %String = "", O
1565
1565
1566
1566
set newArgs ($increment (newArgs )) = command
1567
1567
1568
- // defining variables for if statement use later
1569
- set syncIris = 0
1568
+ set syncIrisWithDiff = 0 // whether IRIS needs to be synced with repo file changes using diff output
1569
+ set syncIrisWithCommand = 0 // // whether IRIS needs to be synced with repo file changes using command output
1570
1570
set diffBase = " "
1571
1571
set diffCompare = " "
1572
1572
set pullOriginIndex = " "
1573
- if (command = " checkout" ) || (command = " merge" ) || (command = " rebase" ) || (command = " pull" ){
1574
- set syncIris = 1
1573
+ if (command = " checkout" ) || (command = " pull" ){
1574
+ set syncIrisWithDiff = 1
1575
+ set diffCompare = args (args )
1576
+ } elseif (command = " merge" ) || (command = " rebase" ) {
1577
+ set syncIrisWithCommand = 1
1575
1578
set diffCompare = args (args )
1576
1579
}
1577
1580
@@ -1582,13 +1585,16 @@ ClassMethod RunGitCommandWithInput(command As %String, inFile As %String = "", O
1582
1585
if newArgs (newArgs ) = pullArg {
1583
1586
set pullOriginIndex = newArgs
1584
1587
}
1585
- if (args (i ) = " checkout" ) || (args (i ) = " merge " ) || ( args ( i ) = " rebase " ) || ( args ( i ) = " pull" ){
1586
- set syncIris = 1
1588
+ if (args (i ) = " checkout" ) || (args (i ) = " pull" ){
1589
+ set syncIrisWithDiff = 1
1587
1590
set diffCompare = args (i + 1 )
1588
1591
1589
1592
if args = (i + 2 ) {
1590
1593
set diffBase = args (i + 2 )
1591
1594
}
1595
+ } elseif (args (i ) = " merge" ) || (args (i ) = " rebase" ){
1596
+ set syncIrisWithCommand = 1
1597
+ set diffCompare = args (i + 1 )
1592
1598
}
1593
1599
1594
1600
if (args (i ) = " pull" ) {
@@ -1597,11 +1603,12 @@ ClassMethod RunGitCommandWithInput(command As %String, inFile As %String = "", O
1597
1603
}
1598
1604
}
1599
1605
1600
- if (diffCompare = " --no-commit" ) || (diffCompare = " --abort" ) {
1601
- set syncIris = 0
1606
+ if (diffCompare = " --no-commit" ) || (diffCompare = " --abort" ) || (diffCompare = " -b" ) {
1607
+ set syncIrisWithDiff = 0
1608
+ set syncIrisWithCommand = 0
1602
1609
}
1603
1610
1604
- if syncIris {
1611
+ if syncIrisWithDiff {
1605
1612
if diffBase = " " {
1606
1613
set diffBase = ..GetCurrentBranch ()
1607
1614
}
@@ -1621,7 +1628,6 @@ ClassMethod RunGitCommandWithInput(command As %String, inFile As %String = "", O
1621
1628
set modification .internalName = " "
1622
1629
}
1623
1630
set files ($increment (files )) = modification
1624
- set mod = files (files )
1625
1631
write !, ?4 , modification .changeType , ?4 , modification .internalName , ?4 , modification .externalName
1626
1632
}
1627
1633
@@ -1656,16 +1662,65 @@ ClassMethod RunGitCommandWithInput(command As %String, inFile As %String = "", O
1656
1662
for stream =errStream ,outStream {
1657
1663
set stream .RemoveOnClose = 1
1658
1664
}
1659
- do ..PrintStreams (errStream , outStream )
1660
- if syncIris {
1661
- $$$ThrowOnError(..SyncIrisWithRepo (.files ))
1665
+ // do ..PrintStreams(errStream, outStream)
1666
+ if syncIrisWithDiff {
1667
+ $$$ThrowOnError(..SyncIrisWithRepoThroughDiff (.files ))
1668
+ } elseif syncIrisWithCommand {
1669
+ $$$ThrowOnError(..SyncIrisWithRepoThroughCommand (.outStream ))
1662
1670
}
1663
1671
quit returnCode
1664
1672
}
1665
1673
1666
- ClassMethod SyncIrisWithRepo (ByRef files )
1674
+ ClassMethod SyncIrisWithRepoThroughCommand (ByRef outStream ) As %Status
1667
1675
{
1676
+ set deletedFiles = " "
1677
+ set addedFiles = " "
1678
+ set files = " "
1679
+ while (outStream .AtEnd = 0 ) {
1680
+
1681
+ set line = outStream .ReadLine ()
1682
+ set ^mtempz ($i (^mtempz )) = line
1683
+ set lineStart = $piece (line , " " , 2 )
1684
+ if (lineStart = " delete" ) || (lineStart = " create" ) {
1685
+ set fileOperation = $select (lineStart = " create" : " A" , 1 : " D" )
1686
+ set externalName = $piece (line , " " , *)
1687
+ set internalName = ##class (SourceControl.Git.Utils ).NameToInternalName (externalName ,,0 )
1688
+ set modification = ##class (SourceControl.Git.Modification ).%New ()
1689
+ set modification .changeType = fileOperation
1690
+ set modification .internalName = internalName
1691
+ set modification .externalName = externalName
1692
+ set files ($i (files )) = modification
1693
+ if fileOperation = " A" {
1694
+ set addedFiles = addedFiles _" ," _internalName
1695
+ } else {
1696
+ set deletedFiles = deletedFiles _" ," _internalName
1697
+ }
1698
+ }
1699
+ }
1700
+
1701
+ set deletedFiles = $extract (deletedFiles , 2 , *)
1702
+ set addedFiles = $extract (addedFiles , 2 , *)
1668
1703
1704
+ set ^mtemphw (" addedFiles" , $i (^mtemphw (" addedFiles" ))) = addedFiles
1705
+ set ^mtemphw (" deletedFiles" , $i (^mtemphw (" deletedFiles" ))) = deletedFiles
1706
+
1707
+ if (deletedFiles '= " " ){
1708
+ set sc = ##class (SourceControl.Git.Utils ).RemoveFromServerSideSourceControl (deletedFiles )
1709
+ }
1710
+ if (addedFiles '= " " ){
1711
+ set sc = ##class (SourceControl.Git.Utils ).AddToServerSideSourceControl (addedFiles )
1712
+ }
1713
+
1714
+ do outStream .Rewind ()
1715
+ set event = $classmethod (..PullEventClass ()," %New" )
1716
+ set event .LocalRoot = ..TempFolder ()
1717
+ merge event .ModifiedFiles = files
1718
+ quit event .OnPull ()
1719
+ }
1720
+
1721
+ ClassMethod SyncIrisWithRepoThroughDiff (ByRef files ) As %Status
1722
+ {
1723
+ set ^mtempz ($i (^mtempz )) = " here"
1669
1724
set key = $order (files (" " ))
1670
1725
set deletedFiles = " "
1671
1726
set addedFiles = " "
@@ -2348,3 +2403,4 @@ ClassMethod BaselineExport(pCommitMessage = "", pPushToRemote = "") As %Status
2348
2403
}
2349
2404
2350
2405
}
2406
+
0 commit comments