Started repro.sh v1.0.0 at Mon Dec 15 17:37:31 EST 2025. ReproDir=/tmp/repro ============================================================================== Scenario 1: Fetch Partial Rename Preliminary info: Show versions of p4/p4d on the PATH: Executing command: p4 -V Perforce - The Fast Software Configuration Management System. Copyright 1995-2025 Perforce Software. All rights reserved. This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit (http://www.openssl.org/) Version of OpenSSL Libraries: OpenSSL 3.0.15 3 Sep 2024 See 'p4 help [ -l ] legal' for additional license information on these licenses and others. Extensions/scripting support built-in. Parallel sync threading built-in. Rev. P4/LINUX26X86_64/2024.2/2726408 (2025/02/27). Executing command: p4d -V Perforce - The Fast Software Configuration Management System. Copyright 1995-2025 Perforce Software. All rights reserved. This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit (http://www.openssl.org/) Version of OpenSSL Libraries: OpenSSL 3.0.15 3 Sep 2024 This product includes software developed by the OpenLDAP Foundation (http://www.openldap.org/) This product includes software developed by Computing Services at Carnegie Mellon University: Cyrus SASL (http://www.cmu.edu/computing/) Version of OpenLDAP Libraries: 2.5.17 Version of Cyrus SASL Libraries: 2.1.28 See 'p4 help [ -l ] legal' for additional license information on these licenses and others. Using the 'mimalloc' memory manager. Rev. P4D/LINUX26X86_64/2024.2/2726408 (2025/02/27). License: Perforce Software, Inc. 28 users (support ends 2026/08/03) (expires 2026/08/03) Preliminary setup: Spin up two local repos. Executing command: mkdir /tmp/repro/Source Executing command: mkdir /tmp/repro/Target-1 Executing command: mkdir /tmp/repro/Target-2 Operating in: /tmp/repro/Source Executing command: p4 init -C0 -n Server perforce-dvcs-1765838251 saved. Operating in: /tmp/repro/Target-1 Executing command: p4 init -C0 -n Server perforce-dvcs-1765838252 saved. Operating in: /tmp/repro/Target-2 Executing command: p4 init -C0 -n Server perforce-dvcs-1765838253 saved. Operating in: /tmp/repro/Source Add some files. Executing command: p4 status One.h - reconcile to add //stream/main/One.h#1 Reconcile and submit. //stream/main/One.h#1 - opened for add Submitting change 1. Locking 1 files ... add //stream/main/One.h#1 Change 1 submitted. Executing command: p4 move -r One.h Two.h //stream/main/Two.h#1 - moved from //stream/main/One.h#1 Submitting change 2. Locking 2 files ... move/delete //stream/main/One.h#2 move/add //stream/main/Two.h#1 Change 2 submitted. Operating in: /tmp/repro/Target-1 Creating this remote spec: RemoteID: Everything Address: rsh:/bin/sh -c "umask 077 && exec p4d -i -J off -r '/tmp/repro/Source/.p4root'" (config '/tmp/repro/Source/.p4config Owner: perforce Options: unlocked nocompress copyrcs Description: Created by perforce. LastFetch: default LastPush: default DepotMap: //... //... info: Remote Everything saved. exit: 0 Attempting the fetch. This should succeed. Executing command: p4 fetch -r Everything 2 change(s) containing a total of 3 file revision(s) were successfully fetched. ============================================================================== OK, that's a regular fetch. Next, we'll mess with the history to create a partial rename situation. Operating in: /tmp/repro/Source Executing command: p4 -s obliterate -y One.h info: Deleted 2 integration 2 revision record(s). exit: 0 Executing command: p4 describe -s 2 Change 2 by perforce@perforce-dvcs-1765838251 on 2025/12/15 17:37:34 Moved One.h to Two.h. Affected files ... ... //stream/main/Two.h#1 move/add Operating in: /tmp/repro/Target-2 Creating this remote spec: RemoteID: Everything Address: rsh:/bin/sh -c "umask 077 && exec p4d -i -J off -r '/tmp/repro/Source/.p4root'" (config '/tmp/repro/Source/.p4config Owner: perforce Options: unlocked nocompress copyrcs Description: Created by perforce. LastFetch: default LastPush: default DepotMap: //... //... info: Remote Everything saved. exit: 0 Executing command: p4 fetch -r Everything Files are missing as a result of one or more move operations. The files are: Change 2 performs a move/add on //stream/main/Two.h#1, but the parameters of this fetch, push, or zip command include only part of the full action. Specify a wider view to include both the source and target of the change, or specify a narrower view to exclude both the source and target of the change. Error: The fetch of the partial renamed failed (as expected, but not as desired). ============================================================================== The Result: The above fetch failure is expected due to the current limitation on fetching partial renames. Desired behavior would be to import the move/add action and leave behind the obliterated move/delete half of the action (possibly requiring a '-f' or '-F' force option). There may be limitations to that, but there should be a way to force through the fetch if we decide to ignore that specific type of fetch failure.
| # | Change | User | Description | Committed | |
|---|---|---|---|---|---|
| #1 | 32260 | C. Thomas Tyler |
Repro script demonstraiting failure to fetch a partial rename. #review @jack_clucas |