Perforce (Helix Core) changelist numbers can be confusing when a pending changelist has one number, but appears with a different number after submission. This guide explains how numbering works, why renumbering happens, and how to use changelists safely in day-to-day development workflows.
Originally published on 2012-05-04; fully revised and updated.

How Perforce changelist numbering works
Perforce assigns numbers to changelists and also maintains a default changelist. You can create multiple changelists to organize related work, such as one for a feature and another for a bug fix. Submitted changelist numbers are maintained in ascending chronological order.
- Changelists help group related file edits.
- The default changelist exists even if you do not create a numbered one.
- Submitted changelist numbers are serial and increase over time.
Default vs numbered vs submitted changelists
| Changelist type | When number is assigned | Can number change at submit? | Typical use |
|---|---|---|---|
| Default changelist | Gets a submitted number when it is submitted | Not applicable before submit | Quick edits not yet organized into a separate numbered changelist |
| Pending numbered changelist | Number exists while pending | Yes, may be renumbered on submit to preserve chronological submitted order | Separating feature, bug fix, or task-specific work |
| Submitted changelist | Assigned/confirmed at submit time in serial order | No | Permanent historical record in depot history |
Why renumbering happens on submit
Perforce may renumber a pending numbered changelist during submit so that submitted changelist numbers remain in chronological sequence. In practice, the changelist that is submitted first gets the next submitted number.
flowchart TD
A[Developer edits files] --> B{Store edits where}
B --> C[Default pending changelist]
B --> D[Numbered pending changelist]
C --> E[Submit]
D --> E
E --> F[Server assigns next submitted number]
F --> G[Submitted changelist history stays time ordered]
Command-line examples
The following examples show common command patterns for default and numbered changelists.
# Check files currently open in default changelist
p4 opened -c default
# Submit default changelist
p4 submit -d "Submit work from default changelist"Code language: PHP (php)
# Create or edit a numbered changelist spec
p4 change
# Move an opened file into a numbered changelist (example: 326042)
p4 reopen -c 326042 src/parser.c
# Submit that numbered changelist
p4 submit -c 326042Code language: PHP (php)
Example renumbering scenario
A common case is:
- Latest submitted changelist is 326041.
- You already have pending work in numbered changelist 326042.
- You also have files in the default changelist and submit them first.
To keep submitted history strictly ordered by submit time, the first submit takes the next submitted number. The previously pending numbered changelist may then be submitted with a higher number than it had while pending.
References
Best practices
- Use separate numbered changelists for unrelated work to keep reviews and rollbacks clean.
- Do not depend on a pending changelist number as a final identifier until submit completes.
- Automations should key off submitted changelist numbers, not pending numbers.
- Keep changelist descriptions clear so renumbering does not affect traceability.
I’m Rajesh Kumar, a DevOps, SRE, DevSecOps, Cloud, and Platform Engineering expert passionate about sharing practical knowledge, real-world experiences, and industry best practices. I have worked at Cotocus and regularly write about technology, travel, investing, health, product reviews, and digital marketing through my various platforms.
I publish technical articles at DevOps School, travel stories at Holiday Landmark, stock market insights at Stocks Mantra, health and fitness guidance at My Medic Plus, product reviews at TrueReviewNow, and SEO and digital marketing strategies at Wizbrand.
Find Trusted Cardiac Hospitals
Compare heart hospitals by city and services — all in one place.
Explore Hospitals