@@ -17,25 +17,34 @@ Property ExternalFile As %Boolean [ Required ];
17
17
18
18
Method RestoreToFileTree ()
19
19
{
20
+ // Make sure directory for file exists
21
+ set dir = ##class (%File ).GetDirectory (..FullExternalName )
22
+ if ('##class (%File ).DirectoryExists (dir )) {
23
+ do ##class (%File ).CreateDirectoryChain (dir )
24
+ }
25
+
26
+ // Recreate File
20
27
set fileStream = ##class (%Stream.FileCharacter ).%New ()
21
28
set fileStream .Filename = ..FullExternalName
22
29
$$$ThrowOnError(fileStream .CopyFrom (..Contents ))
23
30
$$$ThrowOnError(fileStream .%Save ())
24
31
32
+ // Add file to source-control / IRIS
25
33
if '..ExternalFile {
26
34
do ##class (SourceControl.Git.Utils ).ImportItem (..Name , 1 , 1 )
27
35
do ##class (SourceControl.Git.Utils ).AddToServerSideSourceControl (..Name )
28
36
}
29
37
38
+ // Delete discard record
30
39
$$$ThrowOnError(..%DeleteId (..%Id ()))
31
40
}
32
41
33
42
ClassMethod SaveDiscardState (InternalName As %String , name As %String ) As %Status
34
43
{
35
44
set discardState = ..%New ()
36
-
37
- // If not an IRIS file
45
+
38
46
if (InternalName = " " ) {
47
+ // If not in IRIS
39
48
set externalName = ##class (%File ).Construct ($Get (^SYS (" SourceControl" ," Git" ," settings" ," namespaceTemp" )),name )
40
49
set discardState .FullExternalName = externalName
41
50
set discardState .Name = name
@@ -45,13 +54,14 @@ ClassMethod SaveDiscardState(InternalName As %String, name As %String) As %Statu
45
54
set discardState .Name = InternalName
46
55
set discardState .ExternalFile = 0
47
56
}
48
-
57
+ // Copy over file contents
49
58
set fileStream = ##class (%Stream.FileCharacter ).%New ()
50
59
set fileStream .Filename = discardState .FullExternalName
51
-
52
60
do fileStream .%Open ()
53
61
do discardState .Contents .CopyFrom (fileStream )
54
62
do fileStream .%Close ()
63
+
64
+ // Save extra information
55
65
set discardState .Username = $USERNAME
56
66
set discardState .Branch = ##class (SourceControl.Git.Utils ).GetCurrentBranch ()
57
67
set discardState .Timestamp = $zdatetime ($horolog , 3 )
0 commit comments