PowerBuilder Source Control Concepts and Complexities

PowerBuilder is an object-oriented rapid application development environment. PowerBuilder development is based on objects, or small blocks of code designed for a single reusable purpose. One of the challenges for source control implementers in PowerBuilder is that the source for individual objects is embedded in PowerBuilder Libraries, PBLs. PBLs are in a proprietary binary format and are typically quite large in scope, containing tens or even hundreds of individual objects.

In PowerBuilder, when an object is checked out, its source must be imported into a PBL. PowerBuilder must also keep track of which PBLs should house which objects. PowerBuilder does this through PBG files which for each PBL maintain a list of the objects that are contained in them. PBG files are automatically checked in and out of source control whenever objects are added to or removed from PBLs



Then, when an object is checked back in, its source must be exported from the PBL. PowerBuilder performs these import and export operations automatically as part of the check out and check in processes.


In performing these behind-the-scenes operations for source control, PowerBuilder forces some restrictions on the source code Repository and on source code operations. For example the source files are stored in a fixed Repository folder structure that follows the directory structure where the PBLs are stored in the file system. And objects will always be checked out to the PBL where they resided when the objects were registered in source control. That is you can not check out an object to a particular PBL if the object had not originally been in that PBL.

What is desired in practicing a good source control methodology is the ability to re-create the application strictly from sources; to start with an empty directory and a set of source objects and end up with a set of PBLs that can be built into the deliverables.