persistent svn.Include TECH.Persistent %String %String %Boolean %String list %String list %String 1 %String 1 %Boolean %String list %String array 1 %String list 1 Revision:%String="" Path:%String 1 InternalName:%String InternalName:%String,isDirectory:%Boolean=0,flagDeleteCode:%Boolean=1 %String InternalNameFrom:%String,InternalNameTo:%String %String InternalName:%String,Message:%String,Username:%String,Password:%String %String InternalName:%String tFile:%String %Status rset:%ResultSet 1 %Boolean svnCommand:svn.Command 0 { if ##class(svn.Setting).Debug() w "SubCommand: "_svnCommand.SubCommand_" & Reload = "_+svnCommand.Reload,! if svnCommand.SubCommand="checkout" { // checkout returns full external name - with path set i="" set tCmdResult=svnCommand.Results.GetNext(.i) If ##class(svn.Setting).Debug() w "tCmdResult:"_tCmdResult_" -> "_tCmdResult.Action_"---> "_svnCommand.Results.GetNext(.i),! while tCmdResult'=$$$NULLOREF { if tCmdResult.Action="A" { Do ..SVNImport(tCmdResult.ExternalName) w " *** Studio HINT: please make sure you add this file into your copy of project!",! } elseif tCmdResult.Action="D" { set tIName=..InternalName(tCmdResult.ExternalName) if ..HasToBeSynchronized(tIName) do ..DeleteCode(tIName) } else { } set tCmdResult=svnCommand.Results.GetNext(.i) } } elseif (svnCommand.SubCommand="update")&(svnCommand.Reload) { // update returns only external name without path If ##class(svn.Setting).Debug() w "Updating.. "_svnCommand.SubCommand,! set i="" set tCmdResult=svnCommand.Results.GetNext(.i) while tCmdResult'=$$$NULLOREF { if (tCmdResult.Action="A")||(tCmdResult.Action="U")||(tCmdResult.Action="G") { set tFile=tCmdResult.ExternalName if $length(tFile) Do ..SVNImport(tFile) } elseif (tCmdResult.Action="D") { set tIName=..InternalName(tCmdResult.ExternalName) if ..HasToBeSynchronized(tIName) do ..DeleteCode(tIName) } elseif (tCmdResult.Action="S")||(tCmdResult.Action="C") { set $$$SVNGlobal("SourceControl","SVN","HasConflicts")=1 set tIName=..InternalName(tCmdResult.ExternalName) do ..Failed.Insert(tIName_" (Conflict)") } set tCmdResult=svnCommand.Results.GetNext(.i) } } } ]]> pBranch:%String="" %String InternalName:%String %Boolean InternalName:%String 1 %Boolean InternalName:%String %Boolean 1 ExternalName:%String %String 1 InternalName:%String,FullPath:%Boolean=1 %String InternalName:%String InternalName:%String 1 InternalName:%String InternalName:%String Filename:%String ExternalName:%String %Status ExternalName:%String,InternalName:%String %Status iPath:%String %String InternalName:%String %Boolean InternalName:%String %String InternalName:%String %String svn.CommandResult 0 { write ! set itExternalNames = ##class(TECH.ListIterator).%New(listExternalNames) while itExternalNames.HasNext() { set ExternalName = itExternalNames.Next() write "info :",ExternalName,! do ..SVNImport(ExternalName) do ..ToCompile.Insert(..InternalName(ExternalName)) } } ]]> ExternalName:%String %Boolean InternalName:%String %Boolean InternalName:%String %Boolean Delete is nodig wanneer code nog bestaat in database maar niet meer op het filesysteem en als er in de database een import/export historiek bestaat. InternalName:%String %Boolean Horolog1:%String,Horolog2:%String 1 %Boolean TECH.ListOfDataTypesOnDisk %Library.CacheStorage ^SYS("SourceControl","SVN","Repositories") RepositoryDefaultData ^SYS("SourceControl","SVN","Repositories") ^SYS("SourceControl","SVN","Indices") ^SYS("SourceControl","SVN","Repositories")( %%CLASSNAME Path Branch ChangeSourceControl IsCodeVeranderd Failed ToCompile AutoRevert ToBeRevertedSubfolder subnode "ToBeRevertedSubfolder"