repro.log #1

  • //
  • guest/
  • tom_tyler/
  • repro/
  • P4IsolateTest/
  • repro.log
  • View
  • Commits
  • Open Download .zip Download (15 KB)
Started repro.sh v1.0.0 at Tue Jul 28 09:55:49 EDT 2026 in /Users/ttyler/pub/tt/repro/P4IsolateTest.
ReproDir=/tmp/repro
==============================================================================
Scenario 1: Streams Isolate Path Inheritance


Preliminary info: Show versions of p4/p4d on the PATH:
Executing command: p4 -V
Perforce - The Fast Software Configuration Management System.
Copyright 1995-2026 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.5.7 9 Jun 2026
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/MACOSX12ARM64/2026.1/2972966 (2026/06/10).
Executing command: p4d -V
Perforce - The Fast Software Configuration Management System.
Copyright 1995-2026 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.5.7 9 Jun 2026
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.20
Version of Cyrus SASL Libraries: 2.1.28
See 'p4 help [ -l ] legal' for additional license information on
these licenses and others.
Using no memory manager.
Rev. P4D/MACOSX12ARM64/2026.1/2972966 (2026/06/10).
License: none

Preliminary setup: Spin up a local repo.
Operating in: /tmp/repro
Executing command: p4 init -C0 -n
Server ttyler-dvcs-1785246949 saved.

After 'p4 init -C0 -n', the local repo should already have a stream depot named 'stream' and a mainline stream named //stream/main.
Executing command: p4 info
User name: ttyler
Client name: ttyler-dvcs-1785246949
Client root: /tmp/repro
Client stream: //stream/main
Current directory: /tmp/repro
Peer address: unknown
Client address: unknown
Server address: personal server created by 'init'
Server root: /tmp/repro/.p4root
Server date: 2026/07/28 09:55:50 -0400 EDT
Server uptime: 00:00:00
Server version: P4D/MACOSX12ARM64/2026.1/2972966 (2026/06/10)
ServerID: ttyler-dvcs-1785246949
Server services: local
Server license: none
Case Handling: sensitive
Executing command: p4 streams
Stream //stream/main mainline none '//stream/main'

==============================================================================
Scenario 1 setup: Configure //stream/main with 'isolate Version'.

The mainline stream generated by p4 init starts with ordinary shared stream paths.
This repro edits only //stream/main and adds the SDP-style isolated Version path:

    Paths:
        share ...
        isolate Version

Modified //stream/main stream spec:
Stream:	//stream/main

Update:	2026/07/28 09:55:50

Access:	2026/07/28 09:55:50

Owner:	ttyler

Name:	//stream/main

Parent:	none

Type:	mainline

Description:
	Autocreated by switch command

Options:	allsubmit unlocked notoparent nofromparent mergeany

ParentView:	inherit

Paths:
	share ...
	isolate Version
p4 -s stream -i < main.stream
info: Stream //stream/main saved.
exit: 0

//stream/main after update:
Stream:	//stream/main

Update:	2026/07/28 09:55:50

Access:	2026/07/28 09:55:50

Owner:	ttyler

Name:	//stream/main

Parent:	none

Type:	mainline

Description:
	Autocreated by switch command

Options:	allsubmit unlocked notoparent nofromparent mergeany

ParentView:	inherit

Paths:
	share ...
	isolate Version


==============================================================================
Scenario 2: Create descendant streams after main already has 'isolate Version'.


Creating //stream/dev as a development child of //stream/main.
Stream:	//stream/dev

Owner:	ttyler

Name:	dev

Parent:	//stream/main

Type:	development

Description:
	Created by ttyler.

Options:	allsubmit unlocked toparent fromparent mergedown

ParentView:	inherit

Paths:
	share ...
p4 -s stream -i < dev.stream
info: Stream //stream/dev saved.
exit: 0

Creating //stream/dev_rebrand as a development child of //stream/dev.
Stream:	//stream/dev_rebrand

Owner:	ttyler

Name:	dev_rebrand

Parent:	//stream/dev

Type:	development

Description:
	Created by ttyler.

Options:	allsubmit unlocked toparent fromparent mergedown

ParentView:	inherit

Paths:
	share ...
p4 -s stream -i < dev_rebrand.stream
info: Stream //stream/dev_rebrand saved.
exit: 0

Creating //stream/r26.1 as a release child of //stream/main.
This intentionally relies on the server's release-stream defaults rather than manually creating a noinherit stream depot or custom depot spec.
Stream:	//stream/r26.1

Owner:	ttyler

Name:	r26.1

Parent:	//stream/main

Type:	release

Description:
	Created by ttyler.

Options:	allsubmit unlocked toparent fromparent mergedown

ParentView:	inherit

Paths:
	share ...
p4 -s stream -i < r26.1.stream
info: Stream //stream/r26.1 saved.
exit: 0

Current streams:
Executing command: p4 streams
Stream //stream/dev development //stream/main 'dev'
Stream //stream/dev_rebrand development //stream/dev 'dev_rebrand'
Stream //stream/main mainline none '//stream/main'
Stream //stream/r26.1 release //stream/main 'r26.1'

==============================================================================
Scenario 3: Capture stream specs and generated views for later inspection.

The generated view output is intentionally verbose.  It is often the most useful evidence when discussing stream behavior with someone who knows ViewGen internals.

Stream spec for //stream/main:
Stream:	//stream/main

Update:	2026/07/28 09:55:50

Access:	2026/07/28 09:55:50

Owner:	ttyler

Name:	//stream/main

Parent:	none

Type:	mainline

Description:
	Autocreated by switch command

Options:	allsubmit unlocked notoparent nofromparent mergeany

ParentView:	inherit

Paths:
	share ...
	isolate Version


Generated view for //stream/main:
Stream:	//stream/main

Update:	2026/07/28 09:55:50

Access:	2026/07/28 09:55:50

Owner:	ttyler

Name:	//stream/main

Parent:	none

Type:	mainline

Description:
	Autocreated by switch command

Options:	allsubmit unlocked notoparent nofromparent mergeany

ParentView:	inherit

Paths:
	share ...
	isolate Version

View:
	//stream/main/... ...
	//stream/main/Version Version


Stream spec for //stream/dev:
Stream:	//stream/dev

Update:	2026/07/28 09:55:50

Access:	2026/07/28 09:55:50

Owner:	ttyler

Name:	dev

Parent:	//stream/main

Type:	development

Description:
	Created by ttyler.

Options:	allsubmit unlocked toparent fromparent mergedown

ParentView:	inherit

Paths:
	share ...


Generated view for //stream/dev:
Stream:	//stream/dev

Update:	2026/07/28 09:55:50

Access:	2026/07/28 09:55:50

Owner:	ttyler

Name:	dev

Parent:	//stream/main

Type:	development

Description:
	Created by ttyler.

Options:	allsubmit unlocked toparent fromparent mergedown

ParentView:	inherit

Paths:
	share ...

View:
	//stream/dev/... ...
	//stream/dev/Version Version


Stream spec for //stream/dev_rebrand:
Stream:	//stream/dev_rebrand

Update:	2026/07/28 09:55:50

Access:	2026/07/28 09:55:50

Owner:	ttyler

Name:	dev_rebrand

Parent:	//stream/dev

Type:	development

Description:
	Created by ttyler.

Options:	allsubmit unlocked toparent fromparent mergedown

ParentView:	inherit

Paths:
	share ...


Generated view for //stream/dev_rebrand:
Stream:	//stream/dev_rebrand

Update:	2026/07/28 09:55:50

Access:	2026/07/28 09:55:50

Owner:	ttyler

Name:	dev_rebrand

Parent:	//stream/dev

Type:	development

Description:
	Created by ttyler.

Options:	allsubmit unlocked toparent fromparent mergedown

ParentView:	inherit

Paths:
	share ...

View:
	//stream/dev_rebrand/... ...
	//stream/dev_rebrand/Version Version


Stream spec for //stream/r26.1:
Stream:	//stream/r26.1

Update:	2026/07/28 09:55:50

Access:	2026/07/28 09:55:50

Owner:	ttyler

Name:	r26.1

Parent:	//stream/main

Type:	release

Description:
	Created by ttyler.

Options:	allsubmit unlocked toparent fromparent mergedown

ParentView:	inherit

Paths:
	share ...


Generated view for //stream/r26.1:
Stream:	//stream/r26.1

Update:	2026/07/28 09:55:50

Access:	2026/07/28 09:55:50

Owner:	ttyler

Name:	r26.1

Parent:	//stream/main

Type:	release

Description:
	Created by ttyler.

Options:	allsubmit unlocked toparent fromparent mergedown

ParentView:	inherit

Paths:
	share ...

View:
	//stream/r26.1/... ...
	//stream/r26.1/Version Version


==============================================================================
Scenario 4: Create one workspace per stream.

Using separate workspaces makes the file operations easier to read in the resulting log.

==============================================================================
Scenario 5: Add a different Version file in every stream.

The theory is that each Version file lives in its own stream forever and is not subject to normal Merge Down / Copy Up flow.

Adding Version in //stream/main.
Executing command: p4 add Version
//stream/main/Version#1 - opened for add
Executing command: p4 submit -d Add-main-Version
Submitting change 5.
Locking 1 files ...
add //stream/main/Version#1
Change 5 submitted.

Adding Version in stream dev.
Executing command: p4 client -s -S //stream/dev
Client ttyler-dvcs-1785246949 switched.
Executing command: p4 sync
//stream/main/Version#1 - deleted as /tmp/repro/Version
Executing command: p4 add Version
//stream/dev/Version#1 - opened for add
Executing command: p4 submit -d Add-dev-Version
Submitting change 6.
Locking 1 files ...
add //stream/dev/Version#1
Change 6 submitted.

Adding Version in stream dev_rebrand.
Executing command: p4 client -s -S //stream/dev_rebrand
Client ttyler-dvcs-1785246949 switched.
Executing command: p4 sync
//stream/dev/Version#1 - deleted as /tmp/repro/Version
Executing command: p4 add Version
//stream/dev_rebrand/Version#1 - opened for add
Executing command: p4 submit -d Add-dev_rebrand-Version
Submitting change 7.
Locking 1 files ...
add //stream/dev_rebrand/Version#1
Change 7 submitted.

Adding Version in stream r26.1.
Executing command: p4 client -s -S //stream/r26.1
Client ttyler-dvcs-1785246949 switched.
Executing command: p4 sync
//stream/dev_rebrand/Version#1 - deleted as /tmp/repro/Version
Executing command: p4 add Version
//stream/r26.1/Version#1 - opened for add
Executing command: p4 submit -d Add-r26.1-Version
Submitting change 8.
Locking 1 files ...
add //stream/r26.1/Version#1
Change 8 submitted.

==============================================================================
Scenario 6: Add ordinary shared files that should be proposed by merge previews.

To avoid a false PASS, this repro also creates ordinary shared files.  The preview tests should show these ordinary files as candidates while not showing Version.

Adding SharedFromMain.txt in //stream/main.
Executing command: p4 client -s -S //stream/main
Client ttyler-dvcs-1785246949 switched.
Executing command: p4 sync
//stream/main/Version#1 - replacing /tmp/repro/Version
Executing command: p4 add SharedFromMain.txt
//stream/main/SharedFromMain.txt#1 - opened for add
Executing command: p4 submit -d Add-shared-file-from-main
Submitting change 9.
Locking 1 files ...
add //stream/main/SharedFromMain.txt#1
Change 9 submitted.

Adding SharedFromDev.txt in //stream/dev.
Executing command: p4 client -s -S //stream/dev
Client ttyler-dvcs-1785246949 switched.
Executing command: p4 sync
//stream/main/SharedFromMain.txt#1 - deleted as /tmp/repro/SharedFromMain.txt
//stream/dev/Version#1 - replacing /tmp/repro/Version
Executing command: p4 add SharedFromDev.txt
//stream/dev/SharedFromDev.txt#1 - opened for add
Executing command: p4 submit -d Add-shared-file-from-dev
Submitting change 10.
Locking 1 files ...
add //stream/dev/SharedFromDev.txt#1
Change 10 submitted.

==============================================================================
Scenario 7: Preview merges and look for Version.

A successful result is not merely that merge previews are empty.
A successful result is that ordinary shared files are proposed, while Version is not proposed.

Preview merge from parent //stream/main into child //stream/dev.
Expected: SharedFromMain.txt should appear; Version should not appear.
Executing command: p4 client -s -S //stream/dev
Client ttyler-dvcs-1785246949 not changed.
Executing command: p4 sync
File(s) up-to-date.
//stream/dev/SharedFromMain.txt#1 - sync/delete from //stream/main/SharedFromMain.txt#1
... must resolve branch from //stream/main/SharedFromMain.txt#1

Preview merge from parent //stream/dev into grandchild //stream/dev_rebrand.
Expected: SharedFromDev.txt should appear; Version should not appear.
Executing command: p4 client -s -S //stream/dev_rebrand
Client ttyler-dvcs-1785246949 switched.
Executing command: p4 sync
//stream/dev/SharedFromDev.txt#1 - deleted as /tmp/repro/SharedFromDev.txt
//stream/dev_rebrand/Version#1 - replacing /tmp/repro/Version
//stream/dev_rebrand/SharedFromDev.txt#1 - sync/delete from //stream/dev/SharedFromDev.txt#1
... must resolve branch from //stream/dev/SharedFromDev.txt#1

Preview merge from parent //stream/main into release stream //stream/r26.1.
Expected: SharedFromMain.txt should appear; Version should not appear.
Executing command: p4 client -s -S //stream/r26.1
Client ttyler-dvcs-1785246949 switched.
Executing command: p4 sync
//stream/r26.1/Version#1 - replacing /tmp/repro/Version
//stream/r26.1/SharedFromMain.txt#1 - branch/sync from //stream/main/SharedFromMain.txt#1

==============================================================================
Scenario 8: Additional inspection commands.

These commands are informational.  They make the log more useful if this repro is later sent to someone else for review.
Executing command: p4 files //stream/...
//stream/dev/SharedFromDev.txt#1 - add change 10 (text)
//stream/dev/Version#1 - add change 6 (text)
//stream/dev_rebrand/Version#1 - add change 7 (text)
//stream/main/SharedFromMain.txt#1 - add change 9 (text)
//stream/main/Version#1 - add change 5 (text)
//stream/r26.1/Version#1 - add change 8 (text)
Executing command: p4 interchanges //stream/main //stream/dev
//stream/main - all revision(s) already integrated.
Executing command: p4 interchanges //stream/dev //stream/dev_rebrand
//stream/dev - all revision(s) already integrated.
Executing command: p4 interchanges //stream/main //stream/r26.1
//stream/main - all revision(s) already integrated.

==============================================================================
The Result:

Yay!

The observed behavior supports the theory being tested:

    isolate Version

defined only in //stream/main was sufficient for the descendant streams created after that setting was present.

The merge previews proposed ordinary shared files, proving the merge previews were meaningful, but did not propose Version.

This supports the SDP design assumption that Version can be isolated once in main rather than redundantly isolated in every descendant development stream.

For release streams, this repro also checks the practical behavior of a release stream created after main already had the isolated path.  Existing noinherit release streams created before the path change should still be reviewed separately.
# Change User Description Committed
#1 33122 C. Thomas Tyler Added repro script that confirmed stream behavior with respect to inheritanc of 'isolate'.