Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将git存储库链接到多个TFS项目_Git_Tfs_Version Control_Git Tfs - Fatal编程技术网

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

将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

我有一个git存储库,需要作为一个共享库/公共代码跨多个其他项目共享。使用此通用代码的项目都是TFS项目(TFS2013)。我能够在TFS中托管git repo,但无法找出如何在不重复的情况下将git和TFS repo链接在一起

我试图实现的想法与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 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版本控制的情况。