在我的公司,我们有一些不同的网络应用程序,每个应用程序共享一些公共库。 Visual Studio设置如下所示。
Website 1 Solution Website 1 Shared Library 1 Project Shared Library 2 Project Website 2 Solution Website 2 Shared Library 1 Project Shared Library 2 Project Windows Service Solution Windows Service Project Shared Library 1 Project Shared Library 2 Project Shared Library Solution Shared Library 1 Project Shared Library 2 Project All Projects Solution Website 1 Website 2 Windows Service Project Shared Library 1 Project Shared Library 2 Project
我们想开始使用Mercurial进行源代码控制,但我仍然不确定最佳方法。
从我读过的内容来看,你应该为每个项目使用一个单独的存储库。没有问题,但Visual Studio解决方案文件(.sln)去了哪里?是否应该有一个只有.sln文件的单独存储库?
理想情况下,使用共享库的项目应该都使用相同的版本,并且“All Projects Solution”解决方案应该构建没有错误,但有时我们需要分支共享库。这样做的最佳方法是什么,以及如何设置存储库?
当每个项目都位于单独的存储库中时,如何获取Website 1解决方案的某个分支/标记的工作副本。我是否必须单独拉出每个,或者写一个脚本来一次完成所有操作? togise hg能为我做到这一点吗?
使这个过程更容易的其他任何提示?
答案 0 :(得分:1)
理想情况下,我会使用mercurial subrepositories来执行此操作。然后,您可以将“所有”解决方案放在主存储库中。其余的项目可以是其中的副本。 Mercurial也以递归方式支持子存储库。
不幸的是,TortoiseHg只列出了rudimentary support for subrepositories,所以你可能需要做出一些选择,让你更喜欢自己设置。
如果子存储库负担过重,那么将所有内容放在单个存储库中应该没问题。就Mercurial而言,它并不关心你是否在存储库中拆分了东西。唯一的限制是你的情况。如果项目被证明是如此之大,或者提交过于频繁,那么存储库管理就太麻烦了。
或者将所有内容拆分为单独的存储库并编写脚本。这完全取决于你。