@@ -15,6 +15,9 @@ Property Timestamp As %TimeStamp [ Required ];
15
15
16
16
Property ExternalFile As %Boolean [ Required ];
17
17
18
+ // Boolean tracking whether or not file was deleted as part of change
19
+ Property Delete As %Boolean ;
20
+
18
21
Index BranchMap On Branch [ Type = bitmap ];
19
22
20
23
Method RestoreToFileTree ()
@@ -24,17 +27,23 @@ Method RestoreToFileTree()
24
27
if ('##class (%File ).DirectoryExists (dir )) {
25
28
do ##class (%File ).CreateDirectoryChain (dir )
26
29
}
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 )
37
33
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
+ }
38
47
}
39
48
40
49
// Delete discard record
@@ -57,11 +66,15 @@ ClassMethod SaveDiscardState(InternalName As %String, name As %String) As %Statu
57
66
set discardState .ExternalFile = 0
58
67
}
59
68
// 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
+ }
65
78
66
79
// Save extra information
67
80
set discardState .Username = $USERNAME
0 commit comments