gpt4 book ai didi

delphi - 将 SVN 与 Delphi Visual Component 包结合使用的最佳实践?

转载 作者:行者123 更新时间:2023-12-03 14:51:25 25 4
gpt4 key购买 nike

希望能够重现使用第 3 方可视化组件包的项目的给定版本,SVN 中包含哪些内容以及实现/构建 SVN 存储库的最佳方式是什么?

对于非可视组件,规则似乎很简单,可以确保不依赖外部存储库 - “不允许 svn-externals 引用任何外部存储库”。我有一个我控制的共享存储库,这是唯一允许的“svn-externals”引用。这使得在不同 SVN 项目中实现和共享这些类型的运行时项目与源代码变得容易。此内部共享存储库的任何引用均由“svn-externals”使用特定修订号进行。

可视化包似乎与能够轻松进行版本控制背道而驰,因为它们可能必须在每次修订时重新安装。如何最好地创建一个 SVN 项目,以便稍后能够以特定修订号重新创建......有推荐的解决方案吗?

以前我们并不担心第 3 方组件,因为它们不会经常更改,而且我们从来没有真正好的解决方案。我想知道其他人是否已经找到了处理这个问题的最佳方法,因为我正在进行 Spring 大扫除/内部重组,并且希望比以前做得“更好”。

从技术上讲,RTL/VCL 源代码也应该位于 SVN 存储库中(如果发布了 Delphi 修补程序/服务包。)

我的解决方案可能是使用特定版本的 Delphi 环境创建一个虚拟机,并安装所有可视化控件。当我们添加/更新可视化控件,或使用修补程序/服务包更新 Delphi 时,我们将创建新版本的虚拟机。然后,我们将此 VM 修订版的镜像存储在某处的架子上。这就是你所做的吗?在这种情况下,Delphi 激活/许可是否有效(或完全有效)?

谢谢

达里安

最佳答案

您可以为您的项目准备“启动 IDE”(也可能是“构建”)脚本,并随着项目在存储库中的发展而维护它们。

无论您决定将组件保留在单独的存储库中并使用外部组件,还是将它们包含在具有可能分支的单个存储库中,您还应该为每个组件构建以及为特定 Delphi 版本准备的每个分支包含已编译的 bpl 文件。

您绝对应该尝试保持大多数(如果不是全部)路径的相对路径,在最坏的情况下使用环境变量指向您的根项目目录。

启动 IDE 脚本允许您在单个 Windows 安装上单独配置每个项目和 Delphi 版本环境。

它应该包含您的项目和 Delphi 所需的注册表项:

Windows Registry Editor Version 5.00

[-${DelphiRegKey}\Disabled Packages]
[-${DelphiRegKey}\Known Packages]
[-${DelphiRegKey}\Library]

[${DelphiRegKey}\Known Packages]
"$(BDS)\\Bin\\dclstd${CompilerVersion}.bpl"="Borland Standard Components"
"$(BDS)\\Bin\\dclie${CompilerVersion}.bpl"="Internet Explorer Components"
"$(BDS)\\Bin\\dcldb${CompilerVersion}.bpl"="Borland Database Components"
(...)
"${CustomComponentPack}"="Custom Components"

[${DelphiRegKey}\Library]
"Search Path"="${YourLibrarySourceFolder1};${YourLibrarySourceFolder2}"
(...)

然后您可以准备批处理文件:

regedit /s project.reg
%DelphiPath%\bin\bds -rProjectRegKey Project.dpr

其中 ${DelphiRegKey}HKEY_CURRENT_USER\Software\Borland(或较新版本中的 CodeGear)\ProjectRegKey

基本上,当您从注册表中转储当前的工作配置、将其从不必要的键中删除、将路径更改为相对路径,然后进行调整以使其适用于您的项目时,会更容易。

在这种配置中,在具有不同组件集(和/或可能使用不同的 Delphi 版本)的项目及其分支之间进行切换只需 check out 存储库并运行脚本即可。

关于delphi - 将 SVN 与 Delphi Visual Component 包结合使用的最佳实践?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5422047/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com