0

我在使用带有夜间构建的 git 时感到困惑。如果我们每天凌晨 12:01 克隆 repo,构建并测试它,那么我们如何保证每次都获得相同的构建?

第一种方法是标记构建。我们会拉标签并构建。问题是我们的系统到处都是标签。我们可以删除标签,但总有可能有人需要已删除的标签。

第二种方法是git rev-list按日期/时间 git checkout。缺陷是更改集在提交时带有时间戳,而不是在推送时。因此,如果有人在 2013 年 7 月 30 日晚上 9 点提交(但没有推送),然后在 2013 年 7 月 31 日的第二天推送。正在做:

git checkout `git rev-list -n 1 --before="2013-07-31 0:01" master`

根据结帐是在推送之前还是之后完成,得到不同的结果。

我是误解了什么还是在 git 中有更好的方法来做到这一点?

4

1 回答 1

5

首先,每次都克隆一个repo没有意义,太慢了。只需执行一次,然后拉取更改,用于git clear -xdf在每次构建之前制作一个原始 wc。其次,标签很便宜。如果您每天运行构建,它将在 3 年内创建约 1000 个标签,每个标签小于 100 字节,因此您最终每 3 年有 100kb。你为什么在乎?

用于构建的存储库可以在本地创建标签,而不会将其推送到主存储库。这意味着如果你需要一个标签,你可以直接去 repo 并找到一个标签。如果您查看 CI 服务器(例如 Jenkins),它会自动标记每个构建,并且默认情况下不会将标记推回。不知道为什么你还没有使用它,你应该考虑一下。

于 2013-07-30T21:39:00.377 回答