Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How can I undo an Integration in Perforce, and still be able to redo it?

Tags:

perforce

I have a bad integration changelist in perforce. I want to back it out, and redo it more carefully (and possibly in smaller increments).

I used Perforce's rollback command to revert to a previous version of the files, but when I attempted to redo the Integration, Perforce claimed there was nothing to be done. Apparently, rollback simply reverts the files, but does nothing about the associated integration-related metadata. So when I try to re-integrate, Perforce thinks "you already integrated two versions ago - nothing to do now".

Is there any way I can undo a changelist that involved integration, and leave the depot in a state where I can actually do the integration over again?

It's a large project, and integration was over 2,000 files, so I really don't want to be stuck doing this manually.

like image 663
Tim Avatar asked Mar 04 '11 19:03

Tim


People also ask

What is rollback in perforce?

You can rollback to a point in time based on revision number, changelist number, date, or label. To rollback a file or folder to a previous revision using P4V, context click on the file or folder and select the Rollback menu option.

What is a changelist in perforce?

When you check out a file, Perforce adds information about the file to a changelist and changes the writable attribute of the file in your local workspace from read-only to read/write. A changelist defines a logical grouping of work across a set of files and folders.


1 Answers

As you have seen, rolling back the changelist won't "undo" the integration. The integration records are stored once and for all after an integration happens in the perfroce database.

If you want to do the integration over, you can. You can use the '-f' flag from the command line to force an integration without regard to previous integration history. Use of this flag will, in essence, start your integration over. If you are using p4v, there is an option under "advanced options" in the integration dialog that performs the same operation.

If you want to reintegrate only a certain revision range (i.e. from a specific date), make sure that you specify that as well. Otherwise, if you are redoing all the integrations, you should be good to go. The help file on integrate does indicate that usage of -f without a revision range will force p4 resolve to perform merges without a common base, so be on the lookout for that as well. If you are starting over with a full integrate from all revisions of the source file, then this caveat won't apply I think.

HTH.

like image 131
Mark Avatar answered Oct 22 '22 03:10

Mark