Sorununuzu iyi anlarsam aşağıdakileri istersiniz:
- Medya dosyalarınızı birçok proje tarafından kullanılan tek bir git deposunda saklayın
- Yerel makinenizdeki projelerin herhangi birinde bir medya dosyasını değiştirirseniz, hemen diğer tüm projelerde görünmelidir (böylece her zaman + push + pull yapmak istemezsiniz)
Ne yazık ki, istediğiniz şey için nihai bir çözüm yoktur, ancak hayatınızı kolaylaştırabileceğiniz bazı şeyler vardır.
Öncelikle önemli bir şeye karar vermelisiniz: proje veri havuzunuzdaki her sürüm için medya dosyalarının sürümüne bir referans mı saklamak istiyorsunuz? Örneğin example.com adlı bir projeniz varsa, 2 hafta önce hangi stili kullandığını bilmeniz mi gerekiyor? Veya en son her zaman (veya çoğunlukla) en iyisi mi?
Bunu bilmenize gerek yoksa, çözüm kolaydır:
- medya dosyaları için bir havuz ve her proje için bir havuz oluşturun
- projelerinizde yerel olarak klonlanan medya deposuna işaret eden sembolik bir bağlantı oluşturun. Göreceli bir sembolik bağlantı (örneğin ../media) oluşturabilir ve medya dizininin aynı yerde olması için herkesin projeyi teslim alacağını varsayabilir veya sembolik bağlantının adını .gitignore'a yazabilir ve herkes karar verebilir burada medya dosyalarını koyar.
Ancak çoğu durumda, bu sürüm bilgilerini bilmek istersiniz. Bu durumda iki seçeneğiniz vardır:
Her projeyi büyük bir depoda saklayın. Bu çözümün avantajı, medya havuzunun yalnızca 1 kopyasına sahip olmanızdır. En büyük dezavantaj, proje sürümleri arasında geçiş yapmanın çok daha zor olmasıdır (farklı bir sürüme ödeme yaparsanız her zaman TÜM projeleri değiştirirsiniz)
Alt modülleri kullanın (cevap 1'de açıklandığı gibi). Bu şekilde medya dosyalarını bir havuzda depolayacaksınız ve projeler yalnızca belirli bir medya repo sürümüne bir başvuru içerecektir. Ancak bu şekilde normalde medya deposunun birçok yerel kopyasına sahip olursunuz ve bir medya dosyasını tüm projelerde kolayca değiştiremezsiniz.
Ben olsaydım muhtemelen birinci veya üçüncü çözümü seçebilirdim (sembolik bağlantılar veya alt modüller). Alt modülleri kullanmayı seçerseniz, hayatınızı kolaylaştırmak için hala birçok şey yapabilirsiniz:
Taahhüt etmeden önce alt modül dizinini yeniden adlandırabilir ve ortak bir medya dizinine bir sembolik bağlantı koyabilirsiniz. İşlemeye hazır olduğunuzda, sembolik bağlantıyı kaldırabilir ve alt modülü geri kaldırabilir ve ardından taahhütte bulunabilirsiniz.
Medya havuzunun kopyalarından birini tüm projelerinize uzak havuz olarak ekleyebilirsiniz.
Yerel dizinleri uzaktan kumanda olarak şu şekilde ekleyebilirsiniz:
cd /my/project2/media
git remote add project1 /my/project1/media
/ My / project1 / media içindeki bir dosyayı değiştirirseniz, uzak bir sunucuya göndermeden dosyayı teslim edebilir / / my / project2 / media'dan alabilirsiniz:
cd /my/project1/media
git commit -a -m "message"
cd /my/project2/media
git pull project1 master
Diğer kullanıcılarla paylaşmadığınız için bu işlemleri daha sonra (git reset ile) kaldırabilirsiniz.