我刚刚在我们公司为我们的Visual Studio项目引入了SVN,并创建了如下所示的存储库(“解决方案”是Visual Studio解决方案,包含1..n个项目):SVN Visual Studio存储库的工作目录结构
/solution1/trunk/projectA/...
/projectB/...
/solution2/trunk/projectC/...
/customerX/solution3/trunk/projectD/...
/solution4/trunk/projectE/...
/projectF/...
现在,我有两个选择构建本地工作目录:
选项A:让每一个单独的解决方案使用AnkhSVN的用户结账,导致结构是这样的:
/solution1/projectA/...
/projectB/...
/solution2/projectC/...
/solution3/projectD/...
/solution4/projectE/...
/projectF/...
或此,如果我告诉用户手动创建一个子目录customerX:
/solution1/projectA/...
/projectB/...
/solution2/projectC/...
/customerX/solution3/projectD/...
/customerX/solution4/projectE/...
/projectF/...
优势:用户可以只检出,他真正需要的解决方案。缺点:每个解决方案都需要单独检查/更新。
选项B:告诉用户结帐使用TortoiseSVN是整个仓库,导致这是完全一样的存储库的结构:
/solution1/trunk/projectA/...
/projectB/...
/solution2/trunk/projectC/...
/customerX/solution3/trunk/projectD/...
/solution4/trunk/projectE/...
/projectF/...
优势:它很容易为“SVN更新一切”。缺点:用户还拥有所有分支机构和标签的本地副本。
问题:由于一些项目的解决方案(比方说,例如,该了projectA是也使用solution3库),我们需要修复一个目录结构,以确保共享的相对路径在解决方案文件中是正确的。你推荐哪个选项,为什么?
编辑:感谢您的所有优秀的答案,特别是提svn:externals
和强调一个好的库设计的重要性。我结束了更新我的库结构:
/trunk/solution1/projectA/...
/projectB/...
/solution2/projectC/...
/customerX/solution3/projectD/...
-svn:external to projectA
/solution4/projectE/...
/projectF/...
从而确保工作solution3 开发商只需要检查solution3(而不是解决方法1)和解决方案可以签出到任何目录即,工作目录不需要固定的结构。
好的问题,顺便说一句... – David 2009-11-02 15:38:01