TeamMentor.CoreLib.TM_UserData_Git_ExtensionMethods.syncWithGit C# (CSharp) Method

syncWithGit() public static method

public static syncWithGit ( this userDataGit ) : TM_UserData_Git
userDataGit this
return TM_UserData_Git
        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;
        }