Git子模块工作stream程
在我的项目中,我需要使用存储在几个Git存储库中的第三方代码。 我的项目也存储在(单独的)Git仓库中。 在主项目上有几个人和我一起工作,我是维护者。
在之前的项目中,我曾经手动将依赖项复制到Git工作树上,添加了一个指定版本的小文件。
现在这是相当不舒服的,因为我需要每天更新一个依赖关系,并经常为自己贡献代码,大部分时间与主项目的变化相结合。
我决定尝试Git子模块来进行pipe理。 我尝试的越多,我越是感到沮丧。 甚至似乎手工复制也许更好。
以下是我的一些担忧:
- 我们不再能够通过一个命令获得一致的存储库状态(
git checkout
现在需要git submodule update --init
)。 - 我们无法正确使用一些Git工具(
git archive
是最值得注意的)。 - 我们无法看到来自主项目的子模块的状态更改/差异。
- 正如我刚刚发现的一样,
git submodule
不能与--git-dir
和--work-tree
选项一起工作,并且需要将当前目录的物理更改添加到“正在工作的树的顶层”。
看来,为了简化我们的子模块工作stream程(这是一个操作==一个命令),我们必须写一个比较厚的Git包装器。 这真是难过;这真是伤心。
请注意,从Git移出或将子项目开发完全合并到主项目中不是一种select。
也许我用错误的方式使用git submodules
? 有什么好的工作stream程教程?
即使你不知道正确的答案,也请说出来,但请分享我的担忧。 🙂
你可能想尝试使用git subtree ( alt link )。 我已经有了很多运气,在我的项目中使用远程回购和清理(解开master
历史)分支。
git邮件列表中最近的一个线程包含一个修补程序,用于如何使用单个命令获取一致的存储库状态。 它基本上调用更改分支时的git子模块更新。
http://thread.gmane.org/gmane.comp.version-control.git/130155/focus=130330