![]() |
1
2
我愿意 保持一切 在里面 一个仓库 把每个项目 图书馆 在存储库的单独根目录中(请参见 Planning Your Repository Organization 详情请参阅。 记住存储库结构 不必 与磁盘上的项目文件结构相同。 我也会 使用 svn-externals 在不同的项目之间共享库目录(作为存储库的单独根文件夹保存)。 |
![]() |
2
2
我是来自协作云服务公司的杰克。首先,感谢您成为一个编码客户! 你用“项目”来描述你的情况,但这是一个模棱两可的术语,颠覆本身根本没有任何概念。这里真正要考虑的不是颠覆本身,而是您的构建工具和发布策略。您想要的配置最能支持您想要做的事情。 例如,所有这些应用程序和库是否同时发布?完全独立?有些混合?这个答案可能会改变吗? 如果它们都是一次性发布的,那么尽可能容易地识别每个应用程序的哪个版本与其他应用程序的哪个版本一起发布就有重要的价值。通过这种方式,可以验证错误报告,实现修复,并以一致、一致的方式合并补丁。为了达到这个目的,我会 不 使用一些人建议的/app/主干、标签、分支结构,但要遵循规范
结构。这允许您在一个命令中对整个树、所有应用程序和库进行分支、标记和合并:
另一方面,如果这些东西是独立的,那么你最好
例如,通过这种方式标记一个应用不会影响另一个应用。 在混合的情况下,您仍然可以实现协调的分支(如果合适的话),但是您必须在工作副本中使用分支,或者稀疏签出(如果工作副本很大)。或者,您可以标记或分支整个存储库,即使标记或分支对大多数存储库没有意义:Subversion标记和分支存储起来很便宜,而且(如果您使用URL到URL形式的“svn cp”)制作起来也很便宜;不将事物标记为不相关的标记的唯一原因是,它会混淆人类。但这是一个很强的原因,所以混合模型最好用“app/trunk”结构处理,以避免混淆。 您可以在Apache基金会存储库中找到“/APP/Bar”方法的好例子。所有Apache项目(包括Subversion本身)都存储在一个Subversion存储库中。那里有大约100个项目,尽管有一些相互依赖关系,但它们几乎都是独立管理的。你可以浏览这个巨大的回购(可能是公共世界上最大的单一颠覆性回购),从 root of all ASF projects . 在实践中有一些多样性,但一个很好的例子是 Subversion itself . 同样值得注意的是:就颠覆而言,你总是可以改变这些东西。“标签”和“分支”实际上只是复制品;你可以随意地在你喜欢的时候重新排列东西。但也有一些警告:
|
![]() |
3
0
我建议在同一个存储库中使用以下布局:
现在,我对您的发布时间表做了一些假设。我假设每个应用程序和库是在不同的计划下发布的。实际上,这是一个最坏的情况,但我的计划允许这样做。每个应用程序都需要预先编译其依赖项,并将其包含在存储库的目录中。鉴于App1依赖于库B和库C,它的外观如下:
这意味着,每当您对主干进行分支时,都会得到必要的库,这大大简化了事情。请注意,它是库的已编译二进制文件,而不是它们的源文件。 主干的一个分支将使用上述版本,由于不允许修改它们,所以任何错误修复都需要进入App1。同时,要使用libb&c的新版本,当库团队发布它们时,您可以在主干中更新它们的版本。因此,一段时间后,您的存储库可能如下所示:
主干中的工作允许使用最新的库版本。版本1.0使用的是固定版本(这里是最早的版本),而稳定分支使用的是以前版本的库。 上面的计划是我在上一个雇主那里想了很多,但却一直没有付诸实施。要使其工作,您需要将代码库拆分为应用程序/库,并且开发可以并行进行。我们不是这样的。但我坚信这是一个值得一试的目标。 祝你好运! 另外,我强烈推荐 反对 外部的。他们可以使分支机构管理更加困难。例如,如果一个外部变更和一个分支依赖于它,那么您就有可能把这个分支弄乱(例如使它不可编译)。 |
![]() |
Eric · pip安装-e svn+ssh不接受用户 6 年前 |
|
Anu699 · 在git中管理多个项目的最佳方式是什么?[已关闭] 6 年前 |
![]() |
Dipu H · Viewvc未扩展关键字 6 年前 |
![]() |
NealWalters · SVNLook-存储库格式-语法不正确 6 年前 |
![]() |
m-mas · 尝试与svn重新同步trac时出错 6 年前 |
![]() |
Wombattle · 通过命令行在SVN中保留时间戳 6 年前 |