如何应用Django补丁?

时间:2012-03-28 10:49:05

标签: django patch

我正在使用Django 1.3.1版本开发一个Django应用程序: https://code.djangoproject.com/browser/django/tags/releases/1.3.1

我遇到了一个由Django团队识别和修复的错误: https://code.djangoproject.com/ticket/16128

与错误解决相关联的变更集位于Django主干中 https://code.djangoproject.com/changeset/17755

我的问题是:如何在不升级到Django主干版本的情况下利用错误解决方案?

票证附有大量文件,最新的是: https://code.djangoproject.com/attachment/ticket/16128/16128.diff

我可以看到这个文件是标准的'diff'文件,可以通过'patch'实用程序处理。我尝试将它应用于我的django 1.3.1安装(在开发机器上),但它不起作用......源代码行(要替换)并不完全是diff文件所期望的那条。

哪个'开始状态'确实引用了这个差异文件?换句话说,它可以应用于哪个django版本?

除了“手动”应用它还有其他方法吗?即使我手动应用它,我也可以看到补丁代码调用补丁中未包含的新版本的方法...这意味着我必须通过阅读代码找出其他文件必须修补的内容,以及修补它们......

在这一点上,我认为:“哇,这是复杂的,让我们等待下一个版本的Django - 1.5,这张票 - 并找到一个解决方法!”。但是,另一方面,如果补丁系统存在,则必须可以将此补丁应用于我的Django 1.3.1安装......

有没有人遇到过同样的问题?如果是这样,你是如何管理它的?

提前感谢您的帮助

1 个答案:

答案 0 :(得分:3)

您是否真的尝试过几天前发布的Django 1.4版本?我很确定它是其中的一部分。

无论如何......你可以在你引用的变更集页面上获得官方差异 - 在底部有一个指向统一差异的链接。您可以从那里下载补丁并使用它来修补(1)您的版本(请注意,如果Django团队发布了Django 1.3的新安全版本,您可能需要再次应用它)。但是,这些差异总是针对修补程序提交时的最新代码库。出于这个原因,有时你可能运气不好(就像你上面描述的那样)并且它可能不适用于之前的版本。在这种情况下,您必须追踪使其工作所需的所有更改,这可能是相当多的工作,可能是不可接受的。因此,只有三种选择:找到自己的方法来处理bug,跟踪干净地应用补丁所需的所有更改,或者升级到给定的版本。

相关问题