Studio pipeline

Version control

Phoenix writes documents the same way every time, so a save that changes nothing changes no bytes, and a save that changes one symbol changes only that symbol's file.

Save as XFL folders

An .fla is a zip archive: version control sees one opaque file that changes as a whole. An XFL folder holds the same document as separate files: DOMDocument.xml for the scenes, one file per symbol under LIBRARY/, and the bitmap and sound data under bin/. To open one, choose File › Open... and pick the .xfl file or the DOMDocument.xml inside it, or drop either on Phoenix.

To make XFL folders the format new documents are saved in, choose File > Default Save Format > XFL Folder (for version control). To save one document as a folder, choose XFL Folder as the type in File > Save As. To convert existing files, use the command line, one file or a whole folder at a time:

Phoenix --convert shots/sh010.fla shots_xfl/sh010
Phoenix batch episode/ --convert xfl --out episode_xfl/
Phoenix's own features

An XFL folder keeps everything a Phoenix document does, Phoenix's own features included: textured and art brushes, linked palettes, effect layers, the multiplane camera, deformers, review notes and the rest are written into the folder in a form Phoenix reads back, and Phoenix's tests check that each one comes back. What a .phx adds is speed with very large documents, not anything the folder lacks.

The one risk is another FLA editor: it shows the artwork without those features and leaves them out if it saves the folder. Keep the folder edited in Phoenix, and Phoenix warns before saving a document that uses them as FLA or XFL.

Git LFS for the media

The XML files diff and merge as text. The media under bin/, and any whole .fla or .phx files, are binary and belong in Git LFS. A .gitattributes for a project:

# Whole documents and the media inside XFL folders
*.fla        filter=lfs diff=lfs merge=lfs -text
*.phx        filter=lfs diff=lfs merge=lfs -text
**/bin/**    filter=lfs diff=lfs merge=lfs -text
*.wav        filter=lfs diff=lfs merge=lfs -text
*.mp3        filter=lfs diff=lfs merge=lfs -text
*.png        filter=lfs diff=lfs merge=lfs -text
*.psd        filter=lfs diff=lfs merge=lfs -text

# The XML of an XFL folder is text
*.xml        text eol=lf
*.xfl        text eol=lf

Run git lfs install once on each machine, and add the file before committing any documents.

Phoenix as the diff tool

Phoenix diff compares two versions of a document part by part and frame by frame (see Command line). To use it from Git:

git config --global difftool.phoenix.cmd 'Phoenix diff "$LOCAL" "$REMOTE" --out phoenix-diff'
git difftool --tool=phoenix HEAD~1 -- shots/sh010.fla

In Phoenix, File > Compare With shows the same report for the open document against another file.

Locking

Two people editing the same symbol at once will conflict, as in any binary-heavy project. Git LFS file locking (git lfs lock) keeps a shot file or a rig to one person at a time; with XFL folders, lock the symbol files you are working on.