【问题标题】:Reproducible android builds with git with fast forward merges使用 git 快速向前合并的可重现 android 构建
【发布时间】:2013-04-26 01:08:13
【问题描述】:

我正在寻找 android 系统 (AOSP) 每日构建与 repo 的 git 存储库集合之间的可重复性以及使用快进合并的影响。

问题在于,在进行日常构建时,您会在其他地方进行开发时获得树梢。如果在推送更改时 HEAD 没有更改,它将进行快进合并并重写时间。所以有效地,3 天前存储库的物理状态将不同于要求 git 返回 3 天。

我能看到的主要解决方案是使用带有 --no-ff 的 git 来强制合并提交。这为较小的提交注入了很多噪音,并且似乎被认为是保持干净树的不好做法。

这方面的背景是试图在 android 构建环境中具有可重复性。对于那些不知道的人,一个 android 构建是一个不同的 git 存储库的集合。我的最终用例是我想说,将代码库置于 3 天前开发人员的状态。通过快进合并,我们丢失了一些关于如何关联多个 repo 项目(即:git 存储库)的更改的关键信息。

【问题讨论】:

    标签: android git git-merge repository fast-forward


    【解决方案1】:

    您已经注意到,Git 不会随着时间的推移跟踪分支的状态。两个合理的选择是为每个构建设置标签,或者在构建时使用所有签出提交的 SHA-1 创建一个静态清单:

    repo manifest -r -o build_20131104.xml
    

    这些文件可以被检入清单 git 并像例如这样使用

    repo init -u ... -m build_20131104.xml
    

    重现之前的状态,或者您可以将文件保存在其他地方。

    如果您正在执行大量构建(并且 Git 目前在有数千个标签时相当慢),那么标记所有 git 会在标签命名空间中乱扔垃圾,但在其他方面非常方便。不要忘记标记清单 git。

    【讨论】:

      猜你喜欢
      • 2016-01-24
      • 1970-01-01
      • 2019-01-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-22
      • 1970-01-01
      • 2016-06-08
      相关资源
      最近更新 更多