Perforce
Dousen connects your everyday Perforce work to your Jira tasks. Every changelist you open through Dousen is tied to a Jira issue, so a piece of work and the files that delivered it stay linked.
Changelists are keyed to Jira
When you open a changelist through Dousen, its description is stamped in a fixed format so you can always trace it back to the ticket it belongs to:
TEXT[dousen DOU-31] Alice Smith
The pattern is [dousen <JIRA-KEY>] <your name>. Anyone browsing the depot history can read a changelist and immediately know which task it came from.
What Dousen does with changelists
The actions below are available from the desktop app and the DCC addons, and they all require you to be signed in. The table is mostly useful if you are scripting or troubleshooting; day to day you trigger these from the UI.
| Method & path | Action | Notes |
|---|---|---|
POST /api/vcs/open |
Open a changelist | Body {"jira_key":"DOU-31"}; returns the new changelist id and the Perforce CL number. |
POST /api/vcs/submit |
Submit a changelist | Body {"changelist_id":"...","message":"...","project_id":"..."}; only the opener (or an admin) may submit. On success it can transition the linked Jira issue. |
GET /api/vcs/info |
Stream / connection info | Returns is_stream, stream_name, stream_root, server_version, client_name. |
GET /api/vcs/shelved?jira_key=DOU-42 |
List shelved changelists | Filtered by Jira key. |
POST /api/vcs/unshelve |
Unshelve | Body {"changelist_id":"<p4 CL#>"}. |
All Perforce actions live under the /api/vcs/... namespace. There is no /api/changelists/... endpoint.
Streams support
Perforce Streams are detected automatically — there is nothing to configure. The DousenDesktop status bar tells you what kind of workspace you are connected to:
P4: <stream name>— a stream workspace.P4: <client> (classic)— a classic depot.P4: not connected— offline or not configured.
File locks inside your DCC
The Dousen addons for your content-creation apps show live Perforce status right where you are working. You can checkout (p4 edit), revert, sync, add, and associate files with the active task's changelist — all under your own Perforce identity.
Lock status refreshes roughly every 30 seconds and shows lines such as:
- Locked by <user> (CL n) — someone else has it open.
- Locked by you — you have it open.
- Not at latest — your local copy is behind the depot.
- Available — free to take.
Validated export also runs a pre-export lock check: if a file it needs to write is locked by someone else, the export is blocked before it starts so you don't lose work.
Automatic workspace from the depot path
Each project has a depot_path. During onboarding, the Perforce Workspace page either detects an existing mapping or creates a client spec for you, so you don't have to hand-build a workspace.
Onboarding does not run a full sync — it only sets up the workspace mapping. Sync your files afterward from P4V or UnrealGameSync before you start working.
Auto Jira transition on submit
If your project admin set jira.on_submit_transition (a transition name) in the pipeline settings, submitting a Dousen changelist moves the linked Jira issue to that status automatically — for example, sending it to review the moment you submit.
Server connection (admin)
The server's connection to Perforce is configured by an administrator with environment variables. Artists never touch these — your personal Perforce identity lives in DousenDesktop.
| Variable | Purpose |
|---|---|
DOUSEN_P4PORT | Perforce server address. |
DOUSEN_P4USER | Service user the server acts as. |
DOUSEN_P4CLIENT | Service workspace used for the server's changelist operations. |
DOUSEN_P4PASSWD | Optional; falls back to the P4 ticket file if unset. |
The server uses a single service workspace for its own changelist operations. Per-artist Perforce identity is handled entirely by DousenDesktop on each artist's machine.