如何从公共存储库中排除南迁移?

时间:2012-09-24 16:32:19

标签: django git version-control django-south

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

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

我有两个问题:

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

  2. 最好的方法是什么?我想保留公共/分布式基地的分支可以工作,但我对git很新,所以我不知道我的选择是什么。
  3. 谢谢,

1 个答案:

答案 0 :(得分:3)

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

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

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

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

  3. 生成新的初始迁移:

    python manage.py schemamigration --initial myapp
    
  4. 如果它是现有的应用程序,那么该过程大致相同,但您只是在第一次迁移之前回滚到。然后,您只需生成新的自动迁移,而不是初始迁移。例如,如果应用程序已经处于迁移0005并且您创建了迁移0006,0007和0008:

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

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

    3. 生成新的自动迁移:

      python manage.py schemamigration --auto myapp
      
    4. 无论哪种方式,您最终只会使用一个文件封装所有更改而不是多个文件。然后,将其提交给源控件。