使用Git将夜间构建分发到工作室

本文关键字:工作室 构建 Git 将夜 使用 | 更新日期: 2023-09-27 18:08:03

短版本

每天早上需要将夜间构建分发给70多人,希望使用git来平衡传输,并且在我开始设计系统之前,想知道这个想法是否有技巧、陷阱或缺陷。

长版本

每天早上,我们需要将我们的夜间构建分发给70多人的工作室(艺术家、测试人员、程序员、制作等(。到目前为止,我们已经将构建复制到服务器上,并编写了一个同步程序来获取它(在下面使用Robocopy(;即使设置镜像,传输速度也慢得令人无法接受,在高峰时间(非高峰时间大约为15分钟(同步需要一个小时或更长时间,这表明这是硬件I/O瓶颈。

我有一个绝妙的(虽然肯定不是原创的(想法,那就是在整个工作室分发负载。在研究了使用臭名昭著的bit torrent协议编写客户端后,我想到了另一个想法,我可以使用git,因为在设计上,它可以让我们分发构建和修订管理,并带来无服务器的额外好处。

问题

  1. 你是如何开始使用git的?我对位于中央的源代码控制系统有经验,如PerforceSVN。阅读文档后,您似乎只需要运行git init path''to'folder,然后在另一台机器上运行git clone url

  2. 在哪里可以获得上述git clone命令的url?我可以定义吗?我觉得有一个url的概念很奇怪,因为git并没有一个中央服务器——或者是这样吗?例如类似于比特洪流跟踪器?

  3. 识别构建、使用变更列表编号或标签的更好选择是什么?

  4. 是否可以限制存储的修订数量?这将是有用的,因为除了夜间构建之外,我们还希望在一天中分发几个CI构建,但是,有无限数量的修订是没有意义的。在Perforce中,您可以通过设置属性来限制修订。

使用Git将夜间构建分发到工作室

我认为git在您的情况下不会有真正的帮助。是的,它是分布式的,但不是在"向尽可能多的人分发一些东西"的情况下。这并不能帮助您减少带宽负载,而且如果您使用gitoverssh,还会有额外的负载。也许你应该退一步,再给一次机会使用bittorrent协议。

  1. 如果所有客户端都可以共享访问服务器,则可以使用文件协议("本地协议"(
  2. 如果你能从你的客户端生成一个dir或ls。。。你得到了你需要的网址
  3. 标签:一旦你克隆了一个repo,你就可以把它签到某个标签上
  4. 事实并非如此,为了获得完整的历史记录,您每天早上都会获取新的提交

注意:随着回购规模越来越大,将二进制文件放入分布式回购并不是一个能及时扩展的解决方案。(这里有其他git设置(
优点是通过中央Git回购计算delta(这必须比自动复制更快(,并将所述delta作为对下游回购完成的git fetch的回答发送。

  1. 是的,这就是它的本质。在某个地方创建一个存储库,然后你可以从其他地方克隆它。

  2. 你在1(中初始化的存储库必须可以从你要克隆的机器上访问。Git是无服务器的,但每个存储库都必须从某个地方获取它们的东西。因此,所有70多台机器都必须知道它们应该在哪里获得新版本。如果你想分配负载,你必须弄清楚谁从谁那里获得更新。

    URL可以是文件路径、网络路径、带路径的SSH主机等。

  3. 标签会很好用。

  4. 你也许可以重新调整git回购的基础,以删除旧的修订。请参阅从历史中完全删除(旧(git提交

然而,我认为它不会解决您最初的问题,即分配负载。应调查其他途径。例如,多播复制,也许MQcast和MQcatch可以帮助您?