P4CaseSync is a small tool that synchronizes and corrects path and filename capitalization before Perforce submission.
On Windows, P4 often weakens case distinctions, causing uploaded directories and files to become lowercase. This tool corrects the file paths listed by p4 opened using actual capitalization on the local disk, allows manual adjustments, and applies changes as p4 move operations in one click.
Uses p4 where mapping and reads actual local capitalization, correcting each level of the entire path
Color-coded list for easy identification
Gray: Before and after are identical; no change needed
Green: Matches the automatically corrected value
Red: Manually edited by the user and differs from the automatic value
Double-click the entire row to open a centered edit dialog
Performs a consistency check after applying changes; if inconsistent, automatically tries a two-step move fallback, and reports failure if inconsistency remains
Note: Running the project requires only the standard library and p4; requirements.txt generally needs only pyinstaller for packaging.
If the file is missing, create one containing only:
The project uses InjectSysPath() to add module paths dynamically. PyInstaller cannot automatically identify modules under Source/UI and Source/Logic. The spec file explicitly declares these modules through hiddenimports to ensure packaging succeeds.
Q1: Why do large gray bars or ghosting appear?
A: This has been fixed. Refreshing the list destroys all child widgets, including separators, to prevent remnants.
Q2: Why is “X” sometimes shown instead of “✔”?
A: This depends on the system theme. Windows vista/xpnative themes are preferred. Custom icons are another option if needed.
Q3: What if the local path does not exist?
A: The tool corrects capitalization through the deepest accessible parent directory where possible. Unresolvable portions remain unchanged and can be edited manually.
Q4: What if submission includes deletion actions?
A: Deletion actions (delete/move/delete) are filtered by default; only edit/add/move/add are shown.