A question that occasionally arises is what is the best way to determine the changelist that you last synced to in Perforce. This is often needed for things like injecting the changelist number into the revision info by the automatic build system.
Share
I recommend the opposite for automatic build systems: you should first get the latest changelist from the server using:
then sync to that change and record it in the revision info. The reason is as follows. Although Perforce recommends the following to determine the changelist to which the workspace is synced:
they note a few gotchas:
and there’s an additional gotcha they don’t mention:
If you must sync first and record later, Perforce recommends running the following command to determine if you’ve been bit by the above gotchas; it should indicate nothing was synced or removed:
Note that this method doesn’t work if a file is added in a changelist (n-1) and then deleted in the very next changelist (n).
p4 changes -m1 @clientnameandp4 changes ...#haveboth return n-3 andp4 sync -n @n-3will say "file(s) up-to-date."