Repository GetGitRepo(out bool created) { created = false; using (var t = new ChangingOutput("Reading Git repository . . .")) { if (Repository.IsValid(_repoDir)) { t.PrintResult(true); return new Repository(_repoDir); } t.PrintResult(false); } using (var t = new ChangingOutput("Repository not valid - redownloading Aura source . . .")) { Repository.Clone(_gitClonePath, _repoDir, new CloneOptions() { OnTransferProgress = (x) => { t.PrintProgress((double) x.ReceivedObjects/x.TotalObjects); return true; } }); t.PrintResult(true); created = true; } return new Repository(_repoDir); }
Repository GetGitRepo(out bool created) { created = false; using (var t = new ChangingOutput("Reading Git repository . . .")) { if (Repository.IsValid(_repoDir)) { t.PrintResult(true); return(new Repository(_repoDir)); } t.PrintResult(false); } using (var t = new ChangingOutput("Repository not valid - redownloading Aura source . . .")) { try { Repository.Clone(_gitClonePath, _repoDir, new CloneOptions() { OnTransferProgress = (x) => { t.PrintProgress((double)x.ReceivedObjects / x.TotalObjects); return(true); } }); } catch { t.PrintResult(false); throw; } t.PrintResult(true); created = true; } return(new Repository(_repoDir)); }
bool UpdateGit(IRepository repo) { var recompileNeeded = true; using (var _ = new ChangingOutput("Updating source code . . .")) { _.FinishLine(); using (var t = new ChangingOutput("Fetching updates from GitHub . . .")) { repo.Fetch("origin", new FetchOptions() { OnTransferProgress = (x) => { t.PrintProgress((double) x.ReceivedObjects/x.TotalObjects); return true; } }); t.PrintResult(true); } var currentCommit = repo.Head.Tip; MergeResult result; try { using (var t = new ChangingOutput("Merging in updates . . .")) { result = repo.Merge(repo.Head.TrackedBranch, new Signature(Environment.UserName, "*****@*****.**", DateTime.Now), new MergeOptions { CommitOnSuccess = true, FileConflictStrategy = CheckoutFileConflictStrategy.Ours, MergeFileFavor = MergeFileFavor.Normal, OnCheckoutProgress = (n, processed, total) => { t.PrintProgress((double) processed/total); }, }); t.PrintResult(result.Status != MergeStatus.Conflicts); } if (result.Status == MergeStatus.UpToDate) { Console.WriteLine("Source was already up to date"); recompileNeeded = RestoreDeleteFiles(repo); _.PrintResult(true); } else if (result.Status == MergeStatus.Conflicts) { throw new MergeConflictException(); } else { Console.WriteLine("Updated to {0} : {1}", result.Commit.Sha.Substring(0, 10), result.Commit.MessageShort); _.PrintResult(true); } } catch (MergeConflictException) { Console.WriteLine("Merge resulted in conflicts. This usually indictates a user-edited source"); Console.WriteLine("Your Aura will NOT be updated until you undo your changes to the files."); Console.WriteLine("This is a bad thing, so fix it ASAP."); Console.WriteLine("NOTE: If you're trying to make configuration changes, use the \"user\" folders instead."); Console.WriteLine("Rolling back merge..."); repo.Reset(currentCommit); recompileNeeded = false; _.PrintResult(false); } return recompileNeeded; } }
bool UpdateGit(IRepository repo) { var recompileNeeded = true; using (var _ = new ChangingOutput("Updating source code . . .")) { _.FinishLine(); // Update origin URL and re-initialize repo var origin = repo.Network.Remotes["origin"]; if (origin.Url != _gitClonePath) { repo.Network.Remotes.Update(origin, r => r.Url = _gitClonePath); } using (var t = new ChangingOutput("Fetching updates from remote . . .")) { repo.Fetch("origin", new FetchOptions() { OnTransferProgress = (x) => { t.PrintProgress((double)x.ReceivedObjects / x.TotalObjects); return(true); } }); t.PrintResult(true); } var currentCommit = repo.Head.Tip; MergeResult result; try { using (var t = new ChangingOutput("Merging in updates . . .")) { result = repo.Merge(repo.Branches["origin/master"], new Signature(Environment.UserName, "*****@*****.**", DateTime.Now), new MergeOptions { CommitOnSuccess = true, FileConflictStrategy = CheckoutFileConflictStrategy.Ours, MergeFileFavor = MergeFileFavor.Normal, OnCheckoutProgress = (n, processed, total) => { t.PrintProgress((double)processed / total); }, }); t.PrintResult(result.Status != MergeStatus.Conflicts); } if (result.Status == MergeStatus.UpToDate) { Console.WriteLine("Source was already up to date"); recompileNeeded = RestoreDeleteFiles(repo); _.PrintResult(true); } else if (result.Status == MergeStatus.Conflicts) { throw new MergeConflictException(); } else { Console.WriteLine("Updated to {0} : {1}", result.Commit.Sha.Substring(0, 10), result.Commit.MessageShort); _.PrintResult(true); } } catch (MergeConflictException) { Console.WriteLine("Merge resulted in conflicts. This usually indictates a user-edited source"); Console.WriteLine("Your Aura will NOT be updated until you undo your changes to the files."); Console.WriteLine("This is a bad thing, so fix it ASAP."); Console.WriteLine("NOTE: If you're trying to make configuration changes, use the \"user\" folders instead."); Console.WriteLine("Rolling back merge..."); repo.Reset(currentCommit); recompileNeeded = false; _.PrintResult(false); } return(recompileNeeded); } }