2010-10-29 86 views
3

我有一个Django网站放置在文件夹site/。它受版本控制。我使用South为我的应用程序进行模式和数据迁移。特定于站点的应用程序位于文件夹site/之下,因此它们都与版本控制一起进行版本控制。版本控制在virtualenv南迁移

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

虽然,我想用南方的第三方软件包。问题来了。迁移脚本存储在应用程序的文件夹中,因此它们位于我的网站存储库之外。但我希望迁移脚本处于版本控制之下,以便我可以在不同的阶段运行它们。

我不想版本控制整个virtualenv,但为第三方应用程序的迁移脚本。我该如何解决这个冲突?我的方案中是否存在任何误解?

回答

1

SOUTH_MIGRATION_MODULES setting允许您将指定应用程序的迁移模块放在任何需要它们的地方(即在您的项目树中)。

+0

谢谢,它解决了我的问题。 – 2010-10-31 20:05:05

0

我认为这取决于你的版本控制系统上的一点点。我建议使用稀疏树,它只管理各种软件包的迁移文件夹。在这里我看到两种方案:

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

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

在任何情况下,我相信你可以安排迁移到作为一个单独的项目存在,所以你可以用相同的过程,在安装一切安装它(的easy_install/PIP /不管)。