Buna kesin bir cevap yok.
Genel olarak, besteci derleme sisteminin yapması gereken şeyi yapmamalı ve composer.lock'u VCS'ye koymamalısınız. Besteci tuhaf bir şekilde geri alabilir. Üretimler yerine son kullanıcılar kilit dosyalarını kullanmamalıdır. Genellikle derleme sisteminiz her seferinde boş bir dizin yerine anlık görüntüleri, yeniden kullanılabilir dizinleri vb. Tutar. İnsanlar besteciden bir lib'e ödeme yaparlar, lib'in yüklerinin bağımlılıklarının test edilmesi için bir lib kullanmasını isteyebilirler.
Öte yandan, bağımlılık kesinlikle kilitleneceğinden, her kitaplığın birden çok sürümünü kesinlikle kesinlikle isteyeceğiniz sürüm yönetimi yükünü önemli ölçüde artırır. Her kütüphanenin biraz farklı bir sürümü olması muhtemelse, birden fazla kütüphane sürümü desteğine ihtiyacınız vardır ve ayrıca gereken bağımlılıkların boyutunu hızlıca görebilirsiniz, bu nedenle onu yaprak üzerinde tutmanızı öneririz.
Bunu aldığımda, kilit dosyalarını kütüphaneler veya kendi iş dizinleriniz için yararlı bulamıyorum. Sadece benim için kullanıyorum, harici olarak edinilen varlıkların sadece talep edildiğinde güncellenmesi ve test edilmesi, derlenmesi ve dağıtılması için tekrarlanabilir yapılar sağlayan kalıcı / test platformumda. Bu VCS'de tutulabilirken, her zaman kaynak ağacı ile tutulmazken, yapı ağaçları VCS yapısının başka bir yerinde olacak veya başka bir sistem tarafından yönetilecektir. Bir VCS'de depolanırsa, kaynak ağaçlarla aynı repoda tutulup tutulmayacağı tartışmalıdır, aksi takdirde her çekme bir yığın yapı varlığı getirebilir. Üretim / hassas kimlik bilgileri ve şişkinlik haricinde her şeyin iyi düzenlenmiş bir repoda olmasını seviyorum.
SVN, tüm repoyu elde etmenizi zorlamadığı için git'ten daha iyi yapabilir (gerçi bunun git için kesinlikle gerekli olmadığından şüpheleniyorum, ancak bunun desteği sınırlı ve yaygın olarak kullanılmıyor). Basit yapı depoları genellikle yapı ağacını birleştirdiğiniz / dışa aktardığınız bir kaplama dalıdır. Bazı insanlar dış kaynakları kaynak ağaçlarında birleştirir veya dış, dış yapı ve kaynak ağaçlarını ayırır. Genellikle iki amaca hizmet eder, önbellekleme ve tekrarlanabilir yapılar oluşturur, ancak bazen en azından bir düzeyde ayrı tutmak, taze / boş yapılara ve çoklu yapılara kolayca izin verir.
Bunun için bir takım stratejiler vardır ve dış kaynağı kaynak ağacınızda tutmamanız durumunda hiçbiri özellikle kaynaklar listesine devam etmede işe yaramaz.
Ayrıca dosyada karma gibi şeyler var, iki kişi paketleri güncellediğinde bu nasıl birleşir? Sadece bu seni yanlış düşünebilir.
İnsanların kilit dosyaları için öne sürdüğü argümanlar, sorunun çok spesifik ve kısıtlayıcı bir görünümünü aldıkları durumlardır. Tekrarlanabilir derlemeler ve tutarlı derlemeler ister misiniz? VCS'ye satıcı klasörünü ekleyin. Daha sonra aynı zamanda varlıkları getirmeyi de hızlandırırsınız ve derleme sırasında potansiyel olarak bozuk dış kaynaklara bağımlı olmanız gerekmez. Oluşturduğum ve dağıttığım boru hatlarının hiçbiri, kesinlikle gerekli olmadıkça harici erişim gerektirmez. Harici bir kaynağı güncellemeniz gerekiyorsa, bu kaynağı bir kez ve yalnızca bir kez. Bestecinin elde etmeye çalıştığı şey, mantıklı gelmediği sürece, dağıtılmış bir sistem için mantıklıdır, çünkü yaygın çatışmalar ve güncellemelerin en yavaş güncellenen paket kadar yavaş olduğu kütüphane güncellemeleri için kütüphane bağımlılığı cehennemi ile sonuçlanacaktır.
Ek olarak acımasızca güncelliyorum. Her geliştirdiğimde her şeyi güncelliyor ve test ediyorum. Önemli sürüm sürüklenmesinin gizlice girmesi için çok küçük bir pencere var. Gerçekçi olarak, semantik sürümleme desteklendiğinde, besteci olma eğilimindedir, pek çok uyumluluk sorunu veya kırılması olduğunu düşünmüyorsunuz.
Composer.json içinde istediğiniz paketleri ve sürümlerini koyabilirsiniz. Sürümleri orada kilitleyebilirsiniz. Ancak bu paketler ayrıca composer.json tarafından kilitlenmeyecek dinamik sürümlerle bağımlılıklara sahiptir (ancak, sürüm kilitli olmasını istiyorsanız neden bunları kendiniz de koyamazsınız). kilit olmadan farklı bir şey alır. Bu konuda çok fazla umursamazsınız veya umursabilirsiniz, duruma göre değişir. Umursar mısın? Muhtemelen en azından biraz, herhangi bir durumda ve potansiyel etkiden haberdar olmanız için yeterli, ancak her zaman sadece KURU çalıştırma ve güncellenen herhangi bir şeyi düzeltmek için zamanınız varsa sorun olmayabilir.
Güçlük bestecisi bazen sadece orada değil kaçınmaya çalışıyor ve besteci kilit dosyaları yapabilirsiniz güçlük önemli. Kullanıcılara, kaynak varlıklara karşı (VCS'de ayrı ayrı katılma) karşı ne yapmaları veya yapmamaları gerektiğini söyleme hakları yoktur, çünkü bu onların işlerinden hiçbiri değildir, onlar sizin veya benim patronumuz değildir. "Besteci diyor ki" bir otorite değil, onlar sizin üst düzey subay değilsiniz ve bu konuda kimseye üstünlük de vermiyorlar. Gerçek durumunuzu ve bunun için en iyi olanı yalnızca siz bilirsiniz. Ancak, işlerin nasıl çalıştığını anlamayan kullanıcılar için varsayılan bir işlem önerebilirler, bu durumda bunu takip etmek isteyebilirsiniz, ancak şahsen şunu düşünmüyorum ' İşlerin nasıl çalıştığını bilmek ve ihtiyaçlarınızı doğru bir şekilde çalıştırabilmek için gerçek bir yedek. Sonuçta, bu soruya verdikleri cevap en iyi tahmindir. Besteci yapan kişiler bestecinizi nerede tutmanız gerektiğini bilmezler. Tek sorumluluğu size ne olduğunu ve ne yaptığını söylemektir. Bunun dışında sizin için neyin en iyi olduğuna karar vermelisiniz.
Kilit dosyasını saklamak kullanılabilirlik açısından sorunludur çünkü besteci kilit veya JSON kullanıp kullanmadığı konusunda çok gizlidir ve her ikisini birden birlikte kullanamaz. Eğer install çalıştırırsanız sadece kilit dosyasını kullanır, bu yüzden composer.json'a bir şey eklerseniz, kilidinizde olmadığı için yüklenmeyecektir. İşlemlerin gerçekte ne yaptığı ve json / lock dosyasıyla ilgili olarak yaptıkları şeylerin sezgisel olmadığı ve bazen mantıklı görünmediği (yardımın kurulumun bir paket adı aldığını söylüyor ancak kullanmaya çalıştığında hayır diyor ).
Kilidi güncellemek veya temelde json'daki değişiklikleri uygulamak için güncellemeyi kullanmanız gerekir ve her şeyi güncellemek istemeyebilirsiniz. Kilit, neyin kurulması gerektiğini seçmek için önceliklidir. Bir kilit dosyası varsa, kullanılan budur. Güncellemeyi biraz kısıtlayabilirsiniz, ancak sistem hala sadece bir karışıklıktır.
Güncelleme bir yaş alır, RAM konserleri. Bir süredir dokunulmamış bir projeyi seçtiği sürümlerden baktığından şüpheliyim, ki bu da zamanla daha fazla olacak ve muhtemelen bunu boğucu hale getiren verimli bir şekilde yapmıyor.
Kompozit olmasını bekleyemeyeceğiniz gizli kompozit komutlar söz konusu olduğunda çok sinsidirler. Varsayılan olarak besteci kaldırma komutu, örneğin besteci güncellemesiyle eşleşir ve besteci kaldırır.
Gerçekten sormanız gereken soru, kilidi kaynak ağacınızda tutmanız gerekip gerekmediği veya alternatif olarak onu bir şekilde devam ettirmeniz gerekip gerekmediği değil, aslında ne yaptığını sormanız gerektiğidir, o zaman kendiniz karar verebilirsiniz. ne zaman ve nerede ısrar etmeniz gerektiğinde.
Sağlam bir bağımlılık kalıcılık stratejisine sahip olduğunuzda, kilide sahip olma yeteneğine sahip olmanın büyük bir kolaylık olduğuna dikkat çekeceğim, çünkü sizi (kökenleri) izlemek ve güncellemek için yararlı bilgileri takip eder, ancak o zaman burada da değil. Kaynak ağaçlarınızı kirletmesi için zorunlu bir seçenek olarak boğazınızdan aşağıya zorlandığında yararlı değildir. İnsanların composer.json üzerinde gerçekten uygulanmayan ve insanlar besteci kullanmaya çalıştıklarında kırılan eski kod tabanlarında bulmak çok yaygın bir şeydir. Composer.lock yok, desync sorunu yok.