在Git(BitBucket)中托管的项目中包含来自SVN(本地)的类库

时间:2016-05-05 21:41:33

标签: git svn bitbucket git-submodules git-subtree

我有一个简单的类库,目前驻留在本地托管的SVN中。我正在开发一个MVC项目,该项目位于通过bitbucket托管的GIT中。类库是我需要在MVC项目中引用的生产Web服务的包装器。类库仍在积极维护,每月查看一次更新。我正在寻找将类库合并或引用到我的MVC项目中的最佳方法,而不会过于严重地破坏源代码控制。以下是我在网上遇到的想法:

  • 从源代码构建类库,在我的MVC项目中包含已编译的DLL,并监视此类库的SVN签入,以便知道何时需要重新构建DLL。
  • 将类库的源代码作为我的MVC项目解决方案的一部分包含在内,并将类库构建为MVC项目的MSBuild任务的一部分。
  • 我不是GIT大师,但在阅读了一些文档后,我不相信GIT子树在这种情况下会起作用,因为我想要引用的外部存储库是在SVN中托管的,而不是git。 / LI>
  • 我也不相信GIT子模块也适合。

在我的MVC项目中是否有一种简单的方法来引用这个类库?如果有帮助,我觉得我不会将此类库的更改提交回SVN,我只会阅读回购,而不是执行签到。

1 个答案:

答案 0 :(得分:0)

经过广泛的研究,我做了以下几点:

更新我的GitIgnore以阻止.svn

将SVN项目签出到MVC项目解决方案中的子目录,例如SolutionDir \ SVNProjectDir

在我的MVC项目的CSPROJ文件中,我添加了以下内容:

<Target Name="BeforeBuild">
  <Exec Command="svn update $(MSBuildProjectDirectory)\..\SVNProjectDir" />
</Target>

这会强制MVC项目在构建之前获取SVN项目的最新版本。最终结果是我所需的代码库包含在我们所有用户的Git源代码控制中。

重要的是要注意,如果用户没有安装SVN客户端或者没有在项目中正确设置SVN目录,则构建前任务不会停止构建项目。这在我的团队中是可以接受的,但可能并不适合所有人。