uVersion
Türkçe
İndir →

Wiki

.uversionignore

Dosyaları uVersion takibinin dışında bırakmak için gitignore tarzı söz dizimi. UE5 varsayılanları dahil, yaygın kurulumlar için tarifler.

Giriş

Çalışma alanının kökündeki .uversionignore dosyası, istemcinin asla takip etmemesi, yüklememesi veya commit'lere dahil etmemesi gereken dosya ve klasörleri tanımlar. .gitignore tarzı söz dizimi (bir alt küme: yorumlar, / ile biten klasör desenleri ve ad/uzantı glob'ları), globset tarafından derlenir. Bu tam bir gitignore değildir: ! ile olumsuzlama ve sabitleme desteklenmez. Bazı Unreal Engine'e özgü kurallar aşağıda belgelenmiştir.

Dosya, clone sırasında masaüstü istemci tarafından varsayılan bir UE5 şablonuyla otomatik olarak oluşturulur. Ardından projenize uyarlamak için düzenleyebilirsiniz.

Dosya kendisi de takip edilir: düzenleyip commit'lerseniz, iş arkadaşlarınız bir sonraki sync'te değişikliklerinizi alır. Bu kasıtlıdır: tüm stüdyo aynı dışlama kurallarına sahiptir.

Söz dizimi

Satır başına bir kural. Boş satırlar ve # ile başlayan satırlar yok sayılır (yorumlar).

Temel desenler

DesenEtki
foo.txtAğacın herhangi bir seviyesinde foo.txt adlı her dosya
foo/foo adlı tüm klasörler ve içerikleri, herhangi bir seviyede (klasör desenleri her zaman her derinlikte eşleşir)
fooHerhangi bir seviyede foo adlı her dosya VEYA klasör (sonda eğik çizgi yok)

Joker karakterler

DesenEtki
*.tmpHerhangi bir seviyedeki tüm .tmp dosyaları
*.{tmp,bak,old}Küme parantezi genişletmesi: *.tmp + *.bak + *.old ile eşdeğerdir
foo*Adı foo ile başlayan her dosya veya klasör
?ile.txt? tam olarak bir karakterle eşleşir: file.txt, pile.txt vb.
[abc].txtKarakter sınıfı: a.txt, b.txt, c.txt
**/build/Özyinelemeli: herhangi bir seviyedeki her build/ klasörü (build/ ile eşdeğer)
Content/**/Tmp/Ortada özyinelemeli: Content/ altında herhangi bir yerdeki her Tmp/ klasörü
Content/**Content/ altındaki her şey, herhangi bir derinlikte

Olumsuzlama yok (!)

.gitignore'un aksine, uVersion bir dosyayı yeniden dahil etmek için ! önekini desteklemez. ! ile başlayan bir satır bir istisna olarak değil, düz bir desen olarak ele alınır. Yok sayılan bir klasördeki dosyaların yeniden takibi yalnızca otomatik kurallarla gerçekleşir: ThirdParty istisnası ve yüklü eklentilerin Binaries/ beyaz listesi (aşağıya bakın).

Yorumlar

# Build artifacts (regénérés à chaque build, jamais à versioner)
Binaries/
Intermediate/

Bir satırın ortasındaki # bir yorum değildir: desenin bir parçasıdır. Yalnızca satır başındaki (isteğe bağlı boşluktan sonra) # bir yorum başlatır.

Kural önceliği

Dosyadaki satırların sırası hiçbir öneme sahip değildir: tüm desenler tek bir GlobSet içinde derlenir ve bir yol, bunlardan herhangi biriyle eşleştiği anda yok sayılır. Karar, şu sırayla sabit bir önceliği izler:

  1. Ayrılmış yol Plugins/uVersion: bir kural onu dahil etmeye çalışsa bile her zaman yok sayılır (araç tarafından yönetilen klasör, ikili dağıtım).
  2. ThirdParty bileşeni: yolun bir segmenti tam olarak ThirdParty adını taşıyorsa, dosya asla yok sayılmaz.
  3. Beyaz listeye alınmış eklenti öneki (yüklü bir eklentinin Binaries/ klasörü): asla yok sayılmaz.
  4. Aksi halde: yol, dosyadaki bir desenle eşleşirse yok sayılır.

Varsayılan UE5 şablonu

Masaüstü istemcinin bir UE5 çalışma alanında clone sırasında ürettiği içerik tam olarak şudur:

# uVersion ignore - Unreal Engine 5 defaults
# Note: Installed plugins, ThirdParty directories, and plugins with
# external library dependencies are automatically whitelisted.

# Build & intermediate (regenerated by UE5)
Binaries/
Build/
DerivedDataCache/
Intermediate/
Packages/
Saved/

# IDE / editor
.vs/
.vscode/
.idea/
.vsconfig
*.sln
*.suo
*.sdf
*.opensdf
*.opendb
*.ncb
*.user

# Build artifacts
*.pdb
*.obj
*.o
*.lib
*.dll
*.so
*.dylib
*.exe
*.exp
*.ilk
*.iobj
*.ipdb
*.pch
*.ipch
*.res
*.tlog
*.manifest

# Logs & temp
*.log
*.tmp
*.bak
*.swp

# OS files
Thumbs.db
.DS_Store
desktop.ini

Bu dosyaya kendi kurallarınızı ekleyebilirsiniz. Tüm stüdyonun aynı dışlamalara sahip olması için onu commit'lemeyi unutmayın.

Eklentiler

Ayrılmış klasör Plugins/uVersion

Plugins/uVersion klasörü (uVersion eklentisinin kendisi) herhangi bir derinlikte her zaman yok sayılır ve bu kural diğer her şeye üstün gelir. Masaüstü istemci tarafından yönetilir (ikili dağıtım) ve asla commit'lenmemelidir. Plugins/uVersionExtras gibi komşu klasörler bundan etkilenmez.

uVersion ayrıca, dosyaya hiçbir şey yazmadan, diğer eklentiler için akıllı bir mantık uygular:

  • Bir eklentinin .uplugin dosyasında "Installed": true varsa ve bir Source/ klasörü yoksa (tamamen ikili eklenti, Marketplace türü) → Binaries/ klasörü beyaz listeye alınır ve dolayısıyla takip edilir. Bu doğrudur: ikili bir eklenti için, derlenmiş .dll dosyaları eklentinin ta kendisidir.
  • Eklentinin bir Source/ klasörü varsa (yeniden derlenebilir) veya "Installed": true yoksa → Binaries/ ve Intermediate/ klasörleri ana projede olduğu gibi yok sayılır (ikili dosyalar build sırasında yeniden üretilen artefaktlardır).

Bu mantık, Epic Marketplace'ten indirilen ticari eklentiler için istisnaları elle sürdürme gereğini ortadan kaldırır. Bir stüdyo, hiçbir şey yapılandırmadan kaynak eklentileri ve ikili eklentileri bir arada kullanabilir.

ThirdParty klasörü

ThirdParty/ içeren her yol, bir üst kural onu yok sayacak olsa bile her zaman takip edilir. Bu, Unreal geleneğine göredir: ThirdParty/ tipik olarak projenin derlenmesi için gereken önceden derlenmiş kütüphaneleri (.lib, .dll, .so, .a) içerir.

Plugins/MyPlugin/Source/ThirdParty/SomeLib/lib/Win64/SomeLib.lib

.uversionignore dosyanıza **/lib/ veya *.lib yazsanız bile, bu dosya örtük ThirdParty/ kuralı sayesinde takip edilmeye devam eder.

Açık geçersiz kılma Belirli bir ThirdParty/ alt ağacını gerçekten yok saymak istiyorsanız (nadir), açık bir kural kullanın. Ama önce build bağımlılıklarını depodan neden dışlamak istediğinizi kendinize sorun: proje, takım arkadaşlarınızda artık derlenmeyebilir.

Yaygın tarifler

Harici kaynak sanat dosyaları olan proje (Maya, Blender, ZBrush)

Sanat kaynaklarınız (.blend, .mb, .zpr) UE projesinin yanında yaşıyorsa, onları takip etmek isteyebilir ama önbelleklerini istemeyebilirsiniz:

# Sources d'art (à versionner)
ArtSource/

# Mais pas les caches Blender / Maya
**/blendcache_*/
**/cache/
**/temp/
**/*.blend1
**/*.mb~

Commit'lenmemesi gereken birkaç test haritası olan proje

# Maps de test temporaires (chacun les sien sur son disque)
Content/Maps/Test_*.umap
Content/Maps/Test_*.uasset

Genel bir kurala rağmen belirli bir ikili dosyayı takip etme

Olumsuzlama ! mevcut olmadığından, *.exe/*.dll öğelerini genel olarak dışlayıp ardından bir ikili dosyayı yeniden dahil etmek mümkün değildir. Bunun yerine, atılabilir artefaktlarınızı yok sayılan bir klasörün (ör. Intermediate/) altına yerleştirin ve takip etmek istediğiniz aracı dışlama desenlerinin dışında tutun. Unreal alternatifi: build kütüphaneleri ThirdParty/'ye aittir ve bu her zaman otomatik olarak takip edilir.

Kişisel notları yok sayma

# Chacun ses notes
notes.md
TODO.txt
.scratch/

Ara paketleri olan çok platformlu proje

# Packagés (publish via le client, pas dans le repo)
Packages/
Saved/StagedBuilds/

# Caches de cook par plateforme
Saved/Cooked/
Build/Win64/
Build/Mac/
Build/Linux/

Bir dosyayı test etme

Commit'lemeden önce bir yolun istemci tarafından yok sayılıp sayılmayacağını kontrol etmek için CLI'yi kullanın:

$ uversion status MaybeIgnored/File.uasset
# Si le fichier apparaît dans la sortie → il est tracké
# S'il n'apparaît pas (et qu'il existe sur disque) → il est ignoré

Veya daha doğrudan, bir jq filtresiyle JSON modunda:

$ uversion status --json | jq '.files[] | select(.path == "MaybeIgnored/File.uasset")'

Yaygın tuzaklar

Sondaki eğik çizgi = klasör, eğik çizgi yok = belirsiz

foo hem dosya foo'yu hem de klasör foo/'yu yok sayar. foo/ yalnızca klasörü yok sayar. Kesin olmak isterseniz, klasörler için sondaki eğik çizgiyi koyun.

Büyük/küçük harfe duyarlı

Desenler büyük/küçük harfe duyarlıdır. Content/, content/ ile eşleşmez. Windows dosya sistemi tarafında büyük/küçük harfe duyarsız olduğundan, Windows'taki bir geliştirici Content/ ve bir diğeri content/ adını verirse sessiz çakışmalarla karşılaşabilirsiniz. Content/ üzerinde standartlaşın.

Yeniden dahil etme yok (!)

!Saved/Config/Foo.ini yazmak hiçbir şeyi yeniden dahil etmez: olumsuzlama desteklenmez, satır düz bir desen olarak alınır. Bir alt klasörü korumak için, tüm Saved/ yerine yalnızca dışlanacak alt ağaçları (ör. Saved/Logs/, Saved/Backup/) yok sayın.

Aşırı geniş desenler

*.zip, çalışma alanındaki her .zip'i yok sayar; bilerek .zip olarak adlandırılmış oyun varlıkları dahil (nadir, ama macera oyunları / veri dosyalarında olur). Daha spesifik desenleri tercih edin: dist/*.zip, Releases/*.zip vb.

.uversionignore'u düzenlemek, zaten commit'lenmiş dosyaları etkilemez

Git gibi, .uversionignore'a bir desen eklemek zaten takip edilen dosyaları ortadan kaldırmaz. Onları depodan çıkarmak istiyorsanız, masaüstü istemci aracılığıyla (Mark for delete + checkin) açıkça silmeniz gerekir.