gpt4 book ai didi

svn - 在 svn 中保存构建快照的位置

转载 作者:行者123 更新时间:2023-12-01 13:02:17 24 4
gpt4 key购买 nike

我们需要以受控方式存档项目的构建输出(在我们的例子中,是一个大小约为 1MB 的单个可执行文件)。

注意:这样做的实际结果是,对于任何已发布的构建输出,我都需要无限期地存档它的不可变副本。 (例如,如果我们从源代码树的 r993、r1014、r1205 和 r1293 构建,我需要为每个保留一个构建输出。)

我们很自然地为此使用 Subversion,因为我们有一个正在运行的服务器。不自然的是将构建输出放在哪里。

  1. 检查源代码树的某个区域 --> 不好,因为它会使更新/合并/等复杂化。

  2. 在与源代码树关联的存储库中创建一个特殊区域例如:

    project-foo/
    branches/
    tags/
    trunk/
    build/ <-- released executables go here
    (along with metadata containing source references)

    我们真的不需要可执行输出的分支或标签;我只需要一个我可以引用的不可变快照的位置(在 SVN 的情况下,通过路径和 rev #)

  3. 在存储库中创建一个与源代码树松散关联的特殊区域例如:

    project-foo/
    branches/
    tags/
    trunk/
    project-foo-build/ <-- released executables go into a subdir:
    branches/
    tags/
    trunk/
  4. 使用其他程序而不是 SVN。 ???无论这是什么,都需要支持

    • 不可变数据
    • 与数据关联的元数据
    • 同一类事物的多个版本(例如项目 foo 的构建可执行文件)

有什么建议吗?

我倾向于想法 #2,但想退后一步,更好地了解各种优点/缺点。


*我们需要这样做,因为我们需要维护在某些情况下使用的精确构建输出。这是加载到硬件中的嵌入式代码。理想情况下,构建输出是源代码树的可重复函数,因此如果您使用相同的源代码树构建两次,它会产生相同的输出。不幸的是,情况并非如此,例如随着编译器或其他构建工具的更新。

最佳答案

您不需要将实际 文件存储在 Subversion 存储库中以合理的置信度跟踪它们。您可以做的是创建输出文件,计算文件内容的哈希值(例如 SHA1),然后将文件名和哈希值存储在存储库中。

只要您的输出文件存储备份到至少与您的 Subversion 存储库相同的级别,这样您就不会丢失它们,您就可以确定(在合理的程度上)给定的文件是在您记录哈希时构建生成的输出。

关于svn - 在 svn 中保存构建快照的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5237077/

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