我的项目中有以下情况:
将有2个源代码库,但是每个代码库的某些部分(可能不止一个)应该具有“共享”区域。
让我们假设存储库及其文件夹(以及这些文件夹中的文件)的以下结构。
Repo1
Repo2
“folderA”应包含完全相同的“副本”文件。因此,当我对Repo1 / folderA进行一些更改,然后检查/更新Repo2 / folderA时,我应该能够看到这些更改。当然,如果它可以在相反的方向上起作用,那将是很好的。
不幸的是,我无法以其他方式构建源代码并创建某种共享库。
我正在寻找可以帮助我以最佳方式解决此问题的VCS(SVN,Git,...)?你对这种设置有什么经验吗?你能推荐什么吗?
答案 0 :(得分:3)
如果您正在使用Subversion,那么您可以使用externals,这将允许您在存储库中使用共享代码拥有一个文件夹,并且您的两个项目文件夹中的每个中继将具有其外部property设置为指向此共享存储库位置。
这是双向的,因此您可以更改共享文件夹,当您更新任一项目文件夹时它们将被选中,或者您可以从本地项目文件夹进行更改,并且它们将被提交到共享存储库文件夹
但是,您应该了解issues的外部因素。
另一种选择可能是将共享代码的源完全分离到第三方库中,然后使用NuGet将该库轻松部署到各种项目中。例如,TeamCity可以在共享库代码的提交中为您构建NuGet包(并充当NuGet包服务器)。
答案 1 :(得分:1)
使用git,您可以创建仅包含共享文件(folderA)的第三个(共享)repo。然后Repo1和Repo2都可以将共享仓库包含为submodule,所以:
Repo1/folderA ->
/folderB \
/folderC \
-> Repo3/folderA
/
Repo2/folderA ->-
/folderD
/folderE
缺点:
如果重要的话,好处就是你可以阅读和许可。单独写入对所有三个回购的访问权。
使用
肯定要容易得多Repo/shared/folderA
/project1/folderB
...
/project2/folderD
...
如果可能的话(构建系统也可能更容易实现)。但你确实失去了独立许可你的两个项目的能力。