2010-05-21 63 views
15

在我的公司,我们有几个不同的Web应用程序,每个应用程序都共享一些公共库。 Visual Studio安装程序看起来像这样。我应该如何在Mercurial存储库中设置我的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文件?

理想情况下,使用共享库的项目应该都使用相同的版本,并且解决方案“所有项目解决方案”应该无误地构建,但有时我们需要分支共享库。做到这一点的最佳方式是什么,以及如何设置存储库?

当每个项目位于单独的存储库中时,如何获取网站1解决方案的某个分支/标记的工作副本。我是否需要分别拉出每一个,或者写一个脚本来一次完成所有的操作?乌龟能为我做这件事吗?

任何其他技巧,使这个过程更容易?

+0

你有没有想过这个?我也很好奇。 – wtjones 2011-09-11 15:14:38

+0

不幸的是没有。我改变了工作,在我的新公司他们使用TFS进行源代码控制,这在某些方面更好,但它也有它自己的烦恼和限制。 – 2012-03-26 16:23:11

回答

1

理想情况下,我会用mercurial subrepositories来做到这一点。然后,您可以将“全部”解决方案放入主要存储库。其余的项目可以成为其中的一部分。 Mercurial也递归地支持子库。

不幸的是TortoiseHg只列出了rudimentary support for subrepositories,所以你可能需要做出一些选择来决定如何设置。

如果subrepositores太多的负担,你应该罚款将所有内容放在一个单一的存储库。就Mercurial而言,它并不关心你是否在存储库中分割了某些东西。唯一的限制就是你的情况。如果这些项目被证明是如此之大,或者过于频繁,那么例如,存储库管理就太痛苦了。

或将所有内容拆分成单独的存储库并编写脚本。这完全取决于你。

相关问题