【问题标题】:SVN branching base code into a project that updatesSVN 将基础代码分支到更新的项目中
【发布时间】:2015-11-02 20:52:04
【问题描述】:

首先,如果有任何重复的问题,我深表歉意。我确实尝试(一点)找到它,但没有成功。

场景:

假设您已经编写了自己的 PHP 框架(正如您所做的那样),并且就目前而言,它是一个没有作用域的 shell(应该如此)。然后你就有了一个项目,只需在这里和那里添加一些文件来让你的魔法发生,对吧?

我有存储库 A(框架),其中包含我所有的轮子改造革命性源代码。我想要包含整个框架(可能是 Repo A 的一个分支)的存储库 B(项目)以及使魔术发生的少数项目文件。我希望 Repo B 更新对 Repo A 所做的任何修订,但对项目的任何更改都仅限于 Repo B(因此不承诺 A)

我最初的想法:

使用分支创建框架的副本,然后添加我的项目文件而不打算合并。这样做的问题是分支不会更新复制后所做的任何更改,因为 SVN 计划稍后合并更改。我还尝试将框架保存在一个文件夹中(结帐 repo A),并将特定于项目的代码保存在另一个文件夹中(结帐 repo B),但这不是一个很好的解决方案,因为这意味着我不能使用 1 个庞大的文件夹。

我的实际问题:

有没有一种方法可以让存储库扩展(仅更新)另一个存储库,或者以分支副本(项目)在复制后跟踪修订的方式进行分支。

要明确:

  1. 我不想在子文件夹中单独存储库,例如 Symfony 使用 src/A 和 src/B 和 vendor/C 等。

  2. 我知道冲突,因为项目可能会在这里和那里覆盖框架文件。解决任何更改时都需要尽职调查

  3. “只使用 git”不是答案。我的 SVN 服务器需要花费数周时间来设置和更改,这将是一场噩梦,所以不是一个选择。

我的设置: 我在本地开发网络中同时使用 Windows 上的 Tortoise 和 linux 上的 svn。 repo 服务器是远程的,在 CentOS 6 上运行 SVN 1.5.2(如果你问我为什么是 1.5.2,你最好留出 3 个小时)

我真的希望我在 SVN 世界中缺少一些东西。我只分支过几次,所以希望我只是不知道自己在做什么,有人可以说“在这里,笨蛋”。任何反馈都非常感谢,干杯。

【问题讨论】:

    标签: svn repository branch


    【解决方案1】:

    如果您将通用代码视为第 3 方代码,那么您所描述的内容听起来像是 Subversion Vendor Branch strategy(实际上并不是特定于 SVN)

    来自 SVN 文档:

    解决此问题的方法是使用供应商分支。供应商分支是您自己的版本控制系统中的目录树,其中包含第三方实体或供应商提供的信息。您决定吸收到项目中的供应商数据的每个版本都称为供应商丢弃。

    供应商分支机构有两个好处。首先,通过在您自己的版本控制系统中存储当前支持的供应商drop,您可以确保您的项目成员永远不需要质疑他们是否拥有供应商数据的正确版本。他们只是在定期工作副本更新中收到正确的版本。其次,由于数据位于您自己的 Subversion 存储库中,您可以将自定义更改存储在原地 - 您不再需要自动(或更糟糕的是,手动)方法来交换自定义。

    但是,您也可以考虑将通用代码作为第三方库或包进行管理。这样做将允许您使用其他包管理工具——而不仅仅是源代码控制系统。例如,考虑Composer

    【讨论】:

    • 感谢 Jared 提供的材料,我以前看过这个,但是当我看到我的分支没有收到更新时,我完全怀疑分支,会读一读,看起来很有希望,所以这是一个过早的接受你的答案:)
    猜你喜欢
    • 1970-01-01
    • 2012-10-14
    • 1970-01-01
    • 2012-08-13
    • 2017-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多