将Git与多个服务器配合使用

时间:2014-12-09 14:43:50

标签: freebsd git

我有一组服务器,上面有代码库。我们称它们为p1,p2,p3。我有一个开发服务器,用于存储代码d1。每个p服务器都有不同的代码库。

我正在试图弄清楚如何正确管理git repo,以便每个“p”服务器都能使“d1”服务器保持最新状态。

这就是我所做的。

  1. 在p1和初始提交上创建一个git repo。
  2. 创建了一个 - repo的克隆,并将其scp到d1服务器。
  3. 对所有服务器重复此操作。
  4. 我的d1服务器现在有一个包含子文件夹的/ git /文件夹

    p1,p2,p3。这些中的每一个都具有正常的

    内容

    HEAD分支配置描述钩子信息对象引用。

    我可以将这些存储库克隆到另一台机器或文件夹,然后我可以看到实际的文件,这正是我想要的。

    好的,这是我的问题。

    当有人克隆d1副本并提交时,如何使p1 repo保持最新状态。

    我是否需要在p1上运行git fetch

    或者我应该让人们改变p1然后git推送到d1。

1 个答案:

答案 0 :(得分:1)

您可以使用gitolite实施镜像,以使中央服务器保留其他人的所有最新代码

来自http://gitolite.com/gitolite/mirroring.html

  

镜像很简单:你有一个" master"服务器和一个或多个   "从"服务器。奴隶只从主人那里获得更新;到了   在世界其他地方,他们充其量只读。

     

在下面的图片中,每个方框(A,B,C,...)都是一个回购。该   回购的主服务器为红色,从属为绿色。用户   推送到主服务器(红色)和主服务器上的repo    - 一旦用户的推送成功 - 然后执行git push - 镜像到从属。箭头显示了这个镜像推动。

     

第一张照片显示了gitolite镜像曾经像一个长镜头   很久以前(实际上是v2.1之前)。只有一个主服务器;   其余的都是奴隶。每个奴隶镜像所有的回购   掌握,不多也不少。

     

one server as master and many as slaves

     

这很容易理解和管理,实际上可能没问题   对于许多小网站。镜子更多"热备用"什么都没有   其他

     

但是,如果你有超过4000名开发人员使用25台服务器进行500次回购   城市,那个单一的服务器往往会变得有点紧张。   特别是当你意识到很多项目都有很高的本地化   开发团队。例如,如果项目的大多数开发人员都是   在城市X,可能有一些在城市Y,然后有主服务器   在城市Z是......次优的: - )

     

所以,现在大约3年,gitolite可以做到这一点:

     

master repos and slaves on different servers

     

您可以轻松查看此方案中的差异,但此处还有更多内容   关于gitolite可以做什么的完整描述:

     

不同回购的不同主人和奴隶。

     

这可以让您执行以下操作:

     

使用最接近大多数开发人员的服务器作为主服务器   回购。仅将repo镜像到某些服务器。有回购那个   纯粹是服务器的本地服务器(根本没有镜像)。推送到奴隶   需求或通过cron(有助于处理带宽或连接   约束)。无论是否是gitolite-admin,这一切都是可能的   repo是镜像的 - 也就是说,所有服务器都具有完全相同的功能   gitolite-admin repo与否。

     

推送到奴隶可以透明地转发给真正的主人。

     

您的开发人员无需担心回购主的位置 - 他们   只需写入所有回购的本地镜像,即使是他们的本地   镜子只是某些人的奴隶。