使用Git将夜间版本分发给工作室

时间:2011-09-07 07:29:41

标签: c# git continuous-integration

简短版

需要每天早上向每个70多人发布每晚构建版本,希​​望使用 git 来平衡传输,并想知道是否有提示,陷阱或缺陷的想法在我开始设计系统之前。

长版

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

我有一个很棒的(虽然绝对不是原创)想法是在整个工作室分配负载。在调查使用臭名昭着的bit-torrent协议编写客户端之后,另一个想法是我可以使用 git 作为设计它会让我们分发构建和修订管理,并带来额外的好处服务器少。

问题

  1. 你如何开始使用git?我有集中管理的源控制系统的经验,如 Perforce SVN 。阅读文档,您需要做的就是运行git init path\\to\folder,然后运行另一台机器git clone url

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

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

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

3 个答案:

答案 0 :(得分:4)

我不认为git会对你的情况有所帮助。是的,它是分发的,但不是“尽可能向更多人分发内容”的情况。它不会帮助你减少带宽负载,如果你将使用git而不是ssh,还会有额外的负载。也许你应该退一步,再给一次bittorrent协议。

答案 1 :(得分:1)

  1. 如果您的所有客户都拥有对服务器的共享访问权限,则可以使用文件协议(“local protocol”)。
  2. 如果你能从你的客户那里制作一个目录......你就得到了你需要的网址。
  3. 标签:克隆回购后,您可以将其签出到某个标签。
  4. 不是真的,你每天早上都会获取新的提交以获得完整的历史记录。
  5. 注意:将二进制文件放在分布式仓库中不是will scale well in time的解决方案,回购越来越大。 (你有alternative git setups here) 优点是通过中央Git仓库计算增量(必须比robocopy更快),并将所述增量作为对下游仓库完成的git fetch的回答。

答案 2 :(得分:1)

  1. 是的,这就是它的本质。在某处创建存储库,然后您可以从其他位置克隆它。

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

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

  3. 标签效果很好。

  4. 您可以修改git repo以删除旧版本。请参阅Completely remove (old) git commits from history

  5. 但是,我不认为它会解决您的原始问题,分配负载。其他途径应该进行调查。例如,多播复制,也许MQcast and MQcatch可以帮助你吗?