From c441f096a3e3ab8dd235f550b2db5ccd35f028ca Mon Sep 17 00:00:00 2001 From: Jordan Brown Date: Sat, 22 Sep 2018 12:42:33 -0400 Subject: [PATCH] Add a return value to IRepository.Synchronize --- .../Components/Repository/IRepository.cs | 4 ++-- .../Components/Repository/Repository.cs | 17 ++++++++++------- 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/src/Tgstation.Server.Host/Components/Repository/IRepository.cs b/src/Tgstation.Server.Host/Components/Repository/IRepository.cs index 323ae7a5ad..e993508172 100644 --- a/src/Tgstation.Server.Host/Components/Repository/IRepository.cs +++ b/src/Tgstation.Server.Host/Components/Repository/IRepository.cs @@ -122,8 +122,8 @@ namespace Tgstation.Server.Host.Components.Repository /// If the synchronizations should be made to the tracked reference as opposed to a temporary branch /// to report 0-100 progress of the operation /// The for the operation - /// A representing the running operation - Task Sychronize(string username, string password, string committerName, string committerEmail, Action progressReporter, bool synchronizeTrackedBranch, CancellationToken cancellationToken); + /// A resulting in if commits were pushed to the tracked origin reference, otherwise + Task Sychronize(string username, string password, string committerName, string committerEmail, Action progressReporter, bool synchronizeTrackedBranch, CancellationToken cancellationToken); /// /// Copies the current working directory to a given diff --git a/src/Tgstation.Server.Host/Components/Repository/Repository.cs b/src/Tgstation.Server.Host/Components/Repository/Repository.cs index 0c7f7687ee..c7652fddfc 100644 --- a/src/Tgstation.Server.Host/Components/Repository/Repository.cs +++ b/src/Tgstation.Server.Host/Components/Repository/Repository.cs @@ -489,7 +489,7 @@ namespace Tgstation.Server.Host.Components.Repository } /// - public async Task Sychronize(string username, string password, string committerName, string committerEmail, Action progressReporter, bool synchronizeTrackedBranch, CancellationToken cancellationToken) + public async Task Sychronize(string username, string password, string committerName, string committerEmail, Action progressReporter, bool synchronizeTrackedBranch, CancellationToken cancellationToken) { if (committerName == null) throw new ArgumentNullException(nameof(committerName)); @@ -501,7 +501,7 @@ namespace Tgstation.Server.Host.Components.Repository if (username == null && password == null) { logger.LogTrace("Not synchronizing due to lack of credentials!"); - return; + return false; } logger.LogTrace("Begin Synchronize..."); @@ -526,7 +526,7 @@ namespace Tgstation.Server.Host.Components.Repository if (!await eventConsumer.HandleEvent(EventType.RepoPreSynchronize, new List { ioMananger.ResolvePath(".") }, cancellationToken).ConfigureAwait(false)) { logger.LogDebug("Aborted synchronize due to event handler response!"); - return; + return false; } } finally @@ -548,32 +548,35 @@ namespace Tgstation.Server.Host.Components.Repository if (!synchronizeTrackedBranch) { await PushHeadToTemporaryBranch(username, password, FinalReporter, cancellationToken).ConfigureAwait(false); - return; + return false; } var sameHead = Head == startHead; if (sameHead || !Tracking) { logger.LogTrace("Aborted synchronize due to {0}!", sameHead ? "lack of changes" : "not being on tracked reference"); - return; + return false; } logger.LogInformation("Synchronizing with origin..."); - await Task.Factory.StartNew(() => + return await Task.Factory.StartNew(() => { var remote = repository.Network.Remotes.First(); try { repository.Network.Push(repository.Head, GeneratePushOptions(FinalReporter, username, password, cancellationToken)); + return true; } catch (NonFastForwardException) { logger.LogInformation("Synchronize aborted, non-fast forward!"); + return false; } - catch (UserCancelledException) + catch (UserCancelledException e) { cancellationToken.ThrowIfCancellationRequested(); + throw new InvalidOperationException("Caught UserCancelledException without cancellationToken triggering", e); } }, cancellationToken, TaskCreationOptions.LongRunning, TaskScheduler.Current).ConfigureAwait(false); }