Version control 使用元数据资源的二进制文件/可执行文件的文件版本控制

Version control 使用元数据资源的二进制文件/可执行文件的文件版本控制,version-control,executable,perforce,versioning,Version Control,Executable,Perforce,Versioning,我有一个大型存储库,它可以构建许多文件,比如dll:s和exe:s。这些文件使用附加在文件中的资源信息构建,这些资源信息包含元信息,如文件版本和公司名称等 如果我希望升级更新包,其中只包括已更新的文件。我必须知道是否对构建的二进制文件/可执行文件进行了任何更改。这导致了两个问题 perforce等软件中的版本控制可以很好地处理源代码,但一个项目中的源代码并不一定意味着它不会在另一个项目中结束 当我们在编译时使用版本信息构建二进制文件时,如果文件版本号不同,那么文件“看起来”就不同,但在实际的源代

我有一个大型存储库,它可以构建许多文件,比如dll:s和exe:s。这些文件使用附加在文件中的资源信息构建,这些资源信息包含元信息,如文件版本和公司名称等

如果我希望升级更新包,其中只包括已更新的文件。我必须知道是否对构建的二进制文件/可执行文件进行了任何更改。这导致了两个问题

  • perforce等软件中的版本控制可以很好地处理源代码,但一个项目中的源代码并不一定意味着它不会在另一个项目中结束
  • 当我们在编译时使用版本信息构建二进制文件时,如果文件版本号不同,那么文件“看起来”就不同,但在实际的源代码中可能是相同的
  • 因此,基本上,您如何在自动化过程中管理二进制文件/可执行文件的文件版本,以确定已生成的哪些文件与以前的版本不同


    一种选择是执行两次构建过程。其中,第一个版本与旧版本号进行比较,然后使用新版本号进行生成并使用。有谁有更好的建议或应用程序可以推荐吗?

    如果可能,我的主要建议是改进版本字符串的生成。如果您不能从版本字符串确定二进制文件是从哪个源生成的,那么即使有版本字符串又有什么意义呢?理想情况下,如果源代码没有更改,版本字符串也不会更改


    如果您的实际二进制文件不可能有有用的版本字符串,我的建议是在您提交二进制文件时,在更改描述中嵌入该信息(即使用了哪些源文件以及对这些源文件的最新更改是什么)——这样您至少可以在事后进行查找,并且可以使用这些信息来比较二进制文件。

    嗯,是的。。。听起来不错,我很想这样做,但我的问题仍然是如何做到这一点?从性能方面来说,使用
    p4 changes-m1
    获得路径的最高变更列表。对版本字符串使用path+change意味着它将始终完美地映射到源代码,如果源代码不更改,它也不会更改。让您的构建工具使用该有用的版本字符串,而不是它现在使用的任何伪随机数,这是构建工具的一个问题。:)