我有一个git存储库,需要作为共享库/公共代码在多个其他项目中共享。使用此公共代码的项目都是TFS项目(TFS2013)。我能够在TFS中托管git repo,但无法弄清楚如何将git和TFS repos链接在一起而不会重复。
我想要实现的想法与git的子模块相同,其中一个git repo可以是N个其他git repos的子模块:
- 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 repo克隆到每个项目的lib /目录中,并适当地设置上游远程。但是我必须将git repo检入TFS回购中,这对我来说似乎不正确。
我希望开发人员在Project2中对CommonLib进行源代码更改,以便能够在签入TFS时自动检查他们对git repo的更改。类似于使用git子模块的方式,他们可以在父进程的单个git提交中提交项目更改(父级)和子模块(子级)更改。
答案 0 :(得分:0)
没有可用的工具可以帮助您:我建议不要使用此方法,我会告诉您原因。
除非您使用不同的.SLN文件打开多个实例,否则Visual Studio将无法提供帮助,并且由开发人员手动触摸代码并执行操作。
您可以通过按顺序调用git
& tf
。您可以从git中选择commit sha并添加到TFVC注释中。在任何情况下,很难确定TFS变更集需要哪个git提交。
我建议您将所有代码移动到两个版本控制系统中的任何一个。
答案 1 :(得分:0)
是的,这是可能的。您可以通过 git命令行(例如git bash)为TFS git repo添加子模块,因为TFS IDE(visual studio)无法很好地显示git子模块,但它会在{ {3}}
为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已更新,您可以通过git submodule update --remote
更新Project1中的子模块。
子模块中的文件可以在本地仓库中查看。您只能在TFS git repo上找到子模块的最新提交ID。