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