Skip to content
LiangXiang Shen edited this page Jan 4, 2019 · 1 revision

这里是 kjBot 框架最佳实践 —— kjBot 的仓库。

你可能已经注意到了,这个仓库只有简简单单两个 xml 文件,它们是 repo 管理项目的典型特征。

repo 是什么?为什么使用 repo?

repo 是一个多仓库项目的 git 工具,在面对大量仓库时比 git submodule 更有优势。且 git submodule 在更新大量子模块时极易出现问题。repo 可以有效应对 kjBot 模块日益增多的情况。

怎么使用 repo?

下面的教程将指导你从零开始使用 kjBot 框架构建你自己的 bot:

首先创建基础文件 default.xml

<?xml version="1.0" encoding="UTF-8"?>
<manifest>

    <!-- 定义远端简写 -->
    <remote name="github"
            fetch="https://github.com/" />

    <!-- 可自行替换远端来拉取不同的目标 -->
    <remote name="kjBot"
            fetch="https://github.com/kjBot-Dev/" />

    <remote name="kjBot-Modules"
            fetch="https://github.com/kjBot-Modules/" />

    <!-- 声明默认值-->
    <default revision="refs/heads/master"
             remote="github"
             sync-j="4"
             sync-c="true" />

    <!-- 框架 -->
    <project path="." name="framework" remote="kjBot" revision="0.x" />

    <!-- 自定义 -->
    <include name="snippets/kjBot.xml" />

</manifest>

然后创建 snippets/kjBot.xml

<?xml version="1.0" encoding="UTF-8"?>
<manifest>

    <project path="manifest" name="kjBot" remote="kjBot" /> <!-- repo 定义仓库本身,可以不加这一行 -->

    <!-- 根据实际需要添加模块包 -->
    <project path="modules/kjBot_Dev/Demo" name="Demo" remote="kjBot-Modules" revision="0.x" />

</manifest>

简单介绍一下添加模块包的那一行 <project path="modules/kjBot_Dev/Demo" name="Demo" remote="kjBot-Modules" revision="0.x" />

这里 path 表示相对 repo 根目录的路径,项目将放到该文件夹下,从 remote="kjBot-Modules" (即 kjBot 模块组织) 拉取名为 Demo 的仓库的 0.x 版本(可以是 branch 也可以是 tag) ,同时也在整个 repo 中声明了该项目名为 Demo。关于他人模块包的正确使用请参考框架文档。

完成后将仓库提交到 Github,下面以本仓库为例。(-u 指定远端仓库, -b 指定版本)

repo init -u https://github.com/kjBot-Dev/kjBot -b 0.x

上述操作将会在当前文件夹创建 repo 所需的工具链和配置文件,并克隆 repo 定义仓库。然后运行:

repo sync -j4

拉取所有项目的更新,以四线程模式运行。

现在你已经得到了运行 kjBot 所需的基础代码,接下来根据模块包的指示编辑配置文件,并恢复 composer 包 composer update

后续更新

假如有模块更新了,你仍然可以使用 repo sync 来拉取版本更新,在模块包开发者遵循语义化版本的情况下,你不需要进行任何额外操作。不过你仍然可以关注一下模块更新是否添加了新的模块和新的插件,并及时应用到配置文件 :)

Clone this wiki locally