3

我有一个 Django 站点放在文件夹中site/。它受版本控制。我将 South 用于我的应用程序的架构和数据迁移。特定于站点的应用程序位于文件夹下site/,因此它们及其迁移都受版本控制。

我管理一个 virtualenv 以保持第三方组件干燥和安全。我通过 PyPI 安装软件包。已安装包的列表被冻结在 requirements.txt 中,因此它们可以很容易地安装在另一个环境中。virtualenv 不在 VCS 下。如果 virtualenv 可以随时轻松删除和重建,我认为这是一个好方法。如果我需要测试我的站点,例如,使用另一个版本的 Python 解释器,只需激活另一个 virtulalenv。

不过,我想将 South 用于第三方软件包。问题来了。迁移脚本存储在应用程序的文件夹中,因此它们不在我的站点存储库中。但我希望迁移脚本受版本控制,这样我也可以在不同的阶段运行它们。

我不想对整个 virtualenv 进行版本控制,而是对第三方应用程序的迁移脚本进行版本控制。我该如何解决这个冲突?我的场景有什么误解吗?

4

2 回答 2

1

SOUTH_MIGRATION_MODULES设置允许您将指定应用程序的迁移模块放在您想要的任何位置(即在您的项目树中)。

于 2010-10-30T13:58:22.040 回答
0

我认为这在一定程度上取决于您的版本控制系统。我建议使用稀疏树,它只管理各种包的迁移文件夹。在这里,我看到了两种选择:

  1. 为所有包创建一个真正的稀疏树,在创建 virtualenv 之前检查它。然后填充 virtualenv,将东西放入现有文件夹中。

  2. 将所有迁移收集到一个单独的存储库中,每个项目/外部依赖项都有一个文件夹。将此检查到 virtualenv 中,并创建符号链接,将每个项目链接到其迁移文件夹。

无论哪种情况,我相信您可以安排迁移作为一个单独的项目存在,因此您可以使用与安装其他所有内容相同的过程来安装它(easy_install/pip/whatever)。

于 2010-10-29T12:40:07.860 回答