git push如何处理积压工作
我正在考虑建立git服务器的分布式部署。我意识到这是git默认做的事情,但在本例中,服务器将在集中支持提供的所有帮助下充当唯一的真相来源 目前,我们的代码库和使用服务器的开发人员数量很少(几百人),但一旦部署,我预计至少会有1000名用户与他们的自动构建一起采用。当这种情况发生时,我预计对中央支持的git服务器的推送数量将增加数倍,这将导致对其他中央支持的git服务器的推送增加 为了限制所有这些服务器相互推送更改而导致推送风暴的可能性,我计划采用标准的中心辐射式体系结构,其中一个或两个服务器将充当主服务器,从辐射式服务器接收推送,并将这些更改推送回其他辐射式服务器 当我开始考虑来自全球定位的轮辐服务器上的多个推送对集线器的影响时,我的问题就出现了。我曾试图在我的实验室中模拟这种情况,从我所看到的情况来看,推送过程只是挂起等待前面的过程完成。在一个小的部署中,这工作得很好。然而,当您将构建自动化引入works时,提交/推送活动可能会成倍增加。如果我决定创建一个post-receive钩子,在每个客户端推送的基础上处理这些推送,那么我可以预见这样一种情况,即这些进程可以备份到客户端服务器上,等待中心接收更改 我的问题是: 我的担心有效吗?这些流程是否会在枢纽接收之前一直挂在外面,从而使工程变得一团糟?客户机将不知道这种状态,因为推送过程将从原始接收分叉。但是,他们会发现,在其他远程服务器上出现的更改会延迟 如果这些进程将失败,它们是基于sshd的等待间隔失败的,还是git本身有指定等待间隔的方法 除了监视系统进程或包装push命令以跟踪其完成时间外,是否有方法检测此操作积压,或者主服务器上的挂起接收情况 你能告诉我一些关于这个主题的线索或文章吗git push如何处理积压工作,git,hook,push,Git,Hook,Push,我正在考虑建立git服务器的分布式部署。我意识到这是git默认做的事情,但在本例中,服务器将在集中支持提供的所有帮助下充当唯一的真相来源 目前,我们的代码库和使用服务器的开发人员数量很少(几百人),但一旦部署,我预计至少会有1000名用户与他们的自动构建一起采用。当这种情况发生时,我预计对中央支持的git服务器的推送数量将增加数倍,这将导致对其他中央支持的git服务器的推送增加 为了限制所有这些服务器相互推送更改而导致推送风暴的可能性,我计划采用标准的中心辐射式体系结构,其中一个或两个服务器将充
最糟糕的情况是,每个存储库都可以使用一个使用定时间隔的推送来代替基于钩子的推送,但我希望尽可能让事情保持自由和快速,以便首选基于钩子的推送。您是否真的认为推送量如此之大,以至于服务器无法运行?你的问题并不能完全说服我 我们的工作是这样的:
- 本地端与远程端进行一点对话,足以确定需要传输哪些对象
- 本地端将所有必需的对象打包到一个打包文件中
- 本地端将packfile传输到远程端,并将其存储在临时文件名下
- 传输完成后,packfile将重命名为实际文件名
- 存储库尝试根据请求更新引用(例如,将主分支指向新推送的提交)