git子模块:自定义

bra*_*rad 2 git customization dvcs git-submodules

使用git子模块时,进行自定义的首选方法是什么?我是不是该...

  • fork项目并跟踪fork
  • 尝试覆盖默认行为
  • 在本地进行更改

如果这些都没有意义,那会是什么呢?

lem*_*nad 5

我不太确定你的问题是否意味着你想要包含的所有项目都已经是git项目,或者它们目前是svn,mercurial,非版本控制.如果是后者,那就必须是个案的答案.

很可能,你想要包含和定制的项目已经在github上,然后你应该通过github分叉并将这些forks用作子模块.应该检查任何自定义并推送到github.

如果您想要包含的项目位于其他地方(或者基于svn,mercurial等),则可能会更棘手.一种方法是在本地分叉项目,然后设置cron-jobs以将任何传入的更改推送到github.也就是说,创建github镜像.要完全控制合并和升级,您可能需要对这些镜像进行分叉,并将这些分支作为子模块包含在项目中,检入本地自定义并将它们推送到镜像的分支.

备选方案#3,fork项目和仅进行本地签入,可以在没有上述选项的情况下使用,并且您创建的内容并非真正意图轻松分发.

猴子修补(列表中的备选方案#2)应该是一种替代方案,您不希望项目依赖于您保持自定义分支更新上游更改.