文章目录
- 写在前面的话
- 背景
- 编写manifest文件
- 最终效果
写在前面的话
前面有讲过通过manifest清单导入项目到gitlab中,但是实际的操作是不同gitlab实例之间的操作,然而对于在不同gitlab实例的repo迁移而言,显然direct transfer会更合适。
背景
客户有这么一个需求,需要将coding中的代码迁移到gitlab中,但是coding中的仓库也比较多,而配置mirror的话,需要一个一个的配置;因此推荐客户使用manifest批量导入到gitlab中。
编写manifest文件
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
<remote name="coding"
fetch=".."
review="https://username:password@e.coding.net/g-ouwd2814/repo1" />
<default revision="master"
remote="coding"
sync-j="4" />
<project path="docker-in-docker" name="docker-in-docker.git" groups="repo1" />
<project path="test-1" name="test-1.git" groups="repo1" />
</manifest>
说明:
<remote> 标签:
name="coding": 定义了一个远程仓库的别名,这里叫 "coding"。
fetch="..": 指定了从相对路径 ".." 获取远程仓库的默认基础目录。
review="https://username:password@e.coding.net/g-ouwd2814/repo1": 远端仓库所在的群组的url,username为coding中项目的用户名,password是coding中项目的token,这里也可以使用coding中的个人用户名和密码。
<default> 标签:
revision="master": 设置了所有未单独指定 revision 的项目的默认分支为 "master"。
remote="coding": 指定了默认的远程仓库别名为 "coding",这里的 "coding" 应该与之前定义的某个 <remote> 的 name 属性值匹配,即 "coding"。
sync-j="4": 表示在同步过程中,可以并行执行的作业数为4,这可以加快多仓库同步的速度。
第一个 <project> 定义了一个项目,其 path="docker-in-docker" 表示在本地的工作目录中,该项目会被放置在名为 "docker-in-docker" 的子目录下;name="docker-in-docker" 指定该项目在远程仓库中的名称,通常指向一个Git仓库;groups="repo1" 指定项目所属的组别或标签。
第二个 <project> 类似,定义了另一个项目 "test-1",同样指定了路径、仓库名以及所属的组别。
最终效果