Svn 版本控制中的项目结构
我知道在版本控制中至少有10种不同的方法来构造项目。我很好奇正在使用的一些方法是什么,哪些方法对你有效。我曾与SVN、TFS和VSS合作过。我见过版本控制实现得很差,还可以,但从来都不是很好 为了让事情顺利进行,这里是对我所看到的事情的回顾 此示例基于SVN,但适用于大多数VCS(不适用于分布式版本控制)Svn 版本控制中的项目结构,svn,version-control,tfs,branch,project-structure,Svn,Version Control,Tfs,Branch,Project Structure,我知道在版本控制中至少有10种不同的方法来构造项目。我很好奇正在使用的一些方法是什么,哪些方法对你有效。我曾与SVN、TFS和VSS合作过。我见过版本控制实现得很差,还可以,但从来都不是很好 为了让事情顺利进行,这里是对我所看到的事情的回顾 此示例基于SVN,但适用于大多数VCS(不适用于分布式版本控制) 分支属于站点一部分的单个项目 /分部/web/projectName/vb/src/[trunk | branchs | tags] 分支整个站点,在我看到的例子中,除了核心组件,整个站点都被
编辑:第三方内容视情况而定。如果我可以避免它,我就不会将它置于源代码控制之下。我将它保存在源代码管理之外的目录中,并从那里包含它。对于jquery之类的东西,我确实将其置于源代码控制之下。原因是它简化了我的推送脚本。我可以简单地让它做一个svn导出和rsync 我认为团队采用的SCM策略和程序将非常依赖于他们使用的开发过程。如果你有一个50人的团队,有几个人同时进行重大更改,并且每6个月才发布一次,那么每个人都有自己的分支,在那里他可以独立工作,并且只在需要时合并来自其他人的更改,这是非常有意义的。另一方面,如果你是一个5人的团队,所有人都坐在同一个房间里,那么减少分支的频率是有意义的 假设您在一个沟通和协作良好且发布频繁的小团队中工作,那么将IMO分支是毫无意义的。在一个项目中,我们只是将SVN修订号滚动到我们所有发布的产品版本号中,甚至从未标记。在prod中发现了一个关键bug的罕见情况下,我们只需直接从发布的修订版分支即可。但大多数时候,我们只是修复了分支中的bug,并按计划在周末从主干中发布。如果你的发布足够频繁,你几乎永远不会遇到一个不能等到下一个正式发布的bug 我曾在其他项目中工作过,但由于轻量级开发过程和低调的仪式,我们能够非常有效地使用轻量级版本控制策略 我还将提到,我所写的所有内容都来自企业IT上下文,其中只有给定代码库的单个生产实例。如果我正在开发一个部署在100个不同客户站点的产品,那么分支和标记实践就必须更加繁重,以便管理所有实例中的所有独立更新周期 对于外部依赖性,比如AJAXTookit或其他一些在几个项目中使用的第三方扩展,又如何呢
源代码管理用于源代码,而不是二进制文件。将任何第三方程序集/JAR保存在单独的存储库中。如果你在Java世界工作,试试Maven或Ivy之类的东西。对于.Net项目,一个简单的共享驱动器可以很好地工作,只要您对它的结构和更新有合适的策略。对于我的项目,我总是使用这种结构
- 树干
- 配置
- 文件
- sql
- 首字母
- 更新
- src
- 应用程序
- 试验
- 第三方
- 解放党
- 工具
- 标签
- 分支机构
- 配置-用于存储我的应用程序配置模板。在构建过程中,根据构建的配置,我使用这些模板并用实际值替换令牌占位符
- 文档-所有应用程序文档都放在这里
- sql-我将sql脚本分为两个目录。一个用于初始数据库设置(当您开始刷新时),另一个用于根据数据库版本号运行的“我的更新”脚本
- src-应用程序源文件。在这里,我根据应用程序和测试中断源文件
- 第三方-这是我将我在应用程序中引用的第三方库放在GAC中不可用的地方。我根据lib和工具将它们分开。lib目录包含需要包含在实际应用程序中的库。tools目录包含应用程序引用的库,但仅用于运行单元测试和编译应用程序
我的解决方案文件与我的构建文件一起放在主干目录下。我们使用Java进行高度组件化的开发,我们有大约2个
svnrepo/
trunk/
modules/
m1/ --> will result in jar file
m2/
...
assemblies/
a1/
...
tags/
modules/
m1/
1.0.0/
1.0.1/
1.1.0/
m2/
...
assemblies/
a1/
iteration-55/
...
branches/
m1/
1.0/
...
+ devroot
+--Dept1
+--Dept1Proj1
+--Dept2Proj2
+--Dept2
+--Dept2Proj1
+--Tools
+--Purchase3rdPartyTools
+--NLog
+--CustomBuiltLibrary
/project
/trunk
/tags
/builds
/PA
/A
/B
/releases
/AR
/BR
/RC
/ST
/branches
/experimental
/maintenance
/versions
/platforms
/releases