perforce / p4transfer

[Community Supported] Utility for transferring a subset of files (with complete history of all changelists) from one Helix Core repository to another, only requiring read access to the source repository.
BSD 2-Clause "Simplified" License
43 stars 19 forks source link

ignore_files used to filter out directories doesn't work #17

Open botman99 opened 1 year ago

botman99 commented 1 year ago

I want to transfer a stream from a remote Perforce server that I can't create virtual streams on (I don't have permissions to create one). I tried to use the 'ignore_files' list to filter out folders that I wanted to ignore, like so:

ignore_files: - "/FolderOne/.*$" - "/FolderTwo/.*$" - "/FoderThree/Stuff/.*$

This fails with "Replication failure: missing elements in target changelist:" when validateSubmittedChange calls ChangelistComparer. The diff always contained files causing it to return false. The original code was this:

srcfiles = set([chRev.localFile for chRev in srclist if chRev.localFile not in filesToIgnore]) targfiles = set([chRev.localFile for chRev in targlist])

...but it seems like both the source and target lists of files should filter out the files being ignored. This seemed to work properly:

srcfiles = set([chRev.localFile for chRev in srclist if chRev.localFile not in filesToIgnore]) targfiles = set([chRev.localFile for chRev in targlist if chRev.localFile not in filesToIgnore])

...and the diff was empty with the 'ignore_files' being excluded and not submitted to the local Perforce server.