1. Rebecca Tollfree
  2. PowerBuilder
  3. Thursday, 18 January 2024 14:44 PM UTC


I'm trying to work out how Powerbuilder 2021 works with Git. I need to understand how 2 developers can change 2 different objects in the same pbl, and commit them without conflict.


The documentation says: 

Upload PBL

Starting from version 2022, the PBL files no longer need to be uploaded to the source control server, because they will be automatically generated using the source code downloaded from the source control server (when executing the "Connect to Workspace" and "SVN Update" operations).

The "Upload PBL" menu is preserved for projects that have been managed and upgraded from the earlier versions.


Does anyone know where I can find the documentation on Powerbuilder 2021 which might tell me how to use this menu, and help me understand the concepts.

In my mind a pbl is a single physical file, and I know that you can export a specific object as a single file... but I just don't understand how you can change 2 objects in a pbl in powerbuilder, on two machines, commit both to Git. And then merge them into the same branch without a conflict on the .pbl file.

Can anyone explain in layman's terms how this works thorugh Powerbuilder and Git and how to merge code in Git for pbls whilst managing that 2 different objects within the pbl might have changed - how we keep both sets of changes in-tact. Noting that I am using PB 2021 so the pbls won't "automatically be generated from the source code" as per the documentation




Rebecca Tollfree Accepted Answer Pending Moderation
  1. Thursday, 18 January 2024 15:59 PM UTC
  2. PowerBuilder
  3. # 1

Hi Roland

Thanks for this. Please bear with me as I am am new to Git and am used to delving into a pbl directly, amending code, and saving the object in the pbl itself


As an example:



Contains :




These are stored as .sr* files (suffix depending on object type) in the ws_objects folder which I can see has been created.


How do we create the .pbl file from these .sr files?

For example.

I have branch 1 which has created object1 in pbla.pbl

I have branch 2 which has created object2 in pbla.pbl

I now want to merge the branches together. At the moment I am getting a merge conflict on pbla.pbl file. Are we saying that in GIT we actually don't need to store pbla.pbl? 


  1. Roland Smith
  2. Thursday, 18 January 2024 16:30 PM UTC
You continue to edit/create objects within PowerBuilder the same way you always have. The PowerBuilder IDE will maintain the source code files under ws_objects for you. When you commit a change in PB, the file under ws_objects\libraryname will be committed to SVN/GIT.
  1. Helpful
  1. Roland Smith
  2. Thursday, 18 January 2024 16:34 PM UTC
Don't put the .pbl files into GIT. In PowerBuilder you can do a 'get' and it will grab the updated files from the server, place them under ws_objects in the appropriate library folder, and import them into the .pbl.
  1. Helpful
There are no comments made yet.
Roland Smith Accepted Answer Pending Moderation
  1. Thursday, 18 January 2024 15:48 PM UTC
  2. PowerBuilder
  3. # 2

When PowerBuilder connects to any source control system, it exports the objects to text files (objectname.sr*) and that is what is processed by the source control system.

For other source control providers, the object source is exported 'on the fly'. For GIT and SVN, it maintains a copy of all source control source files. There will be a folder 'ws_objects' in the same folder as the workspace .pbw file. Under ws_objects will be a folder named after each library. The library folder will have source files for all objects in the .pbl file.

When two people change objects in the same library, in source control they have changed two separate files.

The .pbl files should be archived somewhere (network file server) when you release a new version of the application. Keeping daily copies in source control isn't needed.

There are no comments made yet.
  • Page :
  • 1

There are no replies made for this question yet.
However, you are not allowed to reply to this question.