160 Commits

Author SHA1 Message Date
eric boucher
70ad2bf9c6 Added a SetQuiet boolean to FGetFileList Source Control Operation to be able to prevent messages "... - no such file(s)." from generating errors in the logs.
#jira UE-216348
#rb wouter.burgers

[CL 35977637 by eric boucher in ue5-main branch]
2024-09-03 15:36:14 -04:00
eric boucher
ef71ea2b5b New localization option to move localized variants alongside source asset in the content browser and another one to detect if those localized variants are only in Revision Control:
- Project Settings / Editor / Assets / Internationalization / Rename Localized Variants Alongside Source Asset (defaults to: true)
 - Project Settings / Editor / Revision Control / Internationalization / Requires Revision Control to Rename Localizable Assets (defaults to: false) (works only with Perforce)

#jira UE-216348
#rb Jamie.Dale, wouter.burgers
[RN]

[CL 35804579 by eric boucher in ue5-main branch]
2024-08-26 14:02:18 -04:00
wouter burgers
dc628d3f06 RevisionControlStyle: Fixed discrepancy between '+' sign color in Snapshot History assets row and SceneOutliner for 'added' files.
#rb federico.lopez, Stuart.Hill

[CL 34733181 by wouter burgers in ue5-main branch]
2024-06-28 03:22:02 -04:00
dave belanger
df4bca31d8 [UEFN] Support multiple projects on the same perforce workspace
Put guardrails against using URC with multiple projects because it's not supported
#rb wouter.burgers

[CL 34127677 by dave belanger in ue5-main branch]
2024-06-05 12:05:35 -04:00
wouter burgers
ee4e44ae78 Skein / SnapshotHistory: Icon Update.
#rb Manuel.Lang

[CL 33888567 by wouter burgers in ue5-main branch]
2024-05-24 04:02:05 -04:00
christian savoie
96154163d5 Add Revision Control option to copy remote paths
* Fix mixed file/folder selection to properly resolve all items in selection
* Fix revert writable to use filtered file list instead of full file list.
* Expose the number of paths required to trigger user dialog about large operations so it can be customized per operation

#tests Tested copy remote paths action with files, folders and a mix, including local only files
[REVIEW] [at]aditya.ravichandran [at]Julien.StJean [at]lauren.barnes
#rb brooke.hubert, wouter.burgers

[CL 33533507 by christian savoie in ue5-main branch]
2024-05-08 18:57:35 -04:00
wouter burgers
479acf7cdf SourceControl: Fixed hitch caused by conflict remaining/upcoming scanning in large repositories.
Instead of scanning the cache in its entirity (twice!) on every source control status cache, the Skein provider now keeps track of remaining/upcoming conflicts incrementally as new source control statuses come in.

#jira UE-213176
#rb Manuel.Lang

[CL 33300055 by wouter burgers in ue5-main branch]
2024-04-29 10:22:55 -04:00
aditya ravichandran
cff3fd1290 Revision Control: Update color for marked for add icon to accent blue
#rb Brooke.Hubert

[CL 33027535 by aditya ravichandran in ue5-main branch]
2024-04-16 23:13:33 -04:00
paul chipchase
4cf57d2d1e Extend FSourceControlInitSettings to allow the caller to control if a provider uses values parsed from the commandline or not when initializing.
#rb Juan.Legaz
#jira UE-212182
#rnx

- We default to the old behavior, so that the default way of creating a source control provider (no FSourceControlInitSettings) will read all of the commandline parameters available and the newer way (creating a provider with a FSourceControlInitSettings) will ignore the commandline.

[CL 33001499 by paul chipchase in ue5-main branch]
2024-04-16 11:05:04 -04:00
wouter burgers
efedf89bd1 Skein / ViewportStatus: Update iconography again with latest icons/colors received on Slack.
[FYI] manuel.lang

[CL 32737147 by wouter burgers in ue5-main branch]
2024-04-04 14:41:22 -04:00
wouter burgers
758113aa94 Skein / ConflictUE: Update primary URC buttons with conflict icons when a user saves changes to a file that we know is out of date.
#rb Manuel.Lang

[CL 32615215 by wouter burgers in ue5-main branch]
2024-03-29 11:45:26 -04:00
marco anastasi
46168a0105 Warn the user with a confirmation dialog if the revision control provider is changed/disabled
#rb wouter.burgers

[CL 32432617 by marco anastasi in ue5-main branch]
2024-03-22 10:11:07 -04:00
wouter burgers
b96d8d30b2 SkeinUE: Refactored SSourceControlControls.
The SSourceControlControls is currently instantiated in two places in the editor: bottom right and as part of the snapshot history panel. Regardless, we would like the behavior of these buttons to be the same. This was accomplished by providing 'defaults' in SourceControlMenuHelpers and then setting temporary 'overrides' in SnapshotHistoryPanel. This wasn't very pretty and somewhat confusing with SSourceControlControls providing a mix of instance and static interfaces and behaviors. I've refactored this with the idea in mind that these buttons should behave similar, wherever they are placed in the editor and providing static methods to control that behavior. The default behavior is now no-op and SnapshotHistory provides the UEFN/Skein behavior.

This also allowed the 'CanAutoSave' code to live in one location (in the SnapshotHistoryController) instead of being duplicated in two spots. This was also not possible because engine code cannot be accessed from SkeinSourceControlSlate, where the SSourceControlControls was being instantiated, resulting in the behavior as described in the JIRA bug.

#rb manuel.lang, marco.anastasi

[CL 31796796 by wouter burgers in ue5-main branch]
2024-02-26 03:57:11 -05:00
marco anastasi
4f2e25abee * Added Restore as Latest functionality
* Created 'Restore as latest' dialog

#rb wouter.burgers

[CL 31095574 by marco anastasi in ue5-main branch]
2024-02-01 13:58:40 -05:00
marco anastasi
9be55ae1ae Populate Assets List in expanded Snapshot view
Created Asset Class 'filter pill' widget
Extended Assets List to display a colour pill representing the asset class

#rb wouter.burgers

[CL 30443162 by marco anastasi in ue5-main branch]
2023-12-22 14:15:22 -05:00
wouter burgers
389ae421f8 Skein / Snapshot History: Assorted snapshot history UI updates. See JIRA for checkmarked list.
#rb Marco.Anastasi
#rnx

[CL 30438221 by wouter burgers in ue5-main branch]
2023-12-22 03:31:43 -05:00
paul chipchase
82618a9ffd Capture info messages for all perforce commands, the calling code can then decide if the info is important or not.
#rb juan.legaz
#jira UE-175581

### Perforce Connection
- FP4ClientUser now takes a FSourceControlResultInfo structure to store the warning/error messages generated during a perforce command, in addition we can now store info messages.
-- In almost all cases the array that was being passed in to store the warning/error messages came from a FSourceControlResultInfo so it doesn't change the overall flow.
- Rather than override ClientUser::OutputInfo to get the info messages we have overridden FP4ClientUser::Message instead as this is the preferred way in the cpp p4 api to capturing messages.
-- One difference between ::Message and the older capturing methods is that the older methods seemed to result in a newline character at the end of the message, which we do not see with the newer capture method. As some of our result parsing code relies on this behavior FP4ClientUser::Message will append this newline character for now until the parsing code can be fixed.
- For now FP4ClientUser still overrides ::OutputInfo, ::OutputError and ::HandleError but only to add a checkNoEntry() to each one. This is so that we can confirm that there are no remaining uses of it before removing it entirely.
- All classes derived from FP4ClientUser have been updated to work with the changes. In some cases this meant changing the override of ClientUser::OutputInfo to ClientUser::Message.
-- With a little bit of work we could probably remove these derived classes now that FP4ClientUser supports capturing the info messages which would help simplify the code base however this should be done in a future work item.

### Misc
- Remove ::FPerforceSourceControlProvider::GetWorkspaceList rather than update it, as it is not used.
- Add FSourceControlResultInfo::HasErrors to check if the struct contains errors or not.
-- Did not replace existing use of FPerforceSourceControlProvider::ErrorMessages.IsEmpty() that should be done as it's own work item.

[CL 30208418 by paul chipchase in ue5-main branch]
2023-12-08 06:47:37 -05:00
wouter burgers
9dce208c39 UEFN / Skein: Fixed 'Sync To Latest' functionality moving the user out of their selected 'EditorMode' and losing a part of their progress, by disabling the SourceControl 'Check In Changes' and 'Sync Latest' buttons while an interactive tool is active.
#rb Jamie.Dale, Manuel.Lang, Marco.Anastasi
#rnx

[CL 30010665 by wouter burgers in ue5-main branch]
2023-11-30 03:37:36 -05:00
marco anastasi
768aebf28f Added #if SOURCE_CONTROL_WITH_SLATE to SSourceControlControls Slate class in SourceControl module
#rb paul.chipchase

[CL 29864891 by marco anastasi in ue5-main branch]
2023-11-21 10:29:56 -05:00
marco anastasi
0eb858d5d9 * Created Snapshot History Tab structure
* Created Date Picker Widget
* Created Source Control Controls Widget
* Refactored Status Bar menu to use Source Control Controls Widget

#rb wouter.burgers, stuart.hill

[CL 29864023 by marco anastasi in ue5-main branch]
2023-11-21 09:56:04 -05:00
paul chipchase
0743e8dd17 Fix SOURCE_CONTROL_WITH_SLATE to work properly again in the SourceControl module
#rb wouter.burgers
#rnx

### SourceControl
- Remove link to "InputCore" as it is not used
- Only include slate and rendering modules if the target we are building for uses slate.
- Define SOURCE_CONTROL_WITH_SLATE as 0 if the target we are building for does not use slate.

- When SOURCE_CONTROL_WITH_SLATE is zero the following will be applied:
-- FRevisionControlStyleManager will not be compiled as it only makes sense if slate is enabled.
-- The monitoring aspect of FSourceControlFileStatusMonitor will be disabled as we cannot be notified of user interactions.
-- FScopedSourceControlProgress will compile but essentially do nothing.
-- The ::GetIcon method of ISourceControlState will no longer be compiled as it returns a FSlateIcon by value.

[CL 29516345 by paul chipchase in ue5-main branch]
2023-11-07 06:18:43 -05:00
jeanfrancois dube
87618ccfe5 Optimize source control changelist shelved state update.
Results with a 40K actors changelist editor startup time:
  - Before: FPerforce::AddShelvedFilesToChangelist took 2:35 min
  - After: FPerforce::AddShelvedFilesToChangelist took 160.08 ms

#rb sebastien.lussier
[FYI] jeansebastien.guay

[CL 29047110 by jeanfrancois dube in ue5-main branch]
2023-10-24 11:33:28 -04:00
marco anastasi
35c1ec83b3 Extended RunProjectSnapshotList() method to support explicit pagination
#rb wouter.burgers

[CL 28536047 by marco anastasi in ue5-main branch]
2023-10-06 07:41:21 -04:00
wouter burgers
c2f48c4b96 SourceControl: Changes to FGetSubmittedChangelists (introduced rather plainly in #20292011 but unused since).
- Added support for returning results.
- Added support for filtering as it clearly doesn't scale without it.

#rnx

[CL 27514161 by wouter burgers in ue5-main branch]
2023-08-31 03:23:07 -04:00
paul chipchase
4fa806cf66 Add a new initialization path to ISourceControlProvider allowing the caller to customize the initialization logic and retrieve more info about the initialization itself.
#rb Per.Larsson

### ISourceControlProvider
- Add a new ISourceControlProvider::Init overload that returns a struct (FInitResult) and takes a bitfield of flags (EInitFlags) so that we can more easily extend the initialization in future and return things to the caller.
- If a provider does not implement the new overload we fall-back to the original. This will be removed once all providers support the new path.

### PerforceSourceControlProvider
- Support the new init options via FPerforceConnection::EnsureValidConnection and update places that call it.

### FPerforceConnection
- Update ::AutoDetectWorkspace to return errors to the caller rather than handle its own logging.
- ::TestLoginConnection and ::TestClientConnection no longer calls FPerforceSourceControlProvider::SetLastErrors, this will be done at a higher level.
- ::AutoDetectWorkspace still does its own logging which will be fixed in a future update, it does however return its errors to the caller.
- Split the implementation of ::EnsureValidConnection to a stand alone internal function, the original function now handles and consolidates error handling.
-- Changed the logic to early out of failure rather than constantly checking a boolean all the way down.
-- Tried to remove the need for FPerforceSourceControlProvider to be passed in but a few places still require it.
-- Fixed our handling of the P4PORT value so that we can at least report problems if the address uses unicode characters. I have not yet tested if we can actually connect to such an address. We no longer use the servers unicode setting to decide the port strings encoding as it is not affected by the server settings.
-- Each error encountered should now record a localized error that we expect the user to be able to react to, then an array of errors from the API itself.
-- Once the internal code has run we will do a pass on all errors (if any) and strip any whitespace at the end (p4 tends to end error messages with newline characters) and then add a final entry to the additional errors detailing the settings at the point of failure. This was mostly being done before but is now enforced for every error.
-- No longer log the ticket, although the workflow to allow the user to supply one is not common we still probably don't want to save that to log files.

[CL 26952104 by paul chipchase in ue5-main branch]
2023-08-09 07:27:34 -04:00