2017-08-11 70 views
0

我是团队服务(基于web)构建过程的新手。以前我问过使用TF进行版本控制的解决方案的另一个问题。感谢一位伟大的人士解决了这个问题。我现在正在尝试使用git进行版本控制,并遇到类似的情况。VS团队服务git依赖项构建

我有一个解决方案1与项目A和B,其中B是依赖于A(公共代码)。项目A采用不同的解决方案2,但通过“添加...现有项目”添加到解决方案1中。这两个解决方案和项目都在不同的git仓库中。我使用项目B的子模块来引入项目A,并且该部分可以工作。但是,当构建代理尝试构建项目B时,项目A被拉入“d:\ a \ 1 \ s \ ProjectA”和 之间,它正在查看“d:\ a \ 1 \ s \ ProjectB ...” 。\ ProjectA \“作为依赖关系。如何更改此部分以告知构建代理项目A的位置?或者我该如何告诉子模块将项目A拖到“d:\ a \ 1 \ s \ ProjectB .... \ ProjectA \”?

谢谢!

回答

0

由于您将ProjectA添加为ProjectB的子模块,所以您应该通过在子模块中选择ProjectA(而不是解决方案2)来添加ProjectB的相关项。所以你应该删除你添加的projectA,然后使用Add - > Existing Project - >从子模块中选择projectA - > OK。

然后提交/推送更改到VSTS git回购。并建立你的ProjectB,它应该找到在子模块路径的依赖。

或者如果您想要位于root/ProjectB/.../ProjectA的子模块在您的本地回购中,则应转至目录root/ProjectB/...,并使用git submodule add <URL for the repo including ProjectA>。然后子模块将位于root/ProjectB/.../ProjectA

+0

谢谢,谢谢!无论如何,我正在使用第二条路线。以前,当我将子模块加载到不同的文件夹结构(在根中,然后在解决方案文件上方1层)时,我被绊倒了两次。我在我的本地仓库中的项目B级别加载了子模块,并且它工作,但是在我不得不手动更改.gitmodules之前。问题 - 为什么.gitmodules中的路径是一个相对路径(我不得不将它更改为本地路径以使其工作),以及为什么在其中有两个条目?一个是[项目A],另一个是[项目B /项目A]。 – Joe

+0

'.gitmodules'使用相对路径,以便git很容易找到哪个目录是子模块。实际上,只有一个条目是您为添加的引用选择的路径(看起来您通过选择'ProjectB /.../ ProjectA'添加了引用),对于'projectA /',它只是您添加的子模块projectB,构建只会找到你在'ProjectB /.../ProjectA'中指定的引用。 –