为什么要使用JCL UNITVERSIONING?

8

JCL库有一个条件定义UNITVERSIONING。我不知道为什么会有这个选项,也不知道如何使用它。我知道有一个名为JclUnitVersioning.pas的单元,但找不到用途。

在实际项目中应该在哪里使用它?

1个回答

7

它支持JclUnitVersioning单元,以更连贯的方式公开像这样的常量:

{$IFDEF UNITVERSIONING}
const
  UnitVersioning: TUnitVersionInfo = (
    RCSfile: '$URL: https://jcl.svn.sourceforge.net/svnroot/jcl/tags/JCL-1.101-    Build2725/jcl/source/common/Jcl8087.pas $';
    Revision: '$Revision: 1$';
    Date: '$Date: 12/05/2008 10:29:10$';
    LogPath: 'JCL\source\common'
    );
{$ENDIF UNITVERSIONING}

这里有一个旧版本的JclUnitVersioning单元1,它给你提供了大概的工作原理:该单元拥有一个全局函数function GetUnitVersioning: TUnitVersioning;,可为所有支持UNITVERSIONING的单元提供版本信息。

从那里,您可以枚举它们并询问详细信息。

例如,当您想知道哪个精确版本的单元被链接到您的.EXE时,这非常方便。

--jeroen


例如,假设您向客户交付应用程序的某个版本,并且他向您提交错误报告。也许您想知道在最终产品(您的大型应用程序)的静态链接构建中涉及了哪个版本的JCL-SubcomponentX或MyCustomComponents-Y。 - Warren P
这看起来非常有帮助。如果我理解正确的话,你可以编写一个函数来报告给定应用程序中每个单元的单位版本(如果存在)。包括源分支... 这将使发现合并问题变得容易。 - Chris Thornton
1
没错。例如,我可能有五个大型应用程序,它们都共享一个公共的数据库层。也许我想知道 UberWare 3.2 发行版使用的是 DB Layer 2.1,但 MegaSoft 2.4 只有 DB Layer 2.0。问题得到解决。对于任何不知道这一点的人来说,上面的 RCS 标签在提交时会自动更新,不仅可以被 RCS 和 CVS 更新,还可以被其他一些版本控制系统(如 Subversion)更新。 - Warren P
@Chris:你收到信息了吗?这非常有用。@Warren:如果你使用TortoiseSVN,你需要更改一些设置;对我来说,它似乎没有默认更新那些设置。 - Jeroen Wiert Pluimers

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接