(e Engine, repo *Repository, visibilityChanged bool)
| 1566 | } |
| 1567 | |
| 1568 | func updateRepository(e Engine, repo *Repository, visibilityChanged bool) (err error) { |
| 1569 | repo.LowerName = strings.ToLower(repo.Name) |
| 1570 | |
| 1571 | if len(repo.Description) > 512 { |
| 1572 | repo.Description = repo.Description[:512] |
| 1573 | } |
| 1574 | if len(repo.Website) > 255 { |
| 1575 | repo.Website = repo.Website[:255] |
| 1576 | } |
| 1577 | |
| 1578 | if _, err = e.ID(repo.ID).AllCols().Update(repo); err != nil { |
| 1579 | return errors.Newf("update: %v", err) |
| 1580 | } |
| 1581 | |
| 1582 | if visibilityChanged { |
| 1583 | if err = repo.getOwner(e); err != nil { |
| 1584 | return errors.Newf("getOwner: %v", err) |
| 1585 | } |
| 1586 | if repo.Owner.IsOrganization() { |
| 1587 | // Organization repository need to recalculate access table when visibility is changed |
| 1588 | if err = repo.recalculateTeamAccesses(e, 0); err != nil { |
| 1589 | return errors.Newf("recalculateTeamAccesses: %v", err) |
| 1590 | } |
| 1591 | } |
| 1592 | |
| 1593 | // Create/Remove git-daemon-export-ok for git-daemon |
| 1594 | daemonExportFile := path.Join(repo.RepoPath(), "git-daemon-export-ok") |
| 1595 | if repo.IsPrivate && com.IsExist(daemonExportFile) { |
| 1596 | if err = os.Remove(daemonExportFile); err != nil { |
| 1597 | log.Error("Failed to remove %s: %v", daemonExportFile, err) |
| 1598 | } |
| 1599 | } else if !repo.IsPrivate && !com.IsExist(daemonExportFile) { |
| 1600 | if f, err := os.Create(daemonExportFile); err != nil { |
| 1601 | log.Error("Failed to create %s: %v", daemonExportFile, err) |
| 1602 | } else { |
| 1603 | f.Close() |
| 1604 | } |
| 1605 | } |
| 1606 | |
| 1607 | forkRepos, err := getRepositoriesByForkID(e, repo.ID) |
| 1608 | if err != nil { |
| 1609 | return errors.Newf("getRepositoriesByForkID: %v", err) |
| 1610 | } |
| 1611 | for i := range forkRepos { |
| 1612 | forkRepos[i].IsPrivate = repo.IsPrivate |
| 1613 | forkRepos[i].IsUnlisted = repo.IsUnlisted |
| 1614 | if err = updateRepository(e, forkRepos[i], true); err != nil { |
| 1615 | return errors.Newf("updateRepository[%d]: %v", forkRepos[i].ID, err) |
| 1616 | } |
| 1617 | } |
| 1618 | |
| 1619 | // Change visibility of generated actions |
| 1620 | if _, err = e.Where("repo_id = ?", repo.ID).Cols("is_private").Update(&Action{IsPrivate: repo.IsPrivate || repo.IsUnlisted}); err != nil { |
| 1621 | return errors.Newf("change action visibility of repository: %v", err) |
| 1622 | } |
| 1623 | } |
| 1624 | |
| 1625 | return nil |
no test coverage detected