目前,我们有一个项目的标准版本库的布局:

./树干
./树枝
./标签

然而,正如我们要搬下来的道路的访和一个模块化的项目,我们已经结束了:

./干/束/main
./干/束/modulea
./干/束/moduleb ./标签/束/主的1.0.0
./标签/束/主v1.0.1
./标签/束/modulea-的1.0.0

'的建立仍然是相当单中,它建立的所有模块的序列,虽然我开始不知道如果我们应该重构建立/repository到更多的东西,如:

./捆绑/main/干
./捆绑/main/标签/主的1.0.0
./捆绑/main/标签/主v1.0.1
./捆绑/modulea/干
./捆绑/modulea/标签/modulea-的1.0.0

在这个图案我想每个模块建筑物本身,并且其储存的二进制在一个仓库(专家,常春藤、或另一种路径的版本库本身)。

有没有准则或最佳做法'项目布局一旦一模块化?

有帮助吗?

解决方案

颠复本书包含两个部分:

一项关于这个问题: "颠复仓库的布局"

简短的回答,但:同时您的里程会有所不同(每一种情况是个人),您的 /bundle/<project>/(trunk|tags|branches) 方案是相当常见的,并可能会很好的工作。

其他提示

这是非常多,达到个人偏好,但是我找到的以下结构适用于大型项目,包括许多模块:

branches
  project-name
    module1
      branch-name
    module2   
      possibly-another-branch-name
    branch-name-on-a-higher-level-including-both-modules
      module1
      module2
tags
  ... (same as branches)
trunk
  project-name
    module1
    module2

我也经常使用的结构在很大的储存库包含许多项目,因为保留所有项目都在同一个储存库的使交叉引用的项目和共享码它们之间的历史—更加容易。

我喜欢使用的结构具有根的树干,标签和分文件夹,从一开始,因为在我的经验(大储存库包含许多项目),许多次级项目和模块将永远不会有单独的标签或分支机构,所以没有必要创建该文件夹结构。它还使得更容易用于开发人员检查了整个躯干的储存库,并没有得到所有的标签和分支机构(它们不需要的大部分时间)。

我猜这是一个问题的项目或公司政策。如果你有一个储存库对每一个项目或一定的开发仅仅是有可能的工作在一个单一项目在储存库中的时间将植树干可以不让尽可能多的意义。

只是我的两个分...

我只是想要强调的评论SVN文件(已经引用另一个的回答,同样线) http://svnbook.red-bean.com/en/1.4/svn.reposadmin.planning.html#svn.reposadmin.projects.chooselayout

摘录引用如下结构:/ 干/ 计算器/ 日历 电子表格/ ... 标签/ 计算器/ 日历 电子表格/ ... 分支机构/ 计算器/ 日历 电子表格/

"没有什么特别不正确的这样一个布局,但它可能会或可能似乎不如直观的用户使用。特别是在大多项目情况与许多用户,这些用户可能倾向于熟悉只有一或两个项目在储存库中。但是,本项目作为分支的兄弟姐妹倾向于强调项目的性和注重整个一套项目作为一个单一的实体。这是一个社会问题虽然。我们喜欢我们的最初建议的安排为纯粹实际的原因—这是更容易问(或修改,或迁移到其他地方)的整个历史上的一个单一项目时,有一个单一的储存库的道路,拥有整个历史过去、现在、标记和支用于该项目和项目一个人。"

为我自己,我倾向于同意很强烈,与此喜欢的布局如下:/ 工具/ 计算器/ 干/ 标签/ 分支机构/ 日历 干/ 标签/ 分支机构/ ... 办公室/ 电子表格/ 干/ 标签/ 分支机构/

原因很简单,它不切实际的标签一个完整的项目时,设置一个希望的标签只有一个特定子集。

让我们使用的一个例子:如果项目-1取决于moduleA v1。1moduleB v2。3的,我不想要新的moduleA v2。x要出现在标签。事实上,在回来的一些日/周/月之后,这种标记的释放,我将被迫开放束描述的标记版本的项目-1阅读的版本的moduleA实际需要。

此外,如果我必须做出一个具体的备份此释放的资源到CD,我只是想出这个标签,而不下载数百兆字节的无关的东西。

这只是我的两个美分。

我已经回答了一个类似的问题在一个计算器 版本控制结构的问题.它实际上适合,甚至更好的这里,因为我们沉重的访发展,并有很多的束。我必须回安德斯*桑维意见:保持干/标签/分支机构上的根本水平,因为你只会分有限的设置的模块。它也不会妨碍模块建筑的独立。

我不会复制回答我之前做出的,但它完全是有关这个问题。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top