repro.log #1

  • //
  • guest/
  • tom_tyler/
  • repro/
  • FetchPartialRename/
  • repro.log
  • View
  • Commits
  • Open Download .zip Download (5 KB)
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