如何在不依赖SCM的情况下处理Python包的开发版本?

2024-09-27 22:22:53 发布

您现在位置:Python中文网/ 问答频道 /正文

Pinax开发过程中出现的一个问题是处理外部应用程序的开发版本。我正试图想出一个不需要引入版本控制系统的解决方案。原因是我不想在我的系统上安装所有可能的版本控制系统(或者强制要求贡献者这样做),并且处理环境创建过程中可能出现的问题。在

以这种情况为例(了解Pinax的工作原理将有助于理解):

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

我很想听听你对此的看法。在


Tags: pip文件版本应用程序环境过程系统情况
3条回答

大多数开源发行商(debian、Ubuntu、MacPorts等)都使用某种补丁管理机制。例如:导入每个包的基本源代码,作为tar-ball或SCM快照。然后使用修补程序管理器(如quiltMercurial's Queues)在其上管理任何必要的修改。然后将每个外部包与应用的修补程序以一致的格式打包。或者有指向基本软件包的URL和指向各个修补程序的URL,并在安装过程中应用它们。这基本上就是MacPorts所做的。在

编辑:为了更进一步,您可以对所有外部包的补丁集进行版本控制,并使作为一个单元可用。对于多变的队列,这很容易做到。然后,您将问题简化为仅使用一个SCM系统发布一组修补程序,这些修补程序如上所述在本地应用,或者可供开发人员拉取并应用于其基本发布包的副本。在

我想说的是,在提出要求之前,我考虑过的解决方案是建立一个PinaxPypi并在其上发布开发版本。我们可以举一个chishop的例子。我们已经在使用pip的——查找指向pypi.pinaxproject.com网站我们不得不自己释放的包裹。在

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

这不允许你用“最近的提示/头像”这样更具体的东西,但在很多情况下,这可能已经足够好了?在

相关问题 更多 >

    热门问题