Trích dẫn từ tài liệu di chuyển Django :
Các tệp di chuyển cho mỗi ứng dụng nằm trong thư mục "di chuyển" bên trong ứng dụng đó và được thiết kế để cam kết và phân phối như một phần của cơ sở mã của ứng dụng đó. Bạn nên tạo chúng một lần trên máy phát triển của mình và sau đó chạy quá trình di chuyển tương tự trên máy của đồng nghiệp, máy dàn dựng và cuối cùng là máy sản xuất của bạn.
Nếu bạn làm theo quy trình này, bạn sẽ không nhận được bất kỳ xung đột hợp nhất nào trong các tệp di chuyển.
Khi hợp nhất các nhánh kiểm soát phiên bản, bạn vẫn có thể gặp phải trường hợp bạn có nhiều lần di chuyển dựa trên cùng một lần di chuyển gốc, ví dụ: nếu các nhà phát triển khác nhau giới thiệu một lần di chuyển đồng thời. Một cách để giải quyết tình huống này là giới thiệu _merge_migration_. Thường thì việc này có thể được thực hiện tự động bằng lệnh
./manage.py makemigrations --merge
sẽ giới thiệu một cuộc di cư mới phụ thuộc vào tất cả các cuộc di cư theo đầu người hiện tại. Tất nhiên điều này chỉ hoạt động khi không có xung đột giữa các lần di chuyển đầu, trong trường hợp đó, bạn sẽ phải giải quyết vấn đề theo cách thủ công.
Do một số người ở đây đề xuất rằng bạn không nên chuyển sang quyền kiểm soát phiên bản, tôi muốn mở rộng thêm về lý do tại sao bạn thực sự nên làm như vậy.
Trước tiên, bạn cần một bản ghi về những lần di chuyển được áp dụng cho hệ thống sản xuất của mình. Nếu bạn triển khai các thay đổi đối với sản xuất và muốn di chuyển cơ sở dữ liệu, bạn cần mô tả trạng thái hiện tại. Bạn có thể tạo một bản sao lưu riêng của các di chuyển được áp dụng cho từng cơ sở dữ liệu sản xuất, nhưng điều này có vẻ rườm rà không cần thiết.
Thứ hai, di cư thường chứa mã tùy chỉnh, viết tay. Không phải lúc nào bạn cũng có thể tự động tạo chúng bằng ./manage.py makemigrations
.
Thứ ba, việc di chuyển phải được đưa vào xem xét mã. Chúng là những thay đổi quan trọng đối với hệ thống sản xuất của bạn và có rất nhiều điều có thể xảy ra với chúng.
Vì vậy, tóm lại, nếu bạn quan tâm đến dữ liệu sản xuất của mình, vui lòng kiểm tra quá trình chuyển sang kiểm soát phiên bản.
makemigrations some_app
, không chỉ các mô hình dưới sự kiểm soát của thành viên đó sẽ bị ảnh hưởng, mà các mô hình liên quan khác cũng sẽ bị ảnh hưởng. Tức là, các tệp di chuyển (00 * _ *) trong các ứng dụng khác sẽ bị thay đổi. Và điều đó gây ra nhiều vấn đề xung đột trong quá trình đẩy đến hoặc kéo từ GitHub. Vì hiện tại hệ thống của chúng tôi chưa sẵn sàng để sản xuất, chúng tôi chỉ.gitignore
lưu trữ tệp di chuyển. Chúng tôi vẫn chưa biết cách giải quyết khi hệ thống đi vào sản xuất. Có ai có bất kỳ giải pháp?