1

我会将 Git 存储库从旧的 SCM 服务器移动到新的。我的主要关注点(当然,除了保真度)是尽量减少停机时间。这是我的计划:

  1. 在新机器上,使用克隆每个存储库git clone --mirror
  2. 复制每个存储库的存储库挂钩
  3. 禁止访问旧服务器(我们使用 gitosis,因此删除除新服务器之外的所有用户的访问权限)
  4. 移动 DNS 条目,以便 Git 用户使用 DNS 别名
  5. 对新服务器上的每个存储库执行git pull
  6. 对于新服务器上的每个存储库,编辑配置文件以删除该remote "origin"部分。
  7. 开启对新服务器的访问

问题:

  1. 这看起来对吗?我特别关注第 6 步。
  2. 有什么方法可以减少停机时间吗?

谢谢。

4

1 回答 1

1

我会(如果旧服务器和新服务器之间无法通信):

  • 使用捆绑每个 repogit bundle
  • 在新服务器上复制捆绑包
  • 创建裸仓库
  • git fetch来自每个空的裸仓库中的那些捆绑包(没有要设置的来源)
  • 复制悬停钩子
  • 禁止访问旧服务器
  • 在每个 repo 上制作最后一个 git 包(增量包,非常快)
  • 复制那些小包
  • git fetch小增量包的增量
    </停机时间:没有要删除的来源>
  • 恢复访问

如果新旧服务器之间可以通信(通过 SSL):

  • 我会创建一个特殊的“迁移”gitosis 用户,所有项目都可以访问
  • clone --bare新服务器上的每个项目
  • 复制悬停钩子
  • 禁止访问旧服务器
  • git fetch在每个克隆的 repo 上做最后一个
  • 删除原点</停机时间>
  • 恢复访问
于 2010-08-30T17:29:38.117 回答