Commit Graph

205 Commits

Author SHA1 Message Date
henrik karlsson
b5164ac775 Fixes to make modules compile with IWYU. We've added to IWYU toolchain so it compiles "orphaned" headers which does not have a owning cpp file. This identified lots of headers that couldn't be compiled by themselves (or if they were to included first)
Change consist of only forward declaration and additional includes

#preflight 63789c1de30d438849c48188
#rb none

[CL 23218412 by henrik karlsson in ue5-main branch]
2022-11-21 03:22:23 -05:00
paul chipchase
1a00222986 The perforce source control API can now issue a single p4 print command with multiple depot file paths as arguments rather than issuing a single p4 print command per file.
#rb PJ.Kack
#jira UE-167578
#rnx
#preflight 635bdddd5b54febd38b7efd0

- Clean up the source control backend by removing the older code path that was ifdefed out and clean up the new path.
- FPerforceConnection no longer takes a TOptional<FSharedBuffer> but takes an optional pointer to a TArray of FSharedBuffer. When gathering files this should return one FSharedBuffer per file requested.
-- It might make more sense to attach the FSharedBuffer to the FP4Record but that would require some bigger changes and would be better suited to being some follow on work. All the code is private in the module and not exposed so it is fairly safe and easy to do these refactors later.

- Replaced the TArray buffer for gathering files with a purpose built class FP4DepotFile.
- When issuing a p4 print command with multiple files we will get one call to ClientUser::OutputStat followed by calls to either ClientUser::OutputText or ClientUser::OutputBinary until all of the file has been delivered, then we will get another call to ClientUser::OutputStat for the next file and so on.
-- Note with binary files we seem to get one final call to ClientUser::OutputBinary with zero size, which I assume is supposed to signal the end of the transfer, text files do not get this, they seem to just stop.

[CL 22888671 by paul chipchase in ue5-main branch]
2022-11-01 15:10:19 -04:00
stuart hill
1fc502d9b1 Give the option to disable being able to diff files in the Source Control Submit Widget. To allow this, AllowsDiffAgainstDepot function should return false.
#preflight 6360fd498768c5532f5425f0
#rb Marco.Anastasi, Patrick.Laflamme

[CL 22888653 by stuart hill in ue5-main branch]
2022-11-01 15:09:57 -04:00
christian savoie
fd89edb9be Add access to local revision number for all source control systems.
Change perforce Revert option to be based on if an item is checked out or marked for add, rather than if it can be checked in.

#tests Used to implement source control menu refactor https://p4-swarm.epicgames.net/reviews/22528870

[CL 22863683 by christian savoie in ue5-main branch]
2022-10-31 11:08:06 -04:00
paul chipchase
d657c87f4d Prevent a slate assert if a perforce connection error is encountered when initializing VA source control connections from background threads.
#rb Sebastian.Nordgren
#rnx
#preflight 63581307d669d2aa7ec95866

- Added FTSMessageLog which is a thread safe version of FMessageLog with limited functionality. It can be used as a thread safe drop in replacement for code that only wants to send messages to the FMessageLog system.
- Somewhat experimental at the moment so it is being kept private in the perforce plugin where it is immediately needed.
- Thread safety is currently achieved by using the normal logging system if we detect that the messages are being added from background threads.
-- In future work this will be improved and we will marshal the messages to the GameThread.

[CL 22795873 by paul chipchase in ue5-main branch]
2022-10-26 18:17:21 -04:00
Robb Surridge
610c467639 Update vendor links for built-in plugins to use secure protocol.
#jira UE-166823
#rb lauren.barnes
#preflight 6352b20b7261e565c476ec3b

[CL 22690089 by Robb Surridge in ue5-main branch]
2022-10-21 11:04:07 -04:00
christian savoie
48b260a74e Fix Perforce Sync command to correctly use Revision value.
Add Revision and Force options to Plastic and Subversion.

#tests Used when implementing source control menu refactor  https://p4-swarm.epicgames.net/reviews/22528870, only tested perforce sync command.

[CL 22683432 by christian savoie in ue5-main branch]
2022-10-21 01:05:23 -04:00
patrick enfedaque
aa180f6f09 Fix not being able to revert Uncontrolled Changelist changes with files not at head revision. (files were forced synched to proper revision but would stay in the UC)
- Add flag to SourceControlOperation to test modified status against synched revision (p4 #have)
- Use this new flag when testing for modifications in UncontrolledChangelist

#jira UE-165558
#rb luc.eygasier
#preflight 633633b7936ff7e3dcda5f92

[CL 22271768 by patrick enfedaque in ue5-main branch]
2022-09-30 11:39:49 -04:00
marco anastasi
dd01cd42b5 Create shortcut buttons in Status Bar for Skein operations
#rb wouter.burgers, patrick.laflamme
#preflight 63301d3d665f6b8f7fab0066


RESOLUTION: Resolved conflict with IsAtLatestRevision() and GetNumLocalChanges()

[CL 22193646 by marco anastasi in ue5-main branch]
2022-09-26 16:32:49 -04:00
paul chipchase
623ba6cc9e The source control settings for the VA source control connection are no longer saved to a local ini file.
#rb Per.Larsson
#jira UE-163834
#rnx
#preflight 632d98e4b4515b7e221654ec

### Virtualization
- At the moment there is no way in the editor UX to change the source control settings for the source control backend, so what ever settings are found in the global environment would be applied when the editor is first run and then saved to a config file under the <saved> directory. From this point onwards those settings would always be used when setting up the source control backend. If the settings were wrong, the first time that the editor was started, then we'd continue to use the incorrect settings even if the global enviroment was fixed. Making the backend work at that point would require that the user know about the local ini file and change the settings there.
- We cannot fix this by just ignoring the ini file as it has been requested that users can add their settings there in case they want to customize things, so we just need to avoid saving to it.
- Added documentation to the source control backends header file on how to set up the ini file if needed.

### Perforce
- FSourceControlInitSettings now accepts EConfigBehavior which describes how we want the source control provider to deal with its settings with regards to the ini file.
- Note that EConfigBehavior is not a bitfield as we do not wish to support only writing to the ini file, there is no point if it cannot be read from.
- When the source control provider is creatred we pass on the into from EConfigBehavior to the FPerforceSourceControlSettings to enable/disable saving and loading.

[CL 22163769 by paul chipchase in ue5-main branch]
2022-09-23 20:05:59 -04:00
paul chipchase
700ad12ab5 Overriding the perforce server address (P4PORT) no longer requires that the user (P4USER) and workspace (P4CLIENT) be overridden as well.
#rb
#jira UE-164284
#rnx
#preflight 632b058efc7f1efbdf92c1b0

- Changed check so that we only check if  'NewServerName' is set in order to apply it as the P4PORT.
-- Originally P4PORT, P4USER and P4CLIENT were all set inside of this if statement and it seems to have been assumed that either all three of the input parameters will be set, or none of them.
-- Host masquerading was added later and was specifically done so that it would only be applied if the P4PORT is overridden as well. I am not sure on the use case for this so I opted to leave it alone.
- Some of the earlier connection attempts don't use the user name or the workspace name so reporting them as part of the failure can be confusing. I have removed them.

[CL 22122719 by paul chipchase in ue5-main branch]
2022-09-21 16:29:22 -04:00
wouter burgers
286e2234bf SourceControl / UEFN: Remove / disable 'sync' context menu item in Content Browser.
For SourceControl providers that do not support individual file revisions, the 'Sync' option in the context menu of the Content Browser is misleading as it suggests only the selected files/folders will be synced, while in reality the sync is project wide. I've left the current behavior as the default behavior for all but Skein/Git of which I know they do not support individual file revisions.

#preflight 631ec93359159ac1832b5538

[CL 22086921 by wouter burgers in ue5-main branch]
2022-09-19 21:54:19 -04:00
patrick laflamme
d9a04862a3 Added the 'Last Saved' and 'User' column to the changelist window.
- Implemented sorting and searching for the new columns.
  - Added a FUpdateStatus request to the source control provider when the user selects a changelist.  This gets the users that checked out the files along with extra file status.

Added support to enable/disable changelist window columns for 'Type', 'Last Saved' and 'User' columns and persisted the settings.
Added tooltips over the changelist row that display the content of a column. Useful when the value is clipped because the column is too small.
Added tooltips over the changelist row header.
Prevented creation of useless temporary strings in PerforceSourceControlOperations.cpp

#rb Patrick.Enfedaque
#preflight 6323613367163bf6600d4fc6

[CL 22040806 by patrick laflamme in ue5-main branch]
2022-09-15 18:45:09 -04:00
patrick laflamme
613bcd7b4d Fixed the 'Submit Window' saving the description of the default changelist into a new changelist without moving the files.
- In the 'Submit' window, renamed the 'Apply' button to 'Save' button.
  - If the user saves with the 'default' changelist, a new changelist is created with the user description and files are moved into that changelist.
  - If the user saves with any other changelist, ony the description is edited.

#rb Luc.Eygasier
#preflight 631a13a2304480f8f85aba2c

[CL 21909342 by patrick laflamme in ue5-main branch]
2022-09-08 20:48:26 -04:00
patrick laflamme
6819c99704 Removed the creation of hundreds of unneccesary temporary strings while parsing P4 results.
#rb Patrick.Enfedaque
#preflight 6310a693e352708d4462e191

[CL 21743001 by patrick laflamme in ue5-main branch]
2022-09-01 12:40:50 -04:00
SRombauts
8df7cabe69 Updated the changelist window to handle the Enter and Delete keys to Submit or Delete the currently selected changelist if conditions to do these operations are met. This mimics P4V behavior.
Updated the changelist window to handle double clicking on a changelist. This opens the submit dialog if the submit conditions are met. This mimics P4V behavior.

PR #9433: [Source Control] Changelists window: intercept Enter and Delete keys to Submit or Delete the current changelist (Contributed by SRombauts)
#jira UE-160314
#rb Patrick.Enfedaque
#preflight 630d1e68f92416fb92702657

[CL 21709874 by SRombauts in ue5-main branch]
2022-08-30 17:17:25 -04:00
patrick laflamme
bff7926319 Modified the source control submit window opened from the changelist window:
- Supported editing the changelist and saving it in P4. If the submit fails, the code will also try to save any edited changelist description.
  - Enabled the 'keep checked out' button when submitting from the changelist window.
  - Fixed the P4 cache not properly updating the file 'kept in checkout'.
  - If the submit window is opened from the Source Control menu at the bottom right of the Eitor, the new 'Update' button to save the changelist description is not visible, this is not supported for all source control provider.

Added a delay of 1.5 seconds before showing the slow stack in the changelist window when refreshing the UI.

#jira UE-155238 - Add the option to "keep file in checkout"
#jira UE-155235 - Allow the user to save the description from the submit window.
#rb Patrick.Enfedaque
#preflight 6303e4e75a5d4e4624f5ab6d

[CL 21512088 by patrick laflamme in ue5-main branch]
2022-08-23 13:05:52 -04:00
patrick laflamme
7f2a598696 Refactored the Changelist Window UI to work better with large changelists along with bug fixes.
This submit should not regress any existing functionalites of the previous widget.

Along with the user interface changes, notable bug fixes were included
  - If a changelist is not specified for P4 operations 'Mark for Add', 'Mark for Delete and 'Checkout', defaulted to the 'default' P4 changlist. Without a valid changelist, the cache wasn't properly updated.
  - Fixed updating the cache for P4 'Mark for delete' operation not correctly updating the file changelist cached in the file state.

Other changes:
  - P4 changelists are now always returned sorted by changelist number, ascending.
  - Some of the safe operations were running synchronous are not running asynchrnous (create new changelist, delete empty changelist, delete shelved files).

This submit addresses the following Jiras:

#jira UE-155207 - Refactor the changelist window layout to have the left/right panel.
#jira UE-155209 - Add the context menu on right click on a file or a changelist.
#jira UE-155218 - Support creating new empty changelist from the changelist view.
#jira UE-155220 - Support moving files from the selected changelist (right view) to another changelist (left view)
#jira UE-155211 - Add visual feedback for any operation taking more than 0.5s.
#jira UE-155212 - Display a list of uncontrolled files in the left panel of the changelist window
#jira UE-155499 - Changelist windows buttons should be disabled if SCC is disabled
#jira UE-155229 - Add an option to automatically refresh the changelist window when new assets are imported|created (as uncontrolled), marked for add, checked out, marked for delete
#jira UE-107577 - Source Control's Changelists dialog does not refresh to reflect changes made while open

#rb Patrick.Enfedaque
#preflight 62ff946ef7404b55a326297b

[CL 21499885 by patrick laflamme in ue5-main branch]
2022-08-22 21:20:05 -04:00
paul chipchase
50655b3fd6 Do not try validating the perforce connection when switching to not using a workspace.
#rb Per.Larsson
#jira UE-160083
#rnx
#preflight 62f507c7b66d5d93139804a6

- If we are switching workspaces then we already know that the existing perforce settings are correct.
- The only reason we have to validate them is if we are switching to a different workspace and need to make sure that it exists.
- If we are just removing the workspace name entirely (which is valid for a number of operations) then we have nothing to check and we can just remove the workspace name from our p4 settings structure.
- This saves issuing a few pointless p4 commands.

[CL 21353145 by paul chipchase in ue5-main branch]
2022-08-12 06:59:24 -04:00
paul chipchase
da282e1873 Add FSourceControlBackend support for storing virtualized payloads in a stream type depot.
#rb Per.Larsson
#rnx
#jira UE-160619
#preflight 62f37c86b66d5d93133d67e3

- Based on work from Jess.Kube

### Virtualization
- The source control backend now takes an optional config option "ClientStream" which takes the name of the client stream to use.
- If a client stream is set then workspaces created for payload submission will use that and not provide a client-view mapping.

#ushell-cherrypick of 21195584 by Jess.Kube
### PerforceSourceControl
- Allow FCreateWorkspace to create workspaces with streams as well as classic workspaces cia FCreateWorkspace::SetStream.
- Add a method FCreateWorkspace::ClearClientViewMappings which will clear any client view mappings already added to the operation.
- If we detect that a FCreateWorkspace operation has both a stream set and client view mappings set then FPerforceCreateWorkspaceWorker will return an error. Perforce will allow us to creat a client spec with both entries, but will default to using the stream. Technically we could allow this too but it might cause unexpected behaviour to the caller. It is better to give a clear error and fail the workspace creation.

[CL 21316756 by paul chipchase in ue5-main branch]
2022-08-10 08:51:05 -04:00
jeanfrancois dube
5f4ba555d2 Downgrade a warning to a log.
#rb none
#preflight none
#rnx

#ROBOMERGE-AUTHOR: jeanfrancois.dube
#ROBOMERGE-SOURCE: CL 21283396 via CL 21283402 via CL 21283404
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v972-20964824)

[CL 21289144 by jeanfrancois dube in ue5-main branch]
2022-08-09 11:33:30 -04:00
jeanfrancois dube
bf6ca2169e Perforce Source Control: always print perforce command execution time when it takes over 100ms.
#rb richard.malo
#preflight none
#rnx

#ROBOMERGE-AUTHOR: jeanfrancois.dube
#ROBOMERGE-SOURCE: CL 21283151 via CL 21283152 via CL 21283156
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v972-20964824)

[CL 21289096 by jeanfrancois dube in ue5-main branch]
2022-08-09 11:32:20 -04:00
marc audy
0edc19c939 Duplicating assets should keep a perforce relationship to the original file
#rb Brooke.Hubert
#jira

#ROBOMERGE-AUTHOR: marc.audy
#ROBOMERGE-SOURCE: CL 21119014 via CL 21119416 via CL 21119491
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v972-20964824)

[CL 21142516 by marc audy in ue5-main branch]
2022-07-17 22:46:56 -04:00
paul chipchase
23561c479e Backing out my previous backout in CL 21008523 to avoid conflicts with release engine staging
#rb none
#rnx
#preflight 62cfc09a5c36489ec9cab393

[CL 21088298 by paul chipchase in ue5-main branch]
2022-07-14 03:22:35 -04:00
paul chipchase
85ed853f9b Backing out 21008487, submitted to the wrong branch
#rb none
#preflight skip

[CL 21008523 by paul chipchase in ue5-main branch]
2022-07-08 11:54:05 -04:00