protected Classes.GitBatch WriteFeatureBranchGit(RepositoryVM repo, string startingFolder, string branchName)
        {
            var mainBat = startingFolder + @"\PullForFeatureBranch.bat";

            if (System.IO.File.Exists(mainBat))
            {
                System.IO.File.Delete(mainBat);
            }

            // see if folder for REPO is there and if not, pull it - if it is recheck out master and release
            var bat = new Classes.GitBatch(mainBat)
            {
                Redirect      = true,
                RedirectError = $@"{startingFolder.Replace(@"\\", @"\")}\ErrorFB.txt",
                RedirectFile  = $@"{startingFolder.Replace(@"\\", @"\")}\OutputFB.txt"
            };

            bat.AddLine($"echo start");

            var theFile       = repo.Name;
            var featurePrefix = _settings.Setting.GetSection("FeatureBranchPrefix").Value ?? "feature/";
            var releasePrefix = _settings.Setting.GetSection("ReleaseBranchName").Value ?? "release";
            var masterPrefix  = _settings.Setting.GetSection("MasterBranchName").Value ?? "master";

            var featureFile = $"{featurePrefix}{branchName}";

            if (featureFile.Length > 60)
            {
                featureFile = featureFile.Substring(0, 60);
            }

            bat.AddLine($"echo Working on '{theFile}'");

            bat.AddCD($@"{startingFolder}\{theFile}");
            bat.AddReset();

            if (repo.OffRelease)
            {
                bat.AddCheckout(releasePrefix, $"origin/{releasePrefix}");
                bat.AddLine($"git checkout -b {featureFile} {releasePrefix}");
            }
            else
            {
                bat.AddCheckout(masterPrefix, $"origin/{masterPrefix}");
                bat.AddLine($"git checkout -b {featureFile} {masterPrefix}");
            }

            bat.AddLine($"git push -u origin {featureFile}");

            bat.AddCD(startingFolder);

            bat.Write();

            return(bat);
        }
Пример #2
0
        public IActionResult GetRepos([DataSourceRequest] DataSourceRequest request, string projectName)
        {
            var startingFolder          = string.Empty;
            List <RepositoryVM> results = new List <RepositoryVM>();

            try
            {
                CreateStartingFolder(ref startingFolder);

                var vsts = new Classes.VSTS.Vsts(HttpContext.Session.GetString(Session.TOKEN));


                var repos = vsts.GetRepos(projectName);
                var items = repos.Repositories.OrderBy(t => t.Name).ToList();
                Parallel.ForEach(items, new ParallelOptions {
                    MaxDegreeOfParallelism = 1
                }, item =>
                {
                    var toAdd = new RepositoryVM()
                    {
                        Guid            = item.Guid,
                        Name            = item.Name,
                        Url             = item.RemoteUrl,
                        DefaultBranch   = item.DefaultBranch,
                        DirectoryOnDisk = false
                    };
                    if (System.IO.Directory.Exists(startingFolder))
                    {
                        var projectStartingFolder = startingFolder;
                        CreateStartingProjectFolder(ref projectStartingFolder);
                        if (System.IO.Directory.Exists(startingFolder))
                        {
                            toAdd.DirectoryOnDisk = System.IO.Directory.Exists(projectStartingFolder + @"\" + item.Name);
                        }
                    }
                    results.Add(toAdd);
                });
            }
            catch (System.Exception foo)
            {
                System.Diagnostics.Debug.WriteLine($"Get Repos: {foo.Message}");
            }
            return(Json(results.ToDataSourceResult(request)));
        }
        public ActionResult Borrow()
        {
            BorrowingVM  borrowingVM  = new BorrowingVM();
            RepositoryVM repositoryVM = new RepositoryVM();
            var          repositories = repositoryVM.Get_list();
            var          list_book    = Session["Zamowienie"] as IEnumerable <Biblioteka.Models.Book>;
            var          userId       = (Int32)(Session["adminID"]);

            if (list_book != null)
            {
                DB       db   = new DB();
                Longlife l    = db.Longlifes.Where(x => x.LonglifeID == 1).FirstOrDefault();
                int      days = l.longlife;
                foreach (var item in list_book)
                {
                    Repository repo_book = repositories.Where(a => a.RepositoryID == item.Repository.RepositoryID).FirstOrDefault();

                    if (repo_book.Amount != 0)
                    {
                        Borrowing b = new Borrowing
                        {
                            ReaderID    = userId,
                            Borrow_date = DateTime.Now,
                            BookID      = item.BookID,
                            PenaltyID   = 1,
                            Returned    = false,
                            QueueID     = 0
                        };
                        b.Return_date = b.Borrow_date.AddDays(days);
                        borrowingVM.Dodaj(b);
                        repositoryVM.Minus_amount(repo_book);
                        Session["Zamowienie"] = null;
                    }
                    else
                    {
                        return(RedirectToAction("Borrow_failed"));//trzeba zablokować możliwość wypożyczenia gdy nie jest dostępna
                    }
                }
                return(View("Borrow_success"));
            }
            return(View());
        }
        public JsonResult MakeFeatureBranch([DataSourceRequest] DataSourceRequest dsRequest, RepositoryVM repo)
        {
            try
            {
                if (repo != null && ModelState.IsValid)
                {
                    // get work itm
                    Classes.VSTS.VstsWorkItem pbi = GetWorkItem(repo.PBI);

                    if (pbi != null)
                    {
                        if (pbi.StatusCode != System.Net.HttpStatusCode.OK)
                        {
                            return(Json(new { result = false, message = "Invalid Work Item" }));
                        }
                        else
                        {
                            string branchName = string.Empty;

                            #region Set Branch Name to start
                            if (!string.IsNullOrEmpty(repo.OverridingName)) // We use this name
                            {
                                branchName = repo.OverridingName.Replace(" ", "_");
                            }
                            else
                            {
                                branchName = pbi.Fields.Title;
                            }
                            #endregion

                            branchName = pbi.Id + "_" + ClearBatchName(branchName);

                            // Clear model so it will be considered "dirty" if called again
                            repo.PBI            = string.Empty;
                            repo.OverridingName = string.Empty;

                            #region  Write Bat File
                            var startingFolder = string.Empty;
                            CreateStartingFolder(ref startingFolder);
                            if (System.IO.Directory.Exists(startingFolder))
                            {
                                CreateStartingProjectFolder(ref startingFolder);

                                if (System.IO.Directory.Exists(startingFolder))
                                {
                                    var bat = WriteFeatureBranchGit(repo, startingFolder, branchName);

                                    try
                                    {
                                        bat.GitRun(startingFolder, HttpContext.Session.GetString(Session.USER), HttpContext.Session.GetString(Session.GIT));

                                        return(Json(new JsonMessage(true, "Feature Branch Created")));
                                    }
                                    catch (System.Exception ex)
                                    {
                                        return(Json(new JsonMessage(false, ex.Message)));
                                    }
                                }
                                else
                                {
                                    return(Json(new JsonMessage(false, $"Unable to find starting folder {startingFolder}")));
                                }
                            }
                            else
                            {
                                return(Json(new JsonMessage(false, $"Unable to find starting folder {startingFolder}")));
                            }

                            #endregion
                        }
                    }
                    else   // create branch based on name
                    {
                        string branchName = string.Empty;
                        if (!string.IsNullOrEmpty(repo.OverridingName)) // We use this name
                        {
                            branchName = repo.OverridingName.Replace(" ", "_");
                        }
                        else
                        {
                            return(Json(new JsonMessage(false, "Empty branch name")));
                        }

                        branchName = ClearBatchName(branchName);

                        repo.PBI            = string.Empty;
                        repo.OverridingName = string.Empty;

                        #region  Write Bat File
                        var startingFolder = string.Empty;
                        CreateStartingFolder(ref startingFolder);
                        if (System.IO.Directory.Exists(startingFolder))
                        {
                            CreateStartingProjectFolder(ref startingFolder);

                            if (System.IO.Directory.Exists(startingFolder))
                            {
                                var bat = WriteFeatureBranchGit(repo, startingFolder, branchName);

                                try
                                {
                                    bat.GitRun(startingFolder, HttpContext.Session.GetString(Session.USER), HttpContext.Session.GetString(Session.GIT));

                                    return(Json(new JsonMessage(true, "Feature Branch Created")));
                                }
                                catch (System.Exception ex)
                                {
                                    return(Json(new JsonMessage(false, ex.Message)));
                                }
                            }
                            else
                            {
                                return(Json(new JsonMessage(false, $"Unable to find starting folder {startingFolder}")));
                            }
                        }
                        else
                        {
                            return(Json(new JsonMessage(false, $"Unable to find starting folder {startingFolder}")));
                        }

                        #endregion
                    }
                }
                else
                {
                    return(Json(new JsonMessage(false, "Invalid Model State")));
                }
            }
            catch (System.Exception ex)
            {
                return(Json(new JsonMessage(false, ex.Message)));
            }
        }