t.EndTime = timeutil.TimeStampNow()
t.Status = structs.TaskStatusFailed
t.Message = err.Error()
+ // Ensure that the repo loaded before we zero out the repo ID from the task - thus ensuring that we can delete it
+ _ = t.LoadRepo()
+
t.RepoID = 0
if err := t.UpdateCols("status", "errors", "repo_id", "end_time"); err != nil {
log.Error("Task UpdateCols failed: %v", err)
return nil, err
}
- var task = models.Task{
+ var task = &models.Task{
DoerID: doer.ID,
OwnerID: u.ID,
Type: structs.TaskTypeMigrateRepo,
PayloadContent: string(bs),
}
- if err := models.CreateTask(&task); err != nil {
+ if err := models.CreateTask(task); err != nil {
return nil, err
}
return nil, err
}
- return &task, nil
+ return task, nil
}
migrate.migrating = Migrating from <b>%s</b> ...
migrate.migrating_failed = Migrating from <b>%s</b> failed.
migrate.migrating_failed.error = Error: %s
+migrate.migrating_failed_no_addr = Migration failed.
migrate.github.description = Migrate data from github.com or other Github instances.
migrate.git.description = Migrate a repository only from any Git service.
migrate.gitlab.description = Migrate data from gitlab.com or other GitLab instances.
if ctx.Repo.Repository.IsBeingCreated() {
task, err := models.GetMigratingTask(ctx.Repo.Repository.ID)
if err != nil {
+ if models.IsErrTaskDoesNotExist(err) {
+ ctx.Data["Repo"] = ctx.Repo
+ ctx.Data["CloneAddr"] = ""
+ ctx.Data["Failed"] = true
+ ctx.HTML(http.StatusOK, tplMigrating)
+ return
+ }
ctx.ServerError("models.GetMigratingTask", err)
return
}
import (
"net/http"
+ "strconv"
"code.gitea.io/gitea/models"
"code.gitea.io/gitea/modules/context"
func TaskStatus(ctx *context.Context) {
task, opts, err := models.GetMigratingTaskByID(ctx.ParamsInt64("task"), ctx.User.ID)
if err != nil {
+ if models.IsErrTaskDoesNotExist(err) {
+ ctx.JSON(http.StatusNotFound, map[string]interface{}{
+ "error": "task `" + strconv.FormatInt(ctx.ParamsInt64("task"), 10) + "` does not exist",
+ })
+ return
+ }
ctx.JSON(http.StatusInternalServerError, map[string]interface{}{
"err": err,
})
<p id="repo_migrating_progress_message"></p>
</div>
<div id="repo_migrating_failed" hidden>
- <p>{{.i18n.Tr "repo.migrate.migrating_failed" .CloneAddr | Safe}}</p>
+ {{if .CloneAddr}}
+ <p>{{.i18n.Tr "repo.migrate.migrating_failed" .CloneAddr | Safe}}</p>
+ {{else}}
+ <p>{{.i18n.Tr "repo.migrate.migrating_failed_no_addr" | Safe}}</p>
+ {{end}}
<p id="repo_migrating_failed_error"></p>
</div>
{{if and .Failed .Permission.IsAdmin}}