Git子模块工作流程

Ale*_*ysh 42 git workflow git-submodules

在我的项目中,我需要使用第三方代码,存储在几个Git存储库中.我的项目也存储在(单独的)Git存储库中.在主项目中有几个人和我一起工作,我是维护者.

在早期的项目中,我曾经手动将依赖项复制到Git工作树,添加一个指定我使用的版本的小文件.

现在这是相当不舒服的,因为我需要每天更新一个依赖项,并且经常自己贡献代码,大部分时间都伴随着对主项目的更改.

我决定尝试使用Git子模块进行管理.我尝试的越多,我就越沮丧.甚至看起来手动副本也许更好.

以下是我的一些担忧:

  • 我们不再能够通过单个命令获得一致的存储库状态(git checkout现在需要git submodule update --init).
  • 我们无法正确使用某些Git工具(git archive最值得注意的是).
  • 我们无法从主项目中看到状态更改/差异到子模块.
  • 正如我刚刚发现的那样,git submodule无法使用--git-dir--work-tree选项,并且需要将当前目录的物理更改为"工作树的顶层".

似乎为了简化我们的子模块工作流程(即一个操作==一个命令),我们必须在Git周围编写一个相当厚的包装器.这真是难过;这真是伤心.

请注意,不能选择远离Git或将子项目开发完全合并到主项目中.

也许我用git submodules的是错误的方式?有没有关于工作流程的好教程?

即使您不知道正确的答案,请大家说出来,但请分享我的疑虑.:-)

Ben*_*itz 13

您可能想尝试使用git子树(alt链接).我有很多运气,master在我的项目中使用远程回购和清理(解开历史)分支.


小智 6

git邮件列表中最近的一个帖子包含一个如何使用单个命令获得一致的存储库状态的补丁.它在更改分支时基本上调用git子模块更新.

http://thread.gmane.org/gmane.comp.version-control.git/130155/focus=130330