django - 如何从公共(public)存储库中排除南方迁移?

标签 django git version-control django-south

我正在使用 South 来管理我的开发和生产环境中的架构和数据迁移。因此,我将迁移保存在 git 存储库中,以便我在开发中所做的更改可以正确迁移到生产中。

我正在开发的应用程序和项目目前是私有(private)的,并且仅由我开发。在某些时候,我想发布/分发我的应用程序。我假设到那时,我将有一个“最终”模式,因此不会“需要”南方。由于这些应用程序之前尚未分发过(除了在我的环境中),因此公共(public)版本不需要我在开发应用程序时使用的迁移。

我有一个两人问题:

  1. 根据我的假设删除或至少“清理”迁移是否好(或可接受)?

  2. 最好的方法是什么?我想为公共(public)/分布式基础保留一个分支是可行的,但我对 git 相当陌生,所以我不知道我的选择是什么。

谢谢

最佳答案

对于处理 South 和版本控制的人来说,这是一个常见的困惑点。当然,您应该在您的项目中提交迁移,因为其他人需要自己运行相同的迁移。但是,您应该在提交迁移之前清理迁移,这实际上非常简单。

如果它是一个全新的应用程序或一个全新的项目:

  1. 将应用回滚到“零”:

    python manage.py migrate myapp zero
    
  2. 删除应用的所有迁移(“migrations”目录中除 __init__.py 之外的所有内容)。

  3. 生成新的初始迁移:

    python manage.py schemamigration --initial myapp
    

如果它是现有应用,则过程大致相同,但您只需回滚到您创建的第一个迁移之前。然后,您将简单地生成新的自动迁移而不是初始迁移。例如,如果应用程序已处于迁移 0005,并且您创建迁移 0006、0007 和 0008:

  1. 回滚到您创建的第一个迁移 (0006) 之前:

    python manage.py migrate myapp 0005
    
  2. 删除您创建的所有迁移(0006、0007 和 0008)

  3. 生成新的自动迁移:

    python manage.py schemamigration --auto myapp
    

无论哪种方式,您最终都会得到一个封装所有更改的文件,而不是多个文件。然后,将其提交到源代码管理。

关于django - 如何从公共(public)存储库中排除南方迁移?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12569191/

相关文章:

git - 我如何告诉我所有的 AWS EC2 实例从 git/codecommit 中提取?

git - 为什么 sourcetree 删除了我的提交?

version-control - 一个人使用的本地VCS

svn - 对于小型 Delphi 团队来说,什么是好的版本控制系统?

python - 查询按字母顺序过滤

python - If 语句在模板文件中不起作用

python - Django:查询多模型中某些属性的现有关系的一对多关系

python - 重新启动 django 服务器时清除缓存的最佳位置

切换分支时 Git 删除文件

git - 我可以在哪里报告 GitHub 错误?