Django geçiş belgelerinden alıntı yapmak :
Her uygulamanın taşıma dosyaları, o uygulamanın içindeki bir "geçişler" dizininde bulunur ve kod tabanına bağlı olmak ve onun kod tabanının bir parçası olarak dağıtılmak üzere tasarlanmıştır. Bunları bir kez geliştirme makinenizde yapmalı ve ardından aynı geçişleri iş arkadaşlarınızın makinelerinde, evreleme makinelerinde ve nihayetinde üretim makinelerinizde çalıştırmalısınız.
Bu süreci izlerseniz, geçiş dosyalarında herhangi bir birleştirme çakışması görmemeniz gerekir.
Sürüm kontrol dallarını birleştirirken, aynı ana geçişe dayalı birden fazla geçişinizin olduğu bir durumla karşılaşabilirsiniz, örneğin, farklı geliştiricilere aynı anda bir geçiş başlattıysa. Bu durumu çözmenin bir yolu, bir _merge_migration_ oluşturmaktır. Genellikle bu komutla otomatik olarak yapılabilir
./manage.py makemigrations --merge
Bu, mevcut tüm kafa geçişlerine bağlı yeni bir geçişi getirecektir. Elbette bu yalnızca kafa geçişleri arasında herhangi bir çakışma olmadığında işe yarar, bu durumda sorunu manuel olarak çözmeniz gerekecektir.
Buradaki bazı kişilerin , geçişlerinizi sürüm kontrolüne dahil etmemenizi önerdiği göz önüne alındığında, gerçekte neden bunu yapmanız gerektiğinin nedenlerini genişletmek istiyorum .
Öncelikle, üretim sistemlerinize uygulanan geçişlerin bir kaydına ihtiyacınız var. Değişiklikleri üretime dağıtırsanız ve veritabanını taşımak istiyorsanız, mevcut durumun bir açıklamasına ihtiyacınız vardır. Her üretim veritabanına uygulanan geçişlerin ayrı bir yedeğini oluşturabilirsiniz, ancak bu gereksiz yere külfetli görünmektedir.
İkincisi, geçişler genellikle özel, el yazısıyla yazılmış kod içerir. Bunları ile otomatik olarak oluşturmak her zaman mümkün değildir ./manage.py makemigrations
.
Üçüncü olarak, geçişler kod incelemesine dahil edilmelidir. Üretim sisteminizdeki önemli değişikliklerdir ve onlarda yanlış gidebilecek pek çok şey vardır.
Kısacası, üretim verilerinizle ilgileniyorsanız, lütfen sürüm kontrolüne geçişlerinizi kontrol edin.
makemigrations some_app
, sadece o üyenin kontrolü altındaki modeller değil, ilgili diğer modeller de etkilenecektir. Yani, diğer uygulamalardaki geçiş dosyaları (00 * _ *) değiştirilecektir. Ve bu, GitHub'a aktarılırken veya buradan çekilirken birçok çakışma sorununa neden olur. Şu anda sistemimiz üretime hazır olmadığından, biz sadece.gitignore
geçiş dosyasıyız. Sistem üretime geçtiğinde hala nasıl çözeceğimizi bilmiyoruz. Çözümü olan var mı?