如何将OneOSLite源码管理中的子模块管理方式改写成长尾?

2026-04-02 11:411阅读0评论SEO问题
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计838个文字,预计阅读时间需要4分钟。

如何将OneOSLite源码管理中的子模块管理方式改写成长尾?

在OneOS-Lite中,内核kernel、组件components和驱动drivers均作为子模块模式存在,并与OneOS-Lite主仓库关联管理。前置:简洁清晰的代码结构有利于我项目代码的治理。

其中,OneOS-Lite仓库为主存储库。而内核kernel,以及组件components和驱动drivers都将作为子模块的模式和OneOS-Lite主仓库关联治理。

前言

简略清晰的代码构造有利于我的项目代码的治理。OneOS-Lite应用git submodule的形式来进行代码的治理。

其中,OneOS-Lite仓库为主存储库。而内核kernel,以及组件components和驱动drivers都将作为子模块的模式和OneOS-Lite主仓库关联治理。

检索子模块

该命令git submodule能够查看主仓库中,已有的子模块或子仓库。

$ git submodule-ba2c4170016ff14db298c5e87134704996c5aff5 thirdparty/cJSON-e99c7b71349f74804eb215c59fa426bf5a357d8f thirdparty/telnetd

拿以上举例:

  • -代表该子模块仓库源码文件还未检入(空文件夹),没有-代表已检入;
  • e99c7b71349f74804eb215c59fa426bf5a357d8f代表该子模块组件和OneOS-Lite所关联的版本id;
  • thirdparty/telnetd代表该子模块仓库对应的目录和其组件名称。

获取子模块

应用git clone是不会把子模块仓库源码文件检入的,只会把拉取下来对应子模块组件的空文件夹。这时,如果须要应用某个子模块组件,能够应用以下命令:

git submodule initgit submodule update xxx(子模块组件名,可通过git submodule查看已有的奉献组件)

举个栗子:

$ git submodule initSubmodule 'thirdparty/cJSON' (git@10.12.3.198:luoshunyuan/cJSON.git) registered for path 'thirdparty/cJSON'Submodule 'thirdparty/telnetd' (git@10.12.3.198:luoshunyuan/telnetd.git) registered for path 'thirdparty/telnetd'$ git submodule update thirdparty/telnetdCloning into 'D:/xiaoneng/oneos-2.0-test/thirdparty/telnetd'...Authorized users only. All activity may be monitored and reported.Submodule path 'thirdparty/telnetd': checked out 'e99c7b71349f74804eb215c59fa426bf5a357d8f'

如果须要获取所有子模块仓库,能够间接应用git submodule update。

关联子模块

通过我的项目根目录下的一个.gitmodules文件,能够发现曾经关联的子仓库,每增加一个子模块仓库就会新增一条记录。内容如下:

[submodule "thirdparty/telnetd"] path = thirdparty/telnetd url = git@10.12.3.198:luoshunyuan/telnetd.git[submodule "thirdparty/cJSON"] path = cJSON url = git@10.12.3.198:luoshunyuan/cJSON.git

持续关联新的子模块能够应用如下git命令,这里以telnetd为例:

git submodule add git@10.12.3.198:luoshunyuan/telnetd.git thirdparty/telnetd

如果须要更改子仓库,可先在对应的子仓库目录中,关上git命令行,进入对应奉献组件的git仓库治理,并执行代码提交操作:

因为批改了子模块仓库代码并提交了,然而主仓库的指针仍旧指向那个老的子仓库的commit id,如果不提交这个批改的话,他人拉取主我的项目并且应用git submodule update更新子模块还是会拉取到批改前的代码。

如何将OneOSLite源码管理中的子模块管理方式改写成长尾?

因而,这时候须要把主我的项目进行提交更新。

删除废除组件

当某些子仓库不须要了,须要废除,删除的时候,git没有间接删除子模块的命令,所以只能逐渐删除相干文件:

  • 在版本控制中删除子模块:

    git rm -r thirdparty/cJSON

  • 在编辑器中删除.gitmodules相干内容:

    [submodule "thirdparty/cJSON"] path = thirdparty/cJSON url = git@10.12.3.198:luoshunyuan/cJSON.git
  • 在编辑器中删除.git/config相干内容:

    [submodule "thirdparty/cJSON"] url = git@10.12.3.198:luoshunyuan/cJSON.git active = true
  • 删除.git下的缓存模块:

    rm -rf .git/modules/thirdparty/cJSON
  • 提交批改:

    git commit -am "delete submodule"git push
  • 关注&&分割

    gitee: gitee.com/cmcc-oneos/OneOS-Lite

    docs: oneos-lite.com/

    公众号:CMCC-OneOS

    本文共计838个文字,预计阅读时间需要4分钟。

    如何将OneOSLite源码管理中的子模块管理方式改写成长尾?

    在OneOS-Lite中,内核kernel、组件components和驱动drivers均作为子模块模式存在,并与OneOS-Lite主仓库关联管理。前置:简洁清晰的代码结构有利于我项目代码的治理。

    其中,OneOS-Lite仓库为主存储库。而内核kernel,以及组件components和驱动drivers都将作为子模块的模式和OneOS-Lite主仓库关联治理。

    前言

    简略清晰的代码构造有利于我的项目代码的治理。OneOS-Lite应用git submodule的形式来进行代码的治理。

    其中,OneOS-Lite仓库为主存储库。而内核kernel,以及组件components和驱动drivers都将作为子模块的模式和OneOS-Lite主仓库关联治理。

    检索子模块

    该命令git submodule能够查看主仓库中,已有的子模块或子仓库。

    $ git submodule-ba2c4170016ff14db298c5e87134704996c5aff5 thirdparty/cJSON-e99c7b71349f74804eb215c59fa426bf5a357d8f thirdparty/telnetd

    拿以上举例:

    • -代表该子模块仓库源码文件还未检入(空文件夹),没有-代表已检入;
    • e99c7b71349f74804eb215c59fa426bf5a357d8f代表该子模块组件和OneOS-Lite所关联的版本id;
    • thirdparty/telnetd代表该子模块仓库对应的目录和其组件名称。

    获取子模块

    应用git clone是不会把子模块仓库源码文件检入的,只会把拉取下来对应子模块组件的空文件夹。这时,如果须要应用某个子模块组件,能够应用以下命令:

    git submodule initgit submodule update xxx(子模块组件名,可通过git submodule查看已有的奉献组件)

    举个栗子:

    $ git submodule initSubmodule 'thirdparty/cJSON' (git@10.12.3.198:luoshunyuan/cJSON.git) registered for path 'thirdparty/cJSON'Submodule 'thirdparty/telnetd' (git@10.12.3.198:luoshunyuan/telnetd.git) registered for path 'thirdparty/telnetd'$ git submodule update thirdparty/telnetdCloning into 'D:/xiaoneng/oneos-2.0-test/thirdparty/telnetd'...Authorized users only. All activity may be monitored and reported.Submodule path 'thirdparty/telnetd': checked out 'e99c7b71349f74804eb215c59fa426bf5a357d8f'

    如果须要获取所有子模块仓库,能够间接应用git submodule update。

    关联子模块

    通过我的项目根目录下的一个.gitmodules文件,能够发现曾经关联的子仓库,每增加一个子模块仓库就会新增一条记录。内容如下:

    [submodule "thirdparty/telnetd"] path = thirdparty/telnetd url = git@10.12.3.198:luoshunyuan/telnetd.git[submodule "thirdparty/cJSON"] path = cJSON url = git@10.12.3.198:luoshunyuan/cJSON.git

    持续关联新的子模块能够应用如下git命令,这里以telnetd为例:

    git submodule add git@10.12.3.198:luoshunyuan/telnetd.git thirdparty/telnetd

    如果须要更改子仓库,可先在对应的子仓库目录中,关上git命令行,进入对应奉献组件的git仓库治理,并执行代码提交操作:

    因为批改了子模块仓库代码并提交了,然而主仓库的指针仍旧指向那个老的子仓库的commit id,如果不提交这个批改的话,他人拉取主我的项目并且应用git submodule update更新子模块还是会拉取到批改前的代码。

    如何将OneOSLite源码管理中的子模块管理方式改写成长尾?

    因而,这时候须要把主我的项目进行提交更新。

    删除废除组件

    当某些子仓库不须要了,须要废除,删除的时候,git没有间接删除子模块的命令,所以只能逐渐删除相干文件:

  • 在版本控制中删除子模块:

    git rm -r thirdparty/cJSON

  • 在编辑器中删除.gitmodules相干内容:

    [submodule "thirdparty/cJSON"] path = thirdparty/cJSON url = git@10.12.3.198:luoshunyuan/cJSON.git
  • 在编辑器中删除.git/config相干内容:

    [submodule "thirdparty/cJSON"] url = git@10.12.3.198:luoshunyuan/cJSON.git active = true
  • 删除.git下的缓存模块:

    rm -rf .git/modules/thirdparty/cJSON
  • 提交批改:

    git commit -am "delete submodule"git push
  • 关注&&分割

    gitee: gitee.com/cmcc-oneos/OneOS-Lite

    docs: oneos-lite.com/

    公众号:CMCC-OneOS