将git存储库链接到多个TFS项目

时间:2017-03-22 19:09:15

标签: git tfs version-control git-tfs

我有一个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提交中提交项目更改(父级)和子模块(子级)更改。

2 个答案:

答案 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。