Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Perforce: How to move unresolved files to a separate CL

Tags:

perforce

I'm currently (and regularly) performing very large integrations (usually 50k+ files). In P4V, it is technically possible to display and manually work with those files, but it's slow and unwieldy.

Is there some way to move unresolved files to a separate CL without needing to write an application? I was taking a look at "p4 resolve -n" but I can't figure out how to use that output with p4 reopen (assuming this is even the best way of doing what I want.)

Any help would be appreciated.

like image 581
TheChemist Avatar asked Dec 06 '16 18:12

TheChemist


2 Answers

You can use this:

p4 -F %localPath% resolve -n | p4 -x - reopen -c default

Explanation:

-F %localPath%: tells p4 to output paths in local format

resolve -n: means "list unresolved files without actually resolving them". (P4 Resolve)

-x -: Tells p4 we'll be working on a list of files, and '-' means that the list of files is coming from stdin (piped) (p4 Global options)

reopen -c default: reopen incoming specified files in given changelist ("default" can be replaced by an existing changelist number). (p4 reopen)

Update: For very big changelists, sometimes the command gets stuck. You can do it in 2 steps to workaround the problem:

p4 -F %localPath% resolve –n > c:\p4_output.txt 2>c:\p4_errors.txt
p4 -x - reopen -c default < c:\p4_output.txt

Note: When reopening files that were moved, p4 reopen will only move "half" of the change (the add) and leave the delete in the previous changelist. I haven't found a solution other than moving those manually.

like image 83
OLP Avatar answered Sep 23 '22 11:09

OLP


Something like:

p4 -F %localFile% resolve -n | p4 -x - reopen -c CHANGE

ought to do it. (Run "p4 -e resolve -n" to see the list of available variables in the output, I think localFile is the one you want.)

like image 21
Samwise Avatar answered Sep 26 '22 11:09

Samwise