File locking
Exclusive checkout for binary game assets
Blueprints, scenes, prefabs, PSDs, and FBX files can't be merged. When two people edit the same one, someone's work is lost. File locking is how game teams prevent that — and USourceControl makes it a first-class workflow.
Purpose-built
Locking that actually works
Server-authoritative
Locks live on the server, not in your client. Everyone sees the same lock state in real time — no 'my tool thinks it's unlocked, yours doesn't' drift.
Human-readable reasons
Lock with a short reason ('polishing lighting on L3', 'audio pass on intro scene'). Teammates see it and plan around you.
Expiring and stale-lock recovery
Forgot to release a lock before vacation? Admins can force-release stale locks without contacting IT.
Lock awareness in the app
The desktop app shows locked files with the owner's name before you start editing — so you don't open a file you can't commit.
Enforced on commit
If someone bypasses the lock and tries to commit an unlocked binary, the server rejects the commit. No silent overwrites.
Role-aware
Admins and owners can force-release locks. Members can only release their own. Clean separation of authority.
Why binary files need locking
Source control was invented for text. Text can merge — diff two versions, combine changes, ask the human about real conflicts. Binary files have no such property. A blueprint edited in two branches can only pick one or the other. An FBX with animation edits in two places means someone loses their work. The only reliable solution is to prevent the parallel edit from happening in the first place. That's what locking does: one person reserves the file, edits it, commits, releases. Nobody else edits until they release.
What typical locking-required files look like
Common unmergeable files in game projects: • Unreal Engine: .uasset (blueprints, materials, meshes), .umap (levels) • Unity: .prefab (when written in binary mode), baked lightmaps, scene files in some workflows • Godot: binary resource formats, imported textures, compiled shaders • DCC tools: .psd (Photoshop), .blend (Blender), .ma/.mb (Maya), .fbx • Audio: DAW session files (.ptx Pro Tools, .als Ableton, .rpp Reaper) Any of these benefit from locking during edit. USourceControl flags common formats by default; you can add project-specific extensions.
The locking workflow in practice
In the desktop app, the flow looks like this: 1. You open the app, navigate to the file you want to edit (e.g., Content/Levels/Intro.umap). 2. Click Lock, optionally type a reason ('polishing lighting for demo'). 3. The server grants the lock. Every teammate's app updates to show it's locked by you. 4. You edit the file in the editor. 5. When done, click Commit. The app bundles your changes and releases the lock. 6. Teammates can now lock and edit. No CLI, no external tool, no syncing metadata manually. Locking is just a button.
FAQ
Common questions
Is locking mandatory?
No — locking is a workflow, not a technical requirement. Text files typically don't need locking. Binary files benefit from it. You and your team decide which files to lock.
What happens if someone holds a lock and disappears?
Admins and organization owners can force-release any lock from the desktop app or web dashboard. This is a core feature specifically because forgotten locks are a real scenario.
How does locking compare to Perforce's exclusive checkout?
Conceptually identical — reserve the file, edit, release. The UX is simpler in USourceControl: one click in a modern desktop app instead of P4V's checkout dialog.
Can I lock a whole folder?
Yes, the desktop app supports folder-level locking. Useful for large refactors where you want to freeze a whole area of the project for a short time.
Does Git LFS locking work the same way?
Git LFS has locking support, but it depends on your Git host honoring LFS lock API calls and every client being LFS-aware. In practice it's inconsistent. USourceControl's locks are authoritative on our server and enforced for everyone.
Can I see a history of locks?
Yes. The audit log records every lock, unlock, and force-release event with actor and timestamp. Useful for troubleshooting 'who was last editing this' questions.
Stop losing work to overwrites
Free for solo developers. First-class locking, included on every plan.
Start for free