Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion Source/GitSourceControl/GitSourceControl.Build.cs
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,10 @@ public GitSourceControl(ReadOnlyTargetRules Target) : base(Target)
"UnrealEd",
"SourceControl",
"SourceControlWindows",
"Projects"
"Projects",
"PropertyEditor",
"HTTP",
"Json"
}
);

Expand Down
227 changes: 152 additions & 75 deletions Source/GitSourceControl/Private/GitSourceControlModule.cpp

Large diffs are not rendered by default.

419 changes: 278 additions & 141 deletions Source/GitSourceControl/Private/GitSourceControlOperations.cpp

Large diffs are not rendered by default.

55 changes: 50 additions & 5 deletions Source/GitSourceControl/Private/GitSourceControlSettings.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -11,12 +11,13 @@
namespace GitSettingsConstants
{

/** The section of the ini file we load our settings from */
static const FString SettingsSection = TEXT("GitSourceControl.GitSourceControlSettings");
/** The section of the ini file we load our settings from */
static const FString SettingsSection = TEXT("GitSourceControl.GitSourceControlSettings");
static const FString LockProviderSettingsSection = TEXT("GitSourceControl.LockProviderSettings");

}
} // namespace GitSettingsConstants

const FString & FGitSourceControlSettings::GetBinaryPath() const
const FString& FGitSourceControlSettings::GetBinaryPath() const
{
FScopeLock ScopeLock(&CriticalSection);
return BinaryPath; // Return a copy to be thread-safe
Expand All @@ -26,7 +27,7 @@ bool FGitSourceControlSettings::SetBinaryPath(const FString& InString)
{
FScopeLock ScopeLock(&CriticalSection);
const bool bChanged = (BinaryPath != InString);
if(bChanged)
if (bChanged)
{
BinaryPath = InString;
}
Expand Down Expand Up @@ -66,6 +67,22 @@ bool FGitSourceControlSettings::SetLfsUserName(const FString& InString)
return bChanged;
}

const TSoftClassPtr<class UGitLockProviderBase> FGitSourceControlSettings::GetLockProviderClass() const
{
return LockProviderClass;
}

const FGitLockProviderSettings& FGitSourceControlSettings::GetLockProviderSettings() const
{
return CurrentLockProviderSettings;
}

bool FGitSourceControlSettings::SetLockProviderClass(TSoftClassPtr<class UGitLockProviderBase> Provider)
{
LockProviderClass = Provider;
return true;
}

// This is called at startup nearly before anything else in our module: BinaryPath will then be used by the provider
void FGitSourceControlSettings::LoadSettings()
{
Expand All @@ -74,6 +91,23 @@ void FGitSourceControlSettings::LoadSettings()
GConfig->GetString(*GitSettingsConstants::SettingsSection, TEXT("BinaryPath"), BinaryPath, IniFile);
GConfig->GetBool(*GitSettingsConstants::SettingsSection, TEXT("UsingGitLfsLocking"), bUsingGitLfsLocking, IniFile);
GConfig->GetString(*GitSettingsConstants::SettingsSection, TEXT("LfsUserName"), LfsUserName, IniFile);
FString LockProviderClassPath;
GConfig->GetString(*GitSettingsConstants::SettingsSection, TEXT("LockProviderClass"), LockProviderClassPath,
IniFile);
if (LockProviderClassPath.IsEmpty())
{
LockProviderClassPath = TEXT("/Script/GitSourceControl.LFSLockProvider");
}
LockProviderClass = TSoftClassPtr<class UGitLockProviderBase> {LockProviderClassPath};
FConfigSection* LockProviderSettings =
GConfig->GetSectionPrivate(*GitSettingsConstants::LockProviderSettingsSection, false, true, IniFile);
if (LockProviderSettings)
{
for (const auto& Value : *LockProviderSettings)
{
CurrentLockProviderSettings.SettingValues.Add(Value.Key.ToString(), Value.Value.GetValue());
}
}
}

void FGitSourceControlSettings::SaveSettings() const
Expand All @@ -83,4 +117,15 @@ void FGitSourceControlSettings::SaveSettings() const
GConfig->SetString(*GitSettingsConstants::SettingsSection, TEXT("BinaryPath"), *BinaryPath, IniFile);
GConfig->SetBool(*GitSettingsConstants::SettingsSection, TEXT("UsingGitLfsLocking"), bUsingGitLfsLocking, IniFile);
GConfig->SetString(*GitSettingsConstants::SettingsSection, TEXT("LfsUserName"), *LfsUserName, IniFile);
GConfig->SetString(*GitSettingsConstants::SettingsSection, TEXT("LockProviderClass"), *LockProviderClass.ToString(),
IniFile);
FConfigSection* LockProviderSettings =
GConfig->GetSectionPrivate(*GitSettingsConstants::LockProviderSettingsSection, true, false, IniFile);
{
for (const auto& Value : CurrentLockProviderSettings.SettingValues)
{
LockProviderSettings->Add(FName(Value.Key), Value.Value);
}
}
GConfig->Flush(false, IniFile);
}
Loading