希望能够复制使用第三方可视化组件包的项目的给定版本,SVN中有什么内容,实现/构建SVN repos的最佳方式是什么?
对于非可视化组件,规则似乎很简单,可以确保不依赖外部repos -“不允许svn-外部引用任何外部repo”。我有一个我控制的共享repo,它是唯一允许的“svn-external”引用。这使得在不同的SVN项目中使用share代码实现和共享这些类型的运行时项变得很容易。此内部共享回购的任何引用都是通过使用特定修订号的“svn-external”进行的。
可视化包似乎与能够很容易地进行版本控制是背道而驰的,因为它们可能在每次修订时都必须重新安装。如何最好地创建一个SVN项目,该项目可以在以后的特定版本number...is中重新创建?有一个推荐的解决方案吗?
以前我们不担心第三方组件,因为它们不会经常改变,我们也从来没有一个真正好的解决方案。我想知道其他人是否已经找到了处理这个问题的最好方法,因为我正在进行春季清理/内部重组,并希望比以前做得更好。
从技术上讲,RTL/VCL源代码也应该在SVN代码库中(如果发布了Delphi修补程序/服务包)。
我的解决方案可能是创建一个安装了所有可视化控件的特定版本的Delphi环境的虚拟机。当我们添加/更新可视化控件,或者使用修补程序/服务包更新Delphi时,我们创建了一个新版本的虚拟机。然后,我们将此VM修订版的映像存储在某个架子上。这就是你要做的吗?在这种情况下,Delphi激活/许可是否工作良好(或根本不工作)?
谢谢,
达里安
发布于 2011-03-25 03:53:10
您可以为您的项目准备“启动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(or CodeGear in newer versions)\ProjectRegKey。
基本上,当您从注册表中转储当前的工作配置,将其从不必要的键中剥离,将路径更改为相对路径,然后进行调整以使其与您的项目一起工作时,这会更容易。
在这样的配置中,在具有不同组件集(和/或可能使用不同Delphi版本)的项目及其分支之间进行切换,只需签出存储库并运行脚本即可。
发布于 2011-03-25 05:31:26
对我们来说幸运的是,我们不必担心热修复/服务包;我们仍然使用Delphi5。
叹息,曾经有一段时间,整个应用程序(设置和所有)将存在于单个目录中-使这不是问题。但是,世界已经向前发展了,我们有一个应用程序的各个部分分散在各地:
您考虑到修补程序/服务包的影响是非常正确的。不仅RTL/VCL可能会受到影响,编译器本身也可能会稍有变化。还要注意的是,即使在升级Delphi版本时,也需要使用正确的版本进行构建。诚然,这会更容易一些,因为您可以同时运行不同的Delphi版本。
然而,我要建议你,这可能不值得花太多的精力。请记住,在旧版本上工作总是比在当前版本上工作更昂贵。
在理想的情况下,你希望你的所有开发都在主分支代码上,你想最大限度地减少旧版本上的补丁工作。因此,努力让你的大多数用户像possible.
TIP: I would also suggest that the build process automtically copy build output to a different machine, or at least a different hard-drive.
If your build scripts are also kept in source control, this happens implicitly.
It's okay for an automatic build script to fail because the desired configuration isn't available. This will remind you to set it up manually.
第三方包
我们在这里付出了更多的努力。然而,我们的主要动机之一是我们使用了大约8个第三方包。因此,做一些事情来标准化这一点本身是有意义的。我们也认为运行8个安装程序很麻烦,所以我们设计了一种简单的方法来手动安装源代码管理中所有需要的包。
关键注意事项
如果开发人员可以相当容易地确保他们使用相同版本的第三方库进行构建,而necessary.
我们创建了以下文件夹结构:
...\ThirdParty\_DesignTimePackages //The actual package files only are copied here
...\ThirdParty\_RunTimePackages //As above, for any packages "required" by those above
...\ThirdParty\Suite1
...\ThirdParty\Suite2
...\ThirdParty\Suite3因此,很容易配置一个新的环境:
添加_DesignTimePackages和_RunTimePackages到Path
编辑:Darian担心切换设计包版本时出错的可能性。然而,这种方法避免了这类问题。
发布于 2011-03-25 09:50:09
我在SVN中的存储库结构通常是这样的:
/trunk/app1
/trunk/comp/thirdparty1
/trunk/comp/thirdparty2
/trunk/comp/thirdparty3...我在根文件夹(主干)中有一个项目组(在旧的delphi上是.groupproj或.bpg ),它包含了我所有的组件。(allcomponents.groupproj)。
在一台新机器上安装,意味着打开该软件包,并安装设计时组件。这拖累了所有早于2010年的Delphi版本,但2010和XE有一个可爱的功能,所以你可以一目了然,哪些组件是设计时组件。
有时,我还会通过创建一个build.bat文件和一个regcomponents.bat文件来省去手动安装这些组件的麻烦。regcomponents只是运行regedit,并导入注册所有这些组件所需的密钥,在build.bat构建它们之后,以及其他所有内容。
当您从一个delphi版本升级到另一个版本时,最好同时拥有一个批处理和reg文件,以及一个组项目来帮助您。尤其是如果你必须打开项目/包,并将它们保存为MyComponent3.dpk而不是MyComponent2.dpk,或者将包扩展名从150更新到160,或者无论你的包做什么。
https://stackoverflow.com/questions/5422047
复制相似问题