Version control 版本控制vs.自动分发vs.依赖关系管理

Version control 版本控制vs.自动分发vs.依赖关系管理,version-control,dependencies,dvcs,software-distribution,distributed-system,Version Control,Dependencies,Dvcs,Software Distribution,Distributed System,设想一个分布式软件系统,安装在几百台计算机(节点)上。节点负责自动运行计划任务。有数百个任务,每个任务计划在大约5-10个节点上运行。节点可能会停止数天,并且可能会从系统中删除。每个任务都由一个或多个源文件和特定于节点的配置文件定义。代码直接在节点上开发和测试(使用远程访问),因为只有这些节点配备了特殊硬件,并且具有运行任务所需的网络上下文(构建单独的测试系统成本太高)。每个任务的源文件都引用共享源文件(库),库可能引用其他库。任务和库的依赖关系树很复杂 我没有任何使用DVCS的经验,但我觉得这

设想一个分布式软件系统,安装在几百台计算机(节点)上。节点负责自动运行计划任务。有数百个任务,每个任务计划在大约5-10个节点上运行。节点可能会停止数天,并且可能会从系统中删除。每个任务都由一个或多个源文件和特定于节点的配置文件定义。代码直接在节点上开发和测试(使用远程访问),因为只有这些节点配备了特殊硬件,并且具有运行任务所需的网络上下文(构建单独的测试系统成本太高)。每个任务的源文件都引用共享源文件(库),库可能引用其他库。任务和库的依赖关系树很复杂

我没有任何使用DVCS的经验,但我觉得这个系统可以围绕DVCS构建。不同的库和不同任务的源文件都有自己的存储库。运行给定任务的每个节点都应该有该任务的repo实例。节点上至少有一个任务使用的每个库的repo也应该存在于该节点上。开发人员将在节点上本地修改和提交代码,并使用DVCS技术将修改分发给其他节点上的repo

问题1 将代码更改分发到其他节点的最佳方法是什么

一些可能的情况:

  • 开发人员
    将其修改推送到具有相同repo实例的每个其他节点。(但他们可能忘记/没有时间这么做。)
  • 节点自动
    pull
    每隔一次远程回购的每次更改,并
    update
    自身。(但可能存在冲突。)
  • 对于每个回购协议,其中一个实例用作“参考”。开发人员
    将其修改推送到该实例上,其他每个拥有实例的节点都会从这里自动
    s并
    更新
    s本身。(但具有引用实例的节点可能会停止。)
  • 问题2 处理依赖关系的最佳方法是什么

    如果多个任务(或库)引用同一个库,并且必须修改引用的库,则一个或多个引用任务(或库)可能会停止工作()。最好还是坚持原来提到的版本,并在经过适当测试后升级到新版本。也就是说,同一个repo中应该存在同一源文件的多个版本,这似乎是不可能的。我是否必须为引用库的新版本创建新的
    分支
    ?如果是,我应该如何升级转介回购协议

    谢谢你的帮助

    我没有任何分布式版本控制系统的经验, 但我觉得这个系统可以围绕DVCS构建

    共同的错误感觉。VCS(SCM)是版本控制系统(源代码控制管理),即跟踪

    • 变化
    • 主要在历史方面
    • 作为无复杂依赖项的平面阵列(仍考虑一些依赖项)
    您必须看到大量工具-配置管理软件,它们以本机方式处理部署、策略、复杂依赖关系、条件等

    您可以使用DVCS对CM进行一些迭代,但这将是一项艰巨的工作,并且与现有的成熟工具相形见绌

    我没有任何分布式版本控制系统的经验, 但我觉得这个系统可以围绕DVCS构建

    共同的错误感觉。VCS(SCM)是版本控制系统(源代码控制管理),即跟踪

    • 变化
    • 主要在历史方面
    • 作为无复杂依赖项的平面阵列(仍考虑一些依赖项)
    您必须看到大量工具-配置管理软件,它们以本机方式处理部署、策略、复杂依赖关系、条件等

    您可以使用DVCS对CM进行一些迭代,但这将是一项艰巨的工作,并且与现有的成熟工具相形见绌