Files
UnrealEngineUWP/Engine/Source/Developer/SourceControl/Public/SourceControlHelpers.h
Matthew Griffin bb70b349ce Merging CL 2804086 from //UE4/Release-4.11 to Dev-Main (//UE4/Dev-Main) to isolate copyright update
#lockdown Nick.Penwarden

[CL 2819020 by Matthew Griffin in Main branch]
2016-01-07 08:17:16 -05:00

146 lines
5.9 KiB
C++

// Copyright 1998-2016 Epic Games, Inc. All Rights Reserved.
#pragma once
#include "ISourceControlRevision.h"
class ISourceControlProvider;
class ISourceControlState;
/**
* Delegate used for performing operation on files that may need a checkout, but before they are added to source control
* @param InDestFile The filename that was potentially checked out
* @param InFileDescription Description of the file to display to the user, e.g. "Text" or "Image"
* @param OutFailReason Text describing why the operation failed
* @return true if the operation was successful
*/
DECLARE_DELEGATE_RetVal_ThreeParams(bool, FOnPostCheckOut, const FString& /*InDestFile*/, const FText& /*InFileDescription*/, FText& /*OutFailReason*/);
namespace SourceControlHelpers
{
/**
* Helper function to get the ini filename for storing source control settings
* @return the filename
*/
SOURCECONTROL_API extern const FString& GetSettingsIni();
/**
* Helper function to get the ini filename for storing global source control settings
* @return the filename
*/
SOURCECONTROL_API extern const FString& GetGlobalSettingsIni();
/**
* Helper function to get a filename for a package name.
* @param InPackageName The package name to get the filename for
* @return the filename
*/
SOURCECONTROL_API extern FString PackageFilename( const FString& InPackageName );
/**
* Helper function to get a filename for a package.
* @param InPackage The package to get the filename for
* @return the filename
*/
SOURCECONTROL_API extern FString PackageFilename( const UPackage* InPackage );
/**
* Helper function to convert package array into filename array.
* @param InPackages The package array
* @return an array of filenames
*/
SOURCECONTROL_API extern TArray<FString> PackageFilenames( const TArray<UPackage*>& InPackages );
/**
* Helper function to convert package name array into a filename array.
* @param InPackageNames The package name array
* @return an array of filenames
*/
SOURCECONTROL_API extern TArray<FString> PackageFilenames( const TArray<FString>& InPackageNames );
/**
* Helper function to convert a filename array to absolute paths.
* @param InFileNames The filename array
* @return an array of filenames, transformed into absolute paths
*/
SOURCECONTROL_API extern TArray<FString> AbsoluteFilenames( const TArray<FString>& InFileNames );
/**
* Helper function to get a list of files that are unchanged & revert them. This runs synchronous commands.
* @param InProvider The provider to use
* @param InFiles The files to operate on
*/
SOURCECONTROL_API extern void RevertUnchangedFiles( ISourceControlProvider& InProvider, const TArray<FString>& InFiles );
/**
* Helper function to annotate a file using a label
* @param InProvider The provider to use
* @param InLabel The label to use to retrieve the file
* @param InFile The file to annotate
* @param OutLines Output array of annotated lines
* @returns true if successful
*/
SOURCECONTROL_API extern bool AnnotateFile( ISourceControlProvider& InProvider, const FString& InLabel, const FString& InFile, TArray<FAnnotationLine>& OutLines );
/**
* Helper function to annotate a file using a changelist/checkin identifier
* @param InProvider The provider to use
* @param InCheckInIdentifier The changelist/check identifier to use to retrieve the file
* @param InFile The file to annotate
* @param OutLines Output array of annotated lines
* @returns true if successful
*/
SOURCECONTROL_API extern bool AnnotateFile( ISourceControlProvider& InProvider, int32 InCheckInIdentifier, const FString& InFile, TArray<FAnnotationLine>& OutLines );
/**
* Helper function to check out a file
* @param InFile The file path to check in
* @return Success or failure of the checkout operation
*/
SOURCECONTROL_API extern bool CheckOutFile( const FString& InFile );
/**
* Helper function perform an operation on files in our 'source controlled' directories, handling checkout/add etc.
* @param InDestFile The path to the destination file
* @param InFileDescription Description of the file to display to the user, e.g. "Text" or "Image"
* @param OnPostCheckOut Delegate used for performing operation on files that may need a checkout, but before they are added to source control
* @param OutFailReason Text describing why the operation failed
* @return Success or failure of the operation
*/
SOURCECONTROL_API extern bool CheckoutOrMarkForAdd( const FString& InDestFile, const FText& InFileDescription, const FOnPostCheckOut& OnPostCheckOut, FText& OutFailReason );
/**
* Helper function to copy a file into our 'source controlled' directories, handling checkout/add etc.
* @param InDestFile The path to the destination file
* @param InSourceFile The path to the source file
* @param InFileDescription Description of the file to display to the user, e.g. "Text" or "Image"
* @param OutFailReason Text describing why the operation failed
* @return Success or failure of the operation
*/
SOURCECONTROL_API extern bool CopyFileUnderSourceControl( const FString& InDestFile, const FString& InSourceFile, const FText& InFileDescription, FText& OutFailReason );
/**
* Helper function to branch/integrate packages from one location to another
* @param DestPackage The destination package
* @param SourcePackage The source package
* @return true if the file packages were successfully branched.
*/
SOURCECONTROL_API extern bool BranchPackage( UPackage* DestPackage, UPackage* SourcePackage );
}
/**
* Helper class that ensures FSourceControl is properly initialized and shutdown by calling Init/Close in
* its constructor/destructor respectively.
*/
class SOURCECONTROL_API FScopedSourceControl
{
public:
/** Constructor; Initializes Source Control Provider */
FScopedSourceControl();
/** Destructor; Closes Source Control Provider */
~FScopedSourceControl();
/** Get the provider we are using */
ISourceControlProvider& GetProvider();
};