Unity Projelerinde Git LFS ve gitignore Ayarları

Unity projelerinizde versiyon kontrolünü optimize etmek için Git LFS ve .gitignore ayarlarının önemini keşfedin. Büyük dosyaları yönetin ve gereksiz dosyaları dışlayın.

Unity Projelerinde Git LFS ve .gitignore Ayarlarının Önemi

Oyun geliştirme dünyasında, özellikle Unity gibi güçlü bir motorla çalışırken, proje dosyalarının yönetimi kritik bir öneme sahiptir. Ekip halinde çalışırken veya projenizi düzenli bir şekilde yedeklerken versiyon kontrol sistemleri (VCS) vazgeçilmezdir. Git, bu alanda en popüler çözümlerden biri olsa da, Unity projelerinin doğası gereği ortaya çıkan büyük ikili dosyalar (texture, model, ses vb.) Git’in standart işleyişi için bazı zorluklar yaratabilir. İşte bu noktada Git Large File Storage (LFS) ve doğru yapılandırılmış bir .gitignore dosyası devreye girer.

Git LFS Nedir ve Neden Gerekli?

Git, metin tabanlı kod dosyalarını yönetmek ve değişiklikleri takip etmek için harikadır. Ancak, Unity projelerinde sıkça karşılaşılan yüksek çözünürlüklü görseller, 3D modeller, ses dosyaları ve animasyonlar gibi büyük ikili dosyalar, Git’in standart çalışma prensipleriyle pek uyumlu değildir. Bu tür dosyalar her değişiklikte tüm dosyanın yeniden saklanmasına neden olur, bu da depoyu hızla büyütür, klonlama sürelerini uzatır ve performans sorunlarına yol açar.

Git LFS (Large File Storage), bu sorunu çözmek için tasarlanmış bir Git uzantısıdır. LFS, büyük dosyaların kendilerini Git deposunda saklamak yerine, bu dosyaların referanslarını (küçük işaretçi dosyalarını) depoda tutar ve asıl büyük dosyaları ayrı bir LFS sunucusunda saklar. Böylece Git deposu hafif kalır, klonlama ve indirme işlemleri hızlanır.

Unity Projelerinde Büyük Dosya Yönetimi

Unity projelerindeki Assets/ klasörü genellikle projenin en büyük kısmını oluşturur. Buradaki dosyaların çoğu (.fbx, .png, .jpg, .wav, .mp3, .unity sahneleri, .prefab‘ler) ikili formatta olup, Git LFS için ideal adaylardır. Bu dosyaları LFS ile takip etmek, ekibinizin daha verimli çalışmasını sağlar, depo boyutunu kontrol altında tutar ve geçmiş versiyonlara erişimi kolaylaştırır.

Git LFS Kurulumu ve Kullanımı

Git LFS’yi kullanmaya başlamak oldukça basittir:

  1. Kurulum: Öncelikle Git LFS’yi sisteminize kurmanız gerekir. Çoğu işletim sistemi için paket yöneticileri veya resmi Git LFS web sitesinden indirme mevcuttur. Kurulumdan sonra terminalde git lfs install komutunu çalıştırarak Git LFS’yi Git ile entegre edin. Bu işlemi her makinede bir kez yapmanız yeterlidir.
  2. Dosya Takibi: Hangi dosya türlerinin LFS ile takip edileceğini belirtmelisiniz. Örneğin, tüm .png ve .fbx dosyalarını LFS ile takip etmek için şu komutları kullanın:
    git lfs track "*.png"
    git lfs track "*.fbx"

    Bu komutlar, projenizin kök dizininde .gitattributes adında bir dosya oluşturur veya günceller. Bu dosya, hangi dosya türlerinin LFS tarafından yönetileceğini Git’e bildirir.

  3. .gitattributes Dosyasını Kaydetme: .gitattributes dosyasını Git deposuna eklemeyi unutmayın:
    git add .gitattributes
    git commit -m "Add Git LFS tracking for PNG and FBX files"
  4. Dosyaları Ekleyip Kaydetme: Artık LFS tarafından takip edilen dosya türlerini normal Git komutlarıyla ekleyip kaydedebilirsiniz. Git, arka planda LFS’yi otomatik olarak kullanacaktır:
    git add Assets/Textures/my_new_texture.png
    git commit -m "Add new texture with Git LFS"

Unity .gitignore Dosyası: Neden Önemli?

Bir Unity projesinde, versiyon kontrol sistemine dahil edilmemesi gereken birçok geçici dosya, derleme çıktısı ve kullanıcıya özel ayar dosyası bulunur. Bu dosyaları yanlışlıkla Git deposuna eklemek, depo boyutunu gereksiz yere artırır, çakışmalara yol açar ve ekip üyeleri arasında tutarsızlıklara neden olabilir. .gitignore dosyası, Git’e hangi dosya ve klasörlerin göz ardı edileceğini, yani versiyon kontrolüne dahil edilmeyeceğini söyler.

Temel .gitignore Ayarları

Unity projeleri için temel olarak göz ardı edilmesi gereken bazı klasörler ve dosyalar şunlardır:

  • Library/: Unity’nin proje kaynaklarını dahili olarak depoladığı ve önbelleklediği klasör. Her makinede yeniden oluşturulabilir ve platforma özgüdür.
  • Temp/: Unity’nin geçici dosyalarını depoladığı klasör.
  • obj/ ve bin/: Derleme sırasında oluşturulan geçici C# derleme dosyaları.
  • Build/: Oyunun derlenmiş çıktısının bulunduğu klasör.
  • *.csproj, *.sln, *.suo: Visual Studio veya diğer IDE’lerin proje ve çözüm dosyaları. Bunlar genellikle her geliştiricinin kendi makinesinde farklılık gösterebilir ve otomatik olarak yeniden oluşturulabilir.
  • Yerel Ayar Dosyaları: Örneğin, UserSettings/ klasöründeki kullanıcıya özel ayarlar.

Önerilen .gitignore İçeriği

İşte Unity projeleri için kapsamlı ve yaygın olarak kullanılan bir .gitignore şablonu:

# Unity Generated
/[Ll]ibrary/
/[Tt]emp/
/[Oo]bj/
/[Bb]uild/
/[Bb]uilds/
/[Ll]ogs/
/[Uu]ser[Ss]ettings/

# Autogenerated VS/MD/IDE files
.vs/
*.csproj
*.unityproj
*.sln
*.suo
*.user
*.userprefs
*.pidb
*.booproj
*.lsf
*.gh

# OS Generated
.DS_Store
.DS_Store?
._*
.Spotlight-V100
.Trashes
ehthumbs.db
Thumbs.db
[Dd]esktop.ini

# Visual Studio Code
.vscode/

# Rider
.idea/
*.iml

# Unity Package Manager (UPM) Cache
Library/PackageCache/

# Local Asset Store Downloads
Assets/AssetStoreTools/

# Any other files you wish to ignore specific to your project
# e.g., secret keys, large temporary exports etc.

Bu şablonu projenizin kök dizinine .gitignore adıyla kaydederek, Git’in bu dosyaları otomatik olarak göz ardı etmesini sağlayabilirsiniz.

En İyi Uygulamalar ve İpuçları

  • Düzenli Commit Edin: Küçük, anlamlı değişiklikleri sık sık commit etmek, proje geçmişini temiz tutar ve olası sorunlarda geri dönmeyi kolaylaştırır.
  • Anlamlı Commit Mesajları Kullanın: Commit mesajlarınız, neyin değiştiğini ve neden değiştiğini açıkça belirtmelidir.
  • Git LFS’yi Akıllıca Kullanın: Sadece gerçekten büyük olan ve sık değişen ikili dosyaları LFS ile takip edin. Küçük dosyalar veya metin tabanlı dosyalar için standart Git’i kullanmaya devam edin.
  • Ekip Üyelerini Eğitin: Ekibinizdeki herkesin Git LFS’nin nasıl çalıştığını ve doğru .gitignore ayarlarının neden önemli olduğunu anladığından emin olun.
  • Hosting Çözümlerini Araştırın: GitHub, GitLab ve Bitbucket gibi platformlar, Git LFS desteği sunar ve ekipler için işbirliğini kolaylaştırır.

Sonuç

Unity projelerinde verimli bir versiyon kontrolü sağlamak, projenin büyüklüğü ve ekip yapısı ne olursa olsun hayati önem taşır. Git LFS ile büyük ikili dosyaları etkin bir şekilde yönetirken, doğru yapılandırılmış bir .gitignore dosyası ile gereksiz ve geçici dosyaları depodan uzak tutarsınız. Bu iki güçlü aracın birleşimi, Unity geliştiricilerine daha temiz, daha hızlı ve daha güvenilir bir iş akışı sunarak, yaratıcı süreçlerine daha fazla odaklanmalarını sağlar. Unutmayın, iyi bir versiyon kontrol stratejisi, başarılı bir oyun geliştirme projesinin temel taşlarından biridir.