简短版
需要每天早上向每个70多人发布每晚构建版本,希望使用 git 来平衡传输,并想知道是否有提示,陷阱或缺陷的想法在我开始设计系统之前。
长版
每天早上,我们需要将我们的夜间版本分发给70多人(艺术家,测试人员,程序员,制作人员等)的工作室。到目前为止,我们已将构建版本复制到服务器并编写了一个 sync 程序来获取它(使用下面的 Robocopy );即使设置了镜像,传输速度也会慢得多,因为在高峰时间需要一个小时或更长时间才能同步(非高峰时间约为15分钟),这表明它是硬件I / O瓶颈。
我有一个很棒的(虽然绝对不是原创)想法是在整个工作室分配负载。在调查使用臭名昭着的bit-torrent协议编写客户端之后,另一个想法是我可以使用 git 作为设计它会让我们分发构建和修订管理,并带来额外的好处服务器少。
问题
你如何开始使用git?我有集中管理的源控制系统的经验,如 Perforce 和 SVN 。阅读文档,您需要做的就是运行git init path\\to\folder
,然后运行另一台机器git clone url
?
我在哪里获得上述url
命令的git clone
?我可以定义吗?我发现有一个网址奇怪的概念,因为git没有中央服务器 - 或者是这样吗?例如类似于一个比特洪流的跟踪器?
识别构建,使用更改列表编号或标签的更好选择是什么?
是否可以限制存储的修订数量?这将是有用的,因为除了夜间构建之外,我们还有一些我们想要分发的CI构建,但是无限数量修订无处不在。在 Perforce 中,您可以通过设置属性来限制修订。
答案 0 :(得分:4)
我不认为git会对你的情况有所帮助。是的,它是分发的,但不是“尽可能向更多人分发内容”的情况。它不会帮助你减少带宽负载,如果你将使用git而不是ssh,还会有额外的负载。也许你应该退一步,再给一次bittorrent协议。
答案 1 :(得分:1)
注意:将二进制文件放在分布式仓库中不是will scale well in time的解决方案,回购越来越大。 (你有alternative git setups here)
优点是通过中央Git仓库计算增量(必须比robocopy更快),并将所述增量作为对下游仓库完成的git fetch
的回答。
答案 2 :(得分:1)
是的,这就是它的本质。在某处创建存储库,然后您可以从其他位置克隆它。
您在1)中初始化的存储库必须可以从您要克隆的计算机上访问。 Git是无服务器的,但每个存储库都必须从某个地方获取它们的东西。因此,所有70多台机器都必须知道应该在哪里获得新版本。如果你想分配负载,你必须找出一个关于谁从谁获得更新的状态。
URL可以是文件路径,网络路径,带路径的SSH主机等。
标签效果很好。
您可以修改git repo以删除旧版本。请参阅Completely remove (old) git commits from history
但是,我不认为它会解决您的原始问题,分配负载。其他途径应该进行调查。例如,多播复制,也许MQcast and MQcatch可以帮助你吗?