|By Olan Knight||
|June 1, 2003 12:00 AM EDT||
QVCS is a multiuser, file-based source control system that comes in two flavors: QVCS and QVCS PRO. The QVCS PRO version includes IDE integration and works with the export files of PowerBuilder objects.
QVCS PRO features include all the basic Source Control Configuration (SCC) options that you would expect, including object isolation, versioning, PowerBuilder integration, archive coordination, good documentation, and tech support.
QVCS PRO uses the Microsoft SCC APIs, and thus integrates with the PowerBuilder IDE. Once installed, the PowerBuilder popup menu from both the System Tree and the Library Painter has its source control options enabled (see Figure 1).
When set up properly, QVCS PRO locks an object when a developer does a Check Out on it. That object can't be modified except by the person who has it checked out. Once that person does a Check In or an Undo Check Out, the object becomes available to other developers.
The SCC Manager applies a label to all the objects in the archive at a specific time, usually just after the code freeze of a software release. Later, developers can check out the appropriate version of their objects based on the label they select.
Developers invoke the Get Latest Version (GLV) function in order to download the latest version of the archived objects into their working PBLs. This can be done at either the object or the target level.
The Show History option will display all the comments associated with each Check In of the object. This is an excellent way to determine if a particular object is up-to-date, and to indicate which version of the object is loaded in your PBL.
The Show Differences option invokes a utility called "Examdiff" in order to compare the local version of the object to what is stored in the source control archive.
QVCS comes with a 200+ page document that is comprehensive and complete. It also comes with online help files, and the Web site has a "Frequently Asked Questions" page. Note that none of these files include any discussion of using QVCS with PowerBuilder.
Jim Voris is the author of QVCS/QVCS PRO and provides the tech support. All communication is handled via e-mail, and I've found Jim to be very responsive and most helpful.
QVCS PRO includes some reporting capabilities and handles branching and merging. Our shop is not interested in the reporting or the merging capability of the product, and we use branching sparingly to prevent "object clutter" (too many versions of the same object). But the features do exist for those who require them.
The installation of QVCS PRO is a breeze. The Zip file expands into a single folder that contains every piece of the QVCS PRO functionality. I installed the code onto a shared network drive and added a temp file to be used exclusively by the QVCS PRO software. I then installed a mirror of this setup onto each developer's PC.
Note that since QVCS PRO is a file-based source control product, Paul Horan's recommendations on setting up your application directories are absolutely vital (see Reference section). Every developer must have his or her development folders set up identically, and each PBL requires its own folder. Listing 1 outlines how we organized our development folders. Listing 2 is an expanded view of that structure showing how the PFE libraries are placed.
Quirks and Workarounds
1. Developers use e-mail to inform each other when objects need to be added, updated, or deleted. This minimizes the number of target-level GLVs that need to be done and minimizes the performance hit of using source control.
Doing a target-level GLV is cumbersome and time-consuming, but the cumbersome portion of that issue will be resolved in the next release of the product. Jim is also investigating implementing the new Sybase-sponsored SCC API extension that will reduce source code comparisons from the full source file to a single version number, which would significantly speed up this process.
2. Alex Ryder of InfoTech created an initial set of QVCS PRO/PowerBuilder Online Help files, which he generously shared with me. Over time I have expanded these files and modified them to suit our needs as we learned better ways of using QVCS PRO with PowerBuilder v8.0.3.
3. Occasionally you'll get a blank dialog box (see Figure 2). Alex says he never got this while using PB v8.0.1 but did see it with PB v8.0.3, so this appears to be a PB issue. Just click Yes and move on.
The annual QVCS PRO license fee is $40 per seat. Yes, you read it correctly. No, this is not a typo.
- Integrates nicely with PB 8.0.3 with a few minor exceptions.
- Handles object isolation and versioning nicely.
- Has good documentation and good e-mail tech support.
- Supports branching and merging.
- Easy to use.
- Must check in objects from the QVCS interface.
- Target-level checkout and GLV (Get Latest Version) process is cumbersome. (The fix for this is slated for the next release.)
- There are a few minor quirks.
- Be sure to export your objects first.
If you don't have SCC reporting requirements, QVCS is the best bang for the buck on the market. It handles all the basic source control functions easily, and integrates well with the PowerBuilder IDE. Most of the problems with PB/QVCS processing lie on the PowerBuilder side of the equation.
It's true that PVCS does more than QVCS PRO and does many things automatically - like pushing new objects onto the developer's desktop, but QVCS PRO more than meets our needs, and does so at an extremely reasonable price. It's relatively easy to use and is an excellent choice if what you need is basic source control.
In my next article, I'll discuss how we implemented QVCS PRO into our shop.
- Where Are RIA Technologies Headed in 2008?
- PowerBuilder History - How Did It Evolve?
- Creation and Consumption of Web Services with PowerBuilder
- Cloud People: A Who's Who of Cloud Computing
- DDDW Tips and Tricks
- Cloud Expo 2011 East To Attract 10,000 Delegates and 200 Exhibitors
- Working with SOA & Web Services in PowerBuilder
- Dynamically Creating DataWindow Objects
- OLE - Extending the Capabilities of PowerBuilder
- DataWindow.NET How To: Data Entry Form