Skip to content

Commit 8c49654

Browse files
committed
Fix file restore
Fix file restore for files whose directories have been deleted. Refresh uncommited queue after file discard
1 parent 9eb7ad8 commit 8c49654

File tree

2 files changed

+15
-4
lines changed

2 files changed

+15
-4
lines changed

cls/SourceControl/Git/DiscardState.cls

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,25 +17,34 @@ Property ExternalFile As %Boolean [ Required ];
1717

1818
Method RestoreToFileTree()
1919
{
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
2027
set fileStream = ##class(%Stream.FileCharacter).%New()
2128
set fileStream.Filename = ..FullExternalName
2229
$$$ThrowOnError(fileStream.CopyFrom(..Contents))
2330
$$$ThrowOnError(fileStream.%Save())
2431

32+
// Add file to source-control / IRIS
2533
if '..ExternalFile {
2634
do ##class(SourceControl.Git.Utils).ImportItem(..Name, 1, 1)
2735
do ##class(SourceControl.Git.Utils).AddToServerSideSourceControl(..Name)
2836
}
2937

38+
// Delete discard record
3039
$$$ThrowOnError(..%DeleteId(..%Id()))
3140
}
3241

3342
ClassMethod SaveDiscardState(InternalName As %String, name As %String) As %Status
3443
{
3544
set discardState = ..%New()
36-
37-
// If not an IRIS file
45+
3846
if (InternalName = "") {
47+
// If not in IRIS
3948
set externalName = ##class(%File).Construct($Get(^SYS("SourceControl","Git","settings","namespaceTemp")),name)
4049
set discardState.FullExternalName = externalName
4150
set discardState.Name = name
@@ -45,13 +54,14 @@ ClassMethod SaveDiscardState(InternalName As %String, name As %String) As %Statu
4554
set discardState.Name = InternalName
4655
set discardState.ExternalFile = 0
4756
}
48-
57+
// Copy over file contents
4958
set fileStream = ##class(%Stream.FileCharacter).%New()
5059
set fileStream.Filename = discardState.FullExternalName
51-
5260
do fileStream.%Open()
5361
do discardState.Contents.CopyFrom(fileStream)
5462
do fileStream.%Close()
63+
64+
// Save extra information
5565
set discardState.Username = $USERNAME
5666
set discardState.Branch = ##class(SourceControl.Git.Utils).GetCurrentBranch()
5767
set discardState.Timestamp = $zdatetime($horolog, 3)

cls/SourceControl/Git/WebUIDriver.cls

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -246,6 +246,7 @@ ClassMethod HandleRequest(pagePath As %String, InternalName As %String = "", Out
246246
set isFile = 1
247247
}
248248
}
249+
do ##class(SourceControl.Git.Change).RefreshUncommitted(,,,1)
249250
}
250251

251252
set argsArr = ""

0 commit comments

Comments
 (0)