构建服务器git镜像 脚本

构建服务器git镜像 脚本,git,continuous-integration,teamcity,git-mirror,Git,Continuous Integration,Teamcity,Git Mirror,我们的Bitbucket存在(现在仍然存在)连接问题,我们的下载速度非常慢(而且我们有相当大的回购协议),并且使用Team City不时喜欢擦除它下载的git回购协议,重新拉取整个回购协议可能需要5个小时。 由于不知道如何关闭Team city的回购擦除想法,也不知道这种速度问题会持续多久,我们决定创建Team city可以连接的bitbucket本地镜像,以获取整个回购(这需要5分钟而不是5小时) 解决方案 我所做的就是创建一个裸Git存储库 C:\My\u bare\u repo>git i

我们的Bitbucket存在(现在仍然存在)连接问题,我们的下载速度非常慢(而且我们有相当大的回购协议),并且使用Team City不时喜欢擦除它下载的git回购协议,重新拉取整个回购协议可能需要5个小时。 由于不知道如何关闭Team city的回购擦除想法,也不知道这种速度问题会持续多久,我们决定创建Team city可以连接的bitbucket本地镜像,以获取整个回购(这需要5分钟而不是5小时)

解决方案 我所做的就是创建一个裸Git存储库

C:\My\u bare\u repo>git init--bare

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

之后,我将我的bitbucket url作为远程url添加到我的裸存储库中

C:\My\u bare\u repo>git remote add origin

然后我做了一个远程更新

C:\My\u bare\u repo>git远程更新源

然后,我编写了此PowerShell脚本,该脚本将被执行(每5分钟通过Windows任务计划程序执行一次):

git fetch--all--tags
git分支--列表|%{
git分支-D$\替换(“,”)
}
git分支--远程|其中{($.Replace(“,”)-ne“origin/master”}|%{
$remote=$\替换(“,”)
$local=$remote.Replace(“origin/”,“”)
git分支--跟踪$local$remote
}
git推送原点--标记
结果 它不进行完全同步(我不希望它与Bitbucket同步,只希望推送Team City创建的任何新标记)。 它成功地将标签传播到Bitbucket,并确保Bitbucket回购协议的最新副本位于裸回购协议上,供Team City查看,因此似乎可以正常工作

问题 但我的问题是,有没有比我提出的更好的解决方案

此外,我不喜欢我必须删除分支机构并重新创建它们,以确保它们在回购协议中位于原始分支机构所在的同一位置。有没有一种方法可以在无担保回购协议上快速推进它们(因为没有更好的期限)