Large Scale Legacy Powerbuilder with GIT or?
Asked Answered
C

4

15

I am evaluating various version/source control options for our legacy Powerbuilder application (in PB11 now, will be migrating to legacy 12 soon). To this point, all the version control with very limited source control has been done in-house where the code can be changed by numerous traveling consultants, but the changes tend to be pushed into the base by certain module code owners. This workflow was okay for a while when the company was small, but as we grew, it became more and more challenging. It is a very large application. I'll give you the numbers just to get an idea of the scale we are talking about. Up to 40 PBLS with hundreds of objects in each. About 500MB of code. About 100 consultants constantly on the road, any of them may be making base changes, which are then turned over to code owners.

So after reading about and evaluating various options, I was really excited about Distributed Version Control Systems. I was even more excited when I found that there is actually a proxy GITSCC, made by PushOk to get Powerbuilder to work with GIT. When I tried it out with a small application, I was pleasantly surprised that it worked and worked relatively well, except for some quirks. However what was interesting/disturbing is that I can't find a single post on the net of anybody talking about using GITSCC with Powerbuilder. Even the PushOK's GITSCC forum had only one post (non-Powerbuilder specific) until I created two more. However, once I put our main application under GIT using GITSCC, I noticed major performance issues updating PBL statuses.

So now a couple of questions, which I hope someone can help me with:

  1. Is there anybody who successfully uses GIT with Powerbuilder. If so, what's your workflow?

  2. When I refresh PBL statuses I noticed that there are two operations, which are very time consuming:

    • The log will say "Retrieving extended status information for the files: . This is performed one object at a time with each object taking about 1 second. As you can imagine we are talking about hours if we are refreshing thousands of objects.

    • Occasionally, I will get the similar behavior, but with the message "performing diff". Same thing - about a second per objects. Takes forever. On the source control tab of the workspace properties, I do have "perform diff on status update" turned off. I do not get this behavior every time, I click on a PBL, but once it starts doing it, you better be ready for a long lunch. Any way to avoid/improve this behavior. This will be a show stopper as much as I loved GIT. I saw some people having similar problems with other source control systems, so I am thinking it's either something to do with Powerbuilder or the proxy. Anything I can tweak in pb.ini or other places to improve the performance?

  3. Is there anybody who uses other distributed version control systems? Is there a way to get Mercurial to work with PB? I couldn't find any proxies for it.

  4. Finally, is there another system which you think would work well with our workflow?

I tried getting some answers from PushOK, but so far their support has been unresponsive. I also tried the Powerbuilder source control forum, but with so few members in that group, I am hoping to have better luck on SO.

Any help is greatly appreciated!

Couloir answered 8/6, 2011 at 18:3 Comment(4)
I asked a more general question on this topic in Sybase's newsgroup. I also tried using PB with Bazaar, and got the same performance hit you got (from PB's side, of course). I've given up on this. I think the best you can do is SVN or similar, possibly with exclusive locking. Classic PB is just a dead end... :(Helotry
We are using SVN with PB, which works ok, but is not ideal. We still lock objects, we still have trouble branching and merging. I would love to switch to Git. How about an update?...Did you stick with Git? Did you solve the slow status updates?Hazard
any update on this? i just inherited a PB11 project that's not under any SCCPrussia
Feel your pain, VSS, TFS cost corporations so much money in extremely slow performance. It's not uncommon to waste several hours a week, figuring what went wrong with TFS. At some Fortune 100 companies, the slow TFS performance cost developers at least 50% of their normal productivity. So now we can work half as fast, nothing getting done b/c we're fixing TFS, fixing broken builds b/c of TFS, spending next projects' money fixing the last three broken projects. It happens everywhere- I've been around.Cherilyncherilynn
F
6

Finally, is there another system which you think would work well with our workflow?

If you are prepared to look into using Subversion, then Agent SVN is a MS-SCCI plug-in that integrates PowerBuilder and Subversion.

Here is a link describes how it works.

Fluttery answered 30/5, 2012 at 2:57 Comment(1)
I don't remember having many headaches with SVN & PowerBuilder, haven't used it in a while though. I know some smart people that are working on getting PB to work smoothly with Git, that would be some nice information wish I had the time to figure it out.Cherilyncherilynn
C
3

Powerbuilder is notorious for rearranging code in the exported source files. This does not play well with merging in other people's changes in a DVCS. An automated merge has a good chance of corrupting a PowerBuilder export file. Merging by hand is tedious and error-prone with regular diff tools. The only tool I know of that can correctly merge PB Classic files is ProDiff (nee PBDelta). So far I haven't been able to think of a workflow using a DVCS with PowerBuilder Classic that isn't more painful than what your're doing now.

Casar answered 8/6, 2011 at 22:5 Comment(7)
We're using PB 12 Classic with TFS with few of the code-rearranging problems so far. I wonder if they might have resolved some of that?Gocart
@Gocart - No, you've just been lucky.Sandblind
We spend a lot of time looking at PB object syntax here, because our peer revivew process includes examining code diffs. Not every edit will cause PB to rearrange the code. If you merely edit a script and don't change the signature, it seems to stay put. If you change the signature, it will move the code. Changing any attribute of an object in a DataWindow seems to move the code. This makes reviewing diffs more work than it should be, and it makes merging multiple changes to an object a nightmare. The worst offenders seem to be large windows with a lot of controls. (continued next comment)Casar
The problem is that the graphic objects have many attributes and events in common, so when code starts moving around, the merge tool can't identify moved blocks of code, especially if it moves a thousand lines or more, as PB is wont to do.Casar
Hugh, thank you very much for your input. We use Prodiff now (used PBDelta before). Now we just use it to find differences and then copy and paste those differences into the master object. When I was trying GIT and now playing with Plastic SCM, I integrated Prodiff as an external diff tool. Do you think there is a way to use it as a merge tool as well?Couloir
I was hoping that GIT or other distributed systems would be more intelligent about auto merges, since they usually work very well with merges and store more historical snaphots/delta of how you get from Change A to Change B. Was than not the case in your experience? What do you guys use for version control now?Couloir
ProDiff can do a 2-way merge. It doesn't do the 3-way merge you need when doing distributed development, base<>mine<>theirs.Casar
S
0

I have used Git to manage so many different technologies and documents. You should have no issues.

Ensure that people are pushing often and fetching often. This will make sure that objects are distributed frequently so when you want to do an intense operation, you won't first have to wait for a gigantic fetch to finish.

Stick with Git over Mercurial. This may be seen as an opinion but I'm not convinced that anything out there will give you more flexibility and options than git.

I would highly recommend jumping in on the #git irc channel as well. There's lots of helpful people there always.

Hope this helps.

Sedimentology answered 8/6, 2011 at 18:15 Comment(4)
Thanks adymitruk! I am completely sold on GIT itself. It works great and all the pulls and pushes are fast. It's updating object status in Powerbuilder IDE that's slow and I am not sure if it's due to the PushOk proxy or Powerbuilder itself. If you are familiar with Powerbuilder, I am sure you know that adds another layer of complexity due to code being in binary files (PBLs), so GIT tracks objects exported out of of those PBL into text files.Couloir
I searched sybase.public.powerbuilder.source_control with no success and posted my question there as well. I'll check into GIT IRC...Couloir
is there a powerbuilder irc channel?Sedimentology
AdamDymitruk There is probably not an active PB IRC Channel, however, you might try making an account on appeon.com as they have an active forum, and support forum with a lot of smart people.OH, now I see it was probably a rhetorical question, Google had one in their newsgroups or something like that probably still there but stale.Cherilyncherilynn
C
0

What I'm looking at is a TFS to Git bridge application on Github (of all places) and want to fork it and make it work for VSS. From what I understand things are the same in PowerBuilder, but the bridge makes things happen in Git, but don't quote me.

I am thinking VSS is similar to TFS, besides the fact they both cost corporations millions of dollars a day (combined) in lost productivity, or corrupt databases. If anyone feels what I've said is an exaggeration, I'm open to criticism, no expert.

Cherilyncherilynn answered 25/5, 2019 at 7:15 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.