How to move Git repositories and minimize downtime

ε祈祈猫儿з 提交于 2019-12-23 02:57:25

问题


I will be moving Git repositories from an older SCM server to a new one. My main concern (other than fidelity, of course) is to minimize downtime. Here is my plan:

  1. On the new machine, clone each repository using git clone --mirror
  2. Copy over repo hooks for each repository
  3. Disallow access to old server (we use gitosis, so remove access for all users except for the new server)
  4. Move the DNS entry so the DNS alias Git users use
  5. Perform git pull for each repository on the new server.
  6. For each repository on the new server, edit the config file to remove the remote "origin" section.
  7. Turn on access to new server

Questions:

  1. Does this look right? I am specifically concerned with step #6.
  2. Is there any way to do this that will reduce downtime?

Thanks.


回答1:


I would (if there are no communication possible between old server and new server):

  • bundle each repo using git bundle
  • copy the bundle on the new server
  • create bare repos
  • git fetch from those bundles in each of the empty bare repo (no origin to set)
  • copy hover the hooks
  • Disallow access to old server
  • make a last git bundle on each repo (incremental bundle, very quick)
  • copy those small bundles
  • git fetch the increment from the small incremental bundles
    </ downtime: no origin to remove>
  • restore access

If there is communication possible (through SSL) between the new and the old server:

  • I would create a special "migration" gitosis user, with all projects access
  • clone --bare each projects on the new server
  • copy hover the hooks
  • Disallow access to old server
  • make a last git fetch on each cloned repo
  • remove origin </ downtime>
  • restore access


来源:https://stackoverflow.com/questions/3601242/how-to-move-git-repositories-and-minimize-downtime

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!