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: her zaman yok sayılır (araç tarafından yönetilen klasör, ikili biçimde dağıtılır), bir kural onu dahil etmeye çalışsa bile.
  2. ThirdParty segmenti: yolun bir segmenti tam olarak ThirdParty adını taşıyorsa, dosya asla yok sayılmaz. Bkz. ThirdParty klasörü.
  3. Varsayılan olarak izin verilen eklenti öneki (kaynak kodu olmayan yüklü bir eklentinin Binaries/ klasörü): asla yok sayılmaz.
  4. Aksi halde: yol, dosyadaki desenlerden biriyle eşleşirse yok sayılır.

İlk üç adım kesin kararlardır: bunlardan biri uygulandığı anda, bir sonraki değerlendirilmez ve desenleriniz hiç dikkate alınmaz. İşte bu yüzden bunlardan herhangi birini daha kesin bir kuralla "etkisiz kılamazsınız".

Varsayılan UE5 şablonu

İşte masaüstü istemcinin bir UE5 çalışma alanında clone sırasında yazdığı içerik, satır satır. Bu bloğu mevcut bir projeye elle kopyalarsanız, tamamını kopyalayın: "IDE" ve "Linux proje oluşturma" bölümleri en sık unutulanlardır ve bunların yokluğu, her derlemede yeniden üretilen proje dosyalarının takip edilmesine yol açar; bunlar da herkeste çakışmaya neden olur.

# 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
*.slnx
*.xcworkspace/
*.xcodeproj/
*.code-workspace
*.suo
*.sdf
*.opensdf
*.opendb
*.ncb
*.user

# Linux project generation (GenerateProjectFiles)
Makefile
.ignore

# 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ü

Bir segmenti ThirdParty adını taşıyan her yol, onu belirleyecek kural ne olursa olsun her zaman takip edilir. Bu bir Unreal geleneğidir: ThirdParty, projenin derlenmesi için gereken önceden derlenmiş kütüphaneleri (.lib, .dll, .so, .a) içerir. Bunları dışlamak, tüm takım arkadaşlarınızda derlemeyi bozar.

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

.uversionignore dosyanıza **/lib/, *.lib veya *.dll yazsanız bile, bu dosya takip edilmeye devam eder.

Bu istisna koşulsuzdur: hiçbir kural bir ThirdParty yolunu yok sayamaz

Bu, en kesin olanın kazanacağı kurallar arası bir öncelik meselesi değildir. "Bu yol bir ThirdParty segmenti içeriyor mu?" testi, desenlerinizin herhangi bir okumasından önce değerlendirilir ve yanıt evet ise, dosya takip edilen olarak ilan edilir ve değerlendirme orada durur. Kurallarınız asla dikkate alınmaz.

Dolayısıyla bir ThirdParty alt ağacını dışlamak için "açık bir muafiyet" yoktur: ne kadar kesin olursa olsun hiçbir kural bunu başaramaz. Böyle bir klasörü gerçekten bir kenara koymanız gerekiyorsa, tek yol onu yeniden adlandırmak veya bir ThirdParty yapısının dışına taşımaktır.

Bu istisnaya üstün gelen tek bir şey vardır: ayrılmış klasör Plugins/uVersion, ki ThirdParty altında olsa bile yok sayılmaya devam eder.

Segment tam olarak ThirdParty olmalıdır

Karşılaştırma bir yol segmentinin tamamı üzerinedir, ad önekine değil. ThirdPartyLibs, ThirdParty_Old veya MyThirdParty adlı bir klasör kapsam dışıdır: içeriği, diğer herhangi bir dosya gibi kurallarınıza tabidir ve bir *.dll kuralı onu dışlar.

Bu sık rastlanan bir şaşkınlık kaynağıdır: Source/ThirdParty/Lib/x.dll takip edilir, Source/ThirdPartyLibs/Lib/x.dll edilmez. Bir kütüphanenin gönderilmediğini fark ederseniz, önce klasörün tam yazımını kontrol edin.

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.