首先,我知道这一点:您如何为内部软件项目组织Subversion存储库? 接下来,实际问题:我的团队正在重构我们的存储库,我正在寻找有关如何组织它的提示.(在这种情况下为SVN).这就是我们想出的.我们有一个存储库,多个项目和多个svn:externals交叉引用
\commonTools /*tools used in all projects. Referenced in each project with svn:externals*/
\NUnit.v2.4.8
\NCover.v.1.5.8
\<other similar tools>
\commonFiles /*settings strong name keys etc.*/
\ReSharper.settings
\VisualStudio.settings
\trash /*each member of the team has trash for samples, experiments etc*/
\user1
\user2
\projects
\Solution1 /*Single actual project (Visual Studio Solution)*/
\trunk
\src
\Project1 /*Each sub-project resulting in single .dll or .exe*/
\Project2
\lib
\tools
\tests
\Solution1.sln
\tags
\branches
\Solution2
\trunk
\src
\Project3 /*Each sub-project resulting in single .dll or .exe*/ …Run Code Online (Sandbox Code Playgroud) 我知道在版本控制中至少有10种不同的方法来构建项目.我很好奇使用的方法是什么,哪些方法适合你.我曾与SVN,TFS以及目前/不幸的VSS合作过.我已经看到版本控制实现得非常糟糕而且很好,但从来都不是很好.
为了让球滚动,这里是对我所看到的事情的回顾.
此示例基于SVN,但适用于大多数VCS(与分布式版本控制无关).
分支作为site/division/web/projectName/vb/src/[trunk | branches | tags]一部分的各个项目
分支整个站点,在我看到的情况下,整个站点除了核心组件是分支的./部门/ [车厢|分支机构|标签] /网站/项目名称/ VB/src目录/
使用main-line作为默认值,仅在必要时进行分支以进行大量更改.
我在一家主要业务与软件无关的公司工作.大多数使用源代码控制的文档都是由开发团队编写的,用于编写商业或开源项目.作为编写内部软件的人,我可以说工作的完成方式与商业或开源设置不同.此外,存储过程和数据库脚本需要与代码保持同步.
特别是我希望得到关于如何最好地使用内部软件构建存储库的建议.大多数文档都建议使用主干,分支,标签等.以及保持生产,测试和开发环境与存储库中各自部分保持同步的过程.
两个团队正在开展两个不同的项目"A"和"B".某些文件对两个项目都是通用的,并存储在"Common"目录中.当项目A的发布日期临近时,项目A的团队不希望被团队"B"对"共同"的修改所困扰.
大多数人喜欢这类问题的分支机构,但事实并非如此.我想要的是给A队一个简单的可能性
1)忽略团队B对Common文件所做的所有修改
2)在A队成员之间共享Common文件的修改
以下是存储在svn上的A,B,Common目录:
Common
.. A
.. B
Run Code Online (Sandbox Code Playgroud)
我想要实现的想法是将"Common"目录设置为只读而不能更新到A队.如果他们真的想修改Common文件,他们必须将它们复制到目录"A"中并提交它们.
有没有一种方法,理想情况下是一种简单而优雅的方式来"做那种"?
注意:这是该问题的简化表述.不仅仅有两个团队,而且不仅仅是一个"共同"存储库
NB2:所有球队都使用tortoiseSVN