User Answers

You can use $system.OBJ.Load() or LoadDIr() to load source from disk.

Personally, I would do this via Source Control and not via Studio.  The approach to this will depend on your source control structures, etc, but the easiest way to handle this for me would be:

1) Make sure that everything in my package was checked into my branch, e.g. /MyApp/cls/MyFirstPackage/...

2) Since my source tree is structured according to package names, I would copy /MyApp/cls/MyFirstPackage/... to /MyApp/cls/MySecondPackage/... 

3) Check in /MyApp/cls/MySecondPackage/... into source control

4) Check out /MyApp/cls/MySecondPackage/...

You can use %CSP.StreamServer class.  See http://localhost:<your post>/csp/samples/streamserve.csp for a sample showing how to use it.

Scott,

See the Documatic for the following methods in %Studio.SourceControl.ISC:

classmethod Lock(Admin As %Boolean = 0) as %Status

For debugging or programmatic purposes?  If debugging / interactive you can just zwrite the variable to see the properties.

I think that may be a custom routine.  I don't recognize it as a Caché-supplied resource. 

My guess is that you are passing data somewhere as a string (because that is around the string limit). You need to use streams instead to store the uploaded file.

You can add logic in %OnAfterSave() for your object which will grab the object ID, $Username and the timestamp and tuck them away in an auditing table somewhere.  Alternatively you could add LastChangedBy and LastChangedTimestamp properties to your object and then populate them inside of %OnAddToSaveSet() (this is probably the most straightforward way to do it).

Hope that helps!