@@ -234,16 +234,18 @@ ClassMethod HandleRequest(pagePath As %String, InternalName As %String = "", Out
234234
235235 set gitCmd = command .%Get (0 )
236236
237+ set discardedFiles = []
237238 if gitCmd = " restore" {
238239 set iter = command .%GetIterator ()
239240 set isFile = 0
240241 while iter .%GetNext (,.value ) {
241242 if isFile {
242243 set internalName = ##class (SourceControl.Git.Utils ).NameToInternalName (value )
243244 do ##class (SourceControl.Git.DiscardState ).SaveDiscardState (internalName , value )
244- if (internalName ) {
245- set externalName = ##class (Source .Git.Utils ).FullExternalName (internalName )
245+ if (internalName '= " " ) {
246+ set externalName = ##class (SourceControl .Git.Utils ).FullExternalName (internalName )
246247 $$$ThrowOnError(##class (SourceControl.Git.Change ).RemoveUncommitted (externalName ,0 ,1 ))
248+ do discardedFiles .%Push (externalName )
247249 }
248250
249251 }
@@ -284,6 +286,14 @@ ClassMethod HandleRequest(pagePath As %String, InternalName As %String = "", Out
284286 do %data .Write (" Git-Return-Code: " _ returnCode ) // No ending newline expected
285287 do %data .Rewind ()
286288 set handled = 1
289+
290+ // Make sure discarded items are not in the uncommitted queue
291+ set item = discardedFiles .%Pop ()
292+ while (item '= " " ) {
293+ do ##class (SourceControl.Git.Change ).RemoveUncommitted (externalName ,0 ,1 )
294+ set item = discardedFiles .%Pop ()
295+ }
296+
287297 } elseif (pathStart = " restore-discarded" ) {
288298 merge data = %request .Data
289299 set fileId = data (" file" ,1 )
0 commit comments