public static TM_UserData_Git syncWithGit(this TM_UserData_Git userDataGit)
{
try
{
if (TM_Server.Current.git().isNull())
return userDataGit;
var tmFileStorage = userDataGit.FileStorage;
if (userDataGit.userData().isNull())
return userDataGit;
//var userData = userDataGit.userData();
var gitConfig = TM_Server.Current.git();
if (gitConfig.UserData_Git_Enabled.isFalse())
return userDataGit;
var userData_Config = tmFileStorage.Server.userData_Config();
var gitLocation = userData_Config.remote_GitPath();
if (gitLocation.valid())
{
//Adjust Path_UserData so that there is an unique folder per repo
//var extraFolderName = "_Git_";
// extra mode to switch of multiple Git_Hosting in same server
//extraFolderName += gitLocation.replace("\\","/").split("/").last().remove(".git").safeFileName();
//userData.Path_UserData = userData.Path_UserData_Base + extraFolderName;
//userData.Path_UserData.createDir();
"[TM_UserData] [handleExternalGitPull] userData.Path_UserData set to: {0}".debug(tmFileStorage.Path_UserData);
if (WebUtils.online().isFalse() && gitLocation.dirExists().isFalse())
return userDataGit;
if (tmFileStorage.Path_UserData.isGitRepository())
{
if (gitConfig.UserData_Auto_Pull.isFalse()) //skip if this is set
return userDataGit;
"[TM_UserData] [GitPull]".info();
var nGit = tmFileStorage.Path_UserData.git_Open();
nGit.pull();
//var nGit = userData.Path_UserData.git_Pull();
userDataGit.pushUserRepository(nGit);
}
else
{
userDataGit.clone_UserDataRepo(gitLocation, tmFileStorage.Path_UserData);
}
}
if (tmFileStorage.Path_UserData.notNull())
{
//var gitEnabled = userData.tmConfig().Git.UserData_Git_Enabled;
// if (gitEnabled)
// {
if (tmFileStorage.Path_UserData.isGitRepository())
{
//"[TM_UserData] [setupGitSupport] open repository: {0}".info(userData.Path_UserData);
"[TM_UserData] [GitOpen]".info();
userDataGit.NGit = tmFileStorage.Path_UserData.git_Open();
}
else
{
//"[TM_UserData] [setupGitSupport] initializing repository at: {0}".info(userData.Path_UserData);
"[TM_UserData] [GitInit]".info();
userDataGit.NGit = tmFileStorage.Path_UserData.git_Init();
}
userDataGit.triggerGitCommit(); // in case there are any files that need to be commited
// }
}
}
catch (Exception ex)
{
var message = ex.Message;
System.Diagnostics.Debug.Write(ex.Message);
ex.log("[TM_UserData] [handleExternalGitPull]");
}
return userDataGit;
}