构建服务器git镜像

时间:2019-04-03 07:57:43

标签: git continuous-integration teamcity git-mirror

场景

我们曾经(现在仍然)有Bitbucket的连接问题,我们的下载速度很慢(并且我们有很多回购),并且使用Team City有时会擦除git repo下载后,最多可能需要5个小时才能再次提取整个存储库。 由于不知道如何从Team City关闭此回购擦除主意,也不知道此速度问题将持续多久,我们决定创建一个本地的Bitbucket镜像,Team City可以连接到该镜像,以获取整个回购协议(需要5分钟)而不是5个小时。

解决方案

为此,我要做的是创建一个裸露的Git存储库。

  

C:\ My_bare_repo> git init --bare

然后,我将本地开发存储库添加到新的裸存储库中,方法是将该裸存储库添加为新的远程存储库(因为我不想做一个克隆,需要5个小时才能完成)。

之后,我将裸机存储库URL作为远程URL添加到了裸仓库中。

  

C:\ My_bare_repo> git remote add origin https://bitbucket.org/my_repo.git

然后我进行了远程更新。

  

C:\ My_bare_repo> git远程更新源

然后我编写了将要执行的PowerShell脚本(每5分钟通过Windows Task Scheduler执行一次):

git fetch --all --tags

git branch --list | % {
    git branch -D $_.Replace(" ", "")
}

git branch --remotes | where { ($_.Replace(" ", "")) -ne "origin/master" } | % {
    $remote = $_.Replace(" ", "")
    $local = $remote.Replace("origin/", "")

    git branch --track $local $remote
}

git push origin --tags

结果

它不会完全同步(我不希望它与Bitbucket同步,只能推送Team City创建的任何新标签)。 它成功地将标签传播到Bitbucket并确保Bitbucket回购的最新副本在裸回购中,以供Team City查看。

问题

我的问题是,是否已经有这样的解决方案比我想出的解决方案要好用了?

此外,我不喜欢删除分支并重新创建分支以确保它们在仓库中与原始分支相同的位置上的方式。有没有办法在裸仓库中快速转发它们(缺少更好的期限)?

0 个答案:

没有答案