我们有一个超级项目,它有几个子模块,运行良好。
但是现在我们已经到了需要为这个特定项目修改其中一个子模块的地步,但如果可能的话,仍然希望能够从原始子模块中提取更改。
我们显然希望超级项目能够跟踪这些更改,而不是在我们进行更改时推送到原始子模块。
我们该如何管理呢?
我想我们可以在这个特定项目的子模块中创建一个分支,但是对于使用相同子模块的 100 多个项目来说,这可能会变得混乱。
我们有一个超级项目,它有几个子模块,运行良好。
但是现在我们已经到了需要为这个特定项目修改其中一个子模块的地步,但如果可能的话,仍然希望能够从原始子模块中提取更改。
我们显然希望超级项目能够跟踪这些更改,而不是在我们进行更改时推送到原始子模块。
我们该如何管理呢?
我想我们可以在这个特定项目的子模块中创建一个分支,但是对于使用相同子模块的 100 多个项目来说,这可能会变得混乱。
我不知道你的项目/子项目的细节,所以我只会给出模糊和一般的意见。
您的问题似乎与 git 无关,而是与管理项目/子项目依赖项有关。
首先警告一句:根据您的描述,您想调整 100 多个项目使用的子模块的行为,仅用于其中一个项目。如果您真的最终修改了子模块(例如:修改其他项目也使用的代码),那么您正在进入一个新的测试圈。看看你的子模块是如何工作的,并确定你是否真的应该改变你的子模块,或者只为一个项目调整它。
如果您需要的修改只针对一个项目,请尝试将这些修改限制在项目中 - 而不是修改子模块。
一种可能的方法是将其调用包装在特定项目中,例如替换调用:
submodule::do_stuff()
和
function adjust_behaviour(){
result = submodule::do_stuff();
tweak_for_my_project(result);
return result;
}
如果您的子模块的行为真的应该根据参数而改变,您应该在它提供的界面中显示它以使用它。
例如:如果您的子模块包含一个函数computeThis()
,并且计算实际上取决于参数weather
,您应该考虑更改该函数以使其相应地起作用:computeThis(weather)
。
或者您的 sumodule 可以加载配置文件,并且每个项目都应该提供自己的配置文件。