Browse Source

fix read access team visibility of private repo

tags/v0.9.99
Unknwon 9 years ago
parent
commit
fc6db829b2
4 changed files with 40 additions and 11 deletions
  1. 1
    1
      models/action.go
  2. 36
    8
      models/repo.go
  3. 1
    1
      routers/repo/repo.go
  4. 2
    1
      routers/repo/setting.go

+ 1
- 1
models/action.go View File

return errors.New("action.CommitRepoAction(GetRepositoryByName): " + err.Error()) return errors.New("action.CommitRepoAction(GetRepositoryByName): " + err.Error())
} }
repo.IsBare = false repo.IsBare = false
if err = UpdateRepository(repo); err != nil {
if err = UpdateRepository(repo, false); err != nil {
return errors.New("action.CommitRepoAction(UpdateRepository): " + err.Error()) return errors.New("action.CommitRepoAction(UpdateRepository): " + err.Error())
} }



+ 36
- 8
models/repo.go View File

return repo, err return repo, err
} }
repo.IsMirror = true repo.IsMirror = true
return repo, UpdateRepository(repo)
return repo, UpdateRepository(repo, false)
} else { } else {
os.RemoveAll(repoPath) os.RemoveAll(repoPath)
} }
return repo, fmt.Errorf("create update hook: %v", err) return repo, fmt.Errorf("create update hook: %v", err)
} }


return repo, UpdateRepository(repo)
return repo, UpdateRepository(repo, false)
} }


// extractGitBareZip extracts git-bare.zip to repository path. // extractGitBareZip extracts git-bare.zip to repository path.
} }
repo.IsBare = true repo.IsBare = true
repo.DefaultBranch = "master" repo.DefaultBranch = "master"
return updateRepository(e, repo)
return updateRepository(e, repo, false)
} }


// Apply changes and commit. // Apply changes and commit.
return os.Rename(RepoPath(userName, oldRepoName), RepoPath(userName, newRepoName)) return os.Rename(RepoPath(userName, oldRepoName), RepoPath(userName, newRepoName))
} }


func updateRepository(e Engine, repo *Repository) error {
func updateRepository(e Engine, repo *Repository, visibilityChanged bool) (err error) {
repo.LowerName = strings.ToLower(repo.Name) repo.LowerName = strings.ToLower(repo.Name)


if len(repo.Description) > 255 { if len(repo.Description) > 255 {
if len(repo.Website) > 255 { if len(repo.Website) > 255 {
repo.Website = repo.Website[:255] repo.Website = repo.Website[:255]
} }
_, err := e.Id(repo.Id).AllCols().Update(repo)
return err

if _, err = e.Id(repo.Id).AllCols().Update(repo); err != nil {
return fmt.Errorf("update: %v", err)
}

if visibilityChanged {
if err = repo.getOwner(e); err != nil {
return fmt.Errorf("getOwner: %v", err)
}
if !repo.Owner.IsOrganization() {
return nil
}

// Organization repository need to recalculate access table when visivility is changed.
if err = repo.recalculateTeamAccesses(e, 0); err != nil {
return fmt.Errorf("recalculateTeamAccesses: %v", err)
}
}

return nil
} }


func UpdateRepository(repo *Repository) error {
return updateRepository(x, repo)
func UpdateRepository(repo *Repository, visibilityChanged bool) (err error) {
sess := x.NewSession()
defer sessionRelease(sess)
if err = sess.Begin(); err != nil {
return err
}

if err = updateRepository(x, repo, visibilityChanged); err != nil {
return fmt.Errorf("updateRepository: %v", err)
}

return sess.Commit()
} }


// DeleteRepository deletes a repository for a user or organization. // DeleteRepository deletes a repository for a user or organization.

+ 1
- 1
routers/repo/repo.go View File



ctx.Repo.Repository.Description = ctx.Query("desc") ctx.Repo.Repository.Description = ctx.Query("desc")
ctx.Repo.Repository.Website = ctx.Query("site") ctx.Repo.Repository.Website = ctx.Query("site")
err = models.UpdateRepository(ctx.Repo.Repository)
err = models.UpdateRepository(ctx.Repo.Repository, false)
} }


if err != nil { if err != nil {

+ 2
- 1
routers/repo/setting.go View File

} }
ctx.Repo.Repository.Description = form.Description ctx.Repo.Repository.Description = form.Description
ctx.Repo.Repository.Website = form.Website ctx.Repo.Repository.Website = form.Website
visibilityChanged := ctx.Repo.Repository.IsPrivate != form.Private
ctx.Repo.Repository.IsPrivate = form.Private ctx.Repo.Repository.IsPrivate = form.Private
if err := models.UpdateRepository(ctx.Repo.Repository); err != nil {
if err := models.UpdateRepository(ctx.Repo.Repository, visibilityChanged); err != nil {
ctx.Handle(404, "UpdateRepository", err) ctx.Handle(404, "UpdateRepository", err)
return return
} }

Loading…
Cancel
Save