Delphi RES文件和Git

时间:2010-02-24 13:12:12

标签: delphi git resources

我有一个用Delphi编写的大项目,我想用Git来管理它的源代码。我创建了Git存储库,其中包括我的应用程序源和第三方组件。所有这些内容都是使用msbuild自动构建的。

最大的问题是RES文件。每次重建我的应用程序时都会更新其中一些,有些则不然。有些有* .rc源,有些没有.rc源。我不能忽略所有res文件(.gitignore)因为没有资源我的项目将无法构建。此外,我不能包含res文件 - 它们从构建更改为构建,我不希望在差异中看到它们。

你如何处理Git下的* .res文件?有什么建议吗?

6 个答案:

答案 0 :(得分:15)

欢迎来到俱乐部。 Delphi中的应用程序.res文件对于使用源代码控制的每个人来说都是一种痛苦。你想使用auto-inc-buildnumber,但它会弄乱你的scource控件。 我所做的是

  • 拆分图标和版本资源,如下所示:

    {$ R * _icon.res}

    {$ R * ._ version.res}

  • 禁用buildnumber的自动增加

  • 将预构建事件添加到项目中
    • 在与项目相对应的.ini文件中增加内部版本号
    • 使用.ini文件中的版本信息生成.rc文件
    • 编译.rc文件中的.res文件
  • 将* _icon.res文件添加到源代码管理中,它永远不会更改,因此这是安全的
  • 将带有版本信息的.ini文件添加到源代码控制中,它是一个文本文件,因此很容易区分

我为生成.res文件而编写的工具是免费软件available here,也来自SourceForge

答案 1 :(得分:9)

我将我的项目RES文件保存在git中(那些与dpr名称匹配的文件)。

我相信项目RES文件每次构建时都会改变的唯一原因是你设置了增量版本号,这对我来说要么意味着你需要将res保留在源代码控制中,要么你不关心构建数字,所以你应该关闭该选项。

我也有从RC构建的RES文件,它会改变每个编译,因此我有一个* .res的gitignore然后我为项目RES文件添加git add -f project.res

答案 2 :(得分:2)

强烈建议在项目设置中使用任何类型的版本控制系统禁用“自动增量内部版本号”。这样,将.res文件添加到存储库是“安全的”。

我一直在寻找一种方法来自动更新项目.res文件中版本信息中的内部版本号,但最好的方法是使用版本信息更新额外的.rc。但实际上,我通常会在最终构建版本的二进制文件之前将内部版本号更新为当前的版本号

答案 3 :(得分:1)

根据定义,RES文件是编译的RC文件。理想情况下,您应该忽略所有RES文件并仅提交RC更改。如果它以某种方式发生你没有某个特定RES文件的RC源,那么只将这个“孤儿”RES文件添加到git - 这样的文件不应该从构建更改为构建(因为没有RC文件生成他们来自)。如果由于一些奇怪的原因(Delphi,呵呵)这样的RES文件改变了,那么你就注定了。

底线:RES文件是编译目标 - 与其他二进制文件(obj,exe等)没有区别

答案 4 :(得分:0)

我不知道GIT,但在SVN下我只是“SVN ADD”那几个重要的,而不是自动生成的。由于未版本控制的文件被排除在差异之外,因此也要小心。

答案 5 :(得分:0)

你可以:

  • 忽略所有.res个文件
  • 生成可生成的.res个文件(编译资源脚本.rc文件)
  • 仅添加.res个文件而不添加.rc个文件:如果您在.gitignore中指定要忽略它们,那么添加它们就可以了:它们赢了“ t出现在差异中。