diff --git a/src/Tgstation.Server.Host/Components/Repository/IRepositoryManager.cs b/src/Tgstation.Server.Host/Components/Repository/IRepositoryManager.cs
index 92b5ad0edd..1279f7285a 100644
--- a/src/Tgstation.Server.Host/Components/Repository/IRepositoryManager.cs
+++ b/src/Tgstation.Server.Host/Components/Repository/IRepositoryManager.cs
@@ -23,7 +23,7 @@ namespace Tgstation.Server.Host.Components.Repository
/// The branch to clone
/// The access string to clone from
/// The for the operation
- /// The newly cloned
+ /// The newly cloned , if one already exists
Task CloneRepository(Uri url, string initialBranch, string accessString, CancellationToken cancellationToken);
///
diff --git a/src/Tgstation.Server.Host/Components/Repository/RepositoryManager.cs b/src/Tgstation.Server.Host/Components/Repository/RepositoryManager.cs
index 25cd954457..3187d6dfe2 100644
--- a/src/Tgstation.Server.Host/Components/Repository/RepositoryManager.cs
+++ b/src/Tgstation.Server.Host/Components/Repository/RepositoryManager.cs
@@ -55,8 +55,6 @@ namespace Tgstation.Server.Host.Components.Repository
if (!await ioManager.DirectoryExists(".", cancellationToken).ConfigureAwait(false))
try
{
- await DeleteRepository(cancellationToken).ConfigureAwait(false);
-
await Task.Factory.StartNew(() =>
{
string path = null;
@@ -85,6 +83,8 @@ namespace Tgstation.Server.Host.Components.Repository
catch { }
throw;
}
+ else
+ return null;
return await LoadRepository(cancellationToken).ConfigureAwait(false);
}
@@ -102,7 +102,10 @@ namespace Tgstation.Server.Host.Components.Repository
catch (RepositoryNotFoundException) { }
}, cancellationToken, TaskCreationOptions.LongRunning, TaskScheduler.Current).ConfigureAwait(false);
if (repo == null)
+ {
+ semaphore.Release();
return null;
+ }
var localSemaphore = semaphore;
return new Repository(repo, ioManager, eventConsumer, () =>
{
diff --git a/src/Tgstation.Server.Host/Controllers/RepositoryController.cs b/src/Tgstation.Server.Host/Controllers/RepositoryController.cs
index 97afc62c66..9a703fb956 100644
--- a/src/Tgstation.Server.Host/Controllers/RepositoryController.cs
+++ b/src/Tgstation.Server.Host/Controllers/RepositoryController.cs
@@ -141,13 +141,13 @@ namespace Tgstation.Server.Host.Controllers
using (var repo = await repoManager.LoadRepository(cancellationToken).ConfigureAwait(false))
{
- if (repo == null)
+ if (repo != null)
//clone conflict
return Conflict();
var job = new Models.Job
{
- Description = String.Format(CultureInfo.InvariantCulture, "Clone branch {1} of repository {0}", origin, cloneBranch),
+ Description = String.Format(CultureInfo.InvariantCulture, "Clone branch {1} of repository {0}", origin, cloneBranch ?? "master"),
StartedBy = AuthenticationContext.User,
CancelRightsType = RightsType.Repository,
CancelRight = (int)RepositoryRights.CancelClone,
@@ -219,7 +219,7 @@ namespace Tgstation.Server.Host.Controllers
using (var repo = await instanceManager.GetInstance(Instance).RepositoryManager.LoadRepository(cancellationToken).ConfigureAwait(false))
{
- if (await PopulateApi(api, repo, currentModel.LastOriginCommitSha, null, cancellationToken).ConfigureAwait(false))
+ if (repo != null && await PopulateApi(api, repo, currentModel.LastOriginCommitSha, null, cancellationToken).ConfigureAwait(false))
await DatabaseContext.Save(cancellationToken).ConfigureAwait(false);
return Json(api);
}
@@ -283,6 +283,8 @@ namespace Tgstation.Server.Host.Controllers
using (var repo = await instanceManager.GetInstance(Instance).RepositoryManager.LoadRepository(cancellationToken).ConfigureAwait(false))
{
+ if (repo == null)
+ return StatusCode((int)HttpStatusCode.Gone);
var startSha = repo.Head;
if (newTestMerges && !repo.IsGitHubRepository)