分叉Subversion项目

9
我从未分叉过一个项目,所以我不知道该如何继续。我有一个自己使用并发布为BSD许可证项目(项目A)。在工作中,我想使用那些代码,但需要根据我们公司的具体修改(项目B),但我仍然希望能够更新来自基础代码的功能。
有没有最好的方法来处理两个项目的分叉,并将来自项目A的更改合并到项目B中,而不会覆盖我对项目B所做的修改?
它被拆分成两个实体,我的主要存储库位于Google Code上,公司版本则位于我们自己的内部存储库中。我的问题是,在升级版本时保持一切正常,同时保留自定义修改。
3个回答

4
请查看之前提到的《Subversion书籍》中讨论“供应商分支”的章节。该章节讨论了如何处理外部子项目,以便在外部项目更新时合并更改并合并您自己的本地修改。
如果您将托管在Google Code上的项目的公共版本视为公司代码中的外部依赖项,则此方法应该可以很好地工作。

2
在Subversion中,“forking”是“branching”,而“合并更改”是“merging”。
我认为你不能不仔细阅读Subversion书籍的相关章节。一旦你投入时间去阅读,它非常清晰易懂。

是的,我知道 :) 我的问题是有两个单独的存储库,而不是在一个存储库中进行分支/合并。 - dragonmantank
你不能分支,但是你可以导出当前版本的项目并将其添加到另一个仓库中(这样你就有了一个全新的副本)。一旦在那里,你仍然可以在它们之间进行合并。 - gbjbaanb

0

除非Work愿意将这些修改释放回原始项目,否则我会在那里开始一个全新的SVN项目(项目B)。然后,随着你进入下一个BSD许可项目(项目A)的发布,你可以从上一个版本中制作更改集,然后将它们应用到项目B中。

这可能看起来像多重人格障碍,但你必须根据你所处的位置(Word或Home)扮演两个不同的实体。

另一方面,如果Work愿意将这些修改释放回原始项目,那么你更好的选择是创建一个分支,并将你对项目A的更改定期合并到项目B中。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接