public HistoryVersionsModel Test()
        {
            HistoryVersionsModel model = new HistoryVersionsModel();

            SVNManager.Changelist("**", (res) =>
            {
                SVNManager.Commit("update", (ress) =>
                {
                    SVNManager.UpdateLocalRepo((resss) =>
                    {
                        string s = resss;
                    });
                });
            });
            return(model);
        }
        public HistoryVersionsModel GetVersions(string scenario_id, string ticket = "", string topic_id = "")
        {
            HistoryVersionsModel model     = new HistoryVersionsModel();
            List <int>           revisions = new List <int>();

            string folder = ApiHelper.FindFolderById(scenario_id, PathHelper.GetRepoPath());

            if (folder == null)
            {
                model.errors = ApiHelper.JsonError(400, new string[] { "scenario not exist" });
                return(model);
            }

            string infoPath = Path.Combine(folder, new DirectoryInfo(folder).Name + ".info");

            if (!string.IsNullOrEmpty(topic_id))
            {
                List <TopicModel> topics = ApiHelper.GetTopicsOrigin(scenario_id);
                foreach (TopicModel t in topics)
                {
                    if (t.index.ToString() == topic_id)
                    {
                        infoPath = t.vmpPath;
                        break;
                    }
                }
            }

            model.versions = revisions;

            SVNManager.GetCurrentRevisionFile(infoPath, (res) =>
            {
                res = res.Replace("Revision:", "");
                res = res.Replace("\r\n", "");
                try
                {
                    model.current_version = int.Parse(res);
                }
                catch (Exception e)
                {
                }
            });

            SVNManager.GetAllRevisionsForFile(infoPath, (res) =>
            {
                res             = res.Replace("------------------------------------------------------------------------", "-_-_-");
                string[] splits = res.Split(new string[] { "-_-_-" }, StringSplitOptions.RemoveEmptyEntries);
                foreach (string s in splits)
                {
                    string[] revisionParts = s.Split(new char[] { '|' }, StringSplitOptions.RemoveEmptyEntries);
                    if (revisionParts.Length > 3)
                    {
                        try
                        {
                            int revisionNumber   = int.Parse(revisionParts[0].Replace("r", ""));
                            string[] timeAndDate = revisionParts[2].Split(new char[] { ' ' }, System.StringSplitOptions.RemoveEmptyEntries);
                            string revisionText  = $"{revisionNumber} - {timeAndDate[0]} {timeAndDate[1]}  {revisionParts[1]}";
                            revisions.Add(revisionNumber);
                        }
                        catch (Exception ex)
                        {
                        }
                    }
                }
                if (revisions != null && revisions.Count > 0)
                {
                    model.current_version = revisions[0];
                }
                model.versions = revisions;
            });

            return(model);
        }