本文整理汇总了C++中FSourceControlStatePtr::GetHistoryItem方法的典型用法代码示例。如果您正苦于以下问题:C++ FSourceControlStatePtr::GetHistoryItem方法的具体用法?C++ FSourceControlStatePtr::GetHistoryItem怎么用?C++ FSourceControlStatePtr::GetHistoryItem使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类FSourceControlStatePtr
的用法示例。
在下文中一共展示了FSourceControlStatePtr::GetHistoryItem方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: Update
bool FGetStateLatentCommand::Update()
{
FSourceControlStatePtr SourceControlState = ISourceControlModule::Get().GetProvider().GetState(SourceControlHelpers::PackageFilename(Filename), EStateCacheUsage::Use);
if(!SourceControlState.IsValid())
{
UE_LOG(LogSourceControl, Error, TEXT("Failed to get a valid state for file: %s"), *Filename);
}
else
{
if(!SourceControlState->IsCheckedOut())
{
UE_LOG(LogSourceControl, Error, TEXT("File '%s' should be checked out, but isnt."), *Filename);
}
else
{
if(SourceControlState->GetHistorySize() == 0)
{
UE_LOG(LogSourceControl, Error, TEXT("Failed to get a valid history for file: %s"), *Filename);
}
else
{
TSharedPtr<ISourceControlRevision, ESPMode::ThreadSafe> HistoryItem = SourceControlState->GetHistoryItem(0);
if(!HistoryItem.IsValid())
{
UE_LOG(LogSourceControl, Error, TEXT("Failed to get a valid history item 0 for file: %s"), *Filename);
}
}
}
}
return true;
}
示例2: SCCDiffAgainstDepot
void FLevelCollectionModel::SCCDiffAgainstDepot(const FLevelModelList& InList, UEditorEngine* InEditor)
{
// Load the asset registry module
FAssetToolsModule& AssetToolsModule = FModuleManager::GetModuleChecked<FAssetToolsModule>("AssetTools");
ISourceControlProvider& SourceControlProvider = ISourceControlModule::Get().GetProvider();
// Iterate over each selected asset
for (auto It = InList.CreateConstIterator(); It; ++It)
{
ULevel* Level = (*It)->GetLevelObject();
if (Level == NULL)
{
return;
}
UPackage* OriginalPackage = Level->GetOutermost();
FString PackageName = OriginalPackage->GetName();
// Make sure our history is up to date
auto UpdateStatusOperation = ISourceControlOperation::Create<FUpdateStatus>();
UpdateStatusOperation->SetUpdateHistory(true);
SourceControlProvider.Execute(UpdateStatusOperation, OriginalPackage);
// Get the SCC state
FSourceControlStatePtr SourceControlState = SourceControlProvider.GetState(
OriginalPackage, EStateCacheUsage::Use
);
// If the level is in SCC.
if (SourceControlState.IsValid() && SourceControlState->IsSourceControlled())
{
// Get the file name of package
FString RelativeFileName;
if(FPackageName::DoesPackageExist(PackageName, NULL, &RelativeFileName))
{
if (SourceControlState->GetHistorySize() > 0)
{
auto Revision = SourceControlState->GetHistoryItem(0);
check(Revision.IsValid());
// Get the head revision of this package from source control
FString AbsoluteFileName = FPaths::ConvertRelativePathToFull(RelativeFileName);
FString TempFileName;
if (Revision->Get(TempFileName))
{
// Forcibly disable compile on load in case we are loading old blueprints that might try to update/compile
TGuardValue<bool> DisableCompileOnLoad(GForceDisableBlueprintCompileOnLoad, true);
// Try and load that package
FText NotMapReason;
UPackage* OldPackage = LoadPackage(NULL, *TempFileName, LOAD_None);
if(OldPackage != NULL && InEditor->PackageIsAMapFile(*TempFileName, NotMapReason))
{
/* Set the revision information*/
UPackage* Package = OriginalPackage;
FRevisionInfo OldRevision;
OldRevision.Changelist = Revision->GetCheckInIdentifier();
OldRevision.Date = Revision->GetDate();
OldRevision.Revision = Revision->GetRevision();
FRevisionInfo NewRevision;
NewRevision.Revision = TEXT("");
// Dump assets to temp text files
FString OldTextFilename = AssetToolsModule.Get().DumpAssetToTempFile(OldPackage);
FString NewTextFilename = AssetToolsModule.Get().DumpAssetToTempFile(OriginalPackage);
FString DiffCommand = GetDefault<UEditorLoadingSavingSettings>()->TextDiffToolPath.FilePath;
AssetToolsModule.Get().CreateDiffProcess(DiffCommand, OldTextFilename, NewTextFilename);
AssetToolsModule.Get().DiffAssets(OldPackage, OriginalPackage, OldRevision, NewRevision);
}
}
}
}
}
}
}
示例3: OnSourceControlQueryComplete
//------------------------------------------------------------------------------
void SBlueprintRevisionMenu::OnSourceControlQueryComplete(const FSourceControlOperationRef& InOperation, ECommandResult::Type InResult)
{
check(SourceControlQueryOp == InOperation);
// Add pop-out menu for each revision
FMenuBuilder MenuBuilder(/*bInShouldCloseWindowAfterMenuSelection =*/true, /*InCommandList =*/NULL);
MenuBuilder.BeginSection("AddDiffRevision", LOCTEXT("Revisions", "Revisions"));
if (bIncludeLocalRevision)
{
FText const ToolTip = LOCTEXT("LocalRevisionToolTip", "The current copy you have saved to disk (locally)");
FOnRevisionSelected OnRevisionSelectedDelegate = OnRevisionSelected;
auto OnMenuItemSelected = [OnRevisionSelectedDelegate]()
{
OnRevisionSelectedDelegate.ExecuteIfBound(FRevisionInfo::InvalidRevision());
};
MenuBuilder.AddMenuEntry(LOCTEXT("LocalRevision", "Local"), ToolTip, FSlateIcon(),
FUIAction(FExecuteAction::CreateLambda(OnMenuItemSelected)));
}
if (InResult == ECommandResult::Succeeded)
{
// get the cached state
ISourceControlProvider& SourceControlProvider = ISourceControlModule::Get().GetProvider();
FSourceControlStatePtr SourceControlState = SourceControlProvider.GetState(Filename, EStateCacheUsage::Use);
if (SourceControlState.IsValid() && SourceControlState->GetHistorySize() > 0)
{
// Figure out the highest revision # (so we can label it "Depot")
int32 LatestRevision = 0;
for (int32 HistoryIndex = 0; HistoryIndex < SourceControlState->GetHistorySize(); HistoryIndex++)
{
TSharedPtr<ISourceControlRevision, ESPMode::ThreadSafe> Revision = SourceControlState->GetHistoryItem(HistoryIndex);
if (Revision.IsValid() && Revision->GetRevisionNumber() > LatestRevision)
{
LatestRevision = Revision->GetRevisionNumber();
}
}
for (int32 HistoryIndex = 0; HistoryIndex < SourceControlState->GetHistorySize(); HistoryIndex++)
{
TSharedPtr<ISourceControlRevision, ESPMode::ThreadSafe> Revision = SourceControlState->GetHistoryItem(HistoryIndex);
if (Revision.IsValid())
{
FInternationalization& I18N = FInternationalization::Get();
FText Label = FText::Format(LOCTEXT("RevisionNumber", "Revision {0}"), FText::AsNumber(Revision->GetRevisionNumber(), NULL, I18N.GetInvariantCulture()));
FFormatNamedArguments Args;
Args.Add(TEXT("CheckInNumber"), FText::AsNumber(Revision->GetCheckInIdentifier(), NULL, I18N.GetInvariantCulture()));
Args.Add(TEXT("UserName"), FText::FromString(Revision->GetUserName()));
Args.Add(TEXT("DateTime"), FText::AsDate(Revision->GetDate()));
Args.Add(TEXT("ChanglistDescription"), FText::FromString(Revision->GetDescription()));
const FText ToolTip = FText::Format(LOCTEXT("RevisionToolTip", "CL #{CheckInNumber} {UserName} \n{DateTime} \n{ChanglistDescription}"), Args);
if (LatestRevision == Revision->GetRevisionNumber())
{
Label = LOCTEXT("Depo", "Depot");
}
FRevisionInfo RevisionInfo = {
Revision->GetRevision(),
Revision->GetCheckInIdentifier(),
Revision->GetDate()
};
FOnRevisionSelected OnRevisionSelectedDelegate = OnRevisionSelected;
auto OnMenuItemSelected = [RevisionInfo, OnRevisionSelectedDelegate]()
{
OnRevisionSelectedDelegate.ExecuteIfBound(RevisionInfo);
};
MenuBuilder.AddMenuEntry( TAttribute<FText>(Label), ToolTip, FSlateIcon(),
FUIAction(FExecuteAction::CreateLambda(OnMenuItemSelected)) );
}
}
}
else if (!bIncludeLocalRevision)
{
// Show 'empty' item in toolbar
MenuBuilder.AddMenuEntry(LOCTEXT("NoRevisonHistory", "No revisions found"),
FText(), FSlateIcon(), FUIAction());
}
}
else if (!bIncludeLocalRevision)
{
// Show 'empty' item in toolbar
MenuBuilder.AddMenuEntry(LOCTEXT("NoRevisonHistory", "No revisions found"),
FText(), FSlateIcon(), FUIAction());
}
MenuBuilder.EndSection();
MenuBox->AddSlot()
[
MenuBuilder.MakeWidget()
];
SourceControlQueryOp.Reset();
//.........这里部分代码省略.........