【问题标题】:Correct workflow for managing a private Subversion fork:管理私有 Subversion 分支的正确工作流程:
【发布时间】:2024-01-03 23:40:01
【问题描述】:

我想分叉一个开源项目。它有一个公共 SVN 存储库,我想从中签出源代码,将其克隆到我的私有存储库中,然后开始进行更改。如果可能的话,我希望将来能够合并来自上游存储库的更改。到目前为止,我已经能够做到这一点:

  1. 在我自己的存储库中为此项目创建一个文件夹。
  2. 查看这个空文件夹。
  3. 将原始项目签出到另一个位置。
  4. 删除此新位置中的所有 .svn 子目录。
  5. 将文件复制到我的私有存储库的工作副本中,提交一次,然后开始进行更改。

这可行,但看起来很难看,我根本不相信合并会正常工作。有没有更好的办法?

编辑:为了排除“只需提交补丁”的回复,只需说这是我的应用程序中需要的功能,但由于它故意破坏与现有功能的兼容性,上游不会接受它。

【问题讨论】:

  • 您是否尝试过将公共存储库分支到您的私人文件夹?
  • 您能详细说明一下吗?我还需要先创建并签出一个空白文件夹吗?

标签: svn open-source merge


【解决方案1】:

我会建议你看看 Git。

是的,该项目正在使用 Subversion,但 Git 有一个方便的小技巧,可以从 Subversion 中提取修订,允许您使用 Git 进行自己的个人版本控制,然后将更改提交回 Subversion。

这将使您与 Subversion 保持同步,并且仍能充分利用修订控制系统。

看看git svn

如果你不想学习 Git(你也可以,因为大多数开源项目都在转向它),你可以看看 svk

【讨论】:

  • 有趣。我正在使用外部 SVN 提供商,我不确定他们是否使用 Git(我必须测试我所有的 IDE 和东西),但我会调查一下。
  • @Dan - 你的外部供应商是否使用 Git 并不重要。 “git svn”允许您与外部提供商的 Subversion 存储库进行交互。您初始化 Git 以将 Subversion 存储库视为 Git 主机,并在本地计算机上创建一个新的 Git 存储库。完成后,您将内容发布到 Subversion 存储库。据 Subversion 存储库所知,您只是进行了签出和提交。
【解决方案2】:

您需要的是“Vendor Branches”,这是众所周知的工作流程。

【讨论】:

  • 谢谢,我阅读了这篇文章,但似乎建议每次我想更新供应商分支时,我都必须手动将代码复制到该分支的工作副本中。有没有办法继续使用 Subversion 呢?
【解决方案3】:

svn export 将为您完成大部分工作。

【讨论】:

  • 谢谢,这看起来对第 4 步和第 5 步有帮助,但我的其余顺序是否正确?
最近更新 更多