Skip to content

Commit c7cc4df

Browse files
committed
Fix discard
1 parent 4f1f989 commit c7cc4df

File tree

2 files changed

+29
-15
lines changed

2 files changed

+29
-15
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
1111
- Fixed not showing warnings on Studio (#660)
1212
- Fixed business processes and rules not being added to source control automatically (#676)
1313
- Embedded Git commits settings when cloning empty repo to avert any issues
14+
- Fixed Discard / Stash not working on deletes (#688)
1415

1516
## [2.9.0] - 2025-01-09
1617

cls/SourceControl/Git/DiscardState.cls

Lines changed: 28 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,9 @@ Property Timestamp As %TimeStamp [ Required ];
1515

1616
Property ExternalFile As %Boolean [ Required ];
1717

18+
// Boolean tracking whether or not file was deleted as part of change
19+
Property Delete As %Boolean;
20+
1821
Index BranchMap On Branch [ Type = bitmap ];
1922

2023
Method RestoreToFileTree()
@@ -24,17 +27,23 @@ Method RestoreToFileTree()
2427
if ('##class(%File).DirectoryExists(dir)) {
2528
do ##class(%File).CreateDirectoryChain(dir)
2629
}
27-
28-
// Recreate File
29-
set fileStream = ##class(%Stream.FileCharacter).%New()
30-
set fileStream.Filename = ..FullExternalName
31-
$$$ThrowOnError(fileStream.CopyFrom(..Contents))
32-
$$$ThrowOnError(fileStream.%Save())
33-
34-
// Add file to source-control / IRIS
35-
if '..ExternalFile {
36-
do ##class(SourceControl.Git.Utils).ImportItem(..Name, 1, 1, 1)
30+
31+
if (..Delete) {
32+
do ##class(%File).Delete(..FullExternalName)
3733
do ##class(SourceControl.Git.Utils).AddToServerSideSourceControl(..Name)
34+
} else {
35+
36+
// Recreate File
37+
set fileStream = ##class(%Stream.FileCharacter).%New()
38+
set fileStream.Filename = ..FullExternalName
39+
$$$ThrowOnError(fileStream.CopyFrom(..Contents))
40+
$$$ThrowOnError(fileStream.%Save())
41+
42+
// Add file to source-control / IRIS
43+
if '..ExternalFile {
44+
do ##class(SourceControl.Git.Utils).ImportItem(..Name, 1, 1, 1)
45+
do ##class(SourceControl.Git.Utils).AddToServerSideSourceControl(..Name)
46+
}
3847
}
3948

4049
// Delete discard record
@@ -57,11 +66,15 @@ ClassMethod SaveDiscardState(InternalName As %String, name As %String) As %Statu
5766
set discardState.ExternalFile = 0
5867
}
5968
// Copy over file contents
60-
set fileStream = ##class(%Stream.FileCharacter).%New()
61-
set fileStream.Filename = discardState.FullExternalName
62-
do fileStream.%Open()
63-
do discardState.Contents.CopyFrom(fileStream)
64-
do fileStream.%Close()
69+
if (##class(%File).Exists(discardState.FullExternalName)) {
70+
set fileStream = ##class(%Stream.FileCharacter).%New()
71+
set fileStream.Filename = discardState.FullExternalName
72+
do fileStream.%Open()
73+
do discardState.Contents.CopyFrom(fileStream)
74+
do fileStream.%Close()
75+
} else {
76+
set discardState.Delete = 1
77+
}
6578

6679
// Save extra information
6780
set discardState.Username = $USERNAME

0 commit comments

Comments
 (0)