在软件开发过程中,Sybase PowerBuilder 是一个广泛使用的快速应用开发工具。然而,它在处理PBL(PowerBuilder Library)库时存在一些挑战。PBL库是包含源代码和预编译代码的二进制库。这种解决方案引发了许多问题,包括但不限于以下方面:
PBL库非常容易出错。在PowerBuilder 7中,如果在完全重建失败后,PBL库可能会完全损坏。此外,存储在PBL中的源代码不容易进行比较。内置的支持效率低下,例如,源代码被检出到临时PBL库,离线访问并不方便。当多个开发人员在同一个项目上工作时,这会导致源代码同步问题。尽管可以使用许多工具,但在一周后跟踪所有更改并将它们组合在一起总是一场噩梦,这通常需要每周花费半天时间,而且经常会有一些更改丢失。
为了解决这些问题,提出了以下解决方案:
使用CVS作为源代码控制系统,无论是在Unix/Linux系统还是Windows系统上。CVS(Concurrent Versions System)是一个开源的版本控制系统,它允许多个开发人员同时工作在同一个项目上,而不会相互干扰。使用TortoiseCVS(或其他免费的CVS GUI客户端)来访问源代码。TortoiseCVS是一个集成到Windows资源管理器中的CVS客户端,它提供了一个直观的图形界面来管理版本控制。
使用WinMerge(或其他免费的源代码差异比较工具)来比较源代码差异。WinMerge是一个开源的差异比较和合并工具,它可以帮助开发人员比较文件和文件夹,并合并更改。
将所有源代码导出到CVS项目源代码树中。最佳方法是将每个PBL库导出到CVS源代码树中的单独目录。在构建机器上,使用PowerGen进行项目编译和PBL恢复。在每次构建中,您可以从头开始获取您的PBL(PowerGen可以解决对象之间的所有依赖关系,并将它们按正确的顺序导入回PBL)。
每个开发人员在每次构建后都获取新的PBL。在进行更改之前,对现有对象执行更新命令。将此对象从CVS沙箱导入到您的工作PBL中(替换现有的对象)。进行任何所需的更改。将修改后的对象从工作PBL导出到CVS沙箱。在CVS沙箱中对导出的对象执行提交命令,提供适当的注释,然后将其发送到CVS源代码控制。
这种方法的好处是显而易见的:
所有源代码都以纯文本形式存储(包括数据窗口)。所有更改都可以轻松跟踪(从PowerBuilder 9开始,这工作得更好,因为在以前的版本中,PowerBuilder在每次保存时都会更改方法的顺序) - 至少您知道为什么以及谁进行了更改。
可以简单地解决任何冲突(不再需要与开发人员共享和同步PBL的地狱)。PBL不会包含重建等旧错误。
还可以将附加操作连接到每个源文件的提交/检出/标记,并自动将它们连接到其他公司系统。