diff --git a/model/repo.go b/model/repo.go index 094969625..c2009ac6a 100644 --- a/model/repo.go +++ b/model/repo.go @@ -67,4 +67,6 @@ type RepoPatch struct { AllowDeploy *bool `json:"allow_deploy,omitempty"` AllowTag *bool `json:"allow_tag,omitempty"` BuildCounter *int `json:"build_counter,omitempty"` + Name *string `json:"name",omitempty` + Owner *string `json:"owner,omitempty"` } diff --git a/server/repo.go b/server/repo.go index 3f58b7de7..77c01396a 100644 --- a/server/repo.go +++ b/server/repo.go @@ -88,6 +88,7 @@ func PostRepo(c *gin.Context) { func PatchRepo(c *gin.Context) { repo := session.Repo(c) user := session.User(c) + remote := remote.FromContext(c) in := new(model.RepoPatch) if err := c.Bind(in); err != nil { @@ -95,7 +96,7 @@ func PatchRepo(c *gin.Context) { return } - if (in.IsTrusted != nil || in.Timeout != nil || in.BuildCounter != nil) && !user.Admin { + if (in.IsTrusted != nil || in.Timeout != nil || in.BuildCounter != nil || in.Owner != nil || in.Name != nil) && !user.Admin { c.String(403, "Insufficient privileges") return } @@ -137,6 +138,19 @@ func PatchRepo(c *gin.Context) { repo.Counter = *in.BuildCounter } + if in.Name != nil && in.Owner != nil { + from, err := remote.Repo(user, *in.Owner, *in.Name) + if err != nil { + c.AbortWithError(http.StatusInternalServerError, err) + } + repo.Name = from.Name + repo.Owner = from.Owner + repo.FullName = from.FullName + repo.Avatar = from.Avatar + repo.Link = from.Link + repo.Clone = from.Clone + } + err := store.UpdateRepo(c, repo) if err != nil { c.AbortWithError(http.StatusInternalServerError, err)