6

Pinax 开发过程中出现的一个问题是处理外部应用程序的开发版本。我正在尝试提出一个不涉及引入版本控制系统的解决方案。原因是我宁愿不必在我的系统上安装所有可能的版本控制系统(或强加给贡献者)并处理环境创建期间可能出现的问题。

拿这种情况来说(知道 Pinax 是如何工作的,会有利于理解):

我们正在开始开发新版本的 Pinax。以前的版本有一个 pip 要求文件,其中设置了明确的版本。我们希望解决的外部应用程序出现错误。要在 Pinax 中修复该错误,当前流程是简单地制作应用程序的次要版本,假设我们可以控制该应用程序。我们无法控制的应用程序我们只是处理应用程序作者的发布周期或强迫他们发布 ;-) 我不太喜欢不断地发布小版本来修复错误,因为在某些情况下我想成为也在为应用程序开发新功能。当然,分支旧版本是我们所做的,然后根据需要进行反向移植。

我很想听听对此的一些想法。

4

4 回答 4

3

您可以使用“==dev”版本说明符来处理这个问题吗?如果 PyPI 上的发行版页面包含指向当前开发版本的 .tgz 的链接(例如 github 和 bitbucket 都自动提供)并且您将“#egg=project_name-dev”附加到该链接,easy_install 和 pip 都将使用该链接.tgz 如果 ==dev 被请求。

这不允许您定位到比“最近的提示/头”更具体的任何内容,但在很多情况下,这可能足够好?

于 2009-11-10T06:29:51.987 回答
3

I meant to mention that the solution I had considered before asking was to put up a Pinax PyPI and make development releases on it. We could put up an instance of chishop. We are already using pip's --find-links to point at pypi.pinaxproject.com for packages we've had to release ourselves.

于 2009-11-10T07:40:16.103 回答
1

大多数开源发行商(Debian、Ubuntu、MacPorts 等)都使用某种补丁管理机制。就像这样:将每个包的基本源代码导入为已发布、tar 球或 SCM 快照。然后使用补丁管理器管理任何必要的修改,例如被子Mercurial 的队列。然后以一致的格式将每个外部包与任何应用的补丁捆绑在一起。或者拥有基础包的 URL 和各个补丁的 URL,并在安装期间应用它们。这基本上就是MacPorts所做的。

编辑:更进一步,您可以对所有外部软件包的补丁集进行版本控制,并将作为一个单元提供。使用 Mercurial Queues 很容易做到这一点。然后,您将问题简化为仅使用一个 SCM 系统发布一组补丁,这些补丁如上所述在本地应用,或者可供开发人员提取并应用到他们的基本发布包副本。

于 2009-11-10T06:30:26.513 回答
0

编辑:我不确定我是否正确阅读了您的问题,因此以下内容可能无法直接回答您的问题。

我考虑过但没有测试过的东西是使用 pip 的 freeze bundle 功能。也许使用它并使用 Pinax 分发捆绑包会起作用?我唯一关心的是如何处理不同的操作系统。例如,我从未在 Windows 上使用过 pip,所以我不知道捆绑包将如何在那里交互。

我希望尝试的完整想法是创建一个控制包管理的 paver 脚本,使用户可以轻松升级到新版本。不过,这需要一些脚手架。

另一种选择可能是您在一致的 vcs 中保留您无法控制的应用程序的镜像,然后分发您的镜像版本。这将消除“每个人”安装许多不同程序的需要。

Other than that, it seems the only real solution is what you guys are doing, there isn't a hassle-free way that I've been able to find.

于 2009-11-10T06:52:01.557 回答