创建和应用svn补丁的过程

时间:2013-02-01 00:08:55

标签: php svn

我使用第三方库作为我的代码库的一部分。它有一个错误,我有两个选择:

  1. 创建并覆盖类以提供大的自由行为。
  2. 为错误创建一个svn补丁
  3. 我更喜欢2,因为逻辑上它更有意义,但我不知道如何做到这一点,

    我是否执行以下操作:

    1. 修改第三方库代码
    2. 创建补丁文件
    3. 还原我的存储库
    4. 应用补丁文件
    5. 将补丁文件添加到存储库
    6. 提交我的更改
    7. ...

      如果我应该使用补丁,那么它将存储在存储库中?

1 个答案:

答案 0 :(得分:1)

检查Vendor Branches

  

但有时您希望在自己的版本控制系统中维护对第三方代码的自定义修改。 [...]这些修改可能包括新功能或错误修复,[...]。

     

现在你面临一个有趣的情况。您的项目可以以某种脱节的方式对第三方数据进行自定义修改,例如使用补丁文件或完整的文件和目录替代版本。但是这些很快就变成了维护问题,需要一些机制来将自定义更改应用于第三方代码,并且需要使用您跟踪的第三方代码的每个后续版本重新生成这些更改。

供应商分支基本上是一个目录(我们称之为A),其中包含未经修改的源代码版本。您将此目录分支到您的项目(或任何其他位置,我们称之为X)并将您的路径应用于此分支。如果供应商更新了他的组件,您将把它导入目录(我们称之为B)。要更新您自己修改的库,您将在B和A之间进行合并,并将其应用于X.这样,您可以保留修改,但也可以获得供应商软件版本之间的所有更改。

请记住在合并命令上使用--ignore-ancestry选项否则您将替换已更改的文件而不应用差异