# 如何迁移 Git 项目到工蜂合作伙伴版
# 应用场景
随着业务的发展,越来越多的团队存在离岸协同的需求,与外部合作伙伴的协同也越来越高频化。但由于安全合规的要求,外部合作伙伴无法访问工蜂内网版,这给各个业务团队在进行内外部协同配合时带来了额外的沟通和冲突解决成本。
为了解决这类问题,工蜂团队建设了工蜂合作伙伴版本(简称工蜂合作版),旨在支持外部生态合作伙伴与内部团队的协同诉求。工蜂合作版在稳定性、安全性、速度体验以及功能支撑上均与内网版本一致,在符合业务安全要求的前提下,可将工蜂项目从内网版迁移到合作版。
而在迁移的过程中如何快速、简单并完整的保留历史数据,相信是各个业务团队最为关注的事情,下面将以从内网版迁移到合作版为例演示项目迁移的全流程。
# 5 步搞定项目迁移
# 1. 创建旧项目的克隆
首先在工蜂内网版找到想要迁移的项目,在项目首页的右上角通过克隆&下载按钮获取 https 链接
打开终端,执行以下指令来创建旧项目的克隆到本地
git clone --mirror https://git.woa.com/yizhangpeng/old-repo.git
出现红框所示的提示,则表示项目已克隆到本地

# 2. 删除部分多余数据
执行以下指令以进入刚克隆到本地的项目目录
cd old-repo.git
可以通过红框所示的目录名字判断是否已进入项目的目录
项目日常运行过程中会产生refs/for、refs/remote之类的隐藏分支和数据,这类数据对于项目迁移来说是多余的且删除后也不会对项目本身的数据产生任何影响,如果不删除可能会在后续的迁移流程中产生额外的报错,推荐通过以下指令进行删除
git show-ref | awk '{print$2}' | grep -E -v '^(refs/heads/|refs/tags/|refs/notes/)' | xargs git update-ref -d
# 3. 拉取 LFS 文件(若未使用 LFS 储存文件可跳过此步骤)
进入目录后,通过以下指令拉取 LFS 文件到本地
git lfs fetch --all
执行后可以看到 LFS 文件正在下载

# 4. 推送本地镜像至新项目
拉取完所有文件后,即可将本地仓库推送至新项目。这里以将仓库推送到工蜂合作版为例,首先在工蜂合作版创建新的项目
创建完项目后,同样通过项目首页的右上角的克隆&下载按钮获取新项目的 https 链接

执行以下指令将本地的镜像推送至刚才在工蜂合作版创建的项目
git push --mirror https://git.tencent.com/yizhangpeng/new-repo.git
出现如下图所示的提示,则表示镜像已推送成功,可以在刚创建的新项目中查看到了

# 5. 推送 LFS 文件至新项目(若未使用 LFS 储存文件可跳过此步骤)
如果项目中有 LFS 文件,此时在新项目中已经可以看到 LFS 文件的记录,但其实 LFS 文件本身还并未推送至新项目
还需要按照如下指令进行最后一步操作将 LFS 文件推送至新项目
git lfs push --all https://git.tencent.com/yizhangpeng/new-repo.git
等待 LFS 文件上传完成,即可完成整个项目的迁移

Tips: 上述流程对于工蜂其他版本之间的项目迁移,同样适用。