将git存储库链接到多个TFS项目
我有一个git存储库,需要作为一个共享库/公共代码跨多个其他项目共享。使用此通用代码的项目都是TFS项目(TFS2013)。我能够在TFS中托管git repo,但无法找出如何在不重复的情况下将git和TFS repo链接在一起 我试图实现的想法与git的子模块相同,其中一个git回购可以是N个其他git回购的子模块:将git存储库链接到多个TFS项目,git,tfs,version-control,git-tfs,Git,Tfs,Version Control,Git Tfs,我有一个git存储库,需要作为一个共享库/公共代码跨多个其他项目共享。使用此通用代码的项目都是TFS项目(TFS2013)。我能够在TFS中托管git repo,但无法找出如何在不重复的情况下将git和TFS repo链接在一起 我试图实现的想法与git的子模块相同,其中一个git回购可以是N个其他git回购的子模块: - CommonLib/ (git) - src/ - inc/ - Project1/ (git) - src/ - inc/ - li
- 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回购签入TFS回购,这在我看来是错误的
我希望在Project2中对CommonLib进行源代码更改的开发人员能够在签入TFS时自动签入对git repo的更改。与使用git子模块的方式类似,在git子模块中,他们可以从父模块在一个git提交中提交项目更改(父模块)和子模块(子模块)更改。没有可用的工具可以为您这样做:我建议您不要使用这种方法,我将向您说明原因 除非您使用不同的.SLN文件打开多个实例,否则VisualStudio将不会有帮助,并且由开发人员手动触摸代码并执行操作。 您可以设计自己的命令行工具,通过依次调用
git
&tf
,以某种方式同步两个版本控制系统上的操作。您可以从git中选择commit sha并添加到TFVC注释中。无论如何,很难确定TFS变更集需要哪个git提交
我建议您将所有代码移到两个版本控制系统中的任何一个。是的,这是可能的。由于TFS IDE(VisualStudio)不能很好地显示git子模块,因此可以通过git命令行(例如)为TFS git repo添加子模块,但在未来会有所改进 为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中的子模块
子模块中的文件可以在本地repo中查看。您将只能在TFS git repo上找到子模块的最新提交id。与其尝试这样做,不如构建您自己的nuget包,供这两个项目使用。在您的示例中,Project1 repo似乎是一个.git repo。它也适用于TFS项目由git版本控制的情况。