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);
}