首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >处理多个subversion项目之间的关系

处理多个subversion项目之间的关系
EN

Stack Overflow用户
提问于 2009-09-10 12:46:48
回答 5查看 459关注 0票数 4

在我的公司中,我们使用一个SVN存储库来保存我们的C++代码。代码库由公共部分(基础结构和应用程序)和客户端项目(作为插件开发)组成。

存储库布局如下所示:

  • 基础设施
  • App1
  • App2
  • App3
  • 客户项目-1
    • App1 1-插件
    • App2-插件
    • 配置

  • 客户项目-2
    • App1 1-插件
    • App2-插件
    • 配置

客户端项目的典型版本包括项目数据和它使用的每个项目(例如,基础设施)。

每个目录的实际布局是-

  • 基础设施
    • 分支
    • 标签
    • 中继线

  • 客户项目-2
    • 分支
    • 标签
    • 中继线

其他项目也是如此。

我们对上面的布局有几个问题:

  1. 很难为客户端项目启动一个新的开发环境,因为必须检查所有涉及的项目(例如:基础设施、App1、App2、面向客户的项目-1)。
  2. 基于上述原因,很难在客户端项目中标记发行版。
  3. 如果客户端项目需要更改一些公共代码(例如,基础设施),我们有时会使用分支。很难跟踪项目中使用了哪些分支。

SVN中有任何解决上述问题的方法吗?我想在客户端项目中使用svn:externals,但是在阅读了这个职位之后,我知道它可能不是正确的选择。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2009-09-10 13:36:24

您可以使用svn:externals来处理这个问题。这是svn中某个点的url,它允许您提取不同存储库(或同一个存储库)的部分内容。使用它的一种方法是在project 2下添加一个svn:externals链接到您需要的基础设施分支、您需要的app1分支等等。因此,当您签出project 2时,您将得到所有正确的部分。

svn:externals链接与其他所有链接一起都是版本化的,因此当1被标记、分支和更新时,正确的外部分支总是会被拉进来。

票数 3
EN

Stack Overflow用户

发布于 2009-09-10 12:56:57

是啊,糟透了。我们做同样的事情,但我真的想不出更好的布局。

因此,我们所拥有的是一组脚本,它可以自动化所有与subversion相关的内容。每个客户的项目将包含一个名为project.list的文件,其中包含构建该客户所需的所有subversion项目/路径。例如:

代码语言:javascript
复制
Infrastructure/trunk
LibraryA/trunk
LibraryB/branches/foo
CustomerC/trunk

然后,每个脚本看起来都是这样的:

代码语言:javascript
复制
for PROJ in $(cat project.list); do
    # execute commands here
done

其中的命令可能是签出、更新或标记。它比这要复杂一些,但它确实意味着一切都是一致的,签出、更新和标记成为一个单一的命令。

当然,我们尽量少做分支,这是我能提出的最重要的建议。如果我们需要分支某些东西,我们将尝试离开主干或尽可能多的依赖项的先前标记的版本。

票数 2
EN

Stack Overflow用户

发布于 2009-09-10 13:13:48

建议将目录布局更改为

  • 基础设施
    • 分支
    • 标签
    • 中继线

  • 客户项目-1
    • 分支
    • 标签
    • 中继线

  • 客户项目-2
    • 分支
    • 标签
    • 中继线

  • 分支
    • 特征-1
      • 基础设施
      • 面向客户的项目-1
      • 面向客户的项目-2

  • 标签
  • 主干
    • 基础设施
    • 面向客户的项目-1
    • 面向客户的项目-2

这个布局也有一些问题。分支变得庞大,但至少在代码中标记特定位置更容易。

要处理代码,只需签出主干并使用它。那么,您就不需要检查所有不同项目的脚本了。他们只是用“./ Infrastructure”来指基础设施。这个布局的另一个问题是,如果您想完全独立地处理项目,则需要签出几个副本。否则,一个项目的基础设施更改可能会导致另一个项目在更新之前不会编译。

这可能也会使发布更加繁琐,并将不同项目的代码分离开来。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1405091

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档