在git中修改嵌套子模块的URL
我正在使用最新版本的ardupilot固件。 目标是使ardupilot使用mavlink协议与伴侣板交谈。
我开始在我的github帐户上创建原始ardupilot存储库的一个分支。
配套板的集成需要我修改ardupilot存储库的一些子模块的代码:PX4Firmware和mavlink。
因此,为了能够做到这一点,我还在我的github账户中分配了ardupilot的各种子模块。
然后,我修改了我的ardupilot repo分支上的.gitmodules文件,以确保子模块的初始化使用我的分支而不是原来的分支。 修改如下:
[submodule "modules/PX4Firmware"]
path = modules/PX4Firmware
url = git://github.com/MY_GITHUB_ACCOUNT/PX4Firmware.git
[submodule "modules/PX4NuttX"]
path = modules/PX4NuttX
url = git://github.com/MY_GITHUB_ACCOUNT/PX4NuttX.git
[submodule "modules/uavcan"]
path = modules/uavcan
url = git://github.com/MY_GITHUB_ACCOUNT/uavcan.git
[submodule "modules/waf"]
path = modules/waf
url = git://github.com/MY_GITHUB_ACCOUNT/waf.git
[submodule "modules/gbenchmark"]
path = modules/gbenchmark
url = git://github.com/MY_GITHUB_ACCOUNT/benchmark.git
[submodule "modules/mavlink"]
path = modules/mavlink
url = git://github.com/MY_GITHUB_ACCOUNT/mavlink
[submodule "gtest"]
path = modules/gtest
url = git://github.com/MY_GITHUB_ACCOUNT/googletest
在此之后,我意识到我需要修改PX4Firmware的一个子模块的代码。 因此我在PX4Firmware回购中重复了相同的步骤:
PX4Firmware回购库中.gitmodules文件的修改如下:
[submodule "mavlink/include/mavlink/v1.0"]
path = mavlink/include/mavlink/v1.0
url = git://github.com/MY_GITHUB_ACCOUNT/c_library.git
[submodule "src/modules/uavcan/libuavcan"]
path = src/modules/uavcan/libuavcan
url = git://github.com/UAVCAN/libuavcan.git
[submodule "Tools/genmsg"]
path = Tools/genmsg
url = https://github.com/ros/genmsg.git
[submodule "Tools/gencpp"]
path = Tools/gencpp
url = https://github.com/ros/gencpp.git
[submodule "src/lib/matrix"]
path = src/lib/matrix
url = https://github.com/PX4/Matrix.git
[submodule "src/lib/DriverFramework"]
path = src/lib/DriverFramework
url = https://github.com/PX4/DriverFramework.git
[submodule "src/lib/ecl"]
path = src/lib/ecl
url = https://github.com/PX4/ecl.git
修改文件后,我运行命令git submodule sync和git submodule update 。 我也提交了两个.gitmodules文件并将它们推送到相应的主分支。
要查看它是否工作正常,我将ardupilot的分支克隆到一个新文件夹中,并递归初始化所有子模块:
git clone https://github.com/MY_GITHUB_ACCOUNT/ardupilot.git
cd ardupilot
git submodule update --init --recursive
不幸的是,它没有按预期工作。 虽然我的ardupilot叉子的子模块似乎是从我的github下载的,但PX4Firmware的子模块仍然是从原始回购站下载的。
在这里你可以找到git子模块更新的输出--init --recursive命令:https: //pastebin.com/ECi4wQEZ
我的问题是,我无法对原始存储库进行提交,当然,因为我理解,我必须用叉子来跟踪我的修改。
我发现并在stackoverflow上尝试了很多asnwers:
和其他许多人,但他们都没有在我的案件工作。
你有什么建议吗?
谢谢。
--------更新--------
与此同时,我找到了一种使其工作的方法。
我在这里描述这个过程以防万一有人需要它,或者知道一个更好的方法来做到这一点:
我开始解决有关子子模块url的问题:确保PX4Firmware repo使用git://github.com/MY_GITHUB_ACCOUNT/c_library.git而不是原来的。
程序如下:
在主存储库(ardupilot)中,我重复了相同的过程,以确保PX4Firmware子模块是我的存储库上的分支,而不是原来的分支。
我相信有更好的方法来做到这一点。 如果你知道,请分享。 我也希望这可以帮助有同样问题的其他人。
链接地址: http://www.djcxy.com/p/92323.html上一篇: Modify URL of a nested submodule in git
下一篇: Git add all repositories under a certain path as submodules recursively