我有一个 git 存储库,需要作为共享库/通用代码在多个其他项目之间共享。使用此通用代码的项目都是TFS项目(TFS2013)。我能够在 TFS 中托管 git 存储库,但无法弄清楚如何在不重复的情况下将 git 和 TFS 存储库链接在一起。
我想要实现的想法与 git 的子模块相同,其中一个 git 存储库可以是其他 N 个 git 存储库的子模块:
- CommonLib/ (git)
- src/
- inc/
- Project1/ (git)
- src/
- inc/
- lib/
-CommonLib (git submodule)
- Project2/ (git)
- src/
- inc/
- lib/
-CommonLib (git submodule)
但当项目是 TFS 存储库时我想这样做:
- CommonLib/ (git)
- src/
- inc/
- Project1/ (TFS)
- src/
- inc/
- lib/
-CommonLib (?? How to link ??)
- Project2/ (TFS)
- src/
- inc/
- lib/
-CommonLib (?? How to link ??)
这可能吗?
我想出的一种解决方案是将 CommonLib 存储库克隆到每个项目的 lib/ 目录中,并适当地设置上游远程。但随后我必须将 git 存储库签入 TFS 存储库,这对我来说似乎不正确。
我希望在 Project2 中的 CommonLib 中进行源代码更改的开发人员能够在签入 TFS 时自动签入对 git 存储库的更改。与使用 git 子模块的方式类似,他们可以在来自父模块的单个 git 提交中提交项目更改(父模块)和子模块(子模块)更改。
是的,这是可能的。您可以通过以下方式为 TFS git 存储库添加子模块git 命令行(例如git bash https://git-scm.com/downloads)因为TFS IDE(Visual Studio)不能很好地显示git子模块,但它会在不远的将来 https://visualstudio.uservoice.com/forums/121579-visual-studio-ide/suggestions/13316574-commit-changes-to-a-submodule-using-vs.
为TFS git repo Project1(与Project2类似)添加子模块的命令如下:
git clone http://account:8080/tfs/DefaultCollection/_git/Project1
cd Project1
git submodule add http://account:8080/tfs/DefaultCollection/_git/CommonLib
git push
如果 CommonLib 已更新,您可以通过以下方式更新 Project1 中的子模块git submodule update --remote
.
子模块中的文件可以在本地仓库中查看。您只能在 TFS git repo 上找到子模块的最新提交 ID。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)