一些SCM歧义

时间:2011-09-20 10:42:33

标签: svn version-control maven

在阅读有关修订控制的wikipedia article文章时,我发现了一些似乎含糊不清的术语,并且想知道它们在现实世界中是如何实际使用/应用的。具体做法是:

  • “主线”与“基线”
  • “Branch”vs“Stream”
  • “结帐”与“更新”
  • “供应商”文件夹vs工件仓库(如Maven或Ivy)

我是一个情境学习者,所以你可以给出的任何具体例子都可以帮助灯泡更好地开启。

关于最后一个,我的意思是:

至少在svn中,拥有VC项目结构是相当标准的:

svnrepo/
    someProject/
        trunk/
        branches/
        tags/
        vendor/

其中vendor/是放置配置所依赖的外部/第三方依赖项的位置。或者,我已经看到开发人员使用Maven或Apache Ivy等工具向/从存储库(例如SFTP服务器)提取/发布工件(JAR等)。 那么,您何时将第三方依赖项放在vendor/下的SCM中,何时将这些依赖项放在Maven / Ivy仓库中?

提前感谢您澄清任何这些项目!

1 个答案:

答案 0 :(得分:1)

  • “主线”与“基线”:
    第一个术语是一种特殊的分支,记录代码的演变,通常是生产中看到的代码。见this chapter
    第二个术语是关于一个标签(在一个组件的所有文件上设置,即一组连贯的文件)

  • “分支”与“流”:
    分支没有层次结构(您有一个分支列表,并且您可以从任何分支合并到任何分支)。 Streams有一个层次结构,除其他外,它允许定义merge workflow

  • “结帐”与“更新”
    Checkout查询特定版本的文件并将其复制到磁盘上 更新将确保磁盘上的所有元素都是当前选择规则的最新元素。


  • “供应商”文件夹vs“神器回购”(如Maven或Ivy) 神器仓库不提供合并,差异,分支等版本控制功能 供应商是VCS中的专用分支(在我看来应该避免使用binaries are not welcomed in a VCS,除非是certain reasons
  

那么你什么时候在供应商/的SCM中放置第三方依赖项?何时将这些依赖项放在你的Maven / Ivy仓库中?

您应该尝试将供应商库保留在VCS之外,只对版本pom.xml(例如)进行版本控制,以记录第三方库所需的配置(即标签列表)。