// Copyright (c) 2014-2020 Sebastien Rombauts (sebastien.rombauts@gmail.com) // // Distributed under the MIT License (MIT) (See accompanying file LICENSE.txt // or copy at http://opensource.org/licenses/MIT) #include "GitSourceControlModule.h" #include "Misc/App.h" #include "Modules/ModuleManager.h" #include "GitSourceControlOperations.h" #include "Features/IModularFeatures.h" #define LOCTEXT_NAMESPACE "GitSourceControl" template static TSharedRef CreateWorker() { return MakeShareable( new Type() ); } void FGitSourceControlModule::StartupModule() { // Register our operations (implemented in GitSourceControlOperations.cpp by subclassing from Engine\Source\Developer\SourceControl\Public\SourceControlOperations.h) GitSourceControlProvider.RegisterWorker( "Connect", FGetGitSourceControlWorker::CreateStatic( &CreateWorker ) ); // Note: this provider uses the "CheckOut" command only with Git LFS 2 "lock" command, since Git itself has no lock command (all tracked files in the working copy are always already checked-out). GitSourceControlProvider.RegisterWorker( "CheckOut", FGetGitSourceControlWorker::CreateStatic( &CreateWorker ) ); GitSourceControlProvider.RegisterWorker( "UpdateStatus", FGetGitSourceControlWorker::CreateStatic( &CreateWorker ) ); GitSourceControlProvider.RegisterWorker( "MarkForAdd", FGetGitSourceControlWorker::CreateStatic( &CreateWorker ) ); GitSourceControlProvider.RegisterWorker( "Delete", FGetGitSourceControlWorker::CreateStatic( &CreateWorker ) ); GitSourceControlProvider.RegisterWorker( "Revert", FGetGitSourceControlWorker::CreateStatic( &CreateWorker ) ); GitSourceControlProvider.RegisterWorker( "Sync", FGetGitSourceControlWorker::CreateStatic( &CreateWorker ) ); GitSourceControlProvider.RegisterWorker( "Push", FGetGitSourceControlWorker::CreateStatic( &CreateWorker ) ); GitSourceControlProvider.RegisterWorker( "CheckIn", FGetGitSourceControlWorker::CreateStatic( &CreateWorker ) ); GitSourceControlProvider.RegisterWorker( "Copy", FGetGitSourceControlWorker::CreateStatic( &CreateWorker ) ); GitSourceControlProvider.RegisterWorker( "Resolve", FGetGitSourceControlWorker::CreateStatic( &CreateWorker ) ); // load our settings GitSourceControlSettings.LoadSettings(); // Bind our source control provider to the editor IModularFeatures::Get().RegisterModularFeature( "SourceControl", &GitSourceControlProvider ); } void FGitSourceControlModule::ShutdownModule() { // shut down the provider, as this module is going away GitSourceControlProvider.Close(); // unbind provider from editor IModularFeatures::Get().UnregisterModularFeature("SourceControl", &GitSourceControlProvider); } void FGitSourceControlModule::SaveSettings() { if (FApp::IsUnattended() || IsRunningCommandlet()) { return; } GitSourceControlSettings.SaveSettings(); } IMPLEMENT_MODULE(FGitSourceControlModule, GitSourceControl); #undef LOCTEXT_NAMESPACE